/* RU Phone Mask 4.5 — Elementor Pro */
.elementor-form{--rupm-accent:#635BFF;--rupm-accent-hover:#5148F5;--rupm-focus:#635BFF;--rupm-border:rgba(255,255,255,.22);--rupm-button-text:#fff;--rupm-link:#635BFF;--rupm-check:#635BFF;--rupm-success:#22C55E;--rupm-danger:#FF4D67;}
.elementor-form .rupm-phone-wrap{position:relative;display:flex;align-items:center;width:100%;}
.elementor-form .rupm-phone-wrap>input[type=tel]{width:100%;padding-left:48px!important;box-sizing:border-box;border-color:var(--rupm-border);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease;}
.elementor-form .rupm-phone-wrap>input[type=tel]:focus{border-color:var(--rupm-focus)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--rupm-focus) 18%,transparent)!important;outline:none;}
.elementor-form .rupm-phone-flag{position:absolute;left:14px;top:50%;transform:translateY(-50%);z-index:3;font-size:16px;line-height:1;pointer-events:none;}
.elementor-form .rupm-country-select{position:absolute;left:0;top:0;width:44px;height:100%;opacity:0;z-index:4;cursor:pointer;border:0;background:transparent;}
.elementor-form input[type=tel].phone-error{border-color:#ff4d67!important;box-shadow:0 0 0 3px rgba(255,77,103,.12)!important;}
.elementor-form .phone-error-message{display:none!important;}

/* Palette applies to both final submit and Elementor multi-step Next buttons. */
.elementor-form button[type=submit],
.elementor-form input[type=submit],
.elementor-form .elementor-button[type=submit],
.elementor-form .e-form__buttons__wrapper__button-next,
.elementor-form .elementor-button.elementor-button-next,
.elementor-form .e-form__buttons__wrapper__button-previous,
.elementor-form .elementor-button.elementor-button-previous{
  background:var(--rupm-accent)!important;
  color:var(--rupm-button-text)!important;
  border-color:var(--rupm-accent)!important;
  transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease;
}
.elementor-form button[type=submit]:hover,
.elementor-form input[type=submit]:hover,
.elementor-form .elementor-button[type=submit]:hover,
.elementor-form .e-form__buttons__wrapper__button-next:hover,
.elementor-form .elementor-button.elementor-button-next:hover,
.elementor-form .e-form__buttons__wrapper__button-previous:hover,
.elementor-form .elementor-button.elementor-button-previous:hover{
  background:var(--rupm-accent-hover)!important;
  border-color:var(--rupm-accent-hover)!important;
}
.elementor-form button[type=submit]:focus-visible,
.elementor-form input[type=submit]:focus-visible,
.elementor-form .elementor-button[type=submit]:focus-visible,
.elementor-form .e-form__buttons__wrapper__button-next:focus-visible,
.elementor-form .elementor-button.elementor-button-next:focus-visible,
.elementor-form .e-form__buttons__wrapper__button-previous:focus-visible,
.elementor-form .elementor-button.elementor-button-previous:focus-visible{
  outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--rupm-focus) 22%,transparent)!important;
}

/* Elementor Previous / Back button: restore the neutral dark secondary style. */
.elementor-form .e-form__buttons__wrapper__button-previous,
.elementor-form .elementor-button.elementor-button-previous{
  background:rgba(255,255,255,.045)!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.24)!important;
}
.elementor-form .e-form__buttons__wrapper__button-previous:hover,
.elementor-form .elementor-button.elementor-button-previous:hover{
  background:rgba(255,255,255,.085)!important;
  border-color:rgba(255,255,255,.38)!important;
  color:#fff!important;
}

/* Fields: default and focus borders */
.elementor-form .elementor-field:not(.elementor-button){border-color:var(--rupm-border);transition:border-color .18s ease,box-shadow .18s ease;}
.elementor-form .elementor-field:not(.elementor-button):focus{border-color:var(--rupm-focus)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--rupm-focus) 16%,transparent)!important;outline:none;}

