/* Loaded after the scene styles. The source anchor and 70% artwork scale stay
   unchanged; drag offsets and the grounded rotation are independent layers.
   A measured pseudo-element is the pointer target, rather than the empty source box. */
.stage :is(.map-object,#telegramIce).ice-physical{translate:var(--ice-drag-x,0px) var(--ice-drag-y,0px);z-index:4;pointer-events:none;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
.stage .ice-physical :is(.object-art,.ice-object){transform-origin:var(--ice-pivot,50% 86%);scale:calc(.7 * var(--ice-depth,1))!important;transform:translateY(var(--ice-lift,0px)) rotateZ(var(--ice-angle,0deg)) rotateX(var(--ice-pitch,0deg))!important;transition:filter .22s ease!important;animation:none!important;filter:none}
.stage .ice-physical:is(:hover,:focus-visible) :is(.object-art,.ice-object){filter:brightness(1.025)}
.stage.ice-physics-ready .ice-map{z-index:auto}
.stage :is(.map-object,#telegramIce).ice-physical::after{content:"";display:block;position:absolute;left:var(--ice-hit-x,0px);top:var(--ice-hit-y,0px);width:var(--ice-hit-w,44px);height:var(--ice-hit-h,44px);pointer-events:auto;touch-action:none;cursor:inherit;background:transparent;border-radius:0}
.stage :is(.map-object,#telegramIce).ice-physical:focus-visible{outline:none}
.stage :is(.map-object,#telegramIce).ice-physical:focus-visible::after{outline:2px solid #235d76;outline-offset:3px}
.stage :is(.map-object,#telegramIce).ice-physical:is(.is-ice-front,.is-ice-dragging){z-index:5}
.stage .ice-physical.is-ice-dragging{cursor:grabbing}
.stage .ice-physical.is-ice-dragging :is(.object-art,.ice-object){will-change:transform;filter:brightness(1.035)}
.stage.ice-dragging,.stage.ice-dragging *{cursor:grabbing!important}
.stage .ice-physical img{-webkit-user-drag:none}
@media(prefers-reduced-motion:reduce){.stage .ice-physical :is(.object-art,.ice-object){transition:none!important;transform:none!important}}
