/* flowyn — software e sites sob medida.
   Bricolage Grotesque nos títulos, Archivo no texto, Martian Mono nos rótulos.
   Tudo escrito à mão: sem framework, sem reset de terceiro. */

@font-face{font-family:Bricolage;src:url("assets/fonts/Bricolage-var.woff2") format("woff2");font-weight:400 800;font-display:swap}
@font-face{font-family:Archivo;src:url("assets/fonts/Archivo-var.woff2") format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"Martian Mono";src:url("assets/fonts/MartianMono-var.woff2") format("woff2");font-weight:400 700;font-display:swap}

:root{
  --blue:#2563EB;
  --blue-2:#60A5FA;
  --blue-ink:#1B4FD1;
  --bg:#F4F4F1;
  --white:#FFFFFF;
  --dark:#0D0D0F;
  --ink:#121318;
  --muted:#575E6B;
  --muted-dark:#9BA3B4;
  --line:#E2E2DD;
  --line-strong:#CFCFC8;
  --line-dark:rgba(255,255,255,.13);

  --r:10px;
  --max:1120px;
  --py:clamp(66px,8.5vw,112px);
  --gut:clamp(20px,5vw,40px);

  --display:Bricolage,"Segoe UI",system-ui,sans-serif;
  --sans:Archivo,"Segoe UI",system-ui,sans-serif;
  --mono:"Martian Mono",ui-monospace,"Cascadia Mono",monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  /* granulado finíssimo para os fundos escuros não parecerem cor chapada */
  --grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.07'/%3E%3C/svg%3E");
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:104px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  margin:0;background:var(--white);color:var(--ink);
  font-family:var(--sans);font-size:17px;line-height:1.62;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}

