/* Political Intelligence Platform · garden kit motion (garden.js). Grows once on arrival,
   lives only on screen, holds still for reduced motion. Loaded by every page that draws a garden. */
.iv-art { display: block; overflow: visible; }
.iv-art .iv-st, .iv-art .iv-root { stroke-dasharray: 100; stroke-dashoffset: 100; }
.iv-art .iv-lf, .iv-art .iv-hd { transform: scale(0); }
.iv-art .iv-nd { opacity: 0; }
.is-grown .iv-art .iv-st, .is-grown .iv-art .iv-root { stroke-dashoffset: 0; transition: stroke-dashoffset .95s var(--ease-out) calc(var(--d, 0s) * .55); }
.is-grown .iv-art .iv-lf { transform: none; transition: transform .7s cubic-bezier(.34, 1.4, .64, 1) calc(var(--d, 0s) * .55); }
.is-grown .iv-art .iv-hd { transform: none; transition: transform .75s cubic-bezier(.34, 1.5, .64, 1) calc(var(--d, 0s) * .55); }
.is-grown .iv-art .iv-nd { opacity: 1; transition: opacity .45s ease calc(var(--d, 0s) * .55); }
/* life, only while on screen */
.iv-art .iv-pl, .iv-art .iv-sp { animation: iv-sway var(--sw, 7s) ease-in-out var(--sd, 0s) infinite alternate paused; }
.iv-art .ivw rect { transform-box: fill-box; transform-origin: center; animation: iv-talk 1.1s ease-in-out calc(var(--i) * -.18s) infinite alternate paused; }
.iv-art .ivd circle { animation: iv-type 1.4s ease-in-out calc(var(--i) * .18s) infinite paused; }
.iv-art .iv-ping { transform-box: fill-box; transform-origin: center; opacity: 0; animation: iv-ping 4.2s ease-out infinite paused; }
.iv-art .ivlive { animation: iv-blink 1.6s ease-in-out infinite paused; }
.iv-art .iv-du { animation: iv-dust 6s ease-in-out var(--dd, 0s) infinite alternate paused; }
.is-live .iv-art .iv-pl, .is-live .iv-art .iv-sp, .is-live .iv-art .ivw rect, .is-live .iv-art .ivd circle, .is-live .iv-art .iv-ping, .is-live .iv-art .ivlive, .is-live .iv-art .iv-du { animation-play-state: running; }
@keyframes iv-sway { from { transform: rotate(-1.1deg); } to { transform: rotate(1.1deg); } }
@keyframes iv-talk { from { transform: scaleY(.45); } to { transform: scaleY(1); } }
@keyframes iv-type { 0%, 60%, 100% { transform: none; opacity: 1; } 30% { transform: translateY(-4px); opacity: .6; } }
@keyframes iv-ping { 0% { opacity: .7; transform: scale(1); } 70%, 100% { opacity: 0; transform: scale(1.9); } }
@keyframes iv-blink { 50% { opacity: .25; } }
@keyframes iv-dust { from { opacity: .35; } to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  .iv-art .iv-st, .iv-art .iv-root { stroke-dashoffset: 0 !important; transition: none !important; }
  .iv-art .iv-lf, .iv-art .iv-hd { transform: none !important; transition: none !important; }
  .iv-art .iv-nd { opacity: 1 !important; transition: none !important; }
  .iv-art * { animation: none !important; }
}
