/* One motion cadence for navigation, sheets and controls. Movement settles
   quickly; content stays readable while a request is still in flight. */
:root {
  --ease: cubic-bezier(.22, .61, .36, 1);
  --ease-enter: cubic-bezier(.16, 1, .3, 1);
  --t-fast: 140ms var(--ease);
  --t-med: 240ms var(--ease);
}
.page.active { animation: lurk-page-enter 260ms var(--ease-enter) both; }
@keyframes lurk-page-enter {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}
#detailPanel {
  transition: transform 360ms var(--ease-enter);
  overscroll-behavior: contain;
}
#panelOverlay { transition: opacity 220ms ease-out; }
.notif-dropdown.open { animation: lurk-popover-enter 180ms var(--ease-enter) both; transform-origin: top right; }
@keyframes lurk-popover-enter {
  from { opacity: 0; transform: translateY(-3px) scale(.985); }
  to { opacity: 1; transform: none; }
}
.btn {
  transition: background var(--t-fast), border-color var(--t-fast),
    color var(--t-fast), box-shadow var(--t-fast), transform var(--t-fast), opacity var(--t-fast);
}
.btn:active:not(:disabled) { transform: scale(.985); }
.btn:disabled { cursor: not-allowed; }
.skeleton { animation-duration: 1800ms; animation-timing-function: ease-in-out; }
.tst { animation: lurk-toast-enter 240ms var(--ease-enter) both; }
@keyframes lurk-toast-enter {
  from { opacity: 0; transform: translateY(-6px) scale(.99); }
  to { opacity: 1; transform: none; }
}
/* Touch devices must not retain a hover lift after the finger leaves. */
@media (hover: none) {
  .ex-card:hover, .rs-tile:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .page.active, .notif-dropdown.open, .tst { animation: none; }
  #detailPanel, #panelOverlay, .btn { transition: none; }
  .btn:active:not(:disabled) { transform: none; }
}
