@keyframes iplSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes iplFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes iplSlideUp{0%{opacity:0;transform:translateY(24px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes iplPulseGlow{0%,to{box-shadow:0 0 8px var(--glow-color,#fff3)}50%{box-shadow:0 0 20px var(--glow-color,#fff6), 0 0 40px var(--glow-color,#ffffff1a)}}@keyframes iplShimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes iplScaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes iplBounceIn{0%{opacity:0;transform:scale(.3)}50%{transform:scale(1.05)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes iplStepPulse{0%,to{transform:scale(1);box-shadow:0 0 #fff6}50%{transform:scale(1.08);box-shadow:0 0 0 8px #fff0}}@keyframes iplGradientFlow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes iplTextReveal{0%{opacity:0;filter:blur(4px);transform:translateY(8px)}to{opacity:1;filter:blur();transform:translateY(0)}}@keyframes iplFloatLeft{0%,to{transform:translateY(0)translate(0)rotate(0)}33%{transform:translateY(-30px)translate(15px)rotate(1deg)}66%{transform:translateY(15px)translate(-10px)rotate(-1deg)}}@keyframes iplFloatRight{0%,to{transform:translateY(0)translate(0)rotate(0)}33%{transform:translateY(-20px)translate(-25px)rotate(-1deg)}66%{transform:translateY(25px)translate(15px)rotate(1deg)}}.ipl-fade-in{animation:.5s cubic-bezier(.22,1,.36,1) forwards iplFadeIn}.ipl-slide-up{animation:.6s cubic-bezier(.22,1,.36,1) forwards iplSlideUp}.ipl-scale-in{animation:.4s cubic-bezier(.22,1,.36,1) forwards iplScaleIn}.ipl-bounce-in{animation:.6s cubic-bezier(.22,1,.36,1) forwards iplBounceIn}.ipl-fade-in-long{animation:2s cubic-bezier(.4,0,.2,1) forwards iplFadeInLong}@keyframes iplFadeInLong{0%{opacity:0;filter:blur(20px);transform:scale(1.1)}to{opacity:.2;filter:blur();transform:scale(1)}}.ipl-team-card--selected{animation:2s ease-in-out infinite iplPulseGlow}.ipl-step-indicator--active{animation:2s ease-in-out infinite iplStepPulse}.ipl-shimmer{background:linear-gradient(90deg,#0000 0%,#ffffff14 50%,#0000 100%) 0 0/200% 100%;animation:2s ease-in-out infinite iplShimmer}.ipl-upload-zone{background:#ffffff05;transition:all .3s;position:relative}.ipl-upload-zone:after{content:"";border-radius:inherit;opacity:0;z-index:-1;background:linear-gradient(135deg,#fff3,#ffffff0d,#fff3) 0 0/200% 200%;transition:opacity .3s;animation:3s infinite iplGradientFlow;position:absolute;inset:-2px}.ipl-upload-zone:hover:after{opacity:1}.ipl-generate-glow:before{content:"";border-radius:inherit;background:linear-gradient(45deg, var(--team-color,#00f2fe), transparent 50%, var(--team-color,#00f2fe));opacity:.5;z-index:-1;animation:2s infinite iplGradientFlow;position:absolute;inset:-2px}.ipl-processing-step--active{animation:.4s forwards iplTextReveal}.ipl-result-card img{transition:transform .4s cubic-bezier(.22,1,.36,1)}.ipl-result-card:hover img{transform:scale(1.02)}select option{background:#18181b}input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.ipl-custom-scrollbar::-webkit-scrollbar{width:4px}.ipl-custom-scrollbar::-webkit-scrollbar-track{background:#ffffff0d;border-radius:10px}.ipl-custom-scrollbar::-webkit-scrollbar-thumb{background:#fff3;border-radius:10px}.ipl-custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.ipl-hide-scrollbar::-webkit-scrollbar{display:none}.ipl-hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@media (prefers-reduced-motion:reduce){.ipl-fade-in,.ipl-slide-up,.ipl-scale-in,.ipl-bounce-in,.ipl-team-card--selected,.ipl-step-indicator--active,.ipl-shimmer,.ipl-upload-zone:after,.ipl-generate-glow:before,.ipl-processing-step--active,.ipl-result-card img{transition:none!important;animation:none!important}}@keyframes iplProgressScan{0%{transform:translate(-100%)}to{transform:translate(500%)}}.ipl-progress-scan{background:linear-gradient(90deg,#0000,#fff6,#0000);animation:1.5s linear infinite iplProgressScan;position:absolute;inset:0}
