/* One authoritative placement layer for classic sprites; custom packs keep their layout. */
/* Sprite registration stays on the inner image; the outer anchor may float. */
.drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor #glassSprite,
.drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor .liquid-art-layer,
.drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor img.drink-transition-ghost {
  transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale));
  transform-origin: 50% 50%;
  filter: drop-shadow(0 2px 2px #04020a66);
}
.drink-stage .glass-button[data-geometry="seated"] .coaster-wrap {
  left: var(--coaster-left, 50%); top: var(--coaster-top); bottom: auto;
  width: var(--coaster-size); height: var(--coaster-size);
  transform: translateX(-50%) rotate(var(--coaster-rotation, 0deg)); z-index: 0;
}
.drink-stage .glass-button[data-geometry="seated"] .coaster-wrap img {
  inset: 0; width: 100%; height: 100%; transform: none;
  transform-origin: 50% 50%; animation: none !important;
  filter: drop-shadow(0 3px 3px #04020a66);
}
.drink-stage .glass-button[data-geometry="seated"] .glass-shadow {
  left: var(--contact-x); top: var(--contact-y); bottom: auto;
  width: var(--contact-width); height: var(--contact-height);
  transform: translate(-50%, -50%); animation: none !important;
  background: radial-gradient(ellipse, #14080370 0%, #14080355 55%, #14080320 76%, transparent 100%);
  filter: blur(1.8px); opacity: var(--contact-opacity, 1); z-index: 1;
}
.drink-stage .glass-button[data-geometry="seated"].shaking .glass-float-anchor #glassSprite {
  animation: seatedShake .42s ease-in-out infinite !important;
}
.drink-stage .glass-button[data-geometry="seated"].slide-out .glass-float-anchor #glassSprite {
  animation: seatedFadeOut .33s ease-in both !important;
}
.drink-stage .glass-button[data-geometry="seated"].slide-in .glass-float-anchor #glassSprite,
.drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor #glassSprite.drink-reveal {
  animation: seatedFadeIn .6s ease-out both !important;
}
.drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor img.drink-transition-ghost {
  animation: seatedFadeOut .6s ease-in-out forwards !important;
}
.drink-stage .drink-controls { margin-top: 25px; }
@keyframes seatedShake {
  0%,100% { transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale)); }
  25% { transform: translate(calc(var(--sprite-offset-x) - 3px), var(--sprite-offset-y)) rotate(calc(var(--sprite-rotation, 0deg) - 4deg)) scale(var(--sprite-scale)); }
  75% { transform: translate(calc(var(--sprite-offset-x) + 3px), var(--sprite-offset-y)) rotate(calc(var(--sprite-rotation, 0deg) + 4deg)) scale(var(--sprite-scale)); }
}
@keyframes seatedFadeOut {
  from { opacity: 1; transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale)); }
  to { opacity: 0; transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale)); }
}
@keyframes seatedFadeIn {
  from { opacity: .45; transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale)); }
  to { opacity: 1; transform: translate(var(--sprite-offset-x), var(--sprite-offset-y)) rotate(var(--sprite-rotation, 0deg)) scale(var(--sprite-scale)); }
}
@media (prefers-reduced-motion: reduce) {
  .drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor #glassSprite,
  .drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor #glassSprite.drink-reveal,
  .drink-stage .glass-button[data-geometry="seated"].shaking .glass-float-anchor #glassSprite,
  .drink-stage .glass-button[data-geometry="seated"].slide-in .glass-float-anchor #glassSprite,
  .drink-stage .glass-button[data-geometry="seated"].slide-out .glass-float-anchor #glassSprite,
  .drink-stage .glass-button[data-geometry="seated"] .glass-float-anchor img.drink-transition-ghost { animation: none !important; }
}

/* Motion stays on the wrapper, preserving each sprite's calibrated center. */
.drink-stage .glass-button[data-geometry-source="signature"]:where(:not(.is-sipping,.is-drinking,.is-spilling,.is-spilled,.slide-in,.slide-out)) .glass-float-anchor {
  animation:registeredGlassFloat 4.2s ease-in-out infinite!important;
}
.drink-stage .glass-button[data-geometry-source="signature"]:hover:where(:not(:disabled,.is-sipping,.is-drinking,.is-spilling,.is-spilled,.slide-in,.slide-out)) .glass-float-anchor {
  animation:registeredGlassHover 3s ease-in-out infinite!important;
}
@keyframes registeredGlassFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes registeredGlassHover{0%,100%{transform:translateY(-4px)}50%{transform:translateY(-9px)}}
@media(prefers-reduced-motion:reduce){
 .drink-stage .glass-button[data-geometry-source="signature"] .glass-float-anchor{animation:none!important;transform:none!important}
}