::selection{background:var(--blue);color:#fff}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:3px}
html{scrollbar-color:var(--line-strong) var(--bg);scrollbar-width:thin}
::-webkit-scrollbar{width:11px;height:11px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:#B4B4AC}

a{color:inherit;text-decoration-color:rgba(37,99,235,.45);text-underline-offset:.22em;text-decoration-thickness:1px}
a:hover{text-decoration-color:var(--blue)}
svg{display:block}

.skip{position:absolute;left:-9999px;top:0;z-index:99;background:var(--dark);color:#fff;padding:14px 20px;font-weight:600}
.skip:focus{left:12px;top:12px}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}

/* ---------- tipografia ---------- */
.h2{
  font-family:var(--display);font-optical-sizing:auto;
  font-size:clamp(30px,4.6vw,50px);font-weight:700;line-height:1.04;letter-spacing:-.032em;
  margin:0 0 22px;text-wrap:balance;
}
.h2--on-dark{color:var(--white)}
.lead{font-size:18px;color:var(--muted);line-height:1.68;max-width:60ch;margin:0}
.lead--wide{max-width:68ch}
.lead--on-dark{color:var(--muted-dark)}

/* ---------- navbar ---------- */
.nav{position:fixed;top:14px;left:0;right:0;z-index:40;padding:0 var(--gut);pointer-events:none}
.nav__pill{
  pointer-events:auto;max-width:var(--max);margin:0 auto;
  display:flex;align-items:center;gap:clamp(12px,3vw,36px);
  height:62px;padding:0 12px 0 22px;
  background:var(--white);border-radius:999px;
  box-shadow:0 4px 22px rgba(0,0,0,.16);
}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto}
.logo img{display:block;height:30px;width:auto}
.logo--vertical img{height:clamp(96px,10vw,120px)}
.nav__links{display:flex;gap:clamp(14px,2.4vw,30px);list-style:none;margin:0;padding:0;font-size:15px;font-weight:500}
.nav__links a{text-decoration:none;color:#3A4150}
.nav__links a:hover{color:var(--blue)}

.menu{display:none;position:relative}
.menu summary{list-style:none;cursor:pointer;display:grid;place-items:center;width:42px;height:42px;border-radius:999px;background:var(--bg)}
.menu summary::-webkit-details-marker{display:none}
.menu summary span{display:block;width:18px;height:2px;background:var(--ink);box-shadow:0 -6px 0 var(--ink),0 6px 0 var(--ink)}
.menu[open] summary{background:#E4E4DE}
.menu ul{
  position:absolute;right:0;top:calc(100% + 14px);z-index:50;list-style:none;margin:0;padding:8px;min-width:220px;
  background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px -18px rgba(0,0,0,.4)}
.menu li a{display:block;padding:12px 14px;border-radius:8px;text-decoration:none;font-weight:500}
.menu li a:hover{background:var(--bg)}
.nav__links a{white-space:nowrap}
@media (max-width:960px){.nav__links{display:none}.menu{display:block}}
@media (max-width:520px){.btn--sm{display:none}.nav__pill{padding:0 10px 0 18px}}

/* ---------- botão ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;position:relative;overflow:hidden;isolation:isolate;
  background:var(--blue);color:#fff;font-family:var(--sans);font-weight:600;
  text-decoration:none;border:0;border-radius:999px;cursor:pointer;
  padding:15px 28px;font-size:16px;line-height:1;
  transition:background .25s var(--ease),transform .25s var(--ease);
}
.btn:hover{background:var(--blue-ink);transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn--sm{padding:11px 20px;font-size:15px;white-space:nowrap}
.btn--lg{padding:19px 34px;font-size:17px}
.arw{transition:transform .25s var(--ease)}
.btn:hover .arw{transform:translateX(4px)}
@media (prefers-reduced-motion:reduce){.btn,.arw{transition:none}}

/* ---------- hero ---------- */
.hero{
  background:var(--dark);color:var(--white);
  padding:clamp(140px,19vw,200px) var(--gut) clamp(84px,11vw,130px);
  text-align:center;position:relative;overflow:hidden;
}
.hero::before{content:"";position:absolute;inset:0;background:var(--grain),radial-gradient(60% 55% at 50% 100%,rgba(37,99,235,.22),transparent 70%),linear-gradient(180deg,#16161D 0%,var(--dark) 64%)}
/* grade de pontos que some nas bordas — textura sem imagem */
.hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.085) 1px,transparent 1.6px);background-size:26px 26px;
  -webkit-mask-image:radial-gradient(ellipse 72% 70% at 50% 48%,#000 20%,transparent 72%);
          mask-image:radial-gradient(ellipse 72% 70% at 50% 48%,#000 20%,transparent 72%);
}
.hero__inner{position:relative;z-index:1;max-width:920px;margin:0 auto}
.hero h1{
  margin:0;font-family:var(--display);font-optical-sizing:auto;
  font-size:clamp(40px,7vw,80px);font-weight:800;line-height:1;letter-spacing:-.045em;
  text-wrap:balance;
}
.hero__sub{margin:28px auto 0;max-width:58ch;font-size:clamp(17px,2vw,20px);color:#B6BDCB;line-height:1.62}
.hero__acts{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px 22px;margin-top:36px}
.ghost{color:#C6CCDA;font-weight:500;font-size:16px;text-decoration-color:rgba(255,255,255,.3)}
.ghost:hover{color:#fff;text-decoration-color:#fff}
.hero__strip{
  margin:30px 0 0;display:flex;flex-wrap:wrap;justify-content:center;gap:10px;
  font-family:var(--mono);font-size:11px;letter-spacing:.02em;text-transform:uppercase;color:#939BAF;
}
.hero__strip span{color:#565D6E}

/* ---------- faixas ---------- */
.band{padding:var(--py) 0}
.band--tint{background:var(--bg)}

/* ---------- cartões ---------- */
.cards{display:grid;gap:16px;margin-top:clamp(30px,4.5vw,44px)}
.cards--2{grid-template-columns:repeat(2,1fr)}
.cards--3{grid-template-columns:repeat(3,1fr)}
.cards--4{grid-template-columns:repeat(4,1fr)}
.card{
  position:relative;background:transparent;border:1px solid var(--line);border-radius:var(--r);
  padding:30px 26px;margin:0;
  transition:border-color .22s var(--ease),background .22s var(--ease);
}
.band--tint .card{border-color:var(--line-strong)}
.card:hover{border-color:var(--blue);background:rgba(37,99,235,.035)}
/* com mouse, o véu azul acompanha o cursor (posição vem do script no fim do index.html) */
@media (hover:hover) and (pointer:fine){
  .card:hover{background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(37,99,235,.11),rgba(37,99,235,0) 70%) rgba(37,99,235,.035)}
}
.card h3{
  margin:0 0 10px;font-family:var(--display);font-size:20px;font-weight:700;
  letter-spacing:-.026em;line-height:1.18;
}
.card p{margin:0;color:var(--muted);font-size:16px;line-height:1.62}
.card--sm{padding:24px 22px}
.card--sm h3{font-size:18px}
.card--sm p{font-size:15px}
.card--svc{position:relative;overflow:hidden;padding-top:34px}
.card--svc::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--blue),var(--blue-2));
  transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease);
}
.card--svc:hover::before,.card--svc:focus-within::before{transform:scaleX(1)}
@media (prefers-reduced-motion:reduce){.card,.card--svc::before{transition:none}}
@media (max-width:980px){.cards--4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:760px){.cards--2,.cards--3,.cards--4{grid-template-columns:1fr}}

/* ---------- etapas ---------- */
.steps{
  list-style:none;margin:clamp(34px,4.5vw,52px) 0 0;padding:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,44px);position:relative;
}
.steps::before{content:"";position:absolute;top:66px;left:12%;right:12%;height:0;border-top:1px dashed var(--line-strong)}
.step{position:relative;text-align:center;padding:0 8px}
.step__num{
  display:block;font-family:var(--mono);font-size:11px;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;color:var(--blue);margin-bottom:16px;
}
.step__dot{
  display:block;width:15px;height:15px;border-radius:50%;margin:0 auto 22px;
  background:var(--blue);box-shadow:0 0 0 7px var(--white),0 0 0 8px var(--line);
}
.band--tint .step__dot{box-shadow:0 0 0 7px var(--bg),0 0 0 8px var(--line-strong)}
.step h3{margin:0 0 10px;font-family:var(--display);font-size:21px;font-weight:700;letter-spacing:-.026em}
.step p{margin:0 auto;color:var(--muted);font-size:16px;max-width:34ch}
@media (max-width:760px){.steps{grid-template-columns:1fr;gap:34px}.steps::before{display:none}}

/* ---------- contato ---------- */
.contato{background:var(--grain),var(--dark);color:var(--white);padding:var(--py) 0;position:relative;overflow:hidden}
.contato__grid{position:relative;z-index:1}
.contato__grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,6vw,72px);align-items:start}
.form{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:0}
.field{margin:0;display:flex;flex-direction:column;gap:8px}
.field--wide{grid-column:1/-1}
.field label{font-family:var(--mono);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted-dark);font-weight:600}
.opt{text-transform:none;letter-spacing:0;font-weight:400}
.field input,.field select,.field textarea{
  font:inherit;font-family:var(--sans);font-size:16px;color:var(--white);
  background:#17171C;border:1px solid var(--line-dark);border-radius:var(--r);
  padding:14px 16px;width:100%;transition:border-color .2s ease,box-shadow .2s ease;
}
.field textarea{resize:vertical;min-height:130px;line-height:1.55}
.field input::placeholder,.field textarea::placeholder{color:#7A8190}
.field input:hover,.field select:hover,.field textarea:hover{border-color:rgba(255,255,255,.26)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.3);outline:none}
.field select{appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted-dark) 50%),linear-gradient(135deg,var(--muted-dark) 50%,transparent 50%);
  background-position:calc(100% - 21px) calc(50% + 2px),calc(100% - 15px) calc(50% + 2px);
  background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.field button{align-self:flex-start;width:auto}
