@keyframes kcm-form-fade-up {
  from {
    opacity: 0;
    transform: translateY(var(--kcm-form-enter-distance)) scale(var(--kcm-form-enter-scale));
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes kcm-form-invalid-nudge {
  0%,
  100% {
    transform: translateX(0);
  }
  30% {
    transform: translateX(-0.18rem);
  }
  70% {
    transform: translateX(0.18rem);
  }
}

body.kcm-form-runtime.kcm-js-ready [data-kcm-enter="pending"] {
  opacity: 0;
  transform: translateY(var(--kcm-form-enter-distance)) scale(var(--kcm-form-enter-scale));
}

body.kcm-form-runtime.kcm-js-ready [data-kcm-enter="active"] {
  opacity: 1;
  transform: translateY(0) scale(1);
  animation: kcm-form-fade-up var(--kcm-motion-expressive) var(--kcm-ease-expressive) both;
  animation-delay: calc(var(--kcm-enter-order, 0) * var(--kcm-motion-stagger));
}

body.kcm-form-runtime .kcm-form-section-collapsed .section-body,
body.kcm-form-runtime .kcm-form-section-collapsed .section-content {
  opacity: 0.72;
}

body.kcm-form-runtime .kcm-form-field.kcm-field-invalid {
  background: color-mix(in srgb, var(--kcm-color-danger) 6%, var(--kcm-color-surface) 94%);
}

body.kcm-form-runtime .kcm-form-field.kcm-field-invalid .form-control,
body.kcm-form-runtime .kcm-form-field.kcm-field-invalid .control-input input,
body.kcm-form-runtime .kcm-form-field.kcm-field-invalid .control-input textarea,
body.kcm-form-runtime .kcm-form-field.kcm-field-invalid .control-input select,
body.kcm-form-runtime .kcm-form-field.kcm-field-invalid .ql-container {
  border-color: color-mix(in srgb, var(--kcm-color-danger) 60%, var(--kcm-color-border) 40%);
  box-shadow: var(--kcm-form-shadow-danger);
}

body.kcm-form-runtime .kcm-form-field.kcm-field-invalid[data-kcm-invalid-pulse="1"] {
  animation: none;
}

body.kcm-form-runtime .has-error,
body.kcm-form-runtime .text-danger,
body.kcm-form-runtime .invalid-feedback {
  color: var(--kcm-color-danger) !important;
}

body.kcm-form-runtime .kcm-form-field.kcm-field-complete .form-control,
body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input input,
body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input textarea,
body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input select {
  border-color: var(--kcm-form-border-strong);
  animation: none;
}

body.kcm-form-runtime .kcm-form-shell.kcm-save-pending,
body.kcm-form-runtime .modal-content.kcm-save-pending {
  box-shadow:
    inset 0 1px 0 color-mix(in srgb, #ffffff 72%, transparent),
    0 0 0 1px color-mix(in srgb, var(--kcm-color-primary) 18%, transparent),
    0 1.3rem 2.8rem color-mix(in srgb, var(--kcm-color-primary) 18%, transparent);
}

body.kcm-form-runtime .kcm-form-shell.kcm-save-complete,
body.kcm-form-runtime .modal-content.kcm-save-complete {
  animation: none;
}

body.kcm-form-runtime .btn[disabled],
body.kcm-form-runtime .btn.disabled,
body.kcm-form-runtime .kcm-form-shell [aria-busy="true"] {
  cursor: progress;
}

body.kcm-form-runtime .btn[disabled],
body.kcm-form-runtime .btn.disabled,
body.kcm-form-runtime button[disabled],
body.kcm-form-runtime .disabled .form-control {
  opacity: 0.78;
}

body.kcm-form-runtime .grid-row.kcm-grid-row-new {
  animation: kcm-form-fade-up var(--kcm-motion-section) var(--kcm-ease-expressive) 1 both;
}

body.kcm-form-runtime .kcm-live-region {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

body.kcm-form-runtime.kcm-reduced-motion *,
@media (prefers-reduced-motion: reduce) {
  body.kcm-form-runtime * {
    scroll-behavior: auto !important;
  }

  body.kcm-form-runtime.kcm-js-ready [data-kcm-enter="pending"],
  body.kcm-form-runtime.kcm-js-ready [data-kcm-enter="active"] {
    opacity: 1;
    transform: none;
    animation: none;
  }

  body.kcm-form-runtime .kcm-form-field.kcm-field-invalid[data-kcm-invalid-pulse="1"],
  body.kcm-form-runtime .grid-row.kcm-grid-row-new,
  body.kcm-form-runtime .kcm-form-shell.kcm-save-complete,
  body.kcm-form-runtime .kcm-form-field.kcm-field-complete .form-control,
  body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input input,
  body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input textarea,
  body.kcm-form-runtime .kcm-form-field.kcm-field-complete .control-input select {
    animation: none !important;
  }

  body.kcm-form-runtime .btn,
  body.kcm-form-runtime button,
  body.kcm-form-runtime .form-control,
  body.kcm-form-runtime .form-section,
  body.kcm-form-runtime .grid-row,
  body.kcm-form-runtime .nav-link {
    transition-duration: 1ms !important;
    transform: none !important;
  }
}
