/* GENERATED from brand/companion.mjs — run: node bin/sync-brand.mjs
    */

.wyn-companion { display: block; overflow: visible; }

/* ── pivots ──────────────────────────────────────────────────────────────── */
.wyn-companion .co-lean      { transform-box: view-box; transform-origin: 60px 114px; }
.wyn-companion .co-body-grp  { transform-box: view-box; transform-origin: 60px 114px; }
.wyn-companion .co-head-grp  { transform-box: view-box; transform-origin: 60px 72px; }
.wyn-companion .co-ear-l     { transform-box: view-box; transform-origin: 36px 46px; }
.wyn-companion .co-ear-r     { transform-box: view-box; transform-origin: 84px 46px; }
.wyn-companion .co-trunk     { transform-box: view-box; transform-origin: 60px 58px; }
.wyn-companion .co-trunk-2   { transform-box: view-box; transform-origin: 58.4px 79px; }
.wyn-companion .co-trunk-3   { transform-box: view-box; transform-origin: 59.8px 90.5px; }
.wyn-companion .co-leg-l     { transform-box: view-box; transform-origin: 45px 98px; }
.wyn-companion .co-leg-r     { transform-box: view-box; transform-origin: 75px 98px; }
.wyn-companion .co-tail      { transform-box: view-box; transform-origin: 87px 92px; }
.wyn-companion .co-ground    { transform-box: view-box; transform-origin: 60px 116px; }
.wyn-companion .co-eyes      { transform-box: view-box; transform-origin: 60px 47px; }

/* The lean follows your direction of travel — set --lean between -1 and 1. */
.wyn-companion .co-lean { transform: rotate(calc(var(--lean, 0) * 7deg)); transition: transform .32s cubic-bezier(.34,1.4,.5,1); }

.wyn-companion .co-body-grp, .wyn-companion .co-head-grp, .wyn-companion .co-leg,
.wyn-companion .co-trunk, .wyn-companion .co-trunk-2, .wyn-companion .co-trunk-3,
.wyn-companion .co-ear, .wyn-companion .co-ground, .wyn-companion .co-eyes,
.wyn-companion .co-eyes-shut, .wyn-companion .co-progress {
  transition: transform .5s cubic-bezier(.34,1.4,.5,1), opacity .25s ease;
}

