.social-media-floating-wrap {
	position: fixed;
	z-index: 99999;
	display: flex;
	flex-direction: column;
	align-items: center;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

/* ---------- Position variants ---------- */

.social-media-floating-wrap.social-media-pos-bottom-right {
	right: var(--social-media-offset-x, 20px);
	bottom: var(--social-media-offset-y, 20px);
}

.social-media-floating-wrap.social-media-pos-bottom-left {
	left: var(--social-media-offset-x, 20px);
	bottom: var(--social-media-offset-y, 20px);
}

.social-media-floating-wrap.social-media-pos-top-right {
	right: var(--social-media-offset-x, 20px);
	top: var(--social-media-offset-y, 20px);
}

.social-media-floating-wrap.social-media-pos-top-left {
	left: var(--social-media-offset-x, 20px);
	top: var(--social-media-offset-y, 20px);
}

.social-media-sub-buttons {
	display: flex;
	flex-direction: column-reverse;
	align-items: center;
	margin-bottom: 12px;
	gap: 12px;
}

/* Top-anchored buttons: main button first, sub-buttons expand downward. */
.social-media-floating-wrap.social-media-pos-top-right,
.social-media-floating-wrap.social-media-pos-top-left {
	flex-direction: column;
}

.social-media-floating-wrap.social-media-pos-top-right .social-media-main-btn,
.social-media-floating-wrap.social-media-pos-top-left .social-media-main-btn {
	order: -1;
	margin-bottom: 12px;
}

.social-media-floating-wrap.social-media-pos-top-right .social-media-sub-buttons,
.social-media-floating-wrap.social-media-pos-top-left .social-media-sub-buttons {
	flex-direction: column;
	margin-bottom: 0;
}

.social-media-floating-wrap.social-media-pos-top-right .social-media-btn,
.social-media-floating-wrap.social-media-pos-top-left .social-media-btn {
	transform: translateY(-16px) scale(0.6);
}

.social-media-floating-wrap.social-media-pos-top-right.social-media-open .social-media-btn,
.social-media-floating-wrap.social-media-pos-top-left.social-media-open .social-media-btn {
	transform: translateY(0) scale(1);
}

/* ---------- Size presets ---------- */

.social-media-floating-wrap.social-media-size-small {
	--social-media-main-size: 46px;
	--social-media-btn-size: 36px;
	--social-media-icon-size: 20px;
}

.social-media-floating-wrap.social-media-size-medium {
	--social-media-main-size: 56px;
	--social-media-btn-size: 44px;
	--social-media-icon-size: 25px;
}

.social-media-floating-wrap.social-media-size-large {
	--social-media-main-size: 68px;
	--social-media-btn-size: 52px;
	--social-media-icon-size: 30px;
}

.social-media-btn {
	width: var(--social-media-btn-size, 44px);
	height: var(--social-media-btn-size, 44px);
	border-radius: 50%;
	background: var(--social-media-btn-color, #666);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.14);
	text-decoration: none;
	opacity: 0;
	transform: translateY(16px) scale(0.6);
	pointer-events: none;
	transition: opacity 0.2s ease, transform 0.2s ease;
	overflow: hidden;
}

.social-media-btn svg,
.social-media-btn img {
	width: var(--social-media-icon-size, 20px);
	height: var(--social-media-icon-size, 20px);
	object-fit: contain;
}

.social-media-floating-wrap.social-media-open .social-media-btn {
	opacity: 1;
	transform: translateY(0) scale(1);
	pointer-events: auto;
}

.social-media-btn {
	transition-delay: calc(var(--social-media-i, 0) * 0.04s);
}

.social-media-btn:hover {
	filter: brightness(1.1);
	transform: translateY(0) scale(1.08);
}

.social-media-floating-wrap.social-media-open .social-media-btn:hover {
	transform: translateY(0) scale(1.08);
}

.social-media-main-btn {
	position: relative;
	width: var(--social-media-main-size, 56px);
	height: var(--social-media-main-size, 56px);
	border-radius: 50%;
	border: none;
	background: var(--social-media-main-color, #2563eb);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.18);
	overflow: visible;
}

.social-media-main-btn:hover {
	filter: brightness(1.08);
}

/* Periodic attention ping so the button reads as interactive/clickable. */
.social-media-main-btn::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: inherit;
	opacity: 0;
	pointer-events: none;
	animation: social-media-ping 3.6s ease-out infinite;
}

@keyframes social-media-ping {
	0% {
		transform: scale(1);
		opacity: 0.3;
	}
	70%,
	100% {
		transform: scale(1.3);
		opacity: 0;
	}
}

.social-media-floating-wrap.social-media-open .social-media-main-btn::before {
	animation: none;
	opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
	.social-media-main-btn::before {
		animation: none;
	}
}

/* ---------- Single-button mode ---------- */

.social-media-floating-wrap.social-media-single .social-media-btn.social-media-main-btn {
	opacity: 1;
	transform: none;
	pointer-events: auto;
	background: var(--social-media-btn-color, #666);
}

.social-media-floating-wrap.social-media-single .social-media-btn.social-media-main-btn:hover {
	transform: scale(1.08);
}

.social-media-icon-contact,
.social-media-icon-close,
.social-media-main-custom-icon {
	width: calc(var(--social-media-icon-size, 20px) + 4px);
	height: calc(var(--social-media-icon-size, 20px) + 4px);
	object-fit: contain;
}

.social-media-icon-close {
	display: none;
}

.social-media-floating-wrap.social-media-open .social-media-icon-contact {
	display: none;
}

.social-media-floating-wrap.social-media-open .social-media-icon-close {
	display: block;
}

@media (max-width: 480px) {
	.social-media-main-btn {
		width: calc(var(--social-media-main-size, 56px) - 6px);
		height: calc(var(--social-media-main-size, 56px) - 6px);
	}
	.social-media-btn {
		width: calc(var(--social-media-btn-size, 44px) - 4px);
		height: calc(var(--social-media-btn-size, 44px) - 4px);
	}
}
