.trophy-motion { display: block; position: relative; transform-origin: center 85%; }
/* The fixed outer wrapper retains layout and input geometry. */
@media (prefers-reduced-motion: reduce), (hover: none), (pointer: coarse) {
  .trophy-motion { transform: none !important; }
}
/* Interaction only: no scroll reveals, looping animation, or delayed content.
   Transform the complete trophy so its photograph and inscription stay together. */
@media (prefers-reduced-motion: no-preference) {
  :root {
    --motion-ease: cubic-bezier(.22, 1, .36, 1);
    --motion-quick: 180ms;
    --motion-settle: 320ms;
  }

  .button {
    transition: transform var(--motion-quick) var(--motion-ease),
      background var(--motion-quick), border-color var(--motion-quick);
  }
  .button:not(:disabled):active { transform: scale(.98); transition-duration: 90ms; }
  .icon-button { transition: background var(--motion-quick), transform var(--motion-quick) var(--motion-ease); }
  .icon-button:active { transform: scale(.94); }
  .desktop-nav a, .source-link, .text-link {
    transition: color var(--motion-quick), text-underline-offset var(--motion-quick);
  }
  .source-link:is(:hover, :focus-visible) { text-underline-offset: 7px; }

  .category-tab .trophy-object, .winner-trophy .trophy-object {
    transform-origin: center bottom;
    transition: transform var(--motion-settle) var(--motion-ease);
  }
  .category-tab::after { transition: transform 240ms var(--motion-ease); }
  .category-tab:focus-visible .trophy-object { transform: translateY(-4px); }
  .winner-story:focus-within .winner-trophy .trophy-object {
    transform: translateY(-3px) scale(1.012);
  }
  .category-panel[data-motion="change"] > * {
    animation: detail-settle 260ms var(--motion-ease) both;
  }

  dialog[open] { animation: dialog-enter 220ms var(--motion-ease) both; }
  dialog[open]::backdrop { animation: backdrop-enter 180ms ease-out both; }
  .mobile-menu:not([hidden]) { animation: detail-settle 180ms var(--motion-ease) both; }
  .faq-list details[open] p { animation: detail-settle 220ms var(--motion-ease) both; }
  .faq-list details[open] summary::after { animation: feedback-enter 160ms ease-out both; }
  .copy-feedback:not(:empty), #entry-copy-status:not(:empty), #dialog-copy-status:not(:empty) {
    animation: feedback-enter 180ms ease-out both;
  }

  @media (hover: hover) and (pointer: fine) {
    .button:not(:disabled):hover { transform: translateY(-2px); }
    .button:not(:disabled):active { transform: translateY(0) scale(.98); }
    .category-tab:hover .trophy-object:not([data-trophy-motion]) { transform: translateY(-4px); }
    .winner-story:hover .winner-trophy .trophy-object:not([data-trophy-motion]) {
      transform: translateY(-3px) scale(1.012);
    }
  }

  @keyframes detail-settle {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes dialog-enter {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
  }
  @keyframes backdrop-enter {
    from { background-color: #0000; }
    to { background-color: #000b; }
  }
  @keyframes feedback-enter {
    from { opacity: 0; }
    to { opacity: 1; }
  }
}
