/* 微交互(花生/花/表情抽屉):退场、翻页、按压,保持 steps() 像素节奏。2026-10-25 微交互审计后新增。 */

/* ---------- 花生 / 花 菜单:收起 = 反向弹出(steps,~100ms);翻页 = 第二页从右侧 8px 进来 ---------- */
.pet-menu.out { animation: pet-menu-out .1s steps(2, jump-none) forwards; pointer-events: none; }
@keyframes pet-menu-out { from { transform: none; opacity: 1; } to { transform: scale(.92); opacity: 0; } }
/* 在花生上方时从底边长出来,看得出是从花生那儿弹出的 */
.pet-menu.from-below { transform-origin: 50% 100%; }
.pet-mgrid.pg-in-r { animation: pet-pg-in-r .12s steps(2, jump-none); }
.pet-mgrid.pg-in-l { animation: pet-pg-in-l .12s steps(2, jump-none); }
@keyframes pet-pg-in-r { from { transform: translateX(8px); opacity: .5; } to { transform: none; opacity: 1; } }
@keyframes pet-pg-in-l { from { transform: translateX(-8px); opacity: .5; } to { transform: none; opacity: 1; } }

/* ---------- 狗牌卡:收起 = 像素下沉 + 遮罩淡出;换页签左右滑 6px,进出子页 12px ---------- */
.pet-card.out { pointer-events: none; }
.pet-card.out .pet-card-sheet { animation: pet-sheet-out .14s steps(2, jump-none) forwards; }
.pet-card.out .pet-card-scrim { animation: pet-scrim-out .14s steps(2, jump-none) forwards; }
@keyframes pet-sheet-out { from { transform: translate(-50%, 0); opacity: 1; } to { transform: translate(-50%, 16px); opacity: 0; } }
@keyframes pet-scrim-out { from { opacity: 1; } to { opacity: 0; } }
.pet-pane.pane-from-r { animation: pet-pane-r .12s steps(2, jump-none); }
.pet-pane.pane-from-l { animation: pet-pane-l .12s steps(2, jump-none); }
.pet-pane.pane-push { animation: pet-pane-push .14s steps(2, jump-none); }
.pet-pane.pane-pop { animation: pet-pane-pop .14s steps(2, jump-none); }
@keyframes pet-pane-r { from { transform: translateX(6px); opacity: .6; } to { transform: none; opacity: 1; } }
@keyframes pet-pane-l { from { transform: translateX(-6px); opacity: .6; } to { transform: none; opacity: 1; } }
@keyframes pet-pane-push { from { transform: translateX(12px); opacity: .5; } to { transform: none; opacity: 1; } }
@keyframes pet-pane-pop { from { transform: translateX(-12px); opacity: .5; } to { transform: none; opacity: 1; } }
.pet-tab:active { transform: translateY(2px); }
html[data-theme="island"] .pet-tab:active { transform: translateY(2px); }

/* ---------- 触屏按住花生:立刻压扁一下(用独立的 scale 属性,不打断呼吸动画的 transform) ---------- */
.pet-float.pet-press .pet-cv { scale: 1 .94; }

/* ---------- 自由摆放的花生闲着压在消息字上:半透明,字看得清;说话/悬停/按下立刻实色 ---------- */
.pet-float.pet-veil { opacity: .55; transition: opacity .3s steps(3, jump-none); }
.pet-float.pet-veil:hover, .pet-float.pet-veil:has(.pet-say:not([hidden])) { opacity: 1; }

/* ---------- 表情抽屉:收起 = 下沉 10px + 淡出 160ms,再 hidden ---------- */
.sticker-panel.closing { animation: stk-out .16s cubic-bezier(.4, 0, 1, 1) forwards; pointer-events: none; }
@keyframes stk-out { from { transform: none; opacity: 1; } to { transform: translateY(10px); opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .pet-menu.out, .pet-card.out .pet-card-sheet, .pet-card.out .pet-card-scrim, .sticker-panel.closing,
  .pet-pane.pane-from-r, .pet-pane.pane-from-l, .pet-pane.pane-push, .pet-pane.pane-pop,
  .pet-mgrid.pg-in-r, .pet-mgrid.pg-in-l { animation: none !important; }
  .pet-float.pet-veil { transition: none; }
}
