.flashcard-container{perspective:1000px}.flashcard{position:relative;width:100%;min-height:500px;transform-style:preserve-3d;transition:transform .7s ease-in-out;cursor:pointer}.flashcard.flipped{transform:rotateY(180deg)}.flashcard-face{position:absolute;width:100%;min-height:500px;backface-visibility:hidden;border-radius:1rem}.flashcard-back{transform:rotateY(180deg)}@keyframes pulsateProgress{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(99,102,241,.7)}50%{transform:scale(1.15);box-shadow:0 0 0 15px rgba(99,102,241,0)}to{transform:scale(1);box-shadow:0 0 0 0 rgba(99,102,241,0)}}@keyframes fadeIn{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.animate-fadeIn{animation:fadeIn .6s ease-out forwards}.hover-shine{position:relative;overflow:hidden}.hover-shine:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2) 50%,transparent);transition:left .5s}.group:hover .hover-shine:after{left:100%}@layer utilities{.preserve-3d{transform-style:preserve-3d}.backface-hidden{backface-visibility:hidden}.perspective-1000{perspective:1000px}.rotate-y-180{transform:rotateY(180deg)}.float-animation{animation:floating 6s ease-in-out infinite}.pulse-animation{animation:pulse 1.5s ease-in-out infinite}.shimmer{position:relative;overflow:hidden}.shimmer:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.15) 50%,transparent);animation:shimmer 3s infinite;transform:rotate(30deg)}}@keyframes floating{0%,to{transform:translateY(0) rotateY(0)}50%{transform:translateY(-8px) rotateY(1deg)}}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}@keyframes shimmer{0%{transform:translateX(-150%) rotate(30deg)}to{transform:translateX(150%) rotate(30deg)}}@keyframes progressShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes checkmarkPulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes floatProgress{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes filterIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes filterOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.filter-in{animation:filterIn .3s ease forwards}.filter-out{animation:filterOut .3s ease forwards}