/* Snap Form Finishers — opt-in finishing layer for real forms. */
:where(.snap-form-finishers, .snap-form-finishers--yes) {
  --snap-ff-accent: #5b45d6;
  --snap-ff-focus: #755ef0;
  --snap-ff-canvas: #ffffff;
  --snap-ff-field: #ffffff;
  --snap-ff-text: #19162b;
  --snap-ff-muted: #68647a;
  --snap-ff-border: #d8d5e2;
  --snap-ff-border-hover: #a7a0bd;
  --snap-ff-success: #147a55;
  --snap-ff-success-soft: #eaf8f1;
  --snap-ff-danger: #c9384f;
  --snap-ff-danger-soft: #fff0f2;
  --snap-ff-radius: 10px;
  --snap-ff-control-height: 48px;
  --snap-ff-space: 16px;
  --snap-ff-ring: 0 0 0 3px color-mix(in srgb, var(--snap-ff-focus) 22%, transparent);
  color: var(--snap-ff-text);
  color-scheme: light;
}

:where(.snap-form-finishers--theme-dark, .snap-form-finishers.snap-form-finishers--theme-dark) {
  --snap-ff-canvas: #171522;
  --snap-ff-field: #211e2e;
  --snap-ff-text: #f4f1fa;
  --snap-ff-muted: #b5b0c3;
  --snap-ff-border: #454052;
  --snap-ff-border-hover: #777087;
  --snap-ff-success: #71d7ad;
  --snap-ff-success-soft: #17382c;
  --snap-ff-danger: #ff8b9c;
  --snap-ff-danger-soft: #44222a;
  color-scheme: dark;
}

:where(.snap-form-finishers--density-compact, .snap-form-finishers.snap-form-finishers--density-compact) {
  --snap-ff-control-height: 40px;
  --snap-ff-space: 12px;
}

