/* Magic lights + larder cart. Primal Pastures preview. transform/opacity only. */
[data-magic-lights]{position:relative}
.ml-layer{position:absolute;inset:-12px;pointer-events:none;overflow:visible;z-index:2}
.ml-p{position:absolute;left:0;top:0;width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);border-radius:50%;
 background:radial-gradient(circle,var(--k,#E8C170) 0 30%,var(--c) 45%,transparent 72%);box-shadow:0 0 calc(var(--s)*1.5) calc(var(--s)*.6) var(--g),0 0 1px rgba(120,80,10,.35);
 opacity:0;will-change:transform,opacity;animation:var(--a) var(--d) var(--e) forwards}
.ml-star{border-radius:0;background:url(assets/larder/sparkles/sparkle-star.svg) center/contain no-repeat;box-shadow:none;filter:drop-shadow(0 0 2px var(--g)) drop-shadow(0 0 1px rgba(120,80,10,.5))}
.ml-ast{border-radius:0;background:url(assets/larder/sparkles/sparkle-asterisk.svg) center/contain no-repeat;box-shadow:0 0 calc(var(--s)*1.2) rgba(217,164,65,.3)}
@keyframes ml-twinkle{0%{opacity:0;transform:translate(var(--x),var(--y)) scale(.4)}25%{opacity:.95;transform:translate(var(--x),var(--y)) scale(1)}
 45%{opacity:.45}65%{opacity:.85;transform:translate(var(--x),var(--y)) scale(.9)}100%{opacity:0;transform:translate(var(--x),var(--y)) scale(.3)}}
@keyframes ml-drift{0%{opacity:0;transform:translate(var(--x),var(--y)) scale(.6)}20%{opacity:.85}
 80%{opacity:.6}100%{opacity:0;transform:translate(calc(var(--x) + var(--dx)),calc(var(--y) + var(--dy))) scale(.8)}}
@keyframes ml-burst{0%{opacity:0;transform:translate(var(--x),var(--y)) scale(.2) rotate(0)}20%{opacity:1;transform:translate(var(--x),var(--y)) scale(1.1)}
 100%{opacity:0;transform:translate(calc(var(--x) + var(--dx)),calc(var(--y) + var(--dy))) scale(.3) rotate(90deg)}}
/* Cart (Farm Graphics cart-icon.svg, inlined): basket+wheels roll, wheel groups (circle + cross spoke) spin, items settle offset. Once per open. */
.larder-cart{width:20px;height:20px;vertical-align:-4px;overflow:visible;color:#1a1a1a}
.larder-cart .basket,.larder-cart .wheels,.larder-cart .wheel-l,.larder-cart .wheel-r,.larder-cart .item{transform-box:fill-box;transform-origin:50% 50%}
.ml-cart-go .basket,.ml-cart-go .wheels,.ml-cart-go .items{animation:ml-cart-roll .85s cubic-bezier(.34,1.4,.64,1) both}
.ml-cart-go .wheel-l,.ml-cart-go .wheel-r{animation:ml-cart-wheel .85s cubic-bezier(.22,1,.36,1) both}
.ml-cart-go .item-book{animation:ml-cart-item .6s cubic-bezier(.3,1.5,.6,1) .3s both}
.ml-cart-go .item-jar{animation:ml-cart-jar .6s cubic-bezier(.3,1.5,.6,1) .42s both}
@keyframes ml-cart-roll{0%{transform:translateX(-6px) rotate(-6deg)}40%{transform:translateX(2px) rotate(3deg)}60%{transform:translateY(-3px)}80%{transform:translateY(.5px) rotate(-1deg)}100%{transform:none}}
@keyframes ml-cart-wheel{0%{transform:rotate(-270deg)}100%{transform:rotate(0)}}
@keyframes ml-cart-item{0%{transform:none}40%{transform:translateY(-8px) rotate(-6deg)}75%{transform:translateY(1px) rotate(2deg)}100%{transform:none}}
@keyframes ml-cart-jar{0%{transform:none}40%{transform:translateY(-10px) rotate(8deg)}75%{transform:translateY(1px) rotate(-3deg)}100%{transform:none}}
@media (prefers-reduced-motion:reduce){
 .ml-layer{display:none}
 .ml-cart-go,.ml-cart-go *{animation:none!important}
 [data-magic-lights]>a,[data-magic-lights]:is(a){text-shadow:0 0 8px rgba(217,164,65,.45)}
 [data-larder-cart],.larder-cart{filter:drop-shadow(0 0 3px rgba(217,164,65,.6))}
}
