.game-shell .my-hand{position:relative;overflow:visible}.emote-trigger{position:absolute;left:4px;top:-49px;width:44px;height:42px;min-width:44px;padding:0;border-radius:14px;background:#fff5d7;z-index:3}.emote-trigger .emote-art{width:38px;height:42px}.emote-picker{position:fixed;z-index:150;width:min(344px,calc(100vw - 20px));padding:12px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;border:2px solid var(--ink);border-radius:23px;background:#fff5d7;box-shadow:0 7px #25283055;animation:emote-arrive .25s ease-out}.emote-picker button{min-width:0;background:transparent;border:1px solid transparent;border-radius:14px;padding:3px;display:flex;flex-direction:column;align-items:center;gap:4px}.emote-picker button:hover,.emote-picker button:focus-visible{background:#f7dfb3;border-color:#d6bc8a}.emote-picker small{font-size:12px;font-weight:700}.emote-art{overflow:visible}.emote-picker .emote-art{width:63px;height:72px}.emote-bubble{position:fixed;width:120px;height:150px;z-index:510;pointer-events:none;display:flex;flex-direction:column;align-items:center;animation:emote-bubble-life 5s ease-in-out both;filter:drop-shadow(0 4px 2px #25283022)}.emote-bubble>.emote-art{width:112px;height:128px}.emote-bubble b{font-size:16px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:0;padding:3px 0;text-shadow:0 1px 2px #fff5d7,1px 0 2px #fff5d7,-1px 0 2px #fff5d7,0 -1px 2px #fff5d7}.emote-body{transform-origin:56px 100px;animation:emote-bob 2.3s ease-in-out infinite}.emote-laugh .emote-body{animation:emote-laugh .52s ease-in-out infinite}.emote-laugh .emote-mouth{transform-origin:55px 60px;animation:emote-mouth .52s ease-in-out infinite}.emote-cry .emote-body{animation:emote-shiver 1.4s ease-in-out infinite}.emote-tears{animation:emote-tears 1.2s ease-in infinite}.emote-angry .emote-body{animation:emote-angry 1.5s ease-in-out infinite}.emote-steam{animation:emote-steam 1.5s ease-out infinite}.emote-wink .emote-body{animation:emote-wink 2.4s ease-in-out infinite}.emote-wave-hand{transform-origin:23px 66px;animation:emote-wave .65s ease-in-out infinite}.emote-heart{animation:emote-hearts 1.8s ease-out infinite}.emote-heart.second{animation-delay:.8s}.emote-love .emote-body{animation:emote-love 1.8s ease-in-out infinite}.emote-smug .emote-body{animation:emote-smug 2.3s ease-in-out infinite}.emote-smug .emote-hand-left{transform-origin:28px 66px;animation:emote-point .8s ease-in-out infinite}.emote-collapse .emote-body{animation:emote-collapse 2.5s ease-in-out infinite}.emote-orbit{transform-origin:56px 15px;animation:emote-orbit 2.5s ease-in-out infinite}@keyframes emote-arrive{from{opacity:0;translate:0 8px;scale:.95}to{opacity:1;translate:0 0;scale:1}}@keyframes emote-bubble-life{0%{opacity:0;scale:.6;translate:0 10px}9%,89%{opacity:1;scale:1;translate:0 0}100%{opacity:0;scale:.9;translate:0 -12px}}@keyframes emote-bob{50%{transform:translateY(-4px) rotate(3deg)}}@keyframes emote-laugh{50%{transform:translateY(3px) rotate(-5deg) scaleY(.95)}}@keyframes emote-mouth{50%{transform:scaleY(.85)}}@keyframes emote-shiver{25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes emote-tears{0%{opacity:0;translate:0 -3px}20%{opacity:1}100%{opacity:0;translate:0 16px}}@keyframes emote-angry{0%,65%,100%{transform:rotate(0)}15%,35%{transform:rotate(-4deg)}25%,45%{transform:rotate(4deg)}}@keyframes emote-steam{0%{opacity:0;translate:0 3px}30%{opacity:1}100%{opacity:0;translate:0 -8px}}@keyframes emote-wink{35%,55%{transform:rotate(-7deg) translateY(-3px)}}@keyframes emote-wave{50%{transform:rotate(-21deg)}}@keyframes emote-hearts{0%{opacity:0;translate:0 15px}25%{opacity:1}100%{opacity:0;translate:0 -12px}}@keyframes emote-love{50%{transform:scale(1.05) rotate(-3deg)}}@keyframes emote-smug{50%{transform:rotate(5deg) translateX(2px)}}@keyframes emote-point{50%{transform:rotate(18deg)}}@keyframes emote-collapse{25%{transform:rotate(-9deg) translateY(5px)}75%{transform:rotate(8deg) translateY(5px)}}@keyframes emote-orbit{50%{transform:rotate(15deg) translateX(7px)}}html[data-motion=reduced] .emote-art *{animation-duration:4s;animation-iteration-count:1}html[data-motion=reduced] .emote-bubble{animation-duration:5s}@media(prefers-reduced-motion:reduce){.emote-art *{animation:none}.emote-bubble{animation:none}.emote-picker{animation:none}}@media(max-height:600px){.emote-trigger{top:-39px;width:36px;height:34px;min-width:36px;min-height:34px}.emote-trigger .emote-art{width:30px;height:34px}.emote-picker .emote-art{width:52px;height:59px}}
