/* 自定义样式补充 */
html { scroll-behavior: smooth; }

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

/* 复制效果 */
.select-all { user-select: all; }

/* 过渡动画 */
[x-cloak] { display: none !important; }

/* 加载动画 */
@keyframes pulse-dot {
    0%, 80%, 100% { opacity: 0; }
    40% { opacity: 1; }
}

/* 微信支付风格二维码 */
#qrcode-placeholder {
    transition: all 0.3s ease;
}

/* 按钮点击效果 */
.btn-active:active {
    transform: scale(0.97);
}

/* 响应式表格 */
@media (max-width: 640px) {
    .table-responsive {
        font-size: 12px;
    }
    .table-responsive td, 
    .table-responsive th {
        padding: 0.5rem 0.25rem;
    }
}

/* 状态点 */
.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}
.status-dot.pending { background-color: #eab308; }
.status-dot.paid { background-color: #3b82f6; }
.status-dot.completed { background-color: #22c55e; }
.status-dot.cancelled { background-color: #64748b; }
.status-dot.refunded { background-color: #ef4444; }

/* Toast 提示 */
.toast {
    position: fixed;
    bottom: 2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 100;
    animation: toast-in 0.3s ease;
}
@keyframes toast-in {
    from { opacity: 0; transform: translateX(-50%) translateY(1rem); }
    to { opacity: 1; transform: translateX(-50%) translateY(0); }
}
