<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HHPoker德扑圈俱乐部 · 官方客服下载站</title>
    <meta name="keywords" content="hhpoker俱乐部, 德扑圈俱乐部">
    <meta name="description" content="HHpoker德扑圈App竞技游戏平台风靡盛行，主流线上德州App。本站提供官方最新版本苹果IOS安卓客户端下载网址，一线全联盟俱乐部，全天全级别优质牌局。HH扑克玩法超丰富、短牌、德州牛仔、推推乐、真实玩家竞技切磋。">
    <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> HHPoker联盟
            </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> HHPoker 一线实力联盟
                </div>
                <h1 class="hero-title">HHPoker德扑圈俱乐部 · 官方客服下载站</h1>
                <p class="hero-subtitle">HHpoker德扑圈App竞技游戏平台风靡盛行，主流线上德州App。本站提供官方最新版本苹果IOS安卓客户端下载网址，一线全联盟俱乐部，全天全级别优质牌局。HH扑克玩法超丰富、短牌、德州牛仔、推推乐、真实玩家竞技切磋。</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">
                    HHPoker联盟为每一位合作伙伴提供系统化的支持与服务，从技术到运营，从品牌到培训，全程护航。
                </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>7×24小时在线</h3>
                    <p>HHPoker客服团队全天候在线、节假日不休，随时随地响应您的每一项需求。</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>安卓、苹果安装步骤手把手指导，TestFlight与企业签名安装轻松搞定。</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>平均响应时间30秒以内，专业高效、绝不拖延，让您的问题第一时间得到解决。</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">
                    HHPoker联盟深耕德扑领域多年，以结果为导向，持续为合作伙伴创造价值。
                </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">
                    来自全国各地加盟商的真实反馈，是他们成就了HHPoker联盟的今天。
                </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>
                        "加入HHPoker联盟是我做德扑代理最正确的决定。端口稳定、结算准时，联盟提供的活动方案让我的俱乐部三个月内会员翻倍，真心推荐！"
                    </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>
                        "作为一名德扑行业新人，HHPoker的培训体系给了我极大的帮助。从零基础到月流水破百万，联盟的运营团队全程带教，让我少走了太多弯路。"
                    </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>
                        "对比过多家联盟，HHPoker的扶持力度和技术响应速度是行业顶尖的。客服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>如何联系HHPoker官方客服？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">可通过微信、电话、在线客服多渠道联系，7×24小时全天候在线为您服务。</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">联系客服提交申诉材料，客服会协助核实并快速跟进处理，保障您的账号权益。</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>客服响应时间有多快？</span><i class="fa-solid fa-chevron-down"></i>
                    </button>
                    <div class="faq-answer">平均响应时间30秒以内，专业高效，绝不耽误您的时间。</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">可以，客服提供下载安装、玩法教程、账号问题等一对一全程指导。</div>
                    </div>
                </div>

            </div>
        </div>
    </section>

    <!-- ==================== CTA ==================== -->
    <section class="cta-section" id="cta">
        <div class="cta-content">
            <h2>立即加盟HHPoker联盟</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> HHPoker联盟
                    </div>
                    <p>HHPoker——国内领先线上德州扑克竞技平台，7×24小时官方客服在线，下载安装、账号问题一站式解决。安全、公平、专业。</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 HHPoker联盟 HHPoker. 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>