.ft-intro{position:fixed;inset:0;z-index:100000;background:#0a0a0b;display:grid;place-items:center;animation:ftOut .9s cubic-bezier(.7,0,.2,1) 2.4s forwards}
.ft-intro-in{display:grid;justify-items:center;gap:18px}
.ft-intro img{width:112px;height:auto;animation:ftLogoIn 1.1s cubic-bezier(.2,.7,.1,1) .2s both}
.ft-intro b{font:800 15px system-ui,-apple-system,Arial,sans-serif;color:#f1f1f2;letter-spacing:.1em;opacity:0;animation:ftWord 1.2s cubic-bezier(.2,.7,.1,1) .7s forwards}
.ft-intro i{display:block;height:2px;width:0;background:linear-gradient(90deg,transparent,#e8eaee,transparent);animation:ftLine 1.1s cubic-bezier(.2,.7,.1,1) 1.2s forwards}
@keyframes ftLogoIn{from{opacity:0;transform:scale(.7) rotate(-6deg);filter:blur(10px)}to{opacity:1;transform:none;filter:none}}
@keyframes ftWord{from{opacity:0;letter-spacing:.1em}to{opacity:1;letter-spacing:.42em}}
@keyframes ftLine{to{width:220px}}
@keyframes ftOut{to{transform:translateY(-100%);visibility:hidden}}
.ft-intro-on .ft .hero .tab{animation-delay:2.5s,4.6s}
.ft-intro-on .ft .hero-copy>*:nth-child(1){animation-delay:3s}
.ft-intro-on .ft .hero-copy>*:nth-child(2){animation-delay:3.2s}
.ft-intro-on .ft .hero-copy>*:nth-child(3){animation-delay:3.4s}
.ft-progress{position:fixed;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,#6f7278,#fff);transform-origin:left;transform:scaleX(0);z-index:9999;pointer-events:none}
.ft-ticker{overflow:hidden;border-top:1px solid #2a2a2e;border-bottom:1px solid #2a2a2e;padding:14px 0;background:#0a0a0b}
.ft-track{display:flex;gap:48px;width:max-content;animation:ftScroll 30s linear infinite}
.ft-track span{font-size:13px;letter-spacing:.24em;color:#9a9aa1;white-space:nowrap;display:flex;align-items:center;gap:48px}
.ft-track span::after{content:"\25C6";color:#c9ccd1;font-size:9px}
@keyframes ftScroll{to{transform:translateX(-50%)}}
.ft-js .ft .rv{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.1,1)}
.ft-js .ft .rv.in{opacity:1;transform:none}
.ft .hero .ph::before{content:"";position:absolute;inset:0;background:radial-gradient(260px circle at var(--mx,70%) var(--my,40%),rgba(220,224,230,.22),transparent 70%);opacity:0;transition:opacity .4s;z-index:1;pointer-events:none}
.ft .hero .ph:hover::before{opacity:1}
.ft .card .ph img{transition:transform .8s cubic-bezier(.2,.7,.1,1)}
.ft .card:hover .ph img{transform:scale(1.07)}
.ft .card .ph::after{content:"";position:absolute;top:0;bottom:0;right:16%;width:3px;background:linear-gradient(90deg,#6f7278,#e8eaee,#6f7278);transform:skewX(-8deg) scaleY(0);transform-origin:top;transition:transform .5s cubic-bezier(.2,.7,.1,1);z-index:2}
.ft .card:hover .ph::after{transform:skewX(-8deg) scaleY(1)}
.ft .btn{position:relative;overflow:hidden}
.ft .btn::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);transition:left .6s}
.ft .btn:hover::after{left:130%}
@media(prefers-reduced-motion:reduce){.ft-intro{display:none}.ft-track{animation:none}.ft .card .ph img,.ft .card .ph::after,.ft .btn::after{transition:none}.ft-js .ft .rv{opacity:1;transform:none;transition:none}}