/**
 * Sticky Action Bar — .espt-block-sticky-bar (.espt-sb)
 *
 * Fixed bottom (or top) CTA bar: optional price / product summary plus action
 * buttons in 17 designs. Mobile-first; nothing may overflow a 320px screen.
 *
 * Classes set by the spec on the block root:
 *   is-position-(bottom|top)  is-devices-(touch|mobile|tablet|all)
 *   is-design-*  is-icon-position-(left|top)  is-(show-label|no-show-label)
 *   is-(equal-width|no-equal-width)  is-(show-info|no-show-info)
 *   is-(bar-border|no-bar-border)  is-bar-skin-*  is-bar-shadow-*
 *   is-reveal-(slide|fade|none)  is-hover-*
 * Added by the JS: .is-on (past the scroll trigger), .is-off (stepped aside
 * while the "hide at" section is on screen), .is-preview (editor).
 * Variables: --sb-z --bar-maxw --bar-margin --bar-radius --gap --pad-y
 *   --pad-x --btn-height --btn-radius --icon-size --label-size
 *   --reveal-speed --bar-bg --bar-bg2 --bar-line --info-color --price-color
 * Per button (inline): --sb-b background, --sb-c text, --sb-i icon.
 */

/* ------------------------------------------------------------- placement */

/* The root itself never takes room in the page — the bar inside is fixed. */
.espt-block-sticky-bar {
	margin: 0;
}

.espt-block-sticky-bar .espt-sb {
	bottom: var(--bar-margin, 0px);
	display: flex;
	justify-content: center;
	left: var(--bar-margin, 0px);
	pointer-events: none;
	position: fixed;
	right: var(--bar-margin, 0px);
	z-index: var(--sb-z, 9996);
}

.espt-block-sticky-bar.is-position-top .espt-sb {
	bottom: auto;
	top: var(--bar-margin, 0px);
}

/* The admin bar is fixed at the top with a higher stacking order, so a top
   bar has to start below it for logged-in visitors (46px, 32px from 783px). */
body.admin-bar .espt-block-sticky-bar.is-position-top .espt-sb:not(.is-preview) {
	top: calc(var(--bar-margin, 0px) + 46px);
}

@media (min-width: 783px) {
	body.admin-bar .espt-block-sticky-bar.is-position-top .espt-sb:not(.is-preview) {
		top: calc(var(--bar-margin, 0px) + 32px);
	}
}

