.scroll-progress{position:fixed;inset:0 0 auto;z-index:9999;height:4px;background:linear-gradient(90deg,#315bea,#7047eb,#2bb5a2);box-shadow:0 0 15px rgba(49,91,234,.55);transform:scaleX(0);transform-origin:left;will-change:transform}.page-wipe{position:fixed;inset:0;z-index:9998;pointer-events:none;background:linear-gradient(115deg,#315bea,#7047eb);transform:translateY(0);transition:transform .8s cubic-bezier(.76,0,.24,1)}body.motion-entered .page-wipe{transform:translateY(-105%)}body.is-leaving .page-wipe{transform:translateY(0);transition-duration:.32s}
body.motion-ready [data-reveal]:not(.revealed){opacity:0;filter:blur(8px)}body.motion-ready [data-reveal]{transition:opacity .85s ease,transform .95s cubic-bezier(.16,1,.3,1),filter .8s ease;transition-delay:var(--reveal-delay,0ms);will-change:transform,opacity}body.motion-ready [data-reveal=up]:not(.revealed){transform:translateY(90px);clip-path:inset(100% 0 0 round var(--radius))}body.motion-ready [data-reveal=down]:not(.revealed){transform:translateY(-60px)}body.motion-ready [data-reveal=left]:not(.revealed){transform:translateX(-85px) rotateY(7deg)}body.motion-ready [data-reveal=right]:not(.revealed){transform:translateX(85px) rotateY(-7deg)}body.motion-ready [data-reveal=scale]:not(.revealed){transform:translateY(55px);clip-path:inset(100% 0 0 round var(--radius))}[data-reveal].revealed{opacity:1;filter:none;transform:none}
.stagger>*{transition:opacity .7s ease,transform .85s cubic-bezier(.16,1,.3,1),filter .7s ease}body.motion-ready .stagger:not(.revealed)>*{opacity:0;filter:blur(6px);transform:translateY(80px);clip-path:inset(100% 0 0 round var(--radius))}.stagger.revealed>*{opacity:1;filter:none;transform:none}.stagger.revealed>*:nth-child(2){transition-delay:.11s}.stagger.revealed>*:nth-child(3){transition-delay:.22s}.stagger.revealed>*:nth-child(4){transition-delay:.33s}.stagger.revealed>*:nth-child(5){transition-delay:.44s}.stagger.revealed>*:nth-child(6){transition-delay:.55s}.stagger.revealed>*:nth-child(7){transition-delay:.66s}.stagger.revealed>*:nth-child(8){transition-delay:.77s}.stagger.revealed>*:nth-child(9){transition-delay:.88s}.stagger.revealed>*:nth-child(10){transition-delay:.99s}
@keyframes sheen{0%{transform:translateX(-160%) rotate(18deg)}60%,100%{transform:translateX(260%) rotate(18deg)}}@keyframes lineGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.orb-a,.orb-b,.floating-label{animation:none}.icon-box{animation:none}.card:nth-child(even) .icon-box{animation-delay:0}.card{position:relative;overflow:hidden}.card:after{content:"";position:absolute;inset:-50% auto -50% -35%;width:18%;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);transform:translateX(-160%) rotate(18deg)}.card:hover:after{animation:sheen .9s ease-out}.section-head:after{content:"";display:block;width:72px;height:3px;margin-left:auto;border-radius:3px;background:linear-gradient(90deg,#315bea,#7047eb);transform-origin:left}.section-head.revealed:after{animation:lineGrow .8s .25s both}.timeline.revealed .timeline-item:before{animation:none}
.hero-copy>*{opacity:0;transform:translateY(42px);animation:heroIn .85s cubic-bezier(.16,1,.3,1) forwards}.hero-copy>*:nth-child(2){animation-delay:.12s}.hero-copy>*:nth-child(3){animation-delay:.24s}.hero-copy>*:nth-child(4){animation-delay:.36s}.hero-copy>*:nth-child(5){animation-delay:.48s}@keyframes heroIn{to{opacity:1;transform:none}}.hero-visual{opacity:0;transform:perspective(1000px) translateX(90px) rotateY(-10deg);animation:visualIn 1.15s .28s cubic-bezier(.16,1,.3,1) forwards}@keyframes visualIn{to{opacity:1;transform:none}}.profile-card,.mock-window,.detail-visual .mini-ui{transition:transform .45s cubic-bezier(.16,1,.3,1)}.profile-card:hover{transform:rotate(0) translateY(-6px)}.detail-visual:hover .mini-ui{transform:rotate(0) translateY(-4px)}
body:before,body:after{content:"";position:fixed;z-index:-1;width:38vw;height:38vw;border-radius:50%;filter:blur(95px);opacity:.16;pointer-events:none}body:before{left:-18vw;top:calc(15vh + var(--scroll-shift,0px));background:#7694ff}body:after{right:-18vw;bottom:calc(-10vh + var(--scroll-shift,0px));background:#a586ef}
@keyframes slimeRise{0%{opacity:0;filter:blur(10px);transform:translate3d(0,110px,0);clip-path:inset(100% 0 0 round var(--radius))}45%{opacity:.85;filter:blur(3px);clip-path:inset(35% 0 0 round var(--radius))}100%{opacity:1;filter:none;transform:translate3d(0,0,0);clip-path:inset(0 0 0 round var(--radius))}}
body.motion-ready [data-reveal=up].revealed{transform-origin:center bottom;animation:slimeRise .9s cubic-bezier(.16,1,.3,1) both}body.motion-ready .stagger.revealed>*{transform-origin:center bottom;animation:slimeRise .82s cubic-bezier(.16,1,.3,1) both!important}.stagger.revealed>*:nth-child(2){animation-delay:.11s}.stagger.revealed>*:nth-child(3){animation-delay:.22s}.stagger.revealed>*:nth-child(4){animation-delay:.33s}.stagger.revealed>*:nth-child(5){animation-delay:.44s}.stagger.revealed>*:nth-child(6){animation-delay:.55s}.stagger.revealed>*:nth-child(7){animation-delay:.66s}.stagger.revealed>*:nth-child(8){animation-delay:.77s}.stagger.revealed>*:nth-child(9){animation-delay:.88s}.stagger.revealed>*:nth-child(10){animation-delay:.99s}body.motion-ready .project-feature.revealed:not([data-reveal=up]){animation:none}.btn,.btn:hover,.card:hover .icon-box,.profile-card,.profile-card:hover,.floating-label,.orb,.logo:hover,.tag:hover{animation:none}.card:hover{transform:translateY(-5px) rotateX(0)}.card:hover .icon-box{transform:translateY(-2px)}.profile-card:hover{transform:rotate(0) translateY(-6px)}.detail-visual:hover .mini-ui{transform:rotate(0) translateY(-4px)}.tag:hover{color:var(--primary)}
@keyframes mobileRise{from{opacity:0;filter:blur(5px);transform:translateY(42px)}to{opacity:1;filter:none;transform:none}}
@media(max-width:560px){body.motion-ready [data-reveal=up]:not(.revealed),body.motion-ready [data-reveal=scale]:not(.revealed),body.motion-ready .stagger:not(.revealed)>*{clip-path:none;transform:translateY(42px)}body.motion-ready [data-reveal=up].revealed,body.motion-ready [data-reveal=scale].revealed,body.motion-ready .stagger.revealed>*{clip-path:none!important;animation:mobileRise .58s cubic-bezier(.16,1,.3,1) both!important}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}[data-reveal],.stagger>*,.hero-copy>*,.hero-visual{opacity:1!important;filter:none!important;transform:none!important}.progress span{transform:none!important}.scroll-progress,.page-wipe{display:none!important}}
