.pf-reveal{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translateY(32px)}.pf-reveal.pf-visible{opacity:1;transform:translateY(0)}.pf-reveal-left{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translate(-40px)}.pf-reveal-left.pf-visible{opacity:1;transform:translate(0)}.pf-reveal-right{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translate(40px)}.pf-reveal-right.pf-visible{opacity:1;transform:translate(0)}.pf-reveal-scale{opacity:0;transition:opacity .6s ease-out,transform .6s cubic-bezier(.16,1,.3,1);transform:scale(.9)}.pf-reveal-scale.pf-visible{opacity:1;transform:scale(1)}.pf-stagger>*{transition-delay:calc(var(--pf-i,0)*80ms)}@keyframes pf-float{0%,to{transform:translateY(0)rotate(0)}33%{transform:translateY(-12px)rotate(2deg)}66%{transform:translateY(6px)rotate(-1deg)}}@keyframes pf-float-slow{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-20px)scale(1.05)}}@keyframes pf-pulse-ring{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@keyframes pf-gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes pf-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes pf-glow{0%,to{box-shadow:0 0 15px rgba(var(--pf-glow-rgb,0,128,128),.3)}50%{box-shadow:0 0 30px rgba(var(--pf-glow-rgb,0,128,128),.5)}}@keyframes pf-draw-line{0%{height:0}to{height:100%}}@keyframes pf-typewriter{0%{width:0}to{width:100%}}@keyframes pf-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes pf-spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pf-morph{0%,to{border-radius:60% 40% 30% 70%/60% 30% 70% 40%}25%{border-radius:30% 60% 70% 40%/50% 60% 30%}50%{border-radius:50% 60% 30%/30% 40% 70% 60%}75%{border-radius:60% 30% 60% 40%/70% 50% 40% 60%}}@keyframes pf-progress-fill{0%{width:0%}}@keyframes pf-count-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.pf-animate-float{animation:6s ease-in-out infinite pf-float}.pf-animate-float-slow{animation:8s ease-in-out infinite pf-float-slow}.pf-animate-gradient{background-size:200% 200%;animation:5s infinite pf-gradient-shift}.pf-animate-morph{animation:8s ease-in-out infinite pf-morph}.pf-animate-spin-slow{animation:20s linear infinite pf-spin-slow}.pf-animate-glow{animation:3s ease-in-out infinite pf-glow}.pf-glass{-webkit-backdrop-filter:blur(12px);background:#ffffff14;border:1px solid #ffffff1f}.pf-glass-card{background:color-mix(in srgb,var(--portfolio-bg,#fff)85%,transparent);-webkit-backdrop-filter:blur(10px);border:1px solid color-mix(in srgb,var(--portfolio-text,#333)8%,transparent);transition:box-shadow .3s,transform .3s;box-shadow:0 4px 24px #0000000f}.pf-glass-card:hover{transform:translateY(-2px);box-shadow:0 8px 40px #0000001f}.pf-gradient-text{background:linear-gradient(135deg,var(--portfolio-primary),var(--portfolio-accent,var(--portfolio-primary)));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.pf-wave-top{position:relative}.pf-wave-top:before{content:"";background:var(--portfolio-bg);clip-path:ellipse(55% 100% at 50% 0);z-index:1;height:60px;position:absolute;top:-1px;left:0;right:0}.pf-orb{filter:blur(60px);opacity:.25;pointer-events:none;z-index:0;border-radius:50%;position:absolute}.pf-tilt{transform-style:preserve-3d;perspective:1000px;transition:transform .4s cubic-bezier(.03,.98,.52,.99)}.pf-hover-lift{transition:transform .3s,box-shadow .3s}.pf-hover-lift:hover{transform:translateY(-6px);box-shadow:0 12px 40px #00000026}.pf-shine{position:relative;overflow:hidden}.pf-shine:after{content:"";background:linear-gradient(90deg,#0000,#fff3,#0000);width:50%;height:100%;transition:none;position:absolute;top:0;left:-100%}.pf-shine:hover:after{animation:.8s ease-out pf-shimmer}.pf-dot-pattern{background-image:radial-gradient(color-mix(in srgb,var(--portfolio-primary)15%,transparent)1px,transparent 1px);background-size:20px 20px}.pf-border-glow{position:relative}.pf-border-glow:before{content:"";border-radius:inherit;background:linear-gradient(135deg,var(--portfolio-primary),var(--portfolio-accent,var(--portfolio-secondary)),var(--portfolio-primary));z-index:-1;opacity:0;background-size:300% 300%;transition:opacity .3s;animation:4s infinite pf-gradient-shift;position:absolute;inset:-2px}.pf-border-glow:hover:before{opacity:1}.pf-progress-animated{animation:1.2s cubic-bezier(.16,1,.3,1) forwards pf-progress-fill}@media (prefers-reduced-motion:reduce){.pf-reveal,.pf-reveal-left,.pf-reveal-right,.pf-reveal-scale{opacity:1;transition:none;transform:none}.pf-stagger>*{transition-delay:0s}.pf-animate-float,.pf-animate-float-slow,.pf-animate-gradient,.pf-animate-morph,.pf-animate-spin-slow,.pf-animate-glow,.pf-progress-animated{animation:none}.pf-hover-lift{transition:none}.pf-hover-lift:hover{transform:none}.pf-glass-card{transition:none}.pf-glass-card:hover{transform:none}.pf-tilt{transition:none;transform:none}.pf-shine:hover:after{animation:none}.pf-border-glow:before{transition:none;animation:none}}@media print{body{-webkit-print-color-adjust:exact;print-color-adjust:exact;color:#000!important;background:#fff!important}*,:before,:after{transition:none!important;animation:none!important}.pf-border-glow:before,.pf-shine:after,.pf-wave-divider,.pf-decorative-orb,header nav,footer nav,button,[role=navigation],.fixed,.sticky{display:none!important}.pf-hover-lift,.pf-tilt,.pf-glass-card,.pf-reveal,.pf-reveal-left,.pf-reveal-right,.pf-reveal-scale{opacity:1!important;transform:none!important}.pf-glass,.pf-glass-card{-webkit-backdrop-filter:none!important;background:#fff!important;border:1px solid #ddd!important}.pf-gradient-text{-webkit-text-fill-color:currentColor!important;background:0 0!important;-webkit-background-clip:unset!important;background-clip:unset!important}.min-h-screen{min-height:unset!important}section,article,[class*=card],[class*=Card]{break-inside:avoid;page-break-inside:avoid}img{break-inside:avoid;page-break-inside:avoid;max-width:100%!important}a[href^=http]:after{content:" (" attr(href)")";color:#666;word-break:break-all;font-size:.75em}.portfolio-dark{color:#000!important;background:#fff!important}.portfolio-dark *{color:inherit!important;border-color:#ddd!important}.pf-progress-animated{width:var(--progress,0%)!important;animation:none!important}}