/* 🐾 捏捏小狗（2026-09-06）— 澄澄的小小不爽出口 */
/* 住在输入区右上方。戳/连戳/长按捏/揉/翻肚皮，全部本地即时反应 */

.pinch-wrap {
  position: absolute; right: 14px; top: -74px;
  width: 58px; height: 58px; z-index: 15;
  touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
  cursor: pointer;
}
.pinch-dog {
  width: 100%; height: 100%; display: block; overflow: visible;
  --sq: 0;
  filter: drop-shadow(0 2px 3px rgba(120,90,50,.18));
  transform-origin: 50% 90%;
}
/* 偶尔歪头 */
.pinch-dog.tilt { animation: pinch-tilt .8s var(--spring); }
@keyframes pinch-tilt { 0%{transform:rotate(0)} 35%{transform:rotate(-13deg)} 70%{transform:rotate(7deg)} 100%{transform:rotate(0)} }
/* 被戳：缩一下弹回 */
.pinch-dog.bump { animation: pinch-bump .42s var(--spring); }
@keyframes pinch-bump { 0%{transform:scale(1)} 30%{transform:scale(.86,.9)} 100%{transform:scale(1)} }
/* 晕：左右摇 */
.pinch-dog[data-mood="dizzy"] { animation: pinch-wobble .55s ease-in-out infinite; }
@keyframes pinch-wobble { 0%,100%{transform:rotate(-6deg)} 50%{transform:rotate(6deg)} }
/* 恢复正常时的一下抖毛 */
.pinch-dog.shake { animation: pinch-shake .5s ease-out; }
@keyframes pinch-shake { 0%{transform:rotate(0)} 20%{transform:rotate(-9deg)} 40%{transform:rotate(8deg)} 60%{transform:rotate(-5deg)} 80%{transform:rotate(3deg)} 100%{transform:rotate(0)} }

/* ── 捏扁：--sq 0→1 由JS按长按时长推 ── */
.pinch-dog .head-g { transform-origin: 50px 62px; transform: scale(calc(1 + .42*var(--sq)), calc(1 - .34*var(--sq))); transition: transform .12s ease-out; }
.pinch-dog .ear-l { transform-origin: 31px 38px; transform: rotate(calc(34deg*var(--sq))); transition: transform .12s ease-out; }
.pinch-dog .ear-r { transform-origin: 69px 38px; transform: rotate(calc(-34deg*var(--sq))); transition: transform .12s ease-out; }
.pinch-dog.release .head-g, .pinch-dog.release .ear-l, .pinch-dog.release .ear-r { transition: transform .55s var(--spring); }

