/* generated by tools/build_web.py from 030 pipi.css — do not edit */
@keyframes pp-breathe { 0%, 100% { transform: scale(1, 1); } 50% { transform: scale(1.02, .975); } }
@keyframes pp-tail { 0%, 100% { transform: rotate(-6deg); } 50% { transform: rotate(10deg); } }
@keyframes pp-blink { 0%, 93%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.08); } }
@keyframes pp-wave { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-110deg) translate(-4px, -6px); } }
@keyframes pp-jump { 0%, 100% { transform: translateY(0) scale(1.04, .94); } 40% { transform: translateY(-34px) scale(.96, 1.05); } 70% { transform: translateY(0) scale(1.06, .92); } }
@keyframes pp-shadow { 0%, 100% { transform: scale(1); opacity: .12; } 40% { transform: scale(.6); opacity: .05; } }
@keyframes pp-flap-l { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(18deg); } }
@keyframes pp-flap-r { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-18deg); } }
@keyframes pp-z { 0% { opacity: 0; transform: translate(0, 6px); } 40% { opacity: 1; } 100% { opacity: 0; transform: translate(8px, -10px); } }
.pipi-mini { width: 28px; }
.pipi-av { background: linear-gradient(135deg, #F7C948, #E8503A); }
.pose-btns { display: flex; flex-wrap: wrap; gap: 6px; }
.pipi-mount { display: block; aspect-ratio: 1; }
.pipi { width: 100%; height: 100%; overflow: visible; display: block; }
.pipi g, .pipi ellipse.pp-shadow { transform-box: view-box; }
.pipi .pp-all { transform-origin: 110px 205px; animation: pp-breathe 3.2s ease-in-out infinite; }
.pipi .pp-shadow { transform-origin: 110px 208px; }
.pipi .pp-tail { transform-origin: 150px 170px; animation: pp-tail 2.2s ease-in-out infinite; }
.pipi .pp-head { transform-origin: 110px 140px; transition: transform .4s cubic-bezier(.2, 1.5, .4, 1); }
.pipi .pp-look { transition: transform .12s linear; }
.pipi .pp-eyes-open { transform-origin: 110px 104px; animation: pp-blink 4.6s infinite; }
.pipi .pp-eyes-closed, .pipi .pp-zzz { display: none; }
.pipi .pp-arm-r { transform-origin: 146px 164px; }
.pipi .pp-wing-l { transform-origin: 70px 140px; animation: pp-flap-l 1.8s ease-in-out infinite; }
.pipi .pp-wing-r { transform-origin: 150px 140px; animation: pp-flap-r 1.8s ease-in-out infinite; }
.pipi-mount[data-static] .pp-all, .pipi-mount[data-static] .pp-tail { animation-duration: 4.5s; }
.pose-wave .pp-arm-r { animation: pp-wave 1.1s ease-in-out infinite; }
.pose-wave .pp-head { transform: rotate(-5deg); }
.pose-jump .pp-all, .pose-cheer .pp-all { animation: pp-jump .8s cubic-bezier(.3, 1.4, .5, 1) infinite; }
.pose-jump .pp-shadow, .pose-cheer .pp-shadow { animation: pp-shadow .8s cubic-bezier(.3, 1.4, .5, 1) infinite; }
.pose-cheer .pp-arm-r { animation: pp-wave .4s ease-in-out infinite; }
.pose-jump .pp-eyes-open, .pose-cheer .pp-eyes-open { display: none; }
.pose-jump .pp-eyes-closed, .pose-cheer .pp-eyes-closed { display: block; }
.pose-jump .pp-eyes-closed path, .pose-cheer .pp-eyes-closed path { d: path("M80 108 Q90 96 100 108 M120 108 Q130 96 140 108"); }
.pose-tilt .pp-head { transform: rotate(14deg); }
.pose-tilt .pp-tail { animation-duration: 3.4s; }
.pose-sleep .pp-eyes-open { display: none; }
.pose-sleep .pp-eyes-closed, .pose-sleep .pp-zzz { display: block; }
.pose-sleep .pp-all { animation: pp-breathe 4.6s ease-in-out infinite; }
.pose-sleep .pp-head { transform: rotate(-8deg) translateY(4px); }
.pose-sleep .pp-tail { animation: none; }
.pose-sleep .pp-zzz text { animation: pp-z 2.4s ease-in-out infinite; }
.pose-sleep .pp-zzz text:nth-child(2) { animation-delay: .5s; }
.pose-sleep .pp-zzz text:nth-child(3) { animation-delay: 1s; }
