/* 从 local_ai.html 原位迁移，必须保持原有选择器和级联顺序。 */
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; background: #f5f6fa; color: #0f172a; }
    .container { max-width: 1240px; margin: 0 auto; padding-bottom: 48px; }
    .page-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; margin-bottom: 16px; }
    .page-title-row { display: flex; align-items: center; gap: 8px; }
    .page-subtitle { margin-top: 8px; max-width: 760px; color: #6b7280; font-size: 14px; line-height: 1.65; }
    .help-tip { position: relative; width: 22px; height: 22px; border: 1px solid #d7dee8; border-radius: 999px; background: #fff; color: #64748b; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; cursor: help; }
    .help-tip::after { content: attr(data-tip); position: absolute; left: 100%; top: 50%; width: max-content; max-width: none; white-space: nowrap; transform: translate(10px, -50%); opacity: 0; visibility: hidden; pointer-events: none; padding: 10px 12px; border-radius: 10px; border: 1px solid #d7dee8; background: #fff; color: #475569; box-shadow: 0 18px 42px rgba(15,23,42,.16); font-size: 12px; line-height: 1.55; font-weight: 650; z-index: 1000; transition: opacity .14s ease, transform .14s ease, visibility .14s ease; }
    .help-tip:hover::after, .help-tip:focus-visible::after { opacity: 1; visibility: visible; transform: translate(14px, -50%); }
    .head-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
    .btn { height: 36px; border: 1px solid #d1d5db; border-radius: 10px; padding: 0 13px; background: rgba(255,255,255,.9); color: #374151; cursor: pointer; font-weight: 650; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; box-shadow: 0 1px 2px rgba(17,24,39,.03); }
    .btn:hover { background: #f9fafb; border-color: #c5cbd3; }
    .btn-primary { border-color: #7f56d9; background: #7f56d9; color: #fff; }
    .btn-primary:hover { background: #53389e; border-color: #53389e; }
    .btn-ghost { border-color: transparent; background: transparent; box-shadow: none; }
    .btn[disabled] { opacity: .55; cursor: not-allowed; }
    .btn[hidden] { display: none !important; }
    .btn-danger { color: #b42318; border-color: #fecdd3; background: #fffafa; }
    .status-dot { width: 8px; height: 8px; border-radius: 999px; background: #9ca3af; display: inline-block; flex: 0 0 auto; box-shadow: 0 0 0 3px rgba(156,163,175,.14); }
    .status-dot.ok { background: #059669; box-shadow: 0 0 0 3px rgba(5,150,105,.14); }
    .status-dot.warn { background: #d97706; box-shadow: 0 0 0 3px rgba(217,119,6,.14); }
    .status-dot.bad { background: #dc2626; box-shadow: 0 0 0 3px rgba(220,38,38,.14); }
    .status-dot.blue { background: #7f56d9; box-shadow: 0 0 0 3px rgba(127,86,217,.14); }
    .status-pill { min-height: 26px; display: inline-flex; align-items: center; gap: 8px; padding: 0 10px; border-radius: 999px; border: 1px solid #e5e7eb; background: rgba(255,255,255,.78); color: #4b5563; font-size: 12px; font-weight: 650; }
    .init-panel { margin-bottom: 16px; padding: 18px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 420px); gap: 18px; align-items: stretch; border: 1px solid rgba(203,213,225,.9); border-radius: 18px; background: linear-gradient(135deg, rgba(255,255,255,.97), rgba(247,250,252,.94)); box-shadow: 0 16px 42px rgba(15,23,42,.08); }
    .init-main { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 13px; align-items: start; min-width: 0; }
    .init-icon { width: 42px; height: 42px; border-radius: 14px; background: #0f172a; color: #fff; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 10px 22px rgba(17,24,39,.16); }
    .init-icon svg { width: 20px; height: 20px; stroke: currentColor; stroke-width: 2; fill: none; stroke-linecap: round; stroke-linejoin: round; }
    .init-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
    .init-title { color: #0f172a; font-size: 18px; line-height: 1.35; font-weight: 800; }
    .init-desc { color: #4b5563; font-size: 13px; line-height: 1.6; max-width: 720px; }
    .init-model-summary { display: grid; gap: 10px; margin-top: 12px; }
    .init-model-list { display: grid; gap: 8px; }
    .init-model-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 14px; background: #f6f8fc; border: 1px solid #e5e7eb; }
    .init-model-row.downloading { border-color: #b8ddd8; background: #f4fbfa; }
    .init-model-row-main { min-width: 0; }
    .init-model-row-title { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; color: #0f172a; font-size: 13px; line-height: 1.35; font-weight: 800; margin-bottom: 3px; }
    .init-model-row-meta { color: #6b7280; font-size: 12px; font-weight: 650; white-space: nowrap; }
    .init-model-row-meta + .init-model-row-meta::before { content: "·"; margin-right: 10px; color: #c0c7d0; }
    .init-model-row-desc { color: #6b7280; font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
    .init-model-row-state { font-weight: 700; }
    .init-model-row-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
    .comment-download-choice { min-height: 34px; display: inline-flex; align-items: center; gap: 10px; color: #374151; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
    .comment-download-choice:has(input:disabled) { color: #9ca3af; cursor: not-allowed; }
    .init-model-progress-list { display: grid; gap: 8px; }
    .init-model-progress-item { padding: 10px 12px; border-radius: 14px; background: #f6f8fc; border: 1px solid #e5e7eb; }
    .init-model-progress-title { display: flex; justify-content: space-between; gap: 12px; align-items: center; color: #374151; font-size: 12px; font-weight: 700; }
    .init-model-progress-title span:last-child { color: #6b7280; font-weight: 650; }
    .init-side { min-width: 0; display: grid; gap: 12px; align-content: space-between; }
    .init-mode-card { padding: 13px; border-radius: 14px; border: 1px solid #e5e7eb; background: rgba(255,255,255,.82); }
    .init-mode-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; margin-bottom: 6px; }
    .init-mode-title { color: #0f172a; font-size: 14px; font-weight: 760; line-height: 1.35; }
    .init-mode-title-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .init-mode-desc { color: #6b7280; font-size: 12px; line-height: 1.45; }
    /* 按钮在左侧状态区内联展示（语义是检查/驱动基础本地能力状态），不再是右列通栏大 CTA。 */
    .init-actions { display: flex; align-items: center; justify-content: flex-start; gap: 10px; margin-top: 14px; }
    .init-actions .btn { min-height: 40px; padding: 0 20px; border-radius: 10px; font-size: 14px; font-weight: 800; }
    .capability-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
    .capability-card { background: rgba(255,255,255,.9); border: 1px solid rgba(229,231,235,.9); border-radius: 14px; padding: 16px; min-height: 132px; display: flex; flex-direction: column; gap: 12px; box-shadow: 0 10px 28px rgba(17,24,39,.045); backdrop-filter: blur(10px); }
    .capability-top { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
    .capability-name { min-width: 0; }
    .capability-title { font-size: 16px; font-weight: 700; color: #0f172a; }
    .capability-desc { color: #6b7280; font-size: 13px; line-height: 1.55; }
    .capability-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; }
    .capability-actions { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-top: 2px; }
    .status-text { display: inline-flex; align-items: center; gap: 8px; color: #4b5563; font-size: 13px; font-weight: 650; }
    .model-row-list { display: grid; gap: 10px; margin-bottom: 16px; }
    .model-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 13px 14px; border-radius: 14px; background: rgba(255,255,255,.86); border: 1px solid rgba(229,231,235,.9); box-shadow: 0 6px 18px rgba(17,24,39,.035); }
    .model-row.downloading { border-color: #b8ddd8; background: #f4fbfa; }
    .model-row-title { color: #0f172a; font-size: 14px; font-weight: 700; margin-bottom: 4px; }
    .model-row-meta { color: #6b7280; font-size: 12px; line-height: 1.45; }
    .download-progress { margin-top: 8px; display: grid; gap: 6px; }
    .download-progress-line { display: flex; justify-content: space-between; gap: 10px; color: #6b7280; font-size: 12px; line-height: 1.2; }
    .download-progress-line strong { color: #047857; font-weight: 700; white-space: nowrap; }
    .download-progress-track { height: 7px; border-radius: 999px; background: #e6edf0; overflow: hidden; }
    .download-progress-fill { height: 100%; width: 0; border-radius: inherit; background: linear-gradient(90deg, #047857, #059669); transition: width .18s ease; }
    .panel, .model-pack { background: rgba(255,255,255,.9); border: 1px solid rgba(229,231,235,.9); border-radius: 14px; box-shadow: 0 10px 28px rgba(17,24,39,.045); backdrop-filter: blur(10px); }
    body.ops-local-ai .metric-icon { grid-area: icon; width: 36px !important; height: 36px !important; border-radius: 10px !important; background: #f0e9ff !important; color: #7f56d9 !important; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
    body.ops-local-ai .metric-icon.models { background: #f4efff !important; color: #6941c6 !important; }
    body.ops-local-ai .metric-icon.queue { background: #f0e9ff !important; color: #7f56d9 !important; }
    body.ops-local-ai .metric-icon.service { background: #ecfdf3 !important; color: #067647 !important; }
    body.ops-local-ai .metric-icon svg { width: 18px; height: 18px; stroke: currentColor; stroke-width: 2; fill: none; stroke-linecap: round; stroke-linejoin: round; }
    .layout { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(340px, .78fr); gap: 16px; align-items: start; }
    .panel { overflow: hidden; margin-bottom: 16px; }
    .panel-head { padding: 15px 16px; border-bottom: 1px solid #f3f4f6; display: flex; justify-content: space-between; align-items: center; gap: 14px; }
    .panel-heading { display: flex; align-items: center; gap: 10px; }
    .panel-icon { width: 34px; height: 34px; border-radius: 10px; background: #f3f4f6; color: #0f172a; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
    .panel-icon svg { width: 18px; height: 18px; stroke: currentColor; stroke-width: 1.9; fill: none; stroke-linecap: round; stroke-linejoin: round; }
    .panel-title { font-size: 17px; font-weight: 700; color: #0f172a; }
    .panel-subtitle { color: #6b7280; font-size: 13px; margin-top: 3px; line-height: 1.45; }
    .panel-body { padding: 14px 16px; }
    .setting-list { display: grid; gap: 10px; }
    .setting-item { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, 320px); gap: 16px; align-items: center; padding: 13px; background: #fcfcfd; border: 1px solid #f3f4f6; border-radius: 14px; }
    .setting-item.compact-control { grid-template-columns: minmax(0, 1fr) auto; }
    .setting-title { font-weight: 700; color: #0f172a; margin-bottom: 4px; }
    .setting-desc { color: #6b7280; font-size: 13px; line-height: 1.5; }
    .setting-control { min-width: 0; display: flex; justify-content: flex-end; align-items: center; gap: 10px; }
    .readonly-value { min-height: 40px; display: inline-flex; align-items: center; justify-content: flex-end; color: #374151; font-weight: 700; text-align: right; }
    .toggle { width: 44px; height: 24px; border: 0; border-radius: 999px; background: #cbd5e1; position: relative; cursor: pointer; flex: none; }
    .toggle::after { content: ""; position: absolute; width: 20px; height: 20px; top: 2px; left: 2px; border-radius: 50%; background: #fff; transition: left .18s; box-shadow: 0 1px 3px rgba(17,24,39,.18); }
    .toggle.on { background: #7f56d9; }
    .toggle.on::after { left: 22px; }
    .toggle[disabled] { opacity: .55; cursor: not-allowed; }
    .advanced-toggle { margin: 12px 0 0; display: flex; justify-content: flex-end; }
    .advanced-section { display: none; }
    .advanced-section.open { display: block; }
    .status-strip { margin-top: 12px; display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; padding: 12px; background: #f9fafb; border: 1px solid #f3f4f6; border-radius: 14px; }
    .asr-status-strip { grid-template-columns: minmax(0, 1fr) auto; align-items: center; background: #fbfdfd; border-color: #d8eee9; }
    .asr-status-strip.failed { background: #fffafa; border-color: #fecdd3; }
    .asr-status-main { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 10px; align-items: center; }
    .asr-status-dot { width: 34px; height: 34px; border-radius: 999px; background: #e6f6f3; color: #047857; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700; }
    .asr-status-dot.running { background: #eff6ff; color: #1d4ed8; }
    .asr-status-dot.failed { background: #fff1f0; color: #b42318; }
    .asr-action-row { display: flex; gap: 8px; align-items: center; justify-content: flex-end; flex-wrap: wrap; max-width: none; }
    .asr-action-row:empty { display: none; }
    .status-title { font-weight: 700; color: #0f172a; margin-bottom: 4px; }
    .status-meta { color: #6b7280; font-size: 13px; line-height: 1.45; }
    .asr-progress-list { display: grid; gap: 10px; margin-top: 12px; }
    .asr-progress-dashboard { padding: 16px; border: 1px solid #d8eee9; border-radius: 14px; background: #f7fbfa; }
    .asr-progress-main { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 16px; align-items: center; margin-bottom: 14px; }
    .asr-progress-ring { width: 82px; height: 82px; border-radius: 999px; background: conic-gradient(#047857 var(--progress, 0%), #e8f1ef 0); display: grid; place-items: center; position: relative; flex: none; }
    .asr-progress-ring::after { content: ""; position: absolute; inset: 8px; border-radius: inherit; background: #fff; }
    .asr-progress-ring-value { position: relative; z-index: 1; color: #047857; font-size: 20px; line-height: 1; font-weight: 700; }
    .asr-progress-summary { min-width: 0; }
    .asr-progress-heading { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
    .asr-progress-summary-title { font-size: 15px; color: #0f172a; font-weight: 700; }
    .asr-progress-summary-meta { color: #6b7280; font-size: 12px; line-height: 1.45; margin-top: 4px; }
    .asr-progress-current { margin-top: 8px; color: #374151; font-size: 13px; line-height: 1.45; }
    .asr-progress-current strong { color: #0f172a; }
    .asr-progress-percent { color: #047857; font-size: 20px; line-height: 1; font-weight: 700; white-space: nowrap; }
    .asr-progress-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
    .asr-progress-metric { padding: 10px; border: 1px solid #e5e7eb; border-radius: 14px; background: rgba(255,255,255,.76); }
    .asr-progress-metric.clickable { cursor: pointer; transition: border-color .16s, background .16s, box-shadow .16s; }
    .asr-progress-metric.clickable:hover, .asr-progress-metric.clickable.active { border-color: #9ca3af; background: #f9fafb; box-shadow: 0 8px 18px rgba(17,24,39,.06); }
    .asr-progress-metric-value { font-size: 18px; color: #0f172a; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
    .asr-progress-metric-label { margin-top: 4px; color: #6b7280; font-size: 12px; }
    .asr-progress-item { padding: 10px 12px; border: 1px solid #f3f4f6; border-radius: 14px; background: #fff; }
    /* 直播间明细折叠块：默认收起，展开状态由 JS 模块级变量驱动，hidden 必须显式 display:none，
       否则 author 的 display:grid 会覆盖 UA 的 [hidden] 规则导致收起失效。 */
    .asr-session-block { display: grid; gap: 10px; }
    .asr-session-toggle { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; padding: 9px 12px; border: 1px solid #f3f4f6; border-radius: 14px; background: #fcfcfd; color: #475467; font-size: 13px; font-weight: 650; font-family: inherit; cursor: pointer; transition: background .16s ease, border-color .16s ease, color .16s ease; }
    .asr-session-toggle:hover { background: #f9fafb; border-color: #e5e7eb; color: #0f172a; }
    .asr-session-toggle svg { width: 16px; height: 16px; stroke: currentColor; stroke-width: 2; fill: none; stroke-linecap: round; stroke-linejoin: round; transition: transform .18s ease; }
    .asr-session-block.open .asr-session-toggle svg { transform: rotate(180deg); }
    .asr-session-items { display: grid; gap: 10px; }
    .asr-session-items[hidden] { display: none; }
    .asr-progress-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; margin-bottom: 8px; }
    .asr-progress-title { color: #0f172a; font-size: 14px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .asr-progress-meta { color: #6b7280; font-size: 12px; margin-top: 3px; }
    .progress-track { height: 8px; border-radius: 999px; background: #eef2f6; overflow: hidden; }
    .progress-fill { height: 100%; border-radius: inherit; background: #047857; width: 0; transition: width .18s ease; }
    .asr-progress-counts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; color: #6b7280; font-size: 12px; }
    .asr-progress-counts span { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: #f3f4f6; }
    .asr-progress-counts .active { background: #eff6ff; color: #1d4ed8; }
    .asr-progress-counts .ok { background: #ecfdf5; color: #047857; }
    .asr-progress-counts .warn { background: #fff1f0; color: #b42318; }
    .asr-skip-panel { margin-top: 12px; padding: 12px; border: 1px solid #e5e7eb; border-radius: 14px; background: #fff; }
    .asr-skip-panel > summary { cursor: pointer; list-style: none; outline: none; }
    .asr-skip-panel > summary::-webkit-details-marker { display: none; }
    .asr-skip-panel > summary::before { content: "▶"; display: inline-block; margin-right: 6px; color: #374151; font-size: 12px; transform: translateY(-1px); transition: transform .14s ease; }
    .asr-skip-panel[open] > summary::before { transform: rotate(90deg) translateY(-1px); }
    .asr-skip-head { display: inline-flex; gap: 8px; align-items: baseline; }
    .asr-skip-title { color: #0f172a; font-size: 13px; font-weight: 700; }
    .asr-skip-meta { color: #6b7280; font-size: 12px; line-height: 1.45; }
    .asr-skip-body { margin-top: 10px; }
    .asr-skip-categories { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
    .asr-skip-category { padding: 10px; border: 1px solid #edf0f3; border-radius: 14px; background: #f9fafb; min-width: 0; }
    .asr-skip-category-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; margin-bottom: 4px; }
    .asr-skip-category-name { color: #0f172a; font-size: 13px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .asr-skip-category-count { color: #b54708; font-size: 15px; font-weight: 700; white-space: nowrap; }
    .asr-skip-category-desc { color: #6b7280; font-size: 12px; line-height: 1.4; }
    .asr-skip-details { margin-top: 10px; border-top: 1px solid #edf0f3; padding-top: 10px; }
    .asr-skip-details summary { cursor: pointer; color: #374151; font-size: 13px; font-weight: 700; outline: none; }
    .asr-skip-detail-list { display: grid; gap: 6px; margin-top: 10px; }
    .asr-skip-detail { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: start; padding: 9px 10px; border-radius: 10px; background: #fcfcfd; border: 1px solid #edf0f3; }
    .asr-skip-detail-name { color: #0f172a; font-size: 13px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .asr-skip-detail-reason { color: #6b7280; font-size: 12px; line-height: 1.45; margin-top: 3px; overflow-wrap: anywhere; }
    .asr-skip-detail-actions { display: inline-flex; align-items: center; gap: 8px; justify-content: flex-end; }
    .asr-skip-detail-tag { color: #b54708; background: #fff7ed; border-radius: 999px; padding: 3px 8px; font-size: 12px; font-weight: 700; white-space: nowrap; }
    .asr-skip-locate { height: 30px; border: 1px solid #d1d5db; border-radius: 10px; padding: 0 10px; background: #fff; color: #374151; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
    .asr-skip-locate:hover { background: #f9fafb; }
    .perf-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    .perf-card { padding: 12px; border-radius: 14px; background: #fcfcfd; border: 1px solid #f3f4f6; }
    .perf-title { color: #4b5563; font-size: 13px; font-weight: 700; margin-bottom: 8px; }
    .perf-main { color: #0f172a; font-size: 22px; line-height: 1.12; font-weight: 700; margin-bottom: 6px; font-variant-numeric: tabular-nums; }
    .perf-meta { color: #6b7280; font-size: 12px; line-height: 1.45; }
    .hardware-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin-bottom: 12px; border: 1px solid #f3f4f6; border-radius: 14px; background: #fcfcfd; overflow: hidden; }
    .hardware-card { min-height: 46px; padding: 10px 12px; min-width: 0; display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 10px; align-items: center; }
    .hardware-card:nth-child(odd) { border-right: 1px solid #f3f4f6; }
    .hardware-card:nth-child(-n+2) { border-bottom: 1px solid #f3f4f6; }
    .hardware-title { color: #4b5563; font-size: 12px; font-weight: 700; }
    .hardware-value { color: #0f172a; font-size: 13px; line-height: 1.35; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .strategy-stack { display: grid; gap: 10px; }
    .strategy-card { padding: 13px; border-radius: 14px; background: #fcfcfd; border: 1px solid #f3f4f6; }
    .strategy-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 7px; }
    /* flex + gap 让标题旁的推荐徽标垂直居中；纯文本标题只有一个子节点，布局不受影响。 */
    .strategy-card-title { color: #0f172a; font-size: 15px; font-weight: 700; line-height: 1.35; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .strategy-card-kicker { color: #9ca3af; font-size: 12px; font-weight: 650; margin-top: 3px; }
    .strategy-card-desc { color: #6b7280; font-size: 13px; line-height: 1.55; }
    .parallel-setting-card .strategy-card-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; margin-bottom: 7px; }
    .parallel-setting-card .setting-control { flex: none; }
    .init-mode-card .switch, .parallel-setting-card .switch, .comment-download-choice .switch { position: relative; display: inline-block; width: 44px; height: 24px; flex: none; }
    .init-mode-card .switch input, .parallel-setting-card .switch input, .comment-download-choice .switch input { opacity: 0; width: 0; height: 0; }
    .init-mode-card .slider, .parallel-setting-card .slider, .comment-download-choice .slider { position: absolute; cursor: pointer; inset: 0; background: #cbd5e1; border-radius: 24px; transition: background .18s ease; }
    .init-mode-card .slider::before, .parallel-setting-card .slider::before, .comment-download-choice .slider::before { position: absolute; content: ""; width: 18px; height: 18px; left: 3px; bottom: 3px; border-radius: 50%; background: #fff; transition: transform .18s ease; box-shadow: 0 1px 3px rgba(17,24,39,.18); }
    .init-mode-card input:checked + .slider, .parallel-setting-card input:checked + .slider, .comment-download-choice input:checked + .slider { background: #7f56d9; }
    .init-mode-card input:checked + .slider::before, .parallel-setting-card input:checked + .slider::before, .comment-download-choice input:checked + .slider::before { transform: translateX(20px); }
    .init-mode-card input:disabled + .slider, .parallel-setting-card input:disabled + .slider, .comment-download-choice input:disabled + .slider { opacity: .55; cursor: not-allowed; }
    .strategy-model-list { display: grid; gap: 6px; margin-top: 10px; }
    .strategy-model-item { padding: 8px 10px; border-radius: 10px; background: #f9fafb; border: 1px solid #edf0f3; }
    .strategy-model-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 2px; }
    .strategy-model-name { color: #374151; font-size: 12px; font-weight: 700; }
    .strategy-model-meta { color: #9ca3af; font-size: 12px; line-height: 1.35; overflow-wrap: anywhere; }
    .strategy-model-state { font-weight: 700; }
    .badge { display: inline-flex; align-items: center; height: 24px; padding: 0 8px; border-radius: 999px; font-size: 12px; font-weight: 650; background: #f3f4f6; color: #4b5563; white-space: nowrap; }
    .badge-ok { background: #ecfdf5; color: #047857; }
    .badge-warn { background: #fffbeb; color: #b45309; }
    .badge-missing { background: #fff1f0; color: #b42318; }
    /* 硬件三级推荐标记：颜色即档位（紫=强烈、绿=推荐、红=不建议），与状态徽标的灰/黄语义区分开。 */
    .advice-badge { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; font-size: 11px; font-weight: 700; white-space: nowrap; border: 1px solid transparent; }
    /* 并行标记默认带 hidden，author 的 display:inline-flex 会压过旧内核 UA 的 [hidden] 规则，需显式兜底（同 .btn[hidden] 先例）。 */
    .advice-badge[hidden] { display: none; }
    /* 强烈档用实心渐变 + 白字，与页面所有浅色状态徽标（含"同时运行"）拉开层次，一眼可辨最高推荐档。 */
    .advice-badge.advice-strong { background: linear-gradient(135deg, #7c3aed, #4f46e5); color: #fff; border-color: transparent; box-shadow: 0 2px 6px rgba(79,70,229,.28); }
    .advice-badge.advice-recommend { background: #ecfdf5; color: #047857; border-color: #a7f3d0; }
    .advice-badge.advice-discourage { background: #fff1f0; color: #b42318; border-color: #fecdca; }
    .model-pack { padding: 14px; margin-bottom: 10px; box-shadow: none; }
    .model-pack.active { border-color: #d1d5db; background: rgba(255,255,255,.95); }
    .model-pack-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin-bottom: 8px; }
    .model-pack-title { font-weight: 700; color: #0f172a; }
    .model-pack-meta { color: #6b7280; font-size: 12px; margin-top: 3px; }
    .model-pack-desc { color: #4b5563; font-size: 13px; line-height: 1.55; }
    .model-file-list { display: grid; gap: 6px; margin-top: 10px; }
    .model-file { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 10px; background: #f9fafb; border: 1px solid #edf0f3; }
    .model-file.downloading { border-color: #b8ddd8; background: #f4fbfa; }
    .model-file-name { color: #374151; font-size: 12px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .model-file-path { color: #9ca3af; font-size: 12px; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .model-file-actions { display: inline-flex; align-items: center; gap: 8px; }
    .model-file-progress { grid-column: 1 / -1; margin-top: 2px; }
    .guide-list { display: grid; gap: 10px; }
    .guide-item { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; padding: 12px; background: #fcfcfd; border: 1px solid #f3f4f6; border-radius: 14px; }
    .guide-index { width: 28px; height: 28px; border-radius: 999px; background: #ecfdf5; color: #047857; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
    .guide-title { color: #0f172a; font-weight: 700; margin-bottom: 4px; }
    .guide-desc { color: #6b7280; font-size: 13px; line-height: 1.5; }
    .empty { padding: 28px 16px; text-align: center; color: #9ca3af; }
    @media (max-width: 1120px) {
      .init-panel { grid-template-columns: 1fr; }
      .capability-grid { grid-template-columns: 1fr; }
      .layout { grid-template-columns: 1fr; }
      .asr-progress-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .asr-skip-categories { grid-template-columns: 1fr; }
      .page-head { flex-direction: column; }
    }
    @media (max-width: 720px) {
      .container { padding: 20px 16px 34px; }
      .init-panel, .init-main, .init-mode-top, .init-model-row { grid-template-columns: 1fr; }
      .init-model-row-actions { justify-content: flex-start; }
      .init-actions { justify-content: stretch; }
      .init-actions .btn { flex: 1; }
      .asr-progress-main, .asr-progress-top, .asr-status-main { grid-template-columns: 1fr; }
      .setting-item, .setting-item.compact-control, .status-strip, .asr-status-strip, .model-row { grid-template-columns: 1fr; }
      .setting-control { justify-content: stretch; }
      .asr-action-row { max-width: none; justify-content: stretch; }
      .asr-action-row .btn { flex: 1; }
      .perf-grid { grid-template-columns: 1fr; }
      .hardware-grid { grid-template-columns: 1fr; }
      .hardware-card:nth-child(odd) { border-right: 0; }
      .hardware-card:nth-child(-n+2) { border-bottom: 0; }
      .hardware-card:not(:last-child) { border-bottom: 1px solid #f3f4f6; }
      .strategy-card-top { grid-template-columns: 1fr; }
      .strategy-card-top { display: grid; }
    }
