/* VittFlow Tech — scroll-driven "deep space" home. Self-hosted, no external fonts or scripts (CSP). */
:root{--bg:#050505;--panel:rgba(18,14,11,.55);--edge:rgba(246,237,224,.11);--cream:#f6ede0;--dim:rgba(246,237,224,.6);--ember:#e0874a;--steel:#5d8fb3;--sky:#8fbcf0;--glow:255,138,76;--font:Onest,Inter,'Segoe UI',system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}html{scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--cream);font-family:var(--font);-webkit-font-smoothing:antialiased;overflow-x:clip}
h1,h2,h3,p{margin:0}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}
a:focus-visible,button:focus-visible{outline:2px solid var(--ember);outline-offset:4px}
#star-sky{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
body::before{content:'';position:fixed;inset:0;z-index:-2;background:radial-gradient(1100px 700px at 75% -10%,rgba(224,135,74,.14),transparent 60%),radial-gradient(900px 700px at -10% 60%,rgba(93,143,179,.14),transparent 60%)}
em{font-style:normal;background:linear-gradient(100deg,#ffc08f,var(--ember) 40%,var(--sky));-webkit-background-clip:text;background-clip:text;color:transparent}
.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:50}.progress span{display:block;height:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--ember),var(--sky))}
/* header */
.nav{position:fixed;top:14px;left:50%;transform:translateX(-50%);width:min(1180px,calc(100% - 24px));z-index:40;display:flex;align-items:center;gap:20px;height:62px;padding:0 10px 0 12px;border:1px solid var(--edge);border-radius:20px;background:rgba(8,6,5,.5);backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);box-shadow:0 10px 40px rgba(0,0,0,.4)}
.brand img{display:block;height:38px;width:auto;background:#fff;border-radius:11px;padding:3px 8px}
.navlinks{display:flex;gap:26px;margin:0 auto;font-size:14px}.navlinks a{color:var(--dim);transition:color .2s}.navlinks a:hover{color:var(--cream)}
.menu{display:none;margin-left:auto;background:none;border:0;color:var(--cream);font-size:24px}
/* buttons, pills */
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 22px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:linear-gradient(180deg,#fff8ee,#e8dac7);color:#140e09;font-weight:600;font-size:14px;transition:transform .2s,box-shadow .25s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 40px rgba(var(--glow),.4)}
.btn.sm{padding:10px 16px;font-size:13px}.btn.glow{background:linear-gradient(120deg,#f0a06a,var(--ember) 40%,#9a6aa8 72%,var(--steel));color:#fff;box-shadow:0 10px 50px rgba(var(--glow),.35)}
.btn.ghost,.btn.dl{background:rgba(255,255,255,.05);color:var(--cream);backdrop-filter:blur(10px)}
.pill{display:inline-flex;align-items:center;gap:9px;padding:7px 14px;border:1px solid var(--edge);border-radius:999px;background:rgba(255,255,255,.04);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(246,237,224,.8);backdrop-filter:blur(8px)}
.dot{width:7px;height:7px;border-radius:50%;background:var(--ember);box-shadow:0 0 12px rgb(var(--glow))}
.kicker{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ember)}
/* hero */
.hero{position:relative;min-height:100vh;display:grid;place-items:center;padding:120px 6% 80px;text-align:center;overflow:hidden}
.hero-copy{position:relative;z-index:2;max-width:980px;display:flex;flex-direction:column;align-items:center;gap:26px;will-change:transform}
.hero h1{font-size:clamp(44px,8vw,116px);line-height:.96;letter-spacing:-.055em;font-weight:600;text-shadow:0 0 80px rgba(0,0,0,.7)}
.split .w{display:inline-block;opacity:0;transform:translateY(.5em) rotateX(-50deg);filter:blur(8px);transition:opacity .9s var(--d),transform .9s cubic-bezier(.2,.8,.2,1) var(--d),filter .9s var(--d)}
.split.in .w{opacity:1;transform:none;filter:none}
.intro{max-width:560px;font-size:18px;line-height:1.6;color:var(--dim)}
.actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.apps{display:flex;gap:10px}.apps a{padding:7px 14px;border:1px solid var(--edge);border-radius:999px;font-size:13px;color:var(--dim);background:rgba(255,255,255,.03)}.apps a:hover{color:var(--cream);border-color:rgba(var(--glow),.6)}
.float-field{position:absolute;inset:0;z-index:1;pointer-events:none}
.fi{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;will-change:transform}
.fi svg{width:58px;height:58px;padding:15px;border-radius:18px;color:var(--cream);background:linear-gradient(145deg,rgba(255,255,255,.12),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);box-shadow:0 0 30px rgba(var(--glow),.25),inset 0 1px 0 rgba(255,255,255,.15);animation:bob 6s ease-in-out infinite}
.fi:nth-child(odd) svg{animation-duration:7.5s;animation-direction:reverse;color:var(--sky)}
.fi b{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);font-weight:600}
@keyframes bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-14px) rotate(6deg)}}
.scroll-hint{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}
.scroll-hint span{width:1px;height:40px;background:linear-gradient(var(--ember),transparent);animation:hint 1.8s ease-in-out infinite}@keyframes hint{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
/* pinned sections */
.pin{position:relative}.orbit-pin{height:300vh}.story-pin{height:500vh}.hscroll-pin{height:400vh}
.sticky{position:sticky;top:0;height:100vh;overflow:hidden;display:grid;align-items:center}
/* orbit */
.orbit-pin .sticky{grid-template-columns:1.1fr .9fr;gap:4%;padding:90px 6% 40px}
.orbit-stage{position:relative;width:min(640px,46vw);aspect-ratio:1;justify-self:center}
.ring{position:absolute;left:50%;top:50%;border-radius:50%;border:1px dashed rgba(246,237,224,.16);transform:translate(-50%,-50%)}.r1{width:62%;height:56%}.r2{width:92%;height:83%;border-style:solid;border-color:rgba(93,143,179,.22)}.r3{width:30%;height:30%;border-color:rgba(224,135,74,.35)}
.core{position:absolute;left:50%;top:50%;display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 18px;border-radius:22px;background:rgba(10,8,6,.6);border:1px solid var(--edge);box-shadow:0 0 80px rgba(var(--glow),.45);transform:translate(-50%,-50%)}
.core img{height:38px;width:auto;background:#fff;border-radius:10px;padding:3px 8px}.core small{font-size:9px;letter-spacing:.2em;color:var(--dim)}
.oi{position:absolute;left:50%;top:50%;display:flex;align-items:center;gap:8px;padding:9px 13px 9px 10px;border-radius:14px;background:rgba(16,12,10,.7);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);font-size:12px;white-space:nowrap;will-change:transform;box-shadow:0 0 24px rgba(var(--glow),.2)}
.oi svg{color:var(--ember)}.oi:nth-child(even) svg{color:var(--sky)}.oi b{font-weight:600}
.orbit-copy{display:flex;flex-direction:column;gap:22px}
.words{font-size:clamp(30px,4.2vw,64px);line-height:1.08;letter-spacing:-.04em;font-weight:600}
.words .w{color:rgba(246,237,224,.16);transition:color .35s}.words .w.lit{color:var(--cream)}
/* story */
.story-pin .sticky{grid-template-columns:1fr 1fr;gap:6%;padding:90px 6% 40px}
.story-visual{position:relative;width:min(520px,40vw);aspect-ratio:1;justify-self:center}
.halo{position:absolute;left:50%;top:50%;width:100%;height:100%;border-radius:50%;background:conic-gradient(from 0deg,rgba(224,135,74,.55),rgba(154,106,168,.4),rgba(93,143,179,.55),rgba(224,135,74,.55));filter:blur(50px);opacity:.55;transform:translate(-50%,-50%)}
.sg{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:62%;aspect-ratio:1;border-radius:36%;background:linear-gradient(150deg,rgba(255,255,255,.14),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(16px);color:var(--cream);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 30px 80px rgba(0,0,0,.5);opacity:0;transform:translate(-50%,-50%);will-change:transform}
.sg svg{width:46%;height:46%}
.story-dots{position:absolute;right:-30px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:10px}.story-dots i{width:6px;height:6px;border-radius:50%;background:rgba(246,237,224,.25);transition:all .3s}.story-dots i.on{height:26px;border-radius:4px;background:var(--ember)}
.story-copy{display:flex;flex-direction:column;gap:26px}.story-panels{position:relative;min-height:360px}
.sp{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;gap:18px;opacity:0;transform:translateY(40px);filter:blur(6px);transition:opacity .6s,transform .7s cubic-bezier(.2,.8,.2,1),filter .6s;pointer-events:none}
.sp.on{opacity:1;transform:none;filter:none;pointer-events:auto}
.sp h3{font-size:clamp(30px,4vw,58px);line-height:1.04;letter-spacing:-.04em;font-weight:600}.sp p{font-size:17px;line-height:1.65;color:var(--dim);max-width:520px}
/* horizontal services */
.hscroll-pin .sticky{align-content:center;gap:40px;padding:90px 0 40px}
.hs-head{padding:0 6%;display:flex;flex-direction:column;gap:18px}.hs-head h2{font-size:clamp(32px,4.6vw,68px);line-height:1.02;letter-spacing:-.045em;font-weight:600}
.hs-track{display:flex;gap:22px;padding-left:6%;width:max-content;will-change:transform}
.hc{position:relative;width:min(380px,78vw);min-height:340px;display:flex;flex-direction:column;gap:14px;padding:28px;border-radius:26px;background:var(--panel);border:1px solid var(--edge);backdrop-filter:blur(14px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 24px 60px rgba(0,0,0,.4)}
.hc::before{content:'';position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:linear-gradient(140deg,rgba(224,135,74,.7),transparent 40%,transparent 60%,rgba(93,143,179,.7));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.hc-ico{width:62px;height:62px;display:grid;place-items:center;border-radius:18px;background:radial-gradient(circle at 30% 20%,rgba(var(--glow),.5),rgba(93,143,179,.25));color:#fff;margin-bottom:auto}
.hc h3{font-size:26px;letter-spacing:-.03em;font-weight:600}.hc p{color:var(--dim);line-height:1.6;font-size:15px}
.more{align-self:flex-start;background:none;border:0;padding:0;color:var(--sky);font-weight:600;font-size:14px}
/* marquee */
.marquee{overflow:hidden;padding:26px 0;border-block:1px solid var(--edge);background:linear-gradient(90deg,rgba(224,135,74,.08),rgba(93,143,179,.08))}
.mq-track{display:flex;width:max-content;white-space:nowrap;font-size:clamp(26px,4vw,54px);font-weight:600;letter-spacing:-.03em}.mq-track span{padding-right:.4em}
/* approach */
.section{padding:140px 6%;max-width:1320px;margin:auto;display:flex;flex-direction:column;gap:34px}
.big{max-width:1100px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:20px}
.step{padding:30px;border-radius:24px;background:var(--panel);border:1px solid var(--edge);display:flex;flex-direction:column;gap:14px;backdrop-filter:blur(12px)}.step h3{font-size:24px;letter-spacing:-.03em}.step p{color:var(--dim);line-height:1.6}
.rv{opacity:0;transform:translateY(60px) scale(.97);transition:opacity .9s,transform 1s cubic-bezier(.2,.8,.2,1)}.rv.in{opacity:1;transform:none}.steps .rv:nth-child(2){transition-delay:.12s}.steps .rv:nth-child(3){transition-delay:.24s}
/* download */
.download{flex-direction:row;align-items:center;gap:44px;margin:0 auto 60px;width:min(1180px,88%);padding:60px clamp(24px,5vw,70px);border-radius:32px;border:1px solid var(--edge);background:radial-gradient(600px 300px at 90% 0%,rgba(224,135,74,.25),transparent 70%),radial-gradient(500px 300px at 0% 100%,rgba(93,143,179,.28),transparent 70%),rgba(14,11,9,.7);backdrop-filter:blur(14px)}
.download>div:last-child{display:flex;flex-direction:column;gap:20px;align-items:flex-start}.download h2{font-size:clamp(30px,4vw,54px);letter-spacing:-.04em;line-height:1.05}.download p{color:var(--dim);line-height:1.6;max-width:560px}.download .actions{justify-content:flex-start}
.dl-ico{flex:none;width:130px;height:130px;display:grid;place-items:center;border-radius:34px;background:linear-gradient(150deg,rgba(255,255,255,.16),rgba(255,255,255,.02));border:1px solid rgba(255,255,255,.18);animation:bob 6s ease-in-out infinite;box-shadow:0 0 60px rgba(var(--glow),.35)}
/* cta + footer */
.cta{min-height:90vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;text-align:center;padding:80px 6%}
.huge{font-size:clamp(46px,9vw,140px);line-height:.95;letter-spacing:-.06em;max-width:1200px}.cta p{color:var(--dim);font-size:18px}
footer{max-width:1320px;margin:auto;padding:60px 6% 30px;border-top:1px solid var(--edge);color:var(--dim);font-size:14px}
.footer-top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap}.footer-top p{margin-top:16px;max-width:260px;line-height:1.6}
.footer-links{display:flex;gap:60px;flex-wrap:wrap}.footer-links div{display:flex;flex-direction:column;gap:10px}.footer-links strong{color:var(--cream)}.footer-links a:hover{color:var(--cream)}
.linkish{background:none;border:0;padding:0;color:inherit;text-align:left;font-size:14px}
.footer-bottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:44px;padding-top:20px;border-top:1px solid var(--edge);font-size:12px}
.motion-toggle{position:fixed;right:16px;bottom:16px;z-index:30;padding:8px 14px;border-radius:999px;border:1px solid var(--edge);background:rgba(10,8,6,.7);color:var(--dim);font-size:12px;backdrop-filter:blur(8px)}
/* dialogs (contact / privacy) */
dialog{width:min(560px,92vw);padding:34px;background:#0f0b09;color:var(--cream);border:1px solid var(--edge);border-radius:24px;box-shadow:0 30px 90px rgba(0,0,0,.7)}dialog::backdrop{background:rgba(0,0,0,.65);backdrop-filter:blur(6px)}
dialog h2{font-size:30px;letter-spacing:-.03em;margin:14px 0 10px}dialog p{color:var(--dim);line-height:1.6}dialog .eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;display:flex;gap:8px;align-items:center}
dialog .close{position:absolute;right:16px;top:12px;background:none;border:0;color:var(--cream);font-size:28px}
dialog form{display:flex;flex-direction:column;gap:8px;margin-top:18px}dialog label{font-size:13px;color:var(--dim);margin-top:8px}
dialog input,dialog textarea{padding:12px 14px;border-radius:12px;border:1px solid var(--edge);background:rgba(255,255,255,.05);color:var(--cream)}dialog textarea{min-height:110px}
dialog .btn{margin-top:14px;justify-content:center}.small-note{font-size:12px;color:var(--dim);margin-top:10px}
.detail-list{color:var(--dim);line-height:1.8}
/* responsive */
@media(max-width:900px){.navlinks{display:none}.nav>.btn{display:none}.menu{display:block}
.navlinks.open{display:flex;position:absolute;top:70px;left:0;right:0;flex-direction:column;gap:18px;padding:24px;border-radius:18px;border:1px solid var(--edge);background:rgba(8,6,5,.95)}
.orbit-pin .sticky,.story-pin .sticky{grid-template-columns:1fr;align-content:center;gap:28px;padding:84px 6% 24px}
.orbit-stage{width:min(78vw,420px);order:-1}.story-visual{width:min(52vw,280px)}.story-dots{right:-22px}.story-panels{min-height:300px}
.oi{font-size:10px;padding:6px 9px}.oi svg{width:16px;height:16px}.words{font-size:clamp(26px,7vw,40px)}
.steps{grid-template-columns:1fr}.download{flex-direction:column;align-items:flex-start}.fi svg{width:46px;height:46px;padding:12px}.fi b{display:none}.sp p{font-size:15px}}
@media(max-width:560px){.hero h1{letter-spacing:-.045em}.download .btn{width:100%;justify-content:center}.section{padding:90px 6%}.dl-ico{width:90px;height:90px}}
/* reduced motion or paused: no pinning, everything visible and still */
body.rm .pin{height:auto}body.rm .sticky{position:relative;height:auto;min-height:0;overflow:visible;padding-block:110px}
body.rm .hs-track{flex-wrap:wrap;width:auto;padding:0 6%}body.rm .sp{position:relative;opacity:1;transform:none;filter:none;pointer-events:auto;margin-bottom:46px}body.rm .story-panels{min-height:0}
body.rm .sg{display:none}body.rm .sg:first-of-type{display:grid;opacity:1}body.rm .oi{display:none}body.rm .split .w,body.rm .rv{opacity:1;transform:none;filter:none;transition:none}
body.rm *{animation:none!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.hscroll-pin .sticky{grid-template-columns:100%}.hs-head h2{overflow-wrap:break-word}
