@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{from{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes bounce{0%,20%,53%,100%{transform:translate3d(0,0,0)}40%,43%{transform:translate3d(0,-15px,0)}70%{transform:translate3d(0,-8px,0)}90%{transform:translate3d(0,-3px,0)}}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes wiggle{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}.animate-fadeIn{animation:fadeIn 0.6s ease forwards}.animate-fadeInUp{animation:fadeInUp 0.6s ease forwards}.animate-bounce{animation:bounce 1s ease infinite}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-float{animation:float 3s ease-in-out infinite}.animate-spin{animation:spin 2s linear infinite}.animate-wiggle{animation:wiggle 1s ease-in-out infinite}.delay-1{animation-delay:0.1s}.delay-2{animation-delay:0.2s}.delay-3{animation-delay:0.3s}.delay-4{animation-delay:0.4s}.delay-5{animation-delay:0.5s}.hover-lift{transition:transform 0.3s ease,box-shadow 0.3s ease}.hover-lift:hover{transform:translateY(-5px);box-shadow:0 10px 30px rgb(0 0 0 / .15)}.hover-scale{transition:transform 0.3s ease}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow 0.3s ease}.hover-glow:hover{box-shadow:0 0 20px rgb(126 180 126 / .5)}.btn{position:relative;overflow:hidden}.btn::after{content:'';position:absolute;top:50%;left:50%;width:0;height:0;background:rgb(255 255 255 / .2);border-radius:50%;transform:translate(-50%,-50%);transition:width 0.6s ease,height 0.6s ease}.btn:active::after{width:300px;height:300px}.menu-card{transition:transform 0.4s cubic-bezier(.175,.885,.32,1.275),box-shadow 0.4s ease,border-color 0.3s ease}.menu-card:hover{transform:translateY(-10px) rotate(-1deg)}.menu-card .menu-card-image img{transition:transform 0.6s ease}.menu-card:hover .menu-card-image img{transform:scale(1.1)}[data-animate]{opacity:0;transform:translateY(40px);transition:all 0.8s cubic-bezier(.16,1,.3,1)}[data-animate].animate-in,[data-animate].is-visible{opacity:1;transform:translateY(0)}[data-animate="fade-up"]{transform:translateY(60px)}[data-animate="fade-left"]{transform:translateX(-60px)}[data-animate="fade-right"]{transform:translateX(60px)}[data-animate="scale"]{transform:scale(.8)}[data-animate="fade-left"].animate-in,[data-animate="fade-right"].animate-in{transform:translateX(0)}[data-animate="scale"].animate-in{transform:scale(1)}[data-delay="1"]{transition-delay:0.1s}[data-delay="2"]{transition-delay:0.2s}[data-delay="3"]{transition-delay:0.3s}[data-delay="4"]{transition-delay:0.4s}[data-delay="5"]{transition-delay:0.5s}.skeleton{background:linear-gradient(90deg,var(--sage-100) 25%,var(--sage-200) 50%,var(--sage-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.spinner{width:40px;height:40px;border:3px solid var(--sage-200);border-top-color:var(--sage-600);border-radius:50%;animation:spin 1s linear infinite}.spinner-sm{width:20px;height:20px;border-width:2px}.spinner-lg{width:60px;height:60px;border-width:4px}.gradient-text{background:linear-gradient(135deg,var(--sage-600),var(--tomato));-webkit-background-clip:text;-webkit-text-fill-color:#fff0;background-clip:text}.underline-hover{position:relative}.underline-hover::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--tomato);transition:width 0.3s ease}.underline-hover:hover::after{width:100%}.image-reveal{position:relative;overflow:hidden}.image-reveal::before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:var(--sage-200);transform:translateX(0);transition:transform 0.8s cubic-bezier(.77,0,.175,1);z-index:1}.image-reveal.revealed::before{transform:translateX(100%)}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}[data-animate]{opacity:1;transform:none}}