/* ── SIT — idle: settles low, trunk swinging slowly side to side ─────────── */
.wyn-companion[data-pose="sit"] .co-body-grp { transform: translateY(5px) scaleY(.95); }
.wyn-companion[data-pose="sit"] .co-head-grp { animation: coBreathe 4.6s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-trunk    { animation: coSway 4.2s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-trunk-2  { animation: coSway2 4.2s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-trunk-3  { animation: coSway3 4.2s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-ear-l    { animation: coEarIdleL 5.4s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-ear-r    { animation: coEarIdleR 5.4s ease-in-out infinite; }
.wyn-companion[data-pose="sit"] .co-tail     { animation: coTail 5s ease-in-out infinite; }

@keyframes coBreathe  { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-1.5px) } }
@keyframes coSway     { 0%,100% { transform: rotate(-14deg) } 50% { transform: rotate(14deg) } }
@keyframes coSway2    { 0%,100% { transform: rotate(10deg) }  50% { transform: rotate(-10deg) } }
@keyframes coSway3    { 0%,100% { transform: rotate(-7deg) }  50% { transform: rotate(7deg) } }
@keyframes coEarIdleL { 0%,100% { transform: rotate(0) }      50% { transform: rotate(5deg) } }
@keyframes coEarIdleR { 0%,100% { transform: rotate(0) }      50% { transform: rotate(-5deg) } }
@keyframes coTail     { 0%,100% { transform: rotate(0) }      50% { transform: rotate(-14deg) } }

/* ── STAND — you moved: rises, ears perk ─────────────────────────────────── */
.wyn-companion[data-pose="stand"] .co-body-grp { animation: coRise .62s cubic-bezier(.34,1.5,.5,1); }
.wyn-companion[data-pose="stand"] .co-head-grp { animation: coHeadPerk .62s cubic-bezier(.34,1.5,.5,1); }
.wyn-companion[data-pose="stand"] .co-ear-l    { animation: coPerkL .62s cubic-bezier(.34,1.6,.5,1), coEarIdleL 3.8s ease-in-out .62s infinite; }
.wyn-companion[data-pose="stand"] .co-ear-r    { animation: coPerkR .62s cubic-bezier(.34,1.6,.5,1), coEarIdleR 3.8s ease-in-out .62s infinite; }
.wyn-companion[data-pose="stand"] .co-trunk    { animation: coSway 2.8s ease-in-out infinite; }
.wyn-companion[data-pose="stand"] .co-trunk-2  { animation: coSway2 2.8s ease-in-out infinite; }
.wyn-companion[data-pose="stand"] .co-tail     { animation: coTail 2.4s ease-in-out infinite; }

@keyframes coRise     { 0% { transform: translateY(5px) scaleY(.95) } 52% { transform: translateY(-5px) scaleY(1.05) } 100% { transform: none } }
@keyframes coHeadPerk { 0% { transform: translateY(2px) } 52% { transform: translateY(-3px) scale(1.03) } 100% { transform: none } }
@keyframes coPerkL    { 0% { transform: rotate(0) } 45% { transform: rotate(-19deg) } 100% { transform: rotate(0) } }
@keyframes coPerkR    { 0% { transform: rotate(0) } 45% { transform: rotate(19deg) } 100% { transform: rotate(0) } }

/* ── WALK — you're moving fast: legs pump, body trots ────────────────────── */
.wyn-companion[data-pose="walk"] .co-body-grp { animation: coTrot .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-leg-l    { animation: coStepA .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-leg-r    { animation: coStepB .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-head-grp { animation: coHeadTrot .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-ear-l    { animation: coFlapL .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-ear-r    { animation: coFlapR .42s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-trunk    { animation: coSway 1.1s ease-in-out infinite; }
.wyn-companion[data-pose="walk"] .co-ground   { animation: coGroundTrot .42s ease-in-out infinite; }

@keyframes coTrot       { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3.5px) } }
@keyframes coHeadTrot   { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-1.5px) rotate(-2deg) } }
@keyframes coStepA      { 0%,100% { transform: rotate(-11deg) } 50% { transform: rotate(11deg) } }
@keyframes coStepB      { 0%,100% { transform: rotate(11deg) }  50% { transform: rotate(-11deg) } }
@keyframes coGroundTrot { 0%,100% { transform: scaleX(1); opacity: .38 } 50% { transform: scaleX(.86); opacity: .26 } }

/* ── WORK — called upon: ears flap hard, trunk swings, body bobs ─────────── */
.wyn-companion[data-pose="work"] .co-ear-l    { animation: coFlapL .3s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-ear-r    { animation: coFlapR .3s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-body-grp { animation: coBob .48s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-head-grp { animation: coHeadBob .48s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-trunk    { animation: coWork .74s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-trunk-2  { animation: coWork2 .74s ease-in-out infinite; }
.wyn-companion[data-pose="work"] .co-tail     { animation: coTail .8s ease-in-out infinite; }

@keyframes coFlapL   { 0%,100% { transform: rotate(3deg) }  50% { transform: rotate(-25deg) } }
@keyframes coFlapR   { 0%,100% { transform: rotate(-3deg) } 50% { transform: rotate(25deg) } }
@keyframes coBob     { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-3px) } }
@keyframes coHeadBob { 0%,100% { transform: translateY(0) rotate(0) } 50% { transform: translateY(-2px) rotate(2deg) } }
@keyframes coWork    { 0%,100% { transform: rotate(-20deg) } 50% { transform: rotate(18deg) } }
@keyframes coWork2   { 0%,100% { transform: rotate(14deg) }  50% { transform: rotate(-14deg) } }

/* ── LISTEN — the mic is open: ears cup forward, head tilts, trunk still ─── */
.wyn-companion[data-pose="listen"] .co-ear-l    { transform: rotate(-24deg) scale(1.08); animation: coListenL 1.6s ease-in-out infinite; }
.wyn-companion[data-pose="listen"] .co-ear-r    { transform: rotate(24deg) scale(1.08); animation: coListenR 1.6s ease-in-out infinite; }
.wyn-companion[data-pose="listen"] .co-head-grp { transform: rotate(-7deg); }
.wyn-companion[data-pose="listen"] .co-trunk    { transform: rotate(4deg); }
.wyn-companion[data-pose="listen"] .co-eyes     { transform: scale(1.08); }

@keyframes coListenL { 0%,100% { transform: rotate(-24deg) scale(1.08) } 50% { transform: rotate(-30deg) scale(1.12) } }
@keyframes coListenR { 0%,100% { transform: rotate(24deg) scale(1.08) }  50% { transform: rotate(30deg) scale(1.12) } }

/* ── THINK — waiting on a model: slow trunk tap, one ear cocked ──────────── */
.wyn-companion[data-pose="think"] .co-head-grp { transform: rotate(5deg); animation: coBreathe 2.4s ease-in-out infinite; }
.wyn-companion[data-pose="think"] .co-ear-l    { transform: rotate(-12deg); }
.wyn-companion[data-pose="think"] .co-trunk-3  { animation: coTap .9s ease-in-out infinite; }
.wyn-companion[data-pose="think"] .co-trunk    { transform: rotate(-8deg); }
@keyframes coTap { 0%,100% { transform: rotate(0) } 45% { transform: rotate(-26deg) } }

/* ── WAVE — hello: trunk lifts and waves, one leg lifts ──────────────────── */
.wyn-companion[data-pose="wave"] .co-trunk    { animation: coWaveTrunk 1.3s ease-in-out; }
.wyn-companion[data-pose="wave"] .co-trunk-2  { animation: coWaveTrunk2 1.3s ease-in-out; }
.wyn-companion[data-pose="wave"] .co-trunk-3  { animation: coWaveTrunk3 1.3s ease-in-out; }
.wyn-companion[data-pose="wave"] .co-head-grp { animation: coWaveHead 1.3s ease-in-out; }
.wyn-companion[data-pose="wave"] .co-ear-l    { animation: coFlapL .3s ease-in-out 4; }
.wyn-companion[data-pose="wave"] .co-ear-r    { animation: coFlapR .3s ease-in-out 4; }

@keyframes coWaveTrunk  { 0%,100% { transform: rotate(0) } 20% { transform: rotate(-108deg) } 40% { transform: rotate(-88deg) } 60% { transform: rotate(-112deg) } 80% { transform: rotate(-92deg) } }
@keyframes coWaveTrunk2 { 0%,100% { transform: rotate(0) } 20%,80% { transform: rotate(-34deg) } }
@keyframes coWaveTrunk3 { 0%,100% { transform: rotate(0) } 20%,80% { transform: rotate(-40deg) } }
@keyframes coWaveHead   { 0%,100% { transform: rotate(0) } 40% { transform: rotate(-6deg) } }

/* ── CHEER — done: rears up, both front legs and the trunk raised ────────── */
.wyn-companion[data-pose="cheer"] .co-eyes      { opacity: 0; }
.wyn-companion[data-pose="cheer"] .co-eyes-shut { opacity: 1; }
.wyn-companion[data-pose="cheer"] .co-body-grp { animation: coRear 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-leg-l    { animation: coRaiseL 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-leg-r    { animation: coRaiseR 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-trunk    { animation: coRaiseTrunk 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-trunk-2  { animation: coCurl2 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-trunk-3  { animation: coCurl3 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-ear-l    { animation: coFlapL .23s ease-in-out 6; }
.wyn-companion[data-pose="cheer"] .co-ear-r    { animation: coFlapR .23s ease-in-out 6; }
.wyn-companion[data-pose="cheer"] .co-ground   { animation: coGroundRear 1.5s cubic-bezier(.34,1.4,.5,1); }
.wyn-companion[data-pose="cheer"] .co-joy      { animation: coJoy 1.5s ease-out; }

@keyframes coRear {
  0% { transform: none } 20% { transform: translateY(4px) scaleY(.93) }
  46% { transform: translateY(-10px) rotate(-4deg) } 66% { transform: translateY(-6px) rotate(-2deg) }
  84% { transform: translateY(-12px) rotate(-5deg) } 100% { transform: none }
}
@keyframes coRaiseL { 0% { transform: none } 44% { transform: rotate(-56deg) translate(-3px,-8px) } 66% { transform: rotate(-42deg) translate(-2px,-6px) } 84% { transform: rotate(-62deg) translate(-4px,-9px) } 100% { transform: none } }
@keyframes coRaiseR { 0% { transform: none } 44% { transform: rotate(56deg) translate(3px,-8px) }  66% { transform: rotate(42deg) translate(2px,-6px) }  84% { transform: rotate(62deg) translate(4px,-9px) }  100% { transform: none } }
@keyframes coRaiseTrunk { 0% { transform: none } 40% { transform: rotate(-118deg) } 70% { transform: rotate(-108deg) } 86% { transform: rotate(-124deg) } 100% { transform: none } }
@keyframes coCurl2 { 0% { transform: none } 40% { transform: rotate(-44deg) } 86% { transform: rotate(-52deg) } 100% { transform: none } }
@keyframes coCurl3 { 0% { transform: none } 40% { transform: rotate(-50deg) } 86% { transform: rotate(-58deg) } 100% { transform: none } }
@keyframes coGroundRear { 0%,100% { transform: none; opacity: .38 } 46% { transform: scaleX(.68); opacity: .2 } }
@keyframes coJoy { 0% { opacity: 0; transform: scale(.6) } 28% { opacity: 1; transform: scale(1.08) } 72% { opacity: 1 } 100% { opacity: 0; transform: scale(1.28) } }

/* ── SPIN — the other celebration: turns sideways and spins right around ─── */
.wyn-companion[data-pose="spin"] .co-body-grp { animation: coSpin 1.5s cubic-bezier(.4,.05,.35,1); }
.wyn-companion[data-pose="spin"] .co-head-grp { animation: coSpinHead 1.5s ease-in-out; }
.wyn-companion[data-pose="spin"] .co-ear-l    { animation: coFlapL .25s ease-in-out 5; }
.wyn-companion[data-pose="spin"] .co-ear-r    { animation: coFlapR .25s ease-in-out 5; }
.wyn-companion[data-pose="spin"] .co-trunk    { animation: coSpinTrunk 1.5s ease-in-out; }
.wyn-companion[data-pose="spin"] .co-tail     { animation: coTail .3s ease-in-out 5; }
.wyn-companion[data-pose="spin"] .co-ground   { animation: coGroundSpin 1.5s cubic-bezier(.4,.05,.35,1); }
.wyn-companion[data-pose="spin"] .co-joy      { animation: coJoy 1.5s ease-out; }

@keyframes coSpin {
  0%   { transform: scaleX(1) translateY(0) }
  12%  { transform: scaleX(.93) translateY(4px) }
  30%  { transform: scaleX(.09) translateY(-9px) }
  50%  { transform: scaleX(-1) translateY(-12px) }
  70%  { transform: scaleX(-.09) translateY(-9px) }
  88%  { transform: scaleX(1) translateY(2px) }
  100% { transform: scaleX(1) translateY(0) }
}
@keyframes coSpinHead   { 0%,100% { transform: rotate(0) } 30% { transform: rotate(-10deg) } 70% { transform: rotate(10deg) } }
@keyframes coSpinTrunk  { 0%,100% { transform: rotate(0) } 30% { transform: rotate(-42deg) } 50% { transform: rotate(0) } 70% { transform: rotate(42deg) } }
@keyframes coGroundSpin { 0%,100% { transform: none } 30% { transform: scaleX(.8); opacity: .26 } 50% { transform: scaleX(.7); opacity: .2 } 70% { transform: scaleX(.8); opacity: .26 } }

/* ── blink ───────────────────────────────────────────────────────────────── */
.wyn-companion[data-pose="sit"] .co-eyes,
.wyn-companion[data-pose="stand"] .co-eyes,
.wyn-companion[data-pose="think"] .co-eyes { animation: coBlink 5.6s infinite; }
@keyframes coBlink { 0%,93%,100% { transform: scaleY(1) } 96% { transform: scaleY(.08) } }

/* ── press-and-hold progress: a straight rule, never a ring ──────────────── */
.wyn-companion.holding .co-progress { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .wyn-companion, .wyn-companion * { animation: none !important; transition: none !important; }
}
