/* ---------- site nav dropdown ---------- */
.fx-dd{position:relative;display:inline-flex;align-items:center;gap:6px}
.fx-caret-dd{transition:transform .4s cubic-bezier(.2,.8,.2,1);color:#8592A6}
.fx-dd:hover .fx-caret-dd,.fx-dd:focus-within .fx-caret-dd{transform:rotate(180deg);color:#F07832}
.fx-menu{position:absolute;left:50%;top:100%;transform:translate(-50%,12px);min-width:320px;padding:10px;border-radius:18px;background:rgba(11,16,32,.97);border:1px solid rgba(148,163,184,.16);box-shadow:0 30px 80px -20px rgba(0,0,0,.85);opacity:0;visibility:hidden;transition:opacity .3s,transform .4s cubic-bezier(.2,.8,.2,1),visibility .3s;z-index:60;display:flex;flex-direction:column;gap:2px}
.fx-menu::before{content:"";position:absolute;left:0;right:0;top:-16px;height:16px}
.fx-dd:hover .fx-menu,.fx-dd:focus-within .fx-menu{opacity:1;visibility:visible;transform:translate(-50%,4px)}
.fx-mi{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:12px;transition:background .25s,transform .35s cubic-bezier(.2,.8,.2,1)}
.fx-mi:hover,.fx-mi:focus-visible{background:rgba(82,214,255,.08);transform:translateX(4px)}
.fx-mi-t{display:block;font-weight:500;font-size:14px;color:#F8FAFC}
.fx-mi-d{display:block;font-size:12px;color:#9AA7BA;margin-top:3px;line-height:1.4}
.fx-mi-n{font-family:"Geist Mono",monospace;font-size:11px;color:#F07832;padding-top:2px}

body{margin:0;background:#07090F}
a{color:#F8FAFC;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid #52D6FF;outline-offset:3px;border-radius:8px}
.fx-mono{font-family:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.fx-serif{font-family:"Instrument Serif",Georgia,serif;font-style:italic;font-weight:400}
.fx-grid{background-image:linear-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.06) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 40% 30%,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse 70% 60% at 40% 30%,#000 30%,transparent 75%);animation:fx-gridmove 40s linear infinite}
.fx-aur1{animation:fx-drift1 22s ease-in-out infinite}
.fx-aur2{animation:fx-drift2 26s ease-in-out infinite}
.fx-aur3{animation:fx-drift3 30s ease-in-out infinite}
.fx-blink{animation:fx-blink 1.6s ease-in-out infinite}
.fx-breathe{animation:fx-breathe 5s ease-in-out infinite}
.fx-conic{animation:fx-turn 14s linear infinite}
.fx-vwire{background:linear-gradient(180deg,rgba(82,214,255,.1),#52D6FF,rgba(82,214,255,.1));background-size:100% 300%;animation:fx-vwire 2.4s linear infinite}
.fx-sonar{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(82,214,255,.6);animation:fx-sonar 4.5s cubic-bezier(.2,.6,.3,1) infinite}
.fx-sonar.d2{animation-delay:1.5s}.fx-sonar.d3{animation-delay:3s;border-color:rgba(240,120,50,.6)}
.fx-shine{background:linear-gradient(100deg,#F07832 0%,#F07832 35%,#FFE0C7 50%,#F07832 65%,#F07832 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:fx-shine 6s ease-in-out infinite}
.fx-shine.c{background-image:linear-gradient(100deg,#52D6FF 0%,#52D6FF 35%,#E6FBFF 50%,#3B82F6 65%,#52D6FF 100%)}
.fx-line{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.fx-word{display:inline-block;animation:fx-wordup 1.2s cubic-bezier(.16,1,.3,1) both}
.fx-enter{animation:fx-fadeup 1.1s cubic-bezier(.16,1,.3,1) both}
.fx-rise{animation:fx-rise 1.4s cubic-bezier(.16,1,.3,1) both}
.fx-caret{display:inline-block;width:.5em;height:1em;background:#F07832;vertical-align:-.15em;margin-left:3px;animation:fx-caret 1s steps(1) infinite}
.fx-roll{display:inline-flex;height:1.3em;line-height:1.3em;overflow:hidden;color:#C7D0DD}
.fx-roll>span{display:flex;flex-direction:column;transition:transform .55s cubic-bezier(.7,0,.2,1)}
.fx-roll>span>span{display:block;height:1.3em}
.fx-roll>span>span+span{color:#F07832}
.fx-roll:hover>span,.fx-roll:focus-visible>span{transform:translateY(-1.3em)}
.fx-navi{position:relative;display:inline-flex;align-items:center;min-height:44px}
.fx-navi::after{content:"";position:absolute;left:50%;bottom:6px;width:4px;height:4px;border-radius:50%;background:#F07832;transform:translateX(-50%) scale(0);transition:transform .4s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 10px #F07832}
.fx-navi:hover::after,.fx-navi[aria-current="page"]::after{transform:translateX(-50%) scale(1)}
.fx-ar{display:inline-block;transition:transform .45s cubic-bezier(.2,.8,.2,1)}
a:hover .fx-ar,button:hover .fx-ar{transform:translateX(6px)}
.fx-back:hover .fx-ar{transform:translateX(-6px)}
.fx-btn{position:relative;overflow:hidden;isolation:isolate;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease}
.fx-btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 25%,rgba(255,255,255,.65) 50%,transparent 75%);transform:translateX(-130%);transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.fx-btn:hover::before{transform:translateX(130%)}
.fx-btn:hover{transform:translateY(-3px);box-shadow:0 18px 50px -14px rgba(240,120,50,.85);color:#07090F}
.fx-pulse{animation:fx-pulse 2.8s ease-out infinite}
.fx-ghost{position:relative;overflow:hidden;isolation:isolate;transition:border-color .4s,transform .35s cubic-bezier(.2,.8,.2,1),color .3s}
.fx-ghost::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(82,214,255,.18),rgba(59,130,246,.14));transform:scaleX(0);transform-origin:left;transition:transform .55s cubic-bezier(.7,0,.2,1)}
.fx-ghost:hover::before{transform:scaleX(1)}
.fx-ghost:hover{border-color:rgba(82,214,255,.75)!important;transform:translateY(-3px)}
.fx-foot{display:inline-flex;align-items:center;color:#8592A6;transition:color .3s;min-height:32px}
.fx-foot::before{content:"";display:inline-block;width:0;height:1.5px;background:#F07832;margin-right:0;transition:width .4s cubic-bezier(.2,.8,.2,1),margin .4s}
.fx-foot:hover{color:#F8FAFC}.fx-foot:hover::before{width:14px;margin-right:8px}
.fx-card{position:relative;overflow:hidden;transition:border-color .4s ease,transform .45s cubic-bezier(.2,.8,.2,1),box-shadow .45s}
.fx-card::after{content:"";position:absolute;left:0;right:0;top:0;height:1.5px;background:linear-gradient(90deg,transparent,#52D6FF,#F07832,transparent);transform:scaleX(0);transition:transform .7s cubic-bezier(.2,.8,.2,1);pointer-events:none;z-index:2}
.fx-card::before{content:"";position:absolute;inset:0;background:radial-gradient(420px circle at 50% 0%,rgba(82,214,255,.12),transparent 60%);opacity:0;transition:opacity .5s;pointer-events:none;z-index:1}
.fx-card:hover::after{transform:scaleX(1)}.fx-card:hover::before{opacity:1}
.fx-card:hover{border-color:rgba(240,120,50,.45)!important;transform:translateY(-6px)!important;box-shadow:0 30px 60px -30px rgba(0,0,0,.85)}
.fx-tab{transition:all .35s cubic-bezier(.2,.8,.2,1)}
.fx-tab:hover{border-color:#F07832!important;color:#F8FAFC!important;transform:translateY(-2px)}
@supports (animation-timeline: view()) {
.fx-rv{animation:fx-rv linear both;animation-timeline:view();animation-range:entry 0% entry 80%}
.fx-rvs{animation:fx-rvs linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
}
@keyframes fx-gridmove{to{background-position:64px 64px,64px 64px}}
@keyframes fx-turn{to{transform:rotate(360deg)}}
@keyframes fx-blink{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes fx-caret{0%,49%{opacity:1}50%,100%{opacity:0}}
@keyframes fx-breathe{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
@keyframes fx-vwire{from{background-position:0 100%}to{background-position:0 -50%}}
@keyframes fx-drift1{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(-120px,80px) scale(1.15)}66%{transform:translate(60px,140px) scale(.92)}}
@keyframes fx-drift2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(160px,-90px) scale(1.2)}}
@keyframes fx-drift3{0%,100%{transform:translate(0,0) scale(1)}40%{transform:translate(-80px,-120px) scale(1.1)}75%{transform:translate(100px,40px) scale(.95)}}
@keyframes fx-sonar{0%{transform:scale(1);opacity:.85}100%{transform:scale(3.3);opacity:0}}
@keyframes fx-shine{0%{background-position:100% 0}60%,100%{background-position:-50% 0}}
@keyframes fx-wordup{from{transform:translateY(115%) rotate(4deg);opacity:0}to{transform:none;opacity:1}}
@keyframes fx-fadeup{from{opacity:0;transform:translateY(26px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes fx-rise{from{opacity:0;transform:perspective(1400px) rotateX(16deg) translateY(90px) scale(.94);filter:blur(10px)}to{opacity:1;transform:none;filter:none}}
@keyframes fx-pulse{0%{box-shadow:0 0 0 0 rgba(240,120,50,.6)}70%,100%{box-shadow:0 0 0 18px rgba(240,120,50,0)}}
@keyframes fx-rv{from{opacity:0;transform:translateY(56px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes fx-rvs{from{opacity:0;transform:perspective(1200px) rotateX(18deg) scale(.9) translateY(80px)}to{opacity:1;transform:none}}

.fx-in{width:100%;box-sizing:border-box;min-height:50px;padding:13px 15px;border-radius:12px;border:1px solid #D5DCE6;background:#FFFFFF;color:#07090F;font:inherit;font-size:15px;transition:border-color .25s,box-shadow .35s,transform .25s}
.fx-in:hover{border-color:#9FB0C6}
.fx-in:focus{border-color:#3B82F6!important;box-shadow:0 0 0 4px rgba(59,130,246,.16),0 10px 30px -14px rgba(59,130,246,.6);outline:none;transform:translateY(-1px)}
.fx-field{position:relative;display:flex;flex-direction:column;gap:7px}
.fx-field label{transition:color .25s,transform .25s;transform-origin:left}
.fx-field:focus-within label{color:#2563EB;transform:translateX(3px)}
.fx-field::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;border-radius:2px;background:linear-gradient(90deg,#52D6FF,#3B82F6,#F07832);transform:scaleX(0);transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.fx-field.fx-has-in:focus-within::after{transform:scaleX(1)}
.fx-shake{animation:fx-shake .5s cubic-bezier(.36,.07,.19,.97) both}
.fx-err{animation:fx-errin .35s ease both}
.fx-ring{position:absolute;inset:-1px;border-radius:29px;padding:1.5px;background:conic-gradient(from var(--fxa,0deg),rgba(82,214,255,.0),rgba(82,214,255,.9),rgba(240,120,50,.9),rgba(82,214,255,0) 40%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:fx-ang 6s linear infinite;pointer-events:none}
@property --fxa{syntax:"<angle>";inherits:false;initial-value:0deg}
.fx-spin-sm{display:inline-block;width:16px;height:16px;border-radius:50%;border:2px solid rgba(7,9,15,.25);border-top-color:#07090F;animation:fx-turn .8s linear infinite}
.fx-check path{stroke-dasharray:60;stroke-dashoffset:60;animation:fx-draw .9s cubic-bezier(.65,0,.35,1) .2s forwards}
.fx-check circle{stroke-dasharray:160;stroke-dashoffset:160;animation:fx-draw 1s cubic-bezier(.65,0,.35,1) forwards}
.fx-step-i{transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.fx-step-i:hover{transform:translateX(8px)}
.fx-step-i:hover .fx-num{background:#F07832;color:#07090F;box-shadow:0 0 24px rgba(240,120,50,.7)}
.fx-num{transition:background .35s,color .35s,box-shadow .35s}
.fx-book{transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s}
.fx-book:hover{transform:translateY(-4px) rotate(-.4deg);box-shadow:0 30px 70px -30px rgba(82,214,255,.6)}
.fx-cline{display:inline-flex;align-items:center;gap:10px;color:#C7D0DD;transition:color .3s,transform .35s cubic-bezier(.2,.8,.2,1)}
.fx-cline:hover{color:#F8FAFC;transform:translateX(6px)}
@keyframes fx-shake{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}
.fx-shake.fx-s2{animation-name:fx-shake2}
@keyframes fx-shake2{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(3px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}
@keyframes fx-errin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
@keyframes fx-ang{to{--fxa:360deg}}
@keyframes fx-draw{to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.fx-check path,.fx-check circle{stroke-dashoffset:0}}
