    /* default pose: arms down; idle gets a gentle breath + blink */
    .wk .pupil { animation: wk-blink 3.4s infinite; }
    .wk .bob { animation: wk-breathe 1.8s ease-in-out infinite; }

    .wk[data-act="walk"] .bob { animation: wk-step 0.46s ease-in-out infinite; }
    .wk[data-act="walk"] .leg.l { animation: wk-swing 0.46s ease-in-out infinite; }
    .wk[data-act="walk"] .leg.r { animation: wk-swing 0.46s ease-in-out infinite reverse; }
    .wk[data-act="walk"] .arm.l { animation: wk-swing 0.46s ease-in-out infinite reverse; }
    .wk[data-act="walk"] .arm.r { animation: wk-swing 0.46s ease-in-out infinite; }
    .wk[data-act="hop"] .bob { animation: wk-stretch 0.5s ease-out; }
    .wk[data-act="hop"] .arm { transform: rotate(160deg); }
    .wk[data-act="hop"] .arm.l { transform: rotate(-160deg); }
    .wk[data-act="hop"] .leg.l { transform: rotate(-22deg); }
    .wk[data-act="hop"] .leg.r { transform: rotate(22deg); }

    .wk[data-act="hammer"] .arm.r { animation: wk-hammer 0.55s ease-in infinite; }
    .wk[data-act="hammer"] .bob { animation: wk-hit 0.55s ease-in infinite; }
    .wk[data-act="drill"] .arm.r { transform: rotate(-88deg); animation: wk-jitter 0.07s linear infinite; }
    .wk[data-act="drill"] .bob { animation: wk-lean 0.9s ease-in-out infinite; }
    .wk[data-act="saw"] .arm.r { transform: rotate(-80deg); }
    .wk[data-act="saw"] .arm.r .t-saw { animation: wk-saw 0.5s ease-in-out infinite; }
    .wk[data-act="saw"] .arm.r path:first-of-type { animation: none; }
    .wk[data-act="saw"] .arm.l { transform: rotate(-30deg); }
    .wk[data-act="saw"] .bob { animation: wk-rock 0.5s ease-in-out infinite; }
    .wk[data-act="measure"] .arm.r { transform: rotate(-92deg); }
    .wk[data-act="measure"] .arm.l { transform: rotate(92deg); }
    .wk[data-act="measure"] .tape-m { transform-origin: 43.500px 63px; animation: wk-tape 1.6s ease-in-out infinite; }
    .wk[data-act="paint"] .arm.r { animation: wk-paint 0.9s ease-in-out infinite; }
    .wk[data-act="paint"] .bob { animation: wk-rock 0.9s ease-in-out infinite; }
    .wk[data-act="weld"] .arm.r { transform: rotate(-95deg); }
    .wk[data-act="weld"] .spark { animation: wk-spark 0.18s steps(1) infinite; }
    .wk[data-act="weld"] .bob { animation: wk-crouch 1.1s ease-in-out infinite; }
    .wk[data-act="hoist"] .arm.r { animation: wk-pull 0.9s ease-in-out infinite; }
    .wk[data-act="hoist"] .arm.l { animation: wk-pull 0.9s ease-in-out infinite reverse; }
    .wk[data-act="hoist"] .crate { animation: wk-lift 1.8s ease-in-out infinite; }
    .wk[data-act="coffee"] .arm.r { animation: wk-sip 2.4s ease-in-out infinite; }
    .wk[data-act="coffee"] .steam { animation: wk-steam 1.6s ease-in-out infinite; }
    .wk[data-act="coffee"] .mouth { d: path("M26.500 31q4 2 8 0"); }
    .wk[data-act="wave"] .arm.r { animation: wk-wave 0.5s ease-in-out infinite; transform: rotate(-150deg); }
    .wk[data-act="tip"] .arm.r { animation: wk-tip 1.8s ease-in-out infinite; }
    .wk[data-act="tip"] .hat { animation: wk-hatlift 1.8s ease-in-out infinite; }

    @keyframes wk-blink { 0%, 94%, 100% { transform: scaleY(1); } 97% { transform: scaleY(0.1); } }
    @keyframes wk-breathe { 0%, 100% { transform: scale(1, 1); } 50% { transform: scale(1.02, 0.98); } }
    @keyframes wk-step { 0%, 50%, 100% { transform: scale(1.06, 0.94); } 25%, 75% { transform: scale(0.96, 1.05) translateY(-1.5px); } }
    @keyframes wk-swing { 0%, 100% { transform: rotate(-28deg); } 50% { transform: rotate(28deg); } }
    @keyframes wk-stretch { 0% { transform: scale(1.18, 0.82); } 40% { transform: scale(0.88, 1.18); } 100% { transform: scale(1, 1); } }
    @keyframes wk-hammer { 0% { transform: rotate(-175deg); } 62% { transform: rotate(-175deg); } 80% { transform: rotate(-80deg); } 100% { transform: rotate(-175deg); } }
    @keyframes wk-hit { 0%, 62% { transform: scale(0.97, 1.04); } 80% { transform: scale(1.06, 0.93); } 100% { transform: scale(0.97, 1.04); } }
    @keyframes wk-jitter { 0% { translate: 0 0; } 50% { translate: 0.8px 0.5px; } }
    @keyframes wk-lean { 0%, 100% { transform: rotate(2deg); } 50% { transform: rotate(5deg); } }
    @keyframes wk-saw { 0%, 100% { translate: 0 -4px; } 50% { translate: 0 4px; } }
    @keyframes wk-rock { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(3deg); } }
    @keyframes wk-tape { 0% { transform: scaleY(0.3); } 60%, 100% { transform: scaleY(1.9); } }
    @keyframes wk-paint { 0%, 100% { transform: rotate(-150deg); } 50% { transform: rotate(-90deg); } }
    @keyframes wk-spark { 0% { opacity: 1; } 50% { opacity: 0.1; } }
    @keyframes wk-crouch { 0%, 100% { transform: scale(1.04, 0.9); } 50% { transform: scale(1.02, 0.93); } }
    @keyframes wk-pull { 0%, 100% { transform: rotate(-170deg); } 50% { transform: rotate(-135deg); } }
    @keyframes wk-lift { 0% { translate: 0 0; } 100% { translate: 0 -30px; } }
    @keyframes wk-sip { 0%, 20% { transform: rotate(-60deg); } 40%, 70% { transform: rotate(-150deg); } 90%, 100% { transform: rotate(-60deg); } }
    @keyframes wk-steam { 0%, 100% { opacity: 0.9; translate: 0 0; } 50% { opacity: 0.3; translate: 0 -3px; } }
    @keyframes wk-wave { 0%, 100% { transform: rotate(-165deg); } 50% { transform: rotate(-130deg); } }
    @keyframes wk-tip { 0%, 15% { transform: rotate(-20deg); } 35%, 60% { transform: rotate(-155deg); } 85%, 100% { transform: rotate(-20deg); } }
    @keyframes wk-hatlift { 0%, 40% { transform: none; } 50%, 60% { transform: translate(8px, -7px) rotate(25deg); } 75%, 100% { transform: none; } }
