.certificate-frame{border:2px solid #2d1f3d;border-radius:12px;overflow:hidden;transition:border-color .3s}.certificate-frame:hover{border-color:#7f0df280}.spinner{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .4s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.progress-bar-track{height:4px;background:#2d1f3d;border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#7f0df2,#a855f7);border-radius:2px;animation:progressPulse 1.5s ease-in-out infinite;width:40%}@keyframes progressPulse{0%{transform:translate(-100%)}to{transform:translate(350%)}}
