:root{
  --paper:#F5EEE1;--paper2:#ECE2CF;--card:#FBF7EF;--ink:#13261F;--ink2:#4A5C53;--line:rgba(19,38,31,.14);
  --accent:#E2552D;--teal:#1F8A70;--teal2:#2BA889;--deep:#123A2F;--shadow:0 18px 40px -22px rgba(19,38,31,.45);
  --fd:"Montserrat Alternates","Montserrat",sans-serif;--fb:"Montserrat",system-ui,sans-serif;--r:26px;
}
[data-theme=dark]{
  --paper:#0E1915;--paper2:#14231E;--card:#15251F;--ink:#F2EADB;--ink2:#AEBBB2;--line:rgba(242,234,219,.13);
  --accent:#F07A52;--teal:#33B892;--teal2:#46cba5;--deep:#0A2a21;--shadow:0 18px 40px -22px rgba(0,0,0,.8);
}
[lang=ar]{--fd:"Alexandria",sans-serif;--fb:"Alexandria",system-ui,sans-serif}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--fb);background:var(--paper);color:var(--ink);line-height:1.6;overflow-x:hidden;transition:background .5s,color .5s}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3,h4{font-family:var(--fd);line-height:1.12;letter-spacing:-.01em}
[lang=ar] h1,[lang=ar] h2,[lang=ar] h3{letter-spacing:0;line-height:1.35}
button{font:inherit;color:inherit;cursor:pointer}
.grain{position:fixed;inset:0;pointer-events:none;z-index:100;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* nav */
.nav{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:20px;padding:14px 5vw;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:border-color .3s}
.nav.scrolled{border-color:var(--line)}
.logo{display:flex;align-items:center;gap:10px;font-family:"Montserrat Alternates";font-weight:800;font-size:22px;color:var(--teal)}
.logo .mark{display:grid;place-items:center;width:34px;height:34px;border-radius:12px 12px 12px 4px;background:var(--teal);color:var(--paper);font-size:20px;transform:rotate(-8deg)}
.logo em{color:var(--accent);font-style:normal}
.links{display:flex;gap:26px;margin-inline-start:auto}
.links a{font-weight:600;font-size:14px;position:relative}
.links a:after{content:"";position:absolute;inset-inline:0;bottom:-4px;height:2px;background:var(--accent);transform:scaleX(0);transition:transform .3s;transform-origin:center}
.links a:hover:after{transform:scaleX(1)}
.tools{display:flex;gap:8px;align-items:center}
.tbtn,.lang{height:38px;min-width:38px;border-radius:12px;border:1px solid var(--line);background:var(--card);display:grid;place-items:center;padding:0 10px;font-weight:700;font-size:13px;transition:transform .2s}
.tbtn:hover,.lang:hover{transform:translateY(-2px)}
.lang{font-family:"Alexandria","Montserrat"}
.tbtn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.tbtn .moon{display:none}[data-theme=dark] .tbtn .sun{display:none}[data-theme=dark] .tbtn .moon{display:block}
body.paused .tbtn#motion{background:var(--accent);color:#fff}

.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;border-radius:14px;background:var(--ink);color:var(--paper);font-weight:700;font-size:14px;transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.btn.small{padding:9px 14px;font-size:13px}

/* hero */
main{overflow:clip}
.hero{position:relative;z-index:1;display:grid;grid-template-columns:1.15fr .85fr;gap:4vw;align-items:center;height:100%;padding:86px 5vw 4vh;opacity:calc(1 - var(--out,0));transform:translateY(calc(var(--out,0) * -60px)) scale(calc(1 - var(--out,0) * .04))}
.ring{position:absolute;border-radius:50%;border:1.5px solid var(--line);pointer-events:none}
.r1{width:620px;height:620px;inset-inline-end:-180px;top:-160px;animation:spin 60s linear infinite}
.r2{width:300px;height:300px;inset-inline-start:-90px;bottom:-60px;border:28px solid color-mix(in srgb,var(--teal) 14%,transparent)}
.pill{display:inline-flex;gap:8px;align-items:center;padding:7px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-weight:600;font-size:13px}
.pill:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--teal) 25%,transparent);animation:pulse 2s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 8px transparent}}
.wordmark{font-family:"Montserrat Alternates";font-weight:800;font-size:clamp(46px,8.2vw,132px);line-height:.92;margin:22px 0 18px;color:var(--ink);text-shadow:.055em .055em 0 var(--teal);letter-spacing:-.03em}
[lang=ar] .wordmark{font-family:"Alexandria";font-size:clamp(54px,8.6vw,138px);line-height:1.1;letter-spacing:0}
.wordmark .w{display:inline-block;white-space:nowrap}
.wordmark span span,[lang=ar] .wordmark .w{display:inline-block;opacity:0;transform:translateY(40px) rotate(6deg);animation:drop .9s cubic-bezier(.2,.9,.25,1.2) forwards}
@keyframes drop{to{opacity:1;transform:none}}
.statement{font-family:var(--fd);font-weight:700;font-size:clamp(20px,2.1vw,30px);line-height:1.25;max-width:620px}
.lead{color:var(--ink2);font-size:16.5px;max-width:600px;margin-top:14px}
.cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.cta.center{justify-content:center}
.store{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:14px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);font-family:inherit;cursor:pointer;font-weight:700;font-size:14.5px;transition:transform .2s,background .2s,color .2s}
.store:hover{transform:translateY(-3px)}
.store.dark{background:var(--ink);color:var(--paper)}
.store.light{background:#F5EEE1;color:#123A2F;border-color:#F5EEE1}
.store.ghost{border-color:color-mix(in srgb,#fff 50%,transparent);color:#fff}
.store svg{width:18px;height:18px;fill:currentColor}
.based{margin-top:18px;font-size:13px;color:var(--ink2)}

.hero-art{position:relative;justify-self:center;width:min(430px,82vw);aspect-ratio:.82}
.arch{position:absolute;inset:0;border-radius:999px 999px 34px 34px;overflow:hidden;background:var(--teal);box-shadow:var(--shadow);border:6px solid var(--card);animation:rise 1.1s .2s cubic-bezier(.2,.8,.2,1) both}
.arch img{width:100%;height:100%;object-fit:cover;object-position:50% 20%}
@keyframes rise{from{opacity:0;transform:translateY(60px) scale(.96)}}
.floaters{position:absolute;inset:-40px;pointer-events:none}
.floaters img,.floaters span{position:absolute;width:62px;height:62px;border-radius:18px;box-shadow:0 14px 30px -12px rgba(0,0,0,.45);border:3px solid var(--card);background:var(--card);object-fit:cover;animation:bob 7s ease-in-out infinite}
.floaters span{display:grid;place-items:center;font-family:"Montserrat Alternates";font-weight:800;color:#fff;font-size:20px}
@keyframes bob{0%,100%{transform:translateY(0) rotate(var(--rot,0deg))}50%{transform:translateY(-16px) rotate(calc(var(--rot,0deg) * -1))}}
.sticker{position:absolute;inset-inline-start:-34px;bottom:46px;width:104px;height:104px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;text-align:center;font-family:"Montserrat Alternates";font-weight:800;font-size:22px;line-height:1;transform:rotate(-12deg);box-shadow:var(--shadow);animation:wobble 6s ease-in-out infinite}
.sticker small{font-size:11px;font-weight:700;opacity:.9}
@keyframes wobble{50%{transform:rotate(8deg) scale(1.04)}}
@keyframes spin{to{transform:rotate(360deg)}}

/* stats + marquee */
.stats{display:grid;grid-template-columns:repeat(4,1fr);margin:0 5vw;border-block:1px solid var(--line)}
.stat{padding:26px 22px;border-inline-end:1px solid var(--line)}
.stat:last-child{border:0}
.stat b{display:block;font-family:"Montserrat Alternates";font-weight:800;font-size:clamp(36px,4vw,54px);color:var(--teal);line-height:1}
.stat span{font-size:14px;color:var(--ink2);font-weight:500}
.marquee{overflow:hidden;padding:30px 0;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.track{display:flex;gap:18px;width:max-content;animation:slide 50s linear infinite}
[dir=rtl] .track{animation-name:slide-rtl}
.track a{display:flex;align-items:center;gap:10px;padding:8px 16px 8px 8px;border-radius:16px;background:var(--card);border:1px solid var(--line);font-weight:700;font-size:14px;white-space:nowrap}
[dir=rtl] .track a{padding:8px 8px 8px 16px}
.track img,.track i{width:36px;height:36px;border-radius:10px;object-fit:cover}
.track i{display:grid;place-items:center;background:#d71f3f;color:#fff;font-style:normal;font-size:12px;font-weight:800}
@keyframes slide{to{transform:translateX(-50%)}}
@keyframes slide-rtl{to{transform:translateX(50%)}}

/* sections */
.section{padding:90px 5vw 30px}
.head{max-width:760px;margin-bottom:34px}
.num{display:inline-block;font-family:"Montserrat Alternates";font-weight:800;color:var(--accent);font-size:14px;padding:4px 10px;border:1.5px solid var(--accent);border-radius:999px;margin-bottom:14px}
.head h2,.story h2,.contact h2{font-size:clamp(34px,4.6vw,62px)}
.head p{color:var(--ink2);margin-top:10px;font-size:16.5px}

/* live apps */
.apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.appc{display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:22px;background:var(--card);border:1px solid var(--line);cursor:pointer;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s}
.appc:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:var(--shadow)}
.appc .top{display:flex;gap:12px;align-items:center}
.appc img.ic,.appc .ic{width:56px;height:56px;border-radius:15px;object-fit:cover;flex:none;border:1px solid var(--line)}
.appc .ic{display:grid;place-items:center;background:#d71f3f;color:#fff;font-weight:800;font-family:"Montserrat Alternates"}
.appc h3{font-size:16.5px}
.appc small{color:var(--ink2);font-weight:600;font-size:12.5px}
.badges{display:flex;gap:6px;flex-wrap:wrap}
.badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:10px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:700;transition:transform .2s}
.badge:hover{transform:scale(1.05)}
.badge svg{width:13px;height:13px;fill:currentColor}

/* process (pinned) */
.process{height:420vh;position:relative;margin-top:70px}
.sticky{position:sticky;top:0;height:100vh;display:grid;grid-template-columns:1fr 1fr;overflow:hidden}
.panel{position:relative;background:var(--teal);display:grid;place-items:center;overflow:hidden}
.pattern{position:absolute;inset:-20%;opacity:.16;background-image:radial-gradient(closest-side,transparent 62%,#fff 64% 74%,transparent 76%);background-size:90px 60px;transform:rotate(-8deg);animation:drift 40s linear infinite}
@keyframes drift{to{background-position:900px 600px}}
.phone{position:relative;width:min(330px,60%);aspect-ratio:9/19.5;transform:rotate(-4deg)}
.phone:before{content:"";position:absolute;inset:0;border-radius:34px;background:var(--paper);transform:rotate(9deg) translate(26px,10px);opacity:.35}
.notch{display:none}
.screens{position:relative;width:100%;height:100%;border-radius:34px;overflow:hidden;background:#fff;box-shadow:0 40px 80px -30px rgba(0,0,0,.6);border:5px solid var(--paper)}
.screens img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;opacity:0;transform:scale(1.06);transition:opacity .7s,transform .9s}
.screens img.on{opacity:1;transform:none}
.story{display:flex;flex-direction:column;justify-content:center;padding:6vh 6vw;background:var(--paper);border-start-start-radius:60px;border-end-start-radius:60px;margin-inline-start:-60px;position:relative;z-index:2}
.story .num{align-self:flex-start}
.story .sub{color:var(--ink2);margin:12px 0 26px;max-width:520px}
.steps{list-style:none;display:flex;flex-direction:column;gap:6px}
.steps li{padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer}
.steps h3{font-size:clamp(22px,2.3vw,32px);display:flex;gap:14px;align-items:baseline;opacity:.35;transition:opacity .4s}
.steps h3 i{font-style:normal;font-size:14px;color:var(--accent)}
.steps p{max-height:0;overflow:hidden;color:var(--ink2);transition:max-height .6s,margin .4s;max-width:520px}
.steps li.on h3{opacity:1}
.steps li.on p{max-height:140px;margin-top:8px}
.dots{position:absolute;inset-inline-end:22px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:12px;z-index:3}
.dots b{width:12px;height:12px;border-radius:50%;border:2px solid var(--ink);transition:background .3s}
.dots b.on{background:var(--ink)}

/* project cards */
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}
.chip{padding:9px 16px;border-radius:999px;border:1.5px solid var(--ink);background:transparent;font-weight:700;font-size:13px;transition:.2s}
.chip.on,.chip:hover{background:var(--ink);color:var(--paper)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:22px}
.card{border-radius:var(--r);background:var(--card);border:1px solid var(--line);overflow:hidden;cursor:pointer;transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s}
.card:hover{transform:translateY(-8px);box-shadow:var(--shadow)}
.thumb{position:relative;aspect-ratio:16/11;overflow:hidden;background:var(--paper2);display:grid;place-items:center}
.thumb.teal{background:var(--teal)}.thumb.coral{background:var(--accent)}.thumb.deep{background:var(--deep)}
.thumb .shot{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .9s}
.card:hover .thumb .shot{transform:scale(1.06)}
.fan{position:relative;width:100%;height:100%}
.fan img{position:absolute;bottom:-22%;width:31%;border-radius:16px;border:3px solid #0b0f0d;box-shadow:0 18px 30px -14px rgba(0,0,0,.6);transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.fan img:nth-child(1){left:9%;transform:rotate(-10deg)}
.fan img:nth-child(2){left:34.5%;bottom:-12%;z-index:2}
.fan img:nth-child(3){left:60%;transform:rotate(10deg)}
.card:hover .fan img:nth-child(1){transform:rotate(-14deg) translate(-10px,-10px)}
.card:hover .fan img:nth-child(2){transform:translateY(-16px)}
.card:hover .fan img:nth-child(3){transform:rotate(14deg) translate(10px,-10px)}
.thumb .logo{max-width:44%;max-height:44%;background:#fff;padding:16px 20px;border-radius:18px;box-shadow:var(--shadow)}
.thumb .initials{font-family:"Montserrat Alternates";font-weight:800;font-size:64px;color:var(--paper)}
.status{position:absolute;top:14px;inset-inline-start:14px;z-index:3;font-size:11.5px;font-weight:800;letter-spacing:.04em;padding:6px 11px;border-radius:999px;background:var(--paper);color:var(--ink);display:inline-flex;gap:6px;align-items:center}
.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.status.live{color:#127a5a}.status.delivered{color:#2d5bbf}.status.dev{color:#b36b00}
[data-theme=dark] .status{background:#0b1411}
[data-theme=dark] .status.live{color:#46cba5}[data-theme=dark] .status.delivered{color:#8fb0ff}[data-theme=dark] .status.dev{color:#f5b54a}
.card .body{padding:20px 22px 24px}
.meta{font-size:12px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}
[lang=ar] .meta{letter-spacing:0}
.card h3{font-size:23px;margin:6px 0 8px}
.card p{color:var(--ink2);font-size:14.5px}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.tags span{font-size:12px;font-weight:600;padding:4px 10px;border-radius:8px;border:1px solid var(--line)}
.more{display:inline-flex;gap:6px;margin-top:16px;font-weight:700;font-size:14px;color:var(--teal)}
.more i{font-style:normal;transition:transform .3s}
.card:hover .more i{transform:translateX(5px)}
[dir=rtl] .more i{transform:scaleX(-1)}[dir=rtl] .card:hover .more i{transform:scaleX(-1) translateX(5px)}

/* experience */
.jobs{border-top:1px solid var(--line)}
.job{display:grid;grid-template-columns:220px 1fr;gap:30px;padding:26px 0;border-bottom:1px solid var(--line)}
.job .date{font-weight:700;color:var(--teal);font-size:14px}
.job .place{font-size:13px;color:var(--ink2);margin-top:4px}
.job h3{font-size:22px}
.job .org{font-weight:700;color:var(--accent);margin:4px 0 10px;display:inline-block}
.job ul{padding-inline-start:18px;color:var(--ink2)}
.job li{margin:5px 0}

/* skills */
.skills{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.skill{padding:22px;border-radius:22px;background:var(--card);border:1px solid var(--line)}
.skill h3{font-size:17px;margin-bottom:14px}
.skill div{display:flex;flex-wrap:wrap;gap:7px}
.skill span{font-size:13px;font-weight:600;padding:6px 11px;border-radius:10px;background:var(--paper2);transition:.2s}
.skill span:hover{background:var(--teal);color:#fff}

/* archive */
.archive{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));border-top:1px solid var(--line)}
.arc{padding:16px 6px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:2px 14px;transition:padding .3s,background .3s}
.arc:hover{padding-inline-start:16px;background:var(--card)}
.arc b{font-family:var(--fd);font-size:16px}
.arc small{color:var(--accent);font-weight:700;font-size:12px;text-align:end}
.arc p{grid-column:1/-1;color:var(--ink2);font-size:13.5px}

/* contact */
.contact{position:relative;overflow:hidden;margin:90px 5vw 40px;padding:90px 6vw;border-radius:44px;background:var(--deep);color:#F5EEE1;text-align:center}
.contact .pattern{opacity:.07}
.contact h2,.contact p,.contact .cta{position:relative}
.contact p{opacity:.85;margin-top:12px}
.contactline{font-size:14px}
footer{text-align:center;color:var(--ink2);font-size:13px;padding:24px 0 40px}

/* modal */
.modal{position:fixed;inset:0;z-index:80;background:rgba(10,20,16,.6);backdrop-filter:blur(6px);display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;padding:4vh 4vw;opacity:0;pointer-events:none;transition:opacity .3s}
.modal.open{opacity:1;pointer-events:auto}
.sheet{position:relative;width:min(1100px,100%);background:var(--paper);border-radius:34px;padding:38px;transform:translateY(40px);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.modal.open .sheet{transform:none}
.close{position:absolute;top:18px;inset-inline-end:18px;width:42px;height:42px;border-radius:14px;border:1px solid var(--line);background:var(--card);font-size:24px}
.m-head{display:flex;gap:16px;align-items:center;margin-bottom:14px;padding-inline-end:50px}
.m-head img,.m-head .init{width:70px;height:70px;border-radius:20px;object-fit:contain;background:#fff;border:1px solid var(--line);flex:none}
.m-head .init{display:grid;place-items:center;background:var(--teal);color:#fff;font-family:"Montserrat Alternates";font-weight:800;font-size:22px}
.m-head h2{font-size:clamp(28px,3.4vw,42px)}
.m-sum{font-size:17px;color:var(--ink2);max-width:820px}
.m-apps{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0 6px}
.m-app{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:18px;background:var(--card);border:1px solid var(--line)}
.m-app img{width:44px;height:44px;border-radius:12px}
.m-app b{display:block;font-size:14px;margin-bottom:4px}
.gallery{display:flex;gap:14px;overflow-x:auto;padding:18px 2px;scroll-snap-type:x mandatory}
.gallery img{height:430px;width:auto;border-radius:22px;border:1px solid var(--line);scroll-snap-align:start;cursor:zoom-in;transition:transform .3s;flex:none}
.gallery img.wide{height:330px}
.gallery img:hover{transform:translateY(-4px)}
.pcs{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:10px 0 14px}
.pcs div,.box{padding:20px;border-radius:22px;background:var(--card);border:1px solid var(--line)}
.pcs h4,.box h4{font-size:13px;color:var(--accent);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em}
[lang=ar] .pcs h4,[lang=ar] .box h4{letter-spacing:0}
.pcs p{color:var(--ink2);font-size:14.5px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.box ul{padding-inline-start:18px;color:var(--ink2)}
.box .role{font-weight:700;margin-bottom:8px}
.deliv{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.deliv span{padding:6px 11px;border-radius:10px;background:color-mix(in srgb,var(--teal) 16%,transparent);font-size:13px;font-weight:600}
.m-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.nda{padding:18px;border-radius:18px;border:1.5px dashed var(--line);color:var(--ink2);margin:18px 0}
.lightbox{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.9);display:none;place-items:center;padding:3vw;cursor:zoom-out}
.lightbox.open{display:grid}
.lightbox img{max-height:92vh;border-radius:16px}

/* reveal */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}
body.paused *,body.paused *:before{animation-play-state:paused!important}

@media (max-width:980px){
  .hero{grid-template-columns:1fr;align-content:center;gap:10px;padding:76px 6vw 2vh}.hero-art{width:min(210px,52vw)!important}.statement{font-size:18px}.lead,.based,.hero .cta .store:not(.dark){display:none}

  .links{display:none}.tools{margin-inline-start:auto}
  .hero{grid-template-columns:1fr;min-height:auto;padding-top:30px}
  .hero-art{width:min(300px,76vw);order:-1;margin-bottom:10px}
  .stats{grid-template-columns:repeat(2,1fr)}.stat:nth-child(2){border-inline-end:0}.stat:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .process{height:auto}.sticky{position:relative;height:auto;grid-template-columns:1fr}
  .panel{height:70vh}.story{margin:0;border-radius:40px 40px 0 0;margin-top:-40px}.steps p{max-height:none;margin-top:6px}.steps h3{opacity:1}.dots{display:none}
  .job{grid-template-columns:1fr;gap:6px}
  .pcs,.two{grid-template-columns:1fr}
  .sheet{padding:24px}.gallery img{height:340px}
  .r1{display:none}
}
@media (max-width:560px){#cvbtn{display:none}.floaters{inset:-6px}.floaters img{width:44px;height:44px;border-radius:13px}.sticker{width:84px;height:84px;font-size:18px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.film{height:auto;margin-top:0}.stage{position:relative;height:auto;min-height:100vh}.disc,.disc-pat,.gather-head,.flock,.scrollhint{display:none}.hero{opacity:1;transform:none}.reveal,.wordmark span{opacity:1;transform:none}}

/* ---------- film: scroll-driven hero, same technique as the Olfa reference ---------- */
.film{position:relative;height:330vh;margin-top:-66px}
.stage{position:sticky;top:0;height:100vh;overflow:hidden}
.disc{position:absolute;left:var(--dx,70%);top:var(--dy,50%);width:var(--dsz,3000px);height:var(--dsz,3000px);translate:-50% -50%;border-radius:50%;background:var(--teal);z-index:2;transform:scale(var(--wipe,0))}
.disc-pat{position:absolute;inset:0;z-index:3;opacity:var(--pat,0);pointer-events:none;overflow:hidden}
.disc-pat .pattern{opacity:.14}
.gather-head{position:absolute;z-index:4;inset-inline:0;top:17vh;text-align:center;color:#F5EEE1;padding:0 6vw;opacity:var(--head,0);transform:translateY(calc((1 - var(--head,0)) * 50px));pointer-events:none}
.gather-head h2{font-size:clamp(38px,5.4vw,76px);text-shadow:.05em .05em 0 rgba(0,0,0,.18)}
.gather-head p{max-width:560px;margin:12px auto 0;opacity:.85}
.flock{position:absolute;inset:0;z-index:5;pointer-events:none}
.flock a{position:absolute;left:0;top:0;width:var(--sz,64px);height:var(--sz,64px);pointer-events:auto;
  opacity:calc(var(--o0,1) + (1 - var(--o0,1)) * min(1, var(--gather,0) * 3));
  transform:translate(calc(var(--sx) + (var(--ex) - var(--sx)) * var(--gather,0)), calc(var(--sy) + (var(--ey) - var(--sy)) * var(--gather,0))) rotate(calc(var(--r,0deg) * (1 - var(--gather,0)))) scale(calc(1 + var(--grow,.2) * var(--gather,0)))}
.flock .ico{display:grid;place-items:center;width:100%;height:100%;border-radius:28%;overflow:hidden;border:3px solid #FBF7EF;background:#FBF7EF;box-shadow:0 16px 30px -14px rgba(0,0,0,.55);animation:bob 7s ease-in-out infinite;animation-delay:var(--d,0s);transition:transform .25s}
.flock a:hover .ico{transform:scale(1.12) rotate(-4deg)}
.flock img{width:100%;height:100%;object-fit:cover}
.flock .rb{background:#d71f3f;color:#fff;font-family:"Montserrat Alternates";font-weight:800}
.flock b{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);white-space:nowrap;max-width:calc(var(--sz) * 1.6);overflow:hidden;text-overflow:ellipsis;text-align:center;font-size:11.5px;font-weight:700;color:#F5EEE1;opacity:calc((var(--gather,0) - .85) * 6.6)}
.scrollhint{position:absolute;z-index:6;bottom:26px;left:50%;width:26px;height:42px;margin-left:-13px;border:2px solid var(--ink);border-radius:14px;opacity:calc(1 - var(--out,0) * 3)}
.scrollhint span{position:absolute;left:50%;top:8px;width:4px;height:8px;margin-left:-2px;border-radius:2px;background:var(--ink);animation:wheel 1.6s ease-in-out infinite}
@keyframes wheel{0%{opacity:0;transform:translateY(-4px)}40%{opacity:1}100%{opacity:0;transform:translateY(12px)}}
.film + .stats{position:relative;z-index:2;margin:-50px 0 0;padding:0 5vw;background:var(--paper);border-radius:46px 46px 0 0;border:0}
.film + .stats .stat{border-bottom:1px solid var(--line)}
.no-film .film{height:auto;margin-top:0}.no-film .stage{position:relative;height:auto;min-height:100vh}.no-film .disc,.no-film .disc-pat,.no-film .gather-head,.no-film .flock,.no-film .scrollhint{display:none}

/* ---------- always-visible CTAs ---------- */
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}
.btn svg,.dock svg,.mbar svg{width:16px;height:16px;fill:currentColor;flex:none}
.dock{position:fixed;z-index:55;inset-inline-start:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:8px}
.dock a{position:relative;display:grid;place-items:center;width:46px;height:46px;border-radius:15px;background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow);transition:transform .2s,background .2s,color .2s}
.dock a:hover{transform:translateX(4px);background:var(--ink);color:var(--paper)}
[dir=rtl] .dock a:hover{transform:translateX(-4px)}
.dock a.cv{background:var(--accent);color:#fff;border-color:transparent}
.dock a.wa{background:#1fa855;color:#fff;border-color:transparent}
.dock a span{position:absolute;inset-inline-start:56px;white-space:nowrap;padding:6px 10px;border-radius:9px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:700;opacity:0;transform:translateX(-6px);pointer-events:none;transition:.2s}
[dir=rtl] .dock a span{transform:translateX(6px)}
.dock a:hover span{opacity:1;transform:none}
.dock svg{width:19px;height:19px}
.mbar{display:none;position:fixed;z-index:70;inset-inline:10px;bottom:10px;grid-template-columns:repeat(3,1fr);gap:6px;padding:6px;border-radius:20px;background:var(--ink);box-shadow:0 20px 40px -12px rgba(0,0,0,.5)}
.mbar a{display:flex;align-items:center;justify-content:center;gap:6px;padding:12px 4px;border-radius:15px;color:var(--paper);font-weight:700;font-size:12.5px;white-space:nowrap}
.mbar a.wa{background:#1fa855;color:#fff}.mbar a.cv{background:var(--accent);color:#fff}

/* ---------- GitHub-style profile ---------- */
.mono{font-family:"JetBrains Mono",ui-monospace,monospace}
.gh-wrap{display:grid;grid-template-columns:290px 1fr;gap:34px;align-items:start}
.gh-side img{width:100%;aspect-ratio:1;border-radius:50%;object-fit:cover;object-position:50% 18%;border:1px solid var(--line)}
.gh-side h3{font-size:25px;margin-top:16px}
.gh-side .handle{color:var(--ink2);font-size:17px}
.gh-side .bio{margin:12px 0 14px}
.gh-side .btn{width:100%;justify-content:center;border-radius:8px}
.gh-counts{display:flex;flex-wrap:wrap;gap:4px 14px;margin:14px 0;font-size:14px;color:var(--ink2)}
.gh-counts b{color:var(--ink)}
.gh-meta{list-style:none;display:flex;flex-direction:column;gap:7px;font-size:14px}
.gh-meta li{display:flex;gap:8px;align-items:center}
.gh-meta svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;color:var(--ink2);flex:none}
.gh-box{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:16px 18px;margin-bottom:18px}
.gh-h{font-size:15px;font-weight:600;margin-bottom:12px;font-family:var(--fb)}
.pinned{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
.repo{border:1px solid var(--line);border-radius:10px;background:var(--card);padding:15px 16px;display:flex;flex-direction:column;gap:8px;cursor:pointer;transition:border-color .2s,transform .2s}
.repo:hover{border-color:var(--teal);transform:translateY(-3px)}
.repo .t{display:flex;align-items:center;gap:8px}
.repo .t svg{width:16px;height:16px;fill:var(--ink2);flex:none}
.repo .t a{color:var(--teal);font-weight:700;font-size:14.5px}
.repo .pub{margin-inline-start:auto;font-size:11px;font-weight:600;padding:1px 8px;border:1px solid var(--line);border-radius:999px;color:var(--ink2)}
.repo p{font-size:13px;color:var(--ink2);flex:1}
.repo .f{display:flex;gap:14px;font-size:12px;color:var(--ink2);align-items:center}
.dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-inline-end:5px;vertical-align:-1px}
.cal{display:grid;grid-template-columns:40px repeat(12,minmax(0,18px));justify-content:start;column-gap:5px;row-gap:5px;overflow-x:auto;font-size:11px;color:var(--ink2);direction:ltr}
.cal i{aspect-ratio:1;border-radius:4px;background:var(--paper2);outline:1px solid rgba(0,0,0,.04);outline-offset:-1px;transform:scale(0);transition:transform .35s cubic-bezier(.2,.9,.3,1.4)}
.cal.in i{transform:none}
.cal i[data-l="1"]{background:color-mix(in srgb,var(--teal) 32%,var(--paper2))}
.cal i[data-l="2"]{background:color-mix(in srgb,var(--teal) 55%,var(--paper2))}
.cal i[data-l="3"]{background:color-mix(in srgb,var(--teal) 78%,var(--paper2))}
.cal i[data-l="4"]{background:var(--teal)}
.cal i.x{visibility:hidden}
.cal .yl{align-self:center}
.legend{display:flex;justify-content:flex-end;align-items:center;gap:4px;font-size:11px;color:var(--ink2);margin-top:10px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block}
.lbar{display:flex;height:9px;border-radius:6px;overflow:hidden;gap:2px;margin-bottom:12px}
.lbar span{display:block;height:100%;width:0;transition:width 1.2s cubic-bezier(.2,.8,.2,1)}
.llist{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px}
.llist b{font-weight:600}.llist small{color:var(--ink2)}
.term{border-radius:10px;overflow:hidden;background:#0d1117;color:#c9d1d9;border:1px solid #30363d;direction:ltr;text-align:left}
.term .bar{display:flex;gap:7px;align-items:center;padding:10px 14px;background:#161b22;border-bottom:1px solid #30363d;font-size:12px;color:#8b949e}
.term .bar i{width:11px;height:11px;border-radius:50%;background:#ff5f57}.term .bar i:nth-child(2){background:#febc2e}.term .bar i:nth-child(3){background:#28c840}
.term .bar span{margin-left:8px}
.term pre{padding:16px 18px;font-size:13px;line-height:1.75;white-space:pre-wrap;min-height:260px}
.term .h{color:#e3b341}.term .p{color:#7ee787}.term .c{color:#8b949e}.term .ref{color:#79c0ff}
.term .cur{display:inline-block;width:8px;height:15px;background:#c9d1d9;vertical-align:-2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.cal i{transform:none}}

.cal span:not(.yl){font-size:10px}
.gh-row{display:grid;grid-template-columns:auto 1fr;gap:18px}
.gh-row .gh-box{margin-bottom:18px}
.gh-note{font-size:12.5px;color:var(--ink2);margin-top:10px;max-width:42ch}
@media (max-width:980px){.gh-row{grid-template-columns:1fr}}
@media (max-width:980px){
  .film{height:250vh}.dock,#navWa,#navMail{display:none}.mbar{display:grid}body{padding-bottom:84px}
  .gather-head{top:12vh}.gh-wrap{grid-template-columns:1fr}.pinned{grid-template-columns:1fr}
  .gh-side{display:grid;grid-template-columns:96px 1fr;gap:4px 16px;align-items:center}.gh-side img{grid-row:span 2}.gh-side h3{margin:0}.gh-side>.bio,.gh-side>.btn,.gh-side>.gh-counts,.gh-side>.gh-meta{grid-column:1/-1}
}

/* ---------- flagship: Nubni ---------- */
.flag{padding:90px 5vw 30px}
.flag-in{position:relative;overflow:hidden;border-radius:34px;padding:56px 48px 40px;background:#0b0d1a;color:#e9ecff;isolation:isolate}
.flag-in::before{content:"";position:absolute;inset:-30% -10% auto auto;width:70%;height:90%;background:radial-gradient(closest-side,rgba(124,92,255,.45),transparent 70%);z-index:-1;animation:glow 9s ease-in-out infinite alternate}
.flag-in::after{content:"";position:absolute;inset:auto auto -35% -10%;width:60%;height:80%;background:radial-gradient(closest-side,rgba(34,211,238,.32),transparent 70%);z-index:-1;animation:glow 11s ease-in-out infinite alternate-reverse}
@keyframes glow{to{transform:translate(-8%,10%) scale(1.15)}}
.flag-top{display:grid;grid-template-columns:.9fr 1.1fr;gap:44px;align-items:center}
.flag-tag{display:inline-block;padding:7px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);font-size:12.5px;font-weight:700;letter-spacing:.3px}
.flag-copy h2{display:flex;align-items:center;gap:14px;margin:18px 0 12px;font-size:clamp(46px,6vw,84px);line-height:1;background:linear-gradient(90deg,#8b6cff,#22d3ee);-webkit-background-clip:text;background-clip:text;color:transparent}
.flag-copy h2 img{width:.9em;height:.9em;border-radius:22%;background:#fff;padding:4px}
.flag-copy p{font-size:17px;line-height:1.65;color:#c3c8e8;max-width:46ch}
.flag-stack{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 24px}
.flag-stack span{font-family:"JetBrains Mono",monospace;font-size:12px;padding:5px 10px;border-radius:8px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12)}
.flag-btn{background:linear-gradient(90deg,#7c5cff,#22d3ee);color:#fff;border:0}
.flag-ghost{background:transparent;color:#e9ecff;border:1.5px solid rgba(255,255,255,.35)}
.flag-shot{border-radius:16px;overflow:hidden;background:#151833;border:1px solid rgba(255,255,255,.12);box-shadow:0 40px 80px -30px rgba(0,0,0,.8),0 0 0 8px rgba(255,255,255,.03);transform:perspective(1200px) rotateX(var(--rx,2deg)) rotateY(var(--ry,-5deg));transition:transform .3s ease-out}
.flag-shot .bz{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#1c2042;font-size:11.5px;color:#9aa1c9}
.flag-shot .bz i{width:10px;height:10px;border-radius:50%;background:#ff5f57}.flag-shot .bz i:nth-child(2){background:#febc2e}.flag-shot .bz i:nth-child(3){background:#28c840}
.flag-shot .bz span{margin:0 auto;padding:3px 40px;border-radius:6px;background:rgba(255,255,255,.06);font-family:"JetBrains Mono",monospace}
.slides{position:relative;aspect-ratio:1440/900}
.slides img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top;opacity:0;transform:scale(1.04);transition:opacity .9s,transform 3.2s ease-out}
.slides img.on{opacity:1;transform:none}
.flag-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:44px 0 26px}
.flag-stats div{padding:18px;border-radius:16px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.flag-stats b{display:block;font-family:"Montserrat Alternates",sans-serif;font-size:34px;background:linear-gradient(90deg,#a48bff,#5ee4f5);-webkit-background-clip:text;background-clip:text;color:transparent}
.flag-stats span{font-size:13px;color:#aab0d6}
.flag-feats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.ff{padding:20px;border-radius:16px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.08);transition:transform .25s,border-color .25s,background .25s}
.ff:hover{transform:translateY(-4px);border-color:rgba(139,108,255,.6);background:rgba(124,92,255,.08)}
.ff svg{width:30px;height:30px;padding:6px;border-radius:9px;fill:none;stroke:#8fe9f7;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;background:rgba(34,211,238,.1);margin-bottom:12px}
.ff h3{font-size:15.5px;margin-bottom:6px;color:#fff}
.ff p{font-size:13px;line-height:1.55;color:#aab0d6}
[dir=rtl] .flag-copy h2{background:linear-gradient(-90deg,#8b6cff,#22d3ee);-webkit-background-clip:text;background-clip:text}
@media (max-width:980px){.flag{padding:60px 4vw 20px}.flag-in{padding:34px 20px 24px;border-radius:24px}.flag-top{grid-template-columns:1fr;gap:28px}.flag-stats,.flag-feats{grid-template-columns:1fr 1fr}.flag-copy p{font-size:15.5px}}
@media (prefers-reduced-motion:reduce){.flag-in::before,.flag-in::after{animation:none}}

/* ---------- hero v2: Nubni demo ---------- */
.film{height:360vh}
.stage{display:flex;align-items:center}
.hx{width:100%;display:grid;grid-template-columns:1fr 1.05fr;gap:4.5vw;align-items:center;padding:96px 5vw 5vh}
.hx-me{display:inline-flex;align-items:center;gap:12px;padding:6px 16px 6px 6px;border:1px solid var(--line);border-radius:999px;background:var(--card)}
[dir=rtl] .hx-me{padding:6px 6px 6px 16px}
.hx-me img{width:42px;height:42px;border-radius:50%;object-fit:cover;object-position:50% 18%}
.hx-me b{display:block;font-size:14.5px}
.hx-me small{display:block;font-size:12px;color:var(--ink2)}
.hx-title{font-family:"Montserrat",var(--fb);font-weight:700;font-size:clamp(38px,4.6vw,68px);line-height:1.04;letter-spacing:-.035em;margin:26px 0 20px;color:var(--ink)}
[dir=rtl] .hx-title{font-family:"Alexandria",sans-serif;letter-spacing:0;line-height:1.25}
.hx-title em{font-style:normal;color:var(--accent);background:linear-gradient(transparent 68%,color-mix(in srgb,var(--accent) 22%,transparent) 68%)}
.hx-lead{font-size:17px;line-height:1.7;color:var(--ink2);max-width:52ch}
.hx-copy .cta{margin:26px 0 30px}
.hx-steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:560px}
.hx-steps li{position:relative;padding-top:12px;font-size:13px;font-weight:600;color:var(--ink2);cursor:pointer;transition:color .3s}
.hx-steps li b{display:block;font-family:"JetBrains Mono",monospace;font-size:11px;margin-bottom:2px;opacity:.6}
.hx-steps li i{position:absolute;top:0;inset-inline:0;height:3px;border-radius:3px;background:var(--line);overflow:hidden}
.hx-steps li i::after{content:"";position:absolute;inset:0;background:var(--accent);transform:scaleX(var(--f));transform-origin:left}
[dir=rtl] .hx-steps li i::after{transform-origin:right}
.hx-steps li.on{color:var(--ink)}
.win{border-radius:18px;overflow:hidden;background:#0d0f1c;border:1px solid #23264a;box-shadow:0 50px 90px -40px rgba(10,12,30,.75);color:#e6e8ff}
.win .bz{display:flex;align-items:center;gap:6px;padding:11px 14px;background:#141733;border-bottom:1px solid #23264a;font-size:11.5px;color:#9097c4;direction:ltr}
.win .bz i{width:10px;height:10px;border-radius:50%;background:#ff5f57}.win .bz i:nth-child(2){background:#febc2e}.win .bz i:nth-child(3){background:#28c840}
.win .bz span{margin-left:10px;padding:3px 12px;border-radius:6px;background:rgba(255,255,255,.06);font-family:"JetBrains Mono",monospace}
.hx-model{margin-left:auto;font-weight:600;color:#b9a8ff;font-size:11px}
.panes{position:relative;height:clamp(330px,46vh,430px)}
.pane{position:absolute;inset:0;padding:28px;opacity:0;transform:translateY(14px) scale(.985);transition:opacity .45s,transform .45s;pointer-events:none}
.hx-demo[data-s="0"] .p0,.hx-demo[data-s="1"] .p1,.hx-demo[data-s="2"] .p2,.hx-demo[data-s="3"] .p3{opacity:1;transform:none}
.p0{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;text-align:center}
.mic{width:76px;height:76px;border-radius:50%;border:0;background:linear-gradient(135deg,#7c5cff,#22d3ee);display:grid;place-items:center;box-shadow:0 0 0 0 rgba(124,92,255,.5);animation:ping 1.8s infinite}
.mic svg{width:30px;height:30px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round}
@keyframes ping{70%{box-shadow:0 0 0 22px rgba(124,92,255,0)}100%{box-shadow:0 0 0 0 rgba(124,92,255,0)}}
.wave{display:flex;gap:4px;align-items:center;height:34px}
.wave i{width:4px;border-radius:3px;background:#8b7bff;height:30%;animation:wv 1.1s ease-in-out infinite}
.wave i:nth-child(3n){animation-delay:-.3s;background:#22d3ee}.wave i:nth-child(3n+1){animation-delay:-.6s}.wave i:nth-child(4n){animation-delay:-.85s}
@keyframes wv{50%{height:100%}}
.say{font-size:19px;line-height:1.55;max-width:30ch;min-height:3.2em;color:#f1f2ff}
.caret{display:inline-block;width:2px;height:1.05em;background:#22d3ee;vertical-align:-3px;margin-inline-start:2px;animation:blink 1s steps(1) infinite}
.p1 h4{font-size:12.5px;letter-spacing:.4px;color:#9aa1d0;margin-bottom:16px;text-transform:uppercase}
.p1 ul{list-style:none;display:flex;flex-direction:column;gap:9px}
.p1 li{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:11px;background:#151937;border:1px solid #23264a;font-size:14px;opacity:.25;transform:translateX(-8px);transition:.35s}
.p1 li.in{opacity:1;transform:none}
.ck{width:18px;height:18px;border-radius:6px;border:1.5px solid #4c5290;flex:none;position:relative}
.p1 li.in .ck{background:#22c55e;border-color:#22c55e}
.p1 li.in .ck::after{content:"";position:absolute;left:5px;top:1.5px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.approve{margin-top:16px;padding:11px 20px;border-radius:10px;border:1px solid #3a3f7a;background:transparent;color:#c9ccff;font-weight:700;font-family:inherit;transition:.3s}
.approve.go{background:linear-gradient(90deg,#7c5cff,#22d3ee);border-color:transparent;color:#fff;box-shadow:0 10px 30px -10px #7c5cff}
.p2{display:grid;grid-template-columns:170px 1fr;gap:0;padding:0;direction:ltr;text-align:left}
.tree{padding:18px 14px;background:#10132a;border-right:1px solid #23264a;display:flex;flex-direction:column;gap:8px;font-family:"JetBrains Mono",monospace;font-size:11px;color:#8087b8}
.tree span{opacity:.25;transition:.3s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree span.in{opacity:1;color:#cfd3ff}
.code{padding:20px;font-family:"JetBrains Mono",monospace;font-size:12.5px;line-height:1.85;color:#d8dbff;white-space:pre;overflow:hidden}
.code span{opacity:0;transition:opacity .25s}.code span.in{opacity:1}
.code .c{color:#6b7299}.code .k{color:#c4a7ff}
.p3{display:flex;align-items:center;justify-content:center;gap:28px}
.ph{width:190px;height:100%;max-height:360px;border-radius:26px;background:#f7f7fb;color:#151833;padding:18px 14px;display:flex;flex-direction:column;gap:10px;box-shadow:0 0 0 6px #1d2042}
.ph-top b{display:block;font-size:17px}.ph-top small{font-size:11.5px;color:#6b6f8f}
.ph-list{display:flex;flex-direction:column;gap:8px;flex:1}
.ph-list div{display:flex;gap:9px;align-items:center;padding:8px;border-radius:11px;background:#fff;box-shadow:0 2px 8px rgba(20,20,60,.06)}
.ph-list i{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#c7b8ff,#9be7f3);flex:none}
.ph-list b{display:block;font-size:11.5px}.ph-list small{font-size:10px;color:#6b6f8f}
.ph-btn{padding:10px;border-radius:11px;text-align:center;font-weight:700;font-size:12.5px;color:#fff;background:linear-gradient(90deg,#7c5cff,#22d3ee)}
.ship{display:flex;flex-direction:column;gap:10px}
.ship span{padding:10px 14px;border-radius:10px;background:#12301f;border:1px solid #1f5a39;color:#7ef0a8;font-size:13px;font-weight:600;opacity:0;transform:translateY(8px);transition:.35s}
.ship span.in{opacity:1;transform:none}
.stat b.txt{font-size:clamp(22px,2.2vw,30px)}
@media (max-width:980px){
  .film{height:auto;margin-top:0}.stage{position:relative;height:auto;display:block}
  .hx{grid-template-columns:1fr;padding:84px 5vw 40px;gap:34px}.hx-title{font-size:clamp(32px,9vw,46px)}.hx-lead{font-size:15.5px}
  .hx-copy .cta .store:not(.dark){display:none}.scrollhint{display:none}.panes{height:340px}.p2{grid-template-columns:1fr}.tree{display:none}.p3{gap:14px}.ph{width:160px}.ship span{font-size:12px;padding:8px 10px}
}
@media (prefers-reduced-motion:reduce){.film{height:auto;margin-top:0}.stage{position:relative;height:auto}}

/* ---------- journey: 3D scroll flythrough ---------- */
.film{height:720vh}
.stage{perspective:1000px;perspective-origin:50% 50%;overflow:hidden;display:block}
.world{position:absolute;inset:0;transform-style:preserve-3d;will-change:transform}
.j{position:absolute;left:50%;top:50%;transform-style:preserve-3d;will-change:transform,opacity;backface-visibility:hidden}
.j-intro{width:min(600px,88vw)}
.j-intro .hx-title{margin:22px 0 18px}
.j-demo{width:min(600px,90vw)}
.j-demo .hx-steps{margin:18px auto 0;max-width:600px}
.j-chip{padding:9px 15px;border-radius:12px;background:var(--card);border:1px solid var(--line);font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;box-shadow:0 18px 40px -20px rgba(0,0,0,.4)}
.j-chip.ai{background:#0d0f1c;color:#c9bcff;border-color:#2b2f5c}
.j-chip.ok{background:#12301f;color:#7ef0a8;border-color:#1f5a39}
.j-card{width:min(300px,56vw);border-radius:16px;overflow:hidden;background:var(--card);border:1px solid var(--line);box-shadow:0 40px 70px -30px rgba(0,0,0,.55);cursor:pointer}
.j-card img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top}
.j-card.ph img{aspect-ratio:9/16;object-fit:cover}
.j-card.ph{width:min(170px,34vw)}
.j-card span{display:block;padding:10px 12px;font-size:13px;font-weight:700}
.j-card small{display:block;font-weight:500;color:var(--ink2);font-size:11.5px}
.j-title{text-align:center;width:min(900px,92vw);pointer-events:none}
.j-title h2{font-size:clamp(40px,6.4vw,96px);line-height:1;letter-spacing:-.035em}
[dir=rtl] .j-title h2{letter-spacing:0;line-height:1.2}
.j-title h2 em{font-style:normal;color:var(--accent)}
.j-title p{margin-top:16px;font-size:17px;color:var(--ink2)}
.j-end .cta{justify-content:center;margin-top:26px;pointer-events:auto}
.j-hud{position:absolute;z-index:9;inset-inline-end:28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:18px}
.j-hud button{display:flex;align-items:center;gap:10px;flex-direction:row-reverse;background:none;border:0;font-family:inherit;color:var(--ink2);font-size:12px;font-weight:700;cursor:pointer}
.j-hud i{width:10px;height:10px;border-radius:50%;border:2px solid currentColor;transition:.3s}
.j-hud span{opacity:0;transform:translateX(6px);transition:.3s}
.j-hud button.on{color:var(--accent)}.j-hud button.on i{background:currentColor;transform:scale(1.3)}
.j-hud button.on span,.j-hud button:hover span{opacity:1;transform:none}
.j-bar{position:absolute;z-index:9;left:0;bottom:0;height:3px;width:100%;background:var(--accent);transform-origin:left;transform:scaleX(var(--jp,0))}
[dir=rtl] .j-bar{transform-origin:right}
.j-fog{position:absolute;inset:0;pointer-events:none;z-index:8;background:radial-gradient(ellipse at center,transparent 55%,color-mix(in srgb,var(--paper) 85%,transparent) 100%)}
@media (max-width:980px){.film{height:560vh;margin-top:-66px}.stage{position:sticky;height:100vh}.j-hud{inset-inline-end:10px}.j-hud span{display:none}.j-title p{font-size:15px}.j-intro .hx-lead{font-size:15px}.j-intro .cta .store:not(.dark){display:inline-flex}.j-intro .cta{gap:8px}.j-intro .store{padding:11px 14px;font-size:13px}}
.no-film .film{height:auto;margin-top:0}.no-film .stage{position:relative;height:auto;perspective:none}
.no-film .world{position:relative;display:flex;flex-direction:column;align-items:center;gap:40px;padding:110px 5vw 60px}
.no-film .j{position:relative;left:auto;top:auto;transform:none!important;opacity:1!important;visibility:visible!important}
.no-film .j-chip,.no-film .j-card,.no-film .j-hud,.no-film .j-bar,.no-film .j-fog,.no-film .scrollhint{display:none}
@media (max-width:980px){.pane{padding:20px}.p1 ul{gap:6px}.p1 li{padding:8px 12px;font-size:13px}.p1 h4{margin-bottom:10px}.approve{margin-top:10px;padding:9px 16px}}
