/* One transparent source rectangle: static and moving artwork never reframe. */
.landing--canvas .hover-swap-robot--greeting {
  appearance: none;
  border: 0;
  padding: 0;
  margin: 0;
  border-radius: 40%;
  background: transparent;
  color: var(--text-heading);
  font: inherit;
  cursor: pointer;
  box-shadow: none;
  overflow: visible;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  --robot-static-x: 0px;
  --robot-static-y: 0px;
  --robot-static-scale: 1;
  --robot-anim-x: 0px;
  --robot-anim-y: 0px;
  --robot-anim-scale: 1;
  --robot-anim-mask: none;
}
.landing--canvas .hover-swap-robot--greeting:focus-visible {
  outline: 3px solid var(--color-accent-strong);
  outline-offset: -8px;
}
.landing--canvas .hover-swap-robot--greeting .hover-swap-robot__frame {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 1;
  /* Crop only the source PNG’s transparent margin; retain the full motion frame. */
  overflow: clip;
}
.landing--canvas .hover-swap-robot--greeting .hover-swap-robot__layer {
  inset: 0;
  width: 100%;
  height: 100%;
  transform: none;
  object-fit: contain;
  object-position: center;
  -webkit-mask: none;
  mask: none;
  transition: none;
  opacity: 1;
  filter: none;
}
/* Frame the recovered original without resampling or rewriting the PNG.
   The animation uses this same source rectangle in its backing canvas. */
.landing--canvas .hover-swap-robot--cropped .hover-swap-robot__layer--static {
  inset: auto;
  left: var(--owen-still-left);
  top: var(--owen-still-top);
  width: var(--owen-still-width);
  height: var(--owen-still-height);
  max-width: none;
}
.landing--canvas .hover-swap-robot--greeting .hover-swap-robot__layer.is-hidden {
  opacity: 0;
}
