.identity { display:flex; gap:11px; align-items:center; text-decoration:none; font-size:32px; font-weight:800; letter-spacing:-.065em; line-height:1; color:inherit; }
.identity .mascot { width:37px; height:37px; overflow:visible; }
.identity-dot { color:#e4572e; }
.identity .mascot-face,.identity .mascot-eye-open,.identity .mascot-sparkles { transform-box:fill-box; transform-origin:center; }
@media (prefers-reduced-motion:no-preference) {
  .identity .mascot-shell > * { stroke-dasharray:1; animation:brand-draw .38s cubic-bezier(.45,.05,.35,1) both; }
  .identity .mascot-antenna { animation-duration:.26s; animation-delay:.26s; }
  .identity .mascot-feet { animation-duration:.22s; animation-delay:.36s; }
  .identity .mascot-face { animation:brand-face .18s ease-out .5s both; }
  .identity .mascot-eye-open { animation:brand-open 1.6s ease-in-out both; }
  .identity .mascot-eye-wink { animation:brand-wink 1.6s ease-in-out both; }
  .identity .mascot-sparkles { animation:brand-sparkle 1.6s cubic-bezier(.3,1.45,.45,1) both; }
}
@keyframes brand-draw { from { stroke-dashoffset:1; } to { stroke-dashoffset:0; } }
@keyframes brand-face { from { opacity:0; transform:scale(.35); } to { opacity:1; transform:scale(1); } }
@keyframes brand-open { 0%,34% { opacity:1; } 38%,100% { opacity:0; } }
@keyframes brand-wink { 0%,34% { opacity:0; } 38%,100% { opacity:1; } }
@keyframes brand-sparkle {
  0%,42% { opacity:0; transform:translate(-1px,2px) scale(.12) rotate(-20deg); }
  48% { opacity:1; transform:translate(0,0) scale(.85); }
  60% { opacity:1; transform:translate(5px,-5px) scale(1) rotate(18deg); }
  74% { opacity:.35; transform:translate(9px,-9px) scale(.55) rotate(34deg); }
  82%,100% { opacity:0; transform:translate(12px,-12px) scale(.2) rotate(48deg); }
}
@media(max-width:740px) { .identity { font-size:28px; gap:7px; } .identity .mascot { width:30px; height:30px; } }

/* ===== mascot 常驻循环动画（首播结束后接管）===== */
.identity .mascot{transform-box:fill-box;transform-origin:center}
@media (prefers-reduced-motion:no-preference){
  /* both：开场 1.6s 首播期间就按 0% 帧显示（睁眼、不浮动），
     否则延迟期会一直停在首播结束的"眨眼"状态，看着像卡住 */
  .identity .mascot{animation:brand-float 3.2s ease-in-out 1.6s infinite both}
  .identity .mascot-eye-open{animation:brand-blink-open 3.2s ease-in-out 1.6s infinite both}
  .identity .mascot-eye-wink{animation:brand-blink-wink 3.2s ease-in-out 1.6s infinite both}
  .identity .mascot-sparkles{animation:brand-sparkle-loop 3.2s cubic-bezier(.3,1.45,.45,1) 1.6s infinite both}
}
@keyframes brand-float{
  0%,100%{transform:translateY(0) rotate(0deg)}
  30%{transform:translateY(-1.6px) rotate(-1.5deg)}
  65%{transform:translateY(.8px) rotate(1deg)}
}
@keyframes brand-blink-open{
  0%,86%,100%{opacity:1}
  90%,94%{opacity:0}
}
@keyframes brand-blink-wink{
  0%,88%{opacity:0}
  90%,94%{opacity:1}
  100%{opacity:0}
}
@keyframes brand-sparkle-loop{
  0%,40%{opacity:0;transform:translate(-1px,2px) scale(.12) rotate(-20deg)}
  50%{opacity:1;transform:translate(0,0) scale(.8)}
  62%{opacity:.9;transform:translate(4px,-4px) scale(1) rotate(16deg)}
  76%{opacity:.3;transform:translate(8px,-8px) scale(.5) rotate(30deg)}
  86%,100%{opacity:0;transform:translate(11px,-11px) scale(.2) rotate(44deg)}
}
