/* ============================================================
   ZO论坛盒子官网 · 前台样式（iOS 风格 · 深浅主题 · 移动端防放大）
   ============================================================ */

/* ---------- 主题变量 ---------- */
:root, html[data-theme="light"]{
  --bg:#F2F2F7; --card:#FFFFFF; --card2:#FFFFFF; --line:#E5E7EB; --txt:#172033; --muted:#8E8E93;
  --accent:#3B82F6; --accent2:#8B5CF6; --grad:linear-gradient(135deg,#3B82F6,#8B5CF6);
  --glass:rgba(255,255,255,.72); --shadow:0 8px 24px rgba(17,24,39,.06);
  --skeleton:#E2E8F0; --code-bg:#F1F5F9;
}
html[data-theme="dark"]{
  --bg:#1C1C1E; --card:#2C2C2E; --card2:#333337; --line:#3A3A3C; --txt:#F2F2F7; --muted:#98989F;
  --accent:#60A5FA; --accent2:#A78BFA; --grad:linear-gradient(135deg,#60A5FA,#A78BFA);
  --glass:rgba(28,28,30,.72); --shadow:0 8px 24px rgba(0,0,0,.35);
  --skeleton:#3A3A3C; --code-bg:#242426;
}

/* ---------- 基础 · 移动端防放大硬性规范 ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--txt);line-height:1.6;overflow-x:hidden;transition:background .25s,color .25s}
img{max-width:100%;height:auto}
a{color:var(--accent);text-decoration:none}
input,textarea,select{font-size:16px;font-family:inherit;width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:12px;outline:none;background:var(--card);color:var(--txt);-webkit-appearance:none;appearance:none}
input:focus,textarea:focus,select:focus{border-color:var(--accent)}
input[type=checkbox],input[type=radio]{width:auto}
select{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:36px}
button{font-family:inherit}

/* ---------- 通用组件 ---------- */
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
main{min-height:60vh}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.glass{background:var(--glass);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 22px;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;border:none;text-decoration:none;color:#fff;background:var(--grad);transition:transform .12s,opacity .2s;box-shadow:0 4px 14px rgba(59,130,246,.25)}
.btn:hover{opacity:.92}
.btn:active{transform:scale(.97)}
.btn-sm{min-height:38px;padding:0 16px;font-size:14px;border-radius:10px}
.btn-lg{min-height:52px;padding:0 30px;font-size:17px;border-radius:14px}
.btn-ghost{background:var(--card);color:var(--accent);border:1px solid var(--line);box-shadow:none}
.link-more{font-size:14px;font-weight:600}
.center{text-align:center;margin-top:16px}
.empty{color:var(--muted);text-align:center;padding:34px 16px;font-size:14px}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:60;border-bottom:1px solid var(--line)}
.topbar-inner{max-width:1080px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;gap:18px}
.brand{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700;color:var(--txt)}
.brand img.brand-logo{height:28px;width:auto}
.nav{display:flex;gap:4px;flex:1}
.nav a{padding:9px 13px;border-radius:10px;color:var(--muted);font-size:14px;font-weight:500;transition:background .15s,color .15s}
.nav a:hover{background:rgba(128,128,128,.12);color:var(--txt)}
.topbar-actions{display:flex;align-items:center;gap:10px}
.theme-toggle{width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--txt);font-size:18px;cursor:pointer}
.hamburger{display:none;width:44px;height:44px;border:none;border-radius:12px;background:var(--card);cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px}
.hamburger span{width:20px;height:2px;background:var(--txt);border-radius:2px}
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.hamburger.open span:nth-child(2){opacity:0}
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- Hero ---------- */
.hero{position:relative;overflow:hidden;padding:80px 20px 60px;text-align:center}
.hero-deco{position:absolute;inset:0;background:radial-gradient(600px 300px at 30% 0%,rgba(59,130,246,.14),transparent),radial-gradient(500px 260px at 75% 15%,rgba(139,92,246,.14),transparent);pointer-events:none}
.hero-inner,.hero-visual{position:relative;max-width:1080px;margin:0 auto}
.hero-title{font-size:44px;font-weight:800;letter-spacing:-.5px;margin-bottom:10px}
.hero-sub{font-size:17px;color:var(--muted);max-width:600px;margin:0 auto 26px}
.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.hero-meta{margin-top:14px;font-size:13px;color:var(--muted)}
.hero-visual{max-width:560px;margin-top:44px}
.mock-window{border:1px solid var(--line);border-radius:16px;overflow:hidden;text-align:left}
.mock-bar{display:flex;gap:6px;padding:10px 14px;background:var(--card2)}
.mock-bar span{width:10px;height:10px;border-radius:50%;background:#FCA5A5}
.mock-bar span:nth-child(2){background:#FDE68A}
.mock-bar span:nth-child(3){background:#86EFAC}
.mock-body{display:flex;min-height:180px}
.mock-side{width:34%;background:var(--card2);border-right:1px solid var(--line)}
.mock-main{flex:1;padding:14px}
.mock-line{height:12px;border-radius:6px;background:var(--skeleton);margin-bottom:10px;width:90%}
.mock-line.short{width:55%}

/* ---------- 数据背书 ---------- */
.stats-band{background:var(--card);border-block:1px solid var(--line)}
.stats-inner{max-width:1080px;margin:0 auto;padding:26px 20px;display:flex;justify-content:space-around;gap:12px;flex-wrap:wrap}
.stat{text-align:center;min-width:120px}
.stat-value{font-size:28px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.stat-label{font-size:13px;color:var(--muted);margin-top:2px}

/* ---------- 区块 ---------- */
.section{max-width:1080px;margin:0 auto;padding:56px 20px}
.page-head{padding:40px 20px 10px}
.section-head{text-align:center;margin-bottom:30px}
.section-head h2{font-size:28px;font-weight:800;margin-bottom:6px}
.section-head p{color:var(--muted);font-size:14px}
.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.feature-card{padding:22px;text-align:center}
.feature-icon{font-size:34px;margin-bottom:10px}
.feature-card h3{font-size:17px;margin-bottom:6px}
.feature-card p{font-size:13px;color:var(--muted)}
.feature-img{border-radius:10px;margin-top:12px;cursor:zoom-in}

/* ---------- 版本/下载 ---------- */
.version-card,.download-hero{padding:22px}
.version-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.version-title{font-size:19px;font-weight:700;margin-right:8px}
.version-no{font-size:15px;color:var(--accent);font-weight:700}
.version-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:10px}
.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;vertical-align:middle}
.badge-latest{background:var(--grad);color:#fff}
.badge-top{background:#FEF3C7;color:#B45309}
.checksum{margin-top:10px;background:var(--code-bg);border-radius:10px;padding:0 12px;font-size:13px}
.checksum summary{cursor:pointer;padding:10px 0;font-weight:600;color:var(--accent)}
.checksum p{margin:0 0 6px;color:var(--muted);word-break:break-all}
.checksum code{display:block;word-break:break-all;background:var(--card);padding:6px 8px;border-radius:6px;margin-top:2px}
.changelog{margin-top:12px;font-size:14px;color:var(--muted)}
.changelog blockquote{border-left:3px solid var(--accent);padding-left:10px;margin:8px 0;color:var(--txt)}
.history-row{display:flex;justify-content:space-between;gap:14px;padding:18px;margin-bottom:12px;align-items:center;flex-wrap:wrap}
.history-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;margin-bottom:6px}
.download-hero{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.download-icon{font-size:40px;background:var(--code-bg);width:76px;height:76px;border-radius:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.download-info{flex:1;min-width:220px}
.download-info h3{font-size:20px;margin-bottom:6px}
.download-stats{font-size:13px;color:var(--accent);font-weight:600}
.download-action{display:flex;gap:10px;flex-direction:column}
.checksum-inline{font-size:12px;color:var(--muted);word-break:break-all;margin-top:6px}
.checksum-inline code{background:var(--code-bg);padding:2px 6px;border-radius:5px}
.security-tip{padding:22px}
.security-tip h3{font-size:17px;margin-bottom:10px}
.security-tip ul{padding-left:20px;font-size:14px;color:var(--muted)}
.security-tip li{margin-bottom:6px}

/* ---------- 平台切换 ---------- */
.platform-tabs{max-width:1080px;margin:0 auto;display:flex;gap:8px;justify-content:center;padding:10px 20px;flex-wrap:wrap}
.platform-tab{padding:11px 24px;border:1px solid var(--line);border-radius:12px;background:var(--card);cursor:pointer;font-size:15px;color:var(--muted);font-weight:600}
.platform-tab.cur{color:#fff;background:var(--grad);border:none}
.hidden{display:none}
.req-table-wrap{overflow-x:auto}
.req-table{width:100%;border-collapse:collapse;background:var(--card);border-radius:16px;overflow:hidden}
.req-table th{background:var(--card2);padding:13px 14px;text-align:left;font-size:14px;border-bottom:1px solid var(--line)}
.req-table td{padding:12px 14px;font-size:14px;border-bottom:1px solid var(--line)}

/* ---------- 公告 ---------- */
.cat-filter{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:24px}
.cat-pill{padding:9px 18px;border-radius:20px;border:1px solid var(--line);background:var(--card);font-size:14px;color:var(--muted)}
.cat-pill.cur{color:#fff;background:var(--grad);border:none;font-weight:600}
.news-list{display:flex;flex-direction:column;gap:12px}
.news-row{display:block;padding:16px 18px}
.news-title{font-size:16px;font-weight:600;margin-bottom:6px}
.news-meta{display:flex;gap:12px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.news-cat{color:var(--accent);font-weight:600}
.article{padding:30px}
.article-head{margin-bottom:18px;border-bottom:1px solid var(--line);padding-bottom:16px}
.article-title{font-size:26px;font-weight:800;line-height:1.4;margin-top:10px}
.article-body{font-size:15px;line-height:1.9;word-break:break-word}
.article-body img{border-radius:12px;margin:12px 0;cursor:zoom-in}
.article-body blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:12px 0;color:var(--muted)}
.article-body pre{background:var(--code-bg);border-radius:10px;padding:14px;overflow-x:auto;margin:12px 0;font-size:13px}
.article-nav{display:flex;justify-content:space-between;margin-top:24px;gap:12px;flex-wrap:wrap}

/* ---------- 反馈 ---------- */
.narrow{max-width:620px}
.narrow .card{padding:26px 22px}
.item{margin-bottom:18px}
.item label{display:block;font-size:14px;color:var(--txt);opacity:.78;margin-bottom:8px;font-weight:600}
.item input,.item textarea,.item select{min-height:48px}
.item textarea{min-height:140px;line-height:1.6;resize:vertical}
.form-err{background:#FDECEC;color:#DC2626;padding:12px 14px;border-radius:12px;font-size:14px;margin-bottom:16px}
.captcha-row .captcha-inline{display:flex;gap:10px;align-items:stretch}
.captcha-inline input{flex:1}
.captcha-code{display:inline-flex;align-items:center;justify-content:center;height:48px;min-width:104px;padding:0 16px;border-radius:12px;background:var(--grad);color:#fff;font-weight:800;font-size:18px;letter-spacing:3px;user-select:none}
.narrow .btn{width:100%}
.feedback-form-foot{margin-top:6px;text-align:center;font-size:13px;color:var(--muted)}
.feedback-form-foot a{color:var(--accent)}
.success-box{text-align:center;padding:20px}
.success-icon{width:64px;height:64px;border-radius:50%;background:#E9F9EF;color:#15803D;font-size:30px;display:flex;align-items:center;justify-content:center;margin:0 auto 12px}
.ticket-code{letter-spacing:1px;color:var(--accent)}
.ticket-result{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}
.ticket-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ticket-item{margin-bottom:8px;font-size:14px}
.ticket-reply{background:#E9F9EF;border-radius:10px;padding:12px;margin-top:10px;font-size:14px}

/* ---------- 404 ---------- */
.notfound{text-align:center;padding:90px 20px}
.nf-code{font-size:88px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1}
.notfound h1{font-size:26px;margin:18px 0 8px}
.notfound p{color:var(--muted);margin-bottom:26px;font-size:15px}
.notfound .hero-actions{justify-content:center}

/* ---------- 分页 / 页脚 ---------- */
.zo-pager{display:flex;gap:8px;justify-content:center;margin-top:26px;align-items:center;flex-wrap:wrap}
.zo-pager a,.zo-pager span{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:var(--card);color:var(--txt)}
.zo-pager .cur{background:var(--grad);color:#fff;border:none;font-weight:700}
.footer{margin-top:40px;border-top:1px solid var(--line);background:var(--card)}
.footer-inner{max-width:1080px;margin:0 auto;padding:30px 20px 36px;text-align:center}
.footer-links{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:14px}
.footer-links a{color:var(--muted);font-size:13px}
.footer-links a:hover{color:var(--txt)}
.footer-text{font-size:13px;color:var(--muted);margin-bottom:6px}
.footer-icp{font-size:12px;color:var(--muted)}
.footer-icp a{color:var(--muted)}

/* ---------- 回到顶部 ---------- */
.backtop{position:fixed;right:18px;bottom:24px;width:48px;height:48px;border-radius:14px;border:none;background:var(--grad);color:#fff;font-size:20px;cursor:pointer;box-shadow:0 6px 18px rgba(59,130,246,.35);opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s;z-index:70}
.backtop.show{opacity:1;visibility:visible}

/* ---------- 滚动进场动画 ---------- */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
html[data-anim="off"] .reveal{opacity:1;transform:none}

/* ---------- 灯箱 ---------- */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:100;display:none;align-items:center;justify-content:center;padding:20px;cursor:zoom-out}
.lightbox.show{display:flex}
.lightbox img{max-width:100%;max-height:92vh;border-radius:8px}
.lightbox .lb-close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;font-size:18px;cursor:pointer}

/* ---------- Toast ---------- */
.toast{position:fixed;left:50%;top:20px;transform:translateX(-50%) translateY(-20px);background:var(--txt);color:var(--bg);padding:12px 22px;border-radius:12px;font-size:14px;opacity:0;visibility:hidden;transition:all .3s;z-index:120;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:90vw;text-align:center}
.toast.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}

/* ---------- 骨架屏 ---------- */
.skeleton{position:relative;overflow:hidden;background:var(--skeleton);border-radius:10px}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.4s infinite}
@keyframes shimmer{100%{transform:translateX(100%)}}

/* ---------- 移动端 ---------- */
@media (max-width:768px){
  .nav{position:fixed;top:60px;left:0;right:0;background:var(--card);border-bottom:1px solid var(--line);flex-direction:column;padding:12px 16px;gap:2px;display:none;box-shadow:var(--shadow)}
  .nav.open{display:flex}
  .nav a{padding:13px 14px;font-size:16px}
  .hamburger{display:flex}
  .hero{padding:56px 20px 44px}
  .hero-title{font-size:34px}
  .section{padding:40px 16px}
  .section-head h2{font-size:23px}
  .article{padding:18px}
  .article-title{font-size:20px}
  .feature-grid{grid-template-columns:1fr 1fr}
  .download-hero{gap:14px}
  .download-icon{width:64px;height:64px;font-size:32px}
  .version-head{align-items:flex-start;flex-direction:column}
  .history-row{flex-direction:column;align-items:flex-start}
  .stat-value{font-size:22px}
  .stats-inner{gap:8px}
}
@media (max-width:400px){
  .feature-grid{grid-template-columns:1fr}
  .btn-lg{padding:0 22px}
}
