/* Taco Mex motion layer (on top of the engine's reveals). html.tm-m = on. Off for prefers-reduced-motion. */
.tm-m .plate-sun{animation:tm-spin 70s linear infinite}
.tm-m .plate-sun::after{animation:tm-spin 70s linear infinite reverse}
@keyframes tm-spin{to{transform:rotate(360deg)}}
.tm-m .float{animation:tm-pop .8s cubic-bezier(.3,1.6,.5,1) both}
.tm-m .float--1{animation:tm-pop .8s .9s cubic-bezier(.3,1.6,.5,1) both,tm-bob 5s 1.7s ease-in-out infinite}
.tm-m .float--2{animation:tm-pop .8s 1.1s cubic-bezier(.3,1.6,.5,1) both,tm-bob 6s 1.9s ease-in-out infinite reverse}
.tm-m .float--3{animation:tm-pop .8s 1.3s cubic-bezier(.3,1.6,.5,1) both,tm-bob 5.5s 2.1s ease-in-out infinite}
@keyframes tm-bob{50%{transform:translateY(-14px) rotate(-4deg)}}
@keyframes tm-pop{from{opacity:0;transform:scale(.3) rotate(-20deg)}}
.tm-m .stamp{animation:tm-stamp .7s 1.6s cubic-bezier(.3,1.8,.5,1) both}
@keyframes tm-stamp{from{opacity:0;transform:scale(2.2) rotate(-40deg)}to{transform:rotate(-14deg)}}
.tm-m .stamp:hover{animation:tm-stampspin 1s cubic-bezier(.3,1.4,.5,1)}
@keyframes tm-stampspin{from{transform:rotate(-14deg)}to{transform:rotate(346deg)}}
.tm-m .hero-logo.plate-logo{animation:tg-spin-in 1.1s cubic-bezier(.2,1.3,.4,1) both,tm-wobble 8s 1.6s ease-in-out infinite}
@keyframes tm-wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}

