/* anim-pro.css - additive effects only (prefix ap-). Remove the <link>/<script> lines to revert. */
.ap-ripple-host{position:relative;overflow:hidden}
.ap-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);pointer-events:none;animation:apRip .6s ease-out forwards}
@keyframes apRip{to{transform:scale(1);opacity:0}}
.ap-fieldwrap{position:relative}
.ap-ok{position:absolute;right:12px;top:50%;width:18px;height:18px;margin-top:-9px;opacity:0;transform:translateX(10px);transition:opacity .25s,transform .3s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
.ap-ok svg{width:100%;height:100%;display:block}
.ap-valid .ap-ok{opacity:1;transform:none}
.ap-valid>input,.ap-valid>select,.ap-valid .ap-fieldwrap>input,.ap-valid .ap-fieldwrap>select{border-color:#22c55e!important}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 4px rgba(37,99,235,.12)!important;transition:box-shadow .2s,border-color .2s}
.ap-shake{animation:apShake .3s}
@keyframes apShake{0%{transform:translateX(0)}25%{transform:translateX(-6px)}50%{transform:translateX(6px)}75%{transform:translateX(-4px)}100%{transform:translateX(0)}}
.ap-prog{position:sticky;top:0;z-index:40;height:4px;background:rgba(37,99,235,.12);border-radius:4px;overflow:hidden;margin-bottom:14px}
.ap-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#2563eb,#1e3a8a);transition:width .5s cubic-bezier(.16,1,.3,1),background .3s}
.ap-prog.done i{background:#22c55e}
.ap-saved{position:fixed;right:22px;bottom:22px;z-index:9000;background:#fff;border:1px solid #bbf7d0;color:#15803d;font:600 13px/1 Inter,Poppins,sans-serif;padding:10px 16px;border-radius:999px;box-shadow:0 8px 24px rgba(15,30,61,.12);opacity:0;transform:translateY(12px);transition:opacity .3s,transform .3s;pointer-events:none}
.ap-saved.on{opacity:1;transform:none}
.ap-saved b{display:inline-block;margin-right:6px}
.ap-saved.on b{animation:apPop .45s cubic-bezier(.34,1.56,.64,1)}
@keyframes apPop{0%{transform:scale(.5)}60%{transform:scale(1.1)}100%{transform:scale(1)}}
.ap-confetti{position:fixed;left:50%;top:40%;width:8px;height:8px;border-radius:50%;pointer-events:none;z-index:9500;animation:apConf 1s ease-out forwards}
@keyframes apConf{to{transform:translate(var(--x),var(--y)) scale(.4);opacity:0}}
.step-item.active .step-dot,.step-item.current .circle{position:relative}
.step-item.active .step-dot::after,.step-item.current .circle::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid #2563eb;animation:apRing 1.6s ease-out infinite;pointer-events:none}
@keyframes apRing{0%{transform:scale(1);opacity:.8}100%{transform:scale(1.5);opacity:0}}
.ap-lift{transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s}
.ap-lift:hover{transform:translateY(-6px)!important;box-shadow:0 20px 40px rgba(37,99,235,.15)!important}
.ap-glow{position:relative}
.ap-glow::before{content:"";position:absolute;inset:-2px;border-radius:inherit;padding:2px;background:conic-gradient(from var(--ap-a,0deg),#2563eb,#93c5fd,#1e3a8a,#2563eb);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .3s;pointer-events:none;animation:apSpin 3s linear infinite}
.ap-glow:hover::before{opacity:1}
@property --ap-a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes apSpin{to{--ap-a:360deg}}
.ap-orb{position:fixed;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.15),transparent 70%);filter:blur(30px);pointer-events:none;z-index:0}
#apDown{position:absolute;left:50%;bottom:22px;margin-left:-28px;width:56px;height:56px;border-radius:50%;border:0;background:#fff;box-shadow:0 6px 20px rgba(15,30,61,.18);cursor:pointer;z-index:5;display:grid;place-items:center;color:#000;transition:transform .3s,box-shadow .3s,color .3s;animation:apBob 1.8s ease-in-out infinite}
#apDown svg{width:22px;height:22px;animation:apDrift 1s ease-in-out infinite alternate}
#apDown:hover{transform:scale(1.1);box-shadow:0 10px 28px rgba(37,99,235,.3);color:#2563eb}
#apDown.spin svg{animation:apSpin360 .6s}
@keyframes apBob{0%,100%{translate:0 0}50%{translate:0 6px}}
@keyframes apDrift{from{translate:0 -2px}to{translate:0 2px}}
@keyframes apSpin360{to{rotate:360deg}}
@media (prefers-reduced-motion:reduce){.ap-glow::before,#apDown,#apDown svg,.step-item.active .step-dot::after,.step-item.current .circle::after{animation:none!important}}
