:root{
	--kps-contact-green:#1178f6; /* primary blue */
	--kps-contact-green-2:#0f69d9; /* darker blue for gradient */
	--kps-contact-ink: rgba(11,18,32,.92);
}

.kps-contact-fab{
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 9999;
	font-family: inherit;
	transition: opacity .2s ease, transform .2s ease;
}

.kps-contact-fab.kps-contact-fab--hidden{
	opacity: 0;
	pointer-events: none;
	transform: translateY(8px) scale(.96);
}

.kps-contact-fab__btn{
	position: relative;
	border: 0;
	background: transparent;
	padding: 0;
	cursor: pointer;
	display: grid;
	place-items: center;
}

.kps-contact-fab__label{
	position: absolute;
	bottom: calc(100% + 10px);
	right: 0;

	padding: 10px 14px;
	border-radius: 14px;
	background: rgba(0,0,0,.76);
	color: #fff;
	font-weight: 700;
	font-size: 14px;
	line-height: 1;

	box-shadow: 0 10px 24px rgba(0,0,0,.22);
	white-space: nowrap;
}

.kps-contact-fab__bubble{
	width: 70px;
	height: 70px;
	border-radius: 999px;
	display: grid;
	place-items: center;

	background: radial-gradient(120% 120% at 30% 20%, rgba(255,255,255,.18) 0%, rgba(255,255,255,0) 55%),
	            linear-gradient(180deg, var(--kps-contact-green) 0%, var(--kps-contact-green-2) 100%);
	box-shadow:
		0 18px 40px rgba(0,0,0,.20),
		0 0 0 1px rgba(255,255,255,.18) inset;
	transition: transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.kps-contact-fab__bubble i{
	color: #fff;
	font-size: 30px;
	filter: drop-shadow(0 10px 16px rgba(0,0,0,.18));
}

.kps-contact-fab__dot{
	position: absolute;
	top: 6px;
	right: 6px;
	width: 16px;
	height: 16px;
	border-radius: 999px;
	background: #ff4b4b;
	box-shadow: 0 0 0 3px rgba(255,255,255,.85);
}

.kps-contact-fab__btn:hover .kps-contact-fab__bubble{
	transform: translateY(-2px);
	box-shadow:
		0 22px 52px rgba(0,0,0,.22),
		0 0 0 1px rgba(255,255,255,.22) inset;
}

.kps-contact-fab__btn:focus-visible{
	outline: none;
}
.kps-contact-fab__btn:focus-visible .kps-contact-fab__bubble{
	box-shadow:
		0 22px 52px rgba(0,0,0,.22),
		0 0 0 1px rgba(255,255,255,.22) inset,
		0 0 0 4px rgba(29,78,216,.16);
}

/* Menu */
.kps-contact-fab__menu{
	position: absolute;
	right: 0;
	bottom: calc(100% + 12px);
	width: 220px;

	padding: 10px;
	border-radius: 18px;

	background: rgba(255,255,255,.92);
	backdrop-filter: blur(10px);
	border: 1px solid rgba(11,18,32,.08);
	box-shadow: 18px 18px 40px rgba(17,24,39,.14), -18px -18px 40px rgba(255,255,255,.92);
}

.kps-contact-fab__menu[hidden]{ display:none; }

.kps-contact-fab__menu a{
	display: flex;
	align-items: center;
	gap: 10px;

	padding: 10px 12px;
	border-radius: 14px;
	text-decoration: none;
	color: var(--kps-contact-ink);
	font-weight: 700;
	font-size: 14px;

	border: 1px solid rgba(11,18,32,.06);
	background: linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.88) 100%);
	box-shadow: inset 10px 10px 20px rgba(17,24,39,.06), inset -10px -10px 20px rgba(255,255,255,.95);
}

.kps-contact-fab__menu a + a{ margin-top: 8px; }

.kps-contact-fab__menu a:hover{
	border-color: rgba(29,78,216,.14);
}

.kps-contact-fab__menu i{
	width: 18px;
	text-align: center;
	color: rgba(11,18,32,.70);
}

/* icon swap animation */
.kps-contact-fab__bubble .kps-contact-fab__icon{
	transition: opacity .18s ease, transform .18s ease, filter .18s ease;
}
.kps-contact-fab.is-switching .kps-contact-fab__bubble .kps-contact-fab__icon{
	opacity: .0;
	transform: translateY(2px) scale(.96);
}

/* email row with copy button */
.kps-contact-fab__email{
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 8px;
}

.kps-contact-fab__emailLink{
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.kps-contact-fab__copyBtn{
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 8px;

	height: 40px;
	padding: 0 12px;
	border-radius: 14px;

	cursor: pointer;
	font: inherit;
	font-weight: 800;

	color: rgba(11,18,32,.84);
	background: linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.88) 100%);
	border: 1px solid rgba(11,18,32,.08);
	box-shadow: inset 10px 10px 20px rgba(17,24,39,.06), inset -10px -10px 20px rgba(255,255,255,.95);
}

.kps-contact-fab__copyBtn:hover{
	border-color: rgba(29,78,216,.14);
}

.kps-contact-fab__copyBtn:focus-visible{
	outline: none;
	box-shadow:
		inset 10px 10px 20px rgba(17,24,39,.06),
		inset -10px -10px 20px rgba(255,255,255,.95),
		0 0 0 4px rgba(29,78,216,.12);
}

.kps-contact-fab__copyBtn i{ width: 16px; text-align: center; }
.kps-contact-fab__copyText{ font-size: 12px; letter-spacing: .02em; }

/* Mobile: hide label to reduce clutter */
@media (max-width: 680px){
	.kps-contact-fab__label{ display:none; }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce){
	.kps-contact-fab__bubble{ transition:none !important; }
}
