@keyframes lo-dialog-enter {
  from { opacity: 0; transform: translateY(10px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes lo-fade-enter {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes lo-panel-enter {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: no-preference) {
  dialog[open] { animation: lo-dialog-enter 200ms cubic-bezier(.2,.7,.2,1); }
  dialog[open]::backdrop { animation: lo-fade-enter 180ms ease-out; }
  .settings-panel:not([hidden]), .lo-reader-toc:not([hidden]) { animation: lo-panel-enter 150ms ease-out; }
}
