/* Nodal Media · Pitch ARTY — movimento do deck desktop.
   A marcação (data-fx nos elementos, data-k nos gráficos) vem do anim.js.
   Curvas: --nd-e desacelera longo (entradas), --nd-io acelera e freia
   (máscaras e traços). Nada de quique nem escala exagerada. */
:root{--nd-e:cubic-bezier(.16,1,.3,1);--nd-io:cubic-bezier(.65,0,.35,1)}
.nd-w,.nd-w>span{display:inline-block}
.nd-flow{opacity:0;pointer-events:none}

@media screen and (prefers-reduced-motion:no-preference){

/* ── Troca de slide: dissolução ─────────────────────────────────────────
   O palco do deck-stage é branco por baixo dos slides, então os dois nunca
   ficam transparentes ao mesmo tempo: o que sai continua opaco embaixo e
   escurece; o novo entra por cima, vindo do lado da navegação. */
deck-stage>section[data-deck-active]{z-index:2}
deck-stage>section[data-deck-active][data-deck-dir=fwd]{animation:nd-in .9s var(--nd-e) backwards}
deck-stage>section[data-deck-active][data-deck-dir=back]{animation:nd-in-back .9s var(--nd-e) backwards}
deck-stage>section[data-deck-leave]:not([data-deck-active]){visibility:visible;opacity:1;z-index:1;pointer-events:none;animation:nd-out .9s var(--nd-e) both}

/* ── Elementos: cascata na ordem de leitura (--i) ───────────────────── */
deck-stage>section[data-deck-active] [data-fx]{animation-duration:1s;animation-timing-function:var(--nd-e);animation-fill-mode:backwards;animation-delay:calc(.2s + var(--i,0)*.075s)}
deck-stage>section[data-deck-active] [data-fx=rise]{animation-name:nd-rise}
deck-stage>section[data-deck-active] [data-fx=card]{animation-name:nd-card;animation-duration:1.1s}
deck-stage>section[data-deck-active] [data-fx=chip]{animation-name:nd-chip;animation-duration:.8s;animation-delay:calc(.5s + var(--i,0)*.075s + var(--j,0)*.07s)}
deck-stage>section[data-deck-active] [data-fx=wipe]{animation-name:nd-wipe;animation-duration:1.1s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-fx=wipe-x]{animation-name:nd-wipe;animation-duration:1.9s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-fx=foot]{animation-name:nd-fade;animation-duration:1.2s;animation-delay:.55s}
deck-stage>section[data-deck-active] [data-fx=img]{animation-name:nd-img;animation-duration:1.4s}
deck-stage>section[data-deck-active] [data-fx=mark]{animation-name:nd-mark;animation-duration:1.6s}
deck-stage>section[data-deck-active] [data-fx=mark][data-spin]{animation:nd-mark 1.6s var(--nd-e) backwards,nd-spin 120s linear infinite;animation-delay:calc(.2s + var(--i,0)*.075s),2.6s}
deck-stage>section[data-deck-active] [data-fx=photo]{animation-name:nd-photo;animation-duration:1.3s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-fx=photo]>img{animation:nd-zoom 2s var(--nd-e) backwards;animation-delay:inherit}
deck-stage>section[data-deck-active] [data-fx=open-x]{animation-name:nd-open-x;animation-duration:1.1s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-fx=open-y]{animation-name:nd-open-y;animation-duration:1.1s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-fx=bar]{transform-origin:50% 100%;animation:nd-bar 1.7s var(--nd-e) backwards;animation-delay:calc(.15s + var(--j,0)*.07s)}
deck-stage>section[data-deck-active] [data-fx=blob]{will-change:transform;animation:nd-blob 2.4s var(--nd-e) backwards,nd-breathe 9s ease-in-out 2.4s infinite alternate}

/* Títulos: cada palavra sobe de dentro da sua máscara. */
deck-stage>section[data-deck-active] .nd-w{clip-path:inset(-.35em -.15em -.3em -.15em)}
deck-stage>section[data-deck-active] .nd-w>span{transform-origin:0 100%;animation:nd-word 1.1s var(--nd-e) backwards;animation-delay:calc(.2s + var(--i,0)*.075s + var(--w,0)*.045s)}

/* ── Gráficos: traços se desenham, nós surgem, formas crescem (--k) ─── */
deck-stage>section[data-deck-active] [data-k]{animation-fill-mode:backwards;animation-timing-function:var(--nd-e);animation-delay:calc(.4s + min(var(--k,0),60)*.03s)}
deck-stage>section[data-deck-active] [data-k=draw]{animation-name:nd-draw;animation-duration:1.6s;animation-timing-function:var(--nd-io)}
deck-stage>section[data-deck-active] [data-k=pop]{animation-name:nd-pop;animation-duration:.7s;transform-box:fill-box;transform-origin:center}
deck-stage>section[data-deck-active] [data-k=grow]{animation-name:nd-grow;animation-duration:1.2s;transform-box:fill-box;transform-origin:center}
deck-stage>section[data-deck-active] [data-k=fade]{animation-name:nd-fade;animation-duration:1.6s}
deck-stage>section[data-deck-active] [data-k=march]{animation:nd-fade .9s var(--nd-e) backwards,nd-march 1.3s linear infinite;animation-delay:calc(.4s + min(var(--k,0),60)*.03s),0s}
deck-stage>section[data-deck-active] .nd-tw[data-k=pop]{animation:nd-pop .7s var(--nd-e) backwards,nd-twinkle 2.6s ease-in-out infinite alternate;animation-delay:calc(.4s + min(var(--k,0),60)*.03s),calc(2.2s + var(--tw,0)*1s)}

/* Pulsos de sinal correndo pelas linhas depois da entrada. */
deck-stage>section[data-deck-active] .nd-flow{stroke-width:3;stroke-linecap:round;stroke-dasharray:.05 .95;animation:nd-flow var(--fd,4s) linear 2.2s infinite}

@keyframes nd-in{from{opacity:0;translate:56px 0;filter:blur(8px)}to{opacity:1;translate:0 0;filter:none}}
@keyframes nd-in-back{from{opacity:0;translate:-56px 0;filter:blur(8px)}to{opacity:1;translate:0 0;filter:none}}
@keyframes nd-out{to{filter:brightness(.35)}}
@keyframes nd-rise{from{opacity:0;translate:0 28px;filter:blur(6px)}}
@keyframes nd-card{from{opacity:0;translate:0 36px;scale:.97}}
@keyframes nd-chip{from{opacity:0;translate:0 14px}}
@keyframes nd-wipe{from{opacity:0;clip-path:inset(-20% 100% -20% 0)}to{opacity:1;clip-path:inset(-20% -2% -20% 0)}}
@keyframes nd-fade{from{opacity:0}}
@keyframes nd-img{from{opacity:0;scale:1.04;filter:blur(10px)}}
@keyframes nd-mark{from{opacity:0;scale:.4;rotate:-120deg}}
@keyframes nd-spin{to{rotate:360deg}}
@keyframes nd-photo{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes nd-zoom{from{scale:1.18}}
@keyframes nd-open-x{from{opacity:0;clip-path:inset(0 50% 0 50%)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes nd-open-y{from{opacity:0;clip-path:inset(50% 0 50% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes nd-bar{from{opacity:0;scale:1 0}}
@keyframes nd-blob{from{opacity:0;scale:.7}}
@keyframes nd-breathe{to{scale:1.06;translate:40px -24px}}
@keyframes nd-word{from{translate:0 120%;rotate:4deg}}
@keyframes nd-draw{from{stroke-dasharray:1;stroke-dashoffset:1}to{stroke-dasharray:1;stroke-dashoffset:0}}
@keyframes nd-pop{from{opacity:0;scale:0}}
@keyframes nd-grow{from{opacity:0;scale:.6}}
@keyframes nd-march{to{stroke-dashoffset:var(--dp,-16px)}}
@keyframes nd-twinkle{to{opacity:.25}}
@keyframes nd-flow{0%{stroke-dashoffset:1;opacity:0}8%{opacity:1}85%{opacity:1}100%{stroke-dashoffset:0;opacity:0}}
}
