<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- P1: SEO meta 标签 -->
  <title>SoftHub · 个人软件下载站 — 干净安全无捆绑</title>
  <meta name="description" content="SoftHub 是个人维护的纯净软件下载站，所有软件均经过安全检测与安装验证，零捆绑、零广告。覆盖开发、效率、设计三大领域，即搜即下。">
  <meta name="keywords" content="软件下载,纯净软件,无捆绑软件,开发工具,效率工具,设计软件,VS Code,Docker,Figma,Obsidian">
  <meta name="author" content="SoftHub">
  <meta name="robots" content="index, follow">
  <link rel="canonical" href="https://jxjun.com/">

  <!-- P1: Open Graph 社交分享 -->
  <meta property="og:type" content="website">
  <meta property="og:title" content="SoftHub · 个人软件下载站">
  <meta property="og:description" content="个人维护的纯净软件下载站，零捆绑、零广告。覆盖开发、效率、设计三大领域，即搜即下。">
  <meta property="og:url" content="https://jxjun.com/">
  <meta property="og:site_name" content="SoftHub">
  <meta property="og:locale" content="zh_CN">

  <!-- P1: Twitter Card -->
  <meta name="twitter:card" content="summary">
  <meta name="twitter:title" content="SoftHub · 个人软件下载站">
  <meta name="twitter:description" content="个人维护的纯净软件下载站，零捆绑、零广告。覆盖开发、效率、设计三大领域。">

  <!-- P1: Favicon -->
  <link rel="icon" type="image/svg+xml" href="favicon.svg">
  <link rel="apple-touch-icon" href="favicon.svg">

  <!-- P1: 结构化数据 JSON-LD -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "SoftHub",
    "url": "https://jxjun.com/",
    "description": "个人维护的纯净软件下载站，所有软件均经过安全检测与安装验证，零捆绑、零广告。",
    "inLanguage": "zh-CN"
  }
  </script>

  <!-- 字体优化：preconnect + 异步加载 -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" onload="this.rel='stylesheet'">
  <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap"></noscript>

  <link rel="stylesheet" href="css/style.css?v=20260811c">
