/* 裁剪路径入场 */
.reveal-clip {
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

/* 气泡出现动效 */
@keyframes bubble-in {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
}
.bubble-animate {
    animation: bubble-in 350ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* 思考点跳动动画 */
@keyframes typing-bounce {
    0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
    30% { transform: translateY(-4px); opacity: 1; }
}
.typing-dot {
    animation: typing-bounce 1.2s infinite ease-in-out;
}
.typing-dot:nth-child(2) { animation-delay: 0.2s; }
.typing-dot:nth-child(3) { animation-delay: 0.4s; }

/* 隐藏滚动条 */
.no-scrollbar::-webkit-scrollbar {
    display: none;
}
.no-scrollbar {
    -ms-overflow-style: none;
    scrollbar-width: none;
}