/**
 * CTA flottant — styles. Basé sur cta-flottant-hygoff v2.0.0 (Agence Moustache).
 * Classes préfixées "fcta-" : aucun conflit avec Divi ni avec le reste du plugin.
 * Les couleurs et offsets sont injectés en variables CSS par le PHP / JS.
 *
 * @package HygieneOfficeDevis
 * @since   1.4.0
 */

.fcta{
	/* Valeurs par défaut — écrasées par les réglages au chargement */
	--fcta-primary:#0f766e;
	--fcta-secondary:#1e3a8a;
	--fcta-text:#0f172a;
	--fcta-muted:#64748b;
	--fcta-surface:#ffffff;
	--fcta-primary-dark:color-mix(in srgb,var(--fcta-primary) 78%,#000);
	--fcta-primary-soft:color-mix(in srgb,var(--fcta-primary) 18%,transparent);
	--fcta-spring:cubic-bezier(.34,1.56,.64,1);
	--fcta-ease:cubic-bezier(.2,.8,.2,1);
	--fcta-size:64px;
	--fcta-right:24px;
	--fcta-bottom:calc(24px + env(safe-area-inset-bottom,0px));
	font-family:var(--fcta-font,inherit);color:var(--fcta-text);
	-webkit-font-smoothing:antialiased;
}
.fcta *,.fcta *::before,.fcta *::after{box-sizing:border-box}
.fcta p{margin:0;padding:0!important}

/* ---------- Voile d'arrière-plan ---------- */
.fcta-backdrop{
	position:fixed;inset:0;z-index:99988;background:rgba(15,23,42,.28);
	backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
	opacity:0;visibility:hidden;transition:opacity .35s var(--fcta-ease),visibility 0s linear .35s;
}
.fcta.is-open .fcta-backdrop{opacity:1;visibility:visible;transition:opacity .35s var(--fcta-ease),visibility 0s}

/* ---------- Conteneur fixe ---------- */
.fcta-dock{
	position:fixed;right:var(--fcta-right);bottom:var(--fcta-bottom);z-index:99990;
	width:var(--fcta-size);height:var(--fcta-size);
}

/* ---------- Lanceur ---------- */
.fcta-launcher{
	all:unset;box-sizing:border-box;position:relative;display:grid;place-items:center;cursor:pointer;
	width:var(--fcta-size);height:var(--fcta-size);border-radius:50%;
	background:var(--fcta-primary);color:#fff;
	box-shadow:0 14px 34px color-mix(in srgb,var(--fcta-primary) 45%,transparent),0 4px 10px rgba(15,23,42,.18);
	transform:scale(0) rotate(-120deg);
	transition:box-shadow .3s var(--fcta-ease),background .3s var(--fcta-ease);
	-webkit-tap-highlight-color:transparent;
}
.fcta.is-visible .fcta-launcher{animation:fcta-enter .9s var(--fcta-spring) forwards}
@keyframes fcta-enter{
	0%{transform:scale(0) rotate(-120deg)}
	60%{transform:scale(1.14) rotate(8deg)}
	80%{transform:scale(.96) rotate(-3deg)}
	100%{transform:scale(1) rotate(0)}
}
.fcta-launcher:hover{background:var(--fcta-primary-dark)}
.fcta-launcher:focus-visible{outline:3px solid var(--fcta-primary-soft);outline-offset:4px}
.fcta-magnet{display:block;width:100%;height:100%;transition:transform .35s var(--fcta-spring)}

/* Halo rotatif */
.fcta-launcher::before{
	content:"";position:absolute;inset:-4px;border-radius:50%;z-index:-1;
	background:conic-gradient(from 0deg,var(--fcta-primary),var(--fcta-secondary),transparent 60%,var(--fcta-primary));
	animation:fcta-spin 3.2s linear infinite;opacity:.9;
	-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
			mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 3px));
}
@keyframes fcta-spin{to{transform:rotate(360deg)}}

