/* ===== 比赛预测总览页（模型概率 + 策略初测/复核 + 复盘）===== */
.ma-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 16px 14px 0;
}

/* 页面头 —— 【由 Agent 完成】2026-10-23 改为渐变背景（先绿色，2026-10-24 改为黑色渐变），
   文字与胶囊配色同步改为浅色系以保证在深色底上的对比度 */
/* 页面头：圆角卡片（2026-10-24 恢复圆角，不再是通栏条；背景恢复为白色，深色渐变仅作历史留痕） */
.ma-head {
    background: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .06);
    border-radius: 10px;
    padding: 16px 18px;
    margin-bottom: 12px;   /* 流程条已并入卡内，卡片下方间距沿用原流程条的 12px */
}
/* 上半部分：【由 Agent 完成】2026-10-24 模型介绍（左）与日期 / 场次标签（右，右对齐）同行 */
.ma-head-top {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}
/* 三项统计卡片（深色卡片 + 标题 + 绿色胶囊徽标） */
.ma-head-stats {
    display: flex;
    align-items: stretch;
    gap: 12px;
    flex: 1 1 auto;
    justify-content: flex-start;
    min-width: 0;
    max-width: none;
    margin: 0;   /* 与上方模型描述的间距由 .ma-head-desc 的下外边距 10px 控制 */
    /* 【由 Agent 完成】2026-10-24 允许换行：电脑 / 平板一排三个，放不下时自动折行 */
    flex-wrap: wrap;
}
/* 【由 Agent 完成】2026-10-24 卡片内容改为一排：标题在左、数值在右，同一行显示 */
.ma-hs-card {
    /* 【由 Agent 完成】2026-10-24 三张卡合并为两张：一排两个等分 */
    flex: 1 1 calc((100% - 12px) / 2);
    min-width: 220px;   /* 小于该宽度就折行，避免两个挤成一坨 */
    /* 【2026-10-24】框样式与流程条右侧「已完赛 N 场」的 .ma-flow-stat 统一：同底色 / 同描边 / 同圆角 */
    background: #f9fafb;
    border: 1px solid #eef0f2;
    border-radius: 8px;
    padding: 10px 12px 8px;   /* 下间距缩减 2px；两张卡一致，保证高度相同 */
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}
/* 卡片内只保留「标题 + 数值」，不再有文字描述（2026-10-24 去掉 .ma-hs-desc） */
.ma-hs-title {
    font-size: 13px;
    font-weight: 600;
    color: #111;
    margin-bottom: 0;
    white-space: nowrap;
}
/* 数值组：主数值在前，近期战绩以次要样式跟在后面 */
.ma-hs-value {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
    white-space: nowrap;
}
/* 【2026-10-24】擅长联赛榜：一列竖排、右对齐（联赛名 + 项数 + 中几项 + 命中率） */
.ma-hs-leagues {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    min-width: 0;
}
.ma-hs-lg {
    font-size: 11px;
    color: #6b7280;
    white-space: nowrap;
    line-height: 1.5;
}
.ma-hs-lg b {
    color: #111;
    font-weight: 600;
    margin-right: 4px;
}
.ma-hs-lg i {
    font-style: normal;
    font-weight: 600;
    color: #16a34a;
}
/* 主数值：去掉淡绿色胶囊背景，只保留绿色文字 */
.ma-hs-badge {
    display: inline-block;
    font-size: 12px;
    font-weight: 600;
    color: #16a34a;
    background: none;
    border-radius: 0;
    padding: 0;
    white-space: nowrap;
}
/* 次要数值（近 10 场 7 中）：缩小、灰色，避免与主数值抢视觉 */
.ma-hs-sub {
    font-size: 11px;
    font-weight: 500;
    color: #6b7280;
}
/* 模型介绍重新排版：标题加大并留出呼吸感，简介作为独立段落、限宽后自然换行 */
.ma-head-left {
    min-width: 0;
}
.ma-head-left h3 {
    font-size: 20px;
    line-height: 1.3;
    color: #111;
    margin: 0 0 8px;
    font-weight: 700;
}
/* 模型描述文字：独占一行【通栏】满宽（已移出 .ma-head-left，不再被右侧日期/场次挤压） */
.ma-head-desc {
    /* 上：与「名称 + 日期」行间距；下：与下方统计标签间距 10px（2026-10-24） */
    margin: 10px 0 10px;
    width: 100%;
    font-size: 12.5px;
    line-height: 1.75;
    color: #6b7280;
    white-space: normal;
    word-break: break-word;
}
.ma-head-right {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
/* 日期胶囊：白底卡片上用浅灰底 + 深灰字 */
.ma-date {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: #666;
    background: #f3f4f6;
    border: none;
    border-radius: 999px;
    padding: 4px 12px;
    cursor: pointer;
    font-family: inherit;
}
.ma-date .layui-icon {
    font-size: 10px;
    color: #999;
}
/* 顶部日期选择器下拉 */
.ma-date-dropdown {
    position: relative;
    display: inline-block;
}
.ma-date-menu {
    display: none;
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    min-width: 130px;
    max-height: 280px;
    overflow-y: auto;
    background: #fff;
    border: 0.8px solid #e5e7eb;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    z-index: 99;
}
.ma-date-menu.show {
    display: block;
}
/* 下方视口空间不足时向上弹出（js 判断后加 .up） */
.ma-date-menu.up {
    top: auto;
    bottom: calc(100% + 6px);
}
.ma-stats-menu.up {
    top: auto;
    bottom: calc(100% - 2px);   /* 向上弹出方向同样再上移 4px */
}
/* 菜单内部滚动不传导到页面：手机滑动菜单列表不会把整页带滚、导致菜单“消失” */
.ma-date-menu,
.ma-stats-menu {
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
.ma-date-item {
    display: block;
    padding: 9px 12px;
    font-size: 12px;
    color: #666;
    text-decoration: none;
    white-space: nowrap;
    border-bottom: 0.8px solid #f3f4f6;
}
.ma-date-item:last-child {
    border-bottom: none;
}
.ma-date-item:hover {
    background: #f9fafb;
    color: #111;
}
.ma-date-item.ma-date-cur {
    color: #111;
    font-weight: 600;
    background: #f3f4f6;
}
.ma-date-tag {
    color: #111;
    font-weight: 600;
    margin-left: 4px;
}
/* 场次胶囊：白底卡片上用黑底白字（原样式） */
.ma-count {
    font-size: 12px;
    color: #fff;
    background: #111;
    border-radius: 999px;
    padding: 4px 12px;
    font-weight: 600;
}
/* 日期 + 场次：与模型名称同行，右对齐（2026-10-24 去掉「< 胜率统计 >」后只留这两个标签） */
.ma-head-right {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-shrink: 0;
}
.ma-head-tags {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* 流程引导
   【2026-10-24】已移入 .ma-head 白卡内最下面，作为卡片内的底部区块：
   不再自带白底/圆角/外边距（避免"卡中卡"），改由上分隔线 + 上间距与上方统计行分隔；
   position/z-index 保留，用于承载 .ma-stats-drop 下拉的层叠层级。 */
.ma-flow {
    position: relative;
    z-index: 5;
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
    background: transparent;
    border: 0;   /* 2026-10-24 去掉流程条上方的分隔线 */
    border-radius: 0;
    padding: 12px 0 0;
    margin: 3px 0 0;   /* 2026-10-24 流程条整体上移：12px → 8px → 再上移 5px = 3px */
}
.ma-flow-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    color: #666;
    background: #f3f4f6;
    border-radius: 999px;
    padding: 4px 12px;
    white-space: nowrap;
}
.ma-flow-item i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #111;
    color: #fff;
    font-size: 10px;
    font-style: normal;
    font-weight: 600;
}
.ma-flow-item-end {
    background: #f3f4f6;
    color: #666;
}
.ma-flow-item-end i { background: #111; color: #fff; }
.ma-flow .ma-flow-item-cur {
    background: #40ae2a;
    color: #fff;
}
.ma-flow .ma-flow-item-cur i { background: #fff; color: #40ae2a; }
.ma-flow-arrow {
    font-size: 7px;
    color: #c0c4cc;
}
/* 流程步骤组：始终水平单行；手机端自身占满一行，不足时组内横向滚动 */
.ma-flow-steps {
    display: inline-flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 4px;
    min-width: 0;
}
.ma-flow-stat {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 10px;
    background: #f9fafb;
    border: 1px solid #eef0f2;
    border-radius: 8px;
    padding: 5px 12px;
    white-space: nowrap;
    /* 【2026-11-04】未登录（无三项下拉按钮）与登录后（有下拉）统计条高度一致：
       固定 min-height（border-box，含 padding/border），让较短的未登录态也撑到同一高度 */
    box-sizing: border-box;
    min-height: 35px;
}
.ma-flow-stat-txt {
    font-size: 12px;
    color: #666;
    line-height: 1.4;
}
/* 统计条“选项”按钮 + 菜单：样式与顶部“今日”按钮一致 */
.ma-stats-drop {
    position: relative;
    display: inline-block;
    flex-shrink: 0;
    /* 【2026-10-26】「三项 - 全部」口径下拉靠右对齐：日期与「已完赛 N 场」在左，按钮顶到最右 */
    margin-left: auto;
}
.ma-stats-btn {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 12px;
    line-height: 1.2;
    color: #666;
    background: transparent;
    border: none;
    padding: 4px 2px;
    cursor: pointer;
    font-family: inherit;
}
.ma-stats-btn .layui-icon {
    font-size: 10px;
    color: #999;
}
.ma-stats-menu {
    display: none;
    position: absolute;
    top: calc(100% - 2px);   /* 统计选择层相对按钮上移：6px→2px→-2px，已与按钮下缘重叠 2px */
    right: 0;
    min-width: 132px;
    background: #fff;
    border: 0.8px solid #e5e7eb;
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    z-index: 99;
}
.ma-stats-menu.show {
    display: block;
}
.ma-flow-stat-txt b {
    font-weight: 700;
    color: #111;
}
/* 【2026-10-25】统计条里的日期与后面「已完赛 N 场」之间只要一个空格的间距：
   容器 .ma-flow-stat 有 gap:10px（下拉按钮仍需这个间距），这里用负 margin 抵掉 6px，
   实际留 4px ≈ 12px 字号下一个空格的宽度 */
.ma-flow-stat-time {
    margin-right: -6px;
}
.ma-flow-stat-note {
    font-style: normal;
    font-weight: 400;
    font-size: 11px;
    color: #9ca3af;
    margin-left: 6px;
}
.ma-st-win {
    color: #16a34a;
}
.ma-st-loss {
    color: #e54d42;
}
@media (max-width: 900px) {
    /* 【2026-10-26】已完赛 N 场 + 选项按钮：整行不折行
       —— 「日期 + 已完赛 N 场（比分未纳入统计）+ 下拉」三者保持同一行，
          日期与「已完赛」之间留一个空格；极端窄屏放不下时文字省略号截断，而不是把文字折行 */
    .ma-flow-stat {
        width: 100%;
        margin: 8px 0 0 0;
        justify-content: flex-start;
        flex-wrap: nowrap;
        gap: 4px;
        white-space: nowrap;
        /* 注意：这里不能加 overflow（hidden/auto/scroll）—— 会把 .ma-stats-menu 这个
           absolute 定位的选择层裁掉，导致手机上点「三项 - 全部」弹不出菜单（2026-10-26 回归修复） */
    }
    /* 桌面端靠 negative margin 把 10px 的 gap 抵到 4px；这里 gap 已经是 4px，取消抵扣 */
    .ma-flow-stat .ma-flow-stat-time { margin-right: 0; }
    /* 极端窄屏放不下时，让「已完赛 N 场…」这行文字省略号截断，保住右侧口径按钮完整可见
       （这里的 overflow 只在文字自身上，不会裁到 .ma-stats-menu） */
    .ma-flow-stat .ma-flow-stat-txt {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}
.ma-flow-m { display: none; }
@media (max-width: 900px) {
    .ma-flow-d { display: none; }
    .ma-flow-m { display: inline; }
}

/* 比赛行：一场一行 */
.ma-row {
    display: grid;
    /* 用 fr 而非百分比：百分比轨道合计100%后再叠加两个12px gap，
       会让第三列右端溢出卡片（详情链接被挤出白卡约8px） */
    grid-template-columns: 30fr 35fr 35fr;
    gap: 12px;
    background: #fff;
    border-radius: 12px;
    padding: 9px 16px 14px;
    margin-bottom: 12px;
    border: 0.8px solid #f0f1f3;
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.ma-row:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
    border-color: rgba(0, 0, 0, 0.25);
}
.ma-row:active {
    transform: translateY(-1px) scale(.995);
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.10);
    border-color: rgba(0, 0, 0, 0.2);
}
.ma-col {
    min-width: 0;
}

/* 左列：比赛信息 */
.ma-col-info {
    display: flex;
    flex-direction: column;
    padding: 6px 10px 6px 0;
}
.ma-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 5px;
}
.ma-single {
    font-size: 11px;
    color: #fff;
    background: #222;
    border-radius: 999px;
    padding: 2px 9px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.ma-no {
    font-size: 11px;
    font-weight: 600;
    color: #666;
    background: #fff;
    border: 0.8px solid #e5e7eb;
    border-radius: 999px;
    padding: 2px 9px;
}
.ma-league {
    font-size: 11px;
    color: #666;
    background: #fff;
    border: 0.8px solid #e5e7eb;
    border-radius: 999px;
    padding: 2px 9px;
    max-width: 140px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ma-status {
    font-size: 11px;
    color: #666;
    margin-left: auto;
}
.ma-status-live { color: #e54d42; }
.ma-status-end { color: #9ca3af; }
.ma-vs .ma-status {
    display: inline-block;
    margin-left: 0;
    background: #f3f4f6;
    color: #666;
    border-radius: 999px;
    padding: 4px 12px;
    font-size: 11px;
}
/* 进行中：文字左侧红色闪缩圆点 */
.ma-vs .ma-status.ma-status-live {
    position: relative;
    padding-left: 19px;
}
.ma-vs .ma-status.ma-status-live::before {
    content: "";
    position: absolute;
    left: 7px;
    top: 50%;
    transform: translateY(-50%);
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #e54d42;
    animation: maDotBlink 1.1s ease-in-out infinite;
}
@keyframes maDotBlink {
    0%, 100% { opacity: 1; transform: translateY(-50%) scale(1); }
    50% { opacity: 0.3; transform: translateY(-50%) scale(0.7); }
}
.ma-teams {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
}
.ma-team {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 0;
    text-align: center;
}
.ma-team img {
    width: 38px;
    height: 38px;
    object-fit: contain;
    border-radius: 6px;
    background: #fff;
}
.ma-team-txt { min-width: 0; }
.ma-team-name {
    font-size: 13px;
    font-weight: 600;
    color: #222;
    margin: 0;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.ma-rank {
    font-size: 10px;
    color: #9ca3af;
    display: inline-block;
    margin-top: 2px;
}
.ma-vs {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    color: #9ca3af;
    font-size: 11px;
    min-width: 70px;
}
.ma-vs b {
    font-size: 22px;
    color: #111;
    font-weight: 700;
    white-space: nowrap;
    line-height: 1;
}
.ma-vs .ma-vs-time {
    font-size: 10px;
    color: #9ca3af;
}
.ma-vs .ma-vs-vs {
    font-size: 18px;
    color: #d1d5db;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 2px;
}
.ma-time { color: #4b5563 !important; }
.ma-score { color: #111 !important; }
.ma-sec-ghost {
    display: inline-flex;
    align-items: center;
    font-size: 13px;
    font-weight: 700;
    color: #111;
}
/* ① 预估概率标题行：标题靠左 + 「查看预估报告」链接靠右 */
.ma-ghost-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}
.ma-report-link {
    font-size: 12px;
    color: #2d6cdf;
    text-decoration: none;
    white-space: nowrap;
}
.ma-report-link:hover {
    color: #1a4fb3;
    text-decoration: underline;
}
/* 左列底部：① 预估概率 + 主胜/平局/客胜三按钮（桌面/手机均并排一行） */
.ma-flow2 {
    display: flex;
    flex-direction: column;
    width: 100%;
    margin-top: 10px;
}
.ma-pbtns {
    display: flex;
    gap: 6px;
    margin-top: 8px;
}
.ma-pbtn {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 11px;
    color: #666;
    background: #fff;
    border: 0.8px solid #e5e7eb;
    border-radius: 6px;
    padding: 4px 2px;
    white-space: nowrap;
    overflow: hidden;
}
.ma-pbtn i {
    font-style: normal;
    color: #666;
}
.ma-pbtn b {
    font-weight: 600;
    color: #111;
    font-size: 11px;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* 无预估概率：整行灰色居中提示「正在预估中」 */
.ma-est-wait {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    height: 35px;
    margin-top: 8px;
    color: #9ca3af;
    font-size: 12px;
    background: #fff;
    border: 0.8px dashed #d1d5db;
    border-radius: 6px;
}
/* layui 灯泡图标：思考/预估中 */
.ma-est-wait .layui-icon {
    font-size: 16px;
}

/* 中/右列共用分区 */
.ma-sec {
    padding: 2px;
}
.ma-sec + .ma-sec {
    margin-top: 16px;
    border-top: 1px solid #eef0f3;
    padding-top: 16px;
}
/* 中/右列与比赛信息列之间用细分隔线划分（整块不再可点击跳转）
   桌面端 ②/③ 间的虚线由复核列左边框改为独立伪元素，并整体右移4px */
.ma-col-pred {
    border-left: 0.8px dashed #e9ebee;
}
.ma-col-pred,
.ma-col-check {
    padding-left: 16px;
}
.ma-col-check {
    position: relative;
}
/* 初测与复核存在分歧时，骑跨在「策略-复核」左侧虚线分隔线上的标签 */
.ma-diff-badge {
    position: absolute;
    top: 0;
    left: 0;
    transform: translateX(-50%);
    z-index: 2;
    display: none;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    color: #fff;
    background: #111;
    border-radius: 999px;
    padding: 4px 7px;
    white-space: nowrap;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
}
.ma-col-check.ma-has-divergence .ma-diff-badge {
    display: block;
}
/* 桌面端：②/③ 间的分隔虚线独立出来，相对复核列原左边框位置右移4px */
@media (min-width: 901px) {
    .ma-col-check::before {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        left: 4px;
        width: 0;
        border-left: 1px dashed #eef1f4;
        pointer-events: none;
    }
    /* 分歧标签同步右移，仍骑跨在移动后的虚线上 */
    .ma-col-check.ma-has-divergence .ma-diff-badge {
        transform: translateX(calc(-50% + 4px));
    }
}
/* 中/右列标题行：标题靠左 + 「详情」链接靠右（与「① 预估概率」行同一模式） */
.ma-sec-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    min-width: 0;
    margin: 0 0 8px;
}
.ma-sec-title {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 0 1 auto;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    color: #222;
    margin: 0;
}
.ma-sec-title i {
    font-style: normal;
    font-size: 12px;
    color: #ff7f50;
}
.ma-col-pred .ma-sec-title i,
.ma-col-check .ma-sec-title i { color: #111; }
/* 标题行右侧的“详情”文字链接 */
.ma-sec-link {
    flex: none;
    padding: 4px 0 4px 8px;
    font-size: 12px;
    font-weight: 400;
    color: #6b7280;
    text-decoration: none;
    white-space: nowrap;
}
.ma-sec-link:hover {
    color: #111;
    text-decoration: underline;
}
/* 未完赛时「查看初始分析 / 查看复核分析」按钮：桌面 200px 宽，手机端通栏；左图标右文字+副文案 */
.ma-view-btn {
    flex: none;
    flex-direction: row;
    gap: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    padding: 14px 12px;
    font-size: 13px;
    font-weight: 500;
    line-height: 1.2;
    color: #111;
    background: #fff;
    border: 0.8px solid #e3e5e8;
    border-radius: 8px;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
}
/* 图标：未订购 = layui-icon-lock（灰），已订购 = layui-icon-success（绿）
   注意：模板里 layui.css 在 model_analysis.css 之后加载，layui 的 .layui-icon 与 .ma-view-ico
   优先级相同会盖掉 font-size，故用 .ma-view-btn .ma-view-ico 提权（0,2,0 > 0,1,0），稳赢 */
.ma-view-btn .ma-view-ico {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
    background: transparent;
    box-shadow: none;
    /* 2026-11-01 左侧图标：未订购 layui-icon-lock（#333 灰），已订购 layui-icon-success（绿）。
       图标统一 30px（占位盒 30px，字形 30px），按钮文字不位移 */
    font-size: 30px !important;
    line-height: 1;
    width: 30px;
    height: 30px;
    color: #333;
}
.ma-view-btn .ma-view-ico.ok { color: #16a34a; }
/* 右侧文字：主文案 + 副文案 */
.ma-view-txt {
    display: flex;
    flex-direction: column;
    text-align: left;
    line-height: 1.25;
}
.ma-view-txt-main {
    font-size: 13px;
    font-weight: 400;
    color: #111;
}
.ma-view-txt-sub {
    margin-top: 2px;
    font-size: 11px;
    font-weight: 400;
    color: #9aa0a6;
}
.ma-view-btn:hover {
    background: #eceef1;
    color: #111;
    text-decoration: none;
}
@media (min-width: 901px) {
    .ma-view-btn { width: 100%; }
}
@media (max-width: 900px) {
    .ma-view-btn { flex: 0 0 100%; width: 100%; margin-top: 2px; }
}

/* 预估概率 */
.ma-rate-item {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 7px;
}
.ma-rate-item span {
    width: 34px;
    flex-shrink: 0;
    font-size: 12px;
    color: #666;
}
.ma-bar {
    flex: 1;
    height: 7px;
    background: #f0f1f3;
    border-radius: 999px;
    overflow: hidden;
}
.ma-bar i {
    display: block;
    height: 100%;
    width: 0;
    background: linear-gradient(90deg, #ffa37f, #ff7f50);
    border-radius: 999px;
    transition: width 0.8s ease;
}
.ma-rate-item b {
    width: 46px;
    flex-shrink: 0;
    text-align: right;
    font-size: 12px;
    font-weight: 600;
    color: #ff7f50;
}
.ma-odds {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 8px;
    font-size: 11px;
    color: #9ca3af;
}
.ma-odds span {
    color: #9ca3af;
    margin-right: 2px;
}
.ma-odds b {
    font-weight: 600;
    color: #4b5563;
    background: #f6f7f8;
    border: 1px solid #eef0f2;
    border-radius: 6px;
    padding: 2px 7px;
    font-size: 11px;
}

/* 策略推荐行 */
.ma-rec {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 8px;
}
.ma-rec:last-child { margin-bottom: 0; }
.ma-rec-tag {
    flex-shrink: 0;
    width: 34px;
    text-align: center;
    font-size: 11px;
    color: #666;
    background: #f3f4f6;
    border: 1px solid #eef0f2;
    border-radius: 6px;
    padding: 2px 0;
    margin-top: 1px;
    position: relative;
}
.ma-tag-mark {
    position: absolute;
    top: -6px;
    right: -6px;
    width: 13px;
    height: 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    font-style: normal;
    color: #fff;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
}
/* 覆盖 layui 字体图标默认 30px 字号/灰色等 */
/* 覆盖 layui 字体图标默认样式：字形绝对定位到圆中心，不再受基线/flex 影响 */
.ma-tag-mark.layui-icon {
    font-size: 9px;
    line-height: 1;
    color: #fff;
}
.ma-tag-mark.layui-icon::before {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}
.ma-tag-mark.layui-icon.layui-icon-close {
    font-size: 8px;
}
.ma-tag-hit { background: #40ae2a; }
.ma-tag-draw { background: #9ca3af; }
.ma-tag-miss { background: #e54d42; }
.ma-val {
    margin: 0;
    font-size: 13px;
    color: #333;
    line-height: 1.6;
    word-break: break-all;
}
/* 亚盘推荐选项：悬停/点击查看分析正文 */
.ma-val.ma-hg-tip {
    cursor: pointer;
    display: inline-block;
}
/* hover：亚盘/大小球推荐胶囊变为黑底无边白色文字（同步弹出分析悬浮层） */
.ma-val.ma-hg-tip .ma-cap {
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.ma-val.ma-hg-tip .ma-cap:hover {
    background: #000;
    border-color: #000;
    color: #fff;
}
/* “？”提示小图标：默认隐藏（移动端点按整粒胶囊即可），仅在桌面可悬停设备显示 */
.ma-val.ma-hg-tip .ma-tip-q {
    display: none;
}
@media (hover: hover) and (pointer: fine) {
    .ma-val.ma-hg-tip .ma-tip-q {
        display: inline-block;
        color: #8b95a3;
        font-size: 13px;
        font-weight: 600;
        vertical-align: middle;
        cursor: help;
        margin: 0 2px;
        transition: color 0.15s ease;
    }
    .ma-val.ma-hg-tip:hover .ma-tip-q {
        color: #000;
    }
}
/* 亚盘推荐「----」后分析正文的悬浮层 */
.ma-hg-tip-pop {
    position: fixed;
    z-index: 1200;
    max-width: 300px;
    padding: 9px 11px;
    background: rgba(17, 17, 17, 0.9);
    color: #fff;
    font-size: 12px;
    line-height: 1.65;
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.22);
    word-break: break-word;
    text-align: left;
    visibility: hidden;
    opacity: 0;
    transform: translateY(6px);
    transition: opacity 0.16s ease, transform 0.16s ease, visibility 0s linear 0.16s;
}
.ma-hg-tip-pop.show {
    visibility: visible;
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.16s ease, transform 0.16s ease, visibility 0s;
}
.ma-hg-tip-pop .ma-hg-pop-txt {
    display: block;
    text-align: left;
}
/* 「预测详情」文字链接：换行单独一行、靠右、带下划线 */
.ma-hg-tip-pop .ma-hg-link {
    display: none;
    margin-top: 7px;
    color: #7fb5f2;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.15s ease;
}
.ma-hg-tip-pop .ma-hg-link.has {
    display: block;
    text-align: right;
}
.ma-hg-tip-pop .ma-hg-link:hover {
    color: #fff;
}
/* 指向推荐框的箭头（默认层在按钮下方，箭头朝上；层在按钮上方时 .above 箭头朝下） */
.ma-hg-tip-pop .ma-hg-arrow {
    position: absolute;
    top: -7px;
    left: 10px;
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 7px solid rgba(17, 17, 17, 0.9);
    pointer-events: none;
}
.ma-hg-tip-pop.above .ma-hg-arrow {
    top: auto;
    bottom: -7px;
    border-bottom: none;
    border-top: 7px solid rgba(17, 17, 17, 0.9);
}

/* 推荐值胶囊 */
.ma-cap {
    display: inline-block;
    padding: 3px 7px;
    line-height: 1.4;
    font-size: 11px;
    font-weight: 500;
    border-radius: 999px;
    white-space: nowrap;
    vertical-align: middle;
    margin: 1px 4px 1px 0;
}
.ma-cap-pick {
    background: #fff;
    border: 0.8px solid #e6e7eb;
    color: #666;
}
.ma-cap-skip {
    background: #fff;
    border: 0.8px solid #e6e7eb;
    color: #8a8a8a;
}
.ma-cap-diff {
    background: #f0f9eb;
    border: 0.8px solid #c9e5bd;
    color: #2f7a1f;
}
/* 【2026-10-26】比分胶囊左右各收 1px（7px → 6px）：只针对「比分」这一行，
   亚盘 / 大小球等胶囊保持原宽度，避免整行一起变窄后文字挤在一起 */
.ma-rec[data-kind="score"] .ma-cap {
    padding-left: 6px;
    padding-right: 6px;
}
/* 命中比分胶囊：整粒变绿，不带对勾 */
.ma-cap-hit {
    background: #40ae2a;
    border-color: #40ae2a;
    color: #fff;
}

/* 空态 */
.ma-empty {
    font-size: 12px;
    color: #9ca3af;
    width: 100%;
    height: 60px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: none;
    border-right: none;
    border-top: 0.8px dashed #dfe3e8;
    border-bottom: 0.8px dashed #dfe3e8;
}
.ma-empty-txt {
    margin: 0;
    text-align: center;
    line-height: 1.6;
}
.ma-empty-txt .ma-empty-sub {
    font-size: 11px;
    color: #b6bcc4;
}
/* 【由 Agent 完成】2026-10-01 预测列表空态加虚线框（原为纯白底无边框，视觉上不像一个容器） */
.ma-empty-box {
    background: #fff;
    border: 1px dashed #d2d7dd;
    border-radius: 12px;
    padding: 60px 20px;
    text-align: center;
}
.ma-empty-box p {
    font-size: 16px;
    color: #666;
    margin: 0 0 6px;
}
.ma-empty-box span {
    font-size: 12px;
    color: #9ca3af;
}

/* 未登录：登录提示框（参照关注页 .em-empty / .em-empty-actions 同款样式） */
.ma-login-box {
    padding: 60px 0;
    text-align: center;
    color: #9ca3af;
    font-size: 13px;
    background: #ffffff;
    border: 1px dashed #f0f1f3;
    border-radius: 14px;
}
.ma-login-box .layui-icon {
    display: block;
    margin-bottom: 8px;
    font-size: 38px;
}
.ma-login-actions {
    display: flex;
    justify-content: center;
    gap: 14px;
    margin-top: 18px;
}
.ma-login-actions a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 118px;
    height: 44px;
    padding: 0 26px;
    border: 1px solid #e5e7eb;
    border-radius: 999px;
    background: #ffffff;
    color: #111827;
    font-size: 15px;
    text-decoration: none;
}
.ma-login-actions a:active { background: #f7f8fa; }

/* 复盘入口 */
.ma-replay {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    margin-top: 14px;
    background: #111;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    border-radius: 999px;
    padding: 9px 0;
    text-decoration: none;
    transition: opacity 0.2s ease;
}
.ma-replay:hover { opacity: 0.85; color: #fff; }
.ma-replay .layui-icon { font-size: 13px; }

/* 声明 */
.ma-declare {
    text-align: center;
    font-size: 12px;
    color: #9ca3af;
    padding: 18px 0 6px;
}

/* 手机端：三大模块切换为上中下排列 */
@media (max-width: 900px) {
    .ma-row {
        grid-template-columns: 1fr 1fr;
        grid-template-areas:
            "info info"
            "pred check";
    }
    .ma-col-info { grid-area: info; }
    .ma-col-pred { grid-area: pred; }
    .ma-col-check { grid-area: check; }
    .ma-col-pred,
    .ma-col-check {
        border-left: none;
        padding-left: 0;
    }
    .ma-col-pred {
        position: relative;
        padding-right: 8px;
    }
    /* 手机端 ②/③ 分隔虚线：独立出来，相对初测列右边缘右移5px */
    .ma-col-pred::after {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        left: 100%;
        width: 0;
        transform: translateX(5px);
        border-right: 1px dashed #eef1f4;
        pointer-events: none;
    }
    /* 手机端：分歧「歧」标签随虚线同步右移5px */
    .ma-col-check.ma-has-divergence .ma-diff-badge {
        transform: translateX(calc(-50% + 5px));
    }
    .ma-col-check {
        padding-left: 8px;
    }
    /* 【由 Agent 完成】2026-10-24 手机上：上半部分换行堆放，统计卡片一排一个（整行铺满） */
    .ma-head-top {
        flex-direction: row;
        align-items: flex-start;
        gap: 8px;
        flex-wrap: wrap;
    }
    .ma-head-left h3 {
        font-size: 17px;
    }
    .ma-head-stats {
        display: flex;
        max-width: 100%;
        width: 100%;
        margin: 2px 0 0;
        gap: 10px;
    }
    .ma-hs-card {
        flex: 1 1 100%;
        min-width: 0;
    }
    .ma-head-left {
        flex: 1;
        min-width: 0;
    }
    .ma-head-left h3 {
        white-space: nowrap;
    }
    .ma-head-left p {
        white-space: normal;
        overflow: visible;
    }
    /* 【2026-10-24】手机端同步上移：10px → 6px → 再上移 5px = 1px；padding-top 保持 10px 不变 */
    .ma-flow {
        padding: 10px 0 0;
        margin: 1px 0 0;
    }
    /* 步骤组在手机端独占一行强制不换行，放不下时组内横向滚动；
       两端对齐：第 1 个胶囊贴左、第 4 个胶囊贴右（内容溢出时退化为横向滚动） */
    .ma-flow-steps {
        width: 100%;
        max-width: 100%;
        justify-content: space-between;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }
    .ma-flow-steps::-webkit-scrollbar {
        display: none;
    }
    /* 手机端：流程胶囊左右内边距各缩减 2px（12px → 10px） */
    .ma-flow-item {
        padding-left: 10px;
        padding-right: 10px;
    }
    /* 手机端：「>」箭头整体占位缩小 4px —— 左右留白各缩减 2px（抵消父级 gap:4px 中的 2px） */
    .ma-flow-arrow {
        margin-left: -2px;
        margin-right: -2px;
    }
    .ma-col-info {
        flex-direction: row;
        align-items: center;
        gap: 12px;
        flex-wrap: wrap;
        padding-right: 0;   /* 让底部 ① 预估概率 /「查看预估报告」与卡片右缘对齐 */
    }
    .ma-meta {
        width: 100%;
        margin-bottom: 4px;
    }
    .ma-teams {
        flex: 1;
        min-width: 0;
    }
    .ma-flow2 {
        width: 100%;
        margin-top: 6px;
    }
    .ma-diff-badge {
        left: -12px;
        right: auto;
        transform: translateX(-50%);
    }
}

/* 电脑端：logo 与竞彩编号标签间距增加 6px */
@media (min-width: 901px) {
    .ma-col-info .ma-meta {
        margin-bottom: 11px;
    }
    .ma-col-pred,
    .ma-col-check {
        margin-top: 8px;
    }
    /* 电脑端：② 策略-初测内容右移（16px → 21px → 26px，共右移10px） */
    .ma-col-pred {
        padding-left: 26px;
    }
    /* 电脑端：③ 策略-复核内容右移（16px → 21px → 26px，共右移10px） */
    .ma-col-check {
        padding-left: 26px;
    }
    .ma-sc-top,
    .ma-sc-hwd,
    .ma-sc-pct {
        width: 100%;
        max-width: 100%;
    }
    .ma-empty {
        width: 90%;
    }
}

/* 右下角：向上/向下滚动按钮（风格与比赛列表页一致） */
.ma-totop-wrap {
    position: fixed;
    right: 24px;
    bottom: 40px;
    z-index: 999;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.ma-jump-btn {
    width: 42px;
    height: 42px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.95);
    color: #6b7280;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 3px 12px rgba(0, 0, 0, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: all 0.2s ease;
}
.ma-jump-btn:hover {
    background: #222222;
    color: #ffffff;
}
/* 手机端缩小并贴近边缘；
   层级降到左侧导航(999)与侧栏遮罩(998)之下：展开左侧抽屉时按钮不浮在导航上 */
@media (max-width: 900px) {
    .ma-totop-wrap {
        right: 16px;
        bottom: 24px;
        gap: 10px;
        z-index: 997;
    }
    .ma-jump-btn {
        width: 38px;
        height: 38px;
        font-size: 16px;
    }
}

/* 统计卡片：流程条下方 3 张白底卡片，跟随右上角口径（全部/策略-初测/策略-复核）切换，左对齐紧凑排版 */
.ma-stat-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 12px;
}
.ma-stat-card {
    position: relative;
    background: #fff;
    border: 0.8px solid #f0f1f3;
    border-radius: 10px;
    padding: 9px 0 18px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
    text-align: left;
    min-width: 0;
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease, background .2s ease;
}
.ma-stat-card:hover,
.ma-stat-card:active {
    z-index: 2;
    transform: scale(1.1);
    background: linear-gradient(135deg, #2ec4f0 0%, #1d7cf0 100%);
    border-color: #fff;
    box-shadow: 0 12px 24px rgba(29, 124, 240, 0.35);
}
.ma-stat-card:hover .ma-sc-title,
.ma-stat-card:hover .ma-sc-num,
.ma-stat-card:hover .ma-sc-hwd,
.ma-stat-card:hover .ma-sc-hwd b,
.ma-stat-card:hover .ma-sc-pct,
.ma-stat-card:hover .ma-sc-pct-n,
.ma-stat-card:hover .ma-sc-pct-s,
.ma-stat-card:hover .ma-sc-hit,
.ma-stat-card:hover .ma-sc-miss,
.ma-stat-card:hover .ma-sc-draw,
.ma-stat-card:active .ma-sc-title,
.ma-stat-card:active .ma-sc-num,
.ma-stat-card:active .ma-sc-hwd,
.ma-stat-card:active .ma-sc-hwd b,
.ma-stat-card:active .ma-sc-pct,
.ma-stat-card:active .ma-sc-pct-n,
.ma-stat-card:active .ma-sc-pct-s,
.ma-stat-card:active .ma-sc-hit,
.ma-stat-card:active .ma-sc-miss,
.ma-stat-card:active .ma-sc-draw {
    color: #fff;
}
.ma-sc-title,
.ma-sc-num,
.ma-sc-hwd,
.ma-sc-pct-n,
.ma-sc-pct-s {
    transition: opacity .2s ease;
}
/* 放大渐变态下的层级弱化：
   第一行：标题「全部/初测/复核」100%，右侧数量 N 50%；
   第二行：赢/输/走 80%；
   第三行：百分比大数字 100%，“% 胜率”小字 50% */
.ma-stat-card:hover .ma-sc-title,
.ma-stat-card:active .ma-sc-title {
    opacity: 1;
}
.ma-stat-card:hover .ma-sc-num,
.ma-stat-card:active .ma-sc-num {
    opacity: .5;
}
.ma-stat-card:hover .ma-sc-hwd,
.ma-stat-card:active .ma-sc-hwd {
    opacity: .8;
}
.ma-stat-card:hover .ma-sc-pct-n,
.ma-stat-card:active .ma-sc-pct-n {
    opacity: 1;
}
.ma-stat-card:hover .ma-sc-pct-s,
.ma-stat-card:active .ma-sc-pct-s {
    opacity: .5;
}
/* 整卡放大渐变态：进度条轨转半透明白、填充转纯白 */
.ma-stat-card:hover .ma-sc-bar,
.ma-stat-card:active .ma-sc-bar {
    background: rgba(255, 255, 255, .28);
}
.ma-stat-card:hover .ma-sc-bar-fill,
.ma-stat-card:active .ma-sc-bar-fill {
    background: #fff;
}
.ma-sc-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: nowrap;
    gap: 0 8px;
    line-height: 1.4;
    width: 85%;
    max-width: 85%;
    margin: auto;
    margin-bottom: 3px;
}
.ma-sc-title {
    font-size: 13px;
    color: #333;
    font-weight: 600;
    white-space: nowrap;
}
.ma-sc-pre {
    font-size: 12px;
    color: #6b7280;
    white-space: nowrap;
}
.ma-sc-num {
    font-size: 20px;
    color: #9ca3af;
    font-weight: 400;
    line-height: 1.2;
}
.ma-sc-hwd {
    font-size: 11px;
    color: #6b7280;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0 5px;
    line-height: 1.4;
    white-space: nowrap;
    width: 85%;
    margin: auto;
}
.ma-sc-hwd b {
    font-size: 11px;
    font-weight: 400;
}
.ma-sc-sep {
    color: #d1d5db;
}
/* 胜率进度条行：上行 = 大数字胜率(带%) + “胜率”标签，下行 = 圆角进度条
   填充色按胜率档位：≥70% 绿 / ≥45% 橙 / <45% 红；hover 整卡变蓝渐变态填充转白 */
.ma-sc-pct {
    width: 85%;
    max-width: 85%;
    margin: 2px auto 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ma-sc-pct-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0 8px;
    width: 100%;
    line-height: 1;
}
.ma-sc-pct-n {
    font-size: 20px;
    font-weight: 400;
    color: #111827;
    line-height: 1;
}
.ma-sc-pct-s {
    font-size: 11px;
    font-weight: 400;
    color: #9ca3af;
}
.ma-sc-bar {
    width: 100%;
    height: 8px;
    border-radius: 999px;
    background: #eef1f5;
    overflow: hidden;
    flex: none;
}
.ma-sc-bar-fill {
    display: block;
    height: 100%;
    width: 0;
    border-radius: 999px;
    background: linear-gradient(90deg, #4ade80, #16a34a);
    transition: width .5s ease, background .2s ease;
}
.ma-sc-bar-fill.s-mid {
    background: linear-gradient(90deg, #fcd34d, #f59e0b);
}
.ma-sc-bar-fill.s-low {
    background: linear-gradient(90deg, #fca5a5, #ef4444);
}

/* 比赛列表区块标题 */
.ma-list-title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 16px;
    font-weight: 700;
    color: #222;
    margin: 21px 0 10px;
    line-height: 1.2;
}
.ma-list-title::before {
    content: "";
    width: 4px;
    height: 16px;
    border-radius: 2px;
    background: #ff7f50;
}

/* ===== 列表标题行右侧：订阅胶囊按钮（2026-11-02，白底 + 灰色边框） =====
   未登录 / 已登录未订阅 → 图标 + 「解锁模型」（点击滑出只含包天的订阅层）
   已登录已订阅         → 「您的订阅有效期至 …」+「我的订阅」（两个独立胶囊按钮） */
.ma-list-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 21px 0 10px;
}
.ma-list-head .ma-list-title {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
}
.ma-sub-box {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    /* 整组胶囊按钮上移 3px（相对定位，不影响标题行布局与按钮间距） */
    position: relative;
    top: -3px;
}
/* 胶囊按钮：白底 + 灰色边框 */
.ma-sub-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    /* 上下 padding 各 +1px = 整组按钮高度增加 2px */
    padding: 5px 12px;
    border: 0.8px solid #d9d9d9;
    border-radius: 999px;
    background: #fff;
    color: #555;
    font-size: 12px;
    line-height: 1.5;
    white-space: nowrap;
}
.ma-sub-btn .ma-sub-ico {
    font-size: 13px;
    color: #8a8a8a;
    /* 图标与文字垂直居中：layui 图标字体默认行高会把基线顶偏，
       行高归 1 后由胶囊的 inline-flex + align-items:center 居中对齐 */
    line-height: 1;
}
/* 可点的「解锁模型全部场次」/「我解锁过的」 */
.ma-sub-open,
.ma-sub-mine {
    cursor: pointer;
}
/* 绿色主按钮（「解锁模型全部场次」与「我的订阅有效期至 X」同款）：
   0.8px 绿边 #17a34a + 浅绿底 #effdf4 + 文字 #333，hover 底 #dcf5e6。
   0.8px 边框宽度继承自 .ma-sub-btn，仅改 border-color，与并排按钮等高对齐。
   有效期按钮用 .ma-sub-expire（不可点，不复用绑定了点击事件的 .ma-sub-open） */
.ma-sub-open,
.ma-sub-expire {
    background: #effdf4;
    color: #333;
    border-color: #17a34a;
}
.ma-sub-open .ma-sub-ico,
.ma-sub-expire .ma-sub-ico {
    color: #333;
}
.ma-sub-open:hover,
.ma-sub-expire:hover {
    background: #dcf5e6;
    color: #333;
}
/* 「我解锁过的」保持白底灰边，hover 加深边框与文字 */
.ma-sub-mine:hover {
    border-color: #b5b5b5;
    color: #222;
}
/* 「我解锁过的」筛选生效态：绿色背景 #17a34a + 白色文字（hover 时保持，图标同步白色） */
.ma-sub-btn.on,
.ma-sub-btn.on:hover {
    background: #17a34a;
    border-color: #17a34a;
    color: #fff;
}
.ma-sub-btn.on .ma-sub-ico {
    color: #fff;
}
/* 「我解锁过的」筛选后一场都没有时的空态：直接复用 .ma-empty-box（暂无比赛同款虚线卡），无额外样式 */
/* 【2026-11-03】加载提示「图标 + 数据加载中...」共用卡：
   ① 点「我解锁过的」后列表区显示 0.5s；② 打开分析结果层数据加载期间显示（.ma-rp-loading）。
   与空态卡同款虚线白底，灰色旋转图标（#9ca3af，与「正在预估中」等待图标同款）；
   用 text-align/line-height 居中，避免 jQuery .show() 把 display 恢复成 block 使 flex 失效 */
.ma-mine-loading,
.ma-rp-loading {
    width: 100%;
    height: 72px;
    margin-top: 8px;
    color: #8a8a8a;
    font-size: 13px;
    text-align: center;
    line-height: 72px;
    background: #fff;
    border: 0.8px dashed #d1d5db;
    border-radius: 6px;
}
.ma-mine-loading .layui-icon,
.ma-rp-loading .layui-icon {
    font-size: 18px;
    color: #9ca3af;
    line-height: 1;
    vertical-align: -2px;
    margin-right: 4px;
}
a.ma-sub-btn {
    text-decoration: none;
}
a.ma-sub-btn:hover {
    border-color: #b5b5b5;
    color: #222;
}
@media (max-width: 900px) {
    .ma-list-head {
        align-items: flex-start;
    }
    .ma-sub-btn {
        padding: 4px 10px;
        font-size: 11px;
    }
}
@media (max-width: 900px) {
    .ma-stat-cards {
        grid-template-columns: repeat(3, 1fr);
        gap: 6px;
    }
    .ma-stat-card {
        padding: 7px 4px 16px;
        border-radius: 8px;
        gap: 0;
    }
    .ma-sc-top,
    .ma-sc-hwd,
    .ma-sc-pct {
        width: 85%;
        max-width: 85%;
        margin-left: auto;
        margin-right: auto;
    }
    .ma-sc-title {
        font-size: 11px;
    }
    .ma-sc-num {
        font-size: 16px;
    }
    .ma-sc-hwd {
        font-size: 11px;
        white-space: nowrap;
        flex-wrap: nowrap;
        overflow: visible;
    }
    .ma-sc-hwd b {
        font-size: 11px;
        font-weight: 400;
    }
    .ma-sc-pct {
        margin-top: 4px;
        gap: 5px;
    }
    .ma-sc-pct-n {
        font-size: 16px;
    }
    .ma-sc-bar {
        height: 6px;
    }
}

/* ============ 顶部条右上角「预测精选」钻石按钮 ============ */
.ma-diamond-btn {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    color: #333;
    cursor: pointer;
    border-radius: 6px;
}

.ma-diamond-btn .layui-icon {
    font-size: 20px;
}

.ma-diamond-btn:hover {
    background: rgba(0, 0, 0, 0.05);
    color: #222;
}

/* ============ 预测精选说明弹层（圆角白卡片 + 标题 + 正文 + 双按钮） ============ */
/* layui 会把 skin 值直接作为 class 加在外框上（jc-help-layer） */
.jc-help-layer {
    background: transparent !important;
    border-radius: 20px !important;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.18) !important;
    overflow: hidden !important;
    border: none !important;
}

.jc-help-layer .layui-layer-content {
    padding: 0 !important;
    overflow: hidden !important;
    border-radius: 20px !important;
}

/* 弹层打开时锁定页面滚动 */
body.jc-no-scroll {
    overflow: hidden !important;
}

/* 手机端：弹层宽度 320px（不超过屏幕 95%）并保持水平居中 */
@media (max-width: 768px) {
    .jc-help-layer {
        width: 320px !important;
        max-width: 95% !important;
        left: 0 !important;
        right: 0 !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }
}

.jc-help-box {
    width: 100%;
    padding: 28px 24px 24px;
    text-align: center;
    background: #fff;
    border-radius: 20px;
    box-sizing: border-box;
}

.jc-help-title {
    font-size: 18px;
    font-weight: 600;
    color: #111827;
    margin-bottom: 12px;
    line-height: 1.4;
}

.jc-help-body {
    font-size: 14px;
    line-height: 1.7;
    color: #6b7280;
    margin-bottom: 24px;
}

.jc-help-btns {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

.jc-help-btn {
    flex: 1;
    height: 44px;
    border: none;
    border-radius: 22px;
    font-size: 15px;
    line-height: 44px;
    text-align: center;
    cursor: pointer;
    transition: background 0.2s ease;
}

.jc-help-btn:active {
    transform: scale(0.98);
}

.jc-help-cancel {
    background: #f3f4f6;
    color: #4b5563;
}

.jc-help-cancel:hover {
    background: #e5e7eb;
}

.jc-help-ok {
    background: #ef4444;
    color: #fff;
}

.jc-help-ok:hover {
    background: #dc2626;
}

/* 预测列表卡片滚动进入视口时逐个淡入上浮（类名由 JS 按需添加） */
.ma-row.ma-anim {
    opacity: 0;
    will-change: opacity, transform;
}
.ma-row.ma-anim.ma-anim-in {
    animation: maRowIn .46s cubic-bezier(.22, .61, .36, 1) both;
}

/* 动画结束后 JS 会移除 ma-anim 类，恢复原样式（保证 hover/active 交互正常） */
@keyframes maRowIn {
    from {
        opacity: 0;
        transform: translateY(22px) scale(.985);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ma-row.ma-anim {
        opacity: 1;
    }
    .ma-row.ma-anim.ma-anim-in {
        animation: none;
    }
}

/* ============ 统一普通提示层皮肤（member_ui.js 的 mcToast 使用）============
   圆角 + 柔和阴影；是否带遮罩由 mcToast 的 shade 参数控制（默认 0.5 带遮罩） */
.mc-msg-layer {
    border-radius: 12px !important;
    border: none !important;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15) !important;
}
.mc-msg-layer .layui-layer-content {
    border-radius: 12px !important;
}

/* ============ 擅长联赛卡片内：精选组 + 右对齐「详情」 ============ */
/* 卡片内标题行：标题在左，「详情」按钮右对齐 */
.ma-hs-head {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;   /* 标题 + 标签 + 详情 始终一排，不折行 */
    gap: 6px;
    width: 100%;
    min-width: 0;
}
/* 「详情」按钮最右对齐 */
.ma-hs-head .ma-picks-detail {
    margin-left: auto;
    flex: 0 0 auto;
}
/* 「详情」：与「三项 - 全部」下拉按钮同款（无框文字 + 小箭头图标），方向向上 */
.ma-picks-detail {
    border: none;
    background: transparent;
    color: #666;
    padding: 4px 2px;
    font-size: 12px;
    font-family: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 2px;
    transition: color .15s ease;
}
.ma-picks-detail:hover { color: #111; }
.ma-picks-detail:active { color: #374151; }
.ma-picks-detail .layui-icon {
    font-size: 10px;
    color: #999;
    line-height: 1;
}
/* 联赛胶囊：白底 + 淡灰细边线（紧跟「擅长联赛」标题右侧） */
.ma-cap-lg {
    background: #fff;
    border: 0.8px solid #e5e7eb;   /* 边线 0.8px、灰色比原 #d1d5db 更淡 */
    color: #374151;
    border-radius: 8px;
    padding: 1px 10px;   /* 上下内边距各减 2px（原 3px） */
    font-size: 12px;
    line-height: 1.6;
    white-space: nowrap;
    flex: 0 0 auto;
}

/* 标签与「擅长联赛」标题的间距在行 gap 基础上再 +5px（标签之间间距不变） */
.ma-hs-title + .ma-cap-lg {
    margin-left: 5px;
}

/* ============ 擅长联赛 · 详情（从下往上滑出的底部抽屉）============ */
.ma-detail-mask {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease;
    z-index: 99990;
}
.ma-detail-mask.show { opacity: 1; visibility: visible; }
.ma-detail-sheet {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    max-height: 80vh;
    background: #fff;
    border-radius: 16px 16px 0 0;
    transform: translateY(100%);
    transition: transform .28s ease;
    z-index: 99991;
    display: flex;
    flex-direction: column;
}
.ma-detail-sheet.show { transform: translateY(0); }
.ma-detail-bar {
    width: 40px;
    height: 4px;
    border-radius: 2px;
    background: #e5e7eb;
    margin: 8px auto 0;
    flex: none;
}
.ma-detail-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    border-bottom: 1px solid #f0f0f0;
    flex: none;
}
.ma-detail-title { font-size: 15px; font-weight: 600; color: #111; }
.ma-detail-close {
    border: none;
    background: none;
    font-size: 24px;
    line-height: 1;
    color: #9ca3af;
    cursor: pointer;
    padding: 0 4px;
}
.ma-detail-close:hover { color: #374151; }
/* 联赛列表表头：联赛 / 场次 / 命中 / 命中率（四列各 25%，与数据行同一套等宽规则） */
.ma-dl-head {
    display: flex;
    align-items: center;
    padding: 4px 2px 8px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 12px;
    color: #9ca3af;
}
.ma-detail-body {
    overflow-y: auto;
    padding: 6px 16px 24px;
    -webkit-overflow-scrolling: touch;
    flex: 1 1 auto;
    min-height: 200px;   /* 内容层最小高度，内容少时也保持 200px 高度 */
}
.ma-detail-pane { display: none; }
.ma-detail-pane.active { display: block; }
.ma-dl-row {
    display: flex;
    align-items: center;
    padding: 10px 2px;
    border-bottom: 1px solid #f3f4f6;
    font-size: 13px;
}
.ma-dl-name { color: #111; font-weight: 500; }
.ma-dl-count { color: #6b7280; }
.ma-dl-win { color: #6b7280; }
.ma-dl-rate { color: #16a34a; font-weight: 600; }
/* 四列等宽：联赛 / 场次 / 命中 / 命中率 各占 25%（表头与数据行统一，保证列对齐） */
.ma-dl-head > span,
.ma-dl-row > span {
    flex: 0 0 25%;
    min-width: 0;
}
/* 命中率列右对齐（数字列），其余列左对齐 */
.ma-dl-head > span:nth-child(4),
.ma-dl-row > span:nth-child(4) { text-align: right; }
/* 场次 / 命中 两列内容居中 */
.ma-dl-head > span:nth-child(2),
.ma-dl-head > span:nth-child(3),
.ma-dl-row > span:nth-child(2),
.ma-dl-row > span:nth-child(3) { text-align: center; }
/* 可点击排序的表头（场次 / 命中率）：右侧箭头指示当前排序方向 */
.ma-dl-sort { cursor: pointer; user-select: none; }
.ma-dl-sort::after { content: "↕"; margin-left: 2px; opacity: .45; font-size: 11px; }
.ma-dl-sort.desc::after { content: "↓"; opacity: 1; color: #16a34a; }
.ma-dl-sort.asc::after { content: "↑"; opacity: 1; color: #16a34a; }
.ma-dl-empty { color: #9ca3af; padding: 16px 0; text-align: center; }
/* 抽屉打开时锁定背景滚动 */
body.ma-no-scroll { overflow: hidden; }
@media (max-width: 768px) {
    .ma-detail-sheet { max-height: 86vh; }
    /* 手机端：右上角关闭「×」上移 5px（相对定位，不影响布局） */
    .ma-detail-close { position: relative; top: -5px; }
}

/* 电脑端（>768px）：详情改为屏幕正中弹出层（缩放 + 淡入）；手机端保持从下往上滑出的底部抽屉 */
@media (min-width: 769px) {
    .ma-detail-sheet {
        top: 50%;
        left: 50%;
        right: auto;
        bottom: auto;
        width: 520px;
        max-width: calc(100vw - 40px);
        max-height: 70vh;
        border-radius: 12px;
        transform: translate(-50%, -50%) scale(.96);
        opacity: 0;
        visibility: hidden;
        transition: transform .22s ease, opacity .22s ease;
    }
    .ma-detail-sheet.show {
        transform: translate(-50%, -50%) scale(1);
        opacity: 1;
        visibility: visible;
    }
    /* 居中弹层不需要抽屉顶部的小横条 */
    .ma-detail-bar { display: none; }
}

/* ===== 模型预估报告抽屉内容（2026-10-26）：样式与「擅长联赛 · 详情」抽屉一致，
   内部为 八步分析：共 N 步分析 + 全部展开 + 步骤卡（编号/标题/箭头，点击展开正文）+ 底部说明 ===== */
.ma-report-tip { font-size: 12px; color: #9ca3af; text-align: center; padding: 24px 0; }
.ma-step-bar { display: flex; align-items: center; justify-content: space-between; margin: 2px 0 10px; }
.ma-step-note { font-size: 13px; font-weight: 600; color: #374151; }
/* 报告「展开全文」按钮：与结论卡片「展开全文」相同样式（灰色 12px + 右侧图标，2026-10-27） */
.ma-step-all {
    color: #9ca3af; cursor: pointer; font-size: 12px;
    display: inline-flex; align-items: center; gap: 3px;
    background: transparent; border: none; padding: 0;   /* 去掉 <button> 默认灰色背景 */
    font-family: inherit; -webkit-appearance: none; appearance: none;
}
.ma-step-all i { font-size: 12px; line-height: 1; }
.ma-step-all:hover { color: #6b7280; }
.ma-step { background: #fff; border: 1px solid #eef0f2; border-radius: 10px; margin-bottom: 8px; }
.ma-step-head { display: flex; align-items: center; gap: 10px; padding: 13px 14px; cursor: pointer; user-select: none; }
.ma-step-no {
    flex: none; width: 22px; height: 22px; border-radius: 50%;
    background: #2563eb; color: #fff; font-size: 12px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}
.ma-step-title { flex: 1; min-width: 0; font-size: 14px; font-weight: 700; color: #111; }
.ma-step-arrow {
    flex: none; width: 7px; height: 7px; margin-right: 2px;
    border-right: 1.6px solid #9ca3af; border-bottom: 1.6px solid #9ca3af;
    transform: rotate(45deg); transition: transform .18s;
}
.ma-step.open .ma-step-arrow { transform: rotate(225deg); }
/* 【2026-10-26】步骤序号：未展开为蓝色，展开后为黑色 */
.ma-step.open .ma-step-no { background: #111; }
.ma-step-body {
    display: none; padding: 0 16px 13px 46px;
    font-size: 13px; color: #4b5563; line-height: 1.75; white-space: pre-wrap; word-break: break-word;
}
.ma-step.open .ma-step-body { display: block; }
.ma-step-foot { font-size: 12px; color: #9ca3af; text-align: center; padding: 10px 0 4px; }

/* ===== 模型预估报告弹层：四个标签（2026-10-26） ===== */
.ma-rp-tabs {
    display: flex; gap: 8px; flex-wrap: wrap;
    /* 【2026-10-26】标签在滚动容器外：flex:none 保证不被压缩；下边线已按需求去掉 */
    flex: none;
    padding: 4px 16px 10px;
}
/* 【2026-10-26】标签上方的边线去掉：只针对报告抽屉，不影响「擅长联赛 · 详情」抽屉的头部样式 */
#maReportSheet .ma-detail-head { border-bottom: none; }
.ma-rp-tab {
    font-size: 12.5px; padding: 5px 12px; border-radius: 999px;   /* 上下 6px → 5px（2026-10-26 缩减 1px） */
    background: #f3f4f6; color: #4b5563; cursor: pointer; user-select: none;
}
/* 选中标签：黑色背景 */
.ma-rp-tab.active { background: #111; color: #fff; }
/* 复核数据为空的提示行（2026-10-27） */
.ma-rp-empty-tip { margin-top: 8px; text-align: center; font-size: 12px; color: #9ca3af; }
.ma-rp-pane { display: none; }
.ma-rp-pane.active { display: block; }
/* 2026-10-26「初始分析 / 复核分析」面板：上边距 0（推荐框紧贴标签，不再留额外间隙） */
.ma-rp-pane[data-rppane="predict"], .ma-rp-pane[data-rppane="recheck"] { margin-top: 0; }

/* 分析-初始 / 分析-复核 */
.ma-conc-item {
    display: flex; gap: 10px; padding: 11px 13px; margin-bottom: 8px;
    background: #fff; border: 1px solid #eef0f2; border-radius: 10px;
}
/* 2026-10-26：去掉 min-width，标签宽度贴合文字，与右侧值的间距即容器 gap 10px（各项一致）；
   标签改为黑色胶囊按钮（align-self: flex-start 避免被拉伸成整行高的长条） */
.ma-conc-label {
    flex: none; align-self: flex-start;
    display: inline-flex; align-items: center;   /* 标签内右侧的命中标记垂直居中（2026-10-27） */
    font-size: 12px; color: #fff; line-height: 1.5; font-weight: 400;   /* 标签内文字不加粗（2026-10-26） */
    background: #111; border-radius: 999px; padding: 2px 10px;
}
/* 比分：标签文字黑底胶囊（2026-10-26 最终口径） */
.ma-conc-label.is-score { background: #111; color: #fff; border: none; }
/* 竞彩推荐（如「平局 @4.95」）/ 每个比分值：灰底无边框胶囊（2026-10-26） */
.ma-val-pill {
    display: inline-block; background: #f3f4f6; color: #4b5563; border: none;
    border-radius: 999px; padding: 2px 10px; margin: 0 6px 4px 0;
    font-size: 12.5px; font-weight: 400;   /* 推荐项胶囊内文字不加粗（2026-10-26） */
}
/* 推荐项命中标记（2026-10-27）：放在灰色推荐胶囊内靠右侧，圈内图标 8px；绿√ 命中 / 灰√ 走水 / 红× 未命中 */
.ma-conc-mark {
    display: inline-flex; align-items: center; justify-content: center;
    width: 14px; height: 14px; border-radius: 50%;   /* 圈 12px → 14px（2026-10-27 +2px） */
    margin-left: 5px; vertical-align: middle; color: #fff; font-size: 8px; line-height: 1;
    position: relative; top: -1px;   /* 整体上移 1px（2026-10-27） */
}
/* 覆盖 layui 字体图标默认 30px 字号等，保证圈内大小就是 8px */
.ma-conc-mark.layui-icon { font-size: 8px; line-height: 1; color: #fff; }
.ma-conc-mark.layui-icon::before { font-size: 8px; line-height: 1; }
.ma-conc-mark.is-hit { background: #40ae2a; }
.ma-conc-mark.is-draw { background: #9ca3af; }
.ma-conc-mark.is-miss { background: #e54d42; }
/* 命中的比分胶囊标绿 */
.ma-val-pill.is-hit { background: #40ae2a; color: #fff; }

/* 即时赔率行（竞彩/亚指/大小推荐理由下方，2026-10-26，与比赛详情页「模型 - 策略预测」同口径） */
.ma-live-odds { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; font-size: 10px; }   /* 行内文字 12px → 10px（2026-10-26） */
.ma-lo-row { display: flex; align-items: stretch; gap: 6px; }
/* 竞彩让球数（0 / +1）：白底无边框、不加粗、两个框宽度统一 16px（2026-10-26） */
.ma-lo-hc {
    flex: none; display: flex; align-items: center; justify-content: center;
    width: 16px; min-width: 16px; background: #fff; color: #666; border: none;
    border-radius: 8px; padding: 3px 0; font-size: 10px; font-weight: 400;
}
.ma-lo-hc b { font-weight: 400; color: #666; }
.ma-lo-cell {
    flex: 1; display: flex; align-items: center; justify-content: space-between;
    background: #fff; border: 0.8px solid #eef0f2; border-radius: 5px; padding: 3px 9px;   /* 白底 + 0.8px 更浅灰边 + 5px 圆角（2026-10-27 边框再变淡） */
    font-size: 10px; color: #4b5563;
}
/* 赔率一律不加粗、颜色 #666（胜平负 / 让胜让平让负 / 亚指盘口 / 大小盘口与水位，2026-10-26）
   注：!important 用于盖过下文 .ma-conc-val b { font-weight:700 }（同特异性、靠后胜出） */
.ma-lo-cell { color: #666; }
.ma-lo-cell b { font-weight: 400 !important; color: #666 !important; }
.ma-lo-cell i { font-style: normal; font-weight: 400 !important; color: #666 !important; }
.ma-lo-hc b { font-weight: 400 !important; color: #666 !important; }
/* 2026-10-26：推荐理由下方（含即时赔率行、说明文字、值）全部不加粗，统一兜底 */
.ma-conc-item, .ma-conc-item * { font-weight: 400; }
/* 风险：红色胶囊 + 内容不加粗（2026-10-26） */
.ma-conc-label.is-risk { background: #e02020; }
/* 初始与复核的同一项推荐不一致：「推荐选项」胶囊改淡绿（比分不参与比对） */
.ma-val-pill.is-diff { background: #f0f9eb; color: #2e7a20; }
/* 命中的比分胶囊仍为绿色（放在 is-diff 之后，优先级更高） */
.ma-val-pill.is-hit { background: #40ae2a; color: #fff; }
/* 无胶囊的项（建议跳过 / 风险）不一致时文字淡绿 */
.ma-val-diff { color: #2e7a20; }
/* 分析时间 / 复盘时间（放在推荐卡片上方，2026-10-27） */
.ma-conc-time {
    display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
    font-size: 10px; color: #9ca3af;   /* 12px → 10px（2026-10-27） */
}
.ma-conc-time b { font-weight: 400; color: #4b5563; }
/* 卡片可点击展开/收起（不在卡片内加任何按钮，2026-10-27） */
.ma-conc-item { cursor: pointer; }
/* 时间行右侧：展开全文 / 收起全文（灰色 12px + 右侧图标，2026-10-27） */
.ma-expand-all {
    margin-left: auto; color: #9ca3af; cursor: pointer;
    font-size: 12px; display: inline-flex; align-items: center; gap: 3px;
}
.ma-expand-all i { font-size: 12px; line-height: 1; }
.ma-expand-all:hover { color: #6b7280; }
/* 分歧提示：与推荐选项同一行、右对齐（2026-10-27） */
.ma-conc-line { display: flex; align-items: center; flex-wrap: wrap; }
.ma-conc-diff {
    margin-left: auto; padding-left: 8px;
    font-size: 11px; color: #2e7a20; white-space: nowrap;
}
.ma-conc-val.is-risk b { font-weight: 400; }
.ma-conc-val { flex: 1; min-width: 0; font-size: 13px; color: #111; line-height: 1.7; }
.ma-conc-val b { font-weight: 700; white-space: pre-wrap; word-break: break-word; }
.ma-conc-note {
    margin-top: 6px; padding-top: 6px; border-top: 1px dashed #eef0f2;
    font-size: 12.5px; color: #666; line-height: 1.75; word-break: break-word;   /* 理由文字 #4b5563 → #666（2026-10-27） */
    /* 默认收起 2 行；展开全部时还原（white-space 切回 pre-wrap 保留换行） */
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    overflow: hidden; white-space: normal;
}
.ma-all-expanded .ma-conc-note,
.ma-conc-item.is-open .ma-conc-note {
    display: block; -webkit-line-clamp: unset; overflow: visible; white-space: pre-wrap;
}
/* 风险文案同样收起 2 行（2026-10-27） */
.ma-conc-val.is-risk {
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
    overflow: hidden; white-space: normal;
}
.ma-all-expanded .ma-conc-val.is-risk,
.ma-conc-item.is-open .ma-conc-val.is-risk {
    display: block; -webkit-line-clamp: unset; overflow: visible; white-space: normal;
}
/* 收起状态下连同即时赔率行一起隐藏；展开全文 或 点击卡片展开时再显示（2026-10-27） */
.ma-live-odds { display: none; }
.ma-all-expanded .ma-live-odds,
.ma-conc-item.is-open .ma-live-odds { display: flex; }
/* 顶端抬头里的比分（替换 vs）：灰边白底小框（2026-10-27） */
.ma-title-score {
    display: inline-block; padding: 2px 6px; margin: 0 5px; line-height: 16px;   /* 与左右队名间距 +3px → +5px（2026-10-27 再 +2px） */
    background: #fff; border: 0.8px solid #d1d5db; border-radius: 5px;   /* 圆角 8px → 5px */
    font-size: 13px; font-weight: 700; color: #111; vertical-align: middle;
}
/* 完赛-复盘 */
.ma-review-score {
    display: flex; align-items: center; gap: 10px;
    padding: 11px 13px; margin-bottom: 8px;
    background: #fff; border: 1px solid #eef0f2; border-radius: 10px;
}
/* 复盘里的赛果比分：灰边白底小框（2026-10-27） */
.ma-review-score b {
    font-size: 15px; color: #111;
    display: inline-block; padding: 2px 12px;
    background: #fff; border: 1px solid #d1d5db; border-radius: 8px;
}
.ma-review-txt {
    padding: 12px 14px; border-radius: 10px; border: 1px solid #eef0f2; background: #fff;
    font-size: 13px; color: #4b5563; line-height: 1.8; white-space: pre-wrap; word-break: break-word;
}

/* 弹层空态：虚线边框圆角 + 居中灰字（2026-10-26，替换原 .ma-report-tip） */
.ma-rp-empty {
    border: 1px dashed #d1d5db;
    border-radius: 10px;
    padding: 41px 16px;   /* 上下 26px → 41px：空态框高度 +30px（2026-10-27） */
    margin-top: 0;   /* 2026-10-27 空态框与上方间距为 0（原 +10px） */
    text-align: center;
    font-size: 13px;
    color: #9ca3af;
}
/* 空态主文案加粗（暂无复核数据 / 暂无复盘内容，2026-10-27） */
.ma-rp-empty-t { display: block; font-weight: 700; color: #6b7280; }
.ma-rp-empty-tip { margin-top: 4px; }   /* 与上方主文案间距 8px → 4px（2026-10-27） */

/* ===== 弹层顶部概率条（2026-10-26）：主胜蓝 / 平局灰 / 客胜橙 ===== */
.ma-prob {
    margin-bottom: 14px;
    /* 概率条外框（2026-10-26） */
    border: 1px solid #eceef1;
    border-radius: 10px;
    background: #fafbfc;
    padding: 12px 14px;
}
.ma-prob-row { display: flex; align-items: center; gap: 12px; margin-bottom: 2px; }   /* 行间距 10px → 6px → 2px（2026-10-26 再缩减 4px） */
.ma-prob-row:last-child { margin-bottom: 0; }
.ma-prob-label { flex: none; width: 36px; font-size: 12px; color: #111; }   /* 标签字号 13.5px → 12px（2026-10-26） */
.ma-prob-track {
    flex: 1; height: 8px; background: #f0f1f3;   /* 进度条高度 14px → 12px → 8px（2026-10-26 再缩减 4px） */
    border-radius: 999px; overflow: hidden;
}
.ma-prob-fill { display: block; height: 100%; border-radius: 999px; }
.ma-prob-fill.c-blue   { background: linear-gradient(90deg, #1d4ed8, #60a5fa); }
.ma-prob-fill.c-gray   { background: #9ca3af; }
.ma-prob-fill.c-orange { background: linear-gradient(90deg, #d97706, #fbbf24); }
.ma-prob-pct { flex: none; width: 54px; text-align: right; font-size: 12px; font-weight: 700; color: #111; }   /* 百分比字号 14.5px → 12px（2026-10-26） */
/* 模型预估报告：胜率进度框上方标题（2026-10-30）：左 真实预估概率 / 右 灰色说明 */
.ma-prob-title { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 8px; }
.ma-prob-title-l { font-size: 13px; font-weight: 600; color: #111; }
.ma-prob-title-r { font-size: 12px; color: #9ca3af; }
/* 卡片内「预估概率」文本与「概率标签」（主胜/平局/客胜）点击打开报告弹层（2026-10-30） */
.ma-report-trigger { cursor: pointer; }
.ma-pbtns.ma-report-trigger:hover { opacity: .72; }
.ma-sec-ghost.ma-report-trigger:hover { color: #2b6cff; }
/* ============================================================
   模型分析解锁支付层（2026-11-01）
   未完赛比赛的「八步分析 / 初始分析 / 复核分析」需解锁后查看：
   列表按钮保留原样（右上角加锁标），点击弹解锁层；支付层为「从下往上滑出」的底部弹层 +
   半透明遮罩，两种方案卡（单次阅读 / 包 N 天）点选后主色描边 + 浅主色底 + 右上角对勾。
   滑出方式与电脑端宽度（600px）与文章详情页「解锁文章」支付层保持一致。
   ============================================================ */
.ma-ul-mask {
    position: fixed;
    inset: 0;
    background: rgba(17, 17, 17, .45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .22s ease;
    z-index: 100000;
}
.ma-ul-mask.show { opacity: 1; visibility: visible; }
/* 从下往上滑出的底部弹层（与文章详情页「解锁文章」支付层同一套滑出方式） */
.ma-ul-card {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    max-height: 86vh;
    overflow-y: auto;
    box-sizing: border-box;
    padding: 6px 16px 20px;
    background: #fff;
    border-radius: 25px 25px 0 0;
    box-shadow: 0 -6px 24px rgba(17, 17, 17, .12);
    transform: translateY(100%);
    visibility: hidden;
    transition: transform .3s ease;
    z-index: 100001;
}
.ma-ul-card.show { transform: translateY(0); visibility: visible; }
/* 电脑端（>768px）：宽度与「解锁文章」支付层一致（600px）并水平居中 */
@media (min-width: 769px) {
    .ma-ul-card {
        left: 50%;
        right: auto;
        width: 600px;
        max-width: 600px;
        transform: translate(-50%, 100%);
    }
    .ma-ul-card.show { transform: translate(-50%, 0); }
}
/* 顶部小横条（底部弹层的通用把手，与抽屉 .ma-detail-bar 同思路） */
.ma-ul-handle {
    width: 36px;
    height: 4px;
    border-radius: 2px;
    background: #e5e7eb;
    margin: 6px auto 12px;
}
.ma-ul-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ma-ul-title { display: flex; align-items: center; font-size: 16px; font-weight: 600; color: #111; line-height: 1.3; }
.ma-ul-title-ico { font-size: 18px; margin-right: 6px; color: #111; }
/* × 按钮：与分析报告层（.ma-detail-close）同尺寸同色；相对标题行上移 10px */
.ma-ul-close {
    flex: none;
    margin-top: -12px;
    border: 0; background: transparent;
    font-size: 24px; line-height: 1; color: #9ca3af; cursor: pointer;
    padding: 0 4px;
}
.ma-ul-close:hover { color: #374151; }
.ma-ul-sub { margin-top: 6px; font-size: 13px; font-weight: 500; color: #6b7280; }
.ma-ul-rights {
    margin-top: 12px;
    padding: 10px 12px;
    background: #f3f6fb;
    border-radius: 10px;
    font-size: 13px;
    color: #999;
    line-height: 1.6;
}
.ma-ul-plans { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.ma-ul-plan {
    position: relative;
    box-sizing: border-box;
    padding: 12px 14px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    cursor: pointer;
    transition: border-color .18s ease, background .18s ease;
}
.ma-ul-plan.on { border-color: #16a34a; background: #f0fdf4; }
.ma-ul-plan-name { font-size: 14px; font-weight: 500; color: #111; }
.ma-ul-plan-desc { margin-top: 4px; font-size: 12px; color: #999; }
/* 价格左移 10px（right 14→24px）给「问问分」前缀让位；「问问分」10px 灰色、不加粗 */
.ma-ul-plan-price { position: absolute; right: 24px; top: 12px; font-size: 15px; font-weight: 600; color: #111; }
.ma-ul-plan-unit { font-style: normal; font-weight: 400; font-size: 10px; color: #9ca3af; margin-right: 3px; }
.ma-ul-plan.on .ma-ul-plan-price { color: #16a34a; }
.ma-ul-plan-check {
    position: absolute;
    right: 0; top: 0;
    width: 20px; height: 20px;
    border-radius: 0 11px 0 11px;
    background: #16a34a;
    color: #fff;
    font-size: 12px; line-height: 20px;
    text-align: center;
    display: none;
}
.ma-ul-plan.on .ma-ul-plan-check { display: block; }
.ma-ul-balance {
    margin-top: 12px;
    display: flex; align-items: center; justify-content: space-between;
    font-size: 13px; color: #6b7280;
}
.ma-ul-balance b { color: #e23b3b; font-weight: 600; }
.ma-ul-btns { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.ma-ul-btn {
    box-sizing: border-box;
    width: 100%;
    height: 44px;
    border: 0;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity .18s ease;
}
.ma-ul-btn:active { opacity: .85; }
/* 主按钮「确认支付 问问分 X」= 黑色实心 + 25px 圆角（2026-11-01 用户要求） */
.ma-ul-btn-main { background: #111; color: #fff; border-radius: 25px; }
.ma-ul-btn-main[disabled] { background: #d1d5db; color: #fff; cursor: not-allowed; }
.ma-ul-btn-sub { background: #fff; color: #111; border: 1px solid #e5e7eb; }
.ma-ul-tip { margin-top: 8px; font-size: 12px; color: #9ca3af; text-align: center; }
.ma-ul-tip.err { color: #e23b3b; }
.ma-sec-link.ma-view-btn { position: relative; }
/* 抽屉内未解锁占位（三项都不显示内容） */
.ma-ul-lockbox { padding: 34px 16px; text-align: center; }
.ma-ul-lockbox .ma-ul-lock-ico { font-size: 26px; color: #9ca3af; }
.ma-ul-lockbox .ma-ul-lock-t { display: block; margin-top: 10px; font-size: 13px; font-weight: 700; color: #6b7280; }
.ma-ul-lockbox .ma-ul-lock-d { display: block; margin-top: 6px; font-size: 12px; color: #9ca3af; line-height: 1.6; }
.ma-ul-lockbox .ma-ul-btn { margin-top: 14px; height: 40px; font-size: 13px; }
/* 余额不足提示里的余额数字（红色加粗，与文章详情页「是否立即充值」提示同款） */
.ma-ul-bal { color: #e23b3b; font-weight: 700; }
/* 已持有有效包天时的「包 N 天」卡片：置灰不可点（避免重复购买） */
.ma-ul-plan-dis { background: #f7f8fa; border-color: #eceef1; cursor: default; }
.ma-ul-plan-dis:hover { border-color: #eceef1; }
.ma-ul-plan-dis .ma-ul-plan-price { color: #9ca3af; font-size: 13px; }
.ma-ul-plan-dis .ma-ul-plan-name { color: #6b7280; }
