/* ==========================================================================
   Floating action button (WhatsApp-style)
   ========================================================================== */

.stw-floating-btn {
	--stw-fab-size: 56px;
	--stw-fab-bg: #25d366;
	--stw-fab-icon: #ffffff;
	--stw-fab-offset-x: 20px;
	--stw-fab-offset-y: 20px;
	position: fixed;
	z-index: 9990;
	pointer-events: none;
}

.stw-floating-btn--bottom-right {
	inset-block-end: var(--stw-fab-offset-y);
	inset-inline-end: var(--stw-fab-offset-x);
}

.stw-floating-btn--bottom-left {
	inset-block-end: var(--stw-fab-offset-y);
	inset-inline-start: var(--stw-fab-offset-x);
}

.stw-floating-btn--top-right {
	inset-block-start: var(--stw-fab-offset-y);
	inset-inline-end: var(--stw-fab-offset-x);
}

.stw-floating-btn--top-left {
	inset-block-start: var(--stw-fab-offset-y);
	inset-inline-start: var(--stw-fab-offset-x);
}

.stw-floating-btn__link {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: var(--stw-fab-size);
	block-size: var(--stw-fab-size);
	border-radius: 50%;
	background: var(--stw-fab-bg);
	color: var(--stw-fab-icon);
	box-shadow: 0 10px 28px rgba(15, 23, 42, 0.22);
	text-decoration: none;
	pointer-events: auto;
	transition: transform var(--transition-fast), box-shadow var(--transition-fast), filter var(--transition-fast);
}

.stw-floating-btn__link:hover,
.stw-floating-btn__link:focus-visible {
	transform: translateY(-2px) scale(1.04);
	box-shadow: 0 14px 34px rgba(15, 23, 42, 0.28);
	filter: brightness(1.05);
}

.stw-floating-btn__link:focus-visible {
	outline: 2px solid color-mix(in srgb, var(--stw-fab-bg) 70%, #fff);
	outline-offset: 3px;
}

.stw-floating-btn__icon {
	inline-size: calc(var(--stw-fab-size) * 0.46);
	block-size: calc(var(--stw-fab-size) * 0.46);
}

.stw-floating-btn__tooltip {
	position: absolute;
	inset-block-end: calc(100% + 10px);
	inset-inline-end: 0;
	padding: 8px 12px;
	border-radius: calc(var(--radius-corner) - 2px);
	background: var(--color-ink, #111827);
	color: #fff;
	font-size: 0.82rem;
	line-height: 1.3;
	white-space: nowrap;
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity var(--transition-fast), transform var(--transition-fast), visibility var(--transition-fast);
	pointer-events: none;
	box-shadow: 0 8px 20px rgba(15, 23, 42, 0.18);
}

.stw-floating-btn--bottom-left .stw-floating-btn__tooltip,
.stw-floating-btn--top-left .stw-floating-btn__tooltip {
	inset-inline-end: auto;
	inset-inline-start: 0;
}

.stw-floating-btn:hover .stw-floating-btn__tooltip,
.stw-floating-btn:focus-within .stw-floating-btn__tooltip {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.stw-floating-btn--pulse .stw-floating-btn__link::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: var(--stw-fab-bg);
	animation: stw-fab-pulse 2.4s ease-out infinite;
	z-index: -1;
}

@keyframes stw-fab-pulse {
	0% {
		transform: scale(1);
		opacity: 0.55;
	}
	70% {
		transform: scale(1.45);
		opacity: 0;
	}
	100% {
		transform: scale(1.45);
		opacity: 0;
	}
}

.stw-floating-btn--hide-mobile {
	display: none;
}

@media (min-width: 768px) {
	.stw-floating-btn--hide-mobile {
		display: block;
	}

	.stw-floating-btn--hide-desktop {
		display: none;
	}
}

@media (max-width: 767px) {
	.stw-floating-btn--hide-desktop {
		display: block;
	}
}

@media (prefers-reduced-motion: reduce) {
	.stw-floating-btn--pulse .stw-floating-btn__link::before {
		animation: none;
	}

	.stw-floating-btn__link:hover,
	.stw-floating-btn__link:focus-visible {
		transform: none;
	}
}
