/* ============================================================
 * plan_card.css —— 赛程卡片 / 方案卡片 共享样式（五处同源）
 *
 * ⚠️ 设计说明、取值依据、让位逻辑、响应式机制、使用范围、个性化改法
 *    全部见：H5/docs/赛程卡片公共样式的设计和使用范围.md
 * ⚠️ 标题行（编号/联赛 · 队名VS队名 · 日期时间）的**布局调整优先级策略**与调节入口速查：
 *    H5/docs/H5主站样式设计说明.md §S27 —— 改 M5/M5b/M6/M6b 前先读它
 *    本文件只保留「模块序号 + 一句话标题」，改动前请先读该文档对应小节。
 *
 * 所有规则限定在 .plan-card-view 下（本组件用到 .card/.meta/.tag/.time/table
 * 等通用类名，无作用域会污染宿主页面）。使用方在包裹卡片的容器上加该类。
 * ============================================================ */

/* M0 作用域与设计令牌：--h5-* 基础 + --share-* 本组件专用；4 档 @media 按视口降档 */
.plan-card-view{--h5-page-inline:16px;--h5-section-gap:12px;--h5-card-inline:12px;--h5-card-block:12px;
    --h5-card-gap:8px;--h5-control-gap:8px;--h5-font-body:14px;--h5-font-data:14px;
    --h5-font-aux:12px;--h5-tap-min:24px;--h5-tap-primary:44px;
    --h5-action-bar-height:64px;--share-core-size:15px;--share-summary-size:10px;
    --share-score-size:11px;--share-vs-size:12px;--share-pass-gap:2px;
    --share-pass-pad-x:4px;--share-pass-pad-y:2px;--share-meta-gap:3px;
    --share-pass-font:var(--share-core-size);--share-meta-font:12px;--share-header-block:14px;
    --share-header-inline:16px;--share-logo-size:26px;--share-brand-size:17px;
    --share-slogan-size:12px;--share-stat-size:17px;--share-table-size:12px;--share-action-size:15px;}
@media (max-width:430px){
.plan-card-view{--h5-page-inline:14px;--h5-section-gap:10px;--h5-card-inline:11px;--h5-card-block:11px;
    --h5-card-gap:7px;--h5-control-gap:7px;--h5-font-body:13.5px;--h5-font-data:13.5px;
    --h5-font-aux:11.5px;--share-core-size:13px;--share-score-size:10px;
    --share-pass-gap:2px;--share-pass-pad-x:3px;--share-pass-pad-y:1px;--share-meta-gap:3px;
    /* 7 个过关框 + 来源 + 时间必须同行（不换行、不截断），故 320→430 连续缩放 */
    --share-pass-font:clamp(7.5px,calc(2.4vw - 0.6px),10.5px);
    --share-meta-font:calc(var(--share-pass-font) + 1px);
    --share-header-block:12px;--share-header-inline:14px;--share-logo-size:24px;
    --share-brand-size:16px;--share-slogan-size:11px;--share-stat-size:16px;
    --share-table-size:11.5px;--share-action-size:14px;}
}
@media (max-width:400px){
.plan-card-view{--h5-page-inline:12px;--h5-section-gap:9px;--h5-card-inline:10px;--h5-card-block:9px;
    --h5-card-gap:6px;--h5-control-gap:6px;--h5-font-body:13px;--h5-font-data:13px;
    --h5-font-aux:11px;--share-core-size:12px;--share-summary-size:9px;
    --share-score-size:9px;--share-vs-size:11px;--share-header-block:10px;
    --share-header-inline:12px;--share-logo-size:23px;--share-brand-size:15px;
    --share-slogan-size:10.5px;--share-stat-size:15px;--share-table-size:11px;--share-action-size:13.5px;}
}
@media (max-width:360px){
.plan-card-view{--h5-page-inline:10px;--h5-section-gap:8px;--h5-card-inline:8px;--h5-card-block:8px;
    --h5-card-gap:5px;--h5-control-gap:5px;--h5-font-body:13px;--h5-font-data:12px;
    --h5-font-aux:10px;--share-core-size:11px;--share-summary-size:8px;
    --share-score-size:8px;--share-vs-size:10px;--share-pass-gap:1px;--share-pass-pad-x:2px;--share-meta-gap:2px;
    --share-header-block:9px;--share-header-inline:10px;--share-logo-size:22px;
    --share-brand-size:14px;--share-slogan-size:10px;--share-stat-size:14px;
    --share-table-size:10.5px;
    --share-action-size:13px;}
}
@media (max-width:319px){
.plan-card-view{--h5-page-inline:8px;--h5-section-gap:7px;--h5-card-inline:7px;--h5-card-block:7px;
    --h5-card-gap:4px;--h5-control-gap:4px;--share-core-size:10px;--share-score-size:7px;
    --share-vs-size:9px;--share-pass-pad-x:1px;--share-header-block:8px;
    --share-header-inline:8px;--share-logo-size:21px;--share-brand-size:13px;
    --share-slogan-size:9.5px;--share-stat-size:13px;--share-table-size:10px;--share-action-size:12px;}
}

/* M1 方案外壳：白底容器 / 元信息行 / 标签 / 时间 / 摘要 / 小节标题
   左右 padding 下限 6px 不可去（容纳角标外凸），见文档 §3.5 */
