/* Floating contact widget — GlobusPost */
.gp-contact {
	position: fixed;
	right: 28px;
	bottom: 36px;
	z-index: 1040;
	font-family: inherit;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 12px;
	pointer-events: none;
}

.gp-contact * {
	box-sizing: border-box;
}

.gp-contact__panel {
	pointer-events: auto;
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 220px;
	padding: 12px;
	background: #fff;
	border-radius: 16px;
	box-shadow: 0 10px 32px rgba(18, 55, 67, 0.18);
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px) scale(0.96);
	transform-origin: bottom right;
	transition: opacity 0.22s ease, transform 0.22s ease, visibility 0.22s;
}

.gp-contact.is-open .gp-contact__panel {
	opacity: 1;
	visibility: visible;
	transform: translateY(0) scale(1);
}

.gp-contact__link {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 12px;
	border-radius: 12px;
	text-decoration: none;
	color: #123743;
	background: #f5f7f2;
	transition: background 0.15s ease, transform 0.15s ease;
}

.gp-contact__link:hover,
.gp-contact__link:focus {
	background: #e8f0dc;
	color: #123743;
	text-decoration: none;
	transform: translateX(-2px);
	outline: none;
}

.gp-contact__icon {
	flex-shrink: 0;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.gp-contact__icon svg {
	width: 20px;
	height: 20px;
	display: block;
}

.gp-contact__icon--tg {
	background: #2AABEE;
	color: #fff;
}

.gp-contact__icon--wa {
	background: #25D366;
	color: #fff;
}

.gp-contact__icon--tel {
	background: #79B84A;
	color: #fff;
}

.gp-contact__meta {
	display: flex;
	flex-direction: column;
	min-width: 0;
	line-height: 1.25;
}

.gp-contact__label {
	font-size: 14px;
	font-weight: 600;
}

.gp-contact__sub {
	font-size: 12px;
	color: #7F7F84;
	margin-top: 2px;
	white-space: nowrap;
}

.gp-contact__fab {
	pointer-events: auto;
	position: relative;
	width: 58px;
	height: 58px;
	border: 0;
	border-radius: 50%;
	cursor: pointer;
	background: #79B84A;
	color: #fff;
	box-shadow: 0 8px 22px rgba(78, 124, 44, 0.35);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background 0.2s ease, transform 0.15s ease;
	-webkit-tap-highlight-color: transparent;
}

.gp-contact__fab:hover {
	background: #4E7C2C;
}

.gp-contact__fab:focus {
	outline: 2px solid #CAE393;
	outline-offset: 3px;
}

.gp-contact__fab-icon {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: opacity 0.2s ease, transform 0.2s ease;
}

.gp-contact__fab-icon svg {
	width: 26px;
	height: 26px;
}

.gp-contact__fab-icon--close {
	opacity: 0;
	transform: rotate(-90deg) scale(0.6);
}

.gp-contact.is-open .gp-contact__fab-icon--chat {
	opacity: 0;
	transform: rotate(90deg) scale(0.6);
}

.gp-contact.is-open .gp-contact__fab-icon--close {
	opacity: 1;
	transform: rotate(0) scale(1);
}

/* Soft pulse — only when closed */
.gp-contact__fab::before {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: #79B84A;
	z-index: -1;
	animation: gp-contact-pulse 2.4s ease-out infinite;
	pointer-events: none;
}

.gp-contact.is-open .gp-contact__fab::before {
	animation: none;
	opacity: 0;
}

@keyframes gp-contact-pulse {
	0% {
		transform: scale(1);
		opacity: 0.55;
	}
	70% {
		transform: scale(1.55);
		opacity: 0;
	}
	100% {
		transform: scale(1.55);
		opacity: 0;
	}
}

@media (max-width: 575.98px) {
	.gp-contact {
		right: 20px;
		bottom: 28px;
	}

	.gp-contact__panel {
		min-width: 200px;
	}

	.gp-contact__fab {
		width: 54px;
		height: 54px;
	}
}

/* Lift above cookie banner when visible */
body:has(.cookie-consent:not([hidden])) .gp-contact {
	bottom: 122px;
}

@media (max-width: 575.98px) {
	body:has(.cookie-consent:not([hidden])) .gp-contact {
		bottom: 152px;
	}
}