</head>
<body>

  <!-- 背景装饰 -->
  <div class="bg-grid"></div>
  <div class="bg-glow bg-glow-1"></div>
  <div class="bg-glow bg-glow-2"></div>

  <!-- 导航栏 -->
  <header class="navbar" id="navbar">
    <div class="nav-container">
      <a href="#" class="logo">
        <div class="logo-icon">
          <svg viewBox="0 0 32 32" width="28" height="28">
            <rect x="4" y="4" width="24" height="24" rx="6" fill="none" stroke="url(#logoGrad)" stroke-width="2"/>
            <path d="M11 16h10M16 11v10" stroke="url(#logoGrad)" stroke-width="2.5" stroke-linecap="round"/>
            <defs>
              <linearGradient id="logoGrad" x1="0" y1="0" x2="32" y2="32">
                <stop offset="0%" stop-color="#2563eb"/>
                <stop offset="100%" stop-color="#06b6d4"/>
              </linearGradient>
            </defs>
          </svg>
        </div>
        <span class="logo-text">Soft<span class="logo-accent">Hub</span></span>
      </a>

      <nav class="nav-links" id="navLinks">
        <a href="#home" class="nav-link active">首页</a>
        <a href="#software" class="nav-link">软件库</a>
        <a href="#categories" class="nav-link">分类</a>
        <a href="#about" class="nav-link">关于</a>
      </nav>

      <div class="nav-search">
        <div class="search-box">
          <svg class="search-icon" viewBox="0 0 24 24" width="18" height="18">
            <circle cx="11" cy="11" r="7" fill="none" stroke="currentColor" stroke-width="2"/>
            <path d="M21 21l-4.3-4.3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
          </svg>
          <input type="text" id="searchInput" placeholder="搜索软件..." autocomplete="off" aria-label="搜索软件">
          <kbd class="search-kbd">Ctrl K</kbd>
        </div>
      </div>

      <button class="nav-toggle" id="navToggle" aria-label="菜单" aria-expanded="false">
        <span></span><span></span><span></span>
      </button>
    </div>
  </header>

  <!-- Hero 区域 -->
  <section class="hero" id="home">
    <!-- 浮动科技图标 -->
    <div class="floating-icons" id="floatingIcons">
      <div class="fl-icon" style="--dx:20px;--dy:-30px;--dr:15deg;--dl:0.6s">💻</div>
      <div class="fl-icon" style="--dx:-25px;--dy:-20px;--dr:-10deg;--dl:0.2s">⚡</div>
      <div class="fl-icon" style="--dx:-15px;--dy:25px;--dr:12deg;--dl:0.4s">🎨</div>
      <div class="fl-icon" style="--dx:28px;--dy:20px;--dr:-8deg;--dl:0.8s">🚀</div>
      <div class="fl-icon" style="--dx:35px;--dy:-10px;--dr:20deg;--dl:1s">🐳</div>
      <div class="fl-icon" style="--dx:-30px;--dy:10px;--dr:-15deg;--dl:0.5s">📦</div>
    </div>

    <div class="hero-container">
      <div class="hero-badge">
        <span class="pulse-dot"></span>
        <span>已收录 <strong id="totalCount">0</strong> 款精品软件 · 持续更新中</span>
      </div>
      <h1 class="hero-title">
        精选每一款<span class="gradient-text">实用工具</span><br>让效率<span class="gradient-text">触手可及</span>
      </h1>
      <p class="hero-subtitle">
        个人维护的纯净软件下载站，每款均经过安全检测与安装验证，零捆绑、零广告。
        <br>覆盖开发、效率、设计三大领域，即搜即下。
      </p>

      <!-- Hero 搜索框 -->
      <div class="hero-search">
        <div class="hero-search-box">
          <svg class="hs-icon" viewBox="0 0 24 24" width="20" height="20">
            <circle cx="11" cy="11" r="7" fill="none" stroke="currentColor" stroke-width="2"/>
            <path d="M21 21l-4.3-4.3" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
          </svg>
          <input type="text" id="heroSearchInput" placeholder="输入软件名称或关键词搜索..." autocomplete="off" aria-label="搜索软件">
          <button class="hs-btn" id="heroSearchBtn">
            <span>搜索</span>
            <svg viewBox="0 0 24 24" width="15" height="15"><path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
          </button>
        </div>
        <div class="hero-search-hints" id="heroSearchHints">
          <span>快速分类：</span>
        </div>
      </div>

      <!-- 统计数据 -->
      <div class="hero-stats">
        <div class="stat-item">
          <div class="stat-icon">
            <svg viewBox="0 0 24 24" width="20" height="20"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/><rect x="8" y="2" width="8" height="4" rx="1" fill="none" stroke="currentColor" stroke-width="2"/></svg>
          </div>
          <div class="stat-value" id="statTotal">0</div>
          <div class="stat-label">收录软件</div>
        </div>
        <div class="stat-divider"></div>
        <div class="stat-item">
          <div class="stat-icon">
            <svg viewBox="0 0 24 24" width="20" height="20"><path d="M12 3v12m0 0l-4-4m4 4l4-4M5 21h14" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
          </div>
          <div class="stat-value" id="statDownloads">0</div>
          <div class="stat-label">总下载量</div>
        </div>
        <div class="stat-divider"></div>
        <div class="stat-item">
          <div class="stat-icon">
            <svg viewBox="0 0 24 24" width="20" height="20"><path d="M4 4h16v4H4V4zM4 10h16v4H4v-4zM4 16h16v4H4v-4z" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
          </div>
          <div class="stat-value" id="statCategories">0</div>
          <div class="stat-label">软件分类</div>
        </div>
        <div class="stat-divider"></div>
        <div class="stat-item">
          <div class="stat-icon">
            <svg viewBox="0 0 24 24" width="20" height="20"><path d="M21 12a9 9 0 1 1-9-9c2.5 0 4.8 1 6.4 2.6M21 4v5h-5" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
          </div>
          <div class="stat-value" id="statUpdates">0</div>
          <div class="stat-label">本月更新</div>
        </div>
      </div>
    </div>

    <!-- 底部渐变过渡 -->
    <div class="hero-gradient-fade"></div>
  </section>

  <!-- 精选推荐 -->
  <section class="featured-section" id="featured">
    <div class="container">
      <div class="section-header">
        <div>
          <div class="section-eyebrow">FEATURED</div>
          <h2 class="section-title">精选推荐 <span class="section-badge">HOT</span></h2>
          <p class="section-desc">经过严格测试与挑选的高质量软件</p>
        </div>
        <a href="#software" class="see-all-link">
          浏览全部
          <svg viewBox="0 0 24 24" width="16" height="16"><path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
        </a>
      </div>
      <div class="featured-grid" id="featuredGrid">
        <!-- JS 动态生成 -->
      </div>
    </div>
  </section>

  <!-- 最近更新 -->
  <section class="recent-section" id="recent">
    <div class="container">
      <div class="section-header">
        <div>
          <div class="section-eyebrow">RECENT</div>
          <h2 class="section-title">最近更新</h2>
          <p class="section-desc">保持跟进，获取最新版本</p>
        </div>
      </div>
      <div class="recent-scroll" id="recentScroll">
        <!-- JS 动态生成 -->
      </div>
    </div>
  </section>

  <!-- 分类筛选 -->
  <section class="categories-section" id="categories">
    <div class="container">
      <div class="section-header">
        <h2 class="section-title">软件分类</h2>
        <p class="section-desc">按类别快速找到你需要的工具</p>
      </div>
      <div class="category-chips" id="categoryChips">
        <!-- JS 动态生成 -->
      </div>
    </div>
  </section>

  <!-- 软件列表 -->
  <section class="software-section" id="software">
    <div class="container">
      <div class="section-header">
        <div>
          <h2 class="section-title">软件库</h2>
          <p class="section-desc">所有软件均经过测试，放心下载</p>
        </div>
        <div class="sort-bar">
          <button class="sort-btn active" data-sort="recommended">推荐</button>
          <button class="sort-btn" data-sort="latest">最新</button>
          <button class="sort-btn" data-sort="downloads">下载</button>
          <button class="sort-btn" data-sort="name">名称</button>
        </div>
      </div>

      <div class="software-grid" id="softwareGrid">
        <!-- JS 动态生成 -->
      </div>

      <div class="empty-state" id="emptyState" style="display:none;">
        <svg viewBox="0 0 120 120" width="80" height="80" opacity="0.3">
          <circle cx="60" cy="60" r="50" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="8 8"/>
          <path d="M45 55a15 15 0 1 1 30 0c0 8-7 12-7 20h-16c0-8-7-12-7-20z" fill="none" stroke="currentColor" stroke-width="2"/>
          <line x1="52" y1="85" x2="68" y2="85" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
        </svg>
        <h3>未找到匹配的软件</h3>
        <p>试试其他关键词或切换分类</p>
      </div>
    </div>
  </section>

  <!-- 关于区域 -->
  <section class="about-section" id="about">
    <div class="container">
      <div class="about-card">
        <div class="about-content">
          <div class="about-badge">关于本站</div>
          <h2 class="about-title">干净 · 安全 · 无捆绑</h2>
          <p class="about-text">
            SoftHub 是一个个人维护的软件下载分享站。所有软件均经过实际安装测试，
            确保不含恶意插件、广告捆绑或不必要的附加程序。我们的目标是提供一个
            纯净、高效的软件获取渠道。
          </p>
          <div class="about-features">
            <div class="feature-item">
              <div class="feature-icon">
                <svg viewBox="0 0 24 24" width="22" height="22"><path d="M9 12l2 2 4-4M12 3l8 4v5c0 5-3.5 9-8 10-4.5-1-8-5-8-10V7l8-4z" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </div>
              <div>
                <div class="feature-name">安全检测</div>
                <div class="feature-desc">所有软件均通过安全扫描</div>
              </div>
            </div>
            <div class="feature-item">
              <div class="feature-icon">
                <svg viewBox="0 0 24 24" width="22" height="22"><path d="M13 2L3 14h7v8l10-12h-7V2z" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </div>
              <div>
                <div class="feature-name">高速下载</div>
                <div class="feature-desc">直链下载，无需等待</div>
              </div>
            </div>
            <div class="feature-item">
              <div class="feature-icon">
                <svg viewBox="0 0 24 24" width="22" height="22"><path d="M21 12a9 9 0 1 1-9-9c2.5 0 4.8 1 6.4 2.6M21 4v5h-5" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>
              </div>
              <div>
                <div class="feature-name">持续更新</div>
                <div class="feature-desc">跟进最新版本发布</div>
              </div>
            </div>
          </div>
        </div>
        <div class="about-visual">
          <div class="terminal-window">
            <div class="terminal-header">
              <span class="dot dot-red"></span>
              <span class="dot dot-yellow"></span>
              <span class="dot dot-green"></span>
              <span class="terminal-title">softHub — download</span>
            </div>
            <div class="terminal-body">
              <div class="line"><span class="prompt">$</span> curl -sL softhub.io/get</div>
              <div class="line"><span class="comment"># 正在连接服务器...</span></div>
              <div class="line"><span class="comment"># 校验文件完整性 ✓</span></div>
              <div class="line"><span class="comment"># 安全扫描通过 ✓</span></div>
              <div class="line"><span class="success">✓ 下载完成 — 100%</span></div>
              <div class="line"><span class="prompt">$</span> <span class="cursor">_</span></div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </section>

  <!-- 页脚 -->
  <footer class="footer">
    <div class="container">
      <div class="footer-content">
        <div class="footer-brand">
          <a href="#" class="logo">
            <div class="logo-icon">
              <svg viewBox="0 0 32 32" width="24" height="24">
                <rect x="4" y="4" width="24" height="24" rx="6" fill="none" stroke="url(#logoGrad2)" stroke-width="2"/>
                <path d="M11 16h10M16 11v10" stroke="url(#logoGrad2)" stroke-width="2.5" stroke-linecap="round"/>
                <defs>
                  <linearGradient id="logoGrad2" x1="0" y1="0" x2="32" y2="32">
                    <stop offset="0%" stop-color="#2563eb"/>
                    <stop offset="100%" stop-color="#06b6d4"/>
                  </linearGradient>
                </defs>
              </svg>
            </div>
            <span class="logo-text">Soft<span class="logo-accent">Hub</span></span>
          </a>
          <p class="footer-desc">个人软件下载分享站 · 干净安全无捆绑</p>
        </div>
        <div class="footer-links">
          <div class="footer-col">
            <h4>导航</h4>
            <a href="#home">首页</a>
            <a href="#software">软件库</a>
            <a href="#categories">分类</a>
          </div>
          <div class="footer-col" id="footerCategories">
            <h4>分类</h4>
          </div>
          <div class="footer-col">
            <h4>关于</h4>
            <a href="#about">关于本站</a>
            <a href="#">使用条款</a>
            <a href="#">联系作者</a>
          </div>
        </div>
      </div>
      <div class="footer-bottom">
        <p>&copy; 2026 SoftHub · 仅供学习交流使用</p>
        <p class="footer-icp"><a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener">赣ICP备2024022490号-1</a></p>
        <div class="footer-links-row">
          <!-- P0: 移除暴露的 admin.html 链接，改为 JS 动态注入（仅本地访问时显示） -->
          <p class="footer-tech">Built with <span class="heart">♥</span> & code</p>
        </div>
      </div>
    </div>
  </footer>

  <!-- 软件详情弹窗 -->
  <div class="modal-overlay" id="modalOverlay" role="dialog" aria-modal="true" aria-label="软件详情">
    <div class="modal" id="softwareModal">
      <button class="modal-close" id="modalClose" aria-label="关闭">
        <svg viewBox="0 0 24 24" width="22" height="22"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
      </button>
      <div class="modal-content" id="modalContent">
        <!-- JS 动态生成 -->
      </div>
    </div>
  </div>

  <!-- 回到顶部 -->
  <button class="back-to-top" id="backToTop" aria-label="回到顶部">
    <svg viewBox="0 0 24 24" width="20" height="20"><path d="M12 20V6M6 12l6-6 6 6" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
  </button>

  <!-- 分类密码弹窗 -->
  <div class="modal-overlay" id="pwdOverlay" role="dialog" aria-modal="true" aria-label="分类密码验证">
    <div class="modal pwd-modal">
      <button class="modal-close" id="pwdClose" aria-label="关闭">
        <svg viewBox="0 0 24 24" width="22" height="22"><path d="M6 6l12 12M18 6L6 18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg>
      </button>
      <div class="pwd-modal-body">
        <div class="pwd-lock-icon">
          <svg viewBox="0 0 24 24" width="32" height="32"><rect x="5" y="11" width="14" height="10" rx="2" stroke="currentColor" stroke-width="2" fill="none"/><path d="M8 11V7a4 4 0 0 1 8 0v4" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round"/></svg>
        </div>
        <h3 class="pwd-title">该分类已加密</h3>
        <p class="pwd-subtitle" id="pwdSubtitle">请输入访问密码</p>
        <input type="password" class="pwd-input" id="pwdInput" placeholder="输入密码" autocomplete="off" aria-label="访问密码">
        <p class="pwd-error" id="pwdError"></p>
        <button class="btn btn-primary pwd-submit" id="pwdSubmit">
          <svg viewBox="0 0 24 24" width="16" height="16"><path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
          确认进入
        </button>
      </div>
    </div>
  </div>

  <!-- P1: 添加 defer 优化脚本加载 -->
  <script src="js/data.js?v=20260811c" defer></script>
  <script src="js/app.js?v=20260811c" defer></script>
</body>
</html>