/* papel picado sways */
.tm-m .flag{animation:tm-drop .6s calc(var(--i) * 30ms) cubic-bezier(.3,1.6,.5,1) both,tm-sway 3.6s calc(1s + var(--i) * -.27s) ease-in-out infinite}
@keyframes tm-drop{from{transform:scaleY(0)}}
@keyframes tm-sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.tm-m .promo__tag{animation:tm-jiggle 4s 2s ease-in-out infinite}
@keyframes tm-jiggle{0%,86%,100%{transform:none}89%{transform:rotate(-6deg) scale(1.08)}93%{transform:rotate(5deg) scale(1.08)}96%{transform:rotate(-2deg)}}
.brand .logo-img{transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.brand:hover .logo-img{transform:rotate(-14deg) scale(1.06)}

/* marquee */
.tm-m .tm-marquee__track{animation:tm-marq 30s linear infinite}
.tm-marquee:hover .tm-marquee__track{animation-play-state:paused}
@keyframes tm-marq{to{transform:translateX(-50%)}}

/* menu cards pop in (also every time a category chip is tapped) */
.tm-m .item-card{animation:tm-card .55s cubic-bezier(.3,1.4,.5,1) both}
.tm-m .item-card:nth-child(2){animation-delay:.06s}.tm-m .item-card:nth-child(3){animation-delay:.12s}.tm-m .item-card:nth-child(4){animation-delay:.18s}
.tm-m .item-card:nth-child(5){animation-delay:.24s}.tm-m .item-card:nth-child(6){animation-delay:.3s}.tm-m .item-card:nth-child(n+7){animation-delay:.36s}
@keyframes tm-card{from{opacity:0;transform:translateY(24px) scale(.94)}}
.tm-m .item-card .photo-frame img{animation:tm-art .8s .2s cubic-bezier(.3,1.5,.5,1) both}
@keyframes tm-art{from{opacity:0;transform:translateY(24px) scale(.8)}}
.tm-m .tab{transition:transform .25s cubic-bezier(.3,1.6,.5,1),background .2s,color .2s}
.tm-m .tab:active{transform:scale(.92)}
.tm-m .add-btn.soldout{animation:tm-stamp2 .5s cubic-bezier(.3,1.8,.5,1) both}
@keyframes tm-stamp2{from{transform:scale(1.6) rotate(-10deg)}}

/* taco tuesday tacos drop in */
.tm-m .tt-art .tt-taco{opacity:0}
.tm-m .tt-art.tm-in .tt-taco--1{animation:tm-t1 .9s .1s cubic-bezier(.3,1.6,.5,1) both}
.tm-m .tt-art.tm-in .tt-taco--2{animation:tm-t2 .9s .3s cubic-bezier(.3,1.6,.5,1) both}
.tm-m .tt-art.tm-in .tt-taco--3{animation:tm-t3 .9s .5s cubic-bezier(.3,1.6,.5,1) both}
@keyframes tm-t1{from{opacity:0;transform:translateY(-120px) rotate(-60deg)}to{opacity:1;transform:rotate(-12deg)}}
@keyframes tm-t2{from{opacity:0;transform:translateY(-140px) rotate(50deg)}to{opacity:1;transform:rotate(10deg)}}
@keyframes tm-t3{from{opacity:0;transform:translateY(-160px) rotate(-30deg)}to{opacity:1;transform:rotate(-2deg)}}
.tm-m .tt-deal{animation:tm-jiggle 5s 1s ease-in-out infinite}

/* coming-soon pill + steam */
.tm-m .soon-pill{animation:tm-soon 2.4s ease-in-out infinite}
@keyframes tm-soon{0%,100%{transform:rotate(3deg)}50%{transform:rotate(-2deg) scale(1.08)}}
.tm-m .steam{animation:tm-steam 3s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
@keyframes tm-steam{0%{opacity:0;transform:translateY(6px)}40%{opacity:.8}100%{opacity:0;transform:translateY(-12px)}}

/* hours rows cascade, gram tiles pop */
.tm-m .loc .hours-table tr{opacity:0;transform:translateX(-14px);transition:opacity .5s,transform .5s cubic-bezier(.2,.8,.2,1)}
.tm-m .loc.tm-in .hours-table tr{opacity:1;transform:none}
.tm-m .loc.tm-in .hours-table tr:nth-child(2){transition-delay:.08s}.tm-m .loc.tm-in .hours-table tr:nth-child(3){transition-delay:.16s}.tm-m .loc.tm-in .hours-table tr:nth-child(4){transition-delay:.24s}
.tm-m .gram-tile{opacity:0;transform:scale(.7) rotate(-6deg);transition:opacity .6s,transform .6s cubic-bezier(.3,1.5,.5,1)}
.tm-m .gram-tile.tm-in{opacity:1;transform:none}

/* tilt + shine */
.tm-tiltable{transform-style:preserve-3d;will-change:transform}
.tm-shine{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:3;background:radial-gradient(300px circle at var(--tx,50%) var(--ty,50%),rgba(255,255,255,.4),transparent 55%);opacity:0;transition:opacity .3s}
.tm-tiltable:hover .tm-shine{opacity:1}

/* buttons ripple */
.tm-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);animation:tm-ripple .65s ease-out forwards;pointer-events:none}
@keyframes tm-ripple{to{transform:scale(4);opacity:0}}
.tm-m .fab-call{animation:tm-ring 4s 2s ease-in-out infinite}
@keyframes tm-ring{0%,80%,100%{transform:rotate(0)}83%{transform:rotate(-10deg)}86%{transform:rotate(10deg)}89%{transform:rotate(-8deg)}92%{transform:rotate(6deg)}95%{transform:rotate(0)}}

/* catering form: progress bar, shake, confetti */
.tm-progress{position:absolute;left:34px;right:34px;top:0;height:5px;border-radius:0 0 5px 5px;background:var(--cream-2);overflow:hidden;z-index:1}
.tm-progress span{display:block;height:100%;transform-origin:left;transform:scaleX(var(--fp,0));background:linear-gradient(90deg,var(--red),var(--sun),var(--green));transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.tm-shake{animation:tm-shake .45s}
@keyframes tm-shake{20%{transform:translateX(-8px)}40%{transform:translateX(7px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
.tm-confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:200}
.tg-progress{background:linear-gradient(90deg,#c0281f,#f2b33d,#3f7d20)!important;height:4px}

@media (prefers-reduced-motion: reduce){
  .tm-embers,.tm-confetti{display:none}
  .tm-m .tt-art .tt-taco,.tm-m .gram-tile,.tm-m .loc .hours-table tr{opacity:1!important;transform:none!important}
}