/* ── 表情切换（data-mood 决定显示哪套眼睛/嘴） ── */
.pinch-dog [data-eyes], .pinch-dog .mouth-wavy, .pinch-dog .stars, .pinch-dog .ruffle, .pinch-dog .tears, .pinch-dog .brows { display: none; }
.pinch-dog .belly-g { display: none; }
.pinch-dog[data-mood="idle"] [data-eyes="open"],
.pinch-dog[data-mood="poked"] [data-eyes="open"],
.pinch-dog[data-mood="teary"] [data-eyes="open"] { display: block; }
.pinch-dog[data-mood="idle"] .eyes-open { transform-origin: 50px 53px; animation: pinch-blink 4.6s ease-in-out infinite; }
@keyframes pinch-blink { 0%,92%,100%{transform:scaleY(1)} 95%{transform:scaleY(.08)} }
.pinch-dog[data-mood="squish"] [data-eyes="squint"] { display: block; }
.pinch-dog[data-mood="squish"] .mouth-smile, .pinch-dog[data-mood="squish"] .tongue { display: none; }
.pinch-dog[data-mood="squish"] .mouth-wavy { display: block; }
.pinch-dog[data-mood="dizzy"] [data-eyes="dizzy"] { display: block; }
.pinch-dog[data-mood="dizzy"] .stars { display: block; }
.pinch-dog[data-mood="ruffled"] [data-eyes="happy"], .pinch-dog[data-mood="happy"] [data-eyes="happy"] { display: block; }
.pinch-dog[data-mood="ruffled"] .ruffle { display: block; }
.pinch-dog[data-mood="teary"] .tears, .pinch-dog[data-mood="teary"] .brows, .pinch-dog[data-mood="teary"] .mouth-wavy { display: block; }
.pinch-dog[data-mood="teary"] .mouth-smile, .pinch-dog[data-mood="teary"] .tongue { display: none; }
.pinch-dog .face-g { transform-origin: 50px 62px; transition: transform .45s var(--spring); }
.pinch-dog[data-mood="belly"] .face-g { transform: translate(-0.5px,-29.5px) scale(0.56); }
.pinch-dog[data-mood="belly"] .belly-g { display: block; }
.pinch-dog[data-mood="belly"] [data-eyes="open"] { display: block; }
.pinch-dog[data-mood="belly"] { transform: scale(1.15); }
.pinch-dog .stars { transform-origin: 50px 24px; animation: pinch-stars 1.6s linear infinite; }
@keyframes pinch-stars { to { transform: rotate(360deg); } }
.pinch-dog .tail-b { transform-origin: 36.5px 74px; animation: pinch-tail .5s ease-in-out infinite alternate; }
@keyframes pinch-tail { from{transform:rotate(-14deg)} to{transform:rotate(16deg)} }

/* ── 拖动：拎起来 ── */
.pinch-wrap.dragging { cursor: grabbing; }
.pinch-wrap.dragging .pinch-dog { transform: scale(1.1) rotate(var(--tilt, -6deg)); filter: drop-shadow(0 9px 10px rgba(120,90,50,.3)); transition: transform .09s, filter .15s; }
.pinch-wrap.dragging .pinch-dog .ear-l { transform: rotate(-10deg); } .pinch-wrap.dragging .pinch-dog .ear-r { transform: rotate(10deg); }

/* ── 小气泡：小狗说话 ── */
.pinch-bubble {
  position: absolute; bottom: calc(100% - 11px); right: 2px;
  max-width: 190px; white-space: nowrap;
  background: var(--ai-bubble); border: 1.5px solid #e3cfab;
  border-radius: 12px 12px 3px 12px;
  padding: 4px 10px; font: 12.5px/1.5 var(--font); color: var(--text-primary);
  box-shadow: var(--shadow-soft);
  opacity: 0; transform: translateY(5px) scale(.88); transform-origin: 90% 100%;
  transition: opacity .16s, transform .22s var(--spring);
  pointer-events: none;
}
.pinch-bubble.show { opacity: 1; transform: none; }
.pinch-wrap.bubble-left .pinch-bubble { right: auto; left: 2px; border-radius: 12px 12px 12px 3px; transform-origin: 10% 100%; }

/* 消息区底部留出小狗的位置，避免挡住最后一条 */
.messages { padding-bottom: 72px !important; }

@media (max-width: 600px) {
  .pinch-wrap { right: 10px; top: -70px; width: 54px; height: 54px; }
}

/* ── 晕晕脸：拎着甩出来的，盖在任何表情上（含翻肚皮） ── */
svg.pinch-dog[data-dazed] [data-eyes] { display: none; }
svg.pinch-dog[data-dazed] [data-eyes="dizzy"] { display: block; }
svg.pinch-dog[data-dazed] .stars { display: block; }
svg.pinch-dog[data-dazed] .mouth-smile, svg.pinch-dog[data-dazed] .tongue { display: none; }
svg.pinch-dog[data-dazed] .mouth-wavy { display: block; }

/* ── 开心盖层：翻着肚皮被摸 ── */
svg.pinch-dog[data-happy] [data-eyes] { display: none; }
svg.pinch-dog[data-happy] [data-eyes="happy"] { display: block; }
svg.pinch-dog[data-happy] .tongue { display: block; }
svg.pinch-dog[data-happy] .tail-b { animation-duration: .22s; }
