/* 自定义工具类 */
.text-shadow {
    text-shadow: 0 4px 8px rgba(0, 0, 0, 0.12);
}
.gradient-bg {
    background: linear-gradient(135deg, #0078D7 0%, #005A9E 100%);
}
.gradient-card {
    background: linear-gradient(135deg, #FFFFFF 0%, #F8FAFC 100%);
}
.card-hover {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.card-hover:hover {
    transform: translateY(-8px);
}
.btn-primary {
    background: linear-gradient(135deg, #E74C3C 0%, #C0392B 100%);
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}
.btn-primary:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(231, 76, 60, 0.3);
}
.btn-primary::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%);
    transform: translateX(-100%);
    transition: transform 0.6s;
}
.btn-primary:hover::after {
    transform: translateX(100%);
}
.btn-secondary {
    background: linear-gradient(135deg, #0078D7 0%, #005A9E 100%);
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}
.btn-secondary:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 20px rgba(0, 120, 215, 0.3);
}
.btn-secondary::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(255,255,255,0) 100%);
    transform: translateX(-100%);
    transition: transform 0.6s;
}
.btn-secondary:hover::after {
    transform: translateX(100%);
}
.module-title {
    position: relative;
    padding-left: 1.5rem;
    font-weight: 800;
    letter-spacing: -0.025em;
}
.module-title::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 6px;
    height: 32px;
    background: linear-gradient(135deg, #E74C3C 0%, #C0392B 100%);
    border-radius: 3px;
}
.feature-icon {
    background: linear-gradient(135deg, #0078D7 0%, #005A9E 100%);
    box-shadow: 0 10px 15px -3px rgba(0, 120, 215, 0.3);
}
.contact-icon {
    background: linear-gradient(135deg, #F8FAFC 0%, #E2E8F0 100%);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}
.animate-fade-in {
    animation: fadeIn 0.8s ease forwards;
}
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.animate-slide-up {
    animation: slideUp 0.6s ease forwards;
}
@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(50px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.backdrop-blur {
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}