.nst-cart-serve {
	--nst-serve-ink: #17171d;
	--nst-serve-cream: #fffdf0;
	--nst-serve-signal: var(--nst-brand-yellow, #dcff59);
	position: fixed;
	left: 50%;
	top: 50%;
	width: 310px;
	height: 280px;
	transform: translate(-50%, -50%) scale(var(--nst-serve-scale, 1));
	pointer-events: none;
	z-index: 10020;
}
.nst-cart-serve__racket {
	position: absolute;
	left: 76px;
	top: 10px;
	width: 112px;
	height: 230px;
	overflow: visible;
	transform-origin: 56px 216px;
	stroke: var(--nst-serve-ink);
	stroke-width: 3.4;
	stroke-linecap: round;
	stroke-linejoin: round;
	transform: rotate(-22deg);
}
.nst-cart-serve__frame { fill: var(--nst-serve-cream); }
.nst-cart-serve__bed { fill: #f2f1df; stroke-width: 2.4; }
.nst-cart-serve__strings { fill: none; stroke-width: 1.05; stroke-opacity: .65; }
.nst-cart-serve__rim-light { fill: none; stroke: #fff; stroke-width: 2.3; }
.nst-cart-serve__grip { fill: #7397da; }
.nst-cart-serve__wrap { fill: none; stroke-width: 1.8; }
.nst-cart-serve__butt { fill: #3a64a8; }
.nst-cart-serve__ball {
	position: absolute;
	left: calc(var(--nst-serve-contact-x) - 20px);
	top: calc(var(--nst-serve-contact-y) - 20px);
	width: 40px;
	height: 40px;
	display: block;
	transform-origin: center;
}
.nst-cart-serve__ball svg { display: block; width: 100%; height: 100%; overflow: visible; }
.nst-cart-serve__felt { fill: var(--nst-serve-signal); }
.nst-cart-serve__ball-shade { fill: #8da700; opacity: .25; }
.nst-cart-serve__seams { fill: none; stroke: #ffffce; stroke-width: 2.5; stroke-linecap: round; }
.nst-cart-serve__ball-outline { fill: none; stroke: var(--nst-serve-ink); stroke-width: 2.3; }
.nst-cart-serve__impact {
	position: absolute;
	left: calc(var(--nst-serve-contact-x) - 40px);
	top: calc(var(--nst-serve-contact-y) - 40px);
	width: 80px;
	height: 80px;
	fill: none;
	stroke: var(--nst-serve-ink);
	stroke-width: 3;
	stroke-linecap: round;
	opacity: 0;
}
.nst-cart-serve.is-ready .nst-cart-serve__racket { animation: nst-serve-ready 360ms ease-out both; }
.nst-cart-serve.is-serving .nst-cart-serve__racket { animation: nst-serve-swing 660ms linear both; }
.nst-cart-serve.is-serving .nst-cart-serve__impact { animation: nst-serve-impact 460ms linear both; }
.nst-cart-button.is-nst-serve-arrival { animation: nst-serve-receive 260ms ease-out both; }
@keyframes nst-serve-ready {
	from { opacity: 0; transform: rotate(-28deg) translateY(5px); }
	to { opacity: 1; transform: rotate(-22deg) translateY(0); }
}
@keyframes nst-serve-swing {
	0% { opacity: 1; transform: rotate(-22deg); animation-timing-function: ease-out; }
	27.2727% { opacity: 1; transform: rotate(-32deg); animation-timing-function: cubic-bezier(.5,0,.85,.4); }
	48.484848% { opacity: 1; transform: rotate(20deg); animation-timing-function: cubic-bezier(.12,.65,.25,1); }
	75.7576% { opacity: 1; transform: rotate(42deg); animation-timing-function: ease-in; }
	100% { opacity: 0; transform: rotate(45deg) translateY(5px); }
}
@keyframes nst-serve-impact {
	0%, 68% { opacity: 0; transform: scale(.8); }
	70%, 78% { opacity: 1; transform: scale(1); }
	100% { opacity: 0; transform: scale(1.12); }
}
@keyframes nst-serve-receive {
	0%, 100% { transform: translateY(0) rotate(0); }
	45% { transform: translateY(2px) rotate(-4deg); }
}
@media (prefers-reduced-motion: reduce) {
	.nst-cart-serve { display: none !important; }
	.nst-cart-button.is-nst-serve-arrival { animation: none; }
}
