/* Motion keeps interactive hit areas still; only visual layers move. */
.portrait-wrap{isolation:isolate}
.portrait-orbit{display:none}
.hero-note{position:absolute;width:137%;aspect-ratio:356/351;left:-17%;top:-50px;z-index:-1;pointer-events:none;transform-origin:50% 65%;will-change:transform}
.hero-note svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.hero-note g:nth-child(1){stroke:var(--cyan);opacity:.8}
.hero-note g:nth-child(2){stroke:var(--pink);opacity:.85}
.hero-note g:nth-child(3){stroke:#edbbe8;opacity:.85}
.portrait-stage{transition:none;will-change:transform}
.ticker-track{animation:ticker-flow var(--ticker-duration,60s) linear infinite;will-change:transform}
.ticker-track>span{flex:none}
@keyframes ticker-flow{from{transform:translate3d(0,0,0)}to{transform:translate3d(calc(-1 * var(--ticker-step,1645px)),0,0)}}
.motion-line-mask{display:block;overflow:hidden;padding-bottom:.15em;margin-bottom:-.15em}
.motion-line{display:block;transform-origin:0 100%;will-change:transform,opacity}
.full-motion .portrait-sticker{animation:sticker-float 7s ease-in-out infinite}
.full-motion .linkedin-orb{animation:orb-float 8s ease-in-out infinite}
.full-motion .github-motif{animation:code-float 9s ease-in-out infinite}
.full-motion .cv-motif{animation:paper-float 8s ease-in-out infinite}
.full-motion .scene-card:not(.chapter-enter){animation:scene-float 8s ease-in-out infinite}
.full-motion .project-card .project-visual{transition:transform .5s var(--ease);transform:perspective(900px) rotateX(var(--card-x,0deg)) rotateY(var(--card-y,0deg));transform-origin:50% 50%;will-change:transform}
.full-motion .hero-copy .button{position:relative;overflow:hidden}
.full-motion .hero-copy .button:after{content:"";position:absolute;top:-35%;left:-40%;width:18%;height:180%;background:#ffffff38;transform:skewX(-20deg);animation:button-glint 9s ease-in-out infinite;pointer-events:none}
.full-motion .reveal{transition-duration:1s}
.full-motion .result:nth-child(2){transition-delay:.12s}
.full-motion .result:nth-child(3){transition-delay:.24s}
.full-motion .perspective-grid>:nth-child(2),.full-motion .post-grid>:nth-child(2){transition-delay:.12s}
.full-motion .perspective-grid>:nth-child(3),.full-motion .post-grid>:nth-child(3){transition-delay:.24s}
@keyframes sticker-float{0%,100%{transform:translateY(0) rotate(7deg)}50%{transform:translateY(-7px) rotate(4deg)}}
@keyframes orb-float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(-3deg)}}
@keyframes code-float{0%,100%{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-10px) rotate(-3deg)}}
@keyframes paper-float{0%,100%{transform:translateY(0) rotate(9deg)}50%{transform:translateY(-10px) rotate(5deg)}}
@keyframes scene-float{0%,100%{transform:translateY(0) rotate(2deg)}50%{transform:translateY(-5px) rotate(1deg)}}
@keyframes button-glint{0%,75%{left:-40%;opacity:0}78%{opacity:1}93%,100%{left:135%;opacity:0}}
@media(max-width:1100px){.hero-note{width:145%;left:-21%;top:-30px}}
@media(max-width:800px){.hero-note{width:157%;left:-26%;top:8px}}
@media(max-width:580px){.hero-note{width:128%;left:-14%;top:-25px}.hero-note svg{stroke-width:1.5}}
.reduced-motion .hero-note{transform:none!important;will-change:auto}.reduced-motion .portrait-stage{transform:none!important;will-change:auto}.reduced-motion .project-visual{transform:none!important}
