/* Shared by /admin, /club, /coach: optimistic row states + view-transition timing. */
tr.fg-pending, li.fg-pending, .k-card.fg-pending, [data-fg-row].fg-pending { opacity: .55; pointer-events: none; transition: opacity .15s ease; }
tr.fg-leaving > td { padding-block: 0 !important; border-color: transparent !important; transition: padding .22s ease, border-color .22s ease; }
tr.fg-leaving > td > * { max-height: 0 !important; overflow: hidden; opacity: 0; transition: max-height .22s ease, opacity .16s ease; }
li.fg-leaving, .k-card.fg-leaving, [data-fg-row].fg-leaving { opacity: 0; transform: scale(.97); max-height: 0; margin-block: 0; padding-block: 0; overflow: hidden; transition: opacity .16s ease, transform .2s ease, max-height .24s ease .04s, margin .24s ease, padding .24s ease; }
.fg-shake { animation: fg-shake .42s cubic-bezier(.36, .07, .19, .97); }
@keyframes fg-shake { 15%, 55% { transform: translateX(-5px); } 35%, 75% { transform: translateX(5px); } 100% { transform: none; } }
::view-transition-group(root) { animation-duration: .2s; }
@media (prefers-reduced-motion: reduce) {
  tr.fg-leaving > td, tr.fg-leaving > td > *, li.fg-leaving, .k-card.fg-leaving, [data-fg-row].fg-leaving { transition: none; }
  .fg-shake { animation: none; }
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}
.bubble.fg-pending { opacity: .55; }