@media (max-width:900px){.contato__grid{grid-template-columns:1fr}.form{grid-template-columns:1fr}}

/* ---------- rodapé ---------- */
.foot{background:var(--dark);color:var(--white);border-top:1px solid var(--line-dark);padding:clamp(46px,6vw,70px) 0 clamp(26px,3vw,40px)}
.foot__grid{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:clamp(22px,4vw,40px);align-items:start}
.foot__grid p{margin:0;color:#D2D7E0;font-size:16px}
.flabel{font-family:var(--mono);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--blue-2);margin:0 0 12px!important;font-weight:600}
.foot__fine{
  max-width:var(--max);margin:clamp(38px,5vw,60px) auto 0;padding:0 var(--gut);
  font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#7D8492;
}
@media (max-width:760px){.foot__grid{grid-template-columns:1fr 1fr;gap:26px}}
@media (max-width:460px){.foot__grid{grid-template-columns:1fr}}

/* ---------- movimento ----------
   Tudo aqui só roda para quem não pediu menos movimento ao sistema.
   Sem animação, a página fica exatamente no estado final: nada some, nada depende disto. */
@media (prefers-reduced-motion:no-preference){

  /* título: palavra por palavra, saindo do desfoque */
  .hero h1 .w{display:inline-block;animation:blur-in .9s var(--ease) both;animation-delay:calc(var(--i) * 80ms + 80ms)}
  .hero__sub,.hero__acts,.hero__strip{animation:rise .8s var(--ease) both}
  .hero__sub{animation-delay:.45s}
  .hero__acts{animation-delay:.55s}
  .hero__strip{animation-delay:.65s}
}