@media (prefers-color-scheme: dark) {
  :where(.snap-form-finishers--theme-auto, .snap-form-finishers.snap-form-finishers--theme-auto) {
    --snap-ff-canvas: #171522;
    --snap-ff-field: #211e2e;
    --snap-ff-text: #f4f1fa;
    --snap-ff-muted: #b5b0c3;
    --snap-ff-border: #454052;
    --snap-ff-border-hover: #777087;
    --snap-ff-success: #71d7ad;
    --snap-ff-success-soft: #17382c;
    --snap-ff-danger: #ff8b9c;
    --snap-ff-danger-soft: #44222a;
    color-scheme: dark;
  }
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(form, .elementor-form) {
  accent-color: var(--snap-ff-accent);
  color: var(--snap-ff-text);
}

/* Native form groups and Elementor Pro groups share the same rhythm. */
:where(.snap-form-finishers, .snap-form-finishers--yes) :where(.snap-ff-field, .elementor-field-group) {
  min-width: 0;
  overflow-wrap: anywhere;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(label, legend, .elementor-field-label) {
  color: var(--snap-ff-text);
  font: inherit;
  font-size: 0.875rem;
  font-weight: 650;
  line-height: 1.35;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(.snap-ff-hint, .elementor-field-subgroup) {
  color: var(--snap-ff-muted);
  font-size: 0.875rem;
  line-height: 1.45;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  input:not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='submit']),
  textarea,
  select,
  .elementor-field-textual
) {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: var(--snap-ff-control-height);
  padding: 0.72rem 0.9rem;
  border: 1px solid var(--snap-ff-border);
  border-radius: var(--snap-ff-radius);
  outline: 0;
  background: var(--snap-ff-field);
  color: var(--snap-ff-text);
  box-shadow: 0 1px 1px rgb(24 20 42 / 0.03);
  font: inherit;
  line-height: 1.45;
  transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) textarea {
  min-height: 132px;
  resize: vertical;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) select {
  appearance: auto;
  text-overflow: ellipsis;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  input:not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='submit']),
  textarea,
  select,
  .elementor-field-textual
):hover:not(:disabled) {
  border-color: var(--snap-ff-border-hover);
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(input, textarea, select, button):focus-visible {
  border-color: var(--snap-ff-focus);
  outline: 2px solid transparent;
  box-shadow: var(--snap-ff-ring);
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(input, textarea)::placeholder {
  color: color-mix(in srgb, var(--snap-ff-muted) 82%, transparent);
  opacity: 1;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(input, textarea, select):disabled {
  cursor: not-allowed;
  opacity: 0.62;
}

/* Choice fields keep their native semantics and enlarge the usable target. */
:where(.snap-form-finishers, .snap-form-finishers--yes) :where(.elementor-field-option, .snap-ff-option) {
  display: grid;
  grid-template-columns: 1.15rem minmax(0, 1fr);
  align-items: start;
  gap: 0.62rem;
  min-height: 32px;
  padding-block: 0.32rem;
  color: var(--snap-ff-text);
  cursor: pointer;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(input[type='checkbox'], input[type='radio']) {
  width: 1.1rem;
  height: 1.1rem;
  margin: 0.1rem 0 0;
  border-color: var(--snap-ff-border);
  flex: 0 0 auto;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) input[type='file'] {
  min-height: var(--snap-ff-control-height);
  padding: 0.38rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) input[type='file']::file-selector-button {
  min-height: calc(var(--snap-ff-control-height) - 0.76rem);
  margin-inline-end: 0.75rem;
  padding-inline: 0.85rem;
  border: 0;
  border-radius: max(5px, calc(var(--snap-ff-radius) - 4px));
  background: color-mix(in srgb, var(--snap-ff-accent) 11%, var(--snap-ff-field));
  color: var(--snap-ff-accent);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(button, input[type='submit'], .elementor-button) {
  min-height: 44px;
  border: 1px solid transparent;
  border-radius: var(--snap-ff-radius);
  background: var(--snap-ff-accent);
  color: #fff;
  font: inherit;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  transition: filter 150ms ease, transform 150ms ease, box-shadow 150ms ease;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(button, input[type='submit'], .elementor-button):hover:not(:disabled) {
  filter: brightness(0.93) saturate(1.08);
  transform: translateY(-1px);
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(button, input[type='submit'], .elementor-button):disabled {
  cursor: wait;
  opacity: 0.7;
}

/* Elementor's theme-level form rules intentionally have useful specificity.
 * This opt-in bridge makes the Snap controls authoritative without !important
 * and without changing forms whose finishing switch is disabled. */
.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form :is(
  input.elementor-field-textual,
  textarea.elementor-field-textual,
  select.elementor-field-textual
) {
  border-color: var(--snap-ff-border);
  border-radius: var(--snap-ff-radius);
  background-color: var(--snap-ff-field);
  color: var(--snap-ff-text);
}

.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form :is(
  input.elementor-field-textual,
  textarea.elementor-field-textual,
  select.elementor-field-textual
):hover:not(:disabled) {
  border-color: var(--snap-ff-border-hover);
}

.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form :is(
  input.elementor-field-textual,
  textarea.elementor-field-textual,
  select.elementor-field-textual
):focus-visible {
  border-color: var(--snap-ff-focus);
  outline: 3px solid var(--snap-ff-focus);
  outline-offset: 2px;
  box-shadow: var(--snap-ff-ring);
}

.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form .elementor-field-label,
.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form .elementor-field-option label {
  color: var(--snap-ff-text);
}

.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form .elementor-button[type='submit'] {
  border-color: transparent;
  border-radius: var(--snap-ff-radius);
  background-color: var(--snap-ff-accent);
  color: #fff;
}

.elementor-widget-form.snap-form-finishers--yes[class*='snap-form-finishers--theme-'][class*='snap-form-finishers--density-'] .elementor-form .elementor-button[type='submit']:hover:not(:disabled) {
  background-color: var(--snap-ff-accent);
}

/* Browser validation and Elementor server validation converge here. */
:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  .snap-ff-has-error,
  .elementor-error,
  .error
) :where(input, textarea, select),
:where(.snap-form-finishers, .snap-form-finishers--yes) :where(input, textarea, select)[aria-invalid='true'] {
  border-color: var(--snap-ff-danger);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--snap-ff-danger) 16%, transparent);
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  .snap-ff-error,
  .elementor-message-danger,
  .elementor-form-help-inline
) {
  display: block;
  width: 100%;
  margin-top: 0.45rem;
  color: var(--snap-ff-danger);
  font-size: 0.82rem;
  font-weight: 620;
  line-height: 1.4;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  .elementor-message-success,
  .snap-ff-success
) {
  display: block;
  width: 100%;
  margin-top: var(--snap-ff-space);
  padding: 0.8rem 0.9rem;
  border: 1px solid color-mix(in srgb, var(--snap-ff-success) 34%, transparent);
  border-radius: var(--snap-ff-radius);
  background: var(--snap-ff-success-soft);
  color: var(--snap-ff-success);
  font-size: 0.9rem;
  font-weight: 650;
  line-height: 1.45;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  .elementor-message-danger:not(.elementor-help-inline),
  .snap-ff-danger
) {
  padding: 0.8rem 0.9rem;
  border: 1px solid color-mix(in srgb, var(--snap-ff-danger) 34%, transparent);
  border-radius: var(--snap-ff-radius);
  background: var(--snap-ff-danger-soft);
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  form.elementor-form-waiting,
  form.snap-ff-is-loading
) {
  cursor: progress;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  form.elementor-form-waiting,
  form.snap-ff-is-loading
) :where(button[type='submit'], input[type='submit']) {
  position: relative;
  color: transparent;
}

:where(.snap-form-finishers, .snap-form-finishers--yes) :where(
  form.elementor-form-waiting,
  form.snap-ff-is-loading
) :where(button[type='submit'], input[type='submit'])::after {
  position: absolute;
  inset: 50% auto auto 50%;
  width: 1rem;
  height: 1rem;
  border: 2px solid rgb(255 255 255 / 0.48);
  border-top-color: #fff;
  border-radius: 50%;
  content: '';
  transform: translate(-50%, -50%);
  animation: snap-ff-spin 700ms linear infinite;
}

@keyframes snap-ff-spin {
  to { transform: translate(-50%, -50%) rotate(360deg); }
}

@media (max-width: 767px) {
  :where(.snap-form-finishers, .snap-form-finishers--yes) :where(
    .elementor-column.elementor-col-50,
    .elementor-column.elementor-col-40,
    .elementor-column.elementor-col-60,
    .snap-ff-grid > *
  ) {
    width: 100%;
  }

  :where(.snap-form-finishers, .snap-form-finishers--yes) :where(button[type='submit'], input[type='submit']) {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  :where(.snap-form-finishers, .snap-form-finishers--yes) *,
  :where(.snap-form-finishers, .snap-form-finishers--yes) *::before,
  :where(.snap-form-finishers, .snap-form-finishers--yes) *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

@media (forced-colors: active) {
  :where(.snap-form-finishers, .snap-form-finishers--yes) :where(input, textarea, select, button):focus-visible {
    outline: 2px solid CanvasText;
    outline-offset: 2px;
  }
}