/* Ondes */
.fcta-wave{position:absolute;inset:0;border-radius:50%;background:var(--fcta-primary);z-index:-2;
	animation:fcta-wave 2.6s var(--fcta-ease) infinite;pointer-events:none}
.fcta-wave:nth-child(2){animation-delay:1.3s}
@keyframes fcta-wave{0%{transform:scale(1);opacity:.45}100%{transform:scale(1.9);opacity:0}}
.fcta.is-open .fcta-wave,.fcta.is-open .fcta-launcher::before{animation:none;opacity:0;transition:opacity .2s}

/* Icônes du lanceur (morphing) */
.fcta-ico{position:absolute;inset:0;display:grid;place-items:center;
	transition:transform .5s var(--fcta-spring),opacity .3s var(--fcta-ease)}
.fcta-ico svg{width:28px;height:28px}
.fcta-ico--chat{opacity:1;transform:none}
.fcta-ico--phone,.fcta-ico--close{opacity:0;transform:scale(.3) rotate(-90deg)}
.fcta.is-alt .fcta-ico--chat{opacity:0;transform:scale(.3) rotate(90deg)}
.fcta.is-alt .fcta-ico--phone{opacity:1;transform:none}
.fcta.is-open .fcta-ico--chat,.fcta.is-open .fcta-ico--phone{opacity:0;transform:scale(.3) rotate(90deg)}
.fcta.is-open .fcta-ico--close{opacity:1;transform:rotate(0)}