@keyframes blur-in{from{opacity:0;filter:blur(12px);transform:translateY(-.18em)}to{opacity:1;transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* revelação ao rolar, presa à própria rolagem — sem JavaScript.
   Navegador sem suporte mostra tudo parado, como antes. */
@supports (animation-timeline:view()){
  @media (prefers-reduced-motion:no-preference){
    .band .h2,.band .lead,.card,.step,.contato__side,.form{
      animation:rise linear both;animation-timeline:view();animation-range:entry 5% entry 75%;
    }
    .cards > :nth-child(2),.steps > :nth-child(2){animation-range:entry 15% entry 85%}
    .cards > :nth-child(3),.steps > :nth-child(3){animation-range:entry 25% entry 95%}
    .cards > :nth-child(4){animation-range:entry 35% cover 30%}

    /* linha cobalto que se desenha por cima da tracejada, ligando as três etapas */
    .steps{view-timeline-name:--steps}
    .steps::after{
      content:"";position:absolute;top:66px;left:12%;right:12%;height:1px;background:var(--blue);
      transform-origin:left;animation:draw linear both;animation-timeline:--steps;animation-range:entry 60% cover 50%;
    }
    .step__dot{animation:dot linear both;animation-timeline:--steps}
    .step:nth-child(1) .step__dot{animation-range:entry 55% entry 75%}
    .step:nth-child(2) .step__dot{animation-range:cover 30% cover 40%}
    .step:nth-child(3) .step__dot{animation-range:cover 45% cover 52%}
  }
}
@keyframes draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes dot{from{transform:scale(.4);background:var(--line-strong)}to{transform:none;background:var(--blue)}}
@media (max-width:760px){.steps::after{display:none}}

/* ---------- demonstração ---------- */
.card--demo{display:flex;flex-direction:column;gap:0;text-decoration:none;color:inherit}
.card--demo p{flex:1}
.demo__tag{
  align-self:flex-start;margin-bottom:14px;font-family:var(--mono);font-size:11px;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;color:var(--blue);
}
.demo__go{margin-top:20px;display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--blue)}
.card--demo:hover .arw,.card--demo:focus-visible .arw{transform:translateX(4px)}
.demo__nota{margin:18px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted)}

/* ---------- efeitos ----------
   Luz e brilho em vez de enfeite: aurora atrás do topo e do contato, título com reflexo,
   botão com brilho, menu de vidro e borda que acende nos cartões da demonstração.
   Tudo em CSS; com "reduzir movimento" os efeitos ficam parados no lugar. */

