/* Floating Contact Button — frontend */
.fcb{
	--fcb-accent:#2563eb;
	--fcb-fab:60px;
	--fcb-child:48px;
	--fcb-x:24px;
	--fcb-y:24px;
	--fcb-z:99990;
	--fcb-cycle:5s;
	position:fixed;
	bottom:var(--fcb-y);
	z-index:var(--fcb-z);
	display:flex;
	flex-direction:column;
	align-items:flex-end;
	line-height:1;
	font-family:inherit;
}
.fcb[data-side="right"]{right:var(--fcb-x)}
.fcb[data-side="left"]{left:var(--fcb-x);align-items:flex-start}
.fcb *,.fcb *::before,.fcb *::after{box-sizing:border-box}

/* ---------- каналы ---------- */
.fcb__items{position:absolute;bottom:0;display:block;pointer-events:none}
/* Явная привязка обязательна: без left/right стартовая позиция абсолютных элементов
   берётся из flex align-items и при side=right отсчитывается от правого края. */
.fcb[data-side="left"] .fcb__items{left:0}
.fcb[data-side="right"] .fcb__items{right:0}
.fcb[data-side="left"] .fcb__item{left:0}
.fcb[data-side="right"] .fcb__item{right:0}
.fcb .fcb__item{
	position:absolute;bottom:0;
	width:var(--fcb-child);height:var(--fcb-child);
	display:flex;align-items:center;justify-content:center;
	color:#fff;text-decoration:none;
	box-shadow:0 6px 18px rgba(15,23,42,.22);
	opacity:0;transform:scale(.4);
	transition:transform .32s cubic-bezier(.34,1.56,.64,1),opacity .2s;
}
.fcb .fcb__item:hover,.fcb .fcb__item:focus{color:#fff;text-decoration:none}
.fcb .fcb__item svg{width:24px;height:24px;fill:currentColor;flex:none}
.fcb .fcb__label{
	position:absolute;white-space:nowrap;
	background:#0f172a;color:#fff;
	font-size:12.5px;font-weight:500;
	padding:6px 10px;border-radius:8px;
	max-width:46vw;overflow:hidden;text-overflow:ellipsis;
	opacity:0;transition:opacity .18s;pointer-events:none;
}
.fcb[data-side="right"] .fcb__label{right:calc(var(--fcb-child) + 10px)}
.fcb[data-side="left"] .fcb__label{left:calc(var(--fcb-child) + 10px)}
.fcb.is-open .fcb__items{pointer-events:auto}
.fcb.is-open .fcb__item{opacity:1}
.fcb__item:hover .fcb__label{opacity:1}
.fcb__item.is-hidden{display:none}

/* стек: подписи видны сразу */
.fcb.is-layout-stack .fcb__label{opacity:0;transition-delay:.12s}
.fcb.is-layout-stack.is-open .fcb__label{opacity:1}

/* ---------- guard: до инициализации JS каналы не должны висеть кучей ---------- */
.fcb:not(.is-ready) .fcb__items{visibility:hidden}

/* ---------- FAB ---------- */
.fcb .fcb__fab{
	/* Жёсткий ресет: темы любят вешать padding/min-height/text-transform на button. */
	padding:0;min-width:0;min-height:0;max-width:none;
	line-height:0;letter-spacing:normal;text-transform:none;
	background-clip:border-box;
	flex:none;
}
.fcb .fcb__item{padding:0;margin:0;box-shadow:0 6px 18px rgba(15,23,42,.22)}
/* Тема задаёт .elementor-kit-N button{background-color:…} со специфичностью 0,1,1
   и перебивает одиночный класс — фон и цвет закрепляем здесь. */
.fcb .fcb__fab{background-color:var(--fcb-accent);background-image:none;color:#fff}
.fcb[data-fill="gradient"] .fcb__fab{
	background-image:linear-gradient(145deg,var(--fcb-accent),color-mix(in srgb,var(--fcb-accent) 80%,#000));
}
/* border-radius задаётся с повышенной специфичностью: Elementor ставит
   .elementor-kit-N button{border-radius:0} и перебивает одиночный класс. */
.fcb .fcb__fab,
.fcb .fcb__item{border-radius:var(--fcb-radius,50%)}
.fcb .fcb__fab{
	position:relative;
	width:var(--fcb-fab);height:var(--fcb-fab);
	border:0;padding:0;margin:0;cursor:pointer;
	display:flex;align-items:center;justify-content:center;
	background:var(--fcb-accent);
	color:#fff;
	box-shadow:0 10px 26px rgba(15,23,42,.28);
	transition:transform .25s;
	-webkit-tap-highlight-color:transparent;
}
.fcb .fcb__fab:hover{transform:scale(1.06)}
.fcb .fcb__fab:focus-visible{outline:3px solid #fff;outline-offset:3px}
.fcb .fcb__fab svg{width:calc(var(--fcb-fab) * .47);height:calc(var(--fcb-fab) * .47);fill:#fff;transition:opacity .25s,transform .25s}
.fcb__ic-close{position:absolute;opacity:0;transform:rotate(-90deg) scale(.5)}
.fcb.is-open .fcb__ic-main{opacity:0;transform:rotate(90deg) scale(.5)}
.fcb.is-open .fcb__ic-close{opacity:1;transform:none}

.fcb .fcb__badge{
	position:absolute;top:-2px;right:-2px;
	min-width:19px;height:19px;padding:0 4px;
	background:#ef4444;color:#fff;
	font-size:11px;font-weight:700;line-height:19px;text-align:center;
	border-radius:10px;box-shadow:0 0 0 2px #fff;
}
.fcb.is-open .fcb__badge,.fcb.is-touched .fcb__badge{display:none}

/* ---------- анимации приманки ---------- */
@keyframes fcb-shake{
	0%,88%,100%{transform:rotate(0)}
	90%{transform:rotate(-14deg)}92%{transform:rotate(11deg)}
	94%{transform:rotate(-8deg)}96%{transform:rotate(6deg)}98%{transform:rotate(-3deg)}
}
@keyframes fcb-bounce{0%,80%,100%{transform:translateY(0)}86%{transform:translateY(-14px)}92%{transform:translateY(-6px)}}
@keyframes fcb-ring{0%{transform:scale(1);opacity:.55}70%,100%{transform:scale(1.9);opacity:0}}

.fcb[data-anim="shake"]:not(.is-open):not(.is-stopped) .fcb__fab{animation:fcb-shake var(--fcb-cycle) ease-in-out infinite}
.fcb[data-anim="bounce"]:not(.is-open):not(.is-stopped) .fcb__fab{animation:fcb-bounce var(--fcb-cycle) ease-in-out infinite}
.fcb[data-anim="pulse"]:not(.is-open):not(.is-stopped) .fcb__fab::before{
	content:"";position:absolute;inset:0;border-radius:var(--fcb-radius,50%);
	background:var(--fcb-accent);z-index:-1;
	animation:fcb-ring 2s ease-out infinite;
}
@media (prefers-reduced-motion:reduce){
	.fcb__fab,.fcb__fab::before{animation:none !important}
	.fcb__item{transition:opacity .15s !important}
}

/* ---------- подсказка ---------- */
.fcb .fcb__tip{
	position:absolute;bottom:calc(var(--fcb-fab) + 14px);
	width:230px;padding:12px 32px 12px 14px;
	background:#fff;color:#0f172a;
	border:1px solid rgba(15,23,42,.1);border-radius:14px;
	box-shadow:0 12px 30px rgba(15,23,42,.16);
	font-size:13.5px;line-height:1.4;
	opacity:0;transform:translateY(8px);
	transition:opacity .3s,transform .3s;
	pointer-events:none;cursor:pointer;
}
.fcb[data-side="right"] .fcb__tip{right:0}
.fcb[data-side="left"] .fcb__tip{left:0}
.fcb__tip.is-visible{opacity:1;transform:none;pointer-events:auto}
.fcb__tip b{display:block;margin-bottom:2px;font-size:14px}
.fcb__tip span{color:#64748b;font-size:12.5px}
.fcb .fcb__tip-close{
	/* Ресет обязателен: темы раздувают button padding'ом, и крестик перекрывает
	   пол-плашки — клик по подсказке попадает в «закрыть» вместо открытия каналов. */
	position:absolute;top:4px;right:4px;
	width:26px;height:26px;min-width:0;min-height:0;
	padding:0;margin:0;border:0;background:none;box-shadow:none;
	display:flex;align-items:center;justify-content:center;
	font-size:18px;line-height:1;font-weight:400;
	color:#94a3b8;cursor:pointer;
}
.fcb .fcb__tip-close:hover{color:#475569;background:none}

/* ---------- нижняя панель (mobile) ---------- */
@media (max-width:782px){
	.fcb.is-layout-bar{
		left:0;right:0;bottom:0;
		flex-direction:row;align-items:stretch;
		padding:8px;gap:0;
		background:#fff;border-top:1px solid rgba(15,23,42,.1);
		box-shadow:0 -6px 24px rgba(15,23,42,.12);
	}
	.fcb.is-layout-bar .fcb__fab,
	.fcb.is-layout-bar .fcb__tip{display:none}
	.fcb.is-layout-bar .fcb__items{position:static;display:flex;gap:8px;flex:1;pointer-events:auto}
	.fcb.is-layout-bar .fcb__item{
		position:static;flex:1;width:auto;height:44px;
		border-radius:12px;opacity:1;transform:none;gap:7px;
		font-size:13px;font-weight:600;
	}
	.fcb.is-layout-bar .fcb__label{
		position:static;opacity:1;background:none;color:#fff;padding:0;
	}
}
@media (max-width:520px){
	.fcb.is-layout-bar .fcb__label{display:none}
}

/* ---------- фильтр устройств ---------- */
@media (max-width:782px){ .fcb__item--desktop{display:none} }
@media (min-width:783px){ .fcb__item--mobile{display:none} }
