/* IZYNET · Experiência 3D · site-modelo */
:root{
  --bg:#02040a;--bg2:#050b14;--ink:#eef5f8;--mut:#9fb0bc;--line:rgba(255,255,255,.09);
  --cy:#22d3ee;--cy2:#38f0c8;
  --ease:cubic-bezier(.22,.8,.2,1);
  --gut:clamp(20px,5.5vw,84px);
}
*{margin:0;padding:0;box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{background:var(--bg);color:var(--ink);font-family:'Instrument Sans',system-ui,sans-serif;font-weight:400;overflow-x:clip}
a{color:inherit;text-decoration:none}
img,video{display:block}
::selection{background:var(--cy);color:#02121a}
.sync{font-family:Syncopate,system-ui,sans-serif;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.lbl{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--mut)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- cursor cometa ---------- */
@media (hover:hover) and (pointer:fine){html.js *{cursor:none}}
#mglow,#trail,.cur,.cur-dot{position:fixed;left:0;top:0;pointer-events:none;opacity:0;transition:opacity .5s}
#mglow{z-index:96;width:150px;height:150px;border-radius:50%;mix-blend-mode:screen;filter:blur(7px);
  background:radial-gradient(circle,rgba(200,250,255,.95),rgba(34,211,238,.55) 28%,rgba(34,211,238,.14) 54%,transparent 72%)}
#trail{z-index:95;height:58px;width:0;transform-origin:0 50%;border-radius:40px;mix-blend-mode:screen;filter:blur(10px);
  background:linear-gradient(90deg,rgba(170,248,255,.85),rgba(34,211,238,.3) 42%,transparent 86%)}
.cur{z-index:98;width:40px;height:40px;border-radius:50%;border:1.5px solid rgba(34,211,238,.9);box-shadow:0 0 26px rgba(34,211,238,.55);transition:opacity .5s,width .25s var(--ease),height .25s var(--ease),background .25s}
.cur.big{width:84px;height:84px;background:rgba(34,211,238,.1)}
.cur-dot{z-index:99;width:6px;height:6px;border-radius:50%;background:#eafcff;box-shadow:0 0 14px var(--cy)}
body.go #mglow,body.go #trail,body.go .cur,body.go .cur-dot{opacity:1}
@media (hover:none),(pointer:coarse){#mglow,#trail,.cur,.cur-dot{display:none}}

/* ---------- preloader ---------- */
#pre{position:fixed;inset:0;z-index:100;background:var(--bg);display:none;flex-direction:column;align-items:center;justify-content:center;gap:20px;transition:opacity .9s var(--ease),visibility .9s}
html.js #pre{display:flex}
#pre.done{opacity:0;visibility:hidden}
#pre .lg{font-size:clamp(20px,5vw,34px);letter-spacing:.44em;padding-left:.44em}
#pre .bar{width:min(260px,56vw);height:1px;background:rgba(255,255,255,.12);overflow:hidden}
#pre .bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cy),var(--cy2))}
#pre .pc{font-family:Syncopate;font-size:11px;letter-spacing:.3em;color:var(--cy)}

/* ---------- header ---------- */
.hd{position:fixed;inset:0 0 auto;z-index:60;display:flex;align-items:center;justify-content:space-between;padding:22px var(--gut);mix-blend-mode:difference}
.hd .brand{font-size:15px;letter-spacing:.34em}
.hd nav{display:flex;gap:30px}
.hd nav a{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;opacity:.8;transition:opacity .3s}
.hd nav a:hover{opacity:1}
.hd .wa{display:none;font-size:11px;letter-spacing:.18em;text-transform:uppercase;border:1px solid rgba(255,255,255,.5);padding:10px 16px;border-radius:30px}
@media (max-width:860px){.hd nav{display:none}.hd .wa{display:block}}

/* ---------- CENA: órbita -> tela ---------- */
.orbita{position:relative}
html.js .orbita{height:520vh}
@media (max-width:860px){html.js .orbita{height:440vh}}
.orbita__pin{position:relative;height:100vh;height:100svh;overflow:hidden;isolation:isolate}
html.js .orbita__pin{position:sticky;top:0}

/* camadas que cobrem 100% da viewport: sempre inset:0 + object-fit, nunca width/height junto com inset negativo */
.o-layer{position:absolute;inset:0;width:100%;height:100%}
#stars{z-index:0}
.earth{z-index:1;overflow:hidden;transform-origin:50% 64%;will-change:transform}
.earth__mouse{position:absolute;inset:-5%;will-change:transform}
.earth video,.earth img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;filter:brightness(1.1) saturate(1.1)}
@media (max-aspect-ratio:3/4){.earth video,.earth img{object-position:42% 50%}}
.o-grad{z-index:2;pointer-events:none;
  background:radial-gradient(120% 70% at 50% 0%,rgba(34,211,238,.12),transparent 42%),
             linear-gradient(180deg,rgba(2,4,10,.35) 0%,transparent 26%,transparent 66%,rgba(2,4,10,.75) 100%),
             radial-gradient(70% 60% at 22% 48%,rgba(2,4,10,.5),transparent 70%)}
@media (max-width:860px){.o-grad{background:linear-gradient(180deg,rgba(2,4,10,.55) 0%,rgba(2,4,10,.3) 30%,rgba(2,4,10,.4) 55%,rgba(2,4,10,.85) 100%)}}

.astro{position:absolute;z-index:3;right:4%;top:50%;width:min(30vw,460px);margin-top:calc(min(30vw,460px) * -.74);will-change:transform}
.astro__mouse{position:relative;will-change:transform;transform-style:preserve-3d}
.astro__glow{position:absolute;left:50%;top:48%;width:140%;aspect-ratio:1;translate:-50% -50%;z-index:-1;
  background:radial-gradient(circle,rgba(34,211,238,.24),rgba(34,211,238,.06) 42%,transparent 66%);filter:blur(10px);animation:pulse 5.5s ease-in-out infinite}
.astro img{width:100%;height:auto;filter:drop-shadow(0 24px 70px rgba(0,0,0,.6)) brightness(1.12) contrast(1.05);animation:float 8s ease-in-out infinite}
@keyframes pulse{50%{opacity:.6;scale:1.08}}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-20px) rotate(1.5deg)}}
@media (max-width:860px){.astro{width:min(44vw,220px);right:-3%;top:auto;bottom:1%;margin-top:0}}

