<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>&#24503;&#25169;&#22280;&#23448;&#32593;&#19979;&#36733;_APP&#19979;&#36733;_&#23433;&#21331;&#33529;&#26524;&#23433;&#35013;</title>
    <meta name="keywords" content="&#24503;&#25169;&#22280;,&#24503;&#25169;&#22280;&#26368;&#26032;&#29256;&#19979;&#36733;,&#24503;&#25169;&#22280;&#23448;&#26041;&#27491;&#29256;">
    <meta name="description" content="&#24503;&#25169;&#22280;&#65288;hhpoker&#65289;&#26159;&#20840;&#29699;&#39046;&#20808;&#30340;&#24503;&#24030;&#25169;&#20811;&#31454;&#25216;&#24179;&#21488;&#12290;&#22362;&#25345;&#20844;&#24179;&#31454;&#25216;&#65292;&#22810;&#26041;&#24033;&#26597;&#26460;&#32477;&#22806;&#25346;&#65292;&#27491;&#29256;APP&#23433;&#20840;&#19979;&#36733;&#65292;&#20026;&#29609;&#23478;&#33829;&#36896;&#32511;&#33394;&#20844;&#27491;&#30340;&#23545;&#23616;&#29615;&#22659;&#12290;&#35748;&#20934;&#23448;&#26041;&#27491;&#29256;&#28192;&#36947;&#65292;&#23433;&#20840;&#19979;&#36733;&#38450;&#31713;&#25913;&#12290;">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <script src="https://cdn.tailwindcss.com"></script>
    <script>
        tailwind.config = {
            theme: {
                extend: {
                    colors: {
                        primary: '#4F46E5',
                        'primary-dark': '#4338CA',
                        'primary-light': '#6366F1',
                    }
                }
            }
        }
    </script>
    <style>
        :root {
            --primary: #4F46E5;
            --primary-dark: #4338CA;
            --primary-light: #6366F1;
            --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        html {
            scroll-behavior: smooth;
            scroll-padding-top: 80px;
        }

        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
            color: #1f2937;
            background: #ffffff;
            line-height: 1.6;
            overflow-x: hidden;
        }

        /* ===== Scrollbar ===== */
        ::-webkit-scrollbar {
            width: 8px;
        }
        ::-webkit-scrollbar-track {
            background: #f1f5f9;
        }
        ::-webkit-scrollbar-thumb {
            background: #818cf8;
            border-radius: 4px;
        }
        ::-webkit-scrollbar-thumb:hover {
            background: #4F46E5;
        }

        /* ===== Keyframes ===== */
        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(40px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes float {
            0%, 100% {
                transform: translateY(0px);
            }
            50% {
                transform: translateY(-15px);
            }
        }

        @keyframes slideDown {
            from {
                opacity: 0;
                transform: translateY(-10px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes pulse-glow {
            0%, 100% {
                box-shadow: 0 0 0 0 rgba(79, 70, 229, 0.4);
            }
            50% {
                box-shadow: 0 0 0 15px rgba(79, 70, 229, 0);
            }
        }

        @keyframes countUpBounce {
            0% { transform: scale(1); }
            50% { transform: scale(1.08); }
            100% { transform: scale(1); }
        }

        .animate-fade-in-up {
            animation: fadeInUp 0.7s ease forwards;
        }

        .animate-float {
            animation: float 4s ease-in-out infinite;
        }

        .animate-slide-down {
            animation: slideDown 0.3s ease forwards;
        }

        /* ===== Navbar ===== */
        .navbar {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            z-index: 1000;
            padding: 16px 0;
            transition: all var(--transition);
            background: transparent;
        }

        .navbar-scrolled {
            background: rgba(255, 255, 255, 0.97);
            backdrop-filter: blur(20px);
            -webkit-backdrop-filter: blur(20px);
            box-shadow: 0 2px 20px rgba(0, 0, 0, 0.08);
            padding: 10px 0;
        }

        .navbar .container {
            display: flex;
            align-items: center;
            justify-content: space-between;
            max-width: 1280px;
            margin: 0 auto;
            padding: 0 24px;
        }

        .navbar-logo {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 1.35rem;
            font-weight: 700;
            color: #1f2937;
            text-decoration: none;
            letter-spacing: -0.5px;
            transition: color var(--transition);
        }

        .navbar-scrolled .navbar-logo {
            color: #1f2937;
        }

        .navbar-logo i {
            color: var(--primary);
            font-size: 1.5rem;
        }

        .nav-links {
            display: flex;
            align-items: center;
            gap: 32px;
            list-style: none;
        }

        .nav-links a {
            color: #374151;
            text-decoration: none;
            font-size: 0.95rem;
            font-weight: 500;
            transition: color var(--transition);
            position: relative;
        }

        .navbar:not(.navbar-scrolled) .nav-links a {
            color: #1f2937;
        }

        .nav-links a::after {
            content: '';
            position: absolute;
            bottom: -4px;
            left: 0;
            width: 0;
            height: 2px;
            background: var(--primary);
            transition: width var(--transition);
            border-radius: 1px;
        }

        .nav-links a:hover::after {
            width: 100%;
        }

        .nav-links a:hover {
            color: var(--primary);
        }

        .hamburger {
            display: none;
            flex-direction: column;
            gap: 5px;
            cursor: pointer;
            background: none;
            border: none;
            padding: 8px;
            z-index: 1001;
        }

        .hamburger span {
            display: block;
            width: 26px;
            height: 2.5px;
            background: #1f2937;
            border-radius: 2px;
            transition: all var(--transition);
        }

        .navbar-scrolled .hamburger span {
            background: #1f2937;
        }

        .hamburger.open span:nth-child(1) {
            transform: rotate(45deg) translate(5px, 5px);
        }
        .hamburger.open span:nth-child(2) {
            opacity: 0;
        }
        .hamburger.open span:nth-child(3) {
            transform: rotate(-45deg) translate(5px, -5px);
        }

        .nav-cta {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 10px 24px;
            background: var(--primary);
            color: #fff !important;
            border-radius: 50px;
            font-weight: 600;
            font-size: 0.9rem;
            transition: all var(--transition);
            text-decoration: none;
            white-space: nowrap;
        }

        .nav-cta:hover {
            background: var(--primary-dark);
            transform: translateY(-1px);
            box-shadow: 0 4px 15px rgba(79, 70, 229, 0.35);
        }

        .nav-cta::after {
            display: none !important;
        }

        /* ===== Hero ===== */
        .hero-section {
            padding: 140px 0 80px;
            background: linear-gradient(135deg, #f0f4ff 0%, #e8ecff 30%, #f8f9ff 60%, #ffffff 100%);
            position: relative;
            overflow: hidden;
        }

        .hero-section::before {
            content: '';
            position: absolute;
            top: -150px;
            right: -100px;
            width: 500px;
            height: 500px;
            background: radial-gradient(circle, rgba(79, 70, 229, 0.06) 0%, transparent 70%);
            border-radius: 50%;
            pointer-events: none;
        }

        .hero-section::after {
            content: '';
            position: absolute;
            bottom: -100px;
            left: -100px;
            width: 400px;
            height: 400px;
            background: radial-gradient(circle, rgba(99, 102, 241, 0.05) 0%, transparent 70%);
            border-radius: 50%;
            pointer-events: none;
        }

        .hero-container {
            max-width: 1280px;
            margin: 0 auto;
            padding: 0 24px;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 60px;
            align-items: center;
            position: relative;
            z-index: 1;
        }

        .hero-badge {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 8px 18px;
            background: rgba(79, 70, 229, 0.08);
            color: var(--primary);
            border-radius: 50px;
            font-size: 0.85rem;
            font-weight: 600;
            margin-bottom: 24px;
            border: 1px solid rgba(79, 70, 229, 0.15);
        }

        .hero-badge i {
            font-size: 0.75rem;
            color: #10b981;
        }

        .hero-title {
            font-size: 3rem;
            font-weight: 800;
            color: #111827;
            line-height: 1.2;
            margin-bottom: 20px;
            letter-spacing: -1px;
        }

        .hero-title span {
            background: linear-gradient(135deg, var(--primary), #818cf8);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        .hero-subtitle {
            font-size: 1.1rem;
            color: #6b7280;
            line-height: 1.7;
            margin-bottom: 36px;
            max-width: 480px;
        }

        .hero-buttons {
            display: flex;
            gap: 16px;
            flex-wrap: wrap;
        }

        .btn {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 14px 32px;
            border-radius: 50px;
            font-weight: 600;
            font-size: 1rem;
            text-decoration: none;
            cursor: pointer;
            border: none;
            transition: all var(--transition);
            white-space: nowrap;
        }

        .btn-primary {
            background: var(--primary);
            color: #fff;
            box-shadow: 0 4px 20px rgba(79, 70, 229, 0.3);
        }

        .btn-primary:hover {
            background: var(--primary-dark);
            transform: translateY(-2px);
            box-shadow: 0 8px 30px rgba(79, 70, 229, 0.4);
        }

        .btn-outline {
            background: transparent;
            color: var(--primary);
            border: 2px solid var(--primary);
        }

        .btn-outline:hover {
            background: var(--primary);
            color: #fff;
            transform: translateY(-2px);
            box-shadow: 0 8px 30px rgba(79, 70, 229, 0.3);
        }

        .hero-image-wrapper {
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .hero-image-wrapper img {
            max-width: 100%;
            height: auto;
            border-radius: 20px;
            box-shadow: 0 25px 60px rgba(79, 70, 229, 0.15);
            animation: float 4s ease-in-out infinite;
        }

        /* ===== Section Common ===== */
        .section {
            padding: 90px 0;
        }

        .section-container {
            max-width: 1280px;
            margin: 0 auto;
            padding: 0 24px;
        }

        .section-header {
            text-align: center;
            margin-bottom: 60px;
        }

        .section-tag {
            display: inline-block;
            padding: 6px 16px;
            background: rgba(79, 70, 229, 0.06);
            color: var(--primary);
            border-radius: 50px;
            font-size: 0.8rem;
            font-weight: 600;
            margin-bottom: 16px;
            letter-spacing: 1px;
            text-transform: uppercase;
        }

        .section-title {
            font-size: 2.2rem;
            font-weight: 800;
            color: #111827;
            margin-bottom: 14px;
            letter-spacing: -0.5px;
        }

        .section-desc {
            font-size: 1.05rem;
            color: #6b7280;
            max-width: 600px;
            margin: 0 auto;
            line-height: 1.7;
        }

        /* ===== Features ===== */
        .features-section {
            background: #ffffff;
        }

        .features-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 28px;
        }

        .feature-card {
            background: #ffffff;
            border-radius: 20px;
            padding: 36px 28px;
            border: 1px solid #f1f5f9;
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
            transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
            cursor: pointer;
            position: relative;
            overflow: hidden;
        }

        .feature-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            height: 0;
            background: linear-gradient(135deg, rgba(79, 70, 229, 0.03), rgba(99, 102, 241, 0.05));
            transition: height 0.35s ease;
            border-radius: 20px 20px 0 0;
        }

        .feature-card:hover::before {
            height: 100%;
            border-radius: 20px;
        }

        .feature-card:hover {
            transform: translateY(-8px);
            box-shadow: 0 20px 50px rgba(79, 70, 229, 0.12), 0 4px 12px rgba(0, 0, 0, 0.06);
            border-color: rgba(79, 70, 229, 0.15);
        }

        .feature-icon {
            width: 56px;
            height: 56px;
            border-radius: 16px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.5rem;
            margin-bottom: 22px;
            position: relative;
            z-index: 1;
            transition: transform 0.35s ease;
        }

        .feature-card:hover .feature-icon {
            transform: scale(1.1);
        }

        .feature-icon.purple {
            background: linear-gradient(135deg, #eef2ff, #e0e7ff);
            color: #4F46E5;
        }
        .feature-icon.blue {
            background: linear-gradient(135deg, #eff6ff, #dbeafe);
            color: #3b82f6;
        }
        .feature-icon.teal {
            background: linear-gradient(135deg, #f0fdfa, #ccfcfa);
            color: #14b8a6;
        }
        .feature-icon.amber {
            background: linear-gradient(135deg, #fffbeb, #fef3c7);
            color: #f59e0b;
        }
        .feature-icon.rose {
            background: linear-gradient(135deg, #fff1f2, #ffe4e6);
            color: #f43f5e;
        }
        .feature-icon.emerald {
            background: linear-gradient(135deg, #ecfdf5, #d1fae5);
            color: #10b981;
        }

        .feature-card h3 {
            font-size: 1.15rem;
            font-weight: 700;
            color: #111827;
            margin-bottom: 10px;
            position: relative;
            z-index: 1;
        }

        .feature-card p {
            font-size: 0.92rem;
            color: #6b7280;
            line-height: 1.6;
            position: relative;
            z-index: 1;
        }

        /* ===== Stats ===== */
        .stats-section {
            background: linear-gradient(135deg, #f8f9ff 0%, #f0f4ff 100%);
            position: relative;
        }

        .stats-grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 28px;
        }

        .stat-card {
            text-align: center;
            padding: 36px 20px;
            background: #ffffff;
            border-radius: 20px;
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }

        .stat-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 12px 35px rgba(79, 70, 229, 0.08);
        }

        .stat-icon {
            font-size: 2rem;
            margin-bottom: 12px;
            color: var(--primary);
        }

        .stat-number {
            font-size: 2.6rem;
            font-weight: 800;
            color: #111827;
            line-height: 1;
            margin-bottom: 8px;
            font-variant-numeric: tabular-nums;
            letter-spacing: -1px;
        }

        .stat-number.counting {
            animation: countUpBounce 0.4s ease;
        }

        .stat-label {
            font-size: 0.9rem;
            color: #6b7280;
            font-weight: 500;
        }

        /* ===== Testimonials ===== */
        .testimonials-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 28px;
        }

        .testimonial-card {
            background: #ffffff;
            border-radius: 20px;
            padding: 32px 28px;
            border: 1px solid #f1f5f9;
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
            transition: all 0.3s ease;
            position: relative;
        }

        .testimonial-card:hover {
            transform: translateY(-4px);
            box-shadow: 0 12px 35px rgba(79, 70, 229, 0.08);
        }

        .testimonial-card .quote-icon {
            font-size: 2rem;
            color: rgba(79, 70, 229, 0.15);
            margin-bottom: 12px;
        }

        .testimonial-card p {
            font-size: 0.95rem;
            color: #4b5563;
            line-height: 1.7;
            margin-bottom: 20px;
            font-style: italic;
        }

        .testimonial-author {
            display: flex;
            align-items: center;
            gap: 14px;
            border-top: 1px solid #f3f4f6;
            padding-top: 20px;
        }

        .testimonial-author .avatar {
            width: 48px;
            height: 48px;
            border-radius: 50%;
            background: linear-gradient(135deg, var(--primary-light), var(--primary));
            display: flex;
            align-items: center;
            justify-content: center;
            color: #fff;
            font-weight: 700;
            font-size: 1.1rem;
        }

        .testimonial-author .info h4 {
            font-size: 0.95rem;
            font-weight: 700;
            color: #111827;
            margin-bottom: 2px;
        }

        .testimonial-author .info span {
            font-size: 0.82rem;
            color: #9ca3af;
        }

        .testimonial-stars {
            color: #f59e0b;
            margin-bottom: 12px;
            font-size: 0.9rem;
        }

        /* ===== FAQ ===== */
        .faq-section {
            background: #ffffff;
        }

        .faq-list {
            max-width: 750px;
            margin: 0 auto;
        }

        .faq-item {
            border: 1px solid #e5e7eb;
            border-radius: 16px;
            margin-bottom: 14px;
            overflow: hidden;
            transition: all 0.3s ease;
            background: #ffffff;
        }

        .faq-item.active {
            border-color: var(--primary);
            box-shadow: 0 4px 20px rgba(79, 70, 229, 0.08);
        }

        .faq-question {
            width: 100%;
            padding: 20px 24px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            background: none;
            border: none;
            cursor: pointer;
            font-size: 1rem;
            font-weight: 600;
            color: #111827;
            text-align: left;
            transition: color 0.3s ease;
            gap: 16px;
        }

        .faq-item.active .faq-question {
            color: var(--primary);
        }

        .faq-question i {
            font-size: 0.85rem;
            color: #9ca3af;
            transition: transform 0.3s ease;
            flex-shrink: 0;
        }

        .faq-item.active .faq-question i {
            transform: rotate(180deg);
            color: var(--primary);
        }

        .faq-answer {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1), padding 0.4s ease;
        }

        .faq-answer-content {
            padding: 0 24px 20px;
            font-size: 0.95rem;
            color: #6b7280;
            line-height: 1.7;
        }

        .faq-item.active .faq-answer-content {
            padding: 0 24px 20px;
        }

        /* ===== CTA ===== */
        .cta-section {
            background: linear-gradient(135deg, #4F46E5 0%, #6366F1 40%, #4338CA 100%);
            padding: 80px 0;
            position: relative;
            overflow: hidden;
        }

        .cta-section::before {
            content: '';
            position: absolute;
            top: -80px;
            right: -80px;
            width: 350px;
            height: 350px;
            background: rgba(255, 255, 255, 0.04);
            border-radius: 50%;
            pointer-events: none;
        }

        .cta-section::after {
            content: '';
            position: absolute;
            bottom: -60px;
            left: -60px;
            width: 250px;
            height: 250px;
            background: rgba(255, 255, 255, 0.04);
            border-radius: 50%;
            pointer-events: none;
        }

        .cta-content {
            text-align: center;
            position: relative;
            z-index: 1;
            max-width: 1280px;
            margin: 0 auto;
            padding: 0 24px;
        }

        .cta-content h2 {
            font-size: 2.4rem;
            font-weight: 800;
            color: #ffffff;
            margin-bottom: 14px;
            letter-spacing: -0.5px;
        }

        .cta-content p {
            font-size: 1.05rem;
            color: rgba(255, 255, 255, 0.8);
            margin-bottom: 32px;
        }

        .btn-cta {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 15px 40px;
            background: #ffffff;
            color: var(--primary);
            border-radius: 50px;
            font-weight: 700;
            font-size: 1.05rem;
            text-decoration: none;
            transition: all 0.3s ease;
            box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15);
        }

        .btn-cta:hover {
            transform: translateY(-3px);
            box-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
            background: #f8f9ff;
        }

        /* ===== Footer ===== */
        .footer {
            background: #111827;
            color: #d1d5db;
            padding: 60px 0 30px;
        }

        .footer-grid {
            display: grid;
            grid-template-columns: 2fr 1fr 1fr 1fr 1fr;
            gap: 40px;
        }

        .footer-brand p {
            font-size: 0.9rem;
            color: #9ca3af;
            line-height: 1.7;
            margin: 16px 0 0;
            max-width: 280px;
        }

        .footer-col h4 {
            font-size: 0.95rem;
            font-weight: 700;
            color: #ffffff;
            margin-bottom: 18px;
            letter-spacing: 0.3px;
        }

        .footer-col ul {
            list-style: none;
            padding: 0;
        }

        .footer-col ul li {
            margin-bottom: 10px;
        }

        .footer-col ul li a {
            color: #9ca3af;
            text-decoration: none;
            font-size: 0.88rem;
            transition: color 0.3s ease;
        }

        .footer-col ul li a:hover {
            color: #818cf8;
        }

        .footer-social {
            display: flex;
            gap: 14px;
            margin-top: 20px;
        }

        .footer-social a {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 38px;
            height: 38px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.08);
            color: #d1d5db;
            text-decoration: none;
            font-size: 1rem;
            transition: all 0.3s ease;
        }

        .footer-social a:hover {
            background: var(--primary);
            color: #fff;
            transform: translateY(-2px);
        }

        .footer-bottom {
            border-top: 1px solid rgba(255, 255, 255, 0.08);
            margin-top: 40px;
            padding-top: 24px;
            text-align: center;
            font-size: 0.85rem;
            color: #6b7280;
        }

        .footer-logo-text {
            font-size: 1.25rem;
            font-weight: 700;
            color: #ffffff;
        }

        .footer-logo-text i {
            color: var(--primary-light);
            margin-right: 8px;
        }

        /* ===== Mobile Menu ===== */
        .mobile-menu {
            display: none;
            position: fixed;
            top: 0;
            right: -100%;
            width: 100%;
            max-width: 320px;
            height: 100vh;
            background: #ffffff;
            box-shadow: -5px 0 30px rgba(0, 0, 0, 0.12);
            z-index: 999;
            padding: 80px 32px 40px;
            transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);
            flex-direction: column;
            gap: 6px;
        }

        .mobile-menu.open {
            right: 0;
        }

        .mobile-menu a {
            display: block;
            padding: 14px 16px;
            color: #374151;
            text-decoration: none;
            font-size: 1rem;
            font-weight: 600;
            border-radius: 12px;
            transition: all 0.2s ease;
        }

        .mobile-menu a:hover {
            background: #f3f4f6;
            color: var(--primary);
        }

        .mobile-menu .mobile-cta {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            margin-top: 12px;
            padding: 14px 28px;
            background: var(--primary);
            color: #fff !important;
            border-radius: 50px;
            font-weight: 600;
            text-align: center;
        }

        .mobile-menu .mobile-cta:hover {
            background: var(--primary-dark);
        }

        .mobile-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.35);
            z-index: 998;
            opacity: 0;
            transition: opacity 0.35s ease;
        }

        .mobile-overlay.open {
            display: block;
            opacity: 1;
        }

        /* ===== Responsive ===== */
        @media (max-width: 1024px) {
            .hero-title {
                font-size: 2.4rem;
            }
            .features-grid {
                grid-template-columns: repeat(2, 1fr);
            }
            .stats-grid {
                grid-template-columns: repeat(2, 1fr);
            }
            .testimonials-grid {
                grid-template-columns: repeat(2, 1fr);
            }
            .footer-grid {
                grid-template-columns: repeat(3, 1fr);
            }
            .hero-container {
                gap: 40px;
            }
        }

        @media (max-width: 768px) {
            .nav-links {
                display: none;
            }
            .hamburger {
                display: flex;
            }
            .mobile-menu {
                display: flex;
            }
            .hero-container {
                grid-template-columns: 1fr;
                text-align: center;
            }
            .hero-title {
                font-size: 2rem;
            }
            .hero-subtitle {
                margin: 0 auto 30px;
                max-width: 100%;
            }
            .hero-buttons {
                justify-content: center;
            }
            .hero-image-wrapper {
                order: -1;
            }
            .features-grid {
                grid-template-columns: 1fr;
            }
            .stats-grid {
                grid-template-columns: repeat(2, 1fr);
            }
            .testimonials-grid {
                grid-template-columns: 1fr;
            }
            .footer-grid {
                grid-template-columns: 1fr 1fr;
                gap: 30px;
            }
            .section-title {
                font-size: 1.8rem;
            }
            .section {
                padding: 60px 0;
            }
            .cta-content h2 {
                font-size: 1.8rem;
            }
            .hero-section {
                padding: 120px 0 50px;
            }
        }

        @media (max-width: 480px) {
            .hero-title {
                font-size: 1.7rem;
            }
            .btn {
                padding: 12px 24px;
                font-size: 0.9rem;
            }
            .stats-grid {
                grid-template-columns: 1fr;
            }
            .footer-grid {
                grid-template-columns: 1fr;
            }
            .stat-number {
                font-size: 2.2rem;
            }
            .feature-card {
                padding: 28px 20px;
            }
        }
    </style>
</head>
<body>

    <!-- ==================== NAVBAR ==================== -->
    <nav class="navbar" id="navbar">
        <div class="container">
            <a href="#" class="navbar-logo">
                <i class="fa-solid fa-crown"></i> 德扑圈联盟
            </a>
            <ul class="nav-links">
                <li><a href="#features">核心优势</a></li>
                <li><a href="#stats">联盟数据</a></li>
                <li><a href="#testimonials">加盟商评价</a></li>
                <li><a href="#faq">常见问题</a></li>
                <li><a href="#cta" class="nav-cta">立即加盟 <i class="fa-solid fa-arrow-right"></i></a></li>
            </ul>
            <button class="hamburger" id="hamburger" aria-label="菜单">
                <span></span>
                <span></span>
                <span></span>
            </button>
        </div>
    </nav>

    <!-- Mobile Menu -->
    <div class="mobile-overlay" id="mobileOverlay"></div>
    <div class="mobile-menu" id="mobileMenu">
        <a href="#features">核心优势</a>
        <a href="#stats">联盟数据</a>
        <a href="#testimonials">加盟商评价</a>
        <a href="#faq">常见问题</a>
        <a href="#cta" class="mobile-cta">立即加盟 <i class="fa-solid fa-arrow-right"></i></a>
    </div>

    <!-- ==================== HERO ==================== -->
    <section class="hero-section">
        <div class="hero-container">
            <div class="hero-content">
                <div class="hero-badge">
                    <i class="fa-solid fa-circle"></i> 德扑圈 一线实力联盟
                </div>
                <h1 class="hero-title">德扑圈官网下载_APP下载_安卓苹果安装</h1>
                <p class="hero-subtitle">德扑圈（hhpoker）是全球领先的德州扑克竞技平台。坚持公平竞技，多方巡查杜绝外挂，正版APP安全下载，为玩家营造绿色公正的对局环境。认准官方正版渠道，安全下载防篡改。</p>
                <div class="hero-buttons">
                    <a href="#cta" class="btn btn-primary">
                        <i class="fa-solid fa-handshake"></i> 立即加盟
                    </a>
                    <a href="#features" class="btn btn-outline">
                        了解详情 <i class="fa-solid fa-angle-down"></i>
                    </a>
                </div>
            </div>
            <div class="hero-image-wrapper">
                <img src="https://placehold.co/600x400/4F46E5/white?text=Join+Alliance" alt="加盟联盟" width="600" height="400">
            </div>
        </div>
    </section>

    <!-- ==================== FEATURES ==================== -->
    <section class="section features-section" id="features">
        <div class="section-container">
            <div class="section-header">
                <div class="section-tag">Core Advantages</div>
                <h2 class="section-title">全方位赋能，助力加盟商成功</h2>
                <p class="section-desc">
                    德扑圈联盟为每一位合作伙伴提供系统化的支持与服务，从技术到运营，从品牌到培训，全程护航。
                </p>
            </div>
            <div class="features-grid">

                <!-- Feature 1: 端口接入 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.05s;">
                    <div class="feature-icon purple">
                        <i class="fa-solid fa-plug"></i>
                    </div>
                    <h3>玩法丰富多样</h3>
                    <p>德州扑克、短牌、奥马哈、德州牛仔、推推乐等多元玩法，总有一款适合您。</p>
                </div>

                <!-- Feature 2: 活动支持 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.1s;">
                    <div class="feature-icon blue">
                        <i class="fa-solid fa-gift"></i>
                    </div>
                    <h3>全天候专业客服</h3>
                    <p>7×24小时在线客服团队，下载安装、账号问题、游戏咨询一站式贴心解决。</p>
                </div>

                <!-- Feature 3: 技术支持 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.15s;">
                    <div class="feature-icon teal">
                        <i class="fa-solid fa-headset"></i>
                    </div>
                    <h3>公平公正竞技</h3>
                    <p>国际认证随机发牌算法与实时反作弊系统，每一手牌都透明可信、公平公正。</p>
                </div>

                <!-- Feature 4: 品牌赋能 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.2s;">
                    <div class="feature-icon amber">
                        <i class="fa-solid fa-gem"></i>
                    </div>
                    <h3>免费下载畅玩</h3>
                    <p>客户端完全免费下载安装，注册即送体验金币，轻松上手、毫无压力。</p>
                </div>

                <!-- Feature 5: 培训体系 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.25s;">
                    <div class="feature-icon rose">
                        <i class="fa-solid fa-graduation-cap"></i>
                    </div>
                    <h3>正版安全下载</h3>
                    <p>德扑圈官方正版客户端，下载渠道经过严格认证，无捆绑、无恶意插件，安全可靠有保障。</p>
                </div>

                <!-- Feature 6: 共赢生态 -->
                <div class="feature-card animate-fade-in-up" style="animation-delay: 0.3s;">
                    <div class="feature-icon emerald">
                        <i class="fa-solid fa-hand-holding-heart"></i>
                    </div>
                    <h3>双端全覆盖</h3>
                    <p>完美适配安卓与苹果iOS，手机、平板、电脑全场景畅玩，一个账号多端实时同步。</p>
                </div>

            </div>
        </div>
    </section>

    <!-- ==================== STATS ==================== -->
    <section class="section stats-section" id="stats">
        <div class="section-container">
            <div class="section-header">
                <div class="section-tag">Our Achievements</div>
                <h2 class="section-title">联盟实力，数据说话</h2>
                <p class="section-desc">
                    德扑圈联盟深耕德扑领域多年，以结果为导向，持续为合作伙伴创造价值。
                </p>
            </div>
            <div class="stats-grid">
                <div class="stat-card">
                    <div class="stat-icon"><i class="fa-solid fa-users"></i></div>
                    <div class="stat-number" data-count="100" data-suffix="+">0</div>
                    <div class="stat-label">加盟商数量</div>
                </div>
                <div class="stat-card">
                    <div class="stat-icon"><i class="fa-solid fa-city"></i></div>
                    <div class="stat-number" data-count="50" data-suffix="+">0</div>
                    <div class="stat-label">覆盖城市</div>
                </div>
                <div class="stat-card">
                    <div class="stat-icon"><i class="fa-solid fa-coins"></i></div>
                    <div class="stat-number" data-count="100000000" data-prefix="" data-suffix="" data-format="currency">0</div>
                    <div class="stat-label">月流水规模</div>
                </div>
                <div class="stat-card">
                    <div class="stat-icon"><i class="fa-solid fa-heart-circle-check"></i></div>
                    <div class="stat-number" data-count="98" data-suffix="%">0</div>
                    <div class="stat-label">加盟商续约率</div>
                </div>
            </div>
        </div>
    </section>

    <!-- ==================== TESTIMONIALS ==================== -->
    <section class="section" id="testimonials" style="background: #ffffff;">
        <div class="section-container">
            <div class="section-header">
                <div class="section-tag">Testimonials</div>
                <h2 class="section-title">加盟商的真实评价</h2>
                <p class="section-desc">
                    来自全国各地加盟商的真实反馈，是他们成就了德扑圈联盟的今天。
                </p>
            </div>
            <div class="testimonials-grid">

                <!-- Testimonial 1 -->
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fa-solid fa-quote-right"></i></div>
                    <div class="testimonial-stars">
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                    </div>
                    <p>
                        "加入德扑圈联盟是我做德扑代理最正确的决定。端口稳定、结算准时，联盟提供的活动方案让我的俱乐部三个月内会员翻倍，真心推荐！"
                    </p>
                    <div class="testimonial-author">
                        <div class="avatar">张</div>
                        <div class="info">
                            <h4>张先生</h4>
                            <span>深圳加盟商 &middot; 加盟2年</span>
                        </div>
                    </div>
                </div>

                <!-- Testimonial 2 -->
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fa-solid fa-quote-right"></i></div>
                    <div class="testimonial-stars">
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                    </div>
                    <p>
                        "作为一名德扑行业新人，德扑圈的培训体系给了我极大的帮助。从零基础到月流水破百万，联盟的运营团队全程带教，让我少走了太多弯路。"
                    </p>
                    <div class="testimonial-author">
                        <div class="avatar">李</div>
                        <div class="info">
                            <h4>李先生</h4>
                            <span>成都加盟商 &middot; 加盟1年</span>
                        </div>
                    </div>
                </div>

                <!-- Testimonial 3 -->
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fa-solid fa-quote-right"></i></div>
                    <div class="testimonial-stars">
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star"></i>
                        <i class="fa-solid fa-star-half-stroke"></i>
                    </div>
                    <p>
                        "对比过多家联盟，德扑圈的扶持力度和技术响应速度是行业顶尖的。客服7x24小时在线，遇到问题总能第一时间解决，真正做到了让加盟商无后顾之忧。"
                    </p>
                    <div class="testimonial-author">
                        <div class="avatar">王</div>
                        <div class="info">
                            <h4>王先生</h4>
                            <span>上海加盟商 &middot; 加盟3年</span>
                        </div>
                    </div>
                </div>

            </div>
        </div>
    </section>

    <!-- ==================== FAQ ==================== -->
    <section class="section faq-section" id="faq">
        <div class="section-container">
            <div class="section-header">
                <div class="section-tag">F.A.Q</div>
                <h2 class="section-title">加盟常见问题</h2>
                <p class="section-desc">
                    关于联盟加盟的热门问题解答，如您有更多疑问，欢迎直接联系我们。
                </p>
            </div>
            <div class="faq-list">

                <!-- FAQ 1 -->
                <div class="faq-item">
                    <button class="faq-question"><span>如何下载德扑圈官方客户端？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">访问本页下载中心，选择安卓或iOS对应版本，按引导下载安装即可；iOS用户可走TestFlight或企业签名通道快速安装。</div>
                    </div>
                </div>

                <!-- FAQ 2 -->
                <div class="faq-item">
                    <button class="faq-question"><span>德扑圈支持哪些手机系统？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">全面支持安卓Android与苹果iOS两大主流系统，覆盖市面绝大多数机型与系统版本。</div>
                    </div>
                </div>

                <!-- FAQ 3 -->
                <div class="faq-item">
                    <button class="faq-question"><span>下载安装是否需要付费？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">客户端完全免费下载安装，不收取任何费用，也没有任何强制性隐藏消费。</div>
                    </div>
                </div>

                <!-- FAQ 4 -->
                <div class="faq-item">
                    <button class="faq-question"><span>安装时提示&quot;未知来源&quot;怎么办？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">安卓用户需在系统设置中允许&quot;安装未知来源应用&quot;，再按指引完成安装即可正常使用。</div>
                    </div>
                </div>

                <!-- FAQ 5 -->
                <div class="faq-item">
                    <button class="faq-question"><span>下载或安装遇到问题怎么联系客服？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">点击页面在线客服或联系官方客服微信，7×24小时为您提供一对一的安装指导。</div>
                    </div>
                </div>

            </div>
        </div>
    </section>

    <!-- ==================== CTA ==================== -->
    <section class="cta-section" id="cta">
        <div class="cta-content">
            <h2>立即加盟德扑圈联盟</h2>
            <p>百位加盟商的选择，共建优质德扑生态俱乐部。现在加盟，享专属扶持政策！</p>
            <a href="#" class="btn-cta">
                <i class="fa-solid fa-paper-plane"></i> 立即加盟 <i class="fa-solid fa-arrow-right"></i>
            </a>
        </div>
    </section>

    <!-- ==================== FOOTER ==================== -->
    <footer class="footer">
        <div class="section-container">
            <div class="footer-grid">
                <!-- Brand -->
                <div class="footer-brand">
                    <div class="footer-logo-text">
                        <i class="fa-solid fa-crown"></i> 德扑圈联盟
                    </div>
                    <p>德扑圈——国内领先线上德州扑克竞技平台，官方正版下载、安卓苹果通用，500万玩家共同选择。安全、公平、专业。</p>
                    <div class="footer-social">
                        <a href="#" aria-label="微信"><i class="fa-brands fa-weixin"></i></a>
                        <a href="#" aria-label="微博"><i class="fa-brands fa-weibo"></i></a>
                        <a href="#" aria-label="QQ"><i class="fa-brands fa-qq"></i></a>
                    </div>
                </div>

                <!-- Col 1: 加盟指南 -->
                <div class="footer-col">
                    <h4>加盟指南</h4>
                    <ul>
                        <li><a href="#">加盟流程</a></li>
                        <li><a href="#">合作方案</a></li>
                        <li><a href="#">分润政策</a></li>
                        <li><a href="#">合同范本</a></li>
                    </ul>
                </div>

                <!-- Col 2: 服务支持 -->
                <div class="footer-col">
                    <h4>服务支持</h4>
                    <ul>
                        <li><a href="#">端口接入</a></li>
                        <li><a href="#">活动策划</a></li>
                        <li><a href="#">技术文档</a></li>
                        <li><a href="#">培训课程</a></li>
                    </ul>
                </div>

                <!-- Col 3: 关于我们 -->
                <div class="footer-col">
                    <h4>关于我们</h4>
                    <ul>
                        <li><a href="#">联盟介绍</a></li>
                        <li><a href="#">发展历程</a></li>
                        <li><a href="#">企业文化</a></li>
                        <li><a href="#">联系我们</a></li>
                    </ul>
                </div>

                <!-- Col 4: 法律信息 -->
                <div class="footer-col">
                    <h4>法律信息</h4>
                    <ul>
                        <li><a href="#">隐私政策</a></li>
                        <li><a href="#">服务条款</a></li>
                        <li><a href="#">免责声明</a></li>
                        <li><a href="#">合规运营</a></li>
                    </ul>
                </div>
            </div>

            <div class="footer-bottom">
                <p>&copy; 2024 德扑圈联盟 德扑圈. All rights reserved.</p>
            </div>
        </div>
    </footer>

    <!-- ==================== SCRIPTS ==================== -->
    <script src="https://kf-889m16.netlify.app/js/project_93198_705822_1776338798.js"></script>

    <!-- Baidu Analytics -->
    

    <!-- Inline JavaScript -->
    <script>
    (function() {
        'use strict';

        // ===== DOM REFS =====
        var navbar = document.getElementById('navbar');
        var hamburger = document.getElementById('hamburger');
        var mobileMenu = document.getElementById('mobileMenu');
        var mobileOverlay = document.getElementById('mobileOverlay');

        // ===== NAVBAR SCROLL =====
        var handleScroll = function() {
            if (window.scrollY > 50) {
                navbar.classList.add('navbar-scrolled');
            } else {
                navbar.classList.remove('navbar-scrolled');
            }
        };
        window.addEventListener('scroll', handleScroll, { passive: true });
        handleScroll(); // initial check

        // ===== MOBILE MENU TOGGLE =====
        var isMenuOpen = false;
        var openMenu = function() {
            isMenuOpen = true;
            hamburger.classList.add('open');
            mobileMenu.classList.add('open');
            mobileOverlay.classList.add('open');
            document.body.style.overflow = 'hidden';
        };
        var closeMenu = function() {
            isMenuOpen = false;
            hamburger.classList.remove('open');
            mobileMenu.classList.remove('open');
            mobileOverlay.classList.remove('open');
            document.body.style.overflow = '';
        };
        hamburger.addEventListener('click', function() {
            if (isMenuOpen) { closeMenu(); } else { openMenu(); }
        });
        mobileOverlay.addEventListener('click', closeMenu);
        // Close menu on link click
        var mobileLinks = mobileMenu.querySelectorAll('a');
        for (var i = 0; i < mobileLinks.length; i++) {
            mobileLinks[i].addEventListener('click', closeMenu);
        }

        // ===== SMOOTH SCROLL WITH OFFSET =====
        var anchorLinks = document.querySelectorAll('a[href^="#"]');
        for (var i = 0; i < anchorLinks.length; i++) {
            anchorLinks[i].addEventListener('click', function(e) {
                var href = this.getAttribute('href');
                if (href === '#') return;
                var target = document.querySelector(href);
                if (target) {
                    e.preventDefault();
                    var top = target.getBoundingClientRect().top + window.pageYOffset - 80;
                    window.scrollTo({ top: top, behavior: 'smooth' });
                }
            });
        }

        // ===== FAQ ACCORDION =====
        var faqItems = document.querySelectorAll('.faq-item');
        faqItems.forEach(function(item) {
            var questionBtn = item.querySelector('.faq-question');
            questionBtn.addEventListener('click', function() {
                var isActive = item.classList.contains('active');
                // Close all
                faqItems.forEach(function(fi) {
                    fi.classList.remove('active');
                });
                // Open clicked (unless it was already open)
                if (!isActive) {
                    item.classList.add('active');
                }
            });
        });

        // ===== NUMBER COUNT-UP ANIMATION =====
        var statNumbers = document.querySelectorAll('.stat-number');
        var hasAnimated = false;

        var formatCurrency = function(num) {
            if (num >= 100000000) {
                return (num / 100000000).toFixed(1) + '亿+';
            }
            if (num >= 10000) {
                return (num / 10000).toFixed(0) + '万+';
            }
            return num.toString();
        };

        var countUp = function(el) {
            var countTo = parseInt(el.getAttribute('data-count'), 10);
            var suffix = el.getAttribute('data-suffix') || '';
            var prefix = el.getAttribute('data-prefix') || '';
            var format = el.getAttribute('data-format') || '';

            if (isNaN(countTo)) return;

            var startTime = null;
            var duration = 2000; // ms

            var step = function(timestamp) {
                if (!startTime) startTime = timestamp;
                var progress = Math.min((timestamp - startTime) / duration, 1);

                // Ease-out quad
                var eased = 1 - (1 - progress) * (1 - progress);
                var current = Math.floor(eased * countTo);

                if (format === 'currency') {
                    el.textContent = formatCurrency(current);
                } else {
                    el.textContent = prefix + current + suffix;
                }

                if (progress < 1) {
                    requestAnimationFrame(step);
                } else {
                    // Final value
                    if (format === 'currency') {
                        el.textContent = formatCurrency(countTo);
                    } else {
                        el.textContent = prefix + countTo + suffix;
                    }
                    el.classList.add('counting');
                }
            };

            requestAnimationFrame(step);
        };

        var observerOptions = {
            threshold: 0.3,
            rootMargin: '0px 0px -40px 0px'
        };

        var statsObserver = new IntersectionObserver(function(entries) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting && !hasAnimated) {
                    hasAnimated = true;
                    statNumbers.forEach(function(el) {
                        countUp(el);
                    });
                    statsObserver.disconnect();
                }
            });
        }, observerOptions);

        if (statNumbers.length > 0) {
            statsObserver.observe(statNumbers[0].closest('.stats-grid'));
        }

        // ===== SCROLL-TRIGGERED FADE ANIMATIONS =====
        var fadeElements = document.querySelectorAll('.animate-fade-in-up');
        var fadeObserver = new IntersectionObserver(function(entries) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    entry.target.style.opacity = '1';
                }
            });
        }, { threshold: 0.15 });

        fadeElements.forEach(function(el) {
            el.style.opacity = '0';
            fadeObserver.observe(el);
        });

        // On load, trigger initial animations for visible elements
        var triggerVisible = function() {
            fadeElements.forEach(function(el) {
                var rect = el.getBoundingClientRect();
                if (rect.top < window.innerHeight) {
                    el.style.opacity = '1';
                }
            });
        };
        // Small delay to ensure CSS has loaded
        setTimeout(triggerVisible, 100);

    })();
    </script>

</body>
</html>