@keyframes blob{0%{transform:scale(1)}33%{transform:scale(1.1)}66%{transform:scale(.9)}to{transform:scale(1)}}@keyframes float{0%{transform:translateY(0)rotate(0)}50%{transform:translateY(-15px)rotate(2deg)}to{transform:translateY(0)rotate(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes scroll-down{0%{opacity:0;transform:translateY(0)}30%{opacity:1}60%{opacity:1}to{opacity:0;transform:translateY(10px)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes blueprint-reveal{0%{opacity:.3;stroke-dashoffset:1000px}to{opacity:1;stroke-dashoffset:0}}@keyframes construct{0%{transform-origin:bottom;transform:scaleY(0)}to{transform-origin:bottom;transform:scaleY(1)}}@keyframes measure{0%{transform:scaleX(0)}20%{transform:scaleX(1)}80%{transform:scaleX(1)}to{transform:scaleX(0)}}.animate-blob{will-change:transform;animation:7s infinite blob}.animate-float{will-change:transform;animation:6s ease-in-out infinite float}.animate-fade-in{will-change:opacity;animation:1s ease-out forwards fade-in}.animate-fade-in-down{will-change:opacity,transform;animation:.8s ease-out forwards fade-in-down}.animate-fade-in-up{opacity:0;will-change:opacity,transform;animation:.8s ease-out forwards fade-in-up}.animate-fade-in-left{opacity:0;will-change:opacity,transform;animation:.8s ease-out forwards fade-in-left}.animate-fade-in-right{opacity:0;will-change:opacity,transform;animation:.8s ease-out forwards fade-in-right}.animate-scroll-down{will-change:opacity,transform;animation:2s infinite scroll-down}.animate-pulse{will-change:transform;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.animate-shimmer{position:relative;overflow:hidden}.animate-shimmer:after{content:"";will-change:transform;background:linear-gradient(90deg,#0000,#ffffff4d,#0000);width:100%;height:100%;animation:2s infinite shimmer;position:absolute;top:0;left:0}.animate-spin{will-change:transform;animation:1s linear infinite spin}.animate-bounce{will-change:transform;animation:1s infinite bounce}.animate-blueprint{stroke-dasharray:1000;stroke-dashoffset:1000px;will-change:stroke-dashoffset,opacity;animation:2s ease-in-out forwards blueprint-reveal}.animate-construct{will-change:transform;animation:1.5s ease-out forwards construct}.animate-measure{will-change:transform;animation:3s ease-in-out infinite measure}.animation-delay-100{animation-delay:.1s}.animation-delay-200{animation-delay:.2s}.animation-delay-300{animation-delay:.3s}.animation-delay-500{animation-delay:.5s}.animation-delay-1000{animation-delay:1s}.animation-delay-2000{animation-delay:2s}.animation-delay-4000{animation-delay:4s}.animation-fast{animation-duration:.5s!important}.animation-slow{animation-duration:2s!important}.animation-slower{animation-duration:3s!important}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-reduced-motion:no-preference){[data-reveal]{opacity:0;transition:opacity .55s cubic-bezier(.16,1,.3,1),transform .55s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0s);transform:translateY(16px)}[data-reveal][data-revealed]{opacity:1;transform:none}}.cv-section{contain-intrinsic-size:auto 720px;content-visibility:auto}
html{scroll-behavior:smooth;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,html{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}img{content-visibility:auto;max-width:100%;height:auto}.grid{width:100%;overflow-x:clip}table{-webkit-overflow-scrolling:touch;max-width:100%;display:block;overflow-x:auto}.absolute,.fixed{max-width:100vw}@supports (padding:env(safe-area-inset-left)){.safe-area-x{padding-left:env(safe-area-inset-left,1rem);padding-right:env(safe-area-inset-right,1rem)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,1rem)}.safe-area-top{padding-top:env(safe-area-inset-top,1rem)}}@media (pointer:coarse){*{touch-action:manipulation}[class*=overflow-auto],[class*=overflow-scroll],[class*=overflow-x-auto],[class*=overflow-y-auto]{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}[role=button],a,input,select,textarea{min-height:44px}@media (hover:none){.hover\:-translate-y-1:hover,.hover\:scale-105:hover{transform:none!important}}}@supports (-webkit-touch-callout:none){.min-h-screen{min-height:-webkit-fill-available}.fixed{-webkit-transform:translateZ(0)}}.break-long-words{word-wrap:break-word;hyphens:auto;overflow-wrap:break-word;word-break:break-word}.full-width{width:100%;max-width:100%}.screen-width{box-sizing:border-box;width:100vw;margin-left:calc(50% - 50vw)}section{contain-intrinsic-size:auto 500px;content-visibility:auto}
