/* Gentle life for the inline SVG art: figures bob and blink, lights twinkle,
   snow falls past windows. Everything stops under reduced motion (app.css). */

.figure .fig-bob { animation: fig-bob 3.2s ease-in-out infinite; }
.portrait-person:nth-child(3n + 2) .fig-bob { animation-delay: -1.1s; }
.portrait-person:nth-child(3n) .fig-bob { animation-delay: -2.1s; }
@keyframes fig-bob { 50% { transform: translateY(-3px); } }

.fig-blink { transform-box: fill-box; transform-origin: center; animation: fig-blink 5.5s infinite; }
@keyframes fig-blink { 0%, 94%, 100% { transform: scaleY(1); } 96% { transform: scaleY(.1); } }

.fig-twinkle, .tw { animation: twinkle 2.4s ease-in-out infinite; }
@keyframes twinkle { 50% { opacity: .45; } }

.fig-steam { animation: steam 2.6s ease-in-out infinite; }
@keyframes steam { 0% { transform: translateY(4px); opacity: 0; } 40% { opacity: .9; } 100% { transform: translateY(-8px); opacity: 0; } }

.fig-notes { animation: notes 2.8s ease-in-out infinite; }
@keyframes notes { 50% { transform: translateY(-5px) rotate(-3deg); } }

.fig-sparkle { transform-box: fill-box; transform-origin: center; animation: sparkle 1.8s ease-in-out infinite; }
@keyframes sparkle { 50% { transform: scale(.6); opacity: .5; } }

.fig-crumbs { animation: crumbs 2.4s ease-in infinite; }
@keyframes crumbs { 0% { transform: translateY(-4px); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(10px); opacity: 0; } }

/* Scenes */
.aurora { animation: aurora 14s ease-in-out infinite alternate; }
@keyframes aurora { from { transform: translateX(-30px); opacity: .75; } to { transform: translateX(30px); opacity: 1; } }

.smoke circle { animation: smoke 4.5s ease-out infinite; transform-box: fill-box; transform-origin: center; }
.smoke circle:nth-child(2) { animation-delay: -1.5s; }
.smoke circle:nth-child(3) { animation-delay: -3s; }
@keyframes smoke { 0% { transform: translateY(14px) scale(.6); opacity: 0; } 30% { opacity: .9; } 100% { transform: translateY(-16px) scale(1.2); opacity: 0; } }

.flake { animation: window-snow 6s linear infinite; }
@keyframes window-snow { 0% { transform: translateY(-30px); opacity: 0; } 15% { opacity: 1; } 100% { transform: translateY(60px); opacity: 0; } }

.glow { animation: glow 3.4s ease-in-out infinite; }
@keyframes glow { 50% { opacity: .82; } }
