/* ==========================================================================
   NewCorp.ai — life.css
   "Dar vida" sem recorrer a cor berrante: movimento sutil, texturas e
   formas abstratas (referência Anthropic), profundidade leve.
   Tudo respeita prefers-reduced-motion.
   ========================================================================== */

/* ─── Superfícies alternativas (quebram o branco/preto chapado) ─── */
.surface-sand{background:var(--sand);}
.surface-sand-deep{background:var(--sand-deep);}
.surface-ink{background:var(--ink-soft);color:var(--cream);}

/* ──────────────────────────────────────────────────────────────────────────
   GRAFISMO: REDE DE NÓS (.netgraph)
   SVG de pontos conectados — evoca "sistema / IA". Aplicar só em hero e
   seções escuras. Conteúdo fica acima via .shape-host.
   ────────────────────────────────────────────────────────────────────────── */
.shape-host{position:relative;overflow:hidden;isolation:isolate;}
.shape-host > .wrap{position:relative;z-index:1;}

.netgraph{position:absolute;z-index:0;pointer-events:none;inset:0;overflow:hidden;}
.netgraph svg{position:absolute;height:auto;}
/* linhas e nós em tom neutro; sobre escuro fica claro */
.netgraph .ng-line{stroke:rgba(10,10,10,.13);stroke-width:1;fill:none;}
.netgraph .ng-node{fill:rgba(10,10,10,.34);}
.netgraph .ng-node-hollow{fill:none;stroke:rgba(10,10,10,.30);stroke-width:1.2;}
.netgraph .ng-pulse{fill:rgba(10,10,10,.55);animation:ng-pulse 3.2s var(--ease) infinite;}
.surface-ink .netgraph .ng-line,.dark .netgraph .ng-line{stroke:rgba(255,255,255,.14);}
.surface-ink .netgraph .ng-node,.dark .netgraph .ng-node{fill:rgba(255,255,255,.40);}
.surface-ink .netgraph .ng-node-hollow,.dark .netgraph .ng-node-hollow{stroke:rgba(255,255,255,.32);}
.surface-ink .netgraph .ng-pulse,.dark .netgraph .ng-pulse{fill:rgba(255,255,255,.7);}
@keyframes ng-pulse{0%,100%{opacity:.3;}50%{opacity:1;}}
@media(prefers-reduced-motion:reduce){.netgraph .ng-pulse{animation:none;}}

/* ─── Animações de entrada escalonadas ─── */
.reveal-up{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease);}
.reveal-up.in{opacity:1;transform:none;}
.reveal-fade{opacity:0;transition:opacity .9s var(--ease);}
.reveal-fade.in{opacity:1;}
/* stagger: filhos entram em cascata quando o pai recebe .in */
.stagger > *{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease);}
.stagger.in > *{opacity:1;transform:none;}
.stagger.in > *:nth-child(1){transition-delay:.00s;}
.stagger.in > *:nth-child(2){transition-delay:.07s;}
.stagger.in > *:nth-child(3){transition-delay:.14s;}
.stagger.in > *:nth-child(4){transition-delay:.21s;}
.stagger.in > *:nth-child(5){transition-delay:.28s;}
.stagger.in > *:nth-child(6){transition-delay:.35s;}

/* desenho de traço em SVG (dataviz "se construindo") */
.draw path,.draw line,.draw circle,.draw rect{
  stroke-dasharray:var(--len,600);stroke-dashoffset:var(--len,600);
  transition:stroke-dashoffset 1.4s var(--ease);
}
.draw.in path,.draw.in line,.draw.in circle,.draw.in rect{stroke-dashoffset:0;}

/* ─── Hovers mais vivos ─── */
.lift{transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease);}
.lift:hover{transform:translateY(-4px);box-shadow:0 22px 50px rgba(20,16,12,.08);border-color:var(--gray);}

/* underline animado em links de texto */
.ul-anim{position:relative;}
.ul-anim::after{content:'';position:absolute;left:0;bottom:-2px;height:1.5px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease);}
.ul-anim:hover::after{transform:scaleX(1);}

@media(prefers-reduced-motion:reduce){
  .reveal-up,.reveal-fade,.stagger > *{opacity:1 !important;transform:none !important;transition:none !important;}
  .blob{animation:none;}
  .draw path,.draw line,.draw circle,.draw rect{stroke-dashoffset:0 !important;transition:none;}
}
