/* =========================================================
   RIVERVIEW – rozszerzenie formularza Elementor Pro
   Celowo minimalne: wygląd pól ustawiasz w Elementorze.
   ========================================================= */

/* ---------------- Pływające etykiety ---------------- */
.rvr-fl-yes .elementor-field-group.rvr-fl { position: relative; }

.rvr-fl-yes .elementor-field-group.rvr-fl > .elementor-field-label {
  position: absolute !important;
  z-index: 2;
  /* domyślnie etykieta zaczyna się dokładnie tam, gdzie tekst w polu */
  left: calc(var(--rvr-in-left, 0px) + var(--rvr-fl-x, var(--rvr-in-pad, 16px)));
  top: calc(var(--rvr-in-top, 0px) + var(--rvr-in-h, 48px) / 2);
  width: auto !important;
  height: auto !important;
  max-width: calc(var(--rvr-in-w, 100%) - 2 * var(--rvr-fl-x, var(--rvr-in-pad, 16px)));
  margin: 0 !important;
  padding: 0 !important;
  clip: auto !important;
  clip-path: none !important;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  pointer-events: none;
  transform: translateY(-50%);
  transform-origin: 0 0;
  transition: top .2s cubic-bezier(.39,.575,.565,1),
              transform .2s cubic-bezier(.39,.575,.565,1),
              color .2s cubic-bezier(.39,.575,.565,1);
}

/* zanim skrypt zmierzy pola – bez animacji */
.rvr-fl-yes:not(.rvr-fl-ready) .elementor-field-group.rvr-fl > .elementor-field-label { transition: none; }

/* etykieta po kliknięciu / gdy pole wypełnione */
.rvr-fl-yes .rvr-fl.rvr-is-focused > .elementor-field-label,
.rvr-fl-yes .rvr-fl.rvr-is-filled > .elementor-field-label,
.rvr-fl-yes .rvr-fl.rvr-fl-static > .elementor-field-label {
  top: calc(var(--rvr-in-top, 0px) + var(--rvr-fl-top, 8px));
  transform: translateY(0) scale(var(--rvr-fl-scale, .75));
}

/* textarea – etykieta przy pierwszej linii tekstu */
.rvr-fl-yes .rvr-fl.rvr-fl-textarea:not(.rvr-is-focused):not(.rvr-is-filled) > .elementor-field-label {
  top: calc(var(--rvr-in-top, 0px) + var(--rvr-fl-pt, 26px));
  transform: none;
}

/* miejsce na zmniejszoną etykietę */
.rvr-fl-yes .rvr-fl .rvr-fl-control {
  padding-top: var(--rvr-fl-pt, 26px) !important;
  padding-bottom: var(--rvr-fl-pb, 8px) !important;
}

/* placeholder widoczny dopiero w aktywnym polu */
.rvr-fl-yes .rvr-fl .rvr-fl-control::placeholder { opacity: 0; transition: opacity .2s; }
.rvr-fl-yes .rvr-fl.rvr-is-focused .rvr-fl-control::placeholder { opacity: 1; }

/* lista wyboru – bez tekstu pod etykietą, dopóki nic nie wybrano */
.rvr-fl-yes .rvr-fl:not(.rvr-is-filled):not(.rvr-is-focused) select.rvr-fl-control { color: transparent; }

/* wykrywanie autouzupełniania przeglądarki */
@keyframes rvr-autofill { from { opacity: 1; } to { opacity: 1; } }
.rvr-fl-yes .rvr-fl-control:-webkit-autofill { animation: rvr-autofill 1ms; }

