/*
 * Elogic AI motion layer.
 *
 * Motion only confirms an interaction or clarifies a relationship. This layer
 * is intentionally additive: no selector hides essential content while it
 * waits for JavaScript or an animation to complete.
 */

@keyframes el-page-enter {
  from {
    opacity: 0.96;
    transform: translateY(0.35rem);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes el-menu-enter {
  from {
    opacity: 0;
    transform: translateY(-0.5rem);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes el-loading-spin {
  to {
    transform: rotate(1turn);
  }
}

@media (prefers-reduced-motion: no-preference) {
  #main-content {
    animation: el-page-enter var(--el-motion-slow) var(--el-ease-entrance) both;
  }

  .el-mobile-menu[open] {
    animation: el-menu-enter var(--el-motion-base) var(--el-ease-entrance) both;
  }
}

/* Actions: hover is limited to devices that genuinely support it. */
.el-button,
.wp-element-button,
.wp-block-button__link {
  transition: transform var(--el-motion-fast) var(--el-ease-standard);
}

.el-button:active,
.wp-element-button:active,
.wp-block-button__link:active {
  transform: translateY(0) scale(0.98);
}

.el-button:focus-visible,
.wp-element-button:focus-visible,
.wp-block-button__link:focus-visible {
  transform: translateY(-1px);
}

.el-button[aria-busy='true'],
.wp-element-button[aria-busy='true'],
.wp-block-button__link[aria-busy='true'] {
  position: relative;
  color: transparent;
  cursor: progress;
  pointer-events: none;
}

.el-button[aria-busy='true']::before,
.wp-element-button[aria-busy='true']::before,
.wp-block-button__link[aria-busy='true']::before {
  position: absolute;
  width: 1rem;
  height: 1rem;
  content: '';
  border: 2px solid var(--el-loading-color, var(--el-color-paper));
  border-right-color: transparent;
  border-radius: 50%;
  animation: el-loading-spin var(--el-motion-slow) linear infinite;
}

.el-button--secondary,
.el-button--inverse,
.is-style-elogic-secondary .wp-block-button__link,
.is-style-elogic-inverse .wp-block-button__link {
  --el-loading-color: var(--el-color-navy-950);
}

.el-button[aria-busy='true']::after,
.wp-element-button[aria-busy='true']::after,
.wp-block-button__link[aria-busy='true']::after {
  opacity: 0;
}

.el-button[disabled],
.el-button[aria-disabled='true'],
.wp-element-button[disabled],
.wp-element-button[aria-disabled='true'],
.wp-block-button__link[disabled],
.wp-block-button__link[aria-disabled='true'] {
  transform: none;
}

@media (hover: hover) and (pointer: fine) {
  .el-button:hover,
  .wp-element-button:hover,
  .wp-block-button__link:hover {
    transform: translateY(-1px);
  }
}

/* Navigation gives clear feedback without relying on hover. */
.el-site-header,
.el-site-header::before,
.el-nav-dropdown__panel,
.el-menu-toggle,
.el-mobile-menu__close {
  transition:
    opacity var(--el-motion-base) var(--el-ease-standard),
    transform var(--el-motion-base) var(--el-ease-standard);
}

.el-menu-toggle:active,
.el-mobile-menu__close:active {
  transform: scale(0.94);
}

.el-nav-dropdown[open] > .el-nav-dropdown__panel {
  animation: el-menu-enter var(--el-motion-fast) var(--el-ease-entrance) both;
}

.el-link,
.el-home-text-link,
.el-division-card__link,
.el-breadcrumbs a,
.el-site-footer a {
  transition:
    opacity var(--el-motion-fast) var(--el-ease-standard),
    transform var(--el-motion-fast) var(--el-ease-standard);
}

.el-link:active,
.el-home-text-link:active,
.el-division-card__link:active,
.el-breadcrumbs a:active,
.el-site-footer a:active {
  transform: translateY(1px);
}

@media (hover: hover) and (pointer: fine) {
  .el-link:hover,
  .el-home-text-link:hover,
  .el-division-card__link:hover,
  .el-breadcrumbs a:hover,
  .el-site-footer a:hover {
    transform: translateX(0.1rem);
  }
}

/* Card movement is also available through keyboard focus. */
.el-card,
.el-home-card,
.el-home-division,
.el-division-card,
/* stylelint-disable-next-line no-descending-specificity -- Independent component links share the global anchor selector. */
.el-division-navigation a {
  transition:
    opacity var(--el-motion-base) var(--el-ease-standard),
    transform var(--el-motion-base) var(--el-ease-standard);
}

.el-card:focus-within,
.el-home-card:focus-within,
.el-home-division:focus-within,
.el-division-card:focus-within,
.el-division-navigation a:focus-visible {
  transform: translateY(-0.2rem);
}

@media (hover: hover) and (pointer: fine) {
  .el-card:hover,
  .el-home-card:has(a:hover),
  .el-home-division:has(a:hover),
  .el-division-card:has(a:hover),
  .el-division-navigation a:hover {
    transform: translateY(-0.2rem);
  }
}

/* Content controls keep a pressed state on touch and keyboard. */
.el-tabs__tab,
.el-accordion summary,
.el-division-faq summary,
.el-field :where(input, select, textarea),
.el-choice input,
.el-filter,
.el-filters :where(button, a, select),
.el-process__step {
  transition:
    opacity var(--el-motion-fast) var(--el-ease-standard),
    transform var(--el-motion-fast) var(--el-ease-standard);
}

.el-tabs__tab:active,
.el-accordion summary:active,
.el-division-faq summary:active,
.el-filter:active,
.el-filters :where(button, a):active {
  transform: scale(0.985);
}

.el-tabs__tab:focus-visible,
.el-accordion summary:focus-visible,
.el-division-faq summary:focus-visible,
.el-filter:focus-visible,
.el-filters :where(button, a, select):focus-visible {
  position: relative;
  z-index: 1;
}

.el-tabs__tab[aria-selected='true'] {
  transform: translateY(-1px);
}

.el-accordion details[open] summary,
.el-division-faq details[open] summary {
  color: var(--el-color-indigo-dark);
}

.el-field :where(input, select, textarea):user-invalid,
.el-field :where(input, select, textarea)[aria-invalid='true'] {
  box-shadow: 0 0 0 3px rgb(180 35 24 / 12%);
}

.el-field :where(input, select, textarea)[aria-invalid='false'],
.el-field.is-valid :where(input, select, textarea) {
  box-shadow: 0 0 0 3px rgb(20 122 91 / 12%);
}

.el-field__error,
.el-form__status[role='alert'],
.el-form__status[data-state='error'] {
  animation: el-menu-enter var(--el-motion-fast) var(--el-ease-entrance) both;
}

.el-form__status[role='status'],
.el-form__status[data-state='success'] {
  color: var(--el-color-success);
  animation: el-menu-enter var(--el-motion-fast) var(--el-ease-entrance) both;
}

.el-process__step:focus-within,
.el-process__step:active {
  transform: translateX(0.2rem);
}

@media (hover: hover) and (pointer: fine) {
  .el-process__step:has(a:hover) {
    transform: translateX(0.2rem);
  }
}

/* Existing homepage logic interaction remains legible without enhancement. */
.el-logic-line,
.el-logic-node,
.el-logic-visual::after {
  transition:
    opacity var(--el-motion-base) var(--el-ease-standard),
    transform var(--el-motion-slow) var(--el-ease-emphasis);
}

.el-logic-visual.is-enhanced .el-logic-line {
  opacity: calc(0.52 + (var(--el-logic-progress, 0) * 0.48));
}

/* Optional reveal hooks never conceal content before enhancement. */
.el-reveal,
.el-motion-reveal,
[data-el-reveal] {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: no-preference) {
  .el-reveal.is-revealed,
  .el-motion-reveal.is-revealed,
  [data-el-reveal='revealed'] {
    animation: el-page-enter var(--el-motion-base) var(--el-ease-entrance) both;
  }
}

@media (prefers-reduced-motion: reduce) {
  .el-button[aria-busy='true']::before,
  .wp-element-button[aria-busy='true']::before,
  .wp-block-button__link[aria-busy='true']::before {
    animation: none;
  }

  #main-content,
  .el-mobile-menu[open],
  .el-nav-dropdown[open] > .el-nav-dropdown__panel,
  .el-field__error,
  .el-form__status[role='alert'],
  .el-form__status[data-state='error'],
  .el-form__status[role='status'],
  .el-form__status[data-state='success'],
  .el-reveal.is-revealed,
  .el-motion-reveal.is-revealed,
  [data-el-reveal='revealed'] {
    animation: none;
  }

  .el-button,
  .wp-element-button,
  .wp-block-button__link,
  .el-link,
  .el-home-text-link,
  .el-division-card__link,
  .el-breadcrumbs a,
  .el-site-footer a,
  .el-site-header,
  .el-site-header::before,
  .el-menu-toggle,
  .el-mobile-menu__close,
  .el-card,
  .el-home-card,
  .el-home-division,
  .el-division-card,
  .el-division-navigation a,
  .el-tabs__tab,
  .el-accordion summary,
  .el-division-faq summary,
  .el-field :where(input, select, textarea),
  .el-choice input,
  .el-filter,
  .el-filters :where(button, a, select),
  .el-process__step,
  .el-logic-line,
  .el-logic-node,
  .el-logic-visual::after {
    transition: none;
  }
}
