/* 产品固定模板正文；通栏首屏与网格由 product-layout.css 统一维护。 */
/* 正文分区 */
.ql-pp-section { margin:0; padding:0; }
.dark .ql-pp-section { border-color:#334155; }
.ql-pp-h2 { margin:0 0 20px; color:#0f172a; font-size:28px; font-weight:650; letter-spacing:-.02em; }
.dark .ql-pp-h2 { color:#f8fafc; }

/* 下载链接卡片 */
.ql-pp-downloads { display:grid; gap:16px; }
@media (min-width:640px) { .ql-pp-downloads { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.ql-pp-dl { display:flex; flex-direction:column; gap:12px; border:1px solid #e2e8f0; border-radius:24px; padding:28px; background:#fff; }
.dark .ql-pp-dl { border-color:#334155; background:#0f172a; }
.ql-pp-dl-head { display:flex; align-items:center; gap:14px; }
.ql-pp-dl-icon { display:inline-flex; flex:none; align-items:center; justify-content:center; width:44px; height:44px; border-radius:12px; background:#eff6ff; color:#2563eb; }
.ql-pp-dl-icon svg { width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
/* 官方图标保留原色和比例，浅深主题均使用白色底托保证品牌可辨认。 */
.ql-pp-dl-icon img { display:block; width:32px; height:32px; object-fit:contain; border-radius:8px; }
.ql-pp-dl-icon:has(img), .dark .ql-pp-dl-icon:has(img) { background:#fff; box-shadow:inset 0 0 0 1px #e2e8f0; }

.ql-pp-dl-app_store { background:#0f172a; color:#fff; }
.dark .ql-pp-dl-icon { background:#172554; color:#93c5fd; }
.dark .ql-pp-dl-app_store { background:#f8fafc; color:#0f172a; }
.ql-pp-dl-channel { margin:0; color:#64748b; font-size:12px; font-weight:600; letter-spacing:.04em; }
.ql-pp-dl-title { margin:2px 0 0; color:#0f172a; font-size:17px; font-weight:650; line-height:1.4; overflow-wrap:anywhere; }
.dark .ql-pp-dl-title { color:#f8fafc; }
.ql-pp-dl-note { margin:0; color:#475569; font-size:14px; line-height:1.7; overflow-wrap:anywhere; }
.dark .ql-pp-dl-note { color:#cbd5e1; }
.ql-pp-dl-code { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0; color:#475569; font-size:14px; }
.dark .ql-pp-dl-code { color:#cbd5e1; }
.ql-pp-dl-code code { border-radius:8px; padding:3px 8px; background:#f1f5f9; color:#0f172a; font-size:14px; letter-spacing:.06em; }
.dark .ql-pp-dl-code code { background:#1e293b; color:#f8fafc; }
.ql-pp-dl-code button { min-height:32px; border:1px solid #cbd5e1; border-radius:999px; padding:0 12px; background:#fff; color:#334155; font-size:13px; font-weight:600; cursor:pointer; }
.ql-pp-dl-code button:hover { background:#f8fafc; }
.dark .ql-pp-dl-code button { border-color:#475569; background:#0f172a; color:#e2e8f0; }
.ql-pp-btn { display:inline-flex; align-items:center; justify-content:center; gap:4px; min-height:44px; margin-top:auto; border-radius:var(--ql-button-radius,999px); padding:10px 20px; background:#0071e3; color:#fff; font-size:14px; font-weight:600; text-decoration:none; transition:background .15s, transform .15s; }
/* 下载按钮前置图标跟随文字颜色，固定尺寸防止窄屏挤压。 */
.ql-pp-btn-icon { flex:none; width:16px; height:16px; margin-right:4px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
/* 全站会隐藏链接中 aria-hidden 的装饰元素，下载按钮前置图标需单独显示。 */
main a.ql-pp-btn > svg.ql-pp-btn-icon[aria-hidden=true] { display:block !important; }
.ql-pp-btn:hover { background:#0077ed; transform:translateY(-1px); }
.ql-pp-btn:focus-visible, .ql-pp-dl-code button:focus-visible, .ql-pp-brand:focus-visible { outline:3px solid rgb(59 130 246 / .45); outline-offset:3px; }
.dark .ql-pp-btn { background:#2563eb; }
.dark .ql-pp-btn:hover { background:#3b82f6; }

/* 空状态（即将提供下载 / 暂无记录） */
.ql-pp-empty { border:1px dashed #cbd5e1; border-radius:18px; padding:36px 24px; background:#f8fafc; text-align:center; }
.dark .ql-pp-empty { border-color:#475569; background:#1e293b; }
.ql-pp-empty svg { width:36px; height:36px; margin:0 auto 10px; fill:none; stroke:#2563eb; stroke-width:1.8; stroke-linecap:round; }
.ql-pp-empty h3 { margin:0; color:#0f172a; font-size:18px; font-weight:650; }
.dark .ql-pp-empty h3 { color:#f8fafc; }
.ql-pp-empty p { margin:8px 0 0; color:#64748b; font-size:15px; line-height:1.7; }

/* 系统要求 / 最新版本 */
.ql-pp-facts { display:grid; gap:0; margin:24px 0 0; border:1px solid #e2e8f0; border-radius:18px; overflow:hidden; }
.dark .ql-pp-facts { border-color:#334155; }
.ql-pp-facts > div { display:grid; gap:4px; padding:16px 20px; border-top:1px solid #e2e8f0; }
.ql-pp-facts > div:first-child { border-top:0; }
.dark .ql-pp-facts > div { border-color:#334155; }
@media (min-width:640px) { .ql-pp-facts > div { grid-template-columns:150px minmax(0,1fr); gap:16px; } }
.ql-pp-facts dt { color:#64748b; font-size:14px; font-weight:600; }
.ql-pp-facts dd { margin:0; color:#0f172a; font-size:15px; line-height:1.7; }
.dark .ql-pp-facts dd { color:#e2e8f0; }
.ql-pp-facts a { margin-left:6px; color:#2563eb; font-weight:600; text-decoration:none; white-space:nowrap; }
.ql-pp-facts a:hover { text-decoration:underline; text-underline-offset:3px; }
.dark .ql-pp-facts a { color:#60a5fa; }

/* 更新记录：开放式版本时间线，与通栏正文直接对齐。 */
.ql-cl-card { width:100%; }
@media (min-width:640px) { .ql-cl-step { column-gap:14px; } .ql-cl-actions { grid-template-columns:repeat(2,minmax(0,1fr)); } }
.ql-cl-top { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 12px; margin-bottom:26px; }
.ql-cl-pill { display:inline-flex; align-items:center; min-height:36px; margin:0; border:1px solid #e2e8f0; border-radius:999px; padding:0 14px; background:#fff; box-shadow:0 2px 6px -2px rgb(15 23 42 / .15); color:#0f172a; font-size:14px; white-space:nowrap; font-weight:600; line-height:1; }
.dark .ql-cl-pill { border-color:#3b4a60; background:#334155; box-shadow:none; color:#f1f5f9; }
.ql-cl-status { display:inline-flex; align-items:center; gap:6px; min-height:30px; border:1px solid transparent; border-radius:999px; padding:0 12px 0 8px; background:#dcfce7; color:#14532d; font-size:14px; font-weight:600; white-space:nowrap; font-variant-numeric:tabular-nums; }
.ql-cl-status svg { width:18px; height:18px; flex:none; }
.ql-cl-status svg circle { fill:#14532d; stroke:none; }
.ql-cl-status svg path { fill:none; stroke:#dcfce7; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
.dark .ql-cl-status { border-color:#22c55e; background:#14532d; color:#dcfce7; }
.dark .ql-cl-status svg circle { fill:#f0fdf4; }
.dark .ql-cl-status svg path { stroke:#14532d; }

.ql-cl-list { margin:0; padding:0; list-style:none; }
/* 圆点 40px，中心 x=20px；竖线在圆点之间留 8px 空隙，与下一个圆点同一中轴 */
.ql-cl-step { position:relative; display:grid; grid-template-columns:40px minmax(0,1fr); column-gap:12px; padding-bottom:30px; }
.ql-cl-step:last-child { padding-bottom:0; }
.ql-cl-step:not(:last-child)::before { content:""; position:absolute; top:48px; bottom:8px; left:19.5px; width:1px; background:#cbd5e1; }
.dark .ql-cl-step:not(:last-child)::before { background:#64748b; }
.ql-cl-dot { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border:1px solid #e2e8f0; border-radius:999px; background:#f1f5f9; color:#14532d; }
.ql-cl-dot svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.dark .ql-cl-dot { border-color:#475569; background:#334155; color:#4ade80; }
.ql-cl-main { min-width:0; }
/* 标题行高 28px，上内边距 6px → 标题中线与 40px 圆点中线重合 */
.ql-cl-head { display:flex; flex-direction:column; gap:2px; padding-top:6px; }
@media (min-width:640px) { .ql-cl-head { flex-direction:row; align-items:flex-start; justify-content:space-between; gap:16px; } }
.ql-cl-title { margin:0; min-width:0; color:#0f172a; font-size:18px; font-weight:650; line-height:28px; overflow-wrap:anywhere; }
.dark .ql-cl-title { color:#f8fafc; }
.ql-cl-ver { font-variant-numeric:tabular-nums; }
.ql-cl-sep { color:#94a3b8; font-weight:500; }
.ql-cl-new { display:inline-flex; vertical-align:2px; border-radius:999px; padding:1px 8px; background:#dbeafe; color:#1e40af; font-size:12px; font-weight:600; line-height:18px; }
.dark .ql-cl-new { background:#172554; color:#93c5fd; }
.ql-cl-date { flex:none; color:#15803d; font-size:14px; font-weight:500; line-height:22px; white-space:nowrap; font-variant-numeric:tabular-nums; }
@media (min-width:640px) { .ql-cl-date { line-height:28px; } }
.dark .ql-cl-date { color:#86efac; }
.ql-cl-desc { margin:6px 0 0; color:#475569; font-size:15px; line-height:1.75; overflow-wrap:anywhere; }
.dark .ql-cl-desc { color:#cbd5e1; }

.ql-cl-actions { display:grid; gap:12px; margin-top:30px; }
.ql-cl-btn { display:flex; align-items:center; justify-content:center; gap:8px; min-height:52px; border:1px solid transparent; border-radius:999px; padding:10px 20px; font-size:16px; font-weight:600; text-decoration:none; transition:background .15s, border-color .15s, transform .15s; }
/* site.css 全站隐藏 main a>[aria-hidden]（箭头装饰），这里的按钮图标需要显示 */
main a.ql-cl-btn > svg[aria-hidden=true] { display:block !important; }
.ql-cl-btn svg { width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.ql-cl-btn:hover { transform:translateY(-1px); }
.ql-cl-btn:focus-visible { outline:3px solid rgb(59 130 246 / .45); outline-offset:3px; }
.ql-cl-btn-secondary { border-color:#e2e8f0; background:linear-gradient(#fff,#f1f5f9); box-shadow:0 6px 14px -8px rgb(15 23 42 / .3); color:#0f172a; }
.ql-cl-btn-secondary:hover { background:#f8fafc; }
.dark .ql-cl-btn-secondary { border-color:#64748b; background:linear-gradient(#334155,#1e293b); box-shadow:inset 0 1px 0 rgb(255 255 255 / .06); color:#f1f5f9; }
.dark .ql-cl-btn-secondary:hover { background:#334155; }
.ql-cl-btn-primary { border-color:#93c5fd; background:#bfdbfe; box-shadow:0 6px 14px -8px rgb(37 99 235 / .45); color:#0f172a; }
.ql-cl-btn-primary:hover { background:#93c5fd; }
.dark .ql-cl-btn-primary { border-color:#3b82f6; background:#1e3a5f; box-shadow:none; color:#dbeafe; }
.dark .ql-cl-btn-primary:hover { background:#1e4b7a; }

/* 隐私正文 */
.ql-pp-updated { margin:0 0 20px; color:#64748b; font-size:14px; }
.ql-pp-notice { margin:0 0 20px; border-radius:12px; padding:10px 14px; background:#fef3c7; color:#92400e; font-size:14px; }
.dark .ql-pp-notice { background:#422006; color:#fcd34d; }
.ql-pp-prose { width:100%; max-width:none; color:#334155; font-size:16px; line-height:1.9; overflow-wrap:anywhere; }
.dark .ql-pp-prose { color:#cbd5e1; }
.ql-pp-prose h2 { margin:36px 0 12px; color:#0f172a; font-size:22px; font-weight:650; line-height:1.4; }
.ql-pp-prose h3 { margin:28px 0 8px; color:#0f172a; font-size:18px; font-weight:650; line-height:1.45; }
.ql-pp-prose > :first-child { margin-top:0; }
.dark .ql-pp-prose h2, .dark .ql-pp-prose h3, .dark .ql-pp-prose strong { color:#f8fafc; }
.ql-pp-prose p, .ql-pp-prose ul, .ql-pp-prose ol { margin:0 0 14px; }
.ql-pp-prose ul, .ql-pp-prose ol { padding-left:22px; }
.ql-pp-prose ul { list-style:disc; }
.ql-pp-prose ol { list-style:decimal; }
.ql-pp-prose a { color:#2563eb; text-decoration:underline; text-underline-offset:3px; }
.dark .ql-pp-prose a { color:#60a5fa; }
.ql-pp-prose strong { color:#0f172a; }
.ql-pp-prose code { border-radius:6px; padding:1px 6px; background:#f1f5f9; font-size:.9em; }
.dark .ql-pp-prose code { background:#1e293b; }

/* 隐私章节与顶部内容区共用左右边界，不再叠加内部限宽。 */
.ql-pp-privacy .ql-pp-section { width:100%; max-width:none; }
/* 隐私 Markdown 二级章节内嵌三级折叠，小节保持独立开关和原来的左右边界。 */
.ql-policy-section, .ql-policy-subsection { border-bottom:1px solid #e2e8f0; }
.ql-policy-section:first-of-type { border-top:1px solid #e2e8f0; }
:is(.ql-policy-section,.ql-policy-subsection) > summary { padding:20px 0; cursor:pointer; list-style:none; }
:is(.ql-policy-section,.ql-policy-subsection) > summary::-webkit-details-marker { display:none; }
:is(.ql-policy-section,.ql-policy-subsection) > summary::marker { content:""; }
:is(.ql-policy-section,.ql-policy-subsection) > summary :is(h2,h3) { display:flex; align-items:center; justify-content:space-between; gap:20px; margin:0; font-size:18px; line-height:1.6; }
:is(.ql-policy-section,.ql-policy-subsection) > summary span { min-width:0; }
:is(.ql-policy-section,.ql-policy-subsection) > summary svg { flex:none; width:20px; height:20px; fill:none; stroke:#64748b; stroke-width:1.7; stroke-linecap:round; transition:transform .15s; }
:is(.ql-policy-section,.ql-policy-subsection)[open] > summary svg { transform:rotate(45deg); }
:is(.ql-policy-section,.ql-policy-subsection) > summary:hover :is(h2,h3) { color:#2563eb; }
:is(.ql-policy-section,.ql-policy-subsection) > summary:focus-visible { outline:3px solid #93c5fd; outline-offset:4px; border-radius:4px; }
.ql-policy-subsection > summary { padding-block:14px; }
.ql-policy-subsection > summary h3 { font-size:16px; }
.ql-policy-subsection:last-child { border-bottom:0; }
.ql-policy-content { width:100%; max-width:none; padding:0 0 24px; }
.ql-policy-content > :first-child { margin-top:0; }
.ql-policy-content > :last-child { margin-bottom:0; }
.ql-pp-prose .ql-policy-title { margin:0 0 20px; }
.dark :is(.ql-policy-section,.ql-policy-subsection) { border-color:#334155; }
.dark :is(.ql-policy-section,.ql-policy-subsection) > summary:hover :is(h2,h3) { color:#60a5fa; }
.dark :is(.ql-policy-section,.ql-policy-subsection) > summary svg { stroke:#94a3b8; }
@media (max-width:639px) { .ql-pp-dl { padding:22px; border-radius:20px; } .ql-pp-h2 { font-size:24px; } }