/* ---------------- Zgoda (pole Akceptacja) ---------------- */
/* :where() = zerowa waga, więc ustawienia z panelu zawsze wygrywają */
:where(.elementor-widget-form[data-rvr-form]) .elementor-field-type-acceptance .elementor-field-option {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
:where(.elementor-widget-form[data-rvr-form]) .elementor-field-type-acceptance input[type="checkbox"] {
  flex: 0 0 auto;
  margin: .2em 0 0;
}
:where(.elementor-widget-form[data-rvr-form]) .elementor-field-type-acceptance .elementor-field-option label {
  display: block;
}
.rvr-acc-link-hover .elementor-field-type-acceptance .elementor-field-option label a:hover { text-decoration: underline; }

/* zgoda pod przyciskiem wysyłania */
.rvr-acc-pos-below .elementor-form-fields-wrapper > .elementor-field-type-submit { order: 1; }
.rvr-acc-pos-below .elementor-form-fields-wrapper > .elementor-field-type-acceptance { order: 2; }

/* ---------------- Błędy pod polami ---------------- */
.rvr-form .rvr-error {
  display: block;
  width: 100%;
  margin-top: 6px;
  font-size: .8125rem;
  line-height: 1.35;
  color: var(--rvr-error-color, #d33c3c);
}
.rvr-form .rvr-has-error .elementor-field,
.rvr-form .rvr-has-error .elementor-select-wrapper select {
  border-color: var(--rvr-error-color, #d33c3c) !important;
}

/* ---------------- Komunikat po wysłaniu ---------------- */
.rvr-form .elementor-message {
  animation: rvr-msg-in .6s cubic-bezier(.16,1,.3,1) both;
}
@keyframes rvr-msg-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: none; }
}
.rvr-success-replace-yes .elementor-form.rvr-sent .elementor-form-fields-wrapper { display: none; }

/* ---------------- Przycisk (animacja jak rvr-cta) ---------------- */
.elementor-widget-form .elementor-button.rvr-button {
  --btn-bg: #fff;
  --btn-color: #000;
  background: var(--btn-bg) !important;
  color: var(--btn-color) !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  justify-content: center;
  transition: color .2s cubic-bezier(.39,.575,.565,1),
              background .2s cubic-bezier(.39,.575,.565,1),
              border-color .2s cubic-bezier(.39,.575,.565,1);
}
.elementor-widget-form .elementor-button.rvr-button:hover,
.elementor-widget-form .elementor-button.rvr-button:focus-visible { --btn-bg: #ededed; }

.elementor-widget-form .elementor-button.rvr-button--dark { --btn-bg: #000; --btn-color: #fff; }
.elementor-widget-form .elementor-button.rvr-button--dark:hover,
.elementor-widget-form .elementor-button.rvr-button--dark:focus-visible { --btn-bg: rgba(0,0,0,.6); }

.elementor-widget-form .elementor-button.rvr-button--outline {
  --btn-bg: rgba(255,255,255,.6);
  --btn-color: #fff;
  background: transparent !important;
  border: 1px solid var(--btn-bg) !important;
}
.elementor-widget-form .elementor-button.rvr-button--outline:hover,
.elementor-widget-form .elementor-button.rvr-button--outline:focus-visible { --btn-bg: #fff; }

.elementor-widget-form .elementor-button.rvr-button--outline.rvr-button--dark { --btn-bg: rgba(0,0,0,.6); --btn-color: #000; }
.elementor-widget-form .elementor-button.rvr-button--outline.rvr-button--dark:hover,
.elementor-widget-form .elementor-button.rvr-button--outline.rvr-button--dark:focus-visible { --btn-bg: #000; }

.elementor-widget-form .rvr-button .rvr-button__label { position: relative; display: block; overflow: clip; }
.elementor-widget-form .rvr-button .rvr-button__inner { position: relative; display: block; }
.elementor-widget-form .rvr-button .rvr-button__target,
.elementor-widget-form .rvr-button .rvr-button__dup {
  display: block;
  transition: transform .6s cubic-bezier(.165,.84,.44,1);
}
.elementor-widget-form .rvr-button .rvr-button__dup {
  position: absolute;
  inset: 0;
  text-align: center;
  pointer-events: none;
  user-select: none;
  transform: translate3d(0,105%,0);
}
.elementor-widget-form .rvr-button:not(.rvr-is-sending):hover .rvr-button__target,
.elementor-widget-form .rvr-button:not(.rvr-is-sending):focus-visible .rvr-button__target { transform: translate3d(0,-105%,0); }
.elementor-widget-form .rvr-button:not(.rvr-is-sending):hover .rvr-button__dup,
.elementor-widget-form .rvr-button:not(.rvr-is-sending):focus-visible .rvr-button__dup { transform: translateZ(0); }

/* zamiast kręcącej się ikonki Elementora – tekst „Wysyłanie…” */
.elementor-widget-form .rvr-button .elementor-form-spinner { display: none !important; }
.elementor-widget-form .rvr-button.rvr-is-sending { cursor: progress; }

.elementor-widget-form .elementor-button.rvr-button:focus-visible { outline: 1px solid var(--btn-color); outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  .rvr-fl-yes .elementor-field-group.rvr-fl > .elementor-field-label,
  .rvr-form .elementor-message,
  .elementor-widget-form .rvr-button,
  .elementor-widget-form .rvr-button * { transition: none !important; animation: none !important; }
}
