/* Short conversations and responsive actions; no continuous animation. */
.g-conversation, body.login {
  --g-ease-enter: cubic-bezier(.16, 1, .3, 1);
  --g-ease-action: cubic-bezier(.22, .61, .36, 1);
}

@media (prefers-reduced-motion: no-preference) {
  /* JS adds this only as a surface enters view. The default is always visible. */
  .g-conversation .g-motion-enter { animation: g-surface-arrive 640ms var(--g-ease-enter) both; }
  .g-conversation .greetings > li.g-motion-enter {
    --g-arrive-x: -14px; --g-arrive-turn: -1.5deg;
    transform-origin: 20% 85%; animation-name: g-dialogue-arrive; animation-duration: 560ms;
  }
  .g-conversation .greetings > li:nth-child(even).g-motion-enter {
    --g-arrive-x: 14px; --g-arrive-turn: 1.5deg; transform-origin: 80% 85%;
  }
  .g-conversation .greetings > li:nth-child(2).g-motion-enter { animation-delay: 60ms; }
  .g-conversation .greetings > li:nth-child(3).g-motion-enter { animation-delay: 120ms; }
  .g-conversation .greetings > li:nth-child(4).g-motion-enter { animation-delay: 180ms; }
  .g-conversation :is(.school-form, .contact__grid .contact-form, .genny-auth__card, .confirmation__card, .page-message__card).g-motion-enter { animation: g-ink-arrive 240ms ease-out; }
  .g-conversation .field__picked.is-feedback svg path { stroke-dasharray: 20; animation: g-selection-check 220ms var(--g-ease-enter); }
  .g-conversation .new-teacher__quote.g-motion-enter,
  .g-conversation .teacher__quote.g-motion-enter,
  .g-conversation .content-page > .container.g-motion-enter { animation-name: g-ink-arrive; }

  .g-conversation :is(.btn, .new-button, .school-button, .genny-btn, .genny-auth__card .button, .header-call),
  .login .button-primary {
    transition: transform 180ms var(--g-ease-action), background-color 180ms ease, box-shadow 220ms ease;
  }
  .g-conversation .greet { transition: transform 280ms var(--g-ease-enter), box-shadow 280ms ease; }
  .g-conversation :is(.boardlink, .link-arrow, .greet__arrow) svg { transition: transform 220ms var(--g-ease-action); }
  .g-conversation :is(.genny-lesson-card, .genny-slot, .gd-nav a) {
    transition: background-color 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
  }
  .g-conversation .genny-steps li span { transition: background-color 220ms ease, color 220ms ease; }
  .g-conversation .genny-panel.is-active { animation: g-step-arrive 240ms var(--g-ease-enter); }
  .g-conversation .account-dropdown:not([hidden]) { animation: g-overlay-arrive 220ms var(--g-ease-enter); transform-origin: top right; }
  .g-conversation .gd-modal:not([hidden]) .gd-modal__box { animation: g-overlay-arrive 260ms var(--g-ease-enter); }
  .g-conversation .school-dock { transition: transform 280ms var(--g-ease-enter), visibility 280ms; }

  @media (hover: hover) and (pointer: fine) {
    .g-conversation :is(.btn, .new-button, .school-button, .genny-btn, .genny-auth__card .button, .header-call):not(:disabled):hover,
    .login .button-primary:not(:disabled):hover { transform: translateY(-2px); }
    .g-conversation :is(.boardlink, .link-arrow):hover svg { transform: translateX(3px); }
    .g-conversation :is(.boardlink, .link-arrow)[target="_blank"]:hover svg { transform: translate(2px, -2px); }
    .g-conversation .greet:hover .greet__arrow svg { transform: translateY(3px); }
  }
  .g-conversation :is(.btn, .new-button, .school-button, .genny-btn, .genny-auth__card .button, .header-call):not(:disabled):active,
  .login .button-primary:not(:disabled):active { transform: translateY(1px); }
  @media (max-width: 960px) {
    .g-conversation .is-nav-ready .primary-nav.is-open { animation: g-menu-arrive 240ms var(--g-ease-enter); }
  }
}

@keyframes g-dialogue-arrive {
  from { opacity: 0; transform: translate(var(--g-arrive-x), 20px) rotate(var(--g-arrive-turn)) scale(.96); }
  to { opacity: 1; transform: none; }
}
@keyframes g-surface-arrive {
  from { opacity: .3; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
@keyframes g-ink-arrive { from { opacity: .45; } to { opacity: 1; } }
@keyframes g-step-arrive { from { opacity: .5; transform: translateX(8px); } to { opacity: 1; transform: none; } }
@keyframes g-overlay-arrive { from { opacity: .3; transform: translateY(6px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes g-menu-arrive { from { opacity: .4; transform: translateY(-6px); } to { opacity: 1; transform: none; } }

/* Touch does not retain a simulated hover lift. */
@media (hover: none) { .g-conversation .greet:hover { transform: none; } }
@media (prefers-reduced-motion: reduce), print {
  .g-conversation .g-motion-enter, .login .button-primary { animation: none !important; transition: none !important; transform: none !important; }
}

@keyframes g-selection-check { from { stroke-dashoffset: 20; } to { stroke-dashoffset: 0; } }