.hero{position:absolute;z-index:5;inset:0;display:flex;flex-direction:column;justify-content:center;padding:0 var(--gut);will-change:transform,opacity}
.hero__in{max-width:min(64vw,980px)}
.hero h1{font-size:clamp(34px,6.6vw,112px);line-height:1.02;letter-spacing:.03em}
.hero h1 .ln{display:block;overflow:hidden;padding:.18em 0 .06em;margin-top:-.18em}
.hero h1 .ln>span{display:block;padding-top:.22em;margin-top:-.22em;background:linear-gradient(180deg,#fff 10%,#a9c3cf 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--cy),var(--cy2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{max-width:44ch;margin-top:28px;font-weight:300;font-size:clamp(15px,1.35vw,19px);line-height:1.7;color:#dce8ee;text-shadow:0 2px 24px rgba(0,0,0,.8)}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:38px}
.btn{position:relative;display:inline-flex;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.3);padding:16px 30px;border-radius:40px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;background:rgba(255,255,255,.05);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:border-color .3s,box-shadow .3s,background .3s,scale .2s var(--ease)}
.btn:hover{border-color:var(--cy)}
.btn:active{scale:.97}
.btn.pri{border-color:transparent;background:linear-gradient(90deg,var(--cy),var(--cy2));color:#03141c;font-weight:600}
.btn.pri:hover{box-shadow:0 14px 50px -12px var(--cy)}
.hero__foot{position:absolute;left:var(--gut);right:var(--gut);bottom:26px;display:flex;justify-content:space-between;align-items:flex-end;gap:20px}
.scroll-ind{display:flex;flex-direction:column;align-items:center;gap:8px}
.scroll-ind i{width:1px;height:40px;background:linear-gradient(var(--cy),transparent);animation:drip 2.2s ease-in-out infinite;transform-origin:top}
@keyframes drip{0%,100%{scale:1 .4;opacity:.4}50%{scale:1 1;opacity:1}}
@media (max-width:860px){
  .hero{justify-content:flex-start;padding-top:max(20vh,120px)}
  .hero__in{max-width:100%}
  .hero h1{font-size:clamp(30px,9.6vw,54px)}
  .hero p{font-size:15.5px;max-width:30ch;margin-top:20px}
  .cta{margin-top:28px;flex-direction:column;align-items:flex-start;gap:10px}
  .btn{padding:14px 22px;font-size:10.5px}
  .hero__foot .lbl:not(.scroll-ind){display:none}
  .hero__foot{justify-content:flex-start}
}
@media (max-width:860px) and (max-height:700px){.hero{padding-top:100px}.hero p{display:none}}

/* entrada (só com JS) */
html.js .hero h1 .ln>span{transform:translateY(105%)}
html.js .hero p,html.js .hero .cta,html.js .hero__foot{opacity:0;transform:translateY(24px)}
body.go .hero h1 .ln>span{transform:none;transition:transform .9s var(--ease)}
body.go .hero h1 .ln:nth-child(2)>span{transition-delay:.1s}
body.go .hero h1 .ln:nth-child(3)>span{transition-delay:.2s}
body.go .hero p,body.go .hero .cta,body.go .hero__foot{opacity:1;transform:none;transition:opacity 1s var(--ease) .45s,transform 1s var(--ease) .45s}
body.go .hero .cta{transition-delay:.6s}
body.go .hero__foot{transition-delay:.8s}

/* clarão da atmosfera */
.bloom{z-index:6;pointer-events:none;opacity:0;background:radial-gradient(60% 60% at 50% 60%,rgba(235,253,255,.95),rgba(34,211,238,.55) 35%,rgba(2,4,10,0) 75%)}
html:not(.js) .bloom,html:not(.js) .tela,html:not(.js) .o-cap{display:none}

/* a tela que nasce das luzes da cidade */
.tela{position:absolute;z-index:7;left:50%;top:46%;width:min(80vw,1180px,calc((100svh - 250px) * 1.6));aspect-ratio:16/10;translate:-50% -50%;
  border-radius:14px;overflow:hidden;background:#061018;border:1px solid rgba(160,240,255,.25);
  box-shadow:0 0 0 1px rgba(255,255,255,.04),0 40px 120px -20px rgba(0,0,0,.9),0 0 90px -10px rgba(34,211,238,.35);
  opacity:0;transform:perspective(1400px) rotateX(38deg) scale(.08);will-change:transform,opacity}
.tela__bar{position:absolute;inset:0 0 auto;z-index:3;height:34px;display:flex;align-items:center;gap:7px;padding:0 14px;background:rgba(6,14,22,.82);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.07)}
.tela__bar i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.18)}
.tela__url{margin-left:12px;flex:1;max-width:340px;height:20px;border-radius:10px;background:rgba(255,255,255,.06);font-size:11px;line-height:20px;padding:0 12px;color:#bfe9f2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tela__url b{color:var(--cy2);font-weight:500}
.tela__view{position:absolute;inset:34px 0 0;overflow:hidden}
.tela__view .tv{position:absolute;inset:0;opacity:0}
.tela__view .tv:first-child{opacity:1}
.tela__view img,.tela__view video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0}
.tela__view video{opacity:0;transition:opacity .4s}
.tela__view video.on{opacity:1}
@media (max-width:860px){.tela__view video{display:none}}
@media (max-width:860px){
  .tela{width:min(66vw,calc((100svh - 260px) * .462));aspect-ratio:390/844;top:43%;border-radius:34px;border:6px solid #0b1620;outline:1px solid rgba(160,240,255,.3)}
  .tela__bar{display:none}
  .tela__view{inset:0;border-radius:28px}
  .tela::after{content:"";position:absolute;z-index:4;top:9px;left:50%;translate:-50% 0;width:28%;height:18px;border-radius:12px;background:#000}
  .o-cap{bottom:max(28px,4svh)}
  .o-cap .t{font-size:15px}
}

.o-cap{position:absolute;z-index:8;left:0;right:0;bottom:clamp(26px,6vh,64px);text-align:center;padding:0 var(--gut);opacity:0;pointer-events:none}
.o-cap .t{font-size:clamp(18px,2.4vw,34px);line-height:1.2}
.o-cap .s{margin-top:12px;display:flex;justify-content:center;align-items:center;gap:10px}
.dot-live{width:7px;height:7px;border-radius:50%;background:var(--cy2);box-shadow:0 0 10px var(--cy2);animation:blink 1.8s ease-in-out infinite}
@keyframes blink{50%{opacity:.25}}

/* ---------- seções ---------- */
.sec{position:relative;z-index:2;background:var(--bg);padding:clamp(96px,16vh,190px) var(--gut)}
.wrap{max-width:1320px;margin:0 auto}
.kch{display:flex;align-items:center;gap:14px;font-family:Syncopate;font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--cy);margin-bottom:26px}
.kch::before{content:"";width:34px;height:1px;background:currentColor}
.h2{font-size:clamp(28px,4.6vw,70px);line-height:1.05}

/* manifesto: palavras acendem com a rolagem */
.mani{border-top:1px solid var(--line)}
.mani__t{font-family:Syncopate;font-weight:700;text-transform:uppercase;font-size:clamp(24px,3.7vw,58px);line-height:1.22;letter-spacing:.02em;max-width:22ch}
.mani__t .w{display:inline-block;opacity:.14;transition:opacity .2s linear}
html:not(.js) .mani__t .w{opacity:1}
.mani__t .hl{color:var(--cy)}

/* marquee */
.marq{position:relative;z-index:2;overflow:hidden;padding:26px 0;border-block:1px solid var(--line);background:var(--bg)}
.marq__row{display:flex;width:max-content;will-change:transform}
.marq span{font-family:Syncopate;font-weight:700;text-transform:uppercase;font-size:clamp(34px,6.2vw,96px);letter-spacing:.03em;padding-right:.55em;white-space:nowrap;color:transparent;-webkit-text-stroke:1px rgba(170,230,245,.32)}
.marq span.f{-webkit-text-stroke:0;background:linear-gradient(90deg,var(--cy),var(--cy2));-webkit-background-clip:text;background-clip:text}

/* modelos: lista grande + prévia que segue o cursor */
.mod__head{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;flex-wrap:wrap;margin-bottom:56px}
.mod__head p{max-width:40ch;color:var(--mut);font-weight:300;line-height:1.75}
.mlist{border-top:1px solid var(--line)}
.mrow{position:relative;display:grid;grid-template-columns:70px 1fr auto 60px;align-items:center;gap:20px;padding:34px 0;border-bottom:1px solid var(--line);transition:padding .5s var(--ease)}
.mrow .n{font-family:Syncopate;font-size:12px;color:var(--mut);letter-spacing:.15em}
.mrow .nm{font-family:Syncopate;font-weight:700;text-transform:uppercase;font-size:clamp(26px,4.6vw,72px);line-height:1;letter-spacing:.02em;transition:color .4s,translate .5s var(--ease)}
.mrow .dm{font-size:13px;color:var(--mut);display:flex;align-items:center;gap:10px;white-space:nowrap}
.mrow .go{width:54px;height:54px;border-radius:50%;border:1px solid rgba(255,255,255,.25);display:grid;place-items:center;font-size:20px;transition:background .35s,color .35s,rotate .35s var(--ease),border-color .35s}
.mrow::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:linear-gradient(90deg,var(--cy),var(--cy2));scale:0 1;transform-origin:left;transition:scale .7s var(--ease)}
.mrow:hover::after{scale:1 1}
.mrow:hover .nm{color:var(--cy);translate:14px 0}
.mrow:hover .go{background:var(--cy);color:#03141c;border-color:var(--cy);rotate:-45deg}
.mrow .thumb{display:none}
.mprev{position:fixed;left:0;top:0;z-index:50;width:min(34vw,480px);aspect-ratio:16/10;border-radius:14px;overflow:hidden;pointer-events:none;opacity:0;scale:.85;transition:opacity .35s,scale .45s var(--ease);box-shadow:0 30px 90px -20px rgba(0,0,0,.9),0 0 60px -10px rgba(34,211,238,.4);border:1px solid rgba(160,240,255,.25)}
.mprev.on{opacity:1;scale:1}
.mprev video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0;opacity:0;transition:opacity .35s}
.mprev video.on{opacity:1}
@media (hover:none),(max-width:860px){
  .mprev{display:none}
  .mrow{grid-template-columns:minmax(0,1fr) 48px;gap:14px 16px;padding:26px 0}
  .mrow .nm{font-size:clamp(18px,5.6vw,30px)}
  .mrow .n{display:none}
  .mrow .thumb{display:block;grid-column:1/-1;order:-1;aspect-ratio:16/10;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
  .mrow .thumb video{width:100%;height:100%;object-fit:cover;object-position:50% 0}
  .mrow .dm{grid-column:1;margin-top:-6px}
  .mrow .go{grid-row:2;grid-column:2;width:46px;height:46px}
}

/* serviços: título preso + lista */
.svc__grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(30px,6vw,110px)}
.svc__side{position:sticky;top:120px;align-self:start}
.svc__side p{margin-top:24px;color:var(--mut);font-weight:300;line-height:1.75;max-width:38ch}
.svc__item{position:relative;padding:38px 0 38px 0;border-top:1px solid var(--line)}
.svc__item:last-child{border-bottom:1px solid var(--line)}
.svc__item .n{font-family:Syncopate;font-size:11px;color:var(--cy);letter-spacing:.24em}
.svc__item h3{font-family:Syncopate;font-weight:700;text-transform:uppercase;font-size:clamp(22px,2.6vw,38px);margin:14px 0 14px;letter-spacing:.02em}
.svc__item p{color:var(--mut);font-weight:300;line-height:1.75;max-width:48ch}
.svc__item ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.svc__item li{font-size:12px;padding:7px 13px;border-radius:30px;border:1px solid var(--line);color:#cfe3ea}
@media (max-width:860px){.svc__grid{grid-template-columns:1fr}.svc__side{position:static}}

/* processo */
.steps{position:relative;margin-top:64px;padding-left:46px;max-width:860px}
.rail{position:absolute;left:10px;top:8px;bottom:8px;width:1px;background:var(--line)}
.rail i{position:absolute;inset:0 0 auto;height:0;background:linear-gradient(var(--cy),var(--cy2));box-shadow:0 0 14px var(--cy)}
html:not(.js) .rail i{height:100%}
.st{position:relative;padding-bottom:58px}
.st:last-child{padding-bottom:0}
.st::before{content:"";position:absolute;left:-41px;top:7px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:1px solid rgba(255,255,255,.3);transition:background .5s,border-color .5s,box-shadow .5s}
.st.on::before,html:not(.js) .st::before{background:var(--cy);border-color:var(--cy);box-shadow:0 0 18px var(--cy)}
.st .n{font-family:Syncopate;font-size:11px;text-transform:uppercase;letter-spacing:.28em;color:var(--cy)}
.st h3{font-family:Syncopate;font-weight:700;text-transform:uppercase;font-size:clamp(20px,2.4vw,32px);margin:10px 0}
.st p{color:var(--mut);font-weight:300;line-height:1.75;max-width:54ch}

/* contato com órbitas */
.fim{overflow:hidden;text-align:center;padding-block:clamp(130px,22vh,240px)}
.orbits{position:absolute;left:50%;top:50%;width:min(980px,150vw);aspect-ratio:1;translate:-50% -50%;pointer-events:none}
.orbits i{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(34,211,238,.12)}
.orbits i:nth-child(2){inset:14%;border-color:rgba(34,211,238,.17)}
.orbits i:nth-child(3){inset:28%;border-color:rgba(56,240,200,.22)}
.orbits i::after{content:"";position:absolute;top:50%;left:-4px;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--cy);box-shadow:0 0 18px 4px rgba(34,211,238,.6)}
.orbits i:nth-child(1){animation:spin 40s linear infinite}
.orbits i:nth-child(2){animation:spin 27s linear infinite reverse}
.orbits i:nth-child(3){animation:spin 18s linear infinite}
.orbits b{position:absolute;inset:36%;border-radius:50%;background:radial-gradient(circle,rgba(34,211,238,.2),transparent 68%);filter:blur(20px)}
@keyframes spin{to{rotate:360deg}}
.fim .h2{position:relative;max-width:17ch;margin:0 auto;font-size:clamp(28px,5.2vw,82px)}
.fim .kch{justify-content:center}.fim .kch::before{display:none}
.fim .cta{position:relative;justify-content:center;margin-top:46px}
.ft{position:relative;z-index:2;background:var(--bg);border-top:1px solid var(--line);padding:34px var(--gut) 44px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--mut);font-size:12px;letter-spacing:.08em}

/* reveal */
html.js .rv{opacity:0;transform:translateY(34px)}
.rv.in{opacity:1!important;transform:none!important;transition:opacity 1s var(--ease),transform 1s var(--ease)}

/* grão */
.grain{position:fixed;inset:0;z-index:90;pointer-events:none;opacity:.045;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* movimento reduzido: sem cena presa, tudo visível */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  html.js .orbita{height:auto}
  html.js .orbita__pin{position:relative}
  .bloom,.tela,.o-cap{display:none}
  html.js .rv,html.js .hero p,html.js .hero .cta,html.js .hero__foot{opacity:1;transform:none}
  html.js .hero h1 .ln>span{transform:none}
  .mani__t .w{opacity:1}
}
