/* PRIME VR Contact FAB v1.0
   Floating quick-contact launcher for desktop, tablet and mobile.
   Designed to coexist with the existing mobile dock and booking/callback modals.
*/
:root {
  --pvr-fab-pink: var(--pink, #ff3d78);
  --pvr-fab-pink-2: var(--pink-2, #ff6a9b);
  --pvr-fab-cyan: var(--cyan, #45d9ff);
  --pvr-fab-blue: var(--blue, #6675ff);
  --pvr-fab-bg: #080b12;
  --pvr-fab-surface: #111722;
  --pvr-fab-text: #f7f9ff;
  --pvr-fab-muted: #a6afc2;
}

.prime-contact-fab {
  position: fixed;
  z-index: 180;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(20px, env(safe-area-inset-bottom));
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
  max-width: min(360px, calc(100vw - 24px));
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(0, 14px, 0) scale(.96);
  transition: opacity .24s ease, transform .28s cubic-bezier(.2,.8,.2,1), visibility .24s;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-tap-highlight-color: transparent;
  isolation: isolate;
}

.prime-contact-fab.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translate3d(0,0,0) scale(1);
}

body.booking-open .prime-contact-fab,
body.menu-open .prime-contact-fab {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

.prime-contact-fab__main-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.prime-contact-fab__hint {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 0 13px;
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 999px;
  color: var(--pvr-fab-text);
  background: rgba(8,11,18,.93);
  box-shadow: 0 12px 34px rgba(0,0,0,.34);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  font-size: .78rem;
  font-weight: 850;
  letter-spacing: .01em;
  white-space: nowrap;
  opacity: 0;
  transform: translateX(8px);
  pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
}

.prime-contact-fab.show-hint:not(.is-open) .prime-contact-fab__hint {
  opacity: 1;
  transform: translateX(0);
}

.prime-contact-fab__main {
  position: relative;
  width: 66px;
  height: 66px;
  flex: 0 0 66px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  background:
    radial-gradient(circle at 30% 22%, rgba(255,255,255,.25), transparent 24%),
    linear-gradient(145deg, var(--pvr-fab-pink) 0%, #a741ff 46%, var(--pvr-fab-blue) 74%, var(--pvr-fab-cyan) 112%);
  box-shadow:
    0 15px 44px rgba(0,0,0,.48),
    0 8px 28px rgba(255,61,120,.30),
    0 0 0 7px rgba(255,61,120,.075);
  transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
  overflow: visible;
}

.prime-contact-fab__main::before {
  content: "";
  position: absolute;
  inset: -8px;
  border-radius: inherit;
  border: 1px solid rgba(255,106,155,.25);
  opacity: .75;
  animation: pvrFabPulse 3.8s ease-out infinite;
  pointer-events: none;
}

.prime-contact-fab__main:hover {
  transform: translateY(-2px) scale(1.035);
  box-shadow:
    0 18px 52px rgba(0,0,0,.52),
    0 10px 34px rgba(255,61,120,.38),
    0 0 0 8px rgba(69,217,255,.07);
}

.prime-contact-fab__main:active { transform: scale(.96); }
.prime-contact-fab__main:focus-visible,
.prime-contact-fab__action:focus-visible {
  outline: 3px solid rgba(69,217,255,.8);
  outline-offset: 3px;
}

.prime-contact-fab__main svg {
  position: absolute;
  width: 28px;
  height: 28px;
  transition: opacity .18s ease, transform .25s cubic-bezier(.2,.8,.2,1);
}

.prime-contact-fab__main .pvr-icon-close {
  opacity: 0;
  transform: rotate(-70deg) scale(.7);
}

.prime-contact-fab.is-open .prime-contact-fab__main .pvr-icon-chat {
  opacity: 0;
  transform: rotate(65deg) scale(.7);
}
.prime-contact-fab.is-open .prime-contact-fab__main .pvr-icon-close {
  opacity: 1;
  transform: rotate(0) scale(1);
}
.prime-contact-fab.is-open .prime-contact-fab__main::before { animation: none; opacity: .18; }

.prime-contact-fab__menu {
  width: 276px;
  display: grid;
  gap: 9px;
  margin: 0 0 1px;
  padding: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(12px) scale(.97);
  transform-origin: 90% 100%;
  transition: opacity .2s ease, transform .25s cubic-bezier(.2,.8,.2,1), visibility .2s;
}

.prime-contact-fab.is-open .prime-contact-fab__menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}

.prime-contact-fab__action {
  width: 100%;
  min-height: 52px;
  display: grid;
  grid-template-columns: 1fr 44px;
  align-items: center;
  gap: 10px;
  padding: 4px 4px 4px 15px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 18px;
  color: var(--pvr-fab-text);
  background: linear-gradient(180deg, rgba(15,22,34,.22), rgba(10,16,26,.30));
  box-shadow: 0 12px 30px rgba(0,0,0,.22);
  backdrop-filter: blur(22px) saturate(145%);
  -webkit-backdrop-filter: blur(22px) saturate(145%);
  cursor: pointer;
  text-decoration: none;
  text-align: left;
  transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

.prime-contact-fab__action:hover {
  transform: translateX(-3px);
  border-color: rgba(255,255,255,.24);
  background: linear-gradient(180deg, rgba(19,27,42,.28), rgba(12,18,29,.38));
  box-shadow: 0 15px 36px rgba(0,0,0,.28);
}
.prime-contact-fab__action:active { transform: scale(.985); }

.prime-contact-fab__label {
  min-width: 0;
  display: grid;
  gap: 1px;
}
.prime-contact-fab__label strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .84rem;
  line-height: 1.18;
  letter-spacing: -.01em;
}
.prime-contact-fab__label small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--pvr-fab-muted);
  font-size: .66rem;
  line-height: 1.18;
}

.prime-contact-fab__icon {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  color: #fff;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: inset 0 1px rgba(255,255,255,.14);
}
.prime-contact-fab__icon svg { width: 21px; height: 21px; }

.prime-contact-fab__action--booking .prime-contact-fab__icon {
  background: linear-gradient(145deg, #ff3d78, #d946ef);
}
.prime-contact-fab__action--callback .prime-contact-fab__icon {
  background: linear-gradient(145deg, #8854ff, #6675ff);
}
.prime-contact-fab__action--phone .prime-contact-fab__icon {
  background: linear-gradient(145deg, #17c9a2, #16a3d7);
}
.prime-contact-fab__action--vk .prime-contact-fab__icon {
  background: linear-gradient(145deg, #2787f5, #3a6ee8);
  font-size: .72rem;
  font-weight: 950;
  letter-spacing: -.03em;
}
.prime-contact-fab__action--mail .prime-contact-fab__icon {
  background: linear-gradient(145deg, #ff4a85, #6675ff);
}


.prime-contact-fab__toast {
  position: absolute;
  right: 0;
  bottom: calc(100% + 14px);
  max-width: min(280px, calc(100vw - 28px));
  padding: 11px 13px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 14px;
  color: var(--pvr-fab-text);
  background: linear-gradient(180deg, rgba(15,22,34,.30), rgba(10,16,26,.38));
  box-shadow: 0 14px 32px rgba(0,0,0,.24);
  backdrop-filter: blur(22px) saturate(145%);
  -webkit-backdrop-filter: blur(22px) saturate(145%);
  font-size: .74rem;
  line-height: 1.35;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px) scale(.98);
  transition: opacity .18s ease, transform .18s ease, visibility .18s ease;
  pointer-events: none;
}
.prime-contact-fab__toast.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}
.prime-contact-fab__toast strong { display:block; font-weight: 850; margin-bottom: 2px; }

@keyframes pvrFabPulse {
  0%, 65% { transform: scale(.92); opacity: 0; }
  72% { opacity: .7; }
  100% { transform: scale(1.34); opacity: 0; }
}

/* Existing site has a 68px bottom dock on phones. Keep the launcher above it. */
@media (max-width: 800px) {
  .prime-contact-fab {
    right: max(12px, env(safe-area-inset-right));
    bottom: calc(max(10px, env(safe-area-inset-bottom)) + 80px);
    gap: 9px;
    max-width: calc(100vw - 24px);
  }
  .prime-contact-fab__main { width: 58px; height: 58px; flex-basis: 58px; }
  .prime-contact-fab__main svg { width: 25px; height: 25px; }
  .prime-contact-fab__menu { width: min(264px, calc(100vw - 76px)); gap: 7px; }
  .prime-contact-fab__action {
    min-height: 49px;
    grid-template-columns: 1fr 41px;
    border-radius: 16px;
    padding-left: 13px;
  }
  .prime-contact-fab__icon { width: 41px; height: 41px; border-radius: 13px; }
  .prime-contact-fab__label strong { font-size: .80rem; }
  .prime-contact-fab__label small { font-size: .62rem; }
  .prime-contact-fab__hint { min-height: 34px; padding-inline: 11px; font-size: .70rem; }
}

@media (max-width: 420px) {
  .prime-contact-fab__hint { display: none; }
  .prime-contact-fab__menu { width: min(250px, calc(100vw - 76px)); }
  .prime-contact-fab__label small { display: none; }
  .prime-contact-fab__action { min-height: 47px; }
}

/* Short landscape phones/tablets: use a compact two-column contact panel. */
@media (max-height: 560px) and (orientation: landscape) and (max-width: 950px) {
  .prime-contact-fab {
    right: max(12px, env(safe-area-inset-right));
    bottom: calc(max(8px, env(safe-area-inset-bottom)) + 76px);
  }
  .prime-contact-fab__menu {
    width: min(490px, calc(100vw - 92px));
    grid-template-columns: repeat(2, minmax(0,1fr));
    gap: 7px;
  }
  .prime-contact-fab__action { min-height: 46px; }
  .prime-contact-fab__action:last-child { grid-column: 2; }
  .prime-contact-fab__label small { display: none; }
  .prime-contact-fab__hint { display: none; }
}

/* Between mobile and desktop there is no bottom dock. */
@media (min-width: 801px) and (max-width: 1050px) {
  .prime-contact-fab {
    right: max(16px, env(safe-area-inset-right));
    bottom: max(18px, env(safe-area-inset-bottom));
  }
}

@media (prefers-reduced-motion: reduce) {
  .prime-contact-fab,
  .prime-contact-fab *,
  .prime-contact-fab__main::before {
    animation: none !important;
    transition-duration: .01ms !important;
  }
}

/* v4.3.13.2 — встроенная форма email, чтобы не зависеть от настроенного mailto-handler. */
.prime-contact-mail-modal {
  position: fixed;
  inset: 0;
  z-index: 245;
  display: grid;
  place-items: center;
  padding: max(16px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
  background: rgba(2,5,11,.44);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, visibility .2s ease;
}
.prime-contact-mail-modal.is-open { opacity: 1; visibility: visible; pointer-events: auto; }
.prime-contact-mail-modal__panel {
  width: min(520px, 100%);
  max-height: min(720px, calc(100dvh - 28px));
  overflow: auto;
  position: relative;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 24px;
  padding: 22px;
  color: var(--pvr-fab-text);
  background: linear-gradient(180deg, rgba(13,20,32,.76), rgba(7,12,21,.84));
  box-shadow: 0 30px 90px rgba(0,0,0,.48), 0 0 0 1px rgba(255,61,120,.04) inset;
  backdrop-filter: blur(24px) saturate(145%);
  -webkit-backdrop-filter: blur(24px) saturate(145%);
  transform: translateY(10px) scale(.98);
  transition: transform .24s cubic-bezier(.2,.8,.2,1);
}
.prime-contact-mail-modal.is-open .prime-contact-mail-modal__panel { transform: translateY(0) scale(1); }
.prime-contact-mail-modal__head { display:flex; gap:14px; align-items:flex-start; justify-content:space-between; margin-bottom:16px; }
.prime-contact-mail-modal__head h3 { margin:0; font-size:1.16rem; line-height:1.15; letter-spacing:-.02em; }
.prime-contact-mail-modal__head p { margin:6px 0 0; color:var(--pvr-fab-muted); font-size:.82rem; line-height:1.4; }
.prime-contact-mail-modal__close {
  width:40px; height:40px; flex:0 0 40px; display:grid; place-items:center;
  border:1px solid rgba(255,255,255,.14); border-radius:13px; color:#fff; cursor:pointer;
  background:rgba(255,255,255,.06); font-size:1.35rem; line-height:1;
}
.prime-contact-mail-modal__form { display:grid; gap:12px; }
.prime-contact-mail-modal__field { display:grid; gap:6px; }
.prime-contact-mail-modal__field > span { font-size:.75rem; font-weight:800; color:#e9edff; }
.prime-contact-mail-modal input,
.prime-contact-mail-modal textarea {
  width:100%; border:1px solid rgba(255,255,255,.14); border-radius:14px; outline:none;
  background:rgba(5,10,18,.46); color:#fff; padding:12px 13px; font:inherit;
  box-shadow: inset 0 1px rgba(255,255,255,.03);
}
.prime-contact-mail-modal textarea { min-height:128px; resize:vertical; }
.prime-contact-mail-modal input:focus,
.prime-contact-mail-modal textarea:focus { border-color:rgba(69,217,255,.65); box-shadow:0 0 0 3px rgba(69,217,255,.10); }
.prime-contact-mail-modal__hp { position:absolute !important; left:-9999px !important; width:1px !important; height:1px !important; opacity:0 !important; }
.prime-contact-mail-modal__actions { display:flex; flex-wrap:wrap; gap:9px; align-items:center; margin-top:2px; }
.prime-contact-mail-modal__send,
.prime-contact-mail-modal__copy {
  min-height:44px; border-radius:14px; padding:0 16px; font-weight:900; cursor:pointer; color:#fff;
}
.prime-contact-mail-modal__send { border:0; background:linear-gradient(135deg,#ff3d78,#8c4fff 58%,#45d9ff); box-shadow:0 10px 28px rgba(255,61,120,.22); }
.prime-contact-mail-modal__send[disabled] { opacity:.58; cursor:wait; }
.prime-contact-mail-modal__copy { border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.055); }
.prime-contact-mail-modal__status { min-height:20px; margin:0; font-size:.76rem; color:var(--pvr-fab-muted); line-height:1.35; }
.prime-contact-mail-modal__status.is-ok { color:#65e6b0; }
.prime-contact-mail-modal__status.is-error { color:#ff9bb7; }
.prime-contact-mail-modal__address { margin:2px 0 0; color:var(--pvr-fab-muted); font-size:.72rem; }
.prime-contact-mail-modal__address b { color:#fff; }

@media (max-width: 600px) {
  .prime-contact-mail-modal { align-items:end; padding:10px max(10px, env(safe-area-inset-right)) calc(max(10px, env(safe-area-inset-bottom)) + 76px) max(10px, env(safe-area-inset-left)); }
  .prime-contact-mail-modal__panel { width:100%; border-radius:22px; padding:17px; max-height:calc(100dvh - 96px); }
  .prime-contact-mail-modal__actions { display:grid; grid-template-columns:1fr; }
  .prime-contact-mail-modal__send,.prime-contact-mail-modal__copy { width:100%; }
}
@media (max-height: 560px) and (orientation: landscape) {
  .prime-contact-mail-modal { align-items:center; padding:10px max(10px, env(safe-area-inset-right)) calc(max(10px, env(safe-area-inset-bottom)) + 64px) max(10px, env(safe-area-inset-left)); }
  .prime-contact-mail-modal__panel { max-height:calc(100dvh - 82px); padding:14px 16px; border-radius:18px; }
  .prime-contact-mail-modal textarea { min-height:76px; }
  .prime-contact-mail-modal__head { margin-bottom:10px; }
  .prime-contact-mail-modal__form { gap:8px; }
}
