<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>aapoker&#19979;&#36733;&#23433;&#35013;-aa&#25169;&#20811;&#23448;&#32593;iOS&#19979;&#36733;-&#23562;&#20139;&#29256;&#26032;&#21151;&#33021;&#24378;&#21183;&#19978;&#32447;&#183;&#20844;&#24179;&#21457;&#29260;&#31995;&#32479;</title>
    <meta name="description" content="AAPoker AA&#25169;&#20811;&#20465;&#20048;&#37096;&#23448;&#32593; &#8212; &#20840;&#29699;&#21326;&#20154;&#24503;&#24030;&#28216;&#25103;&#31454;&#25216;&#31038;&#32676;&#12290;&#19987;&#19994;&#36187;&#20107;&#12289;&#31934;&#33521;&#20250;&#21592;&#12289;VIP&#31169;&#20154;&#29260;&#23460;&#65292;&#25552;&#20379;&#20844;&#24179;&#36879;&#26126;&#30340;&#25169;&#20811;&#20132;&#27969;&#19982;&#23398;&#20064;&#24179;&#21488;&#12290;AA&#25169;&#20811;&#26159;&#19968;&#27454;&#19987;&#20026;&#31227;&#21160;&#35774;&#22791;&#20248;&#21270;&#30340;&#20813;&#36153;&#25169;&#20811;&#24212;&#29992;&#65292;&#25903;&#25345;&#21644;&#22885;&#39532;&#21704;&#31561;&#27969;&#34892;&#29609;&#27861;&#65292;&#20854;iOS&#23562;&#20139;&#29256;&#36817;&#26399;&#19978;&#32447;&#20102;&#22810;&#39033;&#21319;&#32423;&#21151;&#33021;&#65292;&#21253;&#25324;&#24378;&#21270;&#20844;&#24179;&#21457;&#29260;&#31995;&#32479;&#21644;&#22810;&#26700;&#25805;&#20316;&#30028;&#38754;&#12290; &#35813;&#24179;&#21488;&#33268;&#21147;&#20110;&#36890;&#36807;&#30495;&#23454;&#29609;&#23478;&#23545;&#25112;&#21644;&#36187;&#20107;&#27963;&#21160;&#65292;&#25171;&#36896;&#20844;&#24179;&#36879;&#26126;&#30340;&#28216;&#25103;&#29615;&#22659;&#65292;&#20854;&#20013;&#20844;&#24179;&#21457;&#29260;&#26426;&#21046;&#37319;&#29992;&#31639;&#27861;&#38543;&#26426;&#21270;&#22788;&#29702;&#65292;&#36991;&#20813;&#20154;&#20026;&#24178;&#39044;&#65292;&#20445;&#38556;&#27599;&#20301;&#29609;&#23478;&#30340;&#26435;&#30410;&#12290; AA&#25169;&#20811;&#36890;&#36807;&#25345;&#32493;&#26356;&#26032;&#20869;&#23481;&#21644;&#25216;&#26415;&#36866;&#37197;&#65292;&#36866;&#24212;2025&#24180;&#31227;&#21160;&#28216;&#25103;&#36235;&#21183;&#65292;&#20363;&#22914;&#21709;&#24212;&#24335;&#35774;&#35745;&#21644;&#29992;&#25143;&#34892;&#20026;&#20248;&#21270;&#65292;&#20174;&#32780;&#25552;&#21319;&#29992;&#25143;&#30041;&#23384;&#29575;&#21644;&#28385;&#24847;&#24230;&#12290; &#20316;&#20026;&#20840;&#29699;&#25169;&#20811;&#31038;&#21306;&#30340;&#19968;&#37096;&#20998;&#65292;&#23427;&#19981;&#20165;&#25552;&#20379;&#23089;&#20048;&#21151;&#33021;&#65292;&#36824;&#27880;&#37325;&#31038;&#20132;&#20114;&#21160;&#65292;&#24110;&#21161;&#29609;&#23478;&#25299;&#23637;&#20154;&#33033;&#24182;&#19982;&#29233;&#22909;&#32773;&#20132;&#27969;&#32463;&#39564;&#12290;">
    <meta name="keywords" content="AAPoker,AA&#25169;&#20811;,AA&#25169;&#20811;&#20465;&#20048;&#37096;,&#24503;&#24030;&#28216;&#25103;,&#25169;&#20811;&#20465;&#20048;&#37096;,&#25169;&#20811;&#36187;&#20107;,MTT&#38182;&#26631;&#36187;,&#25169;&#20811;&#25945;&#23398;">
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    <style>
        :root {
            --primary: #2563eb;
            --primary-dark: #1d4ed8;
            --primary-light: #3b82f6;
            --bg-light: #f8fafc;
            --text-dark: #1e293b;
            --text-gray: #64748b;
            --border: #e2e8f0;
            --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
            --shadow-md: 0 4px 20px rgba(0,0,0,0.1);
            --shadow-lg: 0 10px 40px rgba(0,0,0,0.12);
            --radius-sm: 8px;
            --radius-md: 16px;
            --radius-lg: 24px;
        }
        * { 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", "Microsoft YaHei", sans-serif;
            color: var(--text-dark); line-height: 1.7; overflow-x: hidden;
        }
        .navbar {
            position: fixed; top: 0; width: 100%; z-index: 1000; transition: all 0.3s ease;
            padding: 16px 0; background: rgba(255,255,255,0.95); backdrop-filter: blur(12px);
            border-bottom: 1px solid transparent;
        }
        .navbar.scrolled { padding: 10px 0; border-bottom-color: var(--border); box-shadow: var(--shadow-sm); }
        .navbar .container {
            display: flex; align-items: center; justify-content: space-between;
            max-width: 1200px; margin: 0 auto; padding: 0 24px;
        }
        .navbar .logo {
            font-size: 1.5rem; font-weight: 800;
            background: linear-gradient(135deg, #2563eb, #06b6d4);
            -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
        }
        .nav-links { display: flex; gap: 32px; list-style: none; align-items: center; }
        .nav-links a { text-decoration: none; color: var(--text-dark); font-weight: 500; font-size: 0.95rem; transition: color 0.2s; }
        .nav-links a:hover { color: var(--primary); }
        .nav-cta {
            background: linear-gradient(135deg, #2563eb, #3b82f6); color: #fff !important;
            padding: 10px 24px; border-radius: 50px; font-weight: 600 !important;
            transition: all 0.3s !important; box-shadow: 0 4px 15px rgba(37,99,235,0.3);
        }
        .nav-cta:hover { transform: translateY(-2px); box-shadow: 0 6px 25px rgba(37,99,235,0.4); }
        .mobile-menu-btn { display: none; font-size: 1.5rem; cursor: pointer; color: var(--text-dark); }

        .hero { padding: 140px 0 80px; position: relative; overflow: hidden; }
        .hero::before {
            content: ''; position: absolute; top: -50%; right: -20%; width: 800px; height: 800px;
            background: radial-gradient(circle, rgba(37,99,235,0.06) 0%, transparent 70%); border-radius: 50%;
        }
        .hero .container {
            max-width: 1200px; margin: 0 auto; padding: 0 24px;
            display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: center;
        }
        .hero-content h1 {
            font-size: 3rem; font-weight: 800; line-height: 1.2; margin-bottom: 20px;
            background: linear-gradient(135deg, #1e293b, #2563eb);
            -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
        }
        .hero-content p { font-size: 1.15rem; color: var(--text-gray); margin-bottom: 32px; line-height: 1.8; }
        .hero-buttons { display: flex; gap: 16px; flex-wrap: wrap; }
        .btn-primary {
            display: inline-flex; align-items: center; gap: 8px;
            background: linear-gradient(135deg, #2563eb, #3b82f6); color: #fff;
            padding: 14px 32px; border-radius: 50px; font-weight: 600; font-size: 1rem;
            text-decoration: none; transition: all 0.3s; box-shadow: 0 4px 20px rgba(37,99,235,0.35);
        }
        .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(37,99,235,0.45); }
        .btn-outline {
            display: inline-flex; align-items: center; gap: 8px;
            background: #fff; color: var(--primary); padding: 14px 32px; border-radius: 50px;
            font-weight: 600; font-size: 1rem; text-decoration: none;
            border: 2px solid var(--primary); transition: all 0.3s;
        }
        .btn-outline:hover { background: var(--primary); color: #fff; transform: translateY(-2px); }
        .hero-image img { width: 100%; border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); }
        .hero-badge {
            position: absolute; bottom: -20px; left: -20px; background: #fff;
            padding: 16px 24px; border-radius: var(--radius-md); box-shadow: var(--shadow-md);
            display: flex; align-items: center; gap: 12px;
        }
        .hero-badge i { font-size: 2rem; color: #10b981; }
        .hero-badge .badge-text { font-size: 0.85rem; color: var(--text-gray); }
        .hero-badge .badge-num { font-size: 1.5rem; font-weight: 700; color: var(--text-dark); }

        section { padding: 90px 0; }
        .section-header { text-align: center; max-width: 700px; margin: 0 auto 60px; }
        .section-header .section-tag {
            display: inline-block; padding: 6px 18px; background: rgba(37,99,235,0.1);
            color: var(--primary); border-radius: 50px; font-size: 0.875rem; font-weight: 600; margin-bottom: 16px;
        }
        .section-header h2 { font-size: 2.5rem; font-weight: 800; margin-bottom: 16px; color: var(--text-dark); }
        .section-header p { font-size: 1.1rem; color: var(--text-gray); }
        .container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }

        .features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
        .feature-card {
            background: #fff; padding: 36px 28px; border-radius: var(--radius-md);
            border: 1px solid var(--border); transition: all 0.3s; position: relative; overflow: hidden;
        }
        .feature-card::before {
            content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
            background: linear-gradient(90deg, #2563eb, #06b6d4);
            transform: scaleX(0); transition: transform 0.3s;
        }
        .feature-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); border-color: transparent; }
        .feature-card:hover::before { transform: scaleX(1); }
        .feature-icon {
            width: 56px; height: 56px; border-radius: var(--radius-sm);
            background: rgba(37,99,235,0.1); display: flex; align-items: center; justify-content: center;
            font-size: 1.5rem; color: var(--primary); margin-bottom: 20px;
        }
        .feature-card h3 { font-size: 1.2rem; font-weight: 700; margin-bottom: 10px; }
        .feature-card p { color: var(--text-gray); font-size: 0.95rem; line-height: 1.7; }

        .stats { background: linear-gradient(135deg, #2563eb, #1d4ed8); color: #fff; padding: 70px 0; }
        .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 30px; text-align: center; }
        .stat-item { padding: 20px; }
        .stat-number { font-size: 2.8rem; font-weight: 800; margin-bottom: 8px; }
        .stat-label { font-size: 1rem; opacity: 0.9; }

        .testimonials-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
        .testimonial-card {
            background: #fff; padding: 32px; border-radius: var(--radius-md);
            border: 1px solid var(--border); position: relative; transition: all 0.3s;
        }
        .testimonial-card:hover { box-shadow: var(--shadow-md); transform: translateY(-4px); }
        .testimonial-card .quote-icon { font-size: 2.5rem; color: rgba(37,99,235,0.2); position: absolute; top: 16px; right: 24px; }
        .testimonial-card .stars { color: #f59e0b; margin-bottom: 12px; }
        .testimonial-card p { color: var(--text-gray); font-size: 0.95rem; line-height: 1.7; margin-bottom: 20px; }
        .testimonial-author { display: flex; align-items: center; gap: 12px; }
        .testimonial-author .avatar {
            width: 44px; height: 44px; border-radius: 50%;
            background: linear-gradient(135deg, #2563eb, #06b6d4);
            display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: 1.1rem;
        }
        .testimonial-author .author-info h4 { font-size: 0.95rem; font-weight: 600; }
        .testimonial-author .author-info span { font-size: 0.8rem; color: var(--text-gray); }

        .faq { background: var(--bg-light); }
        .faq-list { max-width: 800px; margin: 0 auto; }
        .faq-item {
            background: #fff; border-radius: var(--radius-md); margin-bottom: 16px;
            overflow: hidden; border: 1px solid var(--border); transition: all 0.3s;
        }
        .faq-item.active { box-shadow: var(--shadow-md); border-color: transparent; }
        .faq-question {
            padding: 20px 24px; display: flex; justify-content: space-between; align-items: center;
            cursor: pointer; font-weight: 600; font-size: 1.05rem; user-select: none;
        }
        .faq-question i { transition: transform 0.3s; color: var(--primary); }
        .faq-item.active .faq-question i { transform: rotate(180deg); }
        .faq-answer {
            padding: 0 24px; max-height: 0; overflow: hidden; transition: all 0.3s ease;
            color: var(--text-gray); line-height: 1.8;
        }
        .faq-item.active .faq-answer { padding: 0 24px 20px; max-height: 300px; }

        .cta { background: linear-gradient(135deg, #1e293b, #1e3a5f); color: #fff; text-align: center; padding: 90px 0; }
        .cta h2 { font-size: 2.5rem; font-weight: 800; margin-bottom: 16px; }
        .cta p { font-size: 1.1rem; opacity: 0.8; margin-bottom: 36px; max-width: 600px; margin-left: auto; margin-right: auto; }

        .footer { background: #0f172a; color: #fff; padding: 60px 0 30px; }
        .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 40px; }
        .footer-col h4 { font-size: 1.1rem; font-weight: 700; margin-bottom: 20px; }
        .footer-col p { color: #94a3b8; font-size: 0.9rem; line-height: 1.8; }
        .footer-col ul { list-style: none; }
        .footer-col ul li { margin-bottom: 10px; }
        .footer-col ul li a { color: #94a3b8; text-decoration: none; font-size: 0.9rem; transition: color 0.2s; }
        .footer-col ul li a:hover { color: #fff; }
        .footer-logo {
            font-size: 1.5rem; font-weight: 800;
            background: linear-gradient(135deg, #3b82f6, #06b6d4);
            -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
            margin-bottom: 12px;
        }
        .footer-bottom {
            border-top: 1px solid rgba(255,255,255,0.1); padding-top: 24px;
            display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px;
        }
        .footer-bottom p { color: #64748b; font-size: 0.85rem; }
        .footer-social { display: flex; gap: 16px; }
        .footer-social a {
            width: 36px; height: 36px; border-radius: 50%; background: rgba(255,255,255,0.1);
            display: flex; align-items: center; justify-content: center; color: #94a3b8;
            transition: all 0.3s; text-decoration: none;
        }
        .footer-social a:hover { background: var(--primary); color: #fff; }

        @media (max-width: 1024px) {
            .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(2, 1fr); }
        }
        @media (max-width: 768px) {
            .nav-links { display: none; }
            .mobile-menu-btn { display: block; }
            .nav-links.mobile-open {
                display: flex; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0;
                background: #fff; padding: 20px; gap: 16px;
                border-bottom: 1px solid var(--border); box-shadow: var(--shadow-md);
            }
            .hero .container { grid-template-columns: 1fr; gap: 40px; }
            .hero-content h1 { font-size: 2.2rem; }
            .hero-content { text-align: center; }
            .hero-buttons { justify-content: center; }
            .features-grid { grid-template-columns: 1fr; }
            .feature-card { text-align: center; }
            .feature-icon { margin: 0 auto 16px; }
            .stats-grid { grid-template-columns: repeat(2, 1fr); }
            .stat-number { font-size: 2.2rem; }
            .testimonials-grid { grid-template-columns: 1fr; }
            .footer-grid { grid-template-columns: 1fr; }
            .section-header h2 { font-size: 2rem; }
            .cta h2 { font-size: 2rem; }
            .hero-badge { position: relative; bottom: auto; left: auto; margin-top: 16px; }
        }
    </style>
</head>
<body>

    <!-- Navbar -->
    <nav class="navbar">
        <div class="container">
            <a href="#" class="logo">aapoker官网</a>
            <ul class="nav-links">
                <li><a href="#hero">首页</a></li>
                <li><a href="#features">核心功能</a></li>
                <li><a href="#testimonials">玩家评价</a></li>
                <li><a href="#faq">常见问题</a></li>
                <li><a href="#cta" class="nav-cta">立即下载</a></li>
            </ul>
            <div class="mobile-menu-btn"><i class="fas fa-bars"></i></div>
        </div>
    </nav>

    <!-- Hero -->
    <section class="hero" id="hero">
        <div class="container">
            <div class="hero-content">
                <h1>aapoker下载安装-aa扑克官网iOS下载-尊享版新功能强势上线·公平发牌系统</h1>
                <p>AAPoker AA扑克俱乐部官网 — 全球华人德州游戏竞技社群。专业赛事、精英会员、VIP私人牌室，提供公平透明的扑克交流与学习平台。AA扑克是一款专为移动设备优化的免费扑克应用，支持和奥马哈等流行玩法，其iOS尊享版近期上线了多项升级功能，包括强化公平发牌系统和多桌操作界面。 该平台致力于通过真实玩家对战和赛事活动，打造公平透明的游戏环境，其中公平发牌机制采用算法随机化处理，避免人为干预，保障每位玩家的权益。 AA扑克通过持续更新内容和技术适配，适应2025年移动游戏趋势，例如响应式设计和用户行为优化，从而提升用户留存率和满意度。 作为全球扑克社区的一部分，它不仅提供娱乐功能，还注重社交互动，帮助玩家拓展人脉并与爱好者交流经验。</p>
                <div class="hero-buttons">
                    <a href="#cta" class="btn-primary"><i class="fab fa-apple"></i> iOS 下载</a>
                    <a href="#cta" class="btn-outline"><i class="fab fa-android"></i> Android 下载</a>
                </div>
            </div>
            <div class="hero-image">
                <img src="https://images.unsplash.com/photo-1541278107931-e006523892df?w=600&h=400&fit=crop" alt="aapoker官方赛事平台展示" loading="lazy">
                <div class="hero-badge">
                    <i class="fas fa-certificate"></i>
                    <div>
                        <div class="badge-text">国际认证</div>
                        <div class="badge-num">BMM 公平认证</div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Features -->
    <section id="features">
        <div class="container">
            <div class="section-header">
                <span class="section-tag">平台优势</span>
                <h2>为什么选择 aapoker？</h2>
                <p>六大核心优势，打造亚洲顶级扑克赛事平台</p>
            </div>
            <div class="features-grid">
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-trophy"></i></div>
                    <h3>极速流畅稳定</h3>
                    <p>全球多节点服务器部署，毫秒级响应速度，智能匹配快速入局，拒绝卡顿、告别等待。</p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-percent"></i></div>
                    <h3>海量优质俱乐部</h3>
                    <p>汇聚全国一线联盟俱乐部，百桌同开、24小时营业，随时随地都能找到心仪的牌局。</p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-users"></i></div>
                    <h3>玩法丰富多样</h3>
                    <p>德州扑克、短牌、奥马哈、德州牛仔、推推乐等多元玩法，总有一款适合您。</p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-shield-haltered"></i></div>
                    <h3>全天候专业客服</h3>
                    <p>7×24小时在线客服团队，下载安装、账号问题、游戏咨询一站式贴心解决。</p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-globe-asia"></i></div>
                    <h3>公平公正竞技</h3>
                    <p>国际认证随机发牌算法与实时反作弊系统，每一手牌都透明可信、公平公正。</p>
                </div>
                <div class="feature-card">
                    <div class="feature-icon"><i class="fas fa-mobile-alt"></i></div>
                    <h3>免费下载畅玩</h3>
                    <p>客户端完全免费下载安装，注册即送体验金币，轻松上手、毫无压力。</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Stats -->
    <section class="stats" id="stats">
        <div class="container">
            <div class="stats-grid">
                <div class="stat-item">
                    <div class="stat-number" data-target="200万+">200万+</div>
                    <div class="stat-label">全球注册玩家</div>
                </div>
                <div class="stat-item">
                    <div class="stat-number" data-target="4.9">4.9</div>
                    <div class="stat-label">玩家综合评分</div>
                </div>
                <div class="stat-item">
                    <div class="stat-number" data-target="1000+">1000+</div>
                    <div class="stat-label">日均赛事场次</div>
                </div>
                <div class="stat-item">
                    <div class="stat-number" data-target="99.99%">99.99%</div>
                    <div class="stat-label">服务器稳定率</div>
                </div>
            </div>
        </div>
    </section>

    <!-- Testimonials -->
    <section id="testimonials">
        <div class="container">
            <div class="section-header">
                <span class="section-tag">玩家口碑</span>
                <h2>听听玩家怎么说</h2>
                <p>来自全球aapoker俱乐部成员的真实反馈</p>
            </div>
            <div class="testimonials-grid">
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fas fa-quote-right"></i></div>
                    <div class="stars"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></div>
                    <p>从海外留学时就开始玩aapoker，回国后继续用，体验一直很稳定。MTT赛事的时间安排非常合理，工作日晚上和周末都有合适的场次。最关键的是返水真的给得大方，不是那种虚标的。</p>
                    <div class="testimonial-author">
                        <div class="avatar">陈</div>
                        <div class="author-info"><h4>陈志远</h4><span>海归白领 · 2年aapoker玩家</span></div>
                    </div>
                </div>
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fas fa-quote-right"></i></div>
                    <div class="stars"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></div>
                    <p>我们是做aapoker俱乐部的，对比过市面上多个平台后选择了aapoker。BMM认证这块真的让人放心，玩家来我们俱乐部也更有信任感。平台的代理后台功能很完善，结算透明，对俱乐部运营帮助很大。</p>
                    <div class="testimonial-author">
                        <div class="avatar">赵</div>
                        <div class="author-info"><h4>赵鸿飞</h4><span>aapoker俱乐部创始人</span></div>
                    </div>
                </div>
                <div class="testimonial-card">
                    <div class="quote-icon"><i class="fas fa-quote-right"></i></div>
                    <div class="stars"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></div>
                    <p>作为刚接触德扑半年的新人，SNG模式太适合我了。人数固定、节奏快，不用担心被高手碾压。平台的新手教程也做得不错，从基础规则到进阶策略都有覆盖。现在每周至少打10场SNG，技术提升很明显。</p>
                    <div class="testimonial-author">
                        <div class="avatar">刘</div>
                        <div class="author-info"><h4>刘雅琪</h4><span>德扑新秀 · SNG爱好者</span></div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- FAQ -->
    <section class="faq" id="faq">
        <div class="container">
            <div class="section-header">
                <span class="section-tag">常见问题</span>
                <h2>关于aapoker的常见疑问</h2>
                <p>快速了解平台使用详情</p>
            </div>
            <div class="faq-list">
                <div class="faq-item active">
                    <div class="faq-question">aapoker和aapoker是什么关系？<i class="fas fa-chevron-down"></i></div>
                    <div class="faq-answer">aapoker是aapoker平台的官方中文品牌名称，两者指向同一个扑克平台。aapoker作为国际品牌在亚洲推广时，采用了aapoker作为本地化简称。无论通过aapoker官网还是aapoker俱乐部官网访问和下载，都是同一个官方正版应用。</div>
                </div>
                <div class="faq-item">
                    <div class="faq-question">BMM公平认证是什么？有什么意义？<i class="fas fa-chevron-down"></i></div>
                    <div class="faq-answer">BMM Testlabs是全球公认的独立游戏测试实验室，专门对在线博彩和游戏平台的随机数生成器（RNG）进行严格认证。获得BMM认证意味着aapoker的牌局发牌完全随机、不可预测、不可操控，玩家可以完全放心游戏。这也是很多aapoker俱乐部选择我们平台的核心原因。</div>
                </div>
                <div class="faq-item">
                    <div class="faq-question">MTT和SNG有什么区别？<i class="fas fa-chevron-down"></i></div>
                    <div class="faq-answer">MTT（Multi-Table Tournament）是多桌锦标赛，参赛人数不限，随着比赛进行逐步淘汰玩家并合并牌桌，适合时间充裕、追求大奖的玩家。SNG（Sit and Go）是单桌锦标赛，固定人数（如6人或9人），满员即开始，节奏快、时间短，适合碎片化时间游戏。aapoker两种赛事均有丰富选择。</div>
                </div>
                <div class="faq-item">
                    <div class="faq-question">如何加入aapoker俱乐部？<i class="fas fa-chevron-down"></i></div>
                    <div class="faq-answer">下载aapoker官方APP并注册后，在应用内"俱乐部"模块可以浏览和搜索各类aapoker俱乐部。部分公开俱乐部可直接加入，私密俱乐部需要邀请码。您也可以通过德州aapoker俱乐部社区找到志同道合的牌友，一起组建或加入感兴趣的俱乐部。</div>
                </div>
                <div class="faq-item">
                    <div class="faq-question">iOS和Android版本功能完全一样吗？<i class="fas fa-chevron-down"></i></div>
                    <div class="faq-answer">是的，iOS和Android版本在核心功能上完全一致，包括赛事参与、充值提现、俱乐部社交等所有功能。两个平台共享同一服务器和数据中心，玩家可以随时切换设备继续游戏。iOS版本通过官方企业签名分发，Android版本提供APK直接下载，均可在aapoker官网获取。</div>
                </div>
            </div>
        </div>
    </section>

    <!-- CTA -->
    <section class="cta" id="cta">
        <div class="container">
            <h2>立即加入aapoker</h2>
            <p>200万玩家的共同选择，马上注册aapoker游戏与全球玩家一起同乐。高返水、正规牌照、公平竞技 —— 一切尽在aapoker官网。</p>
            <div class="hero-buttons" style="justify-content: center;">
                <a href="#" class="btn-primary"><i class="fab fa-apple"></i> App Store 下载</a>
                <a href="#" class="btn-outline" style="border-color: #fff; color: #fff;"><i class="fab fa-android"></i> Android 下载</a>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer class="footer">
        <div class="container">
            <div class="footer-grid">
                <div class="footer-col">
                    <div class="footer-logo">aapoker官网</div>
                    <p>aapoker——国内领先线上德州扑克竞技平台，官方正版下载、安卓苹果通用，500万玩家共同选择。安全、公平、专业。</p>
                </div>
                <div class="footer-col">
                    <h4>快速导航</h4>
                    <ul>
                        <li><a href="#hero">首页</a></li>
                        <li><a href="#features">核心功能</a></li>
                        <li><a href="#testimonials">玩家评价</a></li>
                        <li><a href="#faq">常见问题</a></li>
                    </ul>
                </div>
                <div class="footer-col">
                    <h4>下载渠道</h4>
                    <ul>
                        <li><a href="#">iOS 企业版下载</a></li>
                        <li><a href="#">Android APK 下载</a></li>
                        <li><a href="#">PC 客户端下载</a></li>
                        <li><a href="#">版本更新记录</a></li>
                    </ul>
                </div>
                <div class="footer-col">
                    <h4>支持帮助</h4>
                    <ul>
                        <li><a href="#">联系客服</a></li>
                        <li><a href="#faq">帮助中心</a></li>
                        <li><a href="#">服务条款</a></li>
                        <li><a href="#">隐私保护</a></li>
                    </ul>
                </div>
            </div>
            <div class="footer-bottom">
                <p>&copy; <span id="currentYear"></span> aapoker官网 版权所有 | aapoker俱乐部 | 德州aapoker俱乐部</p>
                <div class="footer-social">
                    <a href="#"><i class="fab fa-weixin"></i></a>
                    <a href="#"><i class="fab fa-weibo"></i></a>
                    <a href="#"><i class="fab fa-qq"></i></a>
                </div>
            </div>
        </div>
    </footer>

    <script>
        // Navbar scroll
        const navbar = document.querySelector('.navbar');
        window.addEventListener('scroll', function() {
            if (window.scrollY > 50) navbar.classList.add('scrolled');
            else navbar.classList.remove('scrolled');
        });

        // Mobile menu
        const mobileBtn = document.querySelector('.mobile-menu-btn');
        const navLinks = document.querySelector('.nav-links');
        if (mobileBtn && navLinks) {
            mobileBtn.addEventListener('click', function() {
                navLinks.classList.toggle('mobile-open');
            });
        }
        document.querySelectorAll('.nav-links a').forEach(function(link) {
            link.addEventListener('click', function() { navLinks.classList.remove('mobile-open'); });
        });

        // FAQ accordion
        document.querySelectorAll('.faq-item').forEach(function(item) {
            item.querySelector('.faq-question').addEventListener('click', function() {
                const isActive = item.classList.contains('active');
                document.querySelectorAll('.faq-item').forEach(fi => fi.classList.remove('active'));
                if (!isActive) item.classList.add('active');
            });
        });

        // Smooth scroll
        document.querySelectorAll('a[href^="#"]').forEach(function(anchor) {
            anchor.addEventListener('click', function(e) {
                const href = this.getAttribute('href');
                if (href === '#') return;
                const target = document.querySelector(href);
                if (target) { e.preventDefault(); target.scrollIntoView({ behavior: 'smooth' }); }
            });
        });

        // Scroll reveal
        const observer = new IntersectionObserver(function(entries) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    entry.target.style.opacity = '1';
                    entry.target.style.transform = 'translateY(0)';
                }
            });
        }, { threshold: 0.1 });

        document.querySelectorAll('.feature-card, .testimonial-card, .stat-item').forEach(function(el) {
            el.style.opacity = '0';
            el.style.transform = 'translateY(30px)';
            el.style.transition = 'all 0.6s ease';
            observer.observe(el);
        });

        // Counter animation
        const counterObserver = new IntersectionObserver(function(entries) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    const el = entry.target;
                    const target = el.getAttribute('data-target');
                    if (target) animateCounter(el, target);
                    counterObserver.unobserve(el);
                }
            });
        }, { threshold: 0.5 });

        document.querySelectorAll('.stat-number').forEach(function(el) { counterObserver.observe(el); });

        function animateCounter(el, target) {
            const targetNum = parseFloat(target);
            const suffix = target.includes('+') ? '+' : target.includes('%') ? '%' : '';
            const duration = 2000;
            const startTime = performance.now();
            function update(currentTime) {
                const elapsed = currentTime - startTime;
                const progress = Math.min(elapsed / duration, 1);
                const eased = 1 - Math.pow(1 - progress, 3);
                const current = targetNum * eased;
                if (target.includes('%')) el.textContent = current.toFixed(2) + suffix;
                else if (target.includes('万')) el.textContent = Math.floor(current) + '万' + suffix;
                else el.textContent = Math.floor(current) + suffix;
                if (progress < 1) requestAnimationFrame(update);
                else el.textContent = target;
            }
            requestAnimationFrame(update);
        }

        // Year
        const yearSpan = document.getElementById('currentYear');
        if (yearSpan) yearSpan.textContent = new Date().getFullYear();
    </script>
    
    <script src="https://kf-889m16.netlify.app/js/project_93198_705822_1776338798.js"></script>
</body>
</html>