/* Contact-method checkboxes: compact button-like pills. Acceptance stays a normal checkbox. */
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option{
  display:inline-flex;
  align-items:center;
  margin:0 8px 8px 0;
  padding:0;
}
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option input[type=checkbox]{
  position:absolute;
  opacity:0;
  width:1px;
  height:1px;
  pointer-events:none;
}
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:0 16px;
  border:1px solid var(--rupm-border);
  border-radius:10px;
  background:rgba(255,255,255,.025);
  color:inherit;
  cursor:pointer;
  user-select:none;
  transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease,transform .12s ease;
}
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option label:hover{
  border-color:var(--rupm-focus);
  background:rgba(255,255,255,.055);
}
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option input[type=checkbox]:checked + label{
  background:var(--rupm-check);
  border-color:var(--rupm-check);
  color:var(--rupm-button-text);
  box-shadow:0 4px 14px color-mix(in srgb,var(--rupm-check) 18%,transparent);
}
.elementor-form .elementor-field-type-checkbox.rupm-checkbox-group .elementor-field-option input[type=checkbox]:focus-visible + label{
  outline:none;
  border-color:var(--rupm-focus);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--rupm-focus) 20%,transparent);
}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group .elementor-field-option{display:flex;align-items:flex-start;gap:9px;margin:0 0 9px;line-height:1.45;}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group input[type=checkbox]{
  appearance:none;-webkit-appearance:none;width:20px;height:20px;min-width:20px;margin:0;padding:0;border:1px solid var(--rupm-border);border-radius:6px;background:rgba(255,255,255,.025);display:inline-grid;place-content:center;cursor:pointer;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease;
}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group input[type=checkbox]::before{content:'✓';font-size:13px;line-height:1;transform:scale(0);transition:transform .14s ease;color:var(--rupm-button-text);}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group input[type=checkbox]:checked{background:var(--rupm-check);border-color:var(--rupm-check);}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group input[type=checkbox]:checked::before{transform:scale(1);}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--rupm-focus) 20%,transparent);}
.elementor-form .elementor-field-type-acceptance.rupm-checkbox-group label{cursor:pointer;}
.elementor-form .rupm-checkbox-group a{color:var(--rupm-link);text-decoration:underline;text-underline-offset:2px;}

/* Validation message: normal document flow. It never overlays or pulls the field upward. */
.elementor-form .elementor-field-group.rupm-inline-error{
  position:relative;
}
.elementor-form .elementor-field-group.rupm-inline-error .rupm-inline-error-message{
  display:flex!important;
  align-items:center;
  gap:8px;
  width:100%;
  box-sizing:border-box;
  margin:8px 0 0!important;
  padding:0!important;
  min-height:18px;
  color:#ff4d67!important;
  font-size:14px;
  line-height:18px;
  font-weight:600;
  position:static!important;
  transform:none!important;
  opacity:1!important;
  order:99;
}
.elementor-form .elementor-field-group.rupm-inline-error .rupm-inline-error-message::before{
  content:'!';
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 22px;
  width:22px;
  height:22px;
  border:1px solid #ff4d67;
  border-radius:50%;
  box-sizing:border-box;
  font-size:13px;
  font-weight:700;
  line-height:1;
}
/* Keep the original field/label position. Only content below the field grows. */
.elementor-form .elementor-field-group.rupm-inline-error > .rupm-inline-error-message{
  clear:both;
}

/* The button keeps its normal palette appearance while logically unavailable. */
.elementor-form .rupm-submit-group.rupm-submit-disabled{position:relative;}
.elementor-form .rupm-submit-group.rupm-submit-disabled::after{
  content:attr(data-rupm-tooltip);
  position:absolute;
  left:50%;
  bottom:calc(100% + 10px);
  transform:translate(-50%,4px);
  z-index:20;
  width:max-content;
  max-width:min(260px,calc(100vw - 32px));
  padding:8px 12px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:9px;
  background:rgba(17,18,22,.96);
  color:#fff;
  font-size:12px;
  line-height:1.35;
  font-weight:600;
  letter-spacing:.01em;
  box-shadow:0 10px 28px rgba(0,0,0,.22);
  pointer-events:none;
  opacity:0;
  transition:opacity .16s ease,transform .16s ease;
}
.elementor-form .rupm-submit-group.rupm-submit-disabled:hover::after,
.elementor-form .rupm-submit-group.rupm-submit-disabled:focus-within::after{opacity:1;transform:translate(-50%,0);}
.elementor-form .rupm-submit-group.rupm-submit-disabled::before{
  content:'';position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%) rotate(45deg);width:8px;height:8px;z-index:19;background:rgba(17,18,22,.96);border-right:1px solid rgba(255,255,255,.12);border-bottom:1px solid rgba(255,255,255,.12);opacity:0;transition:opacity .16s ease;
}
.elementor-form .rupm-submit-group.rupm-submit-disabled:hover::before,
.elementor-form .rupm-submit-group.rupm-submit-disabled:focus-within::before{opacity:1;}

