body{margin:0;background:#070A12}
a{color:#3FD3BF}a:hover{color:#8AE9DC}
.th{--ink:#070A12;--ink2:#0D1220;--paper:#F2F4F7;--teal:#2BC4B0;--teal-d:#0B7F72;--vio:#7B5CE0;--vio-l:#A891F5;--vio-d:#5136B8;--txt:#EEF1F7;--mut:#A3ACBE;--line:rgba(255,255,255,.09);font-family:'Instrument Sans',system-ui,sans-serif;color:var(--txt);background:var(--ink);overflow-x:hidden}
.th *{box-sizing:border-box}
.disp{font-family:'Space Grotesk','Segoe UI',sans-serif;letter-spacing:-.025em}
h1.disp,h2.disp{font-weight:600 !important}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace}
.wrap{max-width:1240px;margin:0 auto;padding:0 32px}
.grain{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse 80% 70% at 60% 40%,#000 30%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse 80% 70% at 60% 40%,#000 30%,transparent 80%)}
.paper .grain{background-image:linear-gradient(rgba(10,14,22,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(10,14,22,.06) 1px,transparent 1px)}

/* nav */
.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:rgba(7,10,18,.72);border-bottom:1px solid var(--line)}
.navlinks a{color:var(--mut);text-decoration:none;font-size:14px;padding:10px 4px;transition:color .2s}
.navlinks a:hover{color:#fff}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;font-weight:600;font-size:15px;text-decoration:none;transition:transform .25s,box-shadow .25s,background .25s}
.btn:hover{transform:translateY(-2px)}
.btn-p{background:var(--teal);color:#04201C}
.btn-p:hover{color:#04201C;box-shadow:0 10px 40px -8px rgba(43,196,176,.6)}
.btn-g{border:1px solid rgba(255,255,255,.22);color:#fff}
.btn-g:hover{color:#fff;border-color:var(--vio-l);box-shadow:0 10px 40px -10px rgba(123,92,224,.7)}

/* label */
.lbl{display:flex;align-items:center;gap:14px;font-family:'JetBrains Mono',monospace;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.paper .lbl{color:#4A5263}
.rungs{display:flex;flex-direction:column;gap:4px}
.rungs i{display:block;width:18px;height:3px;border-radius:3px;background:currentColor;transform:skewY(-28deg);opacity:.7}
.rungs i:nth-child(1){background:var(--teal)}.rungs i:nth-child(3){background:var(--vio)}

/* hero entrance */
.up{opacity:0;transform:translateY(28px);animation:up 1s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes up{to{opacity:1;transform:none}}
.d1{animation-delay:.1s}.d2{animation-delay:.25s}.d3{animation-delay:.4s}.d4{animation-delay:.55s}.d5{animation-delay:.7s}
.grad-t{background:linear-gradient(90deg,var(--teal),var(--vio-l));-webkit-background-clip:text;background-clip:text;color:transparent}

/* helix */
.helix{position:relative;display:flex;flex-direction:column;gap:6px;transform:rotate(22deg)}
.hx-row{position:relative;height:14px;width:320px;display:flex;align-items:center;justify-content:center}
.hx-bar{position:absolute;left:50%;width:240px;margin-left:-120px;height:4px;border-radius:4px;background:linear-gradient(90deg,rgba(43,196,176,.55),rgba(210,214,224,.35),rgba(123,92,224,.55));animation:hxbar 8s infinite}
.hx-dot{position:absolute;left:50%;width:16px;height:16px;margin-left:-8px;border-radius:50%;animation:hx 8s infinite}
.hx-dot.a{background:radial-gradient(circle at 35% 30%,#9AF2E6,var(--teal) 55%,var(--teal-d));box-shadow:0 0 18px rgba(43,196,176,.7)}
.hx-dot.b{background:radial-gradient(circle at 35% 30%,#D3C6FF,var(--vio) 55%,var(--vio-d));box-shadow:0 0 18px rgba(123,92,224,.75)}
@keyframes hx{
0%{transform:translateX(-120px) scale(.9);opacity:.95;z-index:1;animation-timing-function:cubic-bezier(.12,0,.39,0)}
25%{transform:translateX(0) scale(1.3);opacity:1;z-index:3;animation-timing-function:cubic-bezier(.61,1,.88,1)}
50%{transform:translateX(120px) scale(.9);opacity:.95;z-index:1;animation-timing-function:cubic-bezier(.12,0,.39,0)}
75%{transform:translateX(0) scale(.55);opacity:.35;z-index:0;animation-timing-function:cubic-bezier(.61,1,.88,1)}
100%{transform:translateX(-120px) scale(.9);opacity:.95;z-index:1}}
@keyframes hxbar{
0%{transform:scaleX(1);animation-timing-function:cubic-bezier(.12,0,.39,0)}
25%{transform:scaleX(0);animation-timing-function:cubic-bezier(.61,1,.88,1)}
50%{transform:scaleX(1);animation-timing-function:cubic-bezier(.12,0,.39,0)}
75%{transform:scaleX(0);animation-timing-function:cubic-bezier(.61,1,.88,1)}
100%{transform:scaleX(1)}}
.orb{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none}
.orb.t{background:rgba(43,196,176,.28)}.orb.v{background:rgba(123,92,224,.32)}
.float{animation:float 9s ease-in-out infinite}
@keyframes float{50%{transform:translate(20px,-24px)}}

/* marquee */
.mq{overflow:hidden;border-block:1px solid var(--line);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.mq-track{display:flex;gap:48px;width:max-content;animation:mq 38s linear infinite;padding:22px 0}
.mq-track span{font-family:'Space Grotesk',sans-serif;font-size:22px;font-weight:500;white-space:nowrap;color:#C9CFDB;display:flex;align-items:center;gap:48px}
.mq-track span b{font-family:'JetBrains Mono',monospace;font-weight:400;font-size:13px;color:var(--teal);letter-spacing:.2em}
@keyframes mq{to{transform:translateX(-50%)}}
.seq{font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.35em;color:rgba(255,255,255,.18);white-space:nowrap;animation:mq 60s linear infinite;width:max-content}

/* scroll reveal */
@supports (animation-timeline: view()){
.rv{animation:rv linear both;animation-timeline:view();animation-range:entry 0% entry 45%}
.rv-l{animation:rvl linear both;animation-timeline:view();animation-range:entry 0% entry 50%}
.rv-s{animation:rvs linear both;animation-timeline:view();animation-range:entry 0% cover 40%}
}
@keyframes rv{from{opacity:0;transform:translateY(48px)}to{opacity:1;transform:none}}
@keyframes rvl{from{opacity:0;transform:translateX(-60px)}to{opacity:1;transform:none}}
@keyframes rvs{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:none}}

/* pillars */
.pillar{position:relative;border-radius:28px;padding:40px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(160deg,rgba(255,255,255,.04),rgba(255,255,255,0));transition:transform .4s,border-color .4s}
.pillar:hover{transform:translateY(-6px)}
.pillar.t:hover{border-color:rgba(43,196,176,.6)}.pillar.v:hover{border-color:rgba(168,145,245,.6)}
.strand{position:absolute;top:-30px;right:-40px;width:220px;height:340px;border-radius:50%;border:14px solid;opacity:.18;transform:rotate(28deg)}
.chip{display:inline-flex;align-items:center;min-height:32px;padding:0 14px;border-radius:999px;font-family:'JetBrains Mono',monospace;font-size:12px;border:1px solid var(--line);color:#D6DBE6}
.paper .chip{border-color:rgba(10,14,22,.16);color:#2A3040}

/* bridge */
.bridge{display:flex;align-items:center;gap:0}
.bridge i{flex:1;height:3px;border-radius:3px;background:rgba(210,214,224,.3);transform:skewY(-20deg);margin:0 5px;animation:pulse 2.4s ease-in-out infinite}
@keyframes pulse{50%{background:rgba(43,196,176,.9)}}

/* light sections */
.paper{background:var(--paper);color:#0B0E16}
.paper .mut{color:#4A5263}
.step{position:relative;padding:32px 0 0;border-top:2px solid #0B0E16}
.step .n{font-family:'Space Grotesk',sans-serif;font-size:64px;font-weight:600;line-height:1;-webkit-text-stroke:1.5px #0B0E16;color:transparent}

/* discovery */
.prow{display:grid;grid-template-columns:72px minmax(0,1fr);gap:24px;padding:28px 0;border-top:1px solid var(--line);transition:background .3s,padding .3s}
.prow:hover{background:linear-gradient(90deg,rgba(123,92,224,.12),transparent);padding-left:12px}
.prow .k{font-family:'JetBrains Mono',monospace;color:var(--vio-l);font-size:13px;padding-top:6px}
.panel{position:relative;border-radius:28px;border:1px solid var(--line);background:var(--ink2);overflow:hidden}
.fdot{width:10px;height:10px;border-radius:50%;background:var(--vio);animation:tw 3s ease-in-out infinite}
.fdot.s{background:var(--vio-l)}
.fdot.r{background:var(--teal);width:14px;height:14px;box-shadow:0 0 16px var(--teal)}
@keyframes tw{0%,100%{opacity:.25;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}
.gate{width:2px;align-self:stretch;background:repeating-linear-gradient(var(--line) 0 6px,transparent 6px 12px)}
.spin{animation:spin 40s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.term{font-family:'JetBrains Mono',monospace;font-size:13px;line-height:1.9;color:#C9CFDB}
.term .c{color:#6E7891}.term .t{color:var(--teal)}.term .v{color:var(--vio-l)}
.caret{display:inline-block;width:8px;height:15px;background:var(--teal);vertical-align:-2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* diagnostics tabs */
.tab{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;align-items:start;padding:22px 24px;border-radius:20px;border:1px solid rgba(10,14,22,.12);transition:all .3s;min-height:44px}
.tab:hover{border-color:rgba(10,14,22,.4)}
.tab:focus-visible{outline:3px solid var(--vio);outline-offset:2px}
.tab .tn{font-family:'JetBrains Mono',monospace;font-size:13px;color:#4A5263;padding-top:4px}
.tab h3{margin:0;font-family:'Space Grotesk',sans-serif;font-size:18px;font-weight:500;letter-spacing:-.01em}
.tab p{margin:8px 0 0;font-size:15px;line-height:1.55;color:#4A5263}
.viz{position:relative;border-radius:28px;background:#0B0E16;color:var(--txt);overflow:hidden;min-height:440px;padding:36px;display:flex;flex-direction:column;gap:20px}
.draw{stroke-dasharray:600;stroke-dashoffset:600;animation:draw 2.6s cubic-bezier(.4,0,.2,1) forwards}
.draw.l2{animation-delay:.35s}.draw.l3{animation-delay:.7s}
@keyframes draw{to{stroke-dashoffset:0}}
.flow{stroke-dasharray:6 14;animation:flow 1.6s linear infinite}
@keyframes flow{to{stroke-dashoffset:-40}}
.band{animation:band 2.4s ease-in-out infinite}
@keyframes band{0%,100%{opacity:.35}50%{opacity:1}}
.base{display:inline-flex;align-items:center;justify-content:center;width:30px;height:38px;border-radius:8px;font-family:'JetBrains Mono',monospace;font-size:15px;background:rgba(255,255,255,.05);color:#C9CFDB}
.base.m{background:rgba(43,196,176,.18);color:#8AE9DC;box-shadow:inset 0 0 0 1px rgba(43,196,176,.6);animation:band 2s ease-in-out infinite}

/* pipeline */
.stage{position:relative;display:flex;flex-direction:column;gap:10px;padding-top:28px}
.stage::before{content:"";position:absolute;top:8px;left:0;right:0;height:2px;background:var(--line)}
.stage .pt{position:absolute;top:0;left:0;width:18px;height:18px;border-radius:50%;border:2px solid var(--teal);background:var(--teal)}
.stage.now .pt{background:var(--ink);border-color:var(--vio-l);box-shadow:0 0 0 0 rgba(168,145,245,.7);animation:ping 2s infinite}
.stage.next .pt{border-style:dashed;border-color:#4A5263;background:transparent}
.stage.done::before{background:var(--teal)}
.stage.now::before{background:linear-gradient(90deg,var(--vio-l),transparent)}
@keyframes ping{70%{box-shadow:0 0 0 14px rgba(168,145,245,0)}100%{box-shadow:0 0 0 0 rgba(168,145,245,0)}}
.app{border-radius:24px;padding:32px;border:1px solid var(--line);display:flex;flex-direction:column;gap:14px;transition:background .3s,transform .3s}
.app:hover{background:rgba(255,255,255,.03);transform:translateY(-4px)}
.ico{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:rgba(43,196,176,.1);color:var(--teal)}

/* dxbio */
.venn{position:relative;width:380px;height:360px;max-width:100%}
.vc{position:absolute;width:210px;height:210px;border-radius:50%;mix-blend-mode:screen;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.vc.c1{left:30px;top:10px;background:rgba(43,196,176,.42);animation:o1 10s ease-in-out infinite}
.vc.c2{right:30px;top:10px;background:rgba(123,92,224,.5);animation:o2 10s ease-in-out infinite}
.vc.c3{left:85px;bottom:0;background:rgba(80,140,255,.38);animation:o3 10s ease-in-out infinite}
@keyframes o1{50%{transform:translate(14px,10px)}}
@keyframes o2{50%{transform:translate(-14px,10px)}}
@keyframes o3{50%{transform:translate(0,-14px)}}
.path{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line)}
.path em{font-family:'Instrument Sans',sans-serif;font-size:20px}

/* team */
.mem{position:relative;cursor:pointer;display:flex;align-items:center;gap:16px;padding:18px 44px 18px 20px;min-height:148px;border-radius:20px;background:#fff;border:1px solid rgba(10,14,22,.08);transition:transform .35s,box-shadow .35s}
.mem:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 24px 50px -24px rgba(81,54,184,.45)}
.av{flex:none;width:72px;height:72px;border-radius:50%;overflow:hidden;background:linear-gradient(160deg,#EEF1F6,#CBD3DF);box-shadow:inset 0 0 0 1px rgba(10,14,22,.06)}
.av img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}
.who{display:flex;flex-direction:column;gap:4px;min-width:0}
.who strong{font-size:17px;line-height:1.25;color:#0B0E16}
.who .role{font-size:12.5px;color:#4A5263;letter-spacing:.04em}
.who .org{font-size:13px;line-height:1.45;color:#4A5263;margin-top:2px;text-wrap:balance}
.team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));grid-auto-rows:1fr;gap:16px}

/* contact */
.cta-big{font-family:'Space Grotesk',sans-serif;font-weight:600;letter-spacing:-.03em;line-height:.98;margin:0}
.addr a{color:var(--txt)}
.foot a{color:var(--mut);text-decoration:none;font-size:14px}.foot a:hover{color:#fff}

.nomo *{animation:none !important}
.nomo .up{opacity:1;transform:none}
.nomo .draw{stroke-dashoffset:0}
@media (prefers-reduced-motion: reduce){.th *{animation:none !important}.th .up{opacity:1;transform:none}.th .draw{stroke-dashoffset:0}}
@media (max-width: 900px){.navlinks{display:none !important}.hide-sm{display:none !important}.wrap{padding:0 20px}.pillar{padding:28px}.viz{padding:24px}}

/* scroll-reveal fallback for browsers without scroll-driven animations */
@supports not (animation-timeline: view()){
.js .rv,.js .rv-l,.js .rv-s{opacity:0;transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1)}
.js .rv{transform:translateY(48px)}.js .rv-l{transform:translateX(-60px)}.js .rv-s{transform:scale(.86)}
.js .in{opacity:1 !important;transform:none !important}
}
.pane[hidden]{display:none !important}
html{scroll-behavior:smooth}

/* scroll-triggered text reveal (added by JS: .tx on text blocks, .w on heading words) */
.js .tx{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1);transition-delay:var(--d,0ms)}
.js .tx.in{opacity:1;transform:none}
.js .tx.words{opacity:1;transform:none;transition:none}
.js .w{display:inline-block;opacity:0;transform:translateY(.65em);transition:opacity .85s cubic-bezier(.2,.8,.2,1),transform .85s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--d,0ms) + var(--w,0) * 45ms)}
.js .tx.in .w{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.js .tx,.js .w{opacity:1 !important;transform:none !important;transition:none !important}}

/* responsive polish */
.nb{white-space:nowrap}
h1.disp,h2.disp,.cta-big{text-wrap:balance}
@media (max-width: 700px){.stage{padding-bottom:22px}.stage:last-child{padding-bottom:0}}
@media (max-width: 900px){
section[id]:not(#home){padding-top:96px !important;padding-bottom:96px !important}
#contact{padding-bottom:48px !important}
.hx-stage{min-height:440px !important}
.helix{transform:rotate(22deg) scale(.78)}
.viz{min-height:0}
}
@media (min-width: 1024px){.hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) !important}}

/* team bios */
.mem::after{content:"";position:absolute;right:20px;top:50%;width:9px;height:9px;margin-top:-6px;border-right:1.5px solid #9AA3B5;border-bottom:1.5px solid #9AA3B5;transform:rotate(-45deg);transition:border-color .3s,transform .3s}
.mem:hover::after{border-color:var(--vio);transform:rotate(-45deg) translate(2px,2px)}
.mem:focus-visible{outline:3px solid var(--vio);outline-offset:3px}
.bio-dlg{border:0;border-radius:28px;padding:40px;width:min(640px,calc(100vw - 32px));max-height:calc(100vh - 32px);background:#fff;color:#0B0E16;box-shadow:0 40px 90px -30px rgba(11,14,22,.5);font-family:'Instrument Sans',system-ui,sans-serif}
.bio-dlg::backdrop{background:rgba(7,10,18,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.bio-dlg[open]{animation:dlg .35s cubic-bezier(.2,.8,.2,1)}
@keyframes dlg{from{opacity:0;transform:translateY(16px) scale(.98)}}
.bio-head{display:flex;align-items:center;gap:20px;margin-bottom:22px;padding-right:40px}
.av-lg{width:104px;height:104px}
.bio-dlg .who strong{font-family:'Space Grotesk',sans-serif;font-size:24px;letter-spacing:-.02em;line-height:1.15}
.bio-dlg .who .role{font-size:13px}
.bio-dlg p{margin:0;font-size:16.5px;line-height:1.7;color:#2A3040}
.bio-close{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(10,14,22,.12);background:#fff;font-size:22px;line-height:1;cursor:pointer;color:#4A5263}
.bio-close:hover{background:#0B0E16;color:#fff;border-color:#0B0E16}
@media (max-width: 600px){.bio-dlg{padding:28px 22px}.bio-head{flex-direction:column;align-items:flex-start;gap:14px}.av-lg{width:84px;height:84px}}
