/* FileNova v2 — micro-animations. Purposeful only; disabled under reduced-motion. */
@keyframes fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes code-reveal { 0% { opacity: 0; letter-spacing: 24px; } 100% { opacity: 1; letter-spacing: 8px; } }
@keyframes pop { 0% { transform: scale(0.96); } 60% { transform: scale(1.02); } 100% { transform: scale(1); } }
.card { animation: fade-up 200ms ease both; }
.room-code.reveal { animation: code-reveal 350ms ease both; }
.btn:active { transform: scale(0.98); }
.file-row.fresh { animation: pop 200ms ease both; }
.toast { animation: fade-up 180ms ease both; }
.dropzone.dragover { animation: pop 150ms ease both; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
