/* Floating WhatsApp FAB — clear footer credit + safe-area; CSS-only motion */
.dgf-wa{
	--dgf-wa-bottom: calc(2.75rem + env(safe-area-inset-bottom, 0px));
	position:fixed;
	right:max(16px,env(safe-area-inset-right));
	bottom:var(--dgf-wa-bottom);
	z-index:9999;
	display:inline-flex;
	align-items:center;
	gap:.5rem;
	min-width:44px;
	min-height:44px;
	padding:.65rem .9rem;
	border-radius:999px;
	background:#25D366;
	color:#fff;
	text-decoration:none;
	font-family:inherit;
	font-size:.875rem;
	font-weight:600;
	box-shadow:0 8px 24px rgba(0,0,0,.18);
	isolation:isolate;
	opacity:0;
	pointer-events:none;
	transform:translateY(14px) scale(.94);
	transition:
		opacity .45s cubic-bezier(.22,1,.36,1),
		transform .45s cubic-bezier(.22,1,.36,1),
		bottom .28s cubic-bezier(.22,1,.36,1),
		filter .2s ease,
		box-shadow .2s ease;
	animation:dgf-wa-fallback .01s linear 3s forwards;
}
@media (max-width:767px){
	.dgf-wa{
		--dgf-wa-bottom: calc(3.25rem + env(safe-area-inset-bottom, 0px));
	}
}
/* Near footer / DW Visual credit — lift so credit stays clickable */
html.dgf-wa-lift .dgf-wa,
.dgf-wa.is-lift{
	--dgf-wa-bottom: calc(4.85rem + env(safe-area-inset-bottom, 0px));
}
@media (max-width:767px){
	html.dgf-wa-lift .dgf-wa,
	.dgf-wa.is-lift{
		--dgf-wa-bottom: calc(5.25rem + env(safe-area-inset-bottom, 0px));
	}
}
.dgf-wa::before,
.dgf-wa::after{
	content:"";
	position:absolute;
	inset:0;
	border-radius:inherit;
	background:#25D366;
	z-index:-1;
	pointer-events:none;
	opacity:0;
	transform:scale(1);
}
@keyframes dgf-wa-fallback{
	to{opacity:1;pointer-events:auto;transform:none}
}
@keyframes dgf-wa-pulse{
	0%{transform:scale(1);opacity:.42}
	70%{transform:scale(1.55);opacity:0}
	100%{transform:scale(1.55);opacity:0}
}
/* Reveal (idle JS → .is-ready; fallback CSS after 3s if no JS) */
.dgf-wa.is-ready{
	opacity:1;
	pointer-events:auto;
	transform:none;
	animation:none;
}
.dgf-wa.is-ready::before,
.dgf-wa:not(.is-ready)::before{
	animation:dgf-wa-pulse 2.8s ease-out infinite;
}
.dgf-wa.is-ready::after,
.dgf-wa:not(.is-ready)::after{
	animation:dgf-wa-pulse 2.8s ease-out .95s infinite;
}
/* No-JS: wait for fallback reveal before ripples */
.dgf-wa:not(.is-ready)::before{animation-delay:3.05s}
.dgf-wa:not(.is-ready)::after{animation-delay:4s}
.dgf-wa.is-ready::before{animation-delay:.35s}
.dgf-wa.is-ready::after{animation-delay:1.3s}
.dgf-wa:hover,
.dgf-wa:focus-visible{
	transform:scale(1.055);
	filter:brightness(1.06);
	box-shadow:0 10px 28px rgba(0,0,0,.22);
	outline:2px solid #0b3d2e;
	outline-offset:2px;
	color:#fff;
}
.dgf-wa.is-ready:hover,
.dgf-wa.is-ready:focus-visible{
	transform:scale(1.055);
}
.dgf-wa__label{display:none}
@media(min-width:768px){
	.dgf-wa__label{display:inline}
}
@media(prefers-reduced-motion:reduce){
	.dgf-wa{
		transition:none;
		animation:none;
		opacity:1;
		pointer-events:auto;
		transform:none;
	}
	.dgf-wa:hover,
	.dgf-wa:focus-visible,
	.dgf-wa.is-ready:hover,
	.dgf-wa.is-ready:focus-visible{
		transform:none;
		filter:brightness(1.05);
	}
	.dgf-wa::before,
	.dgf-wa::after{
		content:none;
		animation:none!important;
	}
}
