@keyframes curtainOpen{0%{opacity:0;transform:translateY(-20px) scale(.95);clip-path:polygon(0 0,100% 0,100% 0,0 0)}to{opacity:1;transform:translateY(0) scale(1);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}}@keyframes curtainClose{0%{opacity:1;transform:translateY(0) scale(1);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}to{opacity:0;transform:translateY(-20px) scale(.95);clip-path:polygon(0 0,100% 0,100% 0,0 0)}}.dropdown-curtain-open{animation:curtainOpen .4s cubic-bezier(.4,0,.2,1) forwards}.dropdown-curtain-close{animation:curtainClose .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.fade-in{animation:fadeIn .3s ease-in-out forwards}.fade-out{animation:fadeOut .3s ease-in-out forwards}@keyframes slideInFromTop{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInFromBottom{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.slide-in-top{animation:slideInFromTop .4s ease-out forwards}.slide-in-bottom{animation:slideInFromBottom .4s ease-out forwards}@keyframes scaleIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}.scale-in{animation:scaleIn .3s ease-out forwards}.scale-out{animation:scaleOut .3s ease-out forwards}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-30px,0)}70%{transform:translate3d(0,-15px,0)}90%{transform:translate3d(0,-4px,0)}}.bounce{animation:bounce 1s ease-in-out}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.rotate{animation:rotate 1s linear infinite}.hover-lift{transition:transform .2s ease-in-out}.hover-lift:hover{transform:translateY(-2px)}.hover-scale{transition:transform .2s ease-in-out}.hover-scale:hover{transform:scale(1.05)}.smooth-transition{transition:all .3s cubic-bezier(.4,0,.2,1)}@keyframes gallery-rotate{0%{transform:perspective(450px) rotateX(-100deg) rotate(0deg)}to{transform:perspective(450px) rotateX(-100deg) rotate(-1turn)}}.gallery-3d{--s:200px;display:grid;transform-style:preserve-3d;position:relative;transform:perspective(600px) rotateX(-100deg) rotate(var(--rotation,0deg));transition:transform .5s ease-in-out}.gallery-3d>img{grid-area:1/1;width:var(--s);aspect-ratio:1;object-fit:cover;border-radius:10px 10px 0 0;transform:rotate(var(--_a)) translateY(120%) rotateX(90deg)}.gallery-3d>img:first-child{--_a:0deg}.gallery-3d>img:nth-child(2){--_a:60deg}.gallery-3d>img:nth-child(3){--_a:120deg}.gallery-3d>img:nth-child(4){--_a:180deg}.gallery-3d>img:nth-child(5){--_a:240deg}.gallery-3d>img:nth-child(6){--_a:300deg}.gallery-3d:before{content:"";position:absolute;inset:-100%;clip-path:polygon(50% 0,calc(50% + .866 * 50%) 25%,calc(50% + .866 * 50%) 75%,50% 100%,calc(50% - .866 * 50%) 75%,calc(50% - .866 * 50%) 25%);background:linear-gradient(45deg,#1a1a1a,#2d2d2d 25%,#1a1a1a 50%,#2d2d2d 75%,#1a1a1a);transform:translateZ(calc(var(--s) / 2)) rotate(90deg);box-shadow:inset 0 0 20px rgba(255,255,255,.1),0 0 40px rgba(138,43,226,.3),0 0 60px rgba(75,0,130,.2)}.gallery-3d:after{content:"";position:absolute;inset:-90%;clip-path:polygon(50% 5%,calc(50% + .866 * 45%) 27.5%,calc(50% + .866 * 45%) 72.5%,50% 95%,calc(50% - .866 * 45%) 72.5%,calc(50% - .866 * 45%) 27.5%);background:radial-gradient(ellipse at center,rgba(255,255,255,.15) 0,rgba(255,255,255,.1) 30%,rgba(138,43,226,.2) 60%,transparent 100%);transform:translateZ(calc(var(--s) / 2 + 1px)) rotate(90deg);animation:stageGlow 3s ease-in-out infinite alternate}@keyframes stageGlow{0%{box-shadow:0 0 30px rgba(138,43,226,.4)}to{box-shadow:0 0 50px rgba(75,0,130,.6)}}