.angel-dog { --dog-size:106px; position:fixed; inset:0; z-index:45; pointer-events:none; }
.angel-dog__position { position:absolute; top:0; left:0; width:var(--dog-size); height:var(--dog-size); will-change:transform; }
.angel-dog__hit { position:absolute; left:18%; top:23%; width:64%; height:71%; min-width:44px; min-height:44px; margin:0; padding:0; border:0; background:transparent; cursor:pointer; pointer-events:auto; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
.angel-dog__float { position:absolute; width:var(--dog-size); height:var(--dog-size); left:calc(var(--dog-size) * -.18); top:calc(var(--dog-size) * -.23); pointer-events:none; animation:dog-float 3.6s ease-in-out infinite; }
.angel-dog__art { position:absolute; inset:0; display:block; transform-origin:50% 72%; }
.angel-dog__image { width:100%; height:100%; display:block; object-fit:contain; user-select:none; pointer-events:none; }
.angel-dog__clips { position:absolute; }
.angel-dog__part { position:absolute; inset:0; width:100%; height:100%; display:none; pointer-events:none; user-select:none; }
.angel-dog__art.is-layered .angel-dog__image { clip-path:var(--body-clip); }
.angel-dog__art.is-layered .angel-dog__part { display:block; }
.angel-dog__part--left { transform-origin:35% 65%; animation:dog-wing-left 1.8s ease-in-out infinite; }
.angel-dog__part--right { transform-origin:64% 68%; animation:dog-wing-right 1.8s ease-in-out infinite; }
.angel-dog__part--halo { clip-path:inset(0 0 77% 0); transform-origin:54% 19%; animation:dog-halo 4.2s ease-in-out infinite; }
.angel-dog__hit:focus-visible { outline: none; }
.angel-dog__hit:is(:focus-visible, :active) .angel-dog__image { filter: brightness(1.18); }
@media (hover: hover) {
  .angel-dog__hit:hover .angel-dog__image { filter: brightness(1.12); }
}
.angel-dog__hit:active .angel-dog__art { transform:scale(.95); }
.angel-dog__hit.is-bouncing .angel-dog__art { animation:dog-bounce .85s ease-in-out both; }
.angel-dog__bubble { position:absolute; left:0; top:0; margin:0; width:min(204px,calc(100vw - 24px)); padding:11px 14px; color:#655143; background:#fff9ed; border:2px solid #bc9c7b; border-radius:15px 19px 16px 12px / 13px 15px 20px 16px; box-shadow:2px 3px 0 #73564012; font:15px/1.65 "KaiTi","STKaiti","Microsoft YaHei",sans-serif; overflow-wrap:anywhere; opacity:0; visibility:hidden; transition:opacity .28s ease,visibility .28s; pointer-events:none; }
.angel-dog.is-speaking .angel-dog__bubble { opacity:1; visibility:visible; }
.angel-dog.is-suspended { visibility:hidden; }
.angel-dog__progress { margin-left:auto; color:#77604d; font-size:13px; white-space:nowrap; border:1px dashed #bca386; border-radius:10px 13px 9px 12px; padding:5px 8px; }
.angel-dog[data-state="sleepy"] .angel-dog__float { animation-duration:5.4s; }
.angel-dog[data-state="switching"] .angel-dog__float { animation-play-state:paused; }
@keyframes dog-float { 0%,100% { transform:translateY(0) rotate(-1deg); } 50% { transform:translateY(-5px) rotate(1deg); } }
@keyframes dog-wing-left { 0%,100% { transform:rotate(0) scaleY(1); } 50% { transform:rotate(5deg) scaleY(.91); } }
@keyframes dog-wing-right { 0%,100% { transform:rotate(0) scaleY(1); } 50% { transform:rotate(-5deg) scaleY(.91); } }
@keyframes dog-halo { 0%,100% { transform:rotate(-2deg) translateY(0); } 50% { transform:rotate(2deg) translateY(-1px); } }
@keyframes dog-bounce { 0%,100% { transform:translateY(0) scale(1); } 28% { transform:translateY(-13px) scale(1.025,.98) rotate(-3deg); } 55% { transform:translateY(1px) scale(.98,1.02); } 76% { transform:translateY(-5px) rotate(2deg); } }
@media (max-width:600px) {
  .angel-dog__bubble { width:min(180px,calc(100vw - 24px)); font-size:14px; padding:9px 12px; }
  .topbar:has(.angel-dog__progress) { gap:8px; padding-inline:12px; }
  .topbar:has(.angel-dog__progress) .brand { gap:6px; font-size:16px; white-space:nowrap; }
  .topbar:has(.angel-dog__progress) .brand-mark { flex-shrink:0; width:30px; height:30px; }
  .angel-dog__progress { font-size:12px; padding:5px 6px; }
}
@media (prefers-reduced-motion:reduce) { .angel-dog__float,.angel-dog__part,.angel-dog__hit.is-bouncing .angel-dog__art { animation:none; } .angel-dog__bubble { transition:none; } }
