/* 报告样式：与 backend/resources/views/diagnosis/report.blade.php 同一份（CI check-report-sample-sync.py 校验） */
/* ==REPORT-CSS-BEGIN== */
        :root {
            color-scheme: light;
            --ink: #0f1e3d;
            --ink-2: #1d2f52;
            --blue: #2a6fe0;
            --blue-soft: #eaf1fe;
            --teal: #0fa88f;
            --teal-soft: #e9f9f4;
            --amber: #b45309;
            --amber-soft: #fff8ea;
            --red: #d43f3f;
            --red-soft: #fdf0f0;
            --line: #e3e8f2;
            --line-soft: #eef2f9;
            --muted: #64748b;
            --muted-2: #94a3b8;
            --bg: #f2f5fa;
            --radius: 16px;
            /* 2026-10-28：顶部导航条实际高度。进度条 / 目录都 sticky 到这条线，
               ≤760px 时导航变矮（8+32+8+1=49px），写死 55px 会露出 6px 缝隙让内容透出来。 */
            --rp-top-h: 55px;
            --shadow: 0 18px 48px rgba(15, 30, 61, .09);
            --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
            --num: ui-monospace, "SF Mono", "JetBrains Mono", "Roboto Mono", Menlo, Consolas, monospace;
        }
        * { box-sizing: border-box; }
        html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
        /* 2026-10-28 视觉微调：中文长文的行距/字距略调，读起来更顺（版式与栅格未变） */
        body {
            margin: 0; padding: 0 0 96px; background: var(--bg); color: var(--ink);
            font: 15px/1.78 var(--font); -webkit-font-smoothing: antialiased;
            letter-spacing: .004em;
        }
        a { color: var(--blue); text-decoration: none; transition: color .16s ease; }
        a:hover, a:focus-visible { text-decoration: underline; text-underline-offset: 2px; }
        b, strong { font-weight: 650; }
        h1, h2, h3, h4 { margin: 0; letter-spacing: -.01em; text-wrap: balance; }
        /* 2026-10-29 适配体检：孤字末行治理 —— 除了标题，正文块 / 列表项
           折行后也常只剩一个字（「…问题里一次没提 / 到」）。均分行宽即可消掉。
           超长段落（>6 行）引擎会自动放弃均分，正文仍是正常断行。
           表格单元（td/th）刻意排除：text-wrap 会覆盖继承的 nowrap，宽表会退回挤行。 */
        p, li, dt, dd, summary, figcaption { text-wrap: balance; }
        p { margin: 0 0 12px; }
        ol, ul { margin: 0; padding-left: 20px; }
        li { margin-bottom: 7px; }
        /* 选区用品牌淡蓝，客户复制/截图标注时更清楚 */
        ::selection { background: rgba(42, 111, 224, .16); color: var(--ink); }
        /* 键盘可达：顶部按钮 / 目录胶囊 / 折叠标题都有可见焦点 */
        a:focus-visible, button:focus-visible, summary:focus-visible {
            outline: 2px solid var(--blue); outline-offset: 2px; border-radius: 6px;
        }
        /* 滚动条收细：报告很长，滚动条不该抢内容 */
        ::-webkit-scrollbar { width: 10px; height: 10px; }
        ::-webkit-scrollbar-thumb {
            background: #cfd8e6; border-radius: 999px; border: 3px solid transparent; background-clip: content-box;
        }
        ::-webkit-scrollbar-thumb:hover { background: #b9c5d8; background-clip: content-box; }
        ::-webkit-scrollbar-track { background: transparent; }
        code { font-family: var(--num); font-size: .92em; background: var(--line-soft); padding: 1px 5px; border-radius: 5px; }

        /* ── 顶栏 ── */
        .rp-top {
            position: sticky; top: 0; z-index: 40; display: flex; align-items: center; gap: 12px;
            padding: 10px 20px; background: rgba(255, 255, 255, .88);
            backdrop-filter: saturate(180%) blur(12px); border-bottom: 1px solid var(--line);
        }
        .rp-brand { display: inline-flex; align-items: center; gap: 9px; font-weight: 650; color: var(--ink); font-size: 14px; }
        .rp-brand__mark {
            width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center;
            background: linear-gradient(140deg, var(--ink), #24427e); color: #fff; font-size: 14px; font-weight: 700;
        }
        .rp-brand__tag { font-size: 12px; font-weight: 500; color: var(--muted); border-left: 1px solid var(--line); padding-left: 9px; }
        .rp-top__spacer { flex: 1; }
        .rp-top__actions { display: flex; align-items: center; gap: 8px; }
        .rp-btn {
            display: inline-flex; align-items: center; justify-content: center; gap: 6px;
            height: 34px; padding: 0 14px; border-radius: 9px; border: 1px solid var(--line);
            background: #fff; color: #334155; font: inherit; font-size: 13px; font-weight: 500;
            cursor: pointer; white-space: nowrap; transition: border-color .18s, background .18s, color .18s;
        }
        .rp-btn:hover { border-color: #c3cde0; color: var(--ink); }
        .rp-btn--primary { background: var(--ink); border-color: var(--ink); color: #fff; font-weight: 600; }
        .rp-btn--primary:hover { background: #1b3161; border-color: #1b3161; color: #fff; }
        .rp-btn[disabled] { opacity: .55; cursor: default; }
        .rp-saved { display: none; align-items: center; gap: 5px; font-size: 12px; color: var(--teal); }
        .rp-saved.is-on { display: inline-flex; }

        .rp-scroll { position: sticky; top: var(--rp-top-h); z-index: 39; height: 2px; background: transparent; }
        .rp-scroll i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, var(--blue), var(--teal)); }

        /* ── 纸张 ── */
        .rp-sheet { max-width: 960px; margin: 22px auto 0; padding: 0 16px; }
        .rp-cover {
            position: relative; overflow: hidden; border-radius: 22px; color: #eaf0ff;
            padding: 34px 36px 30px;
            background:
                radial-gradient(720px 320px at 88% -10%, rgba(42, 111, 224, .55), rgba(42, 111, 224, 0) 62%),
                radial-gradient(520px 300px at -10% 110%, rgba(20, 184, 166, .34), rgba(20, 184, 166, 0) 60%),
                linear-gradient(160deg, #0e1c37 0%, #14284d 58%, #10203c 100%);
            box-shadow: var(--shadow);
        }
        .rp-cover::after {
            content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .35;
            background-image: linear-gradient(rgba(255, 255, 255, .06) 1px, transparent 1px),
                linear-gradient(90deg, rgba(255, 255, 255, .06) 1px, transparent 1px);
            background-size: 46px 46px; mask-image: radial-gradient(circle at 78% 0%, #000, transparent 72%);
        }
        .rp-cover__head { display: flex; align-items: center; gap: 10px; font-size: 12px; position: relative; z-index: 1; }
        .rp-cover__tag {
            display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px;
            background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .2);
            letter-spacing: .04em; color: #fff;
        }
        .rp-cover__no { color: rgba(234, 240, 255, .62); font-family: var(--num); font-size: 11.5px; margin-left: auto; }
        .rp-cover h1 { position: relative; z-index: 1; margin: 14px 0 6px; font-size: 30px; line-height: 1.28; color: #fff; }
        .rp-cover__verdict {
            position: relative; z-index: 1; margin: 0 0 22px; max-width: 660px;
            font-size: 16px; line-height: 1.68; color: rgba(233, 240, 255, .9);
        }
        /* D-159：复测对比 —— 只在有上一份报告时出现 */
        .rp-cover__trend {
            position: relative; z-index: 1; display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px;
            margin: 0 0 20px; padding: 5px 12px; border-radius: 999px;
            background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .12);
            font-size: 12px; color: #cfe0ff; font-variant-numeric: tabular-nums;
        }
        .rp-cover__trend b { color: #fff; }
        .rp-cover__trend .is-up { color: #5eead4; }
        .rp-cover__trend .is-down { color: #fca5a5; }
        .rp-cover__body { position: relative; z-index: 1; display: grid; grid-template-columns: 170px 1fr; gap: 26px; align-items: center; }
        .rp-gauge { display: grid; justify-items: center; gap: 6px; }
        .rp-gauge__ring { position: relative; width: 128px; height: 128px; }
        .rp-gauge__ring svg { display: block; width: 100%; height: 100%; transform: rotate(-90deg); }
        .rp-gauge__track { fill: none; stroke: rgba(255, 255, 255, .16); stroke-width: 9; }
        .rp-gauge__value { fill: none; stroke: url(#rpGaugeGrad); stroke-width: 9; stroke-linecap: round; }
        .rp-gauge__num { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--num); }
        .rp-gauge__num b { font-size: 34px; color: #fff; line-height: 1; font-weight: 700; }
        .rp-gauge__num small { font-size: 11px; color: rgba(234, 240, 255, .6); display: block; text-align: center; margin-top: 4px; }
        .rp-gauge__grade { font-size: 12.5px; color: rgba(234, 240, 255, .82); }
        .rp-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
        .rp-kpi {
            padding: 12px 14px; border-radius: 12px; background: rgba(255, 255, 255, .07);
            border: 1px solid rgba(255, 255, 255, .12);
        }
        .rp-kpi dt { font-size: 11.5px; color: rgba(234, 240, 255, .62); margin: 0 0 3px; }
        .rp-kpi dd { margin: 0; font-size: 18px; font-weight: 650; font-family: var(--num); color: #fff; line-height: 1.25; }
        .rp-kpi dd small { font-size: 11.5px; font-weight: 500; color: rgba(234, 240, 255, .66); font-family: var(--font); }
        .rp-kpi__hint { margin-left: 4px; font-size: 10.5px; font-weight: 500; color: rgba(234, 240, 255, .5); }
        /* D-280：**结论区（s1）是白底**，而上面这套 `.rp-kpi` 是为封面深色卡写的（`dd` 用 #fff、
               `dt` 用 rgba(234,240,255,.62)）—— 直接复用后「一、结论」里的权威等级与三个指标成了
               白底白字，线上实测只看到几个淡淡的破折号（客户第一屏就看不清结论）。
               这里按容器作用域覆盖，封面不受影响。 */
        .rp-sec .rp-kpi { background: #fff; border-color: var(--line); box-shadow: 0 1px 2px rgba(15, 30, 61, .04); }
        .rp-sec .rp-kpi dt { color: #5b667f; }
        .rp-sec .rp-kpi dd { color: var(--ink); }
        .rp-sec .rp-kpi dd small { color: #5b667f; }
        .rp-sec .rp-kpi__hint { color: #8b93a6; }
        /* D-283：一句话结论条 —— s1 是客户滚下来的第一屏，先给结论再给指标，
               而不是一上来就是「等级 + 四个数」（那读起来像体检单）。 */
        .rp-verdict {
            margin: 0 0 16px; padding: 14px 16px; border-radius: 12px;
            background: linear-gradient(135deg, rgba(79, 143, 240, .09), rgba(46, 224, 192, .09));
            border: 1px solid var(--line); font-size: 15px; line-height: 1.7; color: var(--ink);
        }
        .rp-verdict__tag {
            display: inline-block; margin-right: 8px; padding: 1px 8px; border-radius: 999px;
            background: rgba(79, 143, 240, .16); color: #2f6fd0;
            font-size: 11.5px; font-weight: 600; vertical-align: 2px;
        }
        /* D-193：声量份额的「你 / 同行」双色细条 */
        .rp-kpi__sov {
            display: block; height: 4px; margin-top: 7px; border-radius: 3px;
            background: rgba(217, 201, 168, .85); overflow: hidden;
        }
        .rp-kpi__sov i { display: block; height: 100%; border-radius: 3px; background: #7fb2ff; }
        .rp-cover__meta {
            position: relative; z-index: 1; margin: 22px 0 0; padding-top: 14px;
            border-top: 1px solid rgba(255, 255, 255, .14);
            display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 12px; color: rgba(234, 240, 255, .66);
        }
        .rp-cover__meta span { display: inline-flex; gap: 5px; }
        .rp-cover__meta b { color: rgba(255, 255, 255, .92); font-weight: 500; }

        /* ── 目录 ── */
        .rp-toc {
            position: sticky; top: var(--rp-top-h); z-index: 30; margin: 14px 0 0;
            display: flex; gap: 6px; overflow-x: auto; padding: 8px 4px;
            background: var(--bg); box-shadow: 0 10px 12px -10px var(--bg);
            scrollbar-width: none;
        }
        .rp-toc::-webkit-scrollbar { display: none; }
        .rp-toc a {
            flex: 0 0 auto; height: 30px; display: inline-flex; align-items: center; padding: 0 12px;
            border-radius: 999px; border: 1px solid var(--line); background: #fff;
            font-size: 12.5px; color: var(--muted); white-space: nowrap; transition: all .18s;
        }
        /* 2026-10-28：目录胶囊加悬停反馈（原来只有"当前节"有态，其余看不出可点） */
        .rp-toc a:hover { border-color: #c7d5ea; color: var(--ink-2); background: #fbfdff; }
        .rp-toc a.is-active { background: var(--ink); border-color: var(--ink); color: #fff; }
        .rp-toc a.is-active:hover { background: #1b3161; border-color: #1b3161; color: #fff; }

        /* ── 章节卡 ── */
        .rp-sec {
            margin-top: 14px; padding: 26px 30px 28px; background: #fff;
            border: 1px solid var(--line); border-radius: var(--radius);
            /* 近边 + 远景双层阴影：纸张感更自然，不再是"贴"在灰底上 */
            box-shadow: 0 1px 2px rgba(15, 30, 61, .04), 0 12px 26px -20px rgba(15, 30, 61, .22);
        }
        /* 锚点跳转时别被吸顶黑/目录压住标题 */
        .rp-sec, .rp-fold, .rp-cta, .rp-sales { scroll-margin-top: 112px; }
        .rp-sec__head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 16px; }
        .rp-sec__no { font-family: var(--num); font-size: 12px; color: var(--blue); font-weight: 700; letter-spacing: .08em; }
        .rp-sec h2 { font-size: 19px; letter-spacing: -.008em; }
        /* 2026-10-28（客户截图）：≤560px 时「04」与长标题并排，标题被挤成两行且折行点难看
           （「04 四、如果补齐上面几 / 块，3–6 个月后会怎样」）。改为「号在上、标题通栏」，
           标题略降字号、放宽行高，两种字数都能整齐两行。 */
        @media (max-width: 560px) {
            .rp-sec__head { display: block; margin-bottom: 12px; }
            .rp-sec__no { display: block; margin-bottom: 3px; }
            /* 选择器要压过 ≤760px 那条 `.rp-sec h2 { font-size: 17px }`（同优先级但更靠后） */
            .rp-sec .rp-sec__head h2 { font-size: 16.5px; line-height: 1.45; }
        }
        .rp-sec h3 { margin: 22px 0 10px; font-size: 14.5px; color: var(--ink); }
        .rp-sec h3:first-of-type { margin-top: 4px; }
        .rp-lead { font-size: 16px; line-height: 1.78; font-weight: 650; color: var(--ink); margin: 0 0 14px; }
        .rp-text { font-size: 14px; line-height: 1.82; color: #3c4a63; }
        .rp-hint { font-size: 12.5px; color: var(--muted); line-height: 1.75; margin: 8px 0 0; }
        .rp-note { font-size: 11.5px; color: var(--muted-2); line-height: 1.72; margin: 14px 0 0; }

        /* 三条判据 */
        .rp-checks { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 8px; }
        .rp-check {
            display: grid; grid-template-columns: 8px minmax(116px, max-content) 1fr; gap: 12px; align-items: baseline;
            padding: 10px 14px; border-radius: 11px; background: var(--line-soft); font-size: 13.5px;
            line-height: 1.7;
        }
        .rp-check__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted-2); }
        .rp-check__label { font-weight: 650; }
        .rp-check__note { color: #475569; }
        .rp-check.is-ok { background: var(--teal-soft); }
        .rp-check.is-ok .rp-check__dot { background: var(--teal); }
        .rp-check.is-warn { background: var(--amber-soft); }
        .rp-check.is-warn .rp-check__dot { background: #d89a20; }
        .rp-check.is-bad { background: var(--red-soft); }
        .rp-check.is-bad .rp-check__dot { background: var(--red); }

        /* 痛点卡 */
        .rp-gaps { display: grid; gap: 10px; margin: 0 0 20px; }
        .rp-gap { padding: 12px 16px; border-radius: 12px; background: var(--amber-soft); border: 1px solid #f6e3bd; }
        .rp-gap > b { display: block; font-size: 13.5px; color: var(--amber); margin-bottom: 2px; }
        .rp-gap span { font-size: 13px; color: #475569; }
        /* 空白位（你和同行都缺席）= 好消息，用薄荷色，别和「对手赢在哪」的警告色混在一起 */
        .rp-gap--ok { background: #eefaf6; border-color: #bfe9dd; }
        .rp-gap--ok > b { color: #0b7a63; }
        /* D-166：公开版「发给老板的三条」—— 只陈述事实，不吓唬、不编数字 */
        .rp-anxiety {
            margin-top: 14px; padding: 16px 18px; border-radius: 14px;
            background: linear-gradient(180deg, #fff7f5, #fffdfc);
            border: 1px solid #f6d6cd;
        }
        .rp-anxiety > b { display: block; font-size: 13.5px; color: #b23b2e; margin-bottom: 8px; }
        .rp-anxiety ul { margin: 0; padding-left: 18px; }
        .rp-anxiety li { font-size: 13px; line-height: 1.75; color: #43312e; }
        .rp-anxiety li + li { margin-top: 4px; }
        .rp-anxiety__hint { display: block; margin-top: 10px; font-size: 12px; color: #8a6a63; }
        /* D-167：AI 口吻 chips + 公开版「怎么算的」列表 */
        .rp-tones { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
        .rp-tone {
            padding: 4px 10px; border-radius: 999px; font-size: 12px;
            border: 1px solid var(--line); background: var(--line-soft); color: var(--ink-2);
        }
        .rp-tone.is-positive { background: var(--teal-soft); border-color: #bfe9dd; color: #0b7a63; }
        .rp-tone.is-negative { background: var(--red-soft); border-color: #f3cccc; color: #a83232; }
        .rp-method { margin: 6px 0 10px; padding-left: 18px; }
        .rp-method li { font-size: 13px; line-height: 1.75; color: #3c4a63; }
        .rp-method li + li { margin-top: 4px; }
        /* D-160：风险提醒（不处理会怎样）—— 红系，与「机会」的薄荷色区分 */
        .rp-gap--risk { background: #fdf3f3; border-color: #f3cccc; }
        .rp-gap--risk > b { color: #b42318; }

        /* 动作清单 */
        .rp-actions { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
        .rp-action {
            display: grid; grid-template-columns: 42px 1fr; gap: 12px; align-items: start;
            padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: #fff;
            transition: border-color .18s ease, box-shadow .18s ease;
        }
        /* 动作清单是客户最常反复看的一块：悬停给一点"这张卡"的反馈（不位移） */
        .rp-action:hover {
            border-color: #d3e0f3;
            box-shadow: 0 8px 20px -18px rgba(15, 30, 61, .55);
        }
        .rp-action__p {
            font-family: var(--num); font-size: 11px; font-weight: 700; text-align: center;
            padding: 3px 0; border-radius: 6px; background: var(--line-soft); color: var(--muted);
        }
        .rp-action__p.is-p0 { background: var(--red-soft); color: var(--red); }
        .rp-action__t { font-size: 13.5px; font-weight: 600; }
        .rp-action__d { margin: 2px 0 0; font-size: 12.5px; color: var(--muted); }

        /* 证据卡：一组问题一张卡，多模型并排（2026-10-21） */
        .rp-evd { padding: 14px 16px 12px; border-radius: 12px; background: #fbfcfe; border: 1px solid var(--line); margin-bottom: 10px; border-left: 3px solid var(--red); }
        .rp-evd.is-ok { border-left-color: var(--teal); }
        .rp-evd__q { font-size: 12.5px; font-weight: 650; color: var(--ink); margin: 0 0 10px; }
        .rp-evd__tag {
            margin-left: 8px; padding: 1px 7px; border-radius: 999px; background: var(--line-soft);
            font-size: 10.5px; font-weight: 500; color: var(--muted); white-space: nowrap;
        }
        .rp-evd__grid { display: grid; grid-template-columns: 1fr; gap: 10px; }
        .rp-evd__grid.is-two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
        .rp-evd__col { padding: 10px 12px; border-radius: 10px; background: #fff; border: 1px solid var(--line-soft); }
        .rp-evd__col .quote { margin: 6px 0 0; font-size: 12.8px; color: #3c4a63; line-height: 1.72; padding-left: 9px; border-left: 2px solid var(--line); }
        .rp-evd__col .quote.is-refused { color: #7c8798; border-left-color: #f2d9a6; background: #fffdf6; border-radius: 0 8px 8px 0; padding: 6px 10px; }
        .rp-evidence__rank { color: #2563eb; font-weight: 600; }
        /* D-165：完整版「更细的数据」四格指标 */
        .rp-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 12px 0 4px; }
        .rp-metric { padding: 12px 14px; border-radius: 12px; background: var(--line-soft); border: 1px solid var(--line); }
        .rp-metric span { display: block; font-size: 11.5px; color: var(--muted); margin-bottom: 4px; }
        .rp-metric b { font-family: var(--num); font-size: 20px; font-weight: 700; color: var(--ink); }
        .rp-metric small { display: block; margin-top: 2px; font-size: 11px; color: var(--muted-2); }
        @media (max-width: 760px) { .rp-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
        /* D-160：声量份额条（你 / 同行合计） */
        .rp-sharebar { display: flex; height: 10px; margin: 10px 0 8px; border-radius: 999px; overflow: hidden; background: #eef2f9; }
        .rp-sharebar i { display: block; height: 100%; }
        .rp-sharebar i.is-me { background: linear-gradient(90deg, #2f6fe4, #22d3ee); }
        .rp-sharebar i:not(.is-me) { background: #dbe3ef; }
        .rp-evidence__src {
            margin-left: 8px; padding: 1px 7px; border-radius: 999px; border: 1px solid var(--line);
            font-family: var(--num); font-size: 10.5px; font-weight: 500; color: var(--muted-2); white-space: nowrap;
        }
        .rp-evidence__mark { margin: 8px 0 0; font-size: 12px; font-weight: 600; }
        .rp-evd.is-miss .rp-evidence__mark { color: var(--red); }
        .rp-evd.is-ok .rp-evidence__mark { color: var(--teal); }

        /* 表格 */
        .rp-table-wrap { margin: 10px 0 6px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
        .rp-table { width: 100%; border-collapse: collapse; font-size: 13px; }
        .rp-table th, .rp-table td { text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
        .rp-table th {
            background: linear-gradient(180deg, #f9fbff, #f4f7fd); font-size: 12px; font-weight: 650;
            color: var(--muted); white-space: nowrap; letter-spacing: .01em;
        }
        /* 2026-10-28：长表加行悬停，横向扫读不串行（纯底色，不加边框） */
        .rp-table tbody tr:hover td { background: #fafcff; }
        .rp-table tr:last-child td { border-bottom: 0; }
        .rp-table tr.is-me td { background: #fffaf0; font-weight: 600; }
        /* 「你」这行本就高亮：悬停时保持原底色，不要被通用 hover 盖掉 */
        .rp-table tr.is-me:hover td { background: #fff6e6; }
        .rp-table .num { font-family: var(--num); font-variant-numeric: tabular-nums; white-space: nowrap; }
        .rp-share { display: block; height: 5px; border-radius: 999px; background: var(--line-soft); margin-top: 4px; overflow: hidden; }
        .rp-share i { display: block; height: 100%; background: var(--red); }
        .rp-share.is-me i { background: #e0a020; }
        .rp-tag { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 11.5px; font-weight: 600; }
        .rp-tag--ok { background: var(--teal-soft); color: #07705f; }
        .rp-tag--bad { background: var(--red-soft); color: var(--red); }
        .rp-tag--warn { background: var(--amber-soft); color: var(--amber); }
        .rp-tag--plain { background: var(--line-soft); color: var(--muted); }

        /* 数据条 */
        .rp-dims { display: grid; gap: 2px; margin: 0; }
        .rp-dim { padding: 12px 0; border-bottom: 1px dashed var(--line); }
        .rp-dim:last-child { border-bottom: 0; }
        .rp-dim__head { display: flex; justify-content: space-between; align-items: baseline; font-size: 13.5px; font-weight: 600; gap: 10px; }
        .rp-dim__head span:last-child { font-family: var(--num); color: var(--muted); font-weight: 600; }
        .rp-dim__bar { height: 6px; border-radius: 999px; background: var(--line-soft); margin: 7px 0 6px; overflow: hidden; }
        .rp-dim__bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--blue), #4f8ff0); }
        .rp-dim__note { margin: 0; font-size: 12.5px; color: var(--muted); line-height: 1.7; }

        /* CTA */
        .rp-cta {
            margin-top: 14px; padding: 24px 28px; border-radius: var(--radius);
            background: linear-gradient(140deg, #fff8ea, #fff); border: 1px solid #f6e3bd;
        }
        .rp-cta h2 { font-size: 17px; margin-bottom: 8px; color: #7c3a06; }
        .rp-cta p { font-size: 13.5px; color: #5a4a34; margin: 0 0 6px; }
        .rp-cta ul { margin: 10px 0 12px; padding-left: 18px; font-size: 13.5px; color: #5a4a34; }
        .rp-cta__actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }

        /* 折叠 */
        .rp-fold { margin-top: 14px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
        .rp-fold > summary {
            list-style: none; cursor: pointer; padding: 18px 28px; display: flex; align-items: center; gap: 10px;
            font-size: 15px; font-weight: 650; transition: background .18s ease;
        }
        .rp-fold > summary:hover { background: #fbfdff; }
        .rp-fold > summary::-webkit-details-marker { display: none; }
        .rp-fold > summary::after {
            content: "展开"; margin-left: auto; font-size: 12px; font-weight: 500; color: var(--muted);
            border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px;
            /* 手机窄屏下标题很长，「展开」被压成「展／开」两行 —— 徽标禁止收缩、禁止折行 */
            flex: 0 0 auto; white-space: nowrap;
        }
        .rp-fold[open] > summary::after { content: "收起"; }
        .rp-fold__body { padding: 0 28px 24px; }

        /* 顾问名片 */
        .rp-sales {
            margin-top: 14px; padding: 20px 24px; border-radius: var(--radius);
            background: var(--blue-soft); border: 1px solid #cfe0fb;
        }
        .rp-sales h2 { font-size: 15px; color: #123a75; margin-bottom: 6px; }
        .rp-sales p { font-size: 13.5px; color: #1e3a8a; margin: 0 0 4px; }
        /* D-189：多引擎对比条形图（纯 CSS，无 JS） */
        .rp-chart { margin: 8px 0 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: #fbfdff; }
        .rp-chart__legend { display: flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--muted-2); margin-bottom: 8px; }
        .rp-chart__dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; }
        .rp-chart__dot.is-acq, .rp-chart__bars .is-acq { background: #1d4ed8; }
        .rp-chart__dot.is-brand, .rp-chart__bars .is-brand { background: #93c5fd; }
        /* D-193：场景对比里的「同行」用暖灰，与你（蓝）区分开，且不抢视线 */
        .rp-chart__dot.is-peer, .rp-chart__bars .is-peer { background: #d9c9a8; }
        .rp-chart__row { display: grid; grid-template-columns: minmax(90px, 150px) 1fr 52px; align-items: center; gap: 10px; padding: 4px 0; }
        .rp-chart__label { font-size: 11.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .rp-chart__bars { display: block; }
        .rp-chart__bars i { display: block; height: 7px; border-radius: 4px; margin: 2px 0; min-width: 2px; }
        .rp-chart__num { font-size: 12px; font-variant-numeric: tabular-nums; color: #123a75; text-align: right; }

        /* D-193：「未检出问题」的正面结论（避免客户以为这块没做） */
        .rp-clean {
            margin: 10px 0 14px; padding: 12px 14px; border-radius: 10px;
            background: #f2fbf6; border: 1px solid #c7ecd8;
        }
        .rp-clean__t { margin: 0 0 4px; font-size: 13.5px; font-weight: 650; color: #166534; }
        .rp-clean__d { margin: 0; font-size: 12.5px; color: #3f5f4c; line-height: 1.75; }

        /* D-189：免费版「AI 说错了什么」单条展示 */
        .rp-wrong {
            margin: 10px 0 14px; padding: 12px 14px; border-radius: 10px;
            background: #fff7ed; border: 1px solid #fed7aa;
        }
        .rp-wrong__claim { font-size: 13.5px; color: #9a3412; margin: 0 0 6px; font-weight: 600; }
        .rp-wrong__fact { font-size: 13px; color: #334155; margin: 0; }
        .rp-wrong__more { font-size: 12.5px; color: #64748b; margin: 10px 0 0; }
        .rp-wrong__more small { display: block; margin-top: 2px; }

        /* D-187：免费版「企查查式」隐藏项 —— 值由服务端替换成方块，不是 CSS 遮罩 */
        /* D-192（二次修订）：按用户反馈回归**克制的白卡** —— 去掉深色渐变头、模糊条、药丸标签与橙色按钮。
           上一版把 `.rp-btn`（height:34px）和自定义按钮类叠加，导致文字溢出到色块外（截图实测）。 */
        .rp-cta--unlock { background: transparent; border: 0; padding: 0; }
        /* D-193：加一点毛玻璃质感 —— 右上角柔和光斑（模糊）+ 磨砂 CTA 条；
           不遮挡任何文字（上一版整块雾化吃过亏），只在留白与底色上做层次。 */
        .rp-unlock {
            position: relative; overflow: hidden; margin: 14px 0 6px; border-radius: 12px;
            border: 1px solid var(--line);
            background: linear-gradient(180deg, #fff 0%, #fcfdff 62%, #f8fbff 100%);
            box-shadow: 0 1px 2px rgba(15, 30, 61, .04), 0 8px 24px rgba(15, 30, 61, .05);
        }
        .rp-unlock::before {
            content: ''; position: absolute; top: -46px; right: -34px; width: 190px; height: 160px;
            background: radial-gradient(circle at 50% 50%, rgba(42, 111, 224, .16), rgba(42, 111, 224, 0) 68%);
            filter: blur(6px); pointer-events: none;
        }
        .rp-unlock__head {
            position: relative; display: flex; align-items: center; gap: 10px; padding: 14px 16px;
            background: rgba(247, 249, 253, .7); border-bottom: 1px solid var(--line);
            -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
        }
        .rp-unlock__lock { flex: 0 0 auto; font-size: 15px; line-height: 1; opacity: .75; }
        .rp-unlock__t { margin: 0; font-size: 14.5px; font-weight: 600; color: var(--ink); }
        .rp-unlock__s { margin: 2px 0 0; font-size: 12.5px; color: var(--muted); }
        .rp-unlock__list { margin: 0; padding: 2px 16px; list-style: none; }
        .rp-unlock__list li {
            display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
            padding: 9px 0; border-bottom: 1px dashed #eef2f8; font-size: 13px; color: #334155;
        }
        .rp-unlock__list li:last-child { border-bottom: 0; }
        .rp-unlock__list em {
            flex: 0 0 auto; font-style: normal; font-size: 12px; font-weight: 600; color: var(--blue);
        }
        .rp-unlock__foot {
            position: relative; padding: 14px 16px 16px; text-align: center;
            background: rgba(248, 251, 255, .72); border-top: 1px solid var(--line);
            -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
        }
        @media print {
            .rp-unlock::before { display: none; }
            .rp-unlock__foot { background: #f8fbff; -webkit-backdrop-filter: none; backdrop-filter: none; }
        }
        .rp-unlock__foot-t { margin: 0 0 9px; font-size: 14px; font-weight: 600; color: var(--ink); }
        .rp-unlock__btn {
            display: block; width: 100%; height: auto; padding: 12px 16px;
            border: 0; border-radius: 9px; background: var(--ink); color: #fff !important;
            font: inherit; font-size: 14.5px; font-weight: 600; line-height: 1.4;
            text-align: center; text-decoration: none !important; cursor: pointer;
            transition: background .18s ease;
        }
        .rp-unlock__btn:hover { background: #1b3161; color: #fff !important; }
        .rp-unlock__foot-n { margin: 9px 0 0; font-size: 11.5px; color: var(--muted-2); line-height: 1.7; }
        .rp-unlock__foot-n b { color: var(--muted); font-weight: 600; }
        @media (max-width: 560px) {
            .rp-unlock__head { padding: 12px 14px; }
            .rp-unlock__list { padding: 2px 14px; }
            .rp-unlock__foot { padding: 12px 14px 14px; }
            .rp-unlock__t { font-size: 14px; }
        }
        /* 顾问名片（免费版 / 完整版共用） */
        .rp-sales--inline { display: flex; align-items: flex-start; gap: 14px; }
        .rp-sales__avatar {
            flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%;
            display: grid; place-items: center; font-size: 17px; font-weight: 700;
            color: #fff; background: linear-gradient(135deg, #4f8ff0, #2ee0c0);
        }
        .rp-sales__body { flex: 1 1 auto; min-width: 0; }
        .rp-sales__name { font-size: 14.5px; color: #123a75; }
        .rp-sales__name span { color: #64748b; font-weight: 400; }
        .rp-sales__note { font-size: 13px; color: #1e3a8a; margin: 3px 0 8px; }
        .rp-sales__actions { display: flex; flex-wrap: wrap; gap: 8px; }
        .rp-sales__qr {
            flex: 0 0 auto; width: 84px; height: 84px; object-fit:contain;
            border-radius: 8px; background: #fff; border: 1px solid #dbe6f5;
        }
        @media (max-width: 560px) {
            .rp-sales--inline { flex-wrap: wrap; }
            .rp-sales__qr { width: 68px; height: 68px; }
        }

        .rp-foot {
            margin: 22px 0 0; padding: 18px 4px 0; border-top: 1px solid var(--line);
            font-size: 11.5px; color: var(--muted-2); line-height: 1.9;
        }
        .rp-foot b { color: var(--muted); font-weight: 600; }

        /* ── 移动端底栏 ── */
        .rp-dock {
            position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
            display: none; gap: 8px; padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
            background: rgba(255, 255, 255, .95); border-top: 1px solid var(--line);
            backdrop-filter: blur(10px);
        }
        .rp-dock .rp-btn { flex: 1; height: 42px; font-size: 13.5px; }

        /* ── 轻提示 ── */
        .rp-toast {
            position: fixed; left: 50%; bottom: 84px; transform: translate(-50%, 12px);
            z-index: 60; padding: 10px 18px; border-radius: 999px; background: rgba(15, 30, 61, .94);
            color: #fff; font-size: 13px; opacity: 0; pointer-events: none; transition: all .24s;
            max-width: calc(100vw - 32px); text-align: center;
        }
        .rp-toast.is-on { opacity: 1; transform: translate(-50%, 0); }

        /* ── 行内提示条（D-246）──────────────────────────────────────────────
         * 原来「报告已生成」用浮动 toast（bottom:78px），手机上正好压在「一、结论」
         * 的正文上 —— 首屏第一段被遮住 3.6 秒，客户以为页面坏了。
         * 改成**页面内的条带**（跟着内容走、不遮任何东西），自动消失。 */
        .rp-flash {
            margin: 0 0 12px; padding: 10px 14px; border-radius: 12px;
            display: flex; align-items: flex-start; gap: 9px;
            background: linear-gradient(180deg, #effcf7, #f9fffd);
            border: 1px solid #b7ecdd; color: #0b5f52; font-size: 12.8px; line-height: 1.6;
            box-shadow: 0 6px 18px rgba(16, 185, 129, .1);
            animation: rp-flash-in .28s ease-out;
        }
        .rp-flash[hidden] { display: none; }
        .rp-flash::before {
            content: "✓"; flex: 0 0 18px; height: 18px; margin-top: 1px;
            display: grid; place-items: center; border-radius: 50%;
            background: #10b981; color: #fff; font-size: 11px; font-weight: 700;
        }
        .rp-flash b { font-weight: 650; }
        .rp-flash.is-out { animation: rp-flash-out .24s ease-in forwards; }
        @keyframes rp-flash-in { from { opacity: 0; transform: translateY(-6px) } to { opacity: 1; transform: none } }
        @keyframes rp-flash-out { to { opacity: 0; transform: translateY(-4px) } }

        /* ── 我的报告面板 ── */
        .rp-modal { position: fixed; inset: 0; z-index: 70; display: none; }
        .rp-modal.is-on { display: block; }
        .rp-modal__mask { position: absolute; inset: 0; background: rgba(15, 30, 61, .45); }
        .rp-modal__panel {
            position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
            width: min(520px, calc(100vw - 32px)); max-height: min(70vh, 560px); overflow: auto;
            background: #fff; border-radius: 16px; padding: 22px 22px 18px; box-shadow: 0 24px 60px rgba(15, 30, 61, .28);
        }
        .rp-modal__panel h2 { font-size: 16px; margin-bottom: 4px; }
        .rp-modal__panel > p { font-size: 12.5px; color: var(--muted); margin: 0 0 14px; }
        .rp-saved-list { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 8px; }
        .rp-saved-item {
            display: flex; align-items: center; gap: 10px; padding: 10px 12px;
            border: 1px solid var(--line); border-radius: 10px; font-size: 13px;
        }
        .rp-saved-item b { font-weight: 600; }
        .rp-saved-item span { color: var(--muted-2); font-size: 11.5px; font-family: var(--num); }
        .rp-saved-item a { margin-left: auto; font-size: 12.5px; }
        .rp-empty { font-size: 12.5px; color: var(--muted); padding: 14px; text-align: center; background: var(--line-soft); border-radius: 10px; }

        @media (max-width: 760px) {
            /* 导航条变矮：8+32+8+1 = 49px，必须同步给进度条 / 目录，否则顶部露出 6px 缝隙 */
            body { font-size: 14.5px; --rp-top-h: 49px; }
            .rp-top { padding: 8px 14px; gap: 8px; }
            .rp-brand__tag { display: none; }
            .rp-top__actions { gap: 6px; }
            .rp-top__actions .rp-btn { height: 32px; padding: 0 10px; font-size: 12.5px; }
            .rp-top__actions .rp-btn--desktop { display: none; }
            .rp-sheet { padding: 0 12px; margin-top: 12px; }
            .rp-cover { padding: 24px 20px 22px; border-radius: 18px; }
            .rp-cover h1 { font-size: 23px; }
            .rp-cover__verdict { font-size: 14.5px; margin-bottom: 18px; }
            /* D-246：封面底部「生成时间 / 线上资产 / 城市 / 采样」——手机上一行放不下，
               采样那行有 5 个模型名，横排会把「采样」两字拆到两行。改为两列网格 + 标签在上、值在下；
               采样这类长值整行铺开（`.is-wide`）。 */
            .rp-cover__meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px 10px; font-size: 11.5px; }
            .rp-cover__meta span { display: flex; flex-direction: column; gap: 1px; align-items: flex-start; min-width: 0; }
            .rp-cover__meta .is-wide { grid-column: 1 / -1; }
            .rp-cover__body { grid-template-columns: 1fr; gap: 18px; }
            .rp-gauge { display: flex; align-items: center; justify-items: start; gap: 16px; flex-wrap: wrap; }
            /* 环内 svg 是固定 128 的（上面已改成 100%），容器缩到 92 时数字与评级会叠在一起 */
            .rp-gauge__ring { width: 92px; height: 92px; flex: 0 0 92px; }
            .rp-gauge__num b { font-size: 25px; }
            .rp-gauge__num small { font-size: 10px; margin-top: 2px; }
            .rp-gauge__grade { text-align: left; line-height: 1.5; flex: 1 1 140px; min-width: 0; }
            /* 目录：手机上换行铺满，不用横向滑动才发现「3–6 个月预期」 */
            .rp-toc { flex-wrap: wrap; overflow-x: visible; row-gap: 6px; padding: 8px 2px; }
            /* 7 个胶囊铺两行时，第二行只有 3 个 → 右侧空出一大块（客户截图标注）。
               让每行的胶囊按剩余空间均分撑满，行内左右都齐。 */
            .rp-toc a { flex: 1 1 auto; justify-content: center; height: 28px; padding: 0 10px; font-size: 12px; }
            /* 目录变两行后更高：锚点跳转的补偿距离跟着加 */
            .rp-sec, .rp-fold, .rp-cta, .rp-sales { scroll-margin-top: 156px; }
            /* D-246：三列并排在 375px 屏上每格只有 ~100px ——「95% 区间 / n=70 / 品牌名对照」
               会挤成一团并顶出卡片（2026-10-25 客户截图）。改为 2 列 + 信息量最大的
               「AI 提及率」独占整行，数字放大，小注换行铺开。 */
            .rp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
            .rp-kpi { padding: 10px 11px; }
            .rp-kpi dt { display: flex; flex-wrap: wrap; align-items: baseline; font-size: 11px; }
            .rp-kpi dd { font-size: 16px; }
            .rp-kpi--wide { grid-column: 1 / -1; }
            .rp-kpi--wide dd { font-size: 21px; }
            .rp-kpi__hint { display: block; margin: 3px 0 0; font-size: 10.5px; line-height: 1.55; }
            .rp-kpi--wide .rp-kpi__hint { font-size: 11px; }
            .rp-sec { padding: 20px 18px 22px; border-radius: 14px; }
            .rp-sec h2 { font-size: 17px; }
            .rp-lead { font-size: 15px; }
            .rp-check { grid-template-columns: 8px 1fr; row-gap: 2px; }
            .rp-check__note { grid-column: 2; }
            /* 手机上两模型并排会挤成一列，且左右对照仍成立（上=模型 A，下=模型 B） */
            .rp-evd__grid.is-two { grid-template-columns: 1fr; }
            .rp-evd { padding: 12px 13px 10px; }
            .rp-evd__col { padding: 9px 10px; }
            .rp-fold > summary { padding: 15px 18px; align-items: flex-start; gap: 8px; }
            .rp-fold__body { padding: 0 18px 20px; }
            .rp-cta { padding: 20px 18px; }
            .rp-dock { display: flex; }
            .rp-toast { bottom: 78px; }

            /* 表格转卡片：手机上不再横向滚动 */
            .rp-table thead { display: none; }
            .rp-table, .rp-table tbody, .rp-table tr, .rp-table td { display: block; width: 100%; }
            .rp-table tr { padding: 10px 0; border-bottom: 1px solid var(--line-soft); }
            .rp-table tr:last-child { border-bottom: 0; }
            .rp-table td { border: 0; padding: 2px 14px; display: grid; grid-template-columns: 92px 1fr; gap: 8px; }
            .rp-table td::before { content: attr(data-label); font-size: 11.5px; color: var(--muted-2); }
            .rp-table td:first-child { padding-top: 8px; }
            .rp-table td:last-child { padding-bottom: 8px; }
        }
        @media (min-width: 761px) {
            .rp-dock { display: none; }
        }
        @media (prefers-reduced-motion: reduce) {
            * { transition: none !important; animation: none !important; }
        }
        /* ── 打印 / 另存为 PDF ── */
        @page { size: A4; margin: 12mm 10mm; }
        @media print {
            html, body { background: #fff !important; }
            body { padding: 0; font-size: 11pt; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
            .no-print, .rp-dock, .rp-toast, .rp-modal, .rp-scroll, .rp-flash { display: none !important; }
            .rp-sheet { max-width: none; margin: 0; padding: 0; }
            /* 封面独占第一页：打印件／PDF 是拿去给老板看的，第一页就该是封面 */
            .rp-cover { border-radius: 0; padding: 26px 22px; box-shadow: none; break-inside: avoid; break-after: page; }
            .rp-cover h1 { font-size: 22pt; }
            .rp-sec, .rp-fold, .rp-cta, .rp-sales { box-shadow: none; border-radius: 0; border: 0; border-top: 1px solid var(--line); padding: 14px 2px 8px; margin-top: 0; break-inside: auto; }
            .rp-sec h2 { font-size: 13pt; }
            /* 标题不得落在页脚：标题与后一段一起走 */
            .rp-sec h2, .rp-sec h3, .rp-fold > summary { break-after: avoid; }
            .rp-fold > summary { padding: 12px 2px; }
            .rp-fold > summary::after { display: none; }
            .rp-fold__body { padding: 0 2px 8px; }
            .rp-table { font-size: 9.5pt; }
            .rp-table th, .rp-table td { padding: 6px 8px; }
            /* 表格：行不断、表头每组重复；整表也不硬切（长表允许跨页） */
            .rp-table thead { display: table-header-group; }
            /* D-167：打印件可直接当执行工作簿 —— 每项动作前给一个勾选框 */
            .rp-action__t::before { content: "☐"; margin-right: 6px; font-family: var(--font); }
            .rp-table tr, .rp-evidence, .rp-evd, .rp-action, .rp-dim, .rp-check, .rp-gap, .rp-meter { break-inside: avoid; }
            .rp-table-wrap { break-inside: auto; }
            .rp-foot { break-inside: avoid; }
            a { color: inherit; }
            a[href^="tel:"]::after { content: ""; }
        }
        /* ==REPORT-CSS-END== */
