
body{margin:0;background:#121418}
a{color:#34E00A}a:hover{color:#7CF25A}
details summary{list-style:none;cursor:pointer}
details summary::-webkit-details-marker{display:none}
details[open] .faq-plus{transform:rotate(45deg)}
.num{font-variant-numeric:tabular-nums lining-nums}
@media (max-width: 960px){.nav-links{display:none !important}.hero-mark{display:none !important}}
@media (max-width: 480px){nav[aria-label="Main"] a.num[href^="tel:"]{display:none !important}}
@keyframes ngDrop{from{transform:translateY(-120px)}to{transform:none}}
.ng-drop{animation:ngDrop 1.1s cubic-bezier(.2,.8,.2,1) .2s both}
@media (max-width: 760px){.ng-drop{display:none !important}}
@media (prefers-reduced-motion: reduce){.ng-drop{animation:none !important}}
@keyframes ngIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes ngPop{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.05)}100%{opacity:1;transform:scale(1)}}
@keyframes ngFill{from{width:0}to{width:100%}}
@keyframes ngGlow{to{border-color:#34E00A;background:#18231A}}
@keyframes ngDraw{to{stroke-dashoffset:0}}
@keyframes ngPulse{0%,100%{opacity:.35}50%{opacity:1}}
.ng-in{opacity:0;animation:ngIn .55s cubic-bezier(.2,.7,.2,1) forwards}
.ng-pop{opacity:0;animation:ngPop .5s ease-out forwards}
.ng-fill{width:0;animation:ngFill 1.3s cubic-bezier(.6,0,.3,1) forwards}
.ng-best{animation:ngGlow .5s ease forwards}
.ng-draw{stroke-dasharray:160;stroke-dashoffset:160;animation:ngDraw .9s ease forwards}
.ng-pulse{animation:ngPulse 1.4s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.ng-in,.ng-pop,.ng-fill,.ng-best,.ng-draw,.ng-pulse{animation:none !important;opacity:1 !important;transform:none !important;width:100%;stroke-dashoffset:0}}
@keyframes vScan{0%{top:0;opacity:0}10%{opacity:1}90%{opacity:1}100%{top:100%;opacity:0}}
@keyframes vSlideL{from{opacity:0;transform:translateX(-60px) rotate(-4deg)}to{opacity:1;transform:none}}
@keyframes vSlideUp{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}
@keyframes vStamp{0%{opacity:0;transform:scale(2.6) rotate(-14deg)}60%{opacity:1;transform:scale(.94) rotate(-8deg)}100%{opacity:1;transform:scale(1) rotate(-8deg)}}
@keyframes vRing{0%{transform:scale(.6);opacity:.8}100%{transform:scale(2.4);opacity:0}}
@keyframes vBurst{0%{transform:scaleX(0);opacity:0}30%{opacity:1}100%{transform:scaleX(1);opacity:0}}
@keyframes vTitle{0%{opacity:0;letter-spacing:.3em;filter:blur(8px)}100%{opacity:1;letter-spacing:-.03em;filter:none}}
@keyframes vFlow{from{background-position:0 0}to{background-position:200px 0}}
.v-scan{position:absolute;left:0;right:0;height:2px;background:#34E00A;box-shadow:0 0 18px 4px rgba(52,224,10,.55);animation:vScan 2.2s ease-in-out .6s 2 both}
.v-slideL{animation:vSlideL .7s cubic-bezier(.2,.8,.2,1) both}
.v-up{animation:vSlideUp .6s cubic-bezier(.2,.8,.2,1) both}
.v-stamp{animation:vStamp .7s cubic-bezier(.2,.8,.2,1) both}
.v-ring{animation:vRing 1.6s ease-out 3}
.v-burst{transform-origin:left center;animation:vBurst 1.2s ease-out both}
.v-title{animation:vTitle .9s cubic-bezier(.2,.8,.2,1) both}
.v-flow{background-image:repeating-linear-gradient(90deg,#34E00A 0 14px,transparent 14px 28px);background-size:200px 3px;animation:vFlow 1s linear infinite}
.v-chip:hover{border-color:#34E00A !important;color:#FFFFFF !important}
@media (prefers-reduced-motion: reduce){.v-scan,.v-ring,.v-flow,.v-burst{animation:none !important}.v-slideL,.v-up,.v-stamp,.v-title{animation:none !important;opacity:1 !important}}
/* ---------- Motion polish ---------- */
@keyframes mIn{from{opacity:0;translate:0 44px}to{opacity:1;translate:0 0}}
@keyframes mHero{from{opacity:0;translate:0 28px;filter:blur(6px)}to{opacity:1;translate:0 0;filter:none}}
.m-hero{animation:mHero 1s cubic-bezier(.2,.8,.2,1) both}
@supports (animation-timeline: view()){
section > div > div h2, section > div > h2, #solutions a[href^="Sol-"], #transactions article, #transactions > div > div > div, #reviews figure, #industries a, #insights a, #faq details, #firm h3, #partners h2{animation:mIn linear both;animation-timeline:view();animation-range:entry 0% cover 28%}
}
#solutions a[href^="Sol-"]{transition:background-color .25s ease}
#solutions a[href^="Sol-"]:hover{background-color:#FFFFFF}
#solutions a[href^="Sol-"] > span{transition:transform .3s cubic-bezier(.34,1.56,.64,1),color .2s}
#solutions a[href^="Sol-"]:hover > span:nth-child(2){transform:translateX(14px)}
#solutions a[href^="Sol-"]:hover > span:last-child{transform:translateX(8px);color:#1D7A08}
#transactions article, #reviews figure, #industries a, #insights a{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease}
#transactions article:hover, #reviews figure:hover, #industries a:hover, #insights a:hover{transform:translateY(-6px);box-shadow:0 24px 48px rgba(0,0,0,.18)}
a[href*="jotform.com"], button[type="submit"]{transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease}
a[href*="jotform.com"]:hover, button[type="submit"]:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(52,224,10,.28)}
a[href*="jotform.com"]:active, button[type="submit"]:active{transform:scale(.97)}
@media (prefers-reduced-motion: reduce){.m-hero{animation:none !important}section > div > div h2, section > div > h2, #solutions a[href^="Sol-"], #transactions article, #transactions > div > div > div, #reviews figure, #industries a, #insights a, #faq details, #firm h3, #partners h2{animation:none !important}#transactions article, #reviews figure, #industries a, #insights a, a[href*="jotform.com"], button[type="submit"], #solutions a[href^="Sol-"] > span{transition:none !important;transform:none !important}}
.rv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.rv-feat{grid-column:span 2}
.rv-feat blockquote{font-size:24px !important;line-height:1.45 !important;font-weight:300}
@media (max-width: 1000px){.rv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width: 680px){.rv-grid{grid-template-columns:minmax(0,1fr)}.rv-feat{grid-column:auto}.rv-feat blockquote{font-size:18px !important}}
@keyframes chatUp{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
.chat-panel{animation:chatUp .35s cubic-bezier(.2,.8,.2,1) both}
.chat-msg{animation:ngIn .3s ease-out both}
.chat-opt:hover{border-color:#34E00A !important;color:#FFFFFF !important}
.chat-in:focus{outline:none;border-color:#34E00A !important}
@media (prefers-reduced-motion: reduce){.chat-panel,.chat-msg{animation:none !important}}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid #34E00A;outline-offset:3px;box-shadow:0 0 0 5px #121418}
a,button,summary,label[for]{cursor:pointer}

/* ---------- Motion+ pack ---------- */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:3px;background:#34E00A;box-shadow:0 0 12px rgba(52,224,10,.6);transform-origin:0 50%;transform:scaleX(0);z-index:2147483000;pointer-events:none}
@keyframes ngProg{to{transform:scaleX(1)}}
@supports (animation-timeline: scroll()){body::before{animation:ngProg linear both;animation-timeline:scroll(root)}}
@supports not (animation-timeline: scroll()){body::before{display:none}}
.ng-sky-dim{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 30% 46% at 24% 29%,rgba(10,12,15,.72) 0%,rgba(10,12,15,.45) 45%,rgba(10,12,15,0) 100%)}
.ng-globe-wrap{position:absolute;z-index:0;left:24%;top:29%;width:clamp(240px,31vw,560px);aspect-ratio:1/1;transform:translate(-50%,-50%);pointer-events:none;mix-blend-mode:screen}
.ng-globe-glow{position:absolute;inset:14%;border-radius:50%;background:radial-gradient(circle,rgba(52,224,10,.30) 0%,rgba(52,224,10,.10) 45%,rgba(52,224,10,0) 70%);animation:ngGlowP 5s ease-in-out infinite}
@keyframes ngGlowP{0%,100%{opacity:.6;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
@media (max-width: 760px){.ng-globe-wrap{left:30%;top:27%;width:56vw}}

.ng-hero-img{animation:ngKen 26s ease-in-out infinite alternate;transform-origin:80% 14%}
@keyframes ngKen{from{transform:scale(1.02)}to{transform:scale(1.12) translateX(-1.5%)}}
.ng-shimmer{background:linear-gradient(100deg,#34E00A 0%,#34E00A 38%,#E4FFD8 50%,#34E00A 62%,#34E00A 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent !important;animation:ngShine 5s ease-in-out 1.4s infinite}
@keyframes ngShine{0%{background-position:120% 0}60%,100%{background-position:-120% 0}}
@keyframes ngRing{0%{box-shadow:0 0 0 0 rgba(52,224,10,.55)}100%{box-shadow:0 0 0 18px rgba(52,224,10,0)}}
.ng-cta-pulse{animation:ngRing 2.4s ease-out 1.8s infinite}
a[href*="jotform.com"]{position:relative;overflow:hidden}
a[href*="jotform.com"]::after{content:"";position:absolute;top:0;bottom:0;left:-70%;width:45%;background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.55),rgba(255,255,255,0));transform:skewX(-20deg);transition:left .75s ease;pointer-events:none}
a[href*="jotform.com"]:hover::after{left:135%}
.ng-track{display:inline-flex;align-items:center;gap:28px;padding:18px 0;animation:ngMarq 42s linear infinite;will-change:transform}
.ng-mq-item{font-size:14px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.ng-track > svg{margin-right:0}
.ng-marquee:hover .ng-track{animation-play-state:paused}
@keyframes ngMarq{to{transform:translateX(-50%)}}
.ng-breathe{animation:ngBreathe 3.6s ease-in-out infinite}
@keyframes ngBreathe{0%,100%{box-shadow:0 0 30px rgba(52,224,10,.18)}50%{box-shadow:0 0 80px rgba(52,224,10,.5)}}
@supports (animation-timeline: view()){
section[aria-label="Lower Manhattan skyline"] > img{animation:ngPar linear both;animation-timeline:view();transform-origin:72% 10%}
#firm figure svg{animation:ngSpinIn linear both;animation-timeline:view();animation-range:entry 0% cover 45%}
#solutions a[href^="Sol-"] .num{animation:ngNum linear both;animation-timeline:view();animation-range:entry 10% cover 30%}
}
@keyframes ngPar{from{transform:scale(1.08) translateY(-1%)}to{transform:scale(1.02) translateY(1.5%)}}
@keyframes ngSpinIn{from{opacity:0;transform:rotate(-12deg) scale(.7)}to{opacity:1;transform:none}}
@keyframes ngNum{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
#solutions a[href^="Sol-"]{position:relative}
#solutions a[href^="Sol-"]::before{content:"";position:absolute;left:-18px;top:18px;bottom:18px;width:4px;background:#34E00A;transform:scaleY(0);transform-origin:50% 100%;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
#solutions a[href^="Sol-"]:hover::before{transform:scaleY(1)}
#reviews figure svg{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
#reviews figure:hover svg{transform:scale(1.18) rotate(-8deg)}
@media (prefers-reduced-motion: reduce){body::before,.ng-globe-wrap,.ng-globe-glow,.ng-orbit,.ng-hero-img,.ng-shimmer,.ng-cta-pulse,.ng-track,.ng-breathe,section[aria-label="Lower Manhattan skyline"] > img,#firm figure svg,#solutions a[href^="Sol-"] .num{animation:none !important}.ng-shimmer{color:#34E00A !important;background:none}a[href*="jotform.com"]::after{display:none}}

/* Mobile menu */
nav[aria-label="Main"]{position:relative;z-index:50}
.ng-mnav{display:none}
.ng-mnav>summary{list-style:none;cursor:pointer;width:46px;height:46px;box-sizing:border-box;border:1px solid #3A3F48;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;-webkit-tap-highlight-color:transparent}
.ng-mnav>summary::-webkit-details-marker{display:none}
.ng-mnav>summary::marker{content:""}
.ng-mnav>summary span{display:block;width:20px;height:2px;background:#E9ECEF;transition:transform .2s ease,opacity .2s ease}
.ng-mnav[open]>summary{border-color:#34E00A}
.ng-mnav[open]>summary span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.ng-mnav[open]>summary span:nth-child(2){opacity:0}
.ng-mnav[open]>summary span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.ng-mnav-panel{position:absolute;left:0;right:0;top:100%;z-index:60;background:#121418;border:1px solid #262A31;border-top:2px solid #34E00A;padding:4px 20px 18px;box-shadow:0 28px 56px rgba(0,0,0,.55);text-align:left}
.ng-mnav-panel a{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;border-bottom:1px solid #262A31;color:#E9ECEF;text-decoration:none;font-size:14px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.ng-mnav-panel a::after{content:"\2192";color:#34E00A;font-weight:700}
.ng-mnav-panel a.ng-mnav-sub{min-height:48px;color:#C3C8CF;font-size:15px;font-weight:500;letter-spacing:0;text-transform:none}
.ng-mnav-panel a.ng-mnav-sub:last-child{border-bottom:0}
@media (max-width:960px){.nav-links{display:none !important}.ng-mnav{display:block}nav[aria-label="Main"]{gap:12px !important}nav[aria-label="Main"]>a:first-child{margin-right:auto}}
nav[aria-label="Main"]>a:first-child{flex-shrink:0}
@media (max-width:560px){nav[aria-label="Main"] a.num[href^="tel:"]{display:none !important}}
@media (max-width:420px){nav[aria-label="Main"] .ng-cta{padding:12px 14px !important;font-size:12px !important;letter-spacing:.08em !important}nav[aria-label="Main"]>a:first-child img{height:34px !important}}
@media (max-width:360px){header[style*="max-width: 1320px"]{padding:0 16px !important}nav[aria-label="Main"][style*="padding: 24px 32px"]{padding:20px 16px !important}nav[aria-label="Main"]>a:first-child img{height:30px !important}nav[aria-label="Main"] .ng-cta{padding:11px 12px !important;font-size:11px !important}}