.espt-block-sticky-bar .espt-sb-in {
	/* The two corners that sit against the screen edge stay square while the
	   bar is flush (floating margin 0) and pick the radius up as soon as it
	   is lifted off the edge — clamp() collapses to 0px when --bar-margin is. */
	--sb-r-edge: clamp(0px, calc(var(--bar-margin, 0px) * 100), var(--bar-radius, 0px));
	align-items: stretch;
	background: var(--bar-bg, #fff);
	border-radius: var(--bar-radius, 0px) var(--bar-radius, 0px) var(--sb-r-edge) var(--sb-r-edge);
	display: flex;
	gap: var(--gap, 8px);
	margin: 0 auto;
	max-width: var(--bar-maxw, 640px);
	min-width: 0;
	padding: var(--pad-y, 8px) var(--pad-x, 10px);
	padding-bottom: calc(var(--pad-y, 8px) + env(safe-area-inset-bottom, 0px));
	pointer-events: auto;
	width: 100%;
}

.espt-block-sticky-bar.is-position-top .espt-sb-in {
	border-radius: var(--sb-r-edge) var(--sb-r-edge) var(--bar-radius, 0px) var(--bar-radius, 0px);
	padding-bottom: var(--pad-y, 8px);
	padding-top: calc(var(--pad-y, 8px) + env(safe-area-inset-top, 0px));
}

/* --- reveal (JS adds .is-on once the trigger is passed) --- */

.espt-block-sticky-bar.is-reveal-slide .espt-sb {
	transform: translateY(120%);
	transition: transform var(--reveal-speed, 0.35s) cubic-bezier(0.2, 0.8, 0.2, 1);
	will-change: transform;
}

.espt-block-sticky-bar.is-position-top.is-reveal-slide .espt-sb {
	transform: translateY(-120%);
}

.espt-block-sticky-bar.is-reveal-slide .espt-sb.is-on {
	transform: none;
}

.espt-block-sticky-bar.is-reveal-fade .espt-sb {
	opacity: 0;
	transition: opacity var(--reveal-speed, 0.35s) ease;
}

.espt-block-sticky-bar.is-reveal-fade .espt-sb.is-on {
	opacity: 1;
}

.espt-block-sticky-bar.is-reveal-none .espt-sb:not(.is-on) {
	visibility: hidden;
}

.espt-block-sticky-bar .espt-sb:not(.is-on) .espt-sb-in {
	pointer-events: none;
}

/* --- device visibility (mobile-first: the tablet-only bar starts hidden) --- */

.espt-block-sticky-bar.is-devices-tablet .espt-sb {
	display: none;
}

@media (min-width: 768px) {
	.espt-block-sticky-bar.is-devices-tablet .espt-sb {
		display: flex;
	}

	.espt-block-sticky-bar.is-devices-mobile .espt-sb {
		display: none;
	}
}

@media (min-width: 1025px) {
	.espt-block-sticky-bar.is-devices-touch .espt-sb,
	.espt-block-sticky-bar.is-devices-tablet .espt-sb {
		display: none;
	}
}

/* --- editor preview: in place, always visible, whatever the canvas width --- */

.espt-block-sticky-bar .espt-sb.is-preview {
	bottom: auto;
	display: flex;
	left: auto;
	margin: 0 auto 24px;
	opacity: 1;
	pointer-events: auto;
	position: relative;
	right: auto;
	top: auto;
	transform: none;
	visibility: visible;
}

.espt-block-sticky-bar .espt-sb.is-preview .espt-sb-in {
	pointer-events: auto;
}

/* Dismissed / not needed right now (JS). */
.espt-block.espt-block-sticky-bar .espt-sb.is-off {
	opacity: 0;
	pointer-events: none;
	transform: translateY(120%);
	visibility: hidden;
}

.espt-block.espt-block-sticky-bar.is-position-top .espt-sb.is-off {
	transform: translateY(-120%);
}

.espt-block-sticky-bar .espt-block-note {
	background: var(--bd-soft);
	border: 1px dashed var(--bd-soft-line);
	border-radius: 10px;
	color: var(--bd-muted);
	font-size: 13px;
	margin: 0;
	padding: 12px 14px;
	text-align: center;
}

/* -------------------------------------------------------------- bar skin */

.espt-block-sticky-bar.is-bar-skin-dark .espt-sb-in {
	background: var(--bar-bg, #111827);
	color: #e5e7eb;
}

.espt-block-sticky-bar.is-bar-skin-glass .espt-sb-in {
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	background: var(--bar-bg, rgba(255, 255, 255, 0.78));
}

.espt-block-sticky-bar.is-bar-skin-gradient .espt-sb-in {
	background: linear-gradient(135deg, var(--bar-bg, #ffffff), var(--bar-bg2, #eef2f7));
}

.espt-block-sticky-bar.is-bar-skin-clear .espt-sb-in {
	background: var(--bar-bg, transparent);
}

.espt-block-sticky-bar.is-bar-shadow-soft .espt-sb-in {
	box-shadow: 0 -8px 24px -12px rgba(15, 23, 42, 0.3);
}

.espt-block-sticky-bar.is-bar-shadow-strong .espt-sb-in {
	box-shadow: 0 -14px 34px -12px rgba(15, 23, 42, 0.45);
}

.espt-block-sticky-bar.is-position-top.is-bar-shadow-soft .espt-sb-in {
	box-shadow: 0 8px 24px -12px rgba(15, 23, 42, 0.3);
}

.espt-block-sticky-bar.is-position-top.is-bar-shadow-strong .espt-sb-in {
	box-shadow: 0 14px 34px -12px rgba(15, 23, 42, 0.45);
}

.espt-block.espt-block-sticky-bar.is-bar-skin-clear .espt-sb-in {
	box-shadow: none;
}

.espt-block-sticky-bar.is-bar-border .espt-sb-in {
	border-top: 1px solid var(--bar-line, var(--bd-line));
}

.espt-block-sticky-bar.is-position-top.is-bar-border .espt-sb-in {
	border-bottom: 1px solid var(--bar-line, var(--bd-line));
	border-top: 0;
}

/* Nothing to draw a hairline against once the bar itself is transparent. */
.espt-block.espt-block-sticky-bar.is-bar-border.is-bar-skin-clear .espt-sb-in {
	border: 0;
}

/* --------------------------------------------------------- price / product */

/* The price column never takes more than its share of a 320px row — the
   buttons next to it have to stay tappable. */
.espt-block-sticky-bar .espt-sb-info {
	align-items: center;
	display: flex;
	flex: 0 1 auto;
	gap: 8px;
	max-width: 46%;
	min-width: 0;
}

.espt-block-sticky-bar .espt-sb-info:only-child {
	flex: 1 1 auto;
	max-width: 100%;
}

.espt-block-sticky-bar .espt-sb-thumb {
	border-radius: 8px;
	flex: none;
	height: 38px;
	object-fit: cover;
	width: 38px;
}

.espt-block-sticky-bar .espt-sb-meta {
	display: flex;
	flex-direction: column;
	gap: 1px;
	justify-content: center;
	min-width: 0;
}

.espt-block-sticky-bar .espt-sb-name {
	color: var(--info-color, var(--bd-ink));
	font-size: calc(var(--label-size, 12px) - 1px);
	font-weight: 700;
	line-height: 1.25;
	max-width: 30vw;
	overflow: hidden;
	overflow-wrap: anywhere;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.espt-block-sticky-bar .espt-sb-price {
	align-items: baseline;
	color: var(--price-color, var(--bd-primary));
	display: flex;
	flex-wrap: wrap;
	font-size: calc(var(--label-size, 12px) + 2px);
	font-weight: 800;
	gap: 5px;
	line-height: 1.2;
	min-width: 0;
	overflow-wrap: anywhere;
}

.espt-block-sticky-bar .espt-sb-price del {
	color: var(--bd-muted);
	font-size: 0.82em;
	font-weight: 600;
}

.espt-block-sticky-bar .espt-sb-price ins {
	background: none;
	color: inherit;
	text-decoration: none;
}

.espt-block-sticky-bar .espt-sb-price bdi,
.espt-block-sticky-bar .espt-sb-price .woocommerce-Price-amount {
	white-space: nowrap;
}

/* Woo puts a spoken-only copy of a price range inside the markup. */
.espt-block-sticky-bar .espt-sb-price .screen-reader-text {
	clip: rect(0, 0, 0, 0);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.espt-block-sticky-bar .espt-sb-note {
	color: var(--bd-muted);
	display: none;
	font-size: 10px;
	line-height: 1.3;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.espt-block-sticky-bar.is-bar-skin-dark .espt-sb-name {
	color: var(--info-color, #f8fafc);
}

.espt-block-sticky-bar.is-bar-skin-dark .espt-sb-note,
.espt-block-sticky-bar.is-bar-skin-dark .espt-sb-price del {
	color: #94a3b8;
}

.espt-block-sticky-bar.is-bar-skin-dark .espt-sb-price {
	color: var(--price-color, #fbbf24);
}

/* ------------------------------------------------------------- buttons */

.espt-block-sticky-bar .espt-sb-btns {
	display: flex;
	flex: 1 1 auto;
	gap: var(--gap, 8px);
	min-width: 0;
}

/* With a price column beside them the buttons keep the larger half. */
.espt-block-sticky-bar.is-show-info .espt-sb-btns {
	flex: 1 1 54%;
}

/* Free-width buttons wrap onto more rows — cap the stack so a long list can
   never grow into a full-screen overlay on a phone. The inset padding (undone
   by the negative margin) keeps the raised / glow / 3D shadows off the edge of
   the scroll box so they are not clipped. */
.espt-block-sticky-bar.no-equal-width .espt-sb-btns {
	flex-wrap: wrap;
	justify-content: center;
	margin: -6px;
	max-height: 44vh;
	overflow-y: auto;
	padding: 6px;
}

.espt-block-sticky-bar.no-equal-width .espt-sb-btn {
	flex: 0 1 auto;
	min-width: 0;
}

.espt-block-sticky-bar.is-equal-width .espt-sb-btn {
	flex: 1 1 0;
	min-width: 0;
}

.espt-block-sticky-bar .espt-sb-btn {
	--sb-b: var(--bd-primary);
	--sb-c: #ffffff;
	align-items: center;
	background: var(--sb-b);
	border: 0;
	border-radius: var(--btn-radius, 12px);
	color: var(--sb-c);
	display: flex;
	flex-direction: row;
	font-size: var(--label-size, 12px);
	font-weight: 700;
	gap: 8px;
	justify-content: center;
	line-height: 1.15;
	min-height: var(--btn-height, 52px);
	min-width: 0;
	padding: 6px 10px;
	position: relative;
	-webkit-tap-highlight-color: transparent;
	text-align: center;
	text-decoration: none;
	transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease, color 0.18s ease, filter 0.18s ease;
}

.espt-block-sticky-bar .espt-sb-btn:hover,
.espt-block-sticky-bar .espt-sb-btn:focus,
.espt-block-sticky-bar .espt-sb-btn:visited {
	color: var(--sb-c);
	text-decoration: none;
}

/* currentColor is often the button's own fill, which vanishes against it —
   ring in the button's brand colour so the focus is visible on every design. */
.espt-block-sticky-bar .espt-sb-btn:focus-visible {
	outline: 3px solid var(--sb-b, currentColor);
	outline-offset: 2px;
}

.espt-block-sticky-bar .espt-sb-ico {
	align-items: center;
	color: var(--sb-i, currentColor);
	display: inline-flex;
	flex: none;
	font-size: var(--icon-size, 18px);
	justify-content: center;
	line-height: 1;
}

/* min-width:0 is what lets a flex item shrink past its own text — without it
   a long label pushes the icon out of the button on a 320px row. */
.espt-block-sticky-bar .espt-sb-lbl {
	max-width: 100%;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Icon-only bar: the label is clipped rather than display:none so the link
   keeps an accessible name (display:none drops it from the a11y tree). */
.espt-block-sticky-bar.no-show-label .espt-sb-lbl {
	clip: rect(0, 0, 0, 0);
	height: 1px;
	overflow: hidden;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.espt-block-sticky-bar.is-icon-position-top .espt-sb-btn {
	flex-direction: column;
	gap: 3px;
}

/* ------------------------------------------------- the 17 button designs */

.espt-block-sticky-bar.is-design-gradient .espt-sb-btn {
	background: var(--sb-b);
	background: linear-gradient(135deg, var(--sb-b), color-mix(in srgb, var(--sb-b) 62%, #000));
}

.espt-block-sticky-bar.is-design-soft .espt-sb-btn {
	background: var(--sb-b);
	background: color-mix(in srgb, var(--sb-b) 15%, transparent);
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-outline .espt-sb-btn {
	background: transparent;
	border: 2px solid var(--sb-b);
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-ghost .espt-sb-btn {
	background: transparent;
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-ghost .espt-sb-btn:active {
	background: color-mix(in srgb, var(--sb-b) 12%, transparent);
}

.espt-block-sticky-bar.is-design-glass .espt-sb-btn {
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	background: rgba(255, 255, 255, 0.35);
	background: color-mix(in srgb, var(--sb-b) 20%, rgba(255, 255, 255, 0.4));
	border: 1px solid rgba(255, 255, 255, 0.45);
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-pill .espt-sb-btn {
	border-radius: 999px;
}

.espt-block-sticky-bar.is-design-square .espt-sb-btn {
	border-radius: 0;
}

.espt-block-sticky-bar.is-design-raised .espt-sb-btn {
	box-shadow: 0 7px 16px -5px color-mix(in srgb, var(--sb-b) 65%, transparent);
}

.espt-block-sticky-bar.is-design-edge3d .espt-sb-btn {
	box-shadow: 0 4px 0 0 color-mix(in srgb, var(--sb-b) 55%, #000);
	margin-bottom: 4px;
}

.espt-block-sticky-bar.is-design-edge3d .espt-sb-btn:active {
	box-shadow: 0 1px 0 0 color-mix(in srgb, var(--sb-b) 55%, #000);
	transform: translateY(3px);
}

.espt-block-sticky-bar.is-design-glow .espt-sb-btn {
	box-shadow: 0 0 16px -1px color-mix(in srgb, var(--sb-b) 70%, transparent);
}

.espt-block-sticky-bar.is-design-neumorph .espt-sb-btn {
	background: #e9edf2;
	box-shadow: 4px 4px 9px #c7ccd4, -4px -4px 9px #ffffff;
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-duotone .espt-sb-btn {
	background: var(--sb-b);
	background: color-mix(in srgb, var(--sb-b) 12%, transparent);
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-duotone .espt-sb-ico {
	background: var(--sb-b);
	border-radius: 50%;
	color: #fff;
	height: 1.9em;
	width: 1.9em;
}

.espt-block-sticky-bar.is-design-accent .espt-sb-btn {
	background: #ffffff;
	border-top: 3px solid var(--sb-b);
	box-shadow: 0 4px 12px -6px rgba(15, 23, 42, 0.35);
	color: #111827;
}

.espt-block-sticky-bar.is-design-underline .espt-sb-btn {
	background: transparent;
	border-bottom: 2px solid transparent;
	border-radius: 0;
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-underline .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-underline .espt-sb-btn:active {
	border-bottom-color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-minimal .espt-sb-btn {
	background: transparent;
	color: var(--sb-b);
	font-weight: 600;
	min-height: calc(var(--btn-height, 52px) - 10px);
}

.espt-block-sticky-bar.is-design-shine .espt-sb-btn {
	overflow: hidden;
}

.espt-block-sticky-bar.is-design-shine .espt-sb-btn::after {
	animation: espt-sb-shine 3.2s ease-in-out infinite;
	background: linear-gradient(120deg, transparent, rgba(255, 255, 255, 0.55), transparent);
	content: "";
	height: 100%;
	left: -60%;
	pointer-events: none;
	position: absolute;
	top: 0;
	transform: skewX(-20deg);
	width: 45%;
}

@keyframes espt-sb-shine {
	0% { left: -60%; }
	55%, 100% { left: 130%; }
}

/* Designs whose face is tinted rather than filled: the icon takes the brand
   colour unless the row sets its own. */
.espt-block-sticky-bar.is-design-soft .espt-sb-ico,
.espt-block-sticky-bar.is-design-outline .espt-sb-ico,
.espt-block-sticky-bar.is-design-ghost .espt-sb-ico,
.espt-block-sticky-bar.is-design-glass .espt-sb-ico,
.espt-block-sticky-bar.is-design-neumorph .espt-sb-ico,
.espt-block-sticky-bar.is-design-accent .espt-sb-ico,
.espt-block-sticky-bar.is-design-underline .espt-sb-ico,
.espt-block-sticky-bar.is-design-minimal .espt-sb-ico {
	color: var(--sb-i, var(--sb-b));
}

.espt-block-sticky-bar.is-design-soft .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-outline .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-ghost .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-glass .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-neumorph .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-underline .espt-sb-btn:hover,
.espt-block-sticky-bar.is-design-minimal .espt-sb-btn:hover {
	color: var(--sb-b);
}

.espt-block-sticky-bar.is-design-accent .espt-sb-btn:hover {
	color: #111827;
}

/* --------------------------------------------------------- hover / press */

.espt-block-sticky-bar.is-hover-lift .espt-sb-btn:hover,
.espt-block-sticky-bar.is-hover-lift .espt-sb-btn:focus-visible {
	transform: translateY(-3px);
}

.espt-block-sticky-bar.is-hover-scale .espt-sb-btn:hover,
.espt-block-sticky-bar.is-hover-scale .espt-sb-btn:focus-visible {
	transform: scale(1.05);
}

.espt-block-sticky-bar.is-hover-glow .espt-sb-btn:hover,
.espt-block-sticky-bar.is-hover-glow .espt-sb-btn:focus-visible {
	box-shadow: 0 0 18px -1px color-mix(in srgb, var(--sb-b) 75%, transparent);
}

.espt-block-sticky-bar.is-hover-sink .espt-sb-btn:active {
	filter: brightness(0.94);
	transform: translateY(2px);
}

/* ------------------------------------------------------ attention pulse */

.espt-block-sticky-bar .espt-sb-btn.is-pulse::before {
	animation: espt-sb-pulse 1.8s ease-out infinite;
	border-radius: inherit;
	box-shadow: 0 0 0 0 color-mix(in srgb, var(--sb-b) 55%, transparent);
	content: "";
	inset: 0;
	pointer-events: none;
	position: absolute;
}

@keyframes espt-sb-pulse {
	0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--sb-b) 55%, transparent); }
	70% { box-shadow: 0 0 0 13px transparent; }
	100% { box-shadow: 0 0 0 0 transparent; }
}

/* --------------------------------------------------- per-button icon anim */

.espt-block-sticky-bar .espt-sb-btn.is-ianim-beat .espt-sb-ico {
	animation: espt-sb-beat 1.2s ease-in-out infinite;
}

@keyframes espt-sb-beat {
	0%, 100% { transform: scale(1); }
	30% { transform: scale(1.18); }
	60% { transform: scale(0.95); }
}

.espt-block-sticky-bar .espt-sb-btn.is-ianim-bounce .espt-sb-ico {
	animation: espt-sb-bounce 1.4s ease infinite;
}

@keyframes espt-sb-bounce {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-4px); }
}

.espt-block-sticky-bar .espt-sb-btn.is-ianim-spin .espt-sb-ico {
	animation: espt-sb-spin 2.4s linear infinite;
}

@keyframes espt-sb-spin {
	to { transform: rotate(360deg); }
}

.espt-block-sticky-bar .espt-sb-btn.is-ianim-tada .espt-sb-ico {
	animation: espt-sb-tada 2s ease infinite;
}

@keyframes espt-sb-tada {
	0%, 100% { transform: scale(1) rotate(0); }
	10%, 20% { transform: scale(0.9) rotate(-6deg); }
	30%, 50%, 70%, 90% { transform: scale(1.1) rotate(6deg); }
	40%, 60%, 80% { transform: scale(1.1) rotate(-6deg); }
}

/* ------------------------------------------------------- tablet & desktop */

@media (min-width: 768px) {
	.espt-block-sticky-bar .espt-sb-note {
		display: block;
	}

	.espt-block-sticky-bar .espt-sb-name {
		max-width: 26ch;
	}

	.espt-block-sticky-bar .espt-sb-info {
		gap: 10px;
		max-width: 52%;
		padding-right: 4px;
	}

	.espt-block-sticky-bar .espt-sb-thumb {
		height: 44px;
		width: 44px;
	}

	.espt-block-sticky-bar .espt-sb-btn {
		padding: 6px 16px;
	}
}

@media (min-width: 1024px) {
	.espt-block-sticky-bar .espt-sb-thumb {
		height: 48px;
		width: 48px;
	}
}

/* ------------------------------------------------------- reduced motion */

@media (prefers-reduced-motion: reduce) {
	.espt-block-sticky-bar .espt-sb,
	.espt-block-sticky-bar .espt-sb-btn,
	.espt-block-sticky-bar .espt-sb-ico,
	.espt-block-sticky-bar .espt-sb-btn.is-pulse::before,
	.espt-block-sticky-bar.is-design-shine .espt-sb-btn::after {
		animation: none;
		transition: none;
	}

	.espt-block-sticky-bar .espt-sb-btn:hover,
	.espt-block-sticky-bar .espt-sb-btn:focus-visible {
		transform: none;
	}
}
