/* Art contract: root controls the button's position/translate3d and data states.
   All illustrated movement stays inside the 160 × 144 SVG viewBox. */
#rys-companion { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 15px; background: transparent; line-height: 0; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
#rys-companion { position: fixed; left: 0; top: 0; z-index: 71; width: 84px; height: 76px; contain: layout style; }
#rys-companion[data-docked="false"] { position: absolute; }
#rys-companion[hidden] { display: none !important; }
#rys-companion:focus-visible { outline: none; background: #fff8eecf; box-shadow: inset 0 0 0 2px #936846; }
#rys-companion .companion-art { display: block; width: 100%; height: 100%; max-width: none; overflow: hidden; pointer-events: none; }
#rys-companion .companion-facing { transform-box: view-box; transform-origin: 80px 72px; }
#rys-companion[data-facing="left"] .companion-facing { transform: scaleX(-1); }
#rys-companion .companion-pose { opacity: 0; transition: opacity 180ms ease; }
#rys-companion .companion-pose-sit { opacity: 1; }
#rys-companion:is([data-pose="walk"], [data-pose="lie"], [data-pose="sleep"]) .companion-pose-sit { opacity: 0; }
#rys-companion[data-pose="walk"] .companion-pose-walk,
#rys-companion:is([data-pose="lie"], [data-pose="sleep"]) .companion-pose-lie { opacity: 1; }

/* Explicit joints keep the four paws articulated instead of sliding the silhouette. */
#rys-companion .companion-leg-front-near { transform-origin: 110px 99px; }
#rys-companion .companion-leg-front-far { transform-origin: 98px 99px; }
#rys-companion .companion-leg-back-near { transform-origin: 47px 102px; }
#rys-companion .companion-leg-back-far { transform-origin: 51px 101px; }
#rys-companion .companion-walk-tail { transform-origin: 40px 91px; }
#rys-companion .companion-walk-head { transform-origin: 111px 84px; }
#rys-companion .companion-ground-shadow { transform-origin: 81px 134px; }
#rys-companion[data-pose="walk"][data-awake="true"] .companion-walk-bob { animation: companion-walk-bob 760ms ease-in-out infinite; }
#rys-companion[data-pose="walk"][data-awake="true"] .companion-leg { animation: companion-step 760ms ease-in-out infinite; }
#rys-companion[data-pose="walk"][data-awake="true"] :is(.companion-leg-front-far, .companion-leg-back-near) { animation-delay: -380ms; }
#rys-companion[data-pose="walk"][data-awake="true"] .companion-walk-tail { animation: companion-walk-tail 760ms ease-in-out infinite; }
#rys-companion[data-pose="walk"][data-awake="true"] .companion-walk-head { animation: companion-head-bob 760ms ease-in-out infinite; }
#rys-companion[data-pose="walk"][data-awake="true"] .companion-ground-shadow { animation: companion-shadow 760ms ease-in-out infinite; }

/* A seated companion breathes quietly; one short blink every eight seconds. */
#rys-companion .companion-sit-body { transform-origin: 81px 133px; }
#rys-companion .companion-sit-head { transform-origin: 81px 91px; }
#rys-companion .companion-sit-tail { transform-origin: 109px 120px; }
#rys-companion .companion-sit-ear-left { transform-origin: 49px 42px; }
#rys-companion .companion-sit-eyes { transform-origin: 81px 63px; }
#rys-companion .companion-walk-eyes { transform-origin: 124px 63px; }
#rys-companion .companion-lie-eyes { transform-origin: 54px 98px; }
#rys-companion[data-pose="sit"][data-awake="true"] .companion-sit-body { animation: companion-breathe 3600ms ease-in-out infinite; }
#rys-companion[data-pose="sit"][data-awake="true"] .companion-sit-head { animation: companion-sit-head 3600ms ease-in-out infinite; }
#rys-companion[data-pose="sit"][data-awake="true"] .companion-sit-ear-left { animation: companion-ear-twitch 11000ms ease-in-out infinite; }
#rys-companion[data-pose="sit"][data-awake="true"] .companion-sit-eyes,
#rys-companion[data-pose="walk"][data-awake="true"] .companion-walk-eyes,
#rys-companion[data-pose="lie"][data-awake="true"] .companion-lie-eyes { animation: companion-blink 8000ms linear infinite; }

/* Sleep uses actual closed eyelids. No floating letters, particles or decorations. */
#rys-companion .companion-lie-body { transform-origin: 96px 133px; }
#rys-companion .companion-lie-head { transform-origin: 54px 122px; transition: transform 180ms ease; }
#rys-companion .companion-lie-ear-right { transform-origin: 74px 81px; }
#rys-companion .companion-lie-eyes-open,
#rys-companion .companion-lie-eyes-closed { transition: opacity 180ms ease; }
#rys-companion .companion-lie-eyes-closed { opacity: 0; }
#rys-companion[data-pose="sleep"] .companion-lie-eyes-open { opacity: 0; }
#rys-companion[data-pose="sleep"] .companion-lie-eyes-closed { opacity: 1; }
#rys-companion[data-pose="sleep"] .companion-lie-head { transform: translateY(1.5px) rotate(-2deg); }
#rys-companion:is([data-pose="lie"], [data-pose="sleep"])[data-awake="true"] .companion-lie-body { animation: companion-rest-breathe 4200ms ease-in-out infinite; }
#rys-companion[data-pose="lie"][data-awake="true"] .companion-lie-ear-right { animation: companion-rest-ear 13000ms ease-in-out infinite; }

@keyframes companion-step { 0%, 100% { transform: rotate(-14deg); } 50% { transform: rotate(14deg); } }
@keyframes companion-walk-bob { 0%, 50%, 100% { transform: translateY(0); } 25%, 75% { transform: translateY(-1.5px); } }
@keyframes companion-head-bob { 0%, 50%, 100% { transform: rotate(.6deg); } 25%, 75% { transform: rotate(-.6deg); } }
@keyframes companion-walk-tail { 0%, 100% { transform: rotate(-5deg); } 50% { transform: rotate(5deg); } }
@keyframes companion-shadow { 0%, 50%, 100% { transform: scaleX(1); opacity: 1; } 25%, 75% { transform: scaleX(.96); opacity: .85; } }
@keyframes companion-breathe { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.018); } }
@keyframes companion-sit-head { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-.6px); } }
@keyframes companion-blink { 0%, 43%, 46%, 100% { transform: scaleY(1); } 44.4%, 44.8% { transform: scaleY(.08); } }
@keyframes companion-ear-twitch { 0%, 78%, 87%, 100% { transform: rotate(0); } 80% { transform: rotate(-6deg); } 83% { transform: rotate(3deg); } }
@keyframes companion-rest-breathe { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.028); } }
@keyframes companion-rest-ear { 0%, 83%, 92%, 100% { transform: rotate(0); } 86% { transform: rotate(5deg); } 89% { transform: rotate(-3deg); } }

/* Paused, offscreen and motion-disabled companions are fully still. */
#rys-companion[data-awake="false"] .companion-art * { animation: none !important; transition: none !important; }
html[data-motion="off"] #rys-companion .companion-art *,
html.reduce-motion #rys-companion .companion-art * { animation: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  #rys-companion .companion-art * { animation: none !important; transition: none !important; }
}
