/* ---------------------------------------------------------------------------
   Плавающие кнопки связи в правом нижнем углу: звонок и WhatsApp.

   Стилистика взята у самого сайта: фирменный фиолетовый --kiddom-blue с
   жёлтой иконкой — ровно как кнопка телефона в мобильной шапке. У WhatsApp
   оставлен его узнаваемый зелёный: посетитель считывает такую кнопку без
   подписи, и терять это ради единообразия палитры не стоит.

   Иконки берутся из уже имеющихся файлов сайта и красятся через mask-image —
   так один и тот же SVG можно перекрасить под фон, не заводя копий.

   Размеры и отступы заданы в px, а не в em: базовый размер шрифта сайта равен
   1vw и на планшетах схлопывается (см. комментарий в responsive-fixes.css).

   Чтобы убрать кнопки — удалите {{> fab}} из partials/scripts.hbs.
   --------------------------------------------------------------------------- */

.fab {
  position: fixed;
  z-index: 9998;            /* под уведомлением о cookie: у того 9999 */
  right: 20px;
  bottom: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: transform .3s ease;
}

/* Пока висит уведомление о cookie, кнопки уезжают выше, чтобы не перекрывать
   его на узких экранах. Класс снимает /js/gdpr.js после выбора. */
body.gdpr-open .fab {
  transform: translateY(-96px);
}

.fab__btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  text-decoration: none;
  box-shadow: 0 6px 20px rgba(31, 32, 34, .22);
  /* Появление: кнопки всплывают снизу друг за другом, а не возникают рывком */
  animation: fab-in .45s cubic-bezier(.22, 1, .36, 1) both;
  transition: transform .2s cubic-bezier(.22, 1, .36, 1), box-shadow .2s ease;
}

.fab__btn--wa { background-color: #25d366; animation-delay: .15s; }
.fab__btn--call { background-color: #5e2ded; animation-delay: .3s; }

.fab__btn:hover {
  transform: scale(1.09);
  box-shadow: 0 10px 26px rgba(31, 32, 34, .3);
}

.fab__btn:active { transform: scale(.96); }

.fab__btn:focus-visible {
  outline: 3px solid #f6e162;
  outline-offset: 3px;
}

.fab__icon {
  width: 26px;
  height: 26px;
  background-color: #fff;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
  transition: transform .2s ease;
}

.fab__icon--wa {
  -webkit-mask-image: url("/images/whatsapp-kiddom.svg");
  mask-image: url("/images/whatsapp-kiddom.svg");
}

.fab__icon--call {
  width: 22px;
  height: 22px;
  background-color: #f6e162;          /* жёлтый на фиолетовом — как в шапке */
  -webkit-mask-image: url("/images/cal.svg");
  mask-image: url("/images/cal.svg");
}

/* Трубка чуть покачивается при наведении — намёк на звонок */
.fab__btn--call:hover .fab__icon { animation: fab-ring .6s ease-in-out; }

/* Подсказка выезжает слева. На тач-устройствах она не нужна: там нет
   наведения, а место занимает — поэтому включается только там, где
   указатель точный. */
.fab__tip {
  position: absolute;
  right: 68px;
  white-space: nowrap;
  padding: 8px 14px;
  border-radius: 20px;
  background-color: #fff;
  color: #1f2022;
  font-family: Unbounded, sans-serif;
  font-size: 13px;
  font-weight: 400;
  box-shadow: 0 4px 14px rgba(31, 32, 34, .16);
  opacity: 0;
  transform: translateX(8px);
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
}

@media (hover: hover) and (pointer: fine) {
  .fab__btn:hover .fab__tip,
  .fab__btn:focus-visible .fab__tip {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Пульсирующее кольцо у кнопки звонка — привлекает внимание, но редко:
   раз в 4 секунды, иначе превращается в раздражитель. */
.fab__btn--call::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid #5e2ded;
  animation: fab-pulse 4s ease-out infinite;
  animation-delay: 1.2s;
  pointer-events: none;
}

@keyframes fab-in {
  from { opacity: 0; transform: translateY(16px) scale(.85); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes fab-ring {
  0%, 100% { transform: rotate(0); }
  20% { transform: rotate(-14deg); }
  45% { transform: rotate(12deg); }
  70% { transform: rotate(-6deg); }
}

@keyframes fab-pulse {
  0%   { opacity: .55; transform: scale(1); }
  35%  { opacity: 0;   transform: scale(1.5); }
  100% { opacity: 0;   transform: scale(1.5); }
}

@media screen and (max-width: 600px) {
  .fab { right: 14px; bottom: 14px; gap: 10px; }
  .fab__btn { width: 50px; height: 50px; }
  .fab__icon { width: 23px; height: 23px; }
  .fab__icon--call { width: 19px; height: 19px; }
  body.gdpr-open .fab { transform: translateY(-140px); }
}

/* Уважаем системную настройку: анимации отключены — кнопки просто на месте. */
@media (prefers-reduced-motion: reduce) {
  .fab__btn,
  .fab__icon,
  .fab__tip,
  .fab { animation: none !important; transition: none; }
  .fab__btn--call::after { animation: none; opacity: 0; }
}
