/* YIN × YANG | Phase B: 10 distinct asana rhythms.
   Art-directed motion uses local SVG groups, never whole-body bone interpolation. */
.yy-head-motion,.yy-tail-motion,.yy-arms,.yy-legs,.yy-anim-eyes,.yy-character{
  transform-box:fill-box;
  transform-origin:center;
}
.yy-back-highlight{
  fill:none;stroke:var(--yy-ruff);stroke-width:7;
  stroke-linecap:round;opacity:.66;pointer-events:none;
}
.yy-asana-step{
  position:absolute;z-index:4;left:50%;bottom:17px;translate:-50% 0;
  padding:7px 14px;border:1px solid rgba(198,236,254,.48);
  border-radius:999px;background:rgba(12,47,97,.77);
  color:#f1fbff;font:700 10px/1.2 'JetBrains Mono',monospace;
  letter-spacing:.13em;white-space:nowrap;
  opacity:0;pointer-events:none;transition:opacity .28s;
}
.yy-guide[data-phase="warmup"]:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-asana-step,
.yy-guide[data-phase="warmup"][data-asana-state="paused"] .yy-asana-step{
  opacity:1;
}
.yy-guide[data-status="running"] .yy-character{
  animation:none!important;
}
/* Baseline: sleepy start breathing with tiny head motion */
.yy-guide[data-asana-state="idle"] .yy-pose-rest.is-current .yy-character{
  animation:yy-rest 9s ease-in-out infinite!important;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-rest.is-current .yy-character{
  animation:yy-rest 7s ease-in-out infinite!important;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-rest.is-current .yy-tail-motion{
  animation:yy-tail-slow 7s ease-in-out infinite;
}
/* Arrive and center: gentle attention, not the same motion as lying down. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-seat.is-current .yy-character{
  animation:yy-seated 7s ease-in-out infinite!important;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-seat.is-current .yy-head-motion{
  animation:yy-head-attend 7s ease-in-out infinite;
}
/* Breath: match the separate 4-7-8 phase labels emitted by existing dock */
.yy-guide[data-phase="breath"]:is([data-asana-state="running"],[data-asana-state="paused"])[data-breath-step="inhale"] .yy-pose-breath.is-current .yy-character{
  animation:yy-breath-in 4s ease-in-out both!important;
}
.yy-guide[data-phase="breath"]:is([data-asana-state="running"],[data-asana-state="paused"])[data-breath-step="hold"] .yy-pose-breath.is-current .yy-character{
  transform:translateY(-1px) scale(1.004);
  animation:none!important;
}
.yy-guide[data-phase="breath"]:is([data-asana-state="running"],[data-asana-state="paused"])[data-breath-step="exhale"] .yy-pose-breath.is-current .yy-character{
  animation:yy-breath-out 8s ease-in-out both!important;
}
.yy-guide[data-phase="breath"]:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-breath.is-current .yy-tail-motion{
  animation:yy-tail-slow 9.5s ease-in-out infinite;
}
/* Cat/cow is controlled by yy-asana-motion.js: spine, neck and tail deform safely,
   while all four grounded paw tips stay fixed on their authored coordinates. */
.yy-guide[data-phase="warmup"] .yy-pose-table.is-current .yy-character,
.yy-guide[data-phase="warmup"] .yy-pose-table.is-current .yy-head-motion,
.yy-guide[data-phase="warmup"] .yy-pose-table.is-current .yy-tail-motion{
  animation:none!important;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-table.is-current .yy-stars{
  animation:yy-stars-slow 8s ease-in-out infinite;
}
/* Warrior II: grounded legs, long hold, expressive gaze and guarded tail. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-warrior.is-current .yy-head-motion{
  animation:yy-warrior-focus 8s ease-in-out infinite;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-warrior.is-current .yy-tail-motion{
  animation:yy-warrior-tail 8s ease-in-out infinite;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-warrior.is-current .yy-arms{
  animation:yy-arms-strength 8s ease-in-out infinite;
}
/* Flow: controlled extension, quiet return; no bent-limb interpolation. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-flow.is-current .yy-character{
  animation:yy-flow-rise 7s ease-in-out infinite!important;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-flow.is-current .yy-tail-motion{
  animation:yy-flow-tail 7s ease-in-out infinite;
}
/* Tree: tiny sway about the planted foot; keep at most 0.8 degrees. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-tree.is-current .yy-character{
  animation:yy-tree-sway 9s ease-in-out infinite!important;
  transform-origin:50% 88%;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-tree.is-current .yy-tail-motion{
  animation:yy-tree-tail 9s ease-in-out infinite;
}
/* Return to calm: lower the head, settle and soften. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-child.is-current .yy-head-motion{
  animation:yy-head-bow 8s ease-in-out infinite;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-child.is-current .yy-character{
  animation:yy-child-rest 8s ease-in-out infinite!important;
}
/* Savasana: quietest of all, nothing bounces. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose-savasana.is-current .yy-character{
  animation:yy-savasana 10s ease-in-out infinite!important;
}
/* Finish: a smile and a tiny breath of gratitude, not a duplicate of centering. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"],[data-asana-state="finished"]) .yy-pose-finish.is-current .yy-head-motion{
  animation:yy-finish-nod 7s ease-in-out infinite;
}
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"],[data-asana-state="finished"]) .yy-pose-finish.is-current .yy-gem{
  animation:yy-gem-light 4s ease-in-out infinite;
}
/* Natural blink on OPEN-eyed characters in any awake phase. */
.yy-guide:is([data-asana-state="running"],[data-asana-state="paused"]) .yy-pose.is-current .yy-anim-eyes,
.yy-guide[data-asana-state="idle"] .yy-pose.is-current .yy-anim-eyes{
  transform-box:fill-box;transform-origin:50% 50%;
  animation:yy-blink 6.6s linear infinite;
}
@keyframes yy-blink {
  0%,42%,44%,84%,88%,100%{transform:scaleY(1)}
  43%,86%{transform:scaleY(.07)}
}
@keyframes yy-rest {
  0%,100%{transform:translateY(1px)}
  50%{transform:translateY(-2px) scale(1.005)}
}
@keyframes yy-tail-slow {
  0%,100%{transform:rotate(-1deg)}
  50%{transform:rotate(2.2deg)}
}
@keyframes yy-seated {
  0%,100%{transform:translateY(1px)}
  48%{transform:translateY(-4px) scale(1.006)}
}
@keyframes yy-head-attend {
  0%,100%{transform:rotate(0deg)}
  53%{transform:rotate(1.8deg)}
}
@keyframes yy-breath-in {
  from{transform:translateY(1px) scale(1)}
  to{transform:translateY(-1px) scale(1.004)}
}
@keyframes yy-breath-out {
  from{transform:translateY(-1px) scale(1.004)}
  to{transform:translateY(1px) scale(1)}
}
@keyframes yy-warrior-focus{
  0%,100%{transform:rotate(-.3deg)}
  47%{transform:rotate(1.2deg)}
}
@keyframes yy-warrior-tail{
  0%,100%{transform:rotate(-1.4deg)}
  50%{transform:rotate(1.3deg)}
}
@keyframes yy-arms-strength{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-1.4px)}
}
@keyframes yy-flow-rise {
  0%,100%{transform:translateY(1px) rotate(-.3deg)}
  50%{transform:translateY(-4px) rotate(.6deg)}
}
@keyframes yy-flow-tail{
  0%,100%{transform:rotate(-2deg)}
  50%{transform:rotate(3deg)}
}
@keyframes yy-tree-sway{
  0%,100%{transform:rotate(-.4deg)}
  48%{transform:rotate(.75deg)}
}
@keyframes yy-tree-tail{
  0%,100%{transform:rotate(-3deg)}
  50%{transform:rotate(3deg)}
}
@keyframes yy-head-bow{
  0%,100%{transform:rotate(0)}
  60%{transform:translateY(2px) rotate(1.3deg)}
}
@keyframes yy-child-rest{
  0%,100%{transform:translateY(1px)}
  56%{transform:translateY(-1px)}
}
@keyframes yy-savasana{
  0%,100%{transform:translateY(0)}
  54%{transform:translateY(-1.2px)}
}
@keyframes yy-finish-nod{
  0%,100%{transform:rotate(0)}
  30%{transform:rotate(1.4deg)}
  56%{transform:rotate(-.8deg)}
}
@keyframes yy-gem-light{
  0%,100%{opacity:.8;filter:drop-shadow(0 0 0 transparent)}
  50%{opacity:1;filter:drop-shadow(0 0 5px var(--yy-badge))}
}
@keyframes yy-stars-slow{
  0%,100%{opacity:.8}50%{opacity:1}
}
/* Freeze at the exact current frame on pause and while the artwork fades. */
.yy-guide[data-asana-state="paused"] .yy-character,
.yy-guide[data-asana-state="paused"] .yy-character *,
.yy-guide[data-asana-state="transition"] .yy-character,
.yy-guide[data-asana-state="transition"] .yy-character *{
  animation-play-state:paused!important;
}
.yy-guide[data-asana-state="reduced"] .yy-character,
.yy-guide[data-asana-state="reduced"] .yy-character *,
.yy-guide[data-hidden="true"] .yy-character,
.yy-guide[data-hidden="true"] .yy-character *{
  animation:none!important;
}
@media(prefers-reduced-motion:reduce){
  .yy-guide .yy-character,.yy-guide .yy-character *,
  .yy-guide .yy-stars,.yy-guide .yy-energy{
    animation:none!important;
  }
}
