/* =========================================================================
   Ezer Digital — site institucional (studio)
   Conceito: a travessia. As 3 barras do logo são as tábuas da ponte.
   Tokens em :root; temas por seção com .theme-dark / .theme-light.
   ========================================================================= */

:root{
  /* marca (design system Ezer) */
  --brand:#2A6FDB; --bright:#4F8FFF; --deep:#1850D5;
  --grad:linear-gradient(90deg,#1850D5 0%,#2A6FDB 55%,#4F8FFF 100%);
  --night:#06080F; --night-2:#0A0E1E; --surface:#0E1428; --surface-2:#141A33;
  --paper:#F9F7F7; --paper-2:#EFEDED; --white:#fff;

  --font-display:"Space Grotesk", system-ui, sans-serif;
  --font-body:"Manrope", system-ui, sans-serif;
  --font-mono:"JetBrains Mono", ui-monospace, monospace;

  --gutter:clamp(18px,5vw,72px); --max:1320px; --radius:22px;
  --skew:-22deg; /* inclinação das barras do logo */

  /* motion-kit */
  --mk-accent:var(--brand); --mk-accent-ink:#fff;
}

/* temas por seção: cada um redefine as cores locais e as cores que o kit usa */
.theme-dark{
  --bg:var(--night); --fg:#fff; --muted:#A8B1CC; --faint:#6B7290; --line:rgba(255,255,255,.09); --card:var(--surface);
  --hl:var(--bright); --mk-ink:#fff; --mk-bg:var(--night);
  background:var(--bg); color:var(--fg);
}
.theme-light{
  --bg:var(--paper); --fg:var(--night); --muted:#4A5070; --faint:#8189A5; --line:rgba(10,14,30,.1); --card:#fff;
  --hl:var(--brand); --mk-ink:var(--night); --mk-bg:#fff;
  background:var(--bg); color:var(--fg);
}

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%;background:var(--night)}
body{margin:0;background:var(--night);color:#fff;font:400 17px/1.6 var(--font-body);overflow-x:clip;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
a{color:inherit}
button{font:inherit}
::selection{background:var(--brand);color:#fff}
:focus-visible{outline:2px solid var(--bright);outline-offset:3px}
.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
section{position:relative}
.section{padding-block:clamp(96px,13vw,176px)}

/* ---------- tipografia ---------- */
h1,h2,h3{margin:0;font-family:var(--font-display);font-weight:500;letter-spacing:-.045em;line-height:1}
.h1{font-size:clamp(2.9rem,1.1rem + 5.6vw,6.7rem);line-height:.96;letter-spacing:-.055em}
.h2{font-size:clamp(2.2rem,1.2rem + 3.4vw,4.5rem);line-height:1.02;letter-spacing:-.045em;max-width:16ch}
.hl{color:var(--hl)} /* regra fixa: todo título termina com a expressão-chave em azul */
.lead{font-size:clamp(1.05rem,.95rem + .45vw,1.28rem);line-height:1.6;color:var(--muted);max-width:54ch;margin:0}
/* regra fixa: toda seção abre com um comentário de código */
.label{margin:0 0 22px;font:500 13px/1.2 var(--font-mono);letter-spacing:.02em;color:var(--muted);--wipe:var(--brand)}
.label b{color:var(--hl);font-weight:500}
.head{display:grid;gap:4px;margin-bottom:clamp(44px,6vw,80px)}
.head .lead{margin-top:22px}
.head--split{grid-template-columns:1.2fr 1fr;align-items:end;gap:40px}
.head--split .lead{margin:0 0 10px}
@media (max-width:900px){.head--split{grid-template-columns:1fr;gap:20px}}

/* H2 com blur por palavra (reveal principal da página) */
.js .split-blur .w{overflow:visible}
.js .split-blur .w > span{transition:transform 1.1s var(--ease-out),opacity .9s var(--ease-out),filter .9s var(--ease-out);transition-delay:calc(var(--d,0s) + var(--wi) * .07s)}
.js .split-blur:not(.is-in) .w > span{transform:translateY(.35em);opacity:0;filter:blur(12px)}

/* chip */
.chip{display:inline-flex;align-items:center;gap:.65em;padding:.55em 1em;border-radius:999px;font-size:14px;font-weight:600;text-decoration:none;color:var(--fg);
  background:color-mix(in oklab,var(--fg) 7%,transparent);box-shadow:inset 0 0 0 1px var(--line);backdrop-filter:blur(10px);transition:background .4s}
.chip:hover{background:color-mix(in oklab,var(--fg) 12%,transparent)}

/* ---------- botões (família: roll-chars + spin com o símbolo da marca) ---------- */
.btn{font-family:var(--font-body);font-size:16px;letter-spacing:-.01em}
.btn--brand{--btn-bg:var(--brand);--btn-fg:#fff;box-shadow:0 14px 34px -14px rgba(42,111,219,.75),inset 0 1px 0 rgba(255,255,255,.22)}
.btn--brand:is(:hover,:focus-visible){background-color:#3A7DE8}
.btn__ch{padding:.12em 0}
.btn__ch > span + span{transform:translateY(140%)}
.btn--roll-chars:is(:hover,:focus-visible) .btn__ch > span:first-child{transform:translateY(-140%)}
.btn--brand .btn__icon{background:#fff;color:var(--brand);width:2.05em;height:2.05em;margin-right:-1em}
.btn--sm{min-height:42px;padding:0 1.15em;font-size:14px}
.btn[disabled]{opacity:.35;pointer-events:none}
.theme-dark .btn--ghost{--btn-inv-bg:#fff;--btn-inv-fg:var(--night)}
.header__cta{--btn-bg:#fff;--btn-fg:var(--night)}
.header__cta:is(:hover,:focus-visible){background-color:#E7EEFF}

/* ---------- header ---------- */
.header{--mk-ink:#fff;--mk-bg:var(--night);color:#fff}
.header__bar{max-width:var(--max)}
.header__bar::before{background:rgba(10,14,30,.88);box-shadow:0 18px 40px -24px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.08)}
.header.is-scrolled .header__bar{max-width:min(1120px,calc(100% - 20px))}
.brand{display:block;width:156px;flex:none;text-decoration:none}
.brand__logo{display:block;width:100%;height:auto}
.nav__ext{opacity:1!important;color:#4F8FFF!important;font-weight:700!important}
.nav__ext:hover{color:#8DB6FF!important}
.nav{font-size:15px;font-weight:500}
.nav a{padding:.6em .95em}
/* indicador do menu: uma barrinha inclinada do logo */
.nav-indicator{top:auto;bottom:2px;height:4px;translate:var(--x,0) 0;border-radius:2px;background:var(--grad);transform:scaleX(.36) skewX(var(--skew))}
.menu-btn{display:none;width:44px;height:44px;border:0;border-radius:50%;background:rgba(255,255,255,.08);cursor:pointer;place-items:center;gap:4px;padding:0;align-content:center;justify-items:center}
.menu-btn i{display:block;height:3px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew));transition:transform .5s var(--ease-out),width .5s var(--ease-out),opacity .3s}
.menu-btn i:nth-child(1){width:18px;margin-left:4px}.menu-btn i:nth-child(2){width:12px;margin-left:-2px}.menu-btn i:nth-child(3){width:16px;margin-left:2px}
.menu-open .menu-btn i:nth-child(1){transform:translateY(7px) rotate(45deg);width:18px;margin:0}
.menu-open .menu-btn i:nth-child(2){opacity:0}
.menu-open .menu-btn i:nth-child(3){transform:translateY(-7px) rotate(-45deg);width:18px;margin:0}
@media (max-width:980px){
  .nav,.header__cta{display:none}
  .menu-btn{display:grid}
}
.menu{position:fixed;inset:0;z-index:45;background:var(--night);color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:110px var(--gutter) 32px;
  clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease-in-out)}
.menu.is-open{clip-path:inset(0 0 0 0)}
.menu nav{display:grid;gap:6px}
.menu a{display:flex;align-items:baseline;gap:14px;font:500 clamp(2.2rem,9vw,3.6rem)/1.1 var(--font-display);letter-spacing:-.04em;text-decoration:none;
  opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease-out),transform .8s var(--ease-out);transition-delay:calc(.15s + var(--i,0) * .05s)}
.menu .menu__cta{color:var(--bright)}
.menu.is-open a{opacity:1;transform:none}
.menu__foot{margin:0;font:13px/1.4 var(--font-mono);color:#6B7290}

/* ---------- preloader ---------- */
.preloader{--preloader-bg:var(--night);--preloader-fg:#fff}
.pre{display:grid;justify-items:center;gap:26px}
.pre__sym{width:clamp(220px,30vw,340px);height:auto;clip-path:inset(0 100% 0 0)}
.preloader.is-playing .pre__sym{animation:plank-wipe 1s var(--ease-out) .15s forwards}
@keyframes plank-wipe{to{clip-path:inset(0 0 0 0)}}
.pre__word{margin:0;font:500 13px/1 var(--font-mono);color:#6B7290;letter-spacing:.02em;opacity:0}
.pre__word span{color:var(--bright);font-family:var(--font-body)}
.preloader.is-playing .pre__word{animation:fade-in .7s var(--ease-out) .7s forwards}
.preloader.is-fading .pre__word{opacity:0!important;transition:opacity .2s}
@keyframes fade-in{to{opacity:1}}

/* ---------- hero ---------- */
.hero{min-height:100svh;display:grid;align-items:center;padding-block:130px 90px;overflow:hidden;isolation:isolate}
.hero__veil{position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(90deg,rgba(6,8,15,.82) 0%,rgba(6,8,15,.55) 42%,rgba(6,8,15,0) 75%),linear-gradient(0deg,var(--night) 0%,rgba(6,8,15,0) 30%)}
.hero__veil::after{content:"";position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 30% 45%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 70% 60% at 30% 45%,#000 30%,transparent 75%)}
.hero__inner{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(32px,4vw,64px);align-items:center;width:100%}
.hero__copy{display:grid;gap:30px;justify-items:start}
.hero__copy .h1{max-width:13ch}
.h1 .hl{white-space:nowrap}
.hero__ctas{display:flex;flex-wrap:wrap;gap:12px}
.proof{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px 28px;font-size:14.5px;color:var(--muted)}
.proof li{display:flex;align-items:center;gap:10px}
.proof li::before{content:"";width:18px;height:6px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew))}
.proof strong{color:#fff;font:600 17px/1 var(--font-display);letter-spacing:-.02em}

/* a ponte (3 barras) dentro do H1 */

/* terminal (o ofício como prova) */
.hero__stage{position:relative;display:grid;gap:18px;justify-items:end}
.term{width:100%;max-width:470px;border-radius:18px;background:rgba(10,14,30,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 40px 80px -40px rgba(0,0,0,.9),0 0 0 1px rgba(79,143,255,.08);overflow:hidden}
.term__bar{display:flex;align-items:center;gap:7px;padding:13px 16px;border-bottom:1px solid rgba(255,255,255,.07)}
.term__bar i{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.16)}
.term__bar span{margin-left:10px;font:12px/1 var(--font-mono);color:#6B7290}
.term__body{margin:0;padding:18px 18px 22px;min-height:236px;font:13.5px/1.75 var(--font-mono);color:#C9D2EC;white-space:pre-wrap}
.term__body .p{color:var(--bright)}
.term__body .ok{color:#3DDC97}
.term__body .dim{color:#6B7290}
.term__body .live{color:#fff}
.term__body .cur{display:inline-block;width:.6em;height:1.1em;vertical-align:-.2em;background:var(--bright);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.human{display:flex;align-items:center;gap:14px;padding:10px 18px 10px 10px;border-radius:999px;text-decoration:none;color:#fff;
  background:rgba(255,255,255,.07);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  transition:background .5s var(--ease-out),transform .6s var(--ease-out)}
.human:hover{background:rgba(255,255,255,.12);transform:translateY(-3px)}
.human__img{position:relative;flex:none;width:52px;height:52px}
.human__img{display:grid;place-items:center;border-radius:50%;background:var(--night);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.human__img img{width:52%;height:auto;object-fit:contain}
/* bolinha "online" na borda do círculo (45°), com o anel como borda para não sumir no pulso */
.human__img .dot-live{position:absolute;right:2px;bottom:2px;width:12px;height:12px;box-sizing:border-box;border:2px solid var(--night)}
.human__txt{display:grid;gap:2px;line-height:1.25}
.human__txt b{font-size:15px}
.human__txt small{font-size:12.5px;color:var(--muted)}
.ico{display:inline-block;width:.85em;height:.85em;vertical-align:-.06em;flex:none}
.nav__ext .ico{width:.8em;height:.8em;margin-left:2px}
.human__go{margin-left:6px;width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--night);transition:transform .6s var(--ease-out)}
.human__go .ico{width:15px;height:15px}
.cursor-bubble .ico{margin-left:4px}
.tv__hint .ico{margin-left:4px}
.human:hover .human__go{transform:rotate(45deg)}
.human--light{color:var(--night);background:#fff;box-shadow:inset 0 0 0 1px var(--line),0 20px 40px -30px rgba(10,14,30,.4)}
.human--light:hover{background:#fff}
.human--light .human__go{background:var(--night);color:#fff}
.human--light .human__img .dot-live{border-color:#fff}
@media (max-width:980px){
  .hero{padding-top:120px}
  .hero__inner{grid-template-columns:1fr}
  .hero__stage{justify-items:start}
  .hero__veil{background:linear-gradient(180deg,rgba(6,8,15,.7),rgba(6,8,15,.55) 50%,var(--night) 100%)}
}
@media (max-width:560px){.term__body{font-size:12px;min-height:212px}.human__txt small{font-size:12px}}

/* ---------- barra de stack ---------- */
.stackbar{padding:26px 0 30px;border-block:1px solid var(--line)}
.stackbar .marquee{--gap:2.4rem;font:500 15px/1 var(--font-mono);color:#7F89A8}
.stackbar span{display:inline-flex;align-items:center;gap:2.4rem;white-space:nowrap}
.stackbar span::after{content:"";width:12px;height:5px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew));opacity:.8}

/* ---------- dor ---------- */
.pain{border-radius:40px 40px 0 0}
@media (max-width:560px){.pc{grid-template-columns:auto minmax(0,1fr)}.pc__tag{grid-column:2;justify-self:start;margin-top:4px}}

/* ---------- ASSINATURA: a travessia ---------- */
.tv{--p:0;background:var(--night);color:#fff;--hl:var(--bright);--muted:#A8B1CC;--line:rgba(255,255,255,.09);--mk-ink:#fff;--mk-bg:var(--night)}
.tv .hscroll__sticky{isolation:isolate;padding-bottom:16vh}
/* a luz chega do outro lado conforme a ponte avança */
.tv__light{position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(circle at 104% 46%,var(--paper) 0,var(--paper) calc(var(--p) * 74vw - 12vw),rgba(249,247,247,0) calc(var(--p) * 74vw + 26vw)),
    radial-gradient(circle at 104% 46%,rgba(42,111,219,.35) 0,rgba(42,111,219,0) calc(var(--p) * 80vw + 40vw))}
.tv .hscroll__track{width:max-content;align-items:stretch;gap:20px}
.tv__intro{flex:0 0 clamp(340px,38vw,560px);display:flex;flex-direction:column;justify-content:center;gap:22px;padding-right:clamp(20px,4vw,60px)}
.tv__intro .label{margin:0}
.tv__hint{margin:8px 0 0;font:500 13px/1 var(--font-mono);color:var(--bright)}
.tv__card{--k:clamp(0, calc((var(--p) - var(--t, 0)) * 9), 1);
  position:relative;flex:0 0 clamp(290px,25vw,360px);min-height:min(56vh,440px);padding:30px 28px;border-radius:var(--radius);display:flex;flex-direction:column;gap:14px;
  background:var(--surface);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 40px 80px -50px rgba(0,0,0,.8);
  opacity:calc(.38 + var(--k) * .62);transform:translateY(calc((1 - var(--k)) * 22px))}
.tv__card h3{font-size:clamp(1.9rem,1.4rem + 1.2vw,2.6rem);letter-spacing:-.045em}
.tv__card p{margin:0;color:var(--muted);font-size:15.5px}
.tv__card .tv__n{font:500 13px/1 var(--font-mono);color:var(--bright)}
.tv__card code{margin-top:auto;display:inline-flex;align-items:center;gap:8px;align-self:flex-start;padding:8px 12px;border-radius:9px;background:rgba(255,255,255,.06);font:12.5px/1 var(--font-mono);color:#C9D2EC}
.tv__plank{position:absolute;top:28px;right:26px;width:46px;height:12px;border-radius:3px;background:var(--grad);transform:skewX(var(--skew)) scaleX(var(--k));transform-origin:left}
.tv__end{flex:0 0 clamp(360px,40vw,600px);display:flex;flex-direction:column;justify-content:center;gap:22px;padding-left:clamp(30px,5vw,80px);color:var(--night);--hl:var(--brand);--muted:#4A5070;
  --mk-ink:var(--night);--mk-bg:#fff}
.tv__end .label{margin:0}
.tv__end-t{margin:0;font:500 clamp(2rem,1.2rem + 2.6vw,3.8rem)/1.02 var(--font-display);letter-spacing:-.045em;max-width:12ch}
.tv__end .btn{align-self:flex-start}
/* a ponte: tábuas assentadas pelo scroll (--p) */
.tv__bridge{position:absolute;left:var(--gutter);right:var(--gutter);bottom:7vh;height:56px;display:flex;align-items:flex-end}
.tv__bank{position:absolute;bottom:-24px;font:500 12px/1 var(--font-mono);color:#6B7290;white-space:nowrap}
.tv__bank--a{left:0}
.tv__bank--b{right:0;color:var(--muted);opacity:calc(var(--p) * 1.4 - .3)}
.tv__traveler{position:absolute;bottom:26px;left:calc(var(--p) * (100% - 150px));display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 9px;border-radius:999px;
  background:#fff;color:var(--night);font:600 12px/1 var(--font-body);box-shadow:0 10px 30px -10px rgba(42,111,219,.8);white-space:nowrap}
.tv__traveler img{width:16px;height:auto}
@media (max-width:1023px){
  .tv{background:var(--night)}
  .tv .hscroll__sticky{position:relative;height:auto;overflow:visible;display:block;padding:clamp(96px,13vw,150px) 0;scroll-snap-type:none}
  .tv__light,.tv__bridge{display:none}
  .tv .hscroll__track{width:auto;flex-direction:column;gap:16px;padding-inline:var(--gutter);max-width:640px;margin-inline:auto}
  .tv__intro{flex:none;padding:0 0 18px}
  .tv__hint{display:none}
  .tv__card{--k:1;flex:none;min-height:0;margin-left:34px}
  .tv__card::before{content:"";position:absolute;left:-26px;top:34px;width:16px;height:9px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew))}
  .tv__card::after{content:"";position:absolute;left:-19px;top:52px;bottom:-24px;width:2px;background:repeating-linear-gradient(180deg,rgba(79,143,255,.5) 0 6px,transparent 6px 12px)}
  .tv__card:last-of-type::after{display:none}
  .tv__plank{display:none}
  .tv__end{flex:none;padding:36px 26px;margin-top:24px;border-radius:var(--radius);background:var(--paper)}
}

/* ---------- projetos ---------- */
.case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2vw,28px);align-items:start}
.case{display:grid;gap:18px;text-decoration:none;color:inherit;--mask-r:22px}
.case:nth-child(3n+2){margin-top:clamp(0px,7vw,96px)}
.case:nth-child(3n+3){margin-top:clamp(0px,3.5vw,48px)}
.case__media{border-radius:var(--radius) var(--radius) 0 0;overflow:hidden;aspect-ratio:5/4;isolation:isolate;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:linear-gradient(135deg,var(--c1),color-mix(in oklab,var(--c1),var(--c2) 55%));position:relative}
.case__media img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform 1.2s var(--ease-out)}
/* com print: sem o fundo colorido atrás (ele vazava nos cantos como traços escuros) e a imagem sem vão de linha */
.case__media:has(img){background:none}
.case__media img{display:block;transform:scale(1.004)}
.mock{position:absolute;inset:14% 10% -6% 10%;border-radius:14px 14px 0 0;background:rgba(255,255,255,.96);box-shadow:0 30px 60px -20px rgba(0,0,0,.45);padding:34px 18px 18px;
  transition:transform 1.2s var(--ease-out)}
.mock > i{position:absolute;top:12px;left:14px;width:42px;height:9px;background:radial-gradient(circle 4px at 4px 50%,#E3E5EC 98%,transparent) 0 0/14px 9px repeat-x}
.mock > b{display:block;font:600 clamp(1.1rem,.8rem + 1vw,1.6rem)/1 var(--font-display);letter-spacing:-.04em;color:var(--c1);margin-bottom:14px}
.mock__ui{display:block;height:58%;border-radius:10px;background:color-mix(in oklab,var(--c2) 30%,#fff);position:relative;overflow:hidden}
.mock__ui::before,.mock__ui::after{content:"";position:absolute;border-radius:6px;background:color-mix(in oklab,var(--c1) 70%,#fff)}
.mock__ui--dash::before{left:8%;bottom:12%;width:84%;height:56%;background:linear-gradient(90deg,var(--c1) 0 10%,transparent 10% 15%,var(--c1) 15% 25%,transparent 25% 30%,var(--c1) 30% 40%,transparent 40% 45%,var(--c1) 45% 55%,transparent 55% 60%,var(--c1) 60% 70%,transparent 70% 75%,var(--c1) 75% 85%,transparent 85%);
  -webkit-mask:linear-gradient(0deg,#000 40%,transparent 41%) 0 0/16.66% 100%,linear-gradient(0deg,#000 75%,transparent 76%) 33% 0/16.66% 100%;opacity:.85}
.mock__ui--dash::after{left:8%;top:12%;width:30%;height:14%}
.mock__ui--chart::before{inset:20% 8% 14% 8%;background:none;border-bottom:2px solid color-mix(in oklab,var(--c1) 40%,#fff);border-radius:0;
  clip-path:polygon(0 85%,18% 70%,34% 76%,52% 45%,70% 52%,86% 22%,100% 10%,100% 100%,0 100%);background:linear-gradient(180deg,color-mix(in oklab,var(--c2) 85%,var(--c1)),transparent)}
.mock__ui--chart::after{left:8%;top:10%;width:26%;height:12%}
.mock__ui--ext::before{right:8%;top:10%;width:46%;height:76%;background:#fff;box-shadow:0 10px 24px -10px rgba(0,0,0,.35)}
.mock__ui--ext::after{right:13%;top:20%;width:36%;height:12%;background:var(--c1)}
.mock__ui--feed::before{left:8%;top:12%;width:38%;height:76%}
.mock__ui--feed::after{right:8%;top:12%;width:38%;height:76%;opacity:.5}
.mock__ui--site::before{left:8%;top:14%;width:52%;height:14%}
.mock__ui--site::after{left:8%;top:36%;width:34%;height:9%;opacity:.6}
.mock__ui--shop::before{left:8%;top:12%;width:26%;height:76%;opacity:.8}
.mock__ui--shop::after{left:38%;top:12%;width:26%;height:76%;opacity:.5}
.case:hover .mock{transform:translateY(-10px)}
.case:hover .case__media img{transform:scale(1.05)}
.case__meta{display:grid;gap:8px}
.case__meta h3{font-size:clamp(1.35rem,1.1rem + .6vw,1.7rem);letter-spacing:-.035em;display:flex;align-items:center;gap:10px}
.case__meta h3::after{content:"";width:.62em;height:.62em;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E") center/contain no-repeat;opacity:0;transform:translate(-6px,4px);transition:opacity .4s,transform .6s var(--ease-out)}
.case:hover .case__meta h3::after{opacity:1;transform:none}
.case__meta p{margin:0;color:var(--muted);font-size:15.5px;max-width:40ch}
.case__meta ul{list-style:none;margin:0;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.case__meta li{font-size:12.5px;font-weight:600;padding:5px 10px;border-radius:999px;background:var(--paper-2);color:#30364F}
.case__meta code{font:12px/1 var(--font-mono);color:var(--faint)}
.case__meta code.dev{color:#B5651D}
@media (max-width:1000px){.case-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case:nth-child(n){margin-top:0}.case:nth-child(even){margin-top:56px}}
@media (max-width:620px){.case-grid{grid-template-columns:1fr}.case:nth-child(even){margin-top:0}}
/* cursor-bolha contextual */
.cursor-bubble{position:fixed;left:0;top:0;z-index:60;pointer-events:none;padding:12px 16px;border-radius:999px;background:var(--brand);color:#fff;font:600 13px/1 var(--font-body);white-space:nowrap;
  translate:-50% -50%;transform:scale(0);opacity:0;transition:transform .45s var(--ease-out),opacity .3s;box-shadow:0 12px 30px -10px rgba(42,111,219,.8)}
.cursor-bubble.is-on{transform:scale(1);opacity:1}
.has-bubble .case{cursor:none}

/* números em escada */
.numbers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:clamp(80px,10vw,150px)}
.num{padding:28px 26px 30px;border-radius:var(--radius);background:#fff;box-shadow:inset 0 0 0 1px var(--line);display:grid;gap:12px;align-content:space-between;min-height:220px}
.num strong{font:500 clamp(3rem,2rem + 3vw,5rem)/.9 var(--font-display);letter-spacing:-.06em;color:var(--night)}
.num span{color:var(--muted);font-size:15px;max-width:22ch}
.num--dark{background:var(--night);box-shadow:none}
.num--dark strong{color:var(--bright)}
.num--dark span{color:#A8B1CC}
@media (min-width:901px){.num:nth-child(2){translate:0 28px}.num:nth-child(3){translate:0 56px}.num:nth-child(4){translate:0 84px}}
@media (max-width:900px){.numbers{grid-template-columns:1fr 1fr}.num{min-height:180px}}

/* ---------- sobre ---------- */
.about{border-radius:40px 40px 0 0;margin-top:-40px;z-index:1}
.cases{padding-bottom:calc(clamp(96px,13vw,176px) + 84px)}


/* ---------- FAQ ---------- */
.faq{}
.faq__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:clamp(40px,6vw,96px);align-items:start}
.faq__side{position:sticky;top:120px;display:grid;justify-items:start}
.faq__side .human{margin-top:34px}
.faq__list details{border-top:1px solid var(--line);padding:24px 0}
.faq__list details:last-child{border-bottom:1px solid var(--line)}
.faq__list summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;font:500 clamp(1.1rem,1rem + .4vw,1.35rem)/1.3 var(--font-display);letter-spacing:-.02em}
.faq__list summary::-webkit-details-marker{display:none}
.faq__list summary::after{content:"";flex:none;width:22px;height:8px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew));transition:transform .6s var(--ease-out)}
.faq__list details[open] summary::after{transform:skewX(var(--skew)) rotate(90deg) scaleX(.6)}
.faq__list details p{margin:14px 0 0;color:var(--muted);max-width:60ch}
.faq__list summary:hover{color:var(--brand)}
@media (max-width:900px){.faq__grid{grid-template-columns:1fr}.faq__side{position:static}}

/* ---------- briefing ---------- */
.brief{overflow:hidden}
.brief__glow{position:absolute;inset:auto -10% -40% -10%;height:90%;pointer-events:none;background:radial-gradient(ellipse 50% 60% at 70% 70%,rgba(42,111,219,.35),transparent 70%)}
.brief__grid{position:relative;display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,6vw,96px);align-items:start}
.brief__intro .lead{margin-top:24px}
.brief__promise{list-style:none;margin:30px 0 0;padding:0;display:grid;gap:12px;color:#C9D2EC;font-size:15px}
.brief__promise li{display:flex;align-items:center;gap:12px}
.brief__promise li::before{content:"";width:16px;height:6px;border-radius:2px;background:var(--grad);transform:skewX(var(--skew));flex:none}
.bf{position:relative;padding:clamp(24px,3vw,40px);border-radius:28px;background:rgba(14,20,40,.9);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1),0 60px 120px -60px rgba(0,0,0,.9);display:grid;gap:22px}
.bf__progress{display:flex;gap:6px}
.bf__progress i{flex:1;height:10px;border-radius:3px;background:rgba(255,255,255,.08);transform:skewX(var(--skew));position:relative;overflow:hidden}
.bf__progress i::after{content:"";position:absolute;inset:0;background:var(--grad);transform:translateY(-120%);transition:transform .7s var(--ease-back)}
.bf__progress i.on::after{transform:none}
.bf__count{margin:-8px 0 0;font:500 12.5px/1 var(--font-mono);color:#6B7290}
.bf__count b{color:var(--bright);font-weight:500}
.bf fieldset{border:0;margin:0;padding:0;min-width:0}
.bf__step{display:none}
.bf__step.is-current{display:grid;gap:14px;animation:step-in .6s var(--ease-out)}
@keyframes step-in{from{opacity:0;transform:translateX(18px)}}
.bf legend{padding:0;margin-bottom:6px;font:500 clamp(1.4rem,1.1rem + .9vw,1.9rem)/1.15 var(--font-display);letter-spacing:-.03em}
.bf__hint,.bf__sub{margin:0;font-size:14px;color:var(--muted)}
.bf__sub{margin-top:6px;font-weight:600;color:#C9D2EC}
.bf__chips{display:flex;flex-wrap:wrap;gap:8px}
.bf__chips label,.bf__seg label{position:relative;cursor:pointer}
.bf input[type=checkbox],.bf input[type=radio]{position:absolute;opacity:0;width:1px;height:1px}
.bf__chips span,.bf__seg span{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:999px;font-size:14.5px;font-weight:600;color:#C9D2EC;
  background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);transition:background .35s,color .35s,box-shadow .35s,transform .4s var(--ease-out)}
.bf__chips label:hover span,.bf__seg label:hover span{box-shadow:inset 0 0 0 1px rgba(255,255,255,.3)}
.bf input:checked + span{background:var(--brand);color:#fff;box-shadow:inset 0 0 0 1px var(--brand)}
.bf input:checked + span::before{content:"";width:10px;height:5px;border-radius:1px;background:#fff;transform:skewX(var(--skew))}
.bf input:focus-visible + span{outline:2px solid var(--bright);outline-offset:3px}
.bf__seg{display:flex;flex-wrap:wrap;gap:8px}
.bf__field{display:grid;gap:7px;font-size:13.5px;font-weight:600;color:#C9D2EC}
.bf__field input,.bf__field textarea{width:100%;font:500 16px/1.4 var(--font-body);color:#fff;background:rgba(255,255,255,.05);border:0;border-radius:14px;padding:13px 15px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);transition:box-shadow .3s;resize:vertical}
.bf__field input::placeholder,.bf__field textarea::placeholder{color:#59617F}
.bf__field input:focus,.bf__field textarea:focus{outline:0;box-shadow:inset 0 0 0 2px var(--bright)}
.bf__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bf__err{display:none;margin:0;font-size:13.5px;color:#FF8A80}
.bf__step.has-error .bf__err{display:block}
.bf__nav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.bf__done{padding:8px 0}
.bf__done-t{margin:0 0 8px;font:500 1.8rem/1.1 var(--font-display);letter-spacing:-.03em;color:#fff}
.bf__done p{color:var(--muted)}
.bf.is-done .bf__nav,.bf.is-done .bf__count{display:none}
@media (max-width:980px){.brief__grid{grid-template-columns:1fr}}
@media (max-width:560px){.bf__row{grid-template-columns:1fr}.bf__nav .btn{flex:1}}

/* ---------- footer ---------- */
.footer{padding:clamp(70px,9vw,110px) 0 28px;overflow:hidden;border-top:1px solid var(--line)}
.footer__bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:26px;padding-top:20px;border-top:1px solid var(--line);font-size:13.5px;color:#6B7290}

/* ---------- WhatsApp flutuante ---------- */
.wa-float{position:fixed;right:20px;bottom:20px;z-index:40;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#25D366;color:#fff;
  box-shadow:0 14px 30px -10px rgba(37,211,102,.7);transform:translateY(120px) scale(.6);opacity:0;transition:transform .7s var(--ease-back),opacity .4s}
.wa-float svg{width:30px;height:30px}
.wa-float.is-on{transform:none;opacity:1}
.wa-float:hover{transform:scale(1.07)}

/* ---------- movimento reduzido ---------- */
@media (prefers-reduced-motion:reduce){
  .tv__card{--k:1!important}
  .term__body .cur{animation:none}
  .menu,.menu a{transition:none}
}

/* ---------- v1.1: novos blocos ---------- */

/* faixa e-commerce → Ezer Commerce */
.commerce{padding-block:clamp(80px,10vw,130px);overflow:hidden;background:radial-gradient(ellipse 55% 90% at 92% 50%,rgba(42,111,219,.38),transparent 70%),var(--night)}


/* =========================================================================
   A MARGEM (ref. Shinta): o fundo escurece enquanto as dores surgem e clareia na ponte
   ========================================================================= */

/* ---- Shinta: a luz se apaga nas dores e volta na ponte ---- */
.shinta{--p:0;height:360vh;
  --x-out:clamp(0, calc((var(--p) - .8) * 7), 1);
  --d:calc(clamp(0, calc(var(--p) * 1.5), 1) * (1 - var(--x-out)));
  background:color-mix(in oklab, var(--paper), var(--night) calc(var(--d) * 94%));color:var(--night);--hl:var(--brand);border-radius:40px 40px 0 0}
.shinta__sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;display:grid;place-items:center}
.shinta__center{position:relative;z-index:2;display:grid;justify-items:center;text-align:center;padding-inline:var(--gutter)}
.shinta__center .label{margin-bottom:18px}
.shinta__t{grid-area:2/1;max-width:14ch;transition:opacity .6s var(--ease-out),filter .6s var(--ease-out),transform .8s var(--ease-out),color .6s}
.shinta__t--b{opacity:0;filter:blur(10px);transform:translateY(16px);pointer-events:none}
.shinta.is-end .shinta__t--a{opacity:0;filter:blur(10px);transform:translateY(-16px)}
.shinta.is-end .shinta__t--b{opacity:1;filter:none;transform:none}
.shinta__go{margin-top:28px;opacity:0;transform:translateY(10px);transition:opacity .5s,transform .7s var(--ease-out);pointer-events:none}
.shinta.is-end .shinta__go{opacity:1;transform:none;pointer-events:auto}
.shinta.is-dark{color:#fff;--hl:var(--bright);--muted:#A8B1CC}
.shinta.is-dark .label{color:#A8B1CC}
.shinta__cards{list-style:none;margin:0;padding:0;position:absolute;inset:0;z-index:1}
.sc{--k:clamp(0, calc((var(--p) - var(--t)) * 9), 1);position:absolute;left:calc(50% + var(--x));top:calc(50% + var(--y));width:min(270px,26vw);
  display:grid;gap:4px;padding:18px 20px;border-radius:18px;background:#fff;color:var(--night);box-shadow:0 30px 60px -30px rgba(0,0,0,.6),inset 0 0 0 1px rgba(10,14,30,.06);
  opacity:calc(var(--k) * (1 - var(--x-out)));
  transform:translate(-50%,-50%) translateY(calc((1 - var(--k)) * 40px)) rotate(var(--r)) scale(calc(.92 + var(--k) * .08 - var(--x-out) * .25))}
.sc b{font:500 17px/1.25 var(--font-display);letter-spacing:-.02em}
.sc span{font-size:14px;color:#4A5070}
.sc code{justify-self:start;margin-top:8px;font:12px/1.3 var(--font-mono);color:#D93A3F;padding:5px 8px;border-radius:7px;background:#FDECEC}
@media (max-width:900px){
  .shinta{height:auto;--p:.5!important;--d:1;--x-out:0;padding-block:90px}
  .shinta__sticky{position:relative;height:auto;display:flex;flex-direction:column;gap:30px;overflow:visible}
  .shinta__center{order:-1;color:#fff;--hl:var(--bright)}
  .shinta__t--b,.shinta__go{display:none}
  .shinta__cards{position:static;display:grid;gap:12px;padding-inline:var(--gutter)}
  .sc{position:static;width:auto;transform:rotate(var(--r));opacity:1}
}

/* ---- Shinta v2: cartões simples, 1 ícone de traço + 1 movimento (só com o cartão visível: .is-on) ---- */
.sc{width:max-content;min-width:min(345px,26vw);max-width:min(400px,30vw);display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:14px;row-gap:3px;align-items:center;padding:16px 22px 16px 18px;
  transform:translate(-50%,-50%) translate(calc((1 - var(--k)) * var(--fx)), calc((1 - var(--k)) * var(--fy))) rotate(calc(var(--r) * (.4 + var(--k) * .6))) scale(calc(.9 + var(--k) * .1 - var(--x-out) * .25))}
.sc > b{grid-column:2;font-size:16px;white-space:nowrap}
.sc > span:not(.sc__ic){grid-column:2;font-size:14px;line-height:1.4;width:0;min-width:100%}
.sc__ic{grid-row:1 / span 2;align-self:center;display:grid;place-items:center;color:var(--ac)}
.sc__ic svg{width:30px;height:30px;overflow:visible}
.sc:not(.is-on) .sc__ic *{animation-play-state:paused!important}
.i-err{opacity:0;color:#D93A3F;animation:i-blink 1.6s steps(1) infinite}
.i-dot{animation:i-bounce 1.2s var(--ease-in-out) infinite}
.i-dot:nth-of-type(2){animation-delay:.15s}.i-dot:nth-of-type(3){animation-delay:.3s}
.i-ring{stroke-dasharray:60 100;animation:i-almost 3s var(--ease-out) infinite}
.i-pkt{animation:i-bounce-back 2.2s var(--ease-in-out) infinite}
.i-spin{transform-origin:16px 18.5px;animation:i-spin 1.1s linear infinite}
.i-fade{animation:i-fade 2.6s ease-in-out infinite alternate}
.i-z{opacity:0;animation:i-z 2.6s ease-in-out infinite}
@keyframes i-blink{50%{opacity:1}}
@keyframes i-bounce{0%,60%,100%{transform:none}30%{transform:translateY(-2.5px)}}
@keyframes i-almost{0%{stroke-dasharray:0 100}50%{stroke-dasharray:60 100}60%{stroke-dasharray:66 100}70%,100%{stroke-dasharray:60 100}}
@keyframes i-bounce-back{0%,100%{transform:none}45%{transform:translateX(2.5px)}55%{transform:translateX(2.5px);color:#D93A3F}}
@keyframes i-spin{to{transform:rotate(360deg)}}
@keyframes i-fade{to{opacity:.25}}
@keyframes i-z{0%,30%{opacity:0;transform:none}60%{opacity:1}100%{opacity:0;transform:translate(2px,-3px)}}
@media (max-width:900px){.sc{width:auto;max-width:none;transform:rotate(var(--r))}.sc > b{white-space:normal}}
@media (prefers-reduced-motion:reduce){.sc__ic *{animation:none!important}.i-err,.i-z{opacity:1}}

/* =========================================================================
   SERVIÇOS (ref. Saro): lista à esquerda + imagem do projeto saindo pela lateral direita
   ========================================================================= */
/* ícones (traço simples + 1 movimento) */
.s-draw{stroke-dasharray:1;animation:s-draw 3.2s var(--ease-in-out) infinite}
.s-knob{animation:s-knob 3.2s var(--ease-in-out) infinite}
.s-slide{animation:s-slide 3s var(--ease-out) infinite}
.s-caret{animation:s-caret 1s steps(1) infinite}
.s-float{animation:s-float 2.6s var(--ease-in-out) infinite alternate}
.s-pk{offset-rotate:0deg;animation:s-split 2.4s var(--ease-in-out) infinite}
.s-pk--a{offset-path:path("M9.2 16H13c3 0 3.6-6 7.6-6h1.2")}
.s-pk--b{offset-path:path("M9.2 16H13c3 0 3.6 6 7.6 6h1.2")}
.s-needle{transform-origin:16px 16px;animation:s-needle 3.6s var(--ease-in-out) infinite}
@keyframes s-draw{0%{stroke-dashoffset:1}45%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:-1}}
@keyframes s-knob{0%,100%{transform:none}50%{transform:translateY(3px)}}
@keyframes s-slide{0%{transform:translateX(-4px);opacity:0}25%,85%{transform:none;opacity:1}100%{opacity:0}}
@keyframes s-caret{50%{opacity:0}}
@keyframes s-float{to{transform:translateY(-2.5px)}}
@keyframes s-split{0%{offset-distance:0%;opacity:0}10%{opacity:1}80%{offset-distance:100%;opacity:1}100%{offset-distance:100%;opacity:0}}
@keyframes s-needle{0%{transform:rotate(-70deg)}30%{transform:rotate(40deg)}50%{transform:rotate(-15deg)}65%,100%{transform:rotate(0deg)}}
@media (prefers-reduced-motion:reduce){[class^="s-"]{animation:none!important}.s-pk{opacity:0}}

/* layout: a lista segue o conteúdo; a imagem vai até a borda direita da tela */
.sl{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(28px,4vw,64px);align-items:stretch}
.sl__list{list-style:none;margin:0;padding:0;display:grid;gap:4px;align-content:center}
.sl__item{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:center;padding:16px 18px;border:0;border-radius:16px;background:none;text-align:left;cursor:pointer;color:var(--night);transition:background .4s var(--ease-out),box-shadow .4s}
.sl__item:hover{background:rgba(10,14,30,.04)}
.sl__ic{display:grid;place-items:center;color:var(--faint);transition:color .4s}
.sl__ic svg{width:28px;height:28px}
.sl__t{display:grid}
.sl__t b{font:500 clamp(1.15rem,1rem + .5vw,1.4rem)/1.25 var(--font-display);letter-spacing:-.025em;color:var(--muted);transition:color .4s}
.sl__t > span{display:block;color:var(--muted);font-size:15px;overflow:hidden;max-height:0;transition:max-height .5s var(--ease-out),margin .5s}
/* barra de progresso da troca automática: colada na borda de baixo do cartão ativo */
.sl__item{position:relative;overflow:hidden}
.sl__item::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--brand);transform:scaleX(0);transform-origin:left;pointer-events:none}
.sl.is-auto .sl__item.is-on::after{animation:sl-prog 5.5s linear forwards}
@keyframes sl-prog{to{transform:scaleX(1)}}
.sl__item.is-on{background:#fff;box-shadow:inset 0 0 0 1px var(--line),0 20px 40px -30px rgba(10,14,30,.35)}
.sl__item.is-on .sl__ic{color:var(--brand)}
.sl__item.is-on .sl__t b{color:var(--night)}
.sl__item.is-on .sl__t > span{max-height:90px;margin-top:4px}
/* moldura escura que sangra à direita e encosta no bloco de baixo (a travessia, também escura) */
.services{padding-bottom:0}
.services > .wrap{max-width:none}
.sl{align-items:stretch}
.sl__list{padding-bottom:clamp(60px,8vw,110px)}
.sl__media{position:relative;min-height:clamp(480px,44vw,640px);margin-right:calc(-1 * var(--gutter));border-radius:28px 0 0 0;overflow:hidden;
  background:radial-gradient(ellipse 60% 55% at 20% 0%,rgba(42,111,219,.28),transparent 70%),var(--night)}
/* a imagem ocupa a moldura inteira e entra da direita para a esquerda */
.sm{position:absolute;inset:0;margin:0;overflow:hidden;clip-path:inset(0 0 0 100%);transition:clip-path .9s var(--ease-in-out)}
.sm.is-on{clip-path:inset(0 0 0 0);z-index:1}
.sm.is-leaving{clip-path:inset(0 0 0 0);z-index:0}
.sm img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 1.4s var(--ease-out)}
.sm.is-on img{transform:none}
@media (max-width:900px){
  .sl{grid-template-columns:1fr}
  .services{padding-bottom:clamp(96px,13vw,176px)}
  .sl__list{padding-bottom:0}
  .sl__media{order:-1;min-height:0;aspect-ratio:4/3;margin-right:0;border-radius:22px}
}


/* =========================================================================
   TRAVESSIA: o progresso é uma ponte suspensa desenhada em traço; as 4 etapas são marcos no tabuleiro
   ========================================================================= */
.tv__bridge.ts{height:120px;bottom:5vh}
.ts__svg{position:absolute;left:0;right:0;bottom:44px;width:100%;height:80px;overflow:visible}
.ts__svg path{fill:none;stroke:var(--bright);stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}
.ts__svg .d{stroke-width:3;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--p))}
.ts__svg .c{stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--p) * 1.04);opacity:.9}
.ts__svg .tw{stroke-width:3;stroke-dasharray:1;stroke-dashoffset:calc(1 - clamp(0, calc((var(--p) - .2) * 8), 1))}
.ts__svg .tw--b{stroke-dashoffset:calc(1 - clamp(0, calc((var(--p) - .7) * 8), 1))}
.ts__svg .h{stroke-width:1;opacity:calc(clamp(0, calc((var(--p) - var(--t)) * 25), 1) * .55)}
.ts__marks{position:absolute;left:0;right:0;bottom:6px;height:30px}
.ts__m{--on:clamp(0, calc((var(--p) - var(--t)) * 30), 1);position:absolute;left:var(--x);translate:-50% 0;display:flex;align-items:center;gap:7px;white-space:nowrap;
  font:600 12.5px/1 var(--font-body);color:color-mix(in oklab,#6B7290,var(--bright) calc(var(--on) * 100%))}
.ts__m i{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 2px currentColor;background:color-mix(in oklab,transparent,var(--bright) calc(var(--on) * 100%))}
.ts__m small{font:500 11px/1 var(--font-mono);opacity:.7}
.tv__bridge.ts .tv__bank{bottom:-18px}
.tv__bridge.ts .tv__traveler{bottom:56px}

/* =========================================================================
   PROJETOS: grade viva (cards entram inclinados e endireitam) + popup do projeto
   ========================================================================= */
#projetos{overflow-x:clip}
.pjph{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:10px;text-align:center;color:#fff;overflow:hidden;
  background:radial-gradient(ellipse 60% 70% at 25% 20%,color-mix(in oklab,var(--tone) 65%,#4F8FFF),transparent 70%),linear-gradient(135deg,var(--tone),#06080F 90%)}
.pjph::before{content:"";position:absolute;inset:0;opacity:.35;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:44px 44px}
.pjph b{position:relative;font:500 clamp(1.1rem,.8rem + 1.1vw,2rem)/1 var(--font-display);letter-spacing:-.04em}
.pjph span{position:relative;max-width:90%;font:500 10px/1.4 var(--font-mono);color:rgba(255,255,255,.55)}
.pj-dev{display:inline-block;vertical-align:middle;padding:4px 9px;border-radius:999px;background:#FFF1DE;color:#A15A00;font:600 11.5px/1 var(--font-body)}
.pj-type{margin:0;font:500 13px/1.2 var(--font-mono);color:var(--faint)}

.case-grid--alive .case{--e:1;transform:translateY(calc((1 - var(--e)) * 120px)) rotate(calc((1 - var(--e)) * var(--tilt,-7deg)));transform-origin:30% 100%;opacity:calc(.2 + var(--e) * .8);transition:opacity .45s}
.case-grid--alive .case:nth-child(3n+2){--tilt:6deg}
.case-grid--alive .case:nth-child(3n){--tilt:-4deg}
.case-grid--alive .case__media{transform:perspective(1000px) rotateX(calc(var(--ty,0) * -7deg)) rotateY(calc(var(--tx,0) * 9deg));transition:transform .7s var(--ease-out)}
.case-grid--alive .case:hover .mock{transform:translateY(-16px) scale(1.03)}
.case-grid--alive:hover .case:not(:hover){opacity:.45}

/* popup do projeto: compacto; o anterior e o próximo aparecem borrados atrás, nas laterais */
.pjm{--peek:clamp(72px,11vw,180px);position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--night);overflow:hidden}
.pjm[open]{display:grid;place-items:center}
.pjm::backdrop{background:rgba(6,8,15,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pjm[open]::backdrop{animation:pjm-fade .4s ease}
.pjm.is-closing::backdrop{animation:pjm-fade .28s ease reverse forwards}
.pjm[open] .pjm__stage{animation:pjm-in .6s var(--ease-out)}
.pjm.is-closing .pjm__stage{animation:pjm-out .28s ease forwards}
@keyframes pjm-in{from{opacity:0;transform:translateY(28px) scale(.98)}}
@keyframes pjm-out{to{opacity:0;transform:translateY(16px) scale(.99)}}
@keyframes pjm-fade{from{opacity:0}}
.pjm__stage{position:relative;width:var(--w)}
.pjm__box{display:grid;border-radius:24px;background:var(--paper);overflow:hidden}
.pjm__main{position:relative;z-index:2;box-shadow:0 50px 100px -40px rgba(6,8,15,.7);touch-action:pan-y}
.pjm__content{display:contents}
.pjm__ghost{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.6;filter:blur(5px) brightness(.9);transition:transform .7s var(--ease-out),filter .5s,opacity .5s}
.pjm__ghost--prev{transform:translateX(calc(var(--peek) * -.9)) scale(.9)}
.pjm__ghost--next{transform:translateX(calc(var(--peek) * .9)) scale(.9)}
.pjm__stage:has(.pjm__peek--prev:hover) .pjm__ghost--prev{transform:translateX(calc(var(--peek) * -1.12)) scale(.92);opacity:.9;filter:blur(1.5px) brightness(.95)}
.pjm__stage:has(.pjm__peek--next:hover) .pjm__ghost--next{transform:translateX(calc(var(--peek) * 1.12)) scale(.92);opacity:.9;filter:blur(1.5px) brightness(.95)}
.pjm__peek{position:absolute;top:0;bottom:0;z-index:3;width:var(--peek);padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center;color:#fff}
.pjm__peek--prev{right:100%}
.pjm__peek--next{left:100%}
.pjm__arrow{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .4s,color .4s,transform .5s var(--ease-out)}
.pjm__peek:hover .pjm__arrow,.pjm__peek:focus-visible .pjm__arrow{background:#fff;color:var(--night);transform:scale(1.06)}
.pjm__peek:active .pjm__arrow{transform:scale(.94)}
.pjm__arrow .ico{width:20px;height:20px}
.pjm__close{position:absolute;top:14px;right:14px;z-index:3;width:38px;height:38px;border:0;border-radius:50%;display:grid;place-items:center;cursor:pointer;background:#fff;color:var(--night);
  box-shadow:0 8px 24px -10px rgba(6,8,15,.5);transition:background .4s,color .4s,transform .5s var(--ease-out)}
.pjm__close:hover{background:var(--night);color:#fff;transform:rotate(90deg)}
.pjm__close .ico{width:16px;height:16px}
.pjm__media{grid-area:media;position:relative;overflow:hidden;background:#0B0F1C;min-height:0}
.pjm__shot{position:absolute;inset:0;opacity:0;transition:opacity .5s ease}
.pjm__shot.is-on{opacity:1}
.pjm__shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top}
.pjm__thumbs{position:absolute;left:14px;bottom:10px;z-index:2;display:flex}
.pjm__thumbs button{width:30px;height:22px;padding:0 3px;border:0;background:none;cursor:pointer}
.pjm__thumbs button::before{content:"";display:block;height:4px;border-radius:4px;background:rgba(255,255,255,.4);transition:background .3s}
.pjm__thumbs button.is-on::before,.pjm__thumbs button:hover::before{background:#fff}
.pjm__info{grid-area:info;display:grid;gap:10px;align-content:start;padding:26px 28px 0;min-height:0;overflow:auto}
.pjm .pj-type{font-size:12px;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.pjm .pj-dev{padding:3px 8px;font-size:11px}
.pjm__title{font-size:clamp(1.5rem,1.2rem + .8vw,1.9rem);letter-spacing:-.04em;line-height:1.1}
.pjm__lead{margin:0 0 2px;font-size:15.5px;line-height:1.5;color:var(--night)}
.pjm__txt{margin:0;font-size:14px;line-height:1.55;color:var(--muted)}
.pjm__txt b{color:var(--night);font-weight:600}
.pjm__tags{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.pjm__tags li{padding:6px 12px;border-radius:999px;background:var(--paper-2);color:#30364F;font-size:12.5px;font-weight:600}
.pjm__live{font-size:14px;font-weight:600;color:var(--brand)}
.pjm__foot{grid-area:foot;display:flex;align-items:center;gap:12px;padding:20px 28px 24px}

/* lado a lado: imagem à esquerda, texto à direita */
.pjm--lado{--w:min(920px,calc(100vw - 2 * var(--peek) - 24px))}
.pjm--lado .pjm__box{height:min(560px,calc(100dvh - 48px));grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"media info" "media foot"}
.pjm--lado .pjm__info{padding-top:34px;padding-right:60px}

/* celular: folha que sobe de baixo; setas acima dela; dá para arrastar para os lados */
@media (max-width:760px){
  .pjm.pjm{--w:100%}
  .pjm.pjm[open]{place-items:end stretch}
  .pjm.pjm .pjm__stage{width:100%;height:auto}
  .pjm.pjm[open] .pjm__stage{animation:pjm-up .5s var(--ease-out)}
  .pjm.pjm.is-closing .pjm__stage{animation:pjm-up-out .28s ease forwards}
  @keyframes pjm-up{from{transform:translateY(100%)}}
  @keyframes pjm-up-out{to{transform:translateY(100%)}}
  .pjm .pjm__box.pjm__box{height:auto;max-height:calc(100dvh - 100px);border-radius:22px 22px 0 0;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"media" "info" "foot"}
  .pjm .pjm__ghost{display:none}
  .pjm .pjm__peek.pjm__peek{top:auto;bottom:calc(100% + 14px);left:auto;right:auto;width:46px;height:46px;margin:0}
  .pjm .pjm__peek--prev.pjm__peek--prev{left:16px}
  .pjm .pjm__peek--next.pjm__peek--next{right:16px}
  .pjm .pjm__arrow{width:46px;height:46px}
  .pjm .pjm__media.pjm__media{aspect-ratio:16 / 9}
  .pjm .pjm__info.pjm__info{padding:20px 20px 0}
  .pjm .pjm__txt--chal{display:none}
  .pjm .pjm__foot{padding:16px 20px 20px}
}

/* =========================================================================
   SOBRE: o nome como verbete + a ponte entre "problema" e "solução"; foto do fundador à direita
   ========================================================================= */
.about--fit{padding-block:clamp(80px,9vw,128px)}
.about--photo{position:relative;overflow:hidden;isolation:isolate}
.about--photo > .wrap{position:relative;z-index:1}
.ab-bg{position:absolute;inset:0;z-index:0;pointer-events:none}
.ab-bg img{position:absolute;top:0;right:max(0px,calc((100% - 1440px) / 2));height:100%;width:auto;max-width:none;opacity:.95}
.ab-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--night) 42%,rgba(6,8,15,.55) 62%,rgba(6,8,15,.1) 85%),linear-gradient(0deg,var(--night),transparent 28%)}
.ab-p{display:grid;justify-items:start;gap:clamp(36px,4.4vw,56px)}
.ab-p__entry{display:grid;justify-items:start;gap:10px;max-width:600px}
.ab-p__entry .label{margin-bottom:6px}
.ab-term{margin:0;display:flex;align-items:baseline;gap:18px;font:500 clamp(3rem,2.2rem + 2.6vw,4.6rem)/1 var(--font-display);letter-spacing:-.05em;color:#fff}
.ab-term span[lang]{font:400 .5em/1 serif;letter-spacing:0;color:var(--bright)}
.ab-meta{margin:0;font:500 13px/1.4 var(--font-mono);color:var(--faint)}
.ab-p__def{margin:8px 0 0;font-size:clamp(1.1rem,1rem + .5vw,1.4rem);line-height:1.5;color:#D7DDF0}
.ab-p__def i{color:var(--bright);font-style:normal;font-weight:600}
.ab-p__span{position:relative;display:inline-block;padding-bottom:12px;color:#fff;font-weight:600}
.ab-p__arc{position:absolute;left:0;right:0;bottom:-6px;width:100%;height:20px;overflow:visible}
.ab-p__arc path{fill:none;stroke:var(--bright);stroke-width:2;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.4s var(--ease-out) .4s}
.ab-p__arc circle{fill:var(--bright);opacity:0;transition:opacity .4s .3s}
.ab-p__entry.is-in .ab-p__arc path{stroke-dashoffset:0}
.ab-p__entry.is-in .ab-p__arc circle{opacity:1}
.ab-p__story{display:grid;justify-items:start;gap:18px;max-width:600px}
.ab-p__story .h2{margin:0;max-width:none}
.ab-text{margin:0;font-size:17.5px;line-height:1.6;color:#C3CBE0;max-width:56ch}
.ab-foot{display:flex;align-items:center;flex-wrap:wrap;gap:16px 40px;width:100%;margin-top:8px;padding-top:22px;border-top:1px solid var(--line)}
.ab-sign{margin:0;font:500 14px/1.3 var(--font-mono);color:var(--bright)}
@media (max-width:900px){
  .about--fit{padding-block:64px}
  .ab-bg img{left:50%;right:auto;transform:translateX(-50%);opacity:.3}
  .ab-bg::after{background:linear-gradient(0deg,var(--night) 8%,rgba(6,8,15,.55) 50%,rgba(6,8,15,.75))}
}
/* =========================================================================
   DEPOIMENTOS: os cards saem da lateral direita e esmaecem embaixo do bloco esquerdo
   (título + números em selos girando); logos passando embaixo
   ========================================================================= */
.dp-fit{padding-block:clamp(72px,8vw,112px)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.dp-av{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;overflow:hidden;background:var(--paper-2);color:var(--faint)}
.dp-av svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.dp-av img{width:100%;height:100%;object-fit:cover}

/* números em selos com texto girando (maiores) */
.dbs{display:flex;gap:clamp(12px,1.6vw,24px)}
.dbs__b{width:clamp(136px,11.5vw,170px);color:var(--night)}
.dbs__b text{font-size:8.4px;letter-spacing:.06em;font-weight:600;fill:var(--muted)}
.dbs__b strong{font:500 clamp(2.1rem,1.5rem + 1.5vw,2.9rem)/1 var(--font-display);letter-spacing:-.05em;color:var(--night)}
.dbs__b:nth-child(2) strong{color:var(--brand)}
.badge-spin--rev svg{animation-direction:reverse}

/* logos passando */
.dlg{display:grid;gap:18px;margin-top:clamp(40px,5vw,64px)}
.dlg__label{margin:0;text-align:center;font:500 12px/1 var(--font-mono);color:var(--faint)}
.dlg .marquee{--gap:clamp(48px,6vw,96px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.dlg__logo{font:600 clamp(1.3rem,1rem + .8vw,1.75rem)/1 var(--font-display);letter-spacing:-.04em;color:#9AA1B8;white-space:nowrap;transition:color .4s}
.dlg__logo:hover{color:var(--night)}
.dlg__logo img{height:28px;width:auto;filter:grayscale(1);opacity:.6}

/* card de depoimento (texto ou vídeo) */
.dts{margin:0;flex:0 0 clamp(300px,25vw,360px);display:flex;flex-direction:column;justify-content:space-between;gap:22px;padding:26px;border-radius:24px;background:#fff;
  box-shadow:inset 0 0 0 1px var(--line),0 30px 60px -45px rgba(10,14,30,.4);color:var(--night);min-height:clamp(360px,30vw,420px)}
.dts blockquote{margin:0;font:500 clamp(1.05rem,.95rem + .4vw,1.25rem)/1.45 var(--font-display);letter-spacing:-.02em}
.dts__who{display:flex;align-items:center;gap:12px}
.dts__who span:last-child{display:grid;gap:2px}
.dts__who b{font:600 15px/1.2 var(--font-display)}
.dts__who small{font-size:12.5px;color:var(--muted)}
.dts--blue{background:var(--brand);color:#fff;box-shadow:none}
.dts--night{background:var(--night);color:#fff;box-shadow:none}
.dts--blue small,.dts--night small{color:rgba(255,255,255,.7)}
.dts--blue .dp-av,.dts--night .dp-av{background:rgba(255,255,255,.14);color:#fff}
.dts--video{padding:10px 10px 22px;gap:18px;background:var(--night);color:#fff;box-shadow:none}
.dts--video blockquote,.dts--video .dts__who{margin-inline:14px}
.dts--video blockquote{font-size:15.5px;line-height:1.5;color:#D7DDF0}
.dts--video small{color:rgba(255,255,255,.7)}
.dts--video .dp-av{background:rgba(255,255,255,.14);color:#fff}

/* espaço de vídeo */
.dpv{position:relative;display:block;width:100%;aspect-ratio:16 / 10;padding:0;border:0;border-radius:16px;overflow:hidden;cursor:pointer;background:var(--night);color:#fff}
.dpv__poster{transition:transform 1s var(--ease-out)}
.dpv__poster span{position:absolute;left:14px;top:12px;max-width:80%;text-align:left}
.dpv__play{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--brand);box-shadow:0 14px 30px -10px rgba(6,8,15,.5);transition:transform .6s var(--ease-out)}
.dpv__play svg{width:22px;height:22px;margin-left:3px;fill:currentColor}
.dpv__label{position:absolute;left:14px;bottom:12px;font:500 11.5px/1 var(--font-mono);color:rgba(255,255,255,.75)}
.dpv:hover .dpv__play{transform:scale(1.1)}
.dpv:hover .dpv__poster{transform:scale(1.04)}
.dpv.is-pending .dpv__label{color:#fff}
.dpv video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}

/* palco comum: bloco esquerdo por cima; a faixa de cards ocupa a largura toda e some antes do bloco */
.dsl{overflow-x:clip}
.dsl__stage{display:grid;grid-template-columns:minmax(0,1fr);align-items:center}
.dsl__stage > *{grid-area:1 / 1}
.dsl__wrap{position:relative;z-index:2;pointer-events:none;width:100%;max-width:none}
.dsl__side{display:grid;gap:30px;width:min(700px,50vw);pointer-events:auto}
.dsl__side .h2{margin:0;max-width:none}
.dsl__side .label{margin-bottom:-16px}
.dsl__lane{position:relative;z-index:1;min-width:0;padding-block:30px;
  -webkit-mask-image:linear-gradient(90deg,transparent calc(var(--gutter) + min(700px,50vw) - 40px),#000 calc(var(--gutter) + min(700px,50vw) + 220px));mask-image:linear-gradient(90deg,transparent calc(var(--gutter) + min(700px,50vw) - 40px),#000 calc(var(--gutter) + min(700px,50vw) + 220px))}

/* esteira */
.dsl__marquee{--gap:16px;overflow:visible}
.dsl__marquee .marquee__track{align-items:stretch}

@media (max-width:900px){
  .dsl__stage{display:grid;gap:28px}
  .dsl__stage > *{grid-area:auto}
  .dsl__side{width:auto}
  .dsl__lane{-webkit-mask-image:none;mask-image:none;padding-block:0}
  .dbs__b{width:104px}
  .dts{flex-basis:80vw;min-height:340px}
}

/* =========================================================================
   E-COMMERCE (ref. Baristi): título central + duas fitas diagonais correndo em sentidos opostos
   ========================================================================= */
.eco{position:relative;overflow:hidden}
.eco-copy .h2{margin:0}
.eco-copy .label{margin-bottom:-6px}
.eco-copy--center{display:grid;gap:22px;align-content:center;justify-items:center;text-align:center;max-width:760px;margin:0 auto}
.eco-copy--center .h2{max-width:none}
.eco-txt{margin:0;font-size:17px;line-height:1.6;color:#C9D2EC;max-width:50ch}
.eco-txt b{color:#fff}
.eco-star{width:18px;height:18px;flex:none;fill:currentColor}

.eco--rib{padding-bottom:0}
.eco-b{position:relative;z-index:2}
.eco-b__ribbons{position:relative;height:clamp(150px,14vw,190px);margin-top:clamp(40px,5vw,64px)}
.eco-b__rib{position:absolute;left:-5%;right:-5%;padding:16px 0;font:600 clamp(1.05rem,.9rem + .6vw,1.4rem)/1 var(--font-display);letter-spacing:-.02em;white-space:nowrap}
.eco-b__rib .marquee{--gap:22px;-webkit-mask-image:none;mask-image:none}
.eco-b__rib .marquee__track{gap:22px}
.eco-b__rib--1{top:30px;transform:rotate(-4deg);background:var(--brand);color:#fff;z-index:2;box-shadow:0 20px 40px -20px rgba(0,0,0,.6)}
.eco-b__rib--2{top:60px;transform:rotate(3deg);background:#fff;color:var(--night)}
.eco-b__rib--2 .eco-star{color:var(--brand)}
/* =========================================================================
   RODAPÉ: fecho centralizado + navegação em dock (ref. DOVV), colunas com títulos de verdade
   e a logo esmaecida iluminada por baixo (ref. Visuvate)
   ========================================================================= */
/* títulos de coluna que parecem título: fonte de título, branco, com o traço azul da marca */
.ft-title{margin:0 0 8px;display:flex;align-items:center;gap:10px;font:600 17px/1.2 var(--font-display);letter-spacing:-.02em;color:#fff}
.ft-title::before{content:"";width:14px;height:3px;border-radius:2px;background:var(--bright)}
.ft-col{display:grid;gap:11px;align-content:start;font-size:15px;color:#A8B1CC}
.ft-col a{text-decoration:none;justify-self:start;color:#C9D2EC}
.ft-brand p{margin:12px 0 0;color:#A8B1CC;font-size:15px;line-height:1.6;max-width:36ch}
.ft-grid{display:grid;grid-template-columns:1.5fr 1fr 1.1fr 1.1fr;gap:clamp(28px,4vw,56px)}
.ft-grid--3{grid-template-columns:1.5fr 1.1fr 1.1fr}

/* logo iluminada por baixo */
.ftv__horizon{position:relative;margin-top:clamp(56px,7vw,96px);padding:0 var(--gutter);overflow:hidden}
/* logo escurecida e esmaecida: aparece como marca d'água iluminada por baixo */
.ftv__word{position:relative;z-index:1;display:block;width:100%;max-width:1500px;height:auto;margin:0 auto;opacity:.22;filter:grayscale(.35) brightness(.8);
  -webkit-mask-image:linear-gradient(#000 10%,rgba(0,0,0,.15) 85%);mask-image:linear-gradient(#000 10%,rgba(0,0,0,.15) 85%)}
.ftv__light{position:absolute;left:50%;bottom:-40%;z-index:0;width:min(1200px,90%);height:120%;transform:translateX(-50%);border-radius:50%;
  background:radial-gradient(ellipse at 50% 100%,rgba(79,143,255,.45),rgba(42,111,219,.2) 35%,transparent 70%);filter:blur(28px);animation:ftv-breathe 6s ease-in-out infinite alternate}
.ftv__horizon::after{content:"";position:absolute;left:10%;right:10%;bottom:0;height:1px;z-index:2;background:linear-gradient(90deg,transparent,rgba(160,195,255,.9),transparent)}
@keyframes ftv-breathe{to{opacity:.65;transform:translateX(-50%) scale(.94)}}

/* fecho + dock */
.ftd__cta{display:grid;justify-items:center;gap:28px;text-align:center;padding-bottom:clamp(40px,5vw,56px)}
.ftd__cta .h2{margin:0;max-width:none}
.ftd__actions{display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap}
.ftd__wa{display:inline-flex;align-items:center;gap:6px;color:#C9D2EC;text-decoration:none;font-weight:600}
.ftd__dock{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;width:max-content;max-width:100%;margin:0 auto clamp(48px,6vw,72px);padding:8px;border-radius:999px;
  background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 30px 60px -30px rgba(0,0,0,.8);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.ftd__dock a{padding:11px 16px;border-radius:999px;color:#C9D2EC;text-decoration:none;font:600 14.5px/1 var(--font-body);transition:background .4s,color .4s}
.ftd__dock a:hover{background:rgba(255,255,255,.1);color:#fff}
.ftd__dock .ftd__ext{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--night)}
.ftd__dock .ftd__ext:hover{background:var(--bright);color:#fff}
.ftd__dock .ico{width:14px;height:14px}
.ftd__sym{flex:none;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--night);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);margin-right:6px}
.ftd__sym img{width:52%;height:auto}
.ftd .footer__bottom{margin-top:0}
.ftd .ftv__horizon{margin-top:clamp(48px,6vw,80px)}

@media (prefers-reduced-motion:reduce){.ftv__light{animation:none}}
@media (max-width:900px){
  .ft-grid{grid-template-columns:1fr 1fr}
  .ft-grid .ft-brand{grid-column:1 / -1}
  .ftd__dock{width:auto;border-radius:24px}
}

/* =========================================================================
   DEPOIMENTOS — vídeo do Gudson com play de vidro, selo girando, duas faixas de
   depoimentos (logo, nome e texto) que somem atrás do vídeo; números em faixa escura
   ========================================================================= */
.dv-stars{display:inline-flex;gap:3px;vertical-align:middle}
.dv-stars i{width:14px;height:14px;background:#F5B400;clip-path:polygon(50% 0,61.8% 35.4%,100% 35.4%,69.1% 57.3%,80.9% 92.7%,50% 70.8%,19.1% 92.7%,30.9% 57.3%,0 35.4%,38.2% 35.4%)}
.dv-g{display:inline-block;width:22px;height:22px;flex:none;margin-right:8px}
.dv-g svg{display:block;width:100%;height:100%}
.dvx-video{position:relative;margin:0;border-radius:26px;overflow:hidden;background:var(--night);box-shadow:0 40px 80px -50px rgba(10,14,30,.7);isolation:isolate}
.dvx-video__btn{position:absolute;inset:0;display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:pointer}
.dvx-video__poster,.dvx-video video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.dvx-video__poster{transition:transform 1.2s var(--ease-out)}
.dvx-video__btn::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,8,15,.34),rgba(6,8,15,.22) 45%,rgba(6,8,15,.6));transition:opacity .6s var(--ease-out)}
.dvx-video__btn:hover .dvx-video__poster{transform:scale(1.04)}
.dvx-video__btn:hover::after{opacity:.7}
/* play de vidro: aro fino e fundo desfocado, deixa o rosto aparecer */
.dvx-play{position:absolute;left:50%;top:50%;z-index:1;width:58px;height:58px;margin:-29px 0 0 -29px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.12);backdrop-filter:blur(6px) saturate(1.2);-webkit-backdrop-filter:blur(6px) saturate(1.2);
  box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.75),0 12px 40px -12px rgba(6,8,15,.5);transition:transform .6s var(--ease-out),background .5s}
.dvx-play svg{width:20px;height:20px;margin-left:3px;fill:#fff}
.dvx-video__btn:hover .dvx-play{transform:scale(1.08);background:rgba(255,255,255,.2)}
.dvx-video__btn:active .dvx-play{transform:scale(.97)}
.dvx-video__btn.is-playing::after,.dvx-video__btn.is-playing .dvx-play{display:none}
.dvx-video video{z-index:2;background:#000}
.dvx-who{position:absolute;left:12px;bottom:12px;z-index:3;display:flex;align-items:center;gap:9px;padding:4px 14px 4px 4px;border-radius:999px;
  background:rgba(6,8,15,.5);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);color:#fff;transition:opacity .4s}
.dvx-who > span:last-child{display:grid}
.dvx-who b{font:600 13.5px/1.25 var(--font-display)}
.dvx-who small{font-size:11.5px;line-height:1.25;color:rgba(255,255,255,.72)}
.dvx-who__logo{width:30px;height:30px;border-radius:50%;background:#fff;padding:4px;flex:none}
.dvx-who__logo img{width:100%;height:100%;object-fit:contain}
.dvx-video:has(.is-playing) .dvx-who{opacity:0;pointer-events:none}
.dvl__head{margin-bottom:clamp(32px,4vw,48px)}
.dvl__head .h2{margin:0}
.dvl__nums{margin-top:clamp(32px,4vw,48px)}
/* selo escuro girando sobre o canto do vídeo */
.dvl__seal{position:absolute;z-index:4;top:-30px;right:-46px;width:118px;border-radius:50%;background:var(--night);color:#fff;box-shadow:0 0 0 6px var(--bg),0 24px 40px -20px rgba(6,8,15,.6)}
.dvl__seal text{font-size:8.6px;letter-spacing:.12em}
.dvl__seal-q{position:relative;font:700 76px/1 Georgia,"Times New Roman",serif;color:var(--brand);transform:translateY(20px)}

.dvl__row{--vw:clamp(280px,26vw,330px);--gap:14px;position:relative;display:grid;container-type:inline-size;margin-top:34px}
.dvl__stage,.dvl__lanes{grid-area:1 / 1}
/* o vídeo fica por cima; o fundo do palco esconde os cards que passam atrás dele */
.dvl__stage{position:relative;z-index:2;width:calc(var(--vw) + var(--gap));padding-right:var(--gap);background:var(--bg)}
.dvl__stage::after{content:"";position:absolute;top:0;bottom:0;left:100%;width:56px;background:linear-gradient(90deg,var(--bg),transparent);pointer-events:none}
.dvl__video{height:100%;min-height:calc(var(--vw) * 1.36);border-radius:24px;box-shadow:none}
.dvl__lanes{display:grid;grid-template-rows:1fr 1fr;gap:var(--gap);min-width:0}
.dvl__lane .marquee__track{align-items:stretch}
.dvl__lane{--gap:14px;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
.dvl__row:hover .marquee__track{animation-play-state:paused}
.dvl__row.is-off .marquee__track{animation-play-state:paused}

/* dois cards visíveis por faixa, ao lado do vídeo */
.dvl-card{flex:none;width:calc((100cqw - var(--vw) - var(--gap) * 2) / 2);margin:0;padding:20px 24px 18px;border-radius:22px;background:#fff;box-shadow:inset 0 0 0 1px var(--line);display:flex;flex-direction:column;gap:10px;color:var(--night);user-select:text}
.dvl-card__top{display:flex;align-items:center;justify-content:space-between;gap:12px;height:28px;margin-bottom:2px}
.dvl-card h3{margin:0;font:600 clamp(1.1rem,1rem + .3vw,1.25rem)/1.25 var(--font-display);letter-spacing:-.03em}
.dvl-card blockquote{margin:0;font-size:15px;line-height:1.55;color:var(--muted);flex:1}
.dvl-card figcaption{margin-top:6px;font-size:14px;color:var(--faint)}
.dvl-card figcaption b{font-family:var(--font-display);font-weight:600;color:var(--night)}

/* marcas de exemplo (inventadas) — trocar pelas logos reais */
.dvl-mark{display:inline-flex;align-items:center;gap:7px;color:var(--night);white-space:nowrap}
.dvl-mark--a{font:700 20px/1 var(--font-display);letter-spacing:-.04em}
.dvl-mark--a i{width:16px;height:16px;border-radius:4px;background:linear-gradient(135deg,var(--brand),#0E5E63);transform:rotate(45deg)}
.dvl-mark--b{font:400 18px/1 Georgia,"Times New Roman",serif;letter-spacing:-.01em;color:#0F5A3C}
.dvl-mark--b b{font-weight:700}
.dvl-mark--c{font:800 15px/1 var(--font-body);letter-spacing:.14em}
.dvl-mark--c i{font-style:normal;color:#fff;background:var(--night);padding:4px 6px;border-radius:4px;margin-left:2px;letter-spacing:.1em}
.dvl-mark--d{gap:0;font:italic 500 23px/1 Georgia,"Times New Roman",serif;letter-spacing:-.03em;color:#7A2E4A}
.dvl-mark--d i{font-style:normal;color:var(--brand)}
.dvl-mark--e{font:800 16px/1 var(--font-display);letter-spacing:.06em;color:#3A3F4E}
.dvl-mark--e i{width:14px;height:14px;background:#E8590C;clip-path:polygon(0 0,100% 0,100% 30%,40% 30%,40% 100%,0 100%)}
.dvl-mark--f{gap:0;font:500 20px/1 var(--font-display);letter-spacing:-.04em;color:#0B3B66}
.dvl-mark--f b{font-weight:700;color:#14A38B}

@media (max-width:900px){
  .dvl__row{display:block}
  .dvl__stage{width:min(100%,340px);margin:0 auto 18px;padding:0;background:none}
  .dvl__stage::after{display:none}
  .dvl__seal{width:92px;top:-22px;right:-8px}
  .dvl__row{margin-top:22px}
  .dvl__video{height:auto;min-height:0;aspect-ratio:9/14}
  .dvl-card{width:min(78vw,340px)}
  .dvl__lane{-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 90%,transparent)}
}
@media (prefers-reduced-motion:reduce){
  .dvl__lane{overflow-x:auto}
  .dvl__lane .marquee__track{animation:none !important}
  .dvl__lane[aria-hidden],.dvl__lane .marquee__track + .marquee__track{display:none}
  .dvl__lanes{margin-left:calc(var(--vw) + var(--gap))}
}
@media (prefers-reduced-motion:reduce) and (max-width:900px){.dvl__lanes{margin-left:0}}
.dvl{overflow-x:clip}

/* números em faixa escura (ref. Veliora) */
.dvl-band{margin:clamp(28px,3.5vw,44px) 0 0;display:grid;grid-template-columns:repeat(5,auto);justify-content:space-between;gap:16px;padding:24px clamp(22px,3vw,36px);border-radius:24px;color:#fff;
  background:radial-gradient(ellipse 50% 140% at 0% 0%,rgba(42,111,219,.38),transparent 70%),var(--night)}
.dvl-band > div{display:flex;align-items:center;gap:12px}
.dvl-band > div + div{padding-left:clamp(14px,2vw,28px);border-left:1px solid rgba(255,255,255,.12)}
.dvl-band dt{display:flex;align-items:center;flex:none;font:500 clamp(1.8rem,1.4rem + 1vw,2.4rem)/1 var(--font-display);letter-spacing:-.05em}
.dvl-band dd{margin:0;font-size:12.5px;line-height:1.35;color:#A8B1CC}
.dvl-band .dv-g{width:20px;height:20px;margin-right:7px}
@media (max-width:1100px){
  .dvl-band{grid-template-columns:1fr 1fr;row-gap:18px}
  .dvl-band > div + div{padding-left:0;border-left:0}
  .dvl-band > div:nth-child(4){grid-column:1 / -1;order:1}
}

/* =========================================================================
   BLOG — capas (imagens geradas, 16:10)
   e o bloco "blog e materiais" da home
   ========================================================================= */
.bthumb{display:block;overflow:hidden;aspect-ratio:16/10;border-radius:var(--radius);background:#E7EEFF;isolation:isolate}
.bthumb img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.004);transition:transform 1.2s var(--ease-out)}
a:hover .bthumb img{transform:scale(1.05)}

/* tema em pílula + metadados */
.bpill{display:inline-flex;align-items:center;gap:.5em;padding:.42em .85em;border-radius:999px;font:600 12.5px/1 var(--font-body);color:var(--brand);background:rgba(42,111,219,.1);white-space:nowrap}
.theme-dark .bpill{color:#9FC1FF;background:rgba(79,143,255,.14)}
.bmeta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;font:500 12.5px/1.3 var(--font-mono);color:var(--faint)}

/* home: blog e materiais (destaque à esquerda, duas linhas à direita) */
.hb{--bg:#fff}
.hb__head{display:flex;align-items:end;justify-content:space-between;gap:24px 48px;flex-wrap:wrap;margin-bottom:clamp(36px,4.5vw,56px)}
.hb__head .h2{margin:0}
.hb__side{display:grid;gap:20px;justify-items:start;max-width:40ch}
.hb__side p{margin:0;color:var(--muted);line-height:1.6}
.hb__grid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(20px,3vw,40px)}
.hb-post{display:grid;gap:18px;text-decoration:none;color:inherit}
.hb-post h3{margin:0;font:500 clamp(1.35rem,1.1rem + .9vw,1.9rem)/1.15 var(--font-display);letter-spacing:-.03em;max-width:24ch;transition:color .4s}
.hb-post p{margin:0;color:var(--muted);line-height:1.6;max-width:52ch}
.hb-post:hover h3,.hb-row:hover h3{color:var(--brand)}
.hb__list{display:grid;align-content:start}
.hb-row{display:grid;grid-template-columns:150px 1fr;gap:20px;align-items:center;padding:20px 0;border-top:1px solid var(--line);text-decoration:none;color:inherit}
.hb-row:first-child{padding-top:0;border-top:0}
.hb-row .bthumb{aspect-ratio:4/3;border-radius:14px}
.hb-row h3{margin:8px 0 0;font:500 1.12rem/1.25 var(--font-display);letter-spacing:-.02em;transition:color .4s}
.hb-mat{display:flex;align-items:center;gap:14px;margin-top:4px;padding:16px 18px;border-radius:16px;background:var(--paper);text-decoration:none;color:inherit;transition:background .4s}
.hb-mat:hover{background:#E7EEFF}
.hb-mat b{display:block;font:600 15px/1.3 var(--font-body)}
.hb-mat small{color:var(--muted);font-size:13.5px}
.hb-mat .ico{flex:none;width:18px;height:18px;margin-left:auto;color:var(--brand)}
@media (max-width:900px){
  .hb__grid{grid-template-columns:1fr}
  .hb-row{grid-template-columns:110px 1fr;gap:16px}
}