.plan-card-view .card{position:relative;background:#fff;border-radius:12px;
    padding:3px max(6px, calc(var(--h5-card-inline) / 2)) 4px;
    margin-bottom:2px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.plan-card-view .meta{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;
    gap:var(--share-meta-gap);margin-bottom:var(--h5-card-gap)}
.plan-card-view .tag{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600}
.plan-card-view .tag.ai{background:#fee2e2;color:#dc2626}
.plan-card-view .tag.manual{background:#dbeafe;color:#2563eb}
.plan-card-view .tag.source{padding:0;border-radius:0;background:transparent;color:#9ca3af;font-size:var(--share-meta-font);font-weight:400}

/* M2 过关方式标签：两个类名都要 justify-self:start，否则被 grid 拉成长条 */
.plan-card-view .pass-types,
.plan-card-view .pass-type{justify-self:start}
.plan-card-view .pass-types{min-width:0;display:inline-flex;align-items:center;flex-wrap:nowrap;gap:var(--share-pass-gap)}
.plan-card-view .pass-type{padding:var(--share-pass-pad-y) var(--share-pass-pad-x);border:1px solid #fecaca;
    border-radius:8px;background:#fee2e2;
    color:#dc2626;font-size:var(--share-pass-font);font-weight:700;line-height:1.2;white-space:nowrap}
.plan-card-view .time{grid-column:3;grid-row:1;font-size:var(--share-meta-font);color:#9ca3af;white-space:nowrap}
.plan-card-view .summary{background:#fef2f2;border-left:3px solid #ef4444;border-radius:0 8px 8px 0;
         padding:10px 12px;font-size:13px;color:#4b5563;margin-bottom:12px}
.plan-card-view .sec-t{font-size:13px;font-weight:700;color:#374151;margin:14px 0 8px;padding-left:8px;border-left:3px solid #ef4444}
.plan-card-view .sec-t:first-child{margin-top:0}

/* M3 赛程卡容器与卡片五态：本元素是 @container 查询容器（plan-card-host） */
.plan-card-view .share-matches{padding:2px 3px 0 0;container-type:inline-size;container-name:plan-card-host}
/* direct（直接组合）没有优化行，赛程卡片整体上移、被开奖印章压住首张卡片的队名与比分。
   ⚠️ 微调点：只改这个 margin-top（各档实测值见 docs「六点五 ⑦」）。 */
.plan-card-view .card.no-opt-row .share-matches{margin-top:8px}
.plan-card-view .plan-match-card{position:relative;background:#fff;border-radius:10px;
    --plan-card-core:var(--share-core-size);--plan-card-summary:var(--share-summary-size);
    --plan-card-score:var(--share-score-size);--plan-card-vs:var(--share-vs-size);
    padding:7px clamp(4px,calc(2.13vw - 2.8px),6px);margin-bottom:4px;
    box-shadow:0 1px 3px rgba(0,0,0,.06);border:1.5px solid transparent}
.plan-card-view .plan-match-card.in-cart{border-color:#22c55e;background:#f0fdf4}
.plan-card-view .plan-match-card.in-cart.recommended{border-color:#3b82f6;background:#eff6ff}
.plan-card-view .plan-match-card.finished{border-color:#e5e7eb;background:#f9fafb;opacity:.92}
.plan-card-view .plan-match-card.postponed{border-color:#d1d5db;background:#f9fafb;opacity:.92}

/* M4 B17 单关标识（2026-08-05 取代「单」盾牌）：红三角角标挂 0/-1 标签左上角、
   该行三个赔率框套红外框。角标只在「标识行有渲染」时输出（详见 plan_share_view.js）。 */
.plan-card-view .plan-odds-label{position:relative;overflow:hidden}
.plan-card-view .mk-single{position:absolute;top:-12px;left:-12px;width:24px;height:24px;
    background:#ef4444;transform:rotate(45deg);z-index:2;pointer-events:none}
.plan-card-view .mk-single::after{content:'单';position:absolute;left:50%;top:50%;
    transform:translate(-50%,-50%) translateX(8px) rotate(-90deg);  /* 父级+45°后局部+x=右下对角线；-90°令字呈屏幕逆时针45° */
    color:#fff;font-size:8px;font-weight:700;line-height:1;font-style:normal}
/* 红外框只圈三个赔率框、不含 0/-1 标签（截图 1 口径）。标签与赔率框同居一个行容器，
   直接给行加边框会连标签一起框住 —— 改用 ::after 描边层，左端 = --odds-label-w + --odds-gap。
   ⚠️ 改标签宽度只改 --odds-label-w，勿再写死像素（原先两处硬编码已分叉过）。 */
.plan-card-view .plan-odds-row.single-outline{position:relative}
/* 四周对称外扩 --outline-pad：比三个赔率框略大一圈、贴着但不重合（原先只有上/下/右外扩，
   左端正好压在赔率框边缘上，看着不对称）。左端起点 = 标签宽 + gap - 外扩量。 */
.plan-card-view .plan-odds-row.single-outline::after{content:'';position:absolute;
    --outline-pad:2px;
    top:calc(-1 * var(--outline-pad));bottom:calc(-1 * var(--outline-pad));
    left:calc(var(--odds-label-w) + var(--odds-gap) - var(--outline-pad));
    right:calc(-1 * var(--outline-pad));
    border:1.5px solid #ef4444;border-radius:8px;pointer-events:none}

/* M5 标题行三列 grid（左:编号+联赛 / 中:队名区 / 右:时间[+按钮]）
   ⚠️ --single-avoid < --rec-avoid 是**故意的**（2026-08-07 用户订立，原「须同值」已废）：
   左列装「编号+联赛」天生比右列的「时间」宽 6.5~21px，而中列偏移 = (左列宽-右列宽)/2，
   这就是 VS 整体偏右的成因之一。左列 padding/gap 压到 1px 是在朝「左右列等宽」补偿。
   两个外凸角标都已删除（左盾牌 B17 / 右 👍 2026-08-06），让位语义已消失，纯剩内边距。
   ⚠️ 中列的 max-width:none 必须显式写；⚠️ 勿给中列加 min-width:min-content
   VS 居中改由中列内部等分保证（见 M6），仍不要动 grid 的 auto|1fr|auto —— 见文档 §3.2 */
.plan-card-view .plan-card-summary{--rec-avoid:3px;--single-avoid:1px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
    gap:clamp(2px,calc(1.06vw - 1.4px),3px);min-width:0;
    padding:0 clamp(2px,calc(1.06vw - 1.4px),3px) 4px;white-space:nowrap;
    overflow:visible;font-size:var(--plan-card-summary);line-height:1.2}
.plan-card-view .plan-sum-left, .plan-card-view .plan-sum-right{min-width:0;display:flex;align-items:center;
    gap:clamp(2px,calc(1.06vw - 1.4px),3px);overflow:hidden}
.plan-card-view .plan-sum-left{justify-content:flex-start;padding-left:var(--single-avoid);gap:1px}
/* 横排档左右列拉平到同一 min-width：左列（编号+联赛名恒 3.6em）比右列（日期时间）宽约 15px，
   不补的话比分整体恒偏右 7.7px、与绝对居中的开奖印章对不齐（2026-08-07 用户报障）。
   竖排档另有 4.2em 一条覆盖（特异性更高 / 在后）。 */
.plan-card-view .plan-sum-left, .plan-card-view .plan-sum-right{min-width:8.5em}
/* L2：外列字号减一号。⚠️ 必须**同时**缩三处 —— 列的 font-size（min-width 的 em 基准）、
   编号（用 --plan-card-core 变量，不继承）、联赛名（用 --plan-card-summary 变量，不继承）。
   只缩第一处会让列宽缩、内容不缩，反被内容撑破 min-width，左右列重新变得不等（实测踩过）。
   时间无自己的 font-size，继承 .plan-sum-right 即可。 */
.plan-card-view .plan-match-card.shrink-side .plan-sum-left,
.plan-card-view .plan-match-card.shrink-side .plan-sum-right{font-size:calc(var(--plan-card-summary) - 1px)}
.plan-card-view .plan-match-card.shrink-side .plan-card-no{font-size:calc((var(--plan-card-core) - 1px) * .85)}
.plan-card-view .plan-match-card.shrink-side .plan-card-league{font-size:calc(var(--plan-card-summary) - 1px)}
.plan-card-view .plan-match-card.shrink-side .plan-card-league.lg-sm{font-size:calc(var(--plan-card-summary) - 2px)}
/* L3：列宽再降一档（叠在 L2 已缩小的 em 基准上）。
   ⚠️ 降幅不能大到让左列内容撑破 min-width —— 一撑破左右列就重新不等、VS 又被推离中心
   （7.5em 时实测残差 2.2px、总偏移冲到 11.2px 超容差）。8em 是实测下不撑破的档。 */
.plan-card-view .plan-match-card.shrink-side-more .plan-sum-left,
.plan-card-view .plan-match-card.shrink-side-more .plan-sum-right{min-width:8em}
.plan-card-view .plan-sum-right{justify-content:flex-end;padding-right:var(--rec-avoid)}
.plan-card-view .plan-sum-center{min-width:0;max-width:none;
    display:flex;align-items:center;justify-content:center;gap:clamp(2px,calc(1.06vw - 1.4px),3px)}

/* M6 队名区**等分** —— VS 严格落在中列正中（2026-08-07 用户订立，取代原「按内容宽分配」）。
   长队名不是靠抢对侧空间，而是走 M6b 的分级让位链，见文档 §3.3 */
.plan-card-view .plan-sum-center .plan-compact-team{flex:1 1 0}
.plan-card-view .plan-card-no, .plan-card-view .plan-card-league, .plan-card-view .plan-card-time, .plan-card-view .plan-summary-middle{flex-shrink:0}
/* 编号缩 0.85em：它与队名共用 --plan-card-core，直接改变量会把队名一起缩掉 */
.plan-card-view .plan-card-no{color:#ef4444;font-size:calc(var(--plan-card-core) * .85);font-weight:700}
.plan-card-view .plan-card-league{color:#2563eb;font-weight:600;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.plan-card-view .plan-card-time{color:#6b7280;display:inline-flex;align-items:center;gap:.3em}
.plan-card-view .plan-card-time i, .plan-card-view .plan-card-league i{font-style:normal}

/* M5b 左列收敛（2026-08-07 用户订立）：左列比右列宽多少，中列就整体右移一半，
   这是 VS 离开正中的成因之一。按联赛名字数逐级收敛，最后一档连编号一起竖排。 */
/* 联赛名占位恒定：不设的话「欧冠」(2字) 与「巴西杯」(3字) 的左列差 10px，
   同一方案内上下两张卡的比分就落不到同一条竖线上（2026-08-07 用户报障）。
   3.6em ≈ 4 字缩一号的宽度，2/3 字居中留白、5-6 字折行后上排 3 字也在此内 ⇒ 左列恒宽。 */
.plan-card-view .plan-card-league{min-width:3.6em;text-align:center}
.plan-card-view .plan-card-league.lg-sm{font-size:calc(var(--plan-card-summary) - 1px)}
.plan-card-view .plan-card-league.lg-2line{display:inline-flex;flex-direction:column;
    align-items:center;line-height:1.1}
/* 左右列各自折成上下两行（编号/联赛 与 日期/时间），两侧同时生效才对称。
   触发：联赛名 ≥7 字 或 主客队名都 ≥5 字（渲染器挂 .head-stacked），或窄设备（下方 @media）。 */
.plan-card-view .plan-card-summary.head-stacked .plan-sum-left,
.plan-card-view .plan-card-summary.head-stacked .plan-sum-right,
.plan-card-view .plan-card-summary.head-stacked .plan-card-time{flex-direction:column;
    align-items:center;justify-content:center;gap:0;line-height:1.15}
/* 左右列补到同一 min-width 消掉「编号比日期宽」带来的基础偏移（竖排后左列恒 ≈4.2em、
   右列「08-05」只有 ≈3.3em，实测各档比值一致）。补的是右列本就空着的地方，不吃中列。 */
.plan-card-view .plan-card-summary.head-stacked .plan-sum-left,
.plan-card-view .plan-card-summary.head-stacked .plan-sum-right{min-width:4.2em}
/* 已经竖排时联赛名不再自己折行，否则左列变三行、把整张卡撑高 */
.plan-card-view .plan-card-summary.head-stacked .plan-card-league.lg-2line{flex-direction:row}
/* ⚠️ 竖排档也**不能**用 1fr auto 1fr：1fr 是「平分剩余空间」而非按内容，左右列会被撑到
   77.5px（横排档才 50/52px），反而从中列夺走空间 —— 320px 实测队名 70.1→67px，是负优化。
   收敛左列改用「限制联赛名宽度」：竖排后左列宽 = max(编号, 联赛名)，把后者压到编号量级，
   左列即由格式固定的编号决定、不再随联赛名膨胀。 */
.plan-card-view .plan-card-summary.head-stacked .plan-card-league{max-width:4em;
    overflow:hidden;text-overflow:ellipsis}
@media (max-width:375px){
.plan-card-view .plan-sum-left, .plan-card-view .plan-sum-right,
.plan-card-view .plan-card-time{flex-direction:column;
    align-items:center;justify-content:center;gap:0;line-height:1.15}
.plan-card-view .plan-sum-left, .plan-card-view .plan-sum-right{min-width:4.2em}
.plan-card-view .plan-card-league.lg-2line{flex-direction:row}
.plan-card-view .plan-card-league{font-size:calc(var(--plan-card-summary) - 1px);
    max-width:4em;overflow:hidden;text-overflow:ellipsis}
}
.plan-card-view .plan-status-postponed{flex-shrink:0;padding:1px 4px;border-radius:7px;background:#6b7280;
    color:#fbbf24;font-size:11px;font-weight:700;line-height:1.2}
.plan-card-view .plan-status-cancelled{flex-shrink:0;padding:1px 4px;border-radius:7px;background:#6b7280;
    color:#f87171;font-size:11px;font-weight:700;line-height:1.2}
/* M9b 进行中(status=4,A032)：与已推迟/已取消同一尺寸规格，只换配色（绿底表示比赛正在进行）。
   ⚠️ 必须有这条规则——渲染器输出了 .plan-status-live，类没定义就是一段无样式裸字。 */
.plan-card-view .plan-status-live{flex-shrink:0;padding:1px 4px;border-radius:7px;background:#059669;
    color:#ecfdf5;font-size:11px;font-weight:700;line-height:1.2}
.plan-card-view .plan-compact-team{flex:0 1 auto;min-width:0;display:flex;align-items:center;overflow:visible;
    color:#1f2937;font-size:var(--plan-card-core);font-weight:700}
.plan-card-view .plan-compact-team.home{justify-content:flex-end}
.plan-card-view .plan-compact-team.away{justify-content:flex-start}
.plan-card-view .plan-compact-team .team-name-text{min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plan-card-view .plan-compact-team .team-score-value{flex-shrink:0;color:#ef4444;font-weight:700;font-size:var(--plan-card-score);
    margin:0 clamp(2px,calc(1.06vw - 1.4px),2.5px)}
/* 已结束时内含两行：最终比分 + 半场小字，故改为纵向 flex（未结束只有 VS，仍是单行、观感不变）。
   line-height 收到 1.05：两行叠起来不至于把整张卡撑高太多。 */
.plan-card-view .plan-summary-middle{position:relative;color:#ef4444;font-weight:800;text-transform:lowercase;font-size:var(--plan-card-vs);
    margin:0 clamp(1px,calc(1.06vw - 2.4px),2px);
    display:inline-flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.05}
/* 半场比分：与 H5 首页 .half-score-box 同款（白底灰边小字），挂在最终比分正下方 */
/* 半场小字比比分本身还宽，参与宽度计算会把中列 VS 区从 ~20px 撑到近 40px，
   等于从两侧队名各抢走 10px。改绝对定位后不占宽，视觉位置不变（2026-08-07 用户订立）。 */
.plan-card-view .plan-summary-middle.has-half{padding-bottom:1.15em}
.plan-card-view .plan-half-score{position:absolute;left:50%;bottom:0;transform:translateX(-50%);
    padding:0 3px;border:1px solid #ccc;border-radius:5px;
    background:#fff;color:#999;font-size:8px;font-weight:400;font-style:normal;line-height:1.25;
    white-space:nowrap;text-transform:none}

/* M7 赔率行：让球标签 + 三个赔率框（预测/选中/实际赛果/禁用 四态） */
/* margin-top 1→4px：红外框(::after)上下各外扩 2px，行距只有 1px 时框会与相邻行贴死/被压，
   显示不出完整的圆角边（2026-08-05 用户订立）。 */
/* --odds-label-w：0/-1 标签宽度。红外框的左端要从它右侧起算，故两者必须同源 —— 各端改标签宽度只改这个变量即可（web PC 改成 34/26px 时曾漏改红框 left，红框切进赔率框 16~24px）。 */
.plan-card-view .plan-odds-row{--odds-label-w:52px;--odds-gap:2px;display:flex;align-items:center;gap:var(--odds-gap);margin-top:4px}
/* 宽 26→52（2 倍）：左上角「单」角标要有落点（该卡无锁定态，右上角暂空）。
   同行赔率框 flex:1 均摊缩窄，无需另改。 */
.plan-card-view .plan-odds-label{flex-shrink:0;width:var(--odds-label-w);height:22px;border:1px solid #e5e7eb;border-radius:5px;
    background:#f9fafb;font-size:13px;font-weight:700;color:#888;text-align:center;line-height:20px}
.plan-card-view .plan-odds-label.positive{color:#2563eb}
.plan-card-view .plan-odds-label.negative{color:#ef4444}
.plan-card-view .plan-odds-label.zero{color:#888}
.plan-card-view .plan-odds-box{position:relative;flex:1;display:flex;align-items:center;justify-content:center;
    gap:2px;min-height:22px;padding:0 1px;border:1px solid #e5e7eb;border-radius:6px;user-select:none}
.plan-card-view .plan-odds-box.active{background:#ef4444;border-color:#ef4444;color:#fff}
.plan-card-view .plan-odds-box.predicted{background:#fee2e2;border-color:#fca5a5;color:#dc2626}
.plan-card-view .plan-odds-box.ai-mark::after{content:'Ai';position:absolute;top:-7px;right:-5px;box-sizing:border-box;
    width:18px;height:18px;border-radius:50%;background:#fff;border:1.5px solid #0ea5e9;color:#ef4444;
    display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;letter-spacing:0;
    line-height:1;box-shadow:0 1px 3px rgba(14,165,233,.3);z-index:2}
.plan-card-view .plan-odds-box.disabled{opacity:.5;background:#f9fafb}
/* 胜/平/负=黑字、赔率数字=中灰（2026-08-03 用户订立，H5 首页卡 / 方案卡 / web 三处同口径）——
   **只适用于无背景色的普通态**，带背景色的两态由紧接着的下一条交还给容器色（见 §3.7）。 */
.plan-card-view .plan-odds-box .plan-odds-type{font-size:12px;line-height:1.2;color:#111827}
.plan-card-view .plan-odds-box .plan-odds-val{font-size:13px;font-weight:400;line-height:1.2;color:#6b7280}
/* 有背景色就跟随容器 color：.active 红底→白字、.predicted 浅红底→红字。用 inherit 而非写死色值，
   免得同一个颜色存两份、改一处漏一处（本条缺失时红底上是黑字+灰字，2026-08-04 修） */
.plan-card-view .plan-odds-box.active .plan-odds-type,
.plan-card-view .plan-odds-box.active .plan-odds-val,
.plan-card-view .plan-odds-box.predicted .plan-odds-type,
.plan-card-view .plan-odds-box.predicted .plan-odds-val{color:inherit}
/* 实际赛果：与 web 竞彩量化页的 .odds-cell.actual-result 同款 —— 蓝边框 + 右上角蓝圈「果」。
   （2026-08-06 由绿框绿√ 改为蓝框蓝「果」，三端赛果标识统一）
   只在**渲染出来的**赔率行上出现：卡片只画用户选过的那半行，没画的那行自然没有格子可标。 */
.plan-card-view .plan-odds-box.actual-result{border:1.5px solid #0ea5e9!important}
/* 命中（选中的正好是赛果）：只留右上角「果」，**不叠蓝框** —— 红底外再套一圈蓝边，
   看着像红块投了圈蓝影，正是用户说的「蓝色阴影」（2026-08-07 用户订立）。
   ⚠️ 只改 border-color、不改宽度：宽度仍由 .actual-result 的 1.5px 提供，布局零变化；
      写成 border:1px 会让框窄 1px，同一行里命中与未命中的格子高低宽窄对不齐。
   ⚠️ 未命中的两种标注一律不动：用户选错时（.active 与 .actual-result 落在不同格子）
      红底与蓝框各在各的位置，本就该分别标识；.predicted + .actual-result 同理（没选中就不算命中）。 */
.plan-card-view .plan-odds-box.active.actual-result{border-color:#ef4444!important}
.plan-card-view .plan-odds-box.actual-result::after{content:'果';position:absolute;top:-5px;right:-4px;
    width:16px;height:16px;border-radius:50%;background:#0ea5e9;color:#fff;
    font-size:10px;font-weight:800;line-height:16px;text-align:center;
    box-shadow:0 1px 4px rgba(14,165,233,.32);z-index:2}

/* M8 长队名压紧档：渲染器在截断后字形数 ≥6 时挂 .name-tight，只压该卡的**中间**间隙
   （两侧各自的间隙已按侧收在 M6b）。只动 margin/gap，不动字号与队徽尺寸，见文档 §3.3 */
.plan-card-view .plan-match-card.name-tight .plan-sum-center{gap:1px}
.plan-card-view .plan-match-card.name-tight .plan-summary-middle{margin:0}

/* M6b 分级让位链（2026-08-07 用户订立，**VS 居中优先、偏移排最后**）。
   定档在 JS（plan_share_view.js 的 headLayout，唯一入口），这里只按 class 执行像素让位。
   完整策略与调节入口速查见 H5/docs/H5主站样式设计说明.md §S27。

   L1 `.name-long-home/away`  该侧队名区：间隙 + 字号 + 队徽 各减一号   → 不动中心
   L2 `.shrink-side`          外列字号减一号                          → 不动中心（左右同量）
   L3 `.shrink-side-more`     外列 min-width 再降一档                 → 不动中心（左右同量）
   L4 —                       ellipsis 截断

   ⚠️ L2/L3 为何「不动中心」：min-width 用 **em**、基准就是外列字号 —— 降字号会带着左右列
      **同量**收窄，对称性不变、腾出的宽度全归中列。
   ⚠️ 原「VS 向短队名侧让位」一级**已删除**：L3 触发放宽到 maxLen≥5 后，一长一短的组合
      （5+2 等）也能吃到外列收窄，实测零截断且 VS 偏移 10.9px → 1.9px，动 VS 根本用不上。 */
.plan-card-view .plan-match-card.name-long-home .plan-compact-team.home .team-score-value{margin:0 1px}
.plan-card-view .plan-match-card.name-long-home .team-badge.tb-home{margin-left:0}
.plan-card-view .plan-match-card.name-long-away .plan-compact-team.away .team-score-value{margin:0 1px}
.plan-card-view .plan-match-card.name-long-away .team-badge.tb-away{margin-right:0}
/* ② 该侧队名字号缩一号 */
.plan-card-view .plan-match-card.name-long-home .plan-compact-team.home .team-name-text{font-size:calc(var(--plan-card-core) - 1px)}
.plan-card-view .plan-match-card.name-long-away .plan-compact-team.away .team-name-text{font-size:calc(var(--plan-card-core) - 1px)}
/* ②b 紧接着该侧队徽也减一号。⚠️ 字号与队徽都**只减一号**，减多了明显不协调（用户订立）。
   队徽本就跟随队名字号（em），②已带来一次自然缩小，这里是额外的一档。 */
.plan-card-view .plan-match-card.name-long-home .plan-compact-team.home .team-badge{--badge-shrink:.15em}
.plan-card-view .plan-match-card.name-long-away .plan-compact-team.away .team-badge{--badge-shrink:.15em}

/* M9 容器查询降档：按**卡片自身宽度**再降一档，与 M0 的视口档互补 */
@container plan-card-host (max-width:300px){
.plan-card-view .plan-match-card{--plan-card-core:min(var(--share-core-size),11px);
        --plan-card-summary:min(var(--share-summary-size),8px);
        --plan-card-score:min(var(--share-score-size),8px);
        --plan-card-vs:min(var(--share-vs-size),10px)}
.plan-card-view .plan-compact-team .team-score-value{margin:0 1px}
/* 多一层 .plan-compact-team 是为了压过 M6b 的按侧规则（同为 0,4,0 且本段在后） */
.plan-card-view .plan-match-card.name-tight .plan-compact-team .team-score-value{margin:0}
.plan-card-view .plan-match-card.name-tight .plan-sum-center{gap:0}
}
@container plan-card-host (max-width:260px){
.plan-card-view .plan-match-card{--plan-card-core:min(var(--share-core-size),10px);
        --plan-card-score:min(var(--share-score-size),7px);
        --plan-card-vs:min(var(--share-vs-size),9px)}
.plan-card-view .plan-compact-team .team-score-value{margin:0}
.plan-card-view .plan-summary-middle{margin:0 1px}
}

/* M10 统计四宫格 / 结果行 / 组合明细表（两组交替底色）/ 折叠按钮 / 提示 */
/* --stamp-gap：注/倍向两侧让开的量，中间空出来给印章落脚。
   用 padding 而非加大 grid gap —— 后者会露出一条粗灰分隔带（gap 靠 background 显色）。 */
/* 四格宽度「窄窄窄宽」（2026-08-06 用户订立）：第 4 格是奖金，**未开奖**时要放下
   「预计 1303.68 ~ 1317.76 元」这种范围，等宽会把后半段挤到第二行。
   ⚠️ 已开奖（.has-stamp）必须改回等宽 —— 开奖印章是 left:50% 按**卡片中心**定位的
   （用户目视定版），窄窄窄宽会把中心从第2/3格中缝挪进第3格，印章正好盖住投注金额，
   而 --stamp-gap 的让位还加在第2/3格上、白让。已开奖时第4格是单值（「奖金 5124.3 元」
   约 88px），等宽 115px 本就够，无需加宽。见下方 .card.has-stamp .stats。
   ⚠️ 微调点：--stat-w1（前三格）/ --stat-w4（第四格），只改这两个值即可。 */
.plan-card-view .stats{--stamp-gap:30px;--stat-w1:.72fr;--stat-w4:1.84fr;
       display:grid;grid-template-columns:var(--stat-w1) var(--stat-w1) var(--stat-w1) var(--stat-w4);
       gap:1px;background:#e5e7eb;border-radius:10px;overflow:hidden;margin-top:6px}
/* M14 四栏单位内联：数字 + 右下角小一号单位（场/注/倍/元），与串关精选计算器同口径 */
.plan-card-view .stat{background:#fff;padding:4px;
       display:flex;align-items:baseline;justify-content:center;gap:1px}
/* 仅已开奖（有印章）才下移并让出中缝；未开奖的方案布局保持原样，不留无谓的缺口 */
/* ★ 印章版式的三个可调值（2026-08-06 用户目视定版，改这里即可，不必动别处）：
     ① 本行 margin-top —— 四格「场注倍元」整体下移量。**值越小，印章相对越靠下**
        （印章是绝对定位、位置不动，四格上移就等于印章往下压）。
        当前 8px = 印章底部压住「本方案已进行奖金优化」约一半字高，即用户选定的观感。
     ② --stamp-gap（见上方 .stats）—— 「注」与「倍」向两侧让开的量，中间空出来给印章落脚。
     ③ .result-stamp 的 top / width（见下方 M15 段）—— 印章本身的位置与大小。
   三者互相牵制：调大 margin-top 印章相对上移、调小则下压；印章换大小时 ①②都要跟着重看。 */
.plan-card-view .card.has-stamp .stats{margin-top:12px}
/* 已开奖：四格回等宽，印章才落在第2/3格中缝、两侧让位才有效（详见上方 .stats 的说明） */
.plan-card-view .card.has-stamp .stats{--stat-w1:1fr;--stat-w4:1fr}
.plan-card-view .card.has-stamp .stat:nth-child(2){padding-right:var(--stamp-gap)}
.plan-card-view .card.has-stamp .stat:nth-child(3){padding-left:var(--stamp-gap)}
.plan-card-view .stat b{font-size:var(--share-stat-size);color:#dc2626;line-height:1.2}
.plan-card-view .stat:nth-child(-n+2) b{color:#111827}
/* 开奖后本金变黑：金额已定死、不再是需要聚焦的可变量（2026-08-07 用户订立）。
   has-stamp 就是 settled，复用现成状态类，不必新增标记。 */
.plan-card-view .card.has-stamp .stat-stake b{color:#111827}
/* nowrap 必须有：「万元」是两个汉字，格子窄时会被拆成上下两行（2026-08-07 实测踩过） */
.plan-card-view .stat .unit{font-style:normal;font-weight:400;color:#111827;line-height:1;
       white-space:nowrap;font-size:calc(var(--share-stat-size) - 6px)}
/* 第 4 格＝奖金（2026-08-06 用户订立：去掉「场次」，奖金顺移上来）。
   「预计|奖金」在左下、单位「元」在右下，都是小字；中间数值红色加粗。 */
/* 奖金格：整格沿用 .stat 的 align-items:baseline —— 「元」必须与数字**基线对齐**才会落在右下角。
   ⚠️ 别改成整格 align-items:center 再给 .unit 加 align-self:baseline：那样「元」成了行内唯一的
   baseline 元素、没有同组元素可对齐，会被顶到行首（跑到数字右**上**角，2026-08-06 实测踩过）。
   只有「奖金/预计」前缀单独 center —— 奖金数额大到它竖排成两行时，baseline 会让两行整体沉到
   数字基线以下、明显偏低（2026-08-06 用户反馈）。 */
.plan-card-view .stat-money .unit{align-self:baseline}
/* 前缀小字：奖金格「奖/预」+ 本金格「本」同款（2026-08-07 用户订立：三格前缀对称） */
.plan-card-view .stat .pre{font-style:normal;font-weight:400;color:#6b7280;line-height:1.15;
       font-size:calc(var(--share-stat-size) - 6px);margin-right:2px;align-self:center}
.plan-card-view .stat-money b{color:#dc2626;font-weight:700;white-space:nowrap}
/* 利润率色块：贴在统计栏正上方右侧（与时间行之间的空隙里），只有下面两角是圆角。
   必须放在 .stats **之外** —— .stats 是 overflow:hidden 的圆角容器，绝对定位会被裁掉。 */
.plan-card-view .stats-wrap{position:relative}
/* ⚠️ 微调点：--pr-down 越大色块越往下（压住时间就调大、离太远就调小）。
   分享页与保存方案页上方的时间行位置略有差异，故给保存页单独一档。 */
/* 五个可调值全部变量化（2026-08-07 用户订立）：色块整体高度 = --pr-fs × --pr-lh + --pr-pad-y × 2。
   它压住上方日期时**优先减这三个尺寸**（只加 --pr-down 治标不治本 —— 色块太高时顶边照样够到）；
   反之放大尺寸后必须同步加大 --pr-down。各页面按需覆盖，见 web/main.css 与 H5/main.css。 */
.plan-card-view .profit-rate{
       --pr-down:2px;                                   /* 下移量：越大越往下 */
       --pr-fs:calc(var(--share-stat-size) - 7px);      /* 字号 */
       --pr-lh:1.25;                                    /* 行高 */
       --pr-pad-y:1px;                                  /* 上下内边距 */
       --pr-pad-x:1px;                                  /* 左右内边距（决定往左延伸多少） */
       position:absolute;right:21%;bottom:calc(100% - var(--pr-down));z-index:2;
       padding:var(--pr-pad-y) var(--pr-pad-x);border-radius:0;border:1px solid currentColor;
       background:#fff;font-weight:700;line-height:var(--pr-lh);font-size:var(--pr-fs);white-space:nowrap}
/* 描边白底而非实心色块（2026-08-07 用户订立）：原先红底块与右侧的时间/奖金/优化方式挤在一起，
   四行信息全堆在右半边。移到**「本」「奖」两格之间**分散视线 —— right:20%（用户目视定版），
   靠的是「已开奖时四格恒等宽（--stat-w1:1fr）」，而本色块只在已开奖时渲染，故恒成立。
   ⚠️ 别改用 left/transform 定位：色块宽度随百分比文字长度变化，右对齐才不会晃。 */
.plan-card-view .profit-rate.up{color:#dc2626}      /* 盈利：红边红字 */
.plan-card-view .profit-rate.down{color:#16a34a}    /* 亏损：绿边绿字 */
/* M15 优化行（位于赛程卡片**之上**）：左「本方案已进行奖金优化」、右「优化方式 ∧/∨」折叠按钮。
   奖金/预计已移入统计栏第 4 格，本行不再承载金额；direct（直接组合）整行不渲染。
   开奖印章绝对定位盖在标题行与统计栏之间。 */
/* 字号与左上角「串关精选/AI精选」(.tag.source) 同源（2026-08-07 用户订立）：
   「本方案已进行奖金优化」与优化方式按钮同属辅助提示项，没必要比来源标签大。
   ⚠️ 原先用的 --share-result-size 至此失去全部引用，已随本次改动删除（§8.0）。 */
/* 2026-08-07 用户订立：本行与上方四格统计栏收紧。旧值留档便于回退：
   min-height:30px; padding:4px 0;  ← 改前
   ⚠️ min-height 同时是折叠按钮的触控热区，调太小会不好点。 */
.plan-card-view .share-result-row{display:flex;align-items:center;gap:5px;min-height:20px;padding:1px 0;
font-size:var(--share-meta-font)}
.plan-card-view .share-result-row>span, .plan-card-view .share-result-row b{white-space:nowrap}
.plan-card-view .share-result-row>span{color:#6b7280}
.plan-card-view .share-result-row b{color:#dc2626}
.plan-card-view .share-result-row>.opt-name{margin-left:auto;font-weight:600;color:#2563eb;white-space:nowrap}
/* 优化方式折叠按钮（取代原「(明细)」链接）：文字=当前优化方式，箭头指示下一步动作
   （▴ 已展开可收起 / ▾ 已收起可展开）。靠右由上面 .opt-name 的 margin-left:auto 提供。 */
/* 折叠按钮：浅灰底圆角按钮，与串关精选操作栏四按钮同款底色（2026-08-07 用户订立，原为无底文字链）。
   箭头与文字**同色**，不再红蓝混搭。 */
/* 2026-08-07 用户订立：不加粗、padding 收紧、边框贴紧文字。旧值留档便于回退：
   border-radius:8px; padding:2px 8px; font-weight:600; gap:4px;  ← 最初
   padding:1px;                                                   ← 中间版（比现在更贴 2px）
   ⚠️ margin-right 是为了让按钮**右边界与下方赛程卡片对齐**（实测原先按钮多靠右 3px）。
      改 .card / .share-matches 的左右 padding 时要重新量这个差值。 */
.plan-card-view .share-result-row>.opt-fold-btn{border:1px solid #d1d5db;background:#f3f4f6;
    border-radius:6px;padding:0 4px;margin-right:4px;font:inherit;
    font-weight:400;color:#2563eb;cursor:pointer;display:inline-flex;align-items:center;gap:2px}
/* 箭头改由 CSS 画（2026-08-07 用户订立，取代 ∧/∨ 字符 + scaleY 拉伸）：
   两条互相垂直的边旋转 45° ⇒ **开口恰好 90°**，字符方案做不到这一点（角度取决于字体）。
   颜色用 currentColor 跟随按钮文字色，天然不会再出现红蓝混搭。
   ⚠️ 旋转后视觉重心偏下，靠 margin-top 往上提半个边宽才在按钮里真正居中。 */
.plan-card-view .fold-caret{display:inline-block;width:.42em;height:.42em;
    border-left:1.5px solid currentColor;border-top:1.5px solid currentColor;
    transform:rotate(45deg);margin-top:.16em}
.plan-card-view .fold-caret.down{transform:rotate(-135deg);margin-top:-.16em}
/* 非 direct 策略才出的提示：占满「(明细)」与「策略名」之间的剩余空间并**居中**，窄屏溢出省略 */
/* 靠左显示（2026-08-06 用户订立，原为居中）；右侧的优化方式按钮靠 margin-left:auto 顶到最右 */
/* 2026-09-04 用户订立：改蓝色，与右侧优化方式按钮（.opt-name / .opt-fold-btn）**同色** ——
   原 #9ca3af 太浅、在三处方案卡片上都看不清。旧值留档便于回退：color:#9ca3af。
   ⚠️ 上面那条 `.share-result-row>span{color:#6b7280}` 特异性更低、被本条覆盖，改色改这里。 */
.plan-card-view .share-result-row>.opt-tip{flex:0 1 auto;min-width:0;text-align:left;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2563eb}
/* 开奖印章：不占布局位，盖在标题行下沿与统计栏之间 */
/* 开奖印章：**不加 CSS 旋转**（原图自带角度，再转会歪）。悬浮压在标题行下半与统计栏之间，
   半透明以便下面的过关方式标签仍可辨认；统计栏为它下移并在中间留缝（见 .stats / .stat）。 */
.plan-card-view .result-stamp{position:absolute;top:8px;left:50%;transform:translateX(-50%);
    width:clamp(62px,20vw,84px);height:auto;pointer-events:none;z-index:4;opacity:.85}
.plan-card-view table{width:100%;border-collapse:collapse;font-size:var(--share-table-size);line-height:1.3}
/* 表头不加粗（2026-08-07 用户订立）：编号/方案/回报/倍数/奖金 只是列名，不是重点。
   ⚠️ 必须显式写 font-weight:400 —— <th> 的浏览器默认样式就是 bold，删掉声明不等于不加粗。 */
.plan-card-view th{background:#f9fafb;color:#6b7280;font-weight:400;padding:5px 4px;border:1px solid #e5e7eb}
.plan-card-view td{padding:4px;border:1px solid #e5e7eb;text-align:center;color:#4b5563;vertical-align:middle}
/* 「方案」「倍数」两列的**值**放大加粗、深黑；括号里的胜/平/负标红以示重要（2026-08-06 用户订立）。
   表头不受影响（仍随 th 的 600 与灰色）。必须用类名不能用 :nth-child——倍数/奖金两列是 rowspan
   合并单元格，第二个 <tr> 只有 3 个 td，nth-child 会错位命中「回报」。 */
/* ⚠️ 方案列**不加粗**：队名字数多，整列加粗后密密麻麻一片黑（2026-08-06 用户反馈）。
   只放大 + 转深黑；加粗留给字数少的「倍数」与括号内的赛果。 */
/* 编号列：放大加粗（2026-08-06 用户订立）。红色与 H5 .opt-no / web .saved-opt-no 对齐 ——
   此前共享侧是灰色不加粗，与两端精选页明细不一致，本次一并统一。 */
.plan-card-view td.td-no{font-size:1.12em;font-weight:700;color:#e11d48;white-space:nowrap}
.plan-card-view td.td-leg{font-size:1.12em;color:#1f2937}
.plan-card-view td.td-multiple{font-size:1.12em;font-weight:700;color:#1f2937}
/* 已开奖后只突出**真正中奖**的那一注：命中行奖金标红；未命中行的编号/赛果/倍数全部回归普通，
   否则满屏红字反而看不出哪注中了（2026-08-06 用户订立）。未开奖时不加 combo-win/lose，保持原样。 */
.plan-card-view tr.combo-win td.td-bonus{color:#dc2626;font-weight:700}
.plan-card-view tr.combo-lose td.td-no{color:#4b5563;font-weight:400}
.plan-card-view tr.combo-lose td.td-multiple{color:#4b5563;font-weight:400}
.plan-card-view tr.combo-lose .leg-pick{color:#4b5563;font-weight:400}
.plan-card-view .leg-pick{color:#dc2626;font-weight:700}
.plan-card-view tr.combo-tint-0 td{background:#dbeafe}
.plan-card-view tr.combo-tint-1 td{background:#fef3c7}
.plan-card-view .tbl-wrap{overflow-x:auto;margin-top:6px}
.plan-card-view .tip{text-align:center;font-size:var(--h5-font-aux);line-height:1.4;color:#9ca3af;
    padding:0 var(--h5-page-inline)}

/* M11 字体放大兜底：仅 <html class="font-boosted"> 下放开三处收缩约束，不缩字号 */
.plan-card-view .font-boosted .plan-card-summary{white-space:normal}
.plan-card-view .font-boosted .plan-sum-center{max-width:none}
.plan-card-view .font-boosted .kv{flex-wrap:wrap;gap:0 8px}

/* M12 球队队徽：改大小**只改 --badge-base**、改高低**只改 --badge-shift**（都不影响布局）。
   --badge-shrink 是 M6b 降级链第②b 级专用的「减一号」量，平时恒为 0。 */
.plan-card-view .team-badge{--badge-base:1.5em;--badge-shrink:0em;
    --badge-size:calc(var(--badge-base) - var(--badge-shrink));--badge-shift:-0.06em;
    width:var(--badge-size);height:var(--badge-size);
    margin-top:calc((1.4em - var(--badge-size)) / 2);margin-bottom:calc((1.4em - var(--badge-size)) / 2);
    object-fit:contain;flex:none;vertical-align:middle;
    position:relative;top:var(--badge-shift);z-index:20}
.plan-card-view .team-badge.tb-home{margin-left:.28em}
.plan-card-view .team-badge.tb-away{margin-right:.28em}
.plan-card-view .team-name-text.has-badge{display:inline-flex;align-items:center;min-width:0;max-width:100%;overflow:visible}
.plan-card-view .team-name-text.has-badge .tn-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* M13 窄屏降档：同时压字号 + 队徽尺寸 + 队徽间距，保证窄屏「看到的内容一致」
   末尾 .name-tight-both = 主客都是 6 字形时再缩队徽，见文档 §3.3 */
@media (max-width:479px){
.plan-card-view{--share-core-size:12px;--share-score-size:9px;--share-vs-size:11px}
.plan-card-view .team-badge{--badge-base:1.35em}
.plan-card-view .team-badge.tb-home{margin-left:.22em}
.plan-card-view .team-badge.tb-away{margin-right:.22em}
}
@media (max-width:400px){
.plan-card-view{--share-core-size:11px;--share-score-size:8.5px;--share-vs-size:10px}
.plan-card-view .team-badge{--badge-base:1.3em}
.plan-card-view .team-badge.tb-home{margin-left:.2em}
.plan-card-view .team-badge.tb-away{margin-right:.2em}
}
@media (max-width:360px){
.plan-card-view{--share-core-size:10px;--share-score-size:7.5px;--share-vs-size:9.5px}
.plan-card-view .team-badge{--badge-base:1.1em}
.plan-card-view .team-badge.tb-home{margin-left:.1em}
.plan-card-view .team-badge.tb-away{margin-right:.1em}
.plan-card-view .plan-compact-team .team-score-value{margin:0 1px}
.plan-card-view .plan-match-card.name-tight-both .team-badge{--badge-size:0.7em}
}

/* M14 分享页专用留白回收（2026-08-06）：时间由 HH:mm 改为「月日 时间」后右列宽 +26px。
   分享页是独立静态页、不加载 H5 main.css，故这里用 body 作用域精确限定 ——
   方案明细页(#page-plan-detail)与 web 已保存方案页各有自己的覆盖，不受影响。
   回收的都是当年为外凸角标（👍 / 单关盾牌，均已删除）预留的让位。见 CLAUDE.md §0.5 优先级①。 */
/* 回收留白后 320/375 仍差 3~4px/侧，按 §0.5 优先级③ 再整行同步微缩字号
   （由 320/375 两档实测缺口反推：需 ≤9.3 / ≤10.5px，拟合后留余量；上限 12px 宽屏不缩）。 */
body.plan-card-view{--share-core-size:clamp(9.2px,calc(2.18vw + 2.25px),12px)}
/* ★ 分享页的印章位置**单独调这里**（与方案明细页各调各的）：
   两页容器不同 —— 明细页外面套着 .plan-detail-body（有自己的 padding），分享页是独立静态页、
   外层是 .wrap，且本文件下方给分享页微缩过字号，所以同一个 margin-top 在两页压到的位置不一样。
   值越小印章相对越靠下（印章绝对定位不动，四格上移即等于印章下压），与明细页同一套口径。
   明细页的对应值见上方 .card.has-stamp .stats（当前 12px）。 */
body.plan-card-view .card.has-stamp .stats{margin-top:17px}
body.plan-card-view .card{padding-left:4px;padding-right:4px}
body.plan-card-view .share-matches{padding-right:0}
body.plan-card-view .plan-match-card{padding-left:2px;padding-right:2px}
body.plan-card-view .plan-card-summary{padding-left:1px;padding-right:1px}
