/* Shared interaction rules for the operator and applicant interfaces. */
@import './scrollbars.css';

:root {
  --motion-quick: 180ms;
  --motion-standard: 320ms;
  --motion-panel: 360ms;
  --motion-ease: cubic-bezier(0.2, 0.75, 0.2, 1);
}

:where(button, a, input, select, textarea, summary) {
  transition: color var(--motion-quick) ease,
    background-color var(--motion-quick) ease,
    border-color var(--motion-quick) ease,
    box-shadow var(--motion-quick) ease;
}
:where(button, a, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--ui-focus);
  outline-offset: 3px;
}

@keyframes surface-enter {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes page-enter {
  from { opacity: 0.45; transform: translateY(4px); }
  to { opacity: 1; transform: none; }
}
@keyframes feedback-enter {
  from {
    opacity: 0;
    translate: 0 5px;
  }
  to {
    opacity: 1;
    translate: 0 0;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .page-enter {
    animation: page-enter var(--motion-standard) var(--motion-ease);
  }
  .detail-tab-content > *,
  .welcome:not([hidden]),
  #form-area:not([hidden]),
  #ownership-area:not([hidden]),
  #complete:not([hidden]) {
    animation: surface-enter var(--motion-standard) var(--motion-ease);
  }
  .toast:not([hidden]),
  .column-menu,
  .task-progress[open] ol {
    animation: feedback-enter 220ms var(--motion-ease);
  }
}

/* Native dialog lifecycle keeps focus handling and Escape behavior intact. */
@supports (transition-behavior: allow-discrete) {
  dialog {
    opacity: 0;
    transform: translateY(8px);
    transition: opacity 240ms ease,
      transform var(--motion-panel) var(--motion-ease),
      display var(--motion-panel) allow-discrete,
      overlay var(--motion-panel) allow-discrete;
  }
  dialog.drawer {
    transform: translateX(24px);
  }
  dialog[open] {
    opacity: 1;
    transform: none;
  }
  dialog::backdrop {
    opacity: 0;
    transition: opacity 240ms ease,
      display var(--motion-panel) allow-discrete,
      overlay var(--motion-panel) allow-discrete;
  }
  dialog[open]::backdrop {
    opacity: 1;
  }
  @starting-style {
    dialog[open] {
      opacity: 0;
      transform: translateY(8px);
    }
    dialog.drawer[open] {
      transform: translateX(24px);
    }
    dialog[open]::backdrop {
      opacity: 0;
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
}