/* aurora: manchas de azul que se misturam devagar. Só gradientes, sem filtro de desfoque. */
.aurora{position:absolute;inset:-30% -15% 0;pointer-events:none;
  -webkit-mask-image:linear-gradient(180deg,#000 45%,transparent 92%);mask-image:linear-gradient(180deg,#000 45%,transparent 92%)}
.aurora::before,.aurora::after{content:"";position:absolute;inset:0}
.aurora::before{background:
  radial-gradient(30% 34% at 24% 42%,rgba(37,99,235,.5),transparent 70%),
  radial-gradient(26% 30% at 76% 36%,rgba(96,165,250,.32),transparent 70%),
  radial-gradient(22% 26% at 52% 22%,rgba(56,189,248,.16),transparent 70%)}
.aurora::after{background:
  radial-gradient(28% 30% at 64% 62%,rgba(79,70,229,.34),transparent 70%),
  radial-gradient(24% 28% at 34% 70%,rgba(37,99,235,.26),transparent 70%)}
.aurora--baixa{inset:10% -20% -40% -20%;opacity:1;
  -webkit-mask-image:linear-gradient(0deg,#000 30%,transparent 85%);mask-image:linear-gradient(0deg,#000 30%,transparent 85%)}

/* título: a última palavra em degradê, com um reflexo que passa de tempos em tempos */
.shine{
  background:linear-gradient(100deg,#93C5FD 0%,#60A5FA 28%,#FFFFFF 46%,#60A5FA 64%,#3B82F6 100%);
  background-size:260% 100%;background-position:100% 0;
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
}

/* botões: brilho que atravessa ao passar o mouse */
.btn::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.42) 50%,transparent 70%);
  transform:translateX(-120%);
}
.btn:hover::after{transform:translateX(120%);transition:transform .75s var(--ease)}
.hero .btn{box-shadow:0 12px 36px -12px rgba(37,99,235,.95),inset 0 1px 0 rgba(255,255,255,.18)}

/* menu: vidro fosco, deixa o fundo aparecer desfocado ao rolar */
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
  .nav__pill{
    background:rgba(255,255,255,.76);
    -webkit-backdrop-filter:blur(16px) saturate(170%);backdrop-filter:blur(16px) saturate(170%);
    box-shadow:0 4px 22px rgba(0,0,0,.16),inset 0 0 0 1px rgba(255,255,255,.65);
  }
}

/* cartões da demonstração: uma luz corre pela borda, chamando o clique */
@property --beam{syntax:"<angle>";inherits:false;initial-value:200deg}
.card--demo::after{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:2px;pointer-events:none;
  background:conic-gradient(from var(--beam),transparent 0 60%,rgba(96,165,250,.9) 76%,var(--blue) 84%,transparent 92%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
          mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
}

@media (prefers-reduced-motion:no-preference){
  .aurora::before{animation:drift-a 22s ease-in-out infinite alternate}
  .aurora::after{animation:drift-b 17s ease-in-out infinite alternate}
  .hero h1 .w.shine{animation:blur-in .9s var(--ease) calc(var(--i) * 80ms + 80ms) both,sweep 6s ease-in-out 1.6s infinite}
  .hero .btn::after{animation:sheen 5s ease-in-out 2.2s infinite}
  .card--demo::after{animation:beam 5s linear infinite}
  .card--demo + .card--demo::after{animation-delay:-2.5s}
}
@keyframes drift-a{from{transform:translate3d(-5%,2%,0) rotate(-4deg) scale(1)}to{transform:translate3d(5%,-3%,0) rotate(4deg) scale(1.12)}}
@keyframes drift-b{from{transform:translate3d(4%,-2%,0) scale(1.08)}to{transform:translate3d(-6%,3%,0) scale(.96)}}
@keyframes sweep{0%,45%{background-position:100% 0}80%,100%{background-position:0 0}}
@keyframes sheen{0%,72%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@keyframes beam{to{--beam:560deg}}
.card--demo{background:linear-gradient(180deg,#FFFFFF 0%,#F6F9FF 100%)}

/* ---------- o que dá para fazer ---------- */
.feats .card{background:var(--white)}
.feat__ic{
  display:grid;place-items:center;width:46px;height:46px;border-radius:12px;margin-bottom:18px;
  background:linear-gradient(140deg,var(--blue),#4F7FF0);box-shadow:0 10px 24px -12px rgba(37,99,235,.9);
}
.feat__ic svg{width:24px;height:24px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.feat h3{font-size:24px}

.tambem{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,4vw,48px);margin-top:clamp(30px,4vw,44px)}
.tambem__t{margin:0 0 12px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.tags li{
  padding:8px 14px;border-radius:999px;background:var(--white);border:1px solid var(--line-strong);
  font-size:15px;font-weight:500;color:var(--ink);transition:border-color .2s var(--ease),color .2s var(--ease);
}
.tags li:hover{border-color:var(--blue);color:var(--blue)}

.analise{
  margin-top:clamp(28px,4vw,40px);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px 32px;
  padding:clamp(22px,3vw,30px) clamp(22px,3vw,34px);border-radius:16px;color:#C6CCDA;position:relative;overflow:hidden;
  background:radial-gradient(60% 120% at 100% 0%,rgba(37,99,235,.45),transparent 70%),var(--grain),var(--dark);
}
.analise p{margin:0;max-width:62ch;font-size:17px;line-height:1.6}
.analise strong{color:#fff;font-family:var(--display);font-size:20px;letter-spacing:-.02em;display:block;margin-bottom:4px}
.analise .btn{flex-shrink:0;box-shadow:0 12px 32px -12px rgba(37,99,235,.95)}
@media (max-width:760px){.tambem{grid-template-columns:1fr}}

/* ---------- GradientASCII (React Bits, convertido para JS puro em assets/js/gradient-ascii.js) ----------
   Brilho em degradê desenhado com caracteres, atrás do topo. Quando o WebGL2 funciona, ele substitui
   a aurora em CSS; sem WebGL2 o script não desenha nada e a aurora continua lá. */
.gradient-ascii-container{position:relative;width:100%;height:100%;overflow:hidden}
.gradient-ascii-canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.hero__ascii{position:absolute;inset:0;pointer-events:none}
.hero__ascii.gradient-ascii-container{position:absolute}
.hero__ascii.gradient-ascii--on ~ .hero__inner{position:relative}
.hero:has(.gradient-ascii--on) .aurora{display:none}
/* proteção leve de leitura: só um véu curto atrás das linhas de texto e sombra nas letras,
   para o efeito aparecer quase inteiro, como na demonstração do React Bits */
.hero__ascii::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 34% 26% at 50% 50%,rgba(13,13,15,.55) 0%,rgba(13,13,15,.25) 55%,transparent 100%);
}
.hero:has(.gradient-ascii--on) h1,
.hero:has(.gradient-ascii--on) .hero__sub,
.hero:has(.gradient-ascii--on) .hero__strip{text-shadow:0 2px 18px rgba(4,10,40,.75),0 1px 3px rgba(4,10,40,.6)}
.hero:has(.gradient-ascii--on) .hero__sub{color:#E6EAF2}
.hero:has(.gradient-ascii--on) .hero__strip{color:#C9D3EA}
@media (max-width:760px){
  .hero__ascii::after{background:radial-gradient(ellipse 80% 34% at 50% 48%,rgba(13,13,15,.55) 0%,rgba(13,13,15,.25) 60%,transparent 100%)}
}
/* palavra em degradê: text-shadow fica por baixo do texto transparente e escurece; usa drop-shadow */
.hero:has(.gradient-ascii--on) h1 .shine{text-shadow:none;filter:drop-shadow(0 2px 14px rgba(4,10,40,.7))}

/* ---------- transições entre seções: folha arredondada ----------
   Sem degradê. A primeira seção clara sobe por cima do topo escuro como uma folha de cantos
   arredondados, com sombra leve; o contato faz o mesmo ao contrário, folha escura subindo sobre
   o claro. Entre branco e bege, a troca é em cor lisa. */
:root{--sheet:clamp(24px,3vw,36px)}

/* topo → claro */
.hero{padding-bottom:calc(clamp(84px,11vw,130px) + var(--sheet))}
.hero + .band{
  position:relative;z-index:2;margin-top:calc(var(--sheet) * -1);
  border-radius:var(--sheet) var(--sheet) 0 0;background:var(--white);
  box-shadow:0 -20px 50px -26px rgba(0,0,0,.6);
}

/* claro → contato */
.band:has(+ .contato){padding-bottom:calc(var(--py) + var(--sheet))}
.contato{
  z-index:2;margin-top:calc(var(--sheet) * -1);border-radius:var(--sheet) var(--sheet) 0 0;
  box-shadow:0 -18px 46px -30px rgba(13,13,15,.45),inset 0 1px 0 rgba(255,255,255,.08);
}

/* ---------- formulário: aviso de privacidade e campo-isca ---------- */
/* campo que só robô preenche; o Formspree descarta envios com ele preenchido */
.isca{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.form__aviso{margin:0;font-size:14px;line-height:1.55;color:var(--muted-dark)}
.form__aviso a,.foot__fine a{color:var(--blue-2);text-decoration-color:rgba(96,165,250,.45)}
.form__aviso a:hover,.foot__fine a:hover{text-decoration-color:var(--blue-2)}

/* ---------- página de política de privacidade ---------- */
.legal{padding:clamp(130px,16vw,170px) 0 var(--py);max-width:820px;margin:0 auto}
.legal h2{margin:38px 0 10px;font-family:var(--display);font-size:22px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.legal p,.legal li{color:var(--muted);font-size:17px;line-height:1.7}
.legal p{margin:0 0 12px}
.legal ul{margin:0 0 12px;padding-left:22px}
.legal .lead{margin-bottom:8px}
.legal__data{margin-top:40px!important;font-family:var(--mono);font-size:12px!important;letter-spacing:.03em;text-transform:uppercase}
.legal + .foot{padding:28px 0}
.legal + .foot .foot__fine{margin-top:0}

/* ---------- canais diretos no contato (WhatsApp e e-mail) ---------- */
.canais{list-style:none;margin:clamp(26px,3.5vw,36px) 0 0;padding:0;display:grid;gap:10px;max-width:360px}
.canal{
  display:flex;flex-direction:column;gap:2px;padding:14px 18px;border-radius:var(--r);text-decoration:none;
  border:1px solid var(--line-dark);background:rgba(255,255,255,.03);transition:border-color .2s var(--ease),background .2s var(--ease);
}
.canal:hover{border-color:var(--blue-2);background:rgba(37,99,235,.12)}
.canal__t{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-dark)}
.canal__v{font-size:17px;font-weight:600;color:var(--white)}
.canal--wa{border-color:rgba(96,165,250,.45)}
.foot__grid p + p{margin-top:6px!important}

/* ---------- formulário: confirmação e erro dentro do site ---------- */
.form-ok{
  border:1px solid rgba(96,165,250,.45);border-radius:var(--r);padding:clamp(24px,3vw,34px);
  background:linear-gradient(160deg,rgba(37,99,235,.18),rgba(37,99,235,.04));
}
.form-ok:focus{outline:none}
.form-ok p{margin:0;color:#D2D7E0;font-size:17px;line-height:1.6;max-width:46ch}
.form-ok .form-ok__t{margin-bottom:8px;font-family:var(--display);font-size:clamp(26px,3vw,32px);font-weight:800;letter-spacing:-.03em;color:var(--white)}
.form-ok__de-novo{
  margin-top:22px;font:600 15px/1 var(--sans);color:var(--white);cursor:pointer;
  background:transparent;border:1px solid var(--line-dark);border-radius:999px;padding:12px 20px;
}
.form-ok__de-novo:hover{border-color:var(--blue-2)}
.form__erro{margin:0;padding:12px 14px;border-radius:var(--r);font-size:15px;line-height:1.5;color:#FECACA;background:rgba(220,38,38,.12);border:1px solid rgba(248,113,113,.35)}
.btn:disabled{opacity:.7;cursor:progress;transform:none}
.form[hidden]{display:none}

/* ---------- dúvidas frequentes ---------- */
.faq{max-width:880px}
.faq__lista{margin-top:clamp(28px,4vw,40px);border-top:1px solid var(--line)}
.faq__item{border-bottom:1px solid var(--line)}
.faq__item summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:22px 4px;font-family:var(--display);font-size:clamp(18px,2vw,21px);font-weight:700;letter-spacing:-.02em;color:var(--ink);
}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary::after{
  content:"";flex:none;width:30px;height:30px;border-radius:50%;border:1px solid var(--line-strong);
  background:
    linear-gradient(var(--blue),var(--blue)) center/12px 2px no-repeat,
    linear-gradient(var(--blue),var(--blue)) center/2px 12px no-repeat;
  transition:transform .3s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease);
}
.faq__item summary:hover{color:var(--blue)}
.faq__item summary:hover::after{border-color:var(--blue)}
.faq__item[open] summary::after{transform:rotate(45deg);background-color:rgba(37,99,235,.08);border-color:var(--blue)}
.faq__item p{margin:-6px 0 0;padding:0 50px 24px 4px;color:var(--muted);font-size:16px;line-height:1.7;max-width:68ch}
.faq__item p a,.faq__mais a{color:var(--blue);text-decoration-color:rgba(37,99,235,.4)}
.faq__mais{margin:28px 0 0;color:var(--muted);font-size:16px}
@media (prefers-reduced-motion:reduce){.faq__item summary::after{transition:none}}

/* ---------- botão flutuante do WhatsApp ---------- */
.wa{
  position:fixed;right:clamp(14px,2.5vw,26px);bottom:calc(clamp(14px,2.5vw,26px) + env(safe-area-inset-bottom));z-index:45;
  display:flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:50%;text-decoration:none;
  background:#25D366;
  box-shadow:0 12px 30px -10px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.35) inset;
  transition:opacity .3s var(--ease),transform .3s var(--ease),box-shadow .2s var(--ease);
}
.wa:hover{box-shadow:0 16px 36px -10px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.5) inset;transform:translateY(-2px)}
.wa__ic{display:block;width:30px;height:30px}
.wa--espera{opacity:0;transform:translateY(16px) scale(.9);pointer-events:none}
@media (prefers-reduced-motion:reduce){.wa{transition:opacity .2s linear}.wa--espera{transform:none}}