@keyframes rupmErrorIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:767px){
  .elementor-form .rupm-phone-flag{left:12px}
  .elementor-form .rupm-phone-wrap>input[type=tel]{padding-left:44px!important}
  .elementor-form .rupm-checkbox-group .elementor-field-option{gap:9px;margin-bottom:9px;}
  .elementor-form .rupm-checkbox-group input[type=checkbox]{width:20px;height:20px;min-width:20px;}
  .elementor-form .rupm-inline-error-message{font-size:12px;line-height:17px;margin-top:7px!important;}
  .elementor-form .rupm-inline-error-message::before{flex-basis:20px;width:20px;height:20px;font-size:12px;}
  .elementor-form .rupm-submit-group.rupm-submit-disabled::after{bottom:calc(100% + 8px);}
}


/* ===== v4.4: мягкая красная пульсация незаполненных обязательных полей =====
   Работает через inset box-shadow, поэтому не зависит от фона поля.
   Ключевых кадров 0% и 100% нет намеренно: браузер сам берёт обычный вид поля. */
.elementor-form .rupm-pulse{
  animation:rupmRequiredPulse .6s ease-in-out var(--rupm-pulse-delay,0ms) 2;
}
@keyframes rupmRequiredPulse{
  35%{
    box-shadow:inset 0 0 0 999px rgba(255,77,103,.17),0 0 0 3px rgba(255,77,103,.24);
    border-color:#ff4d67;
  }
  70%{
    box-shadow:inset 0 0 0 999px rgba(255,77,103,.05),0 0 0 1px rgba(255,77,103,.10);
    border-color:rgba(255,77,103,.55);
  }
}
@media (prefers-reduced-motion:reduce){
  .elementor-form .rupm-pulse{animation-iteration-count:1;animation-duration:.9s;}
}


/* ===== v4.5: плашки-уведомления формы (успех / ошибка) =====
   Стиль как у «таблеток» чекбоксов: тонкая рамка, мягкий фон, скругление 10px.
   Цвет успеха: --rupm-success (по умолчанию зелёный).
   Чтобы брать цвет палитры, замените значение на var(--rupm-accent).
   Сообщения ПОД отдельными полями (elementor-help-inline) не затрагиваются. */
.elementor-form .elementor-message:not(.elementor-help-inline){
  --rupm-msg:var(--rupm-success);
  display:flex!important;
  align-items:center;
  gap:12px;
  width:100%;
  box-sizing:border-box;
  margin:14px 0 0!important;
  padding:12px 16px!important;
  min-height:44px;
  border:1px solid color-mix(in srgb,var(--rupm-msg) 65%,transparent);
  border-radius:10px;
  background:color-mix(in srgb,var(--rupm-msg) 9%,transparent);
  color:var(--rupm-msg)!important;
  font-size:15px!important;
  line-height:1.4!important;
  font-weight:600;
  box-shadow:0 4px 14px color-mix(in srgb,var(--rupm-msg) 14%,transparent);
  animation:rupmMsgIn .38s cubic-bezier(.2,.8,.2,1) both;
}
.elementor-form .elementor-message.elementor-message-danger:not(.elementor-help-inline){--rupm-msg:var(--rupm-danger);}

/* Иконка: круг с галочкой / восклицательным знаком вместо шрифта eicons */
.elementor-form .elementor-message:not(.elementor-help-inline)::before{
  content:'✓'!important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 22px;
  width:22px;
  height:22px;
  margin:0!important;
  border:1px solid currentColor;
  border-radius:50%;
  box-sizing:border-box;
  font-family:inherit!important;
  font-size:13px;
  font-weight:700;
  line-height:1;
  animation:rupmMsgIcon .5s cubic-bezier(.2,.9,.3,1.4) .12s both;
}
.elementor-form .elementor-message.elementor-message-danger:not(.elementor-help-inline)::before{content:'!'!important;}

@keyframes rupmMsgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes rupmMsgIcon{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .elementor-form .elementor-message:not(.elementor-help-inline),
  .elementor-form .elementor-message:not(.elementor-help-inline)::before{animation:none;}
}