/* Badge notification */
.fcta-badge{position:absolute;top:-2px;right:-2px;width:20px;height:20px;border-radius:50%;
	background:#ef4444;color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;
	border:2.5px solid #fff;transform:scale(0);transition:transform .45s var(--fcta-spring);line-height:1}
.fcta.has-badge .fcta-badge{transform:scale(1)}
.fcta.is-open .fcta-badge{transform:scale(0)}

/* ---------- Bulle d'accroche ---------- */
.fcta-teaser{
	position:absolute;right:calc(100% + 16px);bottom:8px;width:max-content;max-width:min(280px,calc(100vw - var(--fcta-size) - 56px));
	background:var(--fcta-surface);border-radius:18px 18px 6px 18px;padding:14px 38px 14px 18px;
	box-shadow:0 18px 40px rgba(15,23,42,.14),0 2px 6px rgba(15,23,42,.06);
	font-size:16px;line-height:1.4;font-weight:600;color:var(--fcta-text);
	opacity:0;transform:translateX(12px) scale(.9);transform-origin:bottom right;pointer-events:none;
	transition:opacity .35s var(--fcta-ease),transform .5s var(--fcta-spring);
}
.fcta.show-teaser:not(.is-open) .fcta-teaser{opacity:1;transform:none;pointer-events:auto}
.fcta-teaser-caret{display:inline-block;width:2px;height:1em;background:var(--fcta-primary);margin-left:2px;vertical-align:-2px;animation:fcta-blink .8s steps(1) infinite}
@keyframes fcta-blink{50%{opacity:0}}
.fcta-teaser-close{all:unset;box-sizing:border-box;position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;
	display:grid;place-items:center;color:var(--fcta-muted);cursor:pointer}
.fcta-teaser-close:hover{background:#f1f5f9}
.fcta-teaser-close svg{width:12px;height:12px}

/* ---------- Actions (speed dial) ---------- */
.fcta-actions{position:absolute;right:4px;bottom:calc(100% + 18px);display:flex;flex-direction:column;align-items:flex-end;gap:14px;
	visibility:hidden;transition:visibility 0s linear .4s}
.fcta.is-open .fcta-actions{visibility:visible;transition:visibility 0s}

.fcta-action{
	display:flex;align-items:center;gap:12px;text-decoration:none!important;color:var(--fcta-text)!important;
	opacity:0;transform:translateY(24px) scale(.5);transform-origin:bottom right;
	transition:opacity .25s var(--fcta-ease),transform .25s var(--fcta-ease);
	-webkit-tap-highlight-color:transparent;
}
.fcta.is-open .fcta-action{opacity:1;transform:none;
	transition:opacity .35s var(--fcta-ease) calc(var(--i) * 80ms + 60ms),transform .6s var(--fcta-spring) calc(var(--i) * 80ms + 60ms)}

.fcta-label{
	background:var(--fcta-surface);border-radius:14px;padding:10px 16px;text-align:right;
	box-shadow:0 12px 30px rgba(15,23,42,.14),0 2px 6px rgba(15,23,42,.06);
	opacity:0;transform:translateX(16px);
	transition:opacity .2s,transform .2s;
}
.fcta.is-open .fcta-label{opacity:1;transform:none;
	transition:opacity .35s var(--fcta-ease) calc(var(--i) * 80ms + 220ms),transform .5s var(--fcta-spring) calc(var(--i) * 80ms + 220ms)}
.fcta-label strong{display:block;font-size:16px;font-weight:700;line-height:1.25;white-space:nowrap}
.fcta-label small{display:block;font-size:14px;color:var(--fcta-muted);line-height:1.3;margin-top:2px;white-space:nowrap}

.fcta-bubble{
	position:relative;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;flex-shrink:0;color:#fff;
	box-shadow:0 10px 24px rgba(15,23,42,.2);transition:transform .3s var(--fcta-spring);
}
.fcta-bubble svg{width:24px;height:24px}
.fcta-action--call .fcta-bubble{background:var(--fcta-primary)}
.fcta-action--contact .fcta-bubble{background:var(--fcta-secondary)}
.fcta-action:hover .fcta-bubble,.fcta-action:focus-visible .fcta-bubble{transform:scale(1.1)}
.fcta-action:hover .fcta-label{transform:translateX(-4px)}
.fcta-action:focus-visible{outline:none}
.fcta-action:focus-visible .fcta-bubble{outline:3px solid var(--fcta-primary-soft);outline-offset:3px}

/* Téléphone qui sonne */
.fcta.is-open .fcta-action--call .fcta-bubble svg{animation:fcta-ring 2.4s ease-in-out .8s infinite;transform-origin:50% 50%}
@keyframes fcta-ring{
	0%,40%,100%{transform:rotate(0)}
	5%,15%,25%{transform:rotate(-16deg)}
	10%,20%,30%{transform:rotate(16deg)}
}
/* Onde autour du bouton appel */
.fcta-action--call .fcta-bubble::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--fcta-primary);opacity:0}
.fcta.is-open .fcta-action--call .fcta-bubble::after{animation:fcta-callwave 2.4s ease-out .8s infinite}
@keyframes fcta-callwave{0%{transform:scale(1);opacity:.7}60%,100%{transform:scale(1.6);opacity:0}}

/* ---------- Explosion de particules à l'ouverture ---------- */
.fcta-burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none;z-index:-1}
.fcta-burst i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;background:var(--c);opacity:0}
.fcta-burst.is-firing i{animation:fcta-particle .75s var(--fcta-ease) forwards}
@keyframes fcta-particle{
	0%{transform:rotate(var(--a)) translateX(0) scale(1);opacity:1}
	100%{transform:rotate(var(--a)) translateX(var(--d)) scale(0);opacity:0}
}

/* ---------- Mobile ---------- */
@media (max-width:640px){
	.fcta{--fcta-size:60px}
	.fcta-label{padding:10px 14px}
	.fcta-label strong{font-size:16px}
	.fcta-label small{font-size:13px}
	.fcta-bubble{width:54px;height:54px}
	.fcta-teaser{font-size:15px}
}

/* Remonte le bouton "retour en haut" de Divi au-dessus du CTA */
body .et_pb_scroll_top.et-pb-icon{bottom:104px!important}

@media (prefers-reduced-motion:reduce){
	.fcta *,.fcta *::before,.fcta *::after{animation:none!important;transition-duration:.01ms!important;transition-delay:0s!important}
	.fcta.is-visible .fcta-launcher{transform:none}
}
@media print{.fcta{display:none!important}}
