/* ============================================================
 * ir-center-biyi.css
 * 浙江比依电器股份有限公司（603215）投资者关系子页面 —— 样式
 *
 * 视觉基因（本次按用户提供的截图 + 官网 www.nb-biyi.com/tz.html 客观采样，2026-09-15）：
 *   - 模块大标题   30px / 700 / #343434，下方留白 76px
 *   - 模块卡片底   #F4F4F4（浅灰），内容左右内缩 10%
 *   - 品牌强调色   #4FA085（比依绿：二级导航 hover/选中、绿卡、强调线）
 *   - 二级导航     白底，item 高 48px 圆角 34px，hover 绿底白字；与面包屑同排
 *   - 分隔线       #D8D8D8 1px，宽 = 内容区宽（90% / max 1728px）
 *   - Hero         全宽 373px，浅蓝紫渐变 + 斜向光束，标题深色 #363636
 *   - Header       白底 120px，仅 Logo 字标（按项目约定：投资者关系栏目不显示顶部主导航）
 *   - Footer       #2A2A2A 深底；本页采用上交所系标准版权行
 *   - 涨跌色       红涨 #D90000 / 绿跌 #009900（中国股市惯例）
 *   - 字体         系统无衬线（Microsoft YaHei / PingFang SC）
 *
 * 约定：本文件是唯一色彩来源；ir-center-biyi-data.js 内不写任何颜色字面量，
 *       图表配色由 chartPalette() 从下面的 :root 变量读取。
 * ============================================================ */

/* ---------- 0. 基础重置 ---------- */
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    font-family: "Microsoft YaHei", "PingFang SC", "Hiragino Sans GB", Arial, sans-serif;
    font-size: 14px;
    color: #333333;
    background: #FFFFFF;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}
a { text-decoration: none; color: inherit; transition: color .25s, background-color .25s, border-color .25s; }
ul, ol, li { list-style: none; }
img { border: 0; max-width: 100%; vertical-align: top; }
button { background: none; border: 0; font-family: inherit; cursor: pointer; }
table { border-collapse: collapse; width: 100%; }

/* 内容区宽度：与官网 .e_text-190 的 90% / max-width 一致（1920 视口下 = 1728px） */
.by-wrap { width: 90%; max-width: 1728px; margin: 0 auto; }

/* ============================================================
 * 1. 全局变量（JS 通过 getComputedStyle 读取，JS 内不写颜色）
 * ============================================================ */
:root {
    /* 品牌与文字 */
    --brand: #4FA085;            /* 比依绿：导航 hover/选中、绿卡底、强调 */
    --brand-dark: #3E8A70;       /* 深一档（hover 加深） */
    --brand-soft: #EAF6F1;       /* 极浅绿（标签底） */
    --ink: #343434;              /* 模块大标题 */
    --text: #333333;             /* 正文 */
    --text-2: #666666;           /* 次要文字 */
    --text-3: #999999;           /* 弱化文字 */
    --white: #FFFFFF;

    /* 结构与面 */
    --card: #F4F4F4;             /* 模块卡片浅灰底 */
    --card-hover: #EFEFEF;
    --line: #E5E5E5;             /* 表格/卡片内部线 */
    --divider: #D8D8D8;          /* 内容区 1px 分隔线 */
    --page: #FFFFFF;

    /* Hero */
    --hero-ink: #363636;         /* Hero 大标题（深色，非白字） */
    --hero-ink-2: #4A4A4A;       /* Hero 副标题 */

    /* Footer */
    --footer-bg: #2A2A2A;
    --footer-text: #B3B3B3;
    --footer-gap: 46px;          /* 标准版权行中间大间距宽度 */

    /* 涨跌色（中国习惯：红涨绿跌） */
    --up: #D90000;
    --down: #009900;
    --flat: #555555;

    /* 分时行情图色板（= IR2 techBlue 模板色，键名与 chartPalette() 一一对应） */
    --chart-bg: #FFFFFF;
    --chart-line: #1677FF;                       /* $mountChartColor */
    --chart-bar: #FF7A45;                        /* $barChartColor（量能） */
    --chart-area-top: #1677FF;                   /* 面积渐变起点 */
    --chart-area-bottom: #F5F5F5;                /* 面积渐变终点（模板 rgb(245,245,245)） */
    --chart-grid: rgba(22,119,255,0.2);          /* $chartBorderColor */
    --chart-axis: #1677FF;
    --chart-axis-green: #6ca584;                 /* 价格轴/时间轴轴线（IR2 原值） */
    --chart-axis-label: #666666;
    --chart-guide: #000000;                      /* 昨收虚线（模板 markLine lineStyle） */
    --chart-guide-label: #000000;                /* 昨收标签文字（模板 markLine label） */
    --chart-guide-label-bg: #FFFFFF;             /* 昨收标签底色，压住虚线保证可读 */
    --chart-tooltip-bg: rgba(245,245,245,0.94);
    --chart-tooltip-border: #CCCCCC;
    --chart-tooltip-text: #000000;
    --chart-tooltip-hr: #9A9A9A;
    --chart-tooltip-font: 12px;
    --chart-tooltip-line-height: 18px;

    /* 尺寸 */
    --header-h: 120px;
    --hero-h: 373px;
    --subnav-h: 48px;

    /* 分时图网格布局 —— 数值取自 IR2 techBlue 模板 grid 配置，JS 通过 cssVar 读取
       （模板：grid[0]{left:65,right:65,height:'45%'} 且不设 top → 用 ECharts 默认 60；
              grid[1]{left:65,right:65,top:'62%',height:'20%'}）
       top 不能小于 60：yAxis 的 name（价格/涨跌幅）画在网格上方，留白不足会被画布裁掉 */
    --chart-gut-left: 65px;
    --chart-gut-right: 65px;
    --chart-grid-top: 60px;
    --chart-grid-h: 45%;
    --chart-vol-top: 62%;
    --chart-vol-h: 20%;
}

/* ---------- 涨跌色：只走 CSS（组件类自带 color 也压得住） ---------- */
.up,   .up *   { color: var(--up) !important; }
.down, .down * { color: var(--down) !important; }
.flat, .flat * { color: var(--flat) !important; }

/* ============================================================
 * 2. Header（按项目硬性约定：不显示顶部主导航，仅 Logo 字标）
 * ============================================================ */
.by-header { background: var(--page); }
.by-header-inner {
    height: var(--header-h);
    display: flex;
    align-items: center;
}
.by-logo { line-height: 1; }
.by-logo-mark {
    font-size: 30px;
    font-weight: 700;
    color: #1A1A1A;
    letter-spacing: 1px;
}
.by-logo-text {
    font-size: 30px;
    font-weight: 700;
    color: #1A1A1A;
    letter-spacing: 2px;
    margin-left: 4px;
}
.by-logo-sub {
    display: block;
    margin-top: 10px;
    font-size: 13px;
    color: var(--text-2);
    letter-spacing: .3px;
}

/* ============================================================
 * 3. Hero（全宽 Banner，标题深色）
 * ============================================================ */
.by-hero {
    position: relative;
    height: var(--hero-h);
    overflow: hidden;
    background:
        /* 暖色斜向光束 */
        linear-gradient(158deg, rgba(255,178,96,.62) 0%, rgba(255,178,96,0) 30%),
        /* 右上角高光 */
        radial-gradient(58% 120% at 92% 4%, rgba(255,255,255,.62) 0%, rgba(255,255,255,0) 60%),
        /* 左下深海军蓝 */
        radial-gradient(88% 155% at 2% 106%, #131C63 0%, rgba(19,28,99,.9) 24%, rgba(19,28,99,0) 62%),
        /* 浅蓝紫主渐变 */
        linear-gradient(112deg, #1F2E86 0%, #4A72B8 18%, #9FC0E4 38%, #D3D9EE 55%, #A8C6E8 74%, #7FA9DC 100%);
}
/* 斜向浅色光束纹理 */
.by-hero::before {
    content: '';
    position: absolute;
    inset: -10% -5%;
    background:
        repeating-linear-gradient(112deg, rgba(255,255,255,.34) 0 1.5px, rgba(255,255,255,0) 1.5px 68px),
        repeating-linear-gradient(112deg, rgba(140,215,255,.42) 0 4px, rgba(140,215,255,0) 4px 132px);
    pointer-events: none;
}
/* 中央亮晕：保证深色标题可读 */
.by-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(46% 130% at 50% 46%, rgba(255,255,255,.9) 0%, rgba(255,255,255,.5) 40%, rgba(255,255,255,0) 72%);
    pointer-events: none;
}
.by-hero-inner {
    position: relative;
    z-index: 2;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.by-hero-title {
    font-size: 44px;
    font-weight: 700;
    color: var(--hero-ink);
    letter-spacing: 6px;
    line-height: 1.1;
}
.by-hero-sub {
    margin-top: 16px;
    font-size: 28px;
    color: var(--hero-ink-2);
    letter-spacing: 4px;
    font-weight: 400;
}

/* ============================================================
 * 4. 二级导航（与面包屑同排，比依官网 ab_ty 样式：绿胶囊 hover）
 * ============================================================ */
.by-subnav {
    position: sticky;
    top: 0;
    z-index: 60;
    background: var(--page);
    border-bottom: 1px solid var(--divider);
}
.by-subnav-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 46px 0 44px;
}
.by-crumb {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
    color: var(--text-3);
    white-space: nowrap;
    flex: 0 0 auto;
}
.by-crumb-home-icon {
    color: var(--brand);
    display: inline-flex;
    vertical-align: middle;
}
.by-crumb-sep { color: #C0C0C0; }
.by-crumb .is-current { color: var(--text-2); }

.by-nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 10px;
    flex: 1 1 auto;
}
.by-nav-item > a {
    display: block;
    height: var(--subnav-h);
    line-height: var(--subnav-h);
    padding: 0 18px;
    text-align: center;
    font-size: 16px;
    color: var(--text);
    border-radius: 34px;
    transition: background-color .25s, color .25s;
}
.by-nav-item > a:hover,
.by-nav-item.active > a {
    background-color: var(--brand);
    color: var(--white);
}

/* ============================================================
 * 5. 模块通用：标题 + 卡片
 * ============================================================ */
.by-main { background: var(--page); }
.by-sec { padding-top: 80px; scroll-margin-top: 96px; }
.by-sec:last-of-type { padding-bottom: 90px; }
.by-sec-title {
    font-size: 30px;
    font-weight: 700;
    color: var(--ink);
    line-height: 1.2;
    margin: 0 0 76px;
}
.by-card {
    background: var(--card);
    padding: 56px 10%;
}
/* 卡片内不需要左右内缩（表格 / 图表类）：留 4%，内部 .by-card-pad 再补 6% = 10% */
.by-card--bleed { padding-left: 4%; padding-right: 4%; }
.by-card--bleed > .by-card-pad { padding-left: 6%; padding-right: 6%; }

/* 卡片内小标题（分红 / 送股 分组） */
.by-subhead {
    font-size: 15px;
    font-weight: 700;
    color: var(--ink);
    padding-bottom: 14px;
}
.by-subhead-gap { padding-top: 44px; }

/* 通用隐藏态（JS 用 classList 切换，不写内联样式） */
.is-hidden { display: none !important; }

/* 字段网格：3 列（第 3 列留空）。列宽按「卡片总宽」计——卡片左右各内缩 10%，
   故 inner 的 34% ≈ 卡片总宽的 27.2%，使列起点对齐参考图的 10% / 37% */
.by-fgrid { display: grid; grid-template-columns: 34% 34% auto; }
.by-fitem { margin-bottom: 30px; }
.by-fitem:last-child { margin-bottom: 0; }
.by-fk { font-size: 18px; color: var(--text); }
.by-fk strong { font-weight: 700; }
.by-fv { font-size: 18px; color: var(--text); font-weight: 700; margin-top: 2px; word-break: break-all; }
/* 单行式：标签与值同行 */
.by-frow { font-size: 18px; color: var(--text); line-height: 55px; }
.by-frow .k { color: var(--text); }
.by-frow .v { font-weight: 700; }

/* ============================================================
 * 6. 沪市行情
 * ============================================================ */
.by-mkt-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    padding-bottom: 22px;
    border-bottom: 1px solid var(--line);
}
.by-mkt-abbr { font-size: 24px; font-weight: 700; color: var(--ink); }
.by-mkt-code { font-size: 16px; color: var(--text-3); margin-left: 8px; }
.by-mkt-price { text-align: right; line-height: 1; }
.by-mkt-last { font-size: 40px; font-weight: 700; color: var(--flat); }
.by-mkt-zd-wrap { margin-top: 10px; font-size: 16px; font-weight: 700; }
.by-mkt-zd { margin-right: 16px; }
.by-mkt-data {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 24px 12px;
    padding: 26px 0 8px;
}
.by-mkt-k { font-size: 13px; color: var(--text-3); }
.by-mkt-v { font-size: 17px; font-weight: 700; color: var(--text); margin-top: 4px; }
.by-chart-wrap { position: relative; margin-top: 12px; }
.by-chart { width: 100%; height: 470px; }

/* ECharts tooltip 里的分隔线（渲染在图表 HTML tooltip 内，可用 CSS 类）
   ⚠️ 必须显式写 height/border，否则 UA 默认 hr 会渲染成 2 行 */
.chart-tooltip-hr {
    height: 0;
    margin: 4px 0;
    border: 0;
    border-top: 1px solid var(--chart-tooltip-hr);
}

/* ============================================================
 * 7. Tab（沪市公告）
 * ============================================================ */
.by-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 26px;
}
.by-tab {
    height: 40px;
    padding: 0 26px;
    font-size: 15px;
    color: var(--text);
    background: var(--page);
    border: 1px solid var(--line);
    border-radius: 20px;
}
.by-tab.active { background: var(--brand); border-color: var(--brand); color: var(--white); }
.by-tabpane { display: none; }
.by-tabpane.active { display: block; }

/* ============================================================
 * 8. 表格（公告 / 路演 / 股本 / 利润分配）
 * ============================================================ */
.by-table { background: var(--page); }
.by-table thead th {
    font-size: 15px;
    font-weight: 700;
    color: var(--text);
    text-align: left;
    padding: 16px 24px;
    background: var(--page);
    border-bottom: 1px solid var(--line);
    white-space: nowrap;
}
.by-table tbody td {
    padding: 16px 24px;
    font-size: 15px;
    color: var(--text);
    border-bottom: 1px solid var(--line);
    vertical-align: middle;
}
.by-table tbody tr:last-child td { border-bottom: 0; }
.by-table tbody tr:hover td { background: #FAFAFA; }
.by-table .c-date { width: 140px; color: var(--text-2); white-space: nowrap; }
.by-table .c-cat { width: 150px; color: var(--text-2); }
.by-table .c-num { width: 220px; text-align: right; font-variant-numeric: tabular-nums; }
.by-table .c-title a:hover { color: var(--brand); }
.by-table td.c-title { padding-right: 40px; }
.by-table .c-idx { width: 60px; color: var(--text-3); }
.by-table td.c-title a {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* 空态单元格（护住 padding 不被 tbody td 规则压掉） */
.by-table tbody td.list-empty {
    text-align: center;
    color: var(--text-3);
    padding: 46px 24px;
}

/* ============================================================
 * 9. 文档列表（上市公司发布 / 治理细则）
 * ============================================================ */
.by-doclist { background: var(--page); }
.by-doclist li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 18px 24px;
    border-bottom: 1px solid var(--line);
}
.by-doclist li:last-child { border-bottom: 0; }
.by-doclist li:hover { background: #FAFAFA; }
.by-doclist .doc-title {
    font-size: 15px;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.by-doclist a.doc-title:hover { color: var(--brand); }
.by-doclist .doc-date { font-size: 14px; color: var(--text-3); white-space: nowrap; }
.by-doclist .list-empty,
.by-ialist .list-empty {
    display: block;
    text-align: center;
    color: var(--text-3);
    padding: 46px 0;
    background: var(--page);
}
/* ============================================================
 * 9.1 流式加载列表（上市公司发布）
 *   接口 getCompanyPublish 支持 pageNum/pageSize，但返回体里**没有总数 / 总页数**
 *   （只有 result[]），分页组件算不出页码 → 改为「滚动到底自动追加下一页」的流式加载。
 *   形态上不再使用表格 / 表格行：每条一张白底描边卡片，标题在上、日期在下。
 * ============================================================ */
.by-flowlist { display: block; }
.by-flow-item {
    padding: 18px 22px;
    background: var(--page);
    border: 1px solid var(--line);
    border-radius: 4px;
    transition: border-color .25s;
}
.by-flow-item + .by-flow-item { margin-top: 14px; }
.by-flow-item:hover { border-color: var(--brand); }
.by-flow-title {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;                        /* 最长两行，超出省略 */
    overflow: hidden;
    font-size: 15px;
    line-height: 24px;
    color: var(--text);
    transition: color .25s;
}
a.by-flow-title:hover { color: var(--brand); }
.by-flow-date {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    color: var(--text-3);
}
/* 列表底部状态行：加载中（转圈）/ 继续滚动提示 / 已加载全部 / 暂无数据 */
.by-flow-foot {
    margin-top: 22px;
    min-height: 22px;
    text-align: center;
    font-size: 13px;
    line-height: 22px;
    color: var(--text-3);
}
.by-flow-foot:empty { min-height: 0; }
.by-flow-foot.is-empty { margin-top: 0; padding: 44px 0; }   /* 无数据时撑起空态高度 */
.by-flow-foot.is-loading::before {
    content: "";
    display: inline-block;
    width: 12px;
    height: 12px;
    margin-right: 8px;
    vertical-align: -1px;
    border: 2px solid var(--line);
    border-top-color: var(--brand);
    border-radius: 50%;
    animation: by-flow-spin .8s linear infinite;
}
@keyframes by-flow-spin { to { transform: rotate(360deg); } }



/* ============================================================
 * 9.1 上市公司发布 —— 上拉加载（mescroll 1.4.1）
 *   接口 getCompanyPublish 支持 pageNum/pageSize，但返回体里**没有总数 / 总页数**
 *   （只有 result[]），分页组件算不出页码 → 改用 mescroll 的上拉加载：
 *   滚动到列表底部自动追加下一页；
 *   「加载中…／已加载全部／暂无数据」由组件自带的
 *   .mescroll-upwarp（加载提示 / -- END --）与 .mescroll-empty（空态）渲染。
 *   组件以「区域滚动」模式初始化（new MeScroll(容器id)），**容器必须有确定高度**，
 *   否则组件判定无内容可滚、上拉不触发 → 高度见下面的 .by-mescroll。
 *   形态上不用表格：每条一张白底描边卡片，标题在上、日期在下。
 * ============================================================ */
/* ⚠️ 用两个类提高优先级：mescroll 官方 CSS 里的 `.mescroll { height: 100% }`
   是单类选择器且内联 <style> 在主 CSS 之后，只写 .by-mescroll 压不住它 */
.by-mescroll.mescroll { height: 480px; }

.by-flow-item {
    padding: 18px 22px;
    background: var(--page);
    border: 1px solid var(--line);
    border-radius: 4px;
    transition: border-color .25s;
}
.by-flow-item + .by-flow-item { margin-top: 14px; }
.by-flow-item:hover { border-color: var(--brand); }
.by-flow-title {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;                        /* 最长两行，超出省略 */
    overflow: hidden;
    font-size: 15px;
    line-height: 24px;
    color: var(--text);
    transition: color .25s;
}
a.by-flow-title:hover { color: var(--brand); }
.by-flow-date {
    display: block;
    margin-top: 8px;
    font-size: 13px;
    color: var(--text-3);
}
/* 组件自带提示的观感对齐页面（库默认 gray / 16px 圆点） */
.by-mescroll .upwarp-tip,
.by-mescroll .upwarp-nodata,
.by-mescroll .mescroll-empty .empty-tip {
    font-size: 13px;
    color: var(--text-3);
}
.by-mescroll .upwarp-progress,
.by-mescroll .downwarp-progress {
    border-color: var(--brand);
    border-bottom-color: transparent;             /* 缺口在底部，配 mescrollRotate 才像转圈 */
}
/* 组件空态默认贴顶（padding-top: 20px），下推使其在固定高度的容器里大致居中 */
.by-mescroll .mescroll-empty { padding-top: 200px; }

/* ============================================================
 * 10. 互动交流
 * ============================================================ */
.by-ia { display: flex; flex-direction: column; gap: 18px; }
.by-ia-item { background: var(--page); padding: 24px 28px; }
.by-ia-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.by-ia-tag {
    display: inline-block;
    padding: 1px 10px;
    font-size: 12px;
    line-height: 20px;
    white-space: nowrap;
    color: var(--white);
    background: var(--brand);
    border-radius: 3px;
}
.by-ia-tag.is-reply { background: var(--text-2); }
.by-ia-meta { font-size: 13px; color: var(--text-3); }
.by-ia-q { padding-bottom: 16px; border-bottom: 1px dashed var(--line); }
.by-ia-a { padding-top: 14px; }
.by-ia-text { font-size: 15px; color: var(--text); line-height: 1.9; white-space: pre-wrap; }

/* ============================================================
 * 11. 公司简介
 * ============================================================ */
.by-pf-text {
    font-size: 16px;
    color: var(--text);
    line-height: 2;
    white-space: pre-wrap;
    margin-bottom: 42px;
}
/* 公司简介字段：等宽 3 列 + 列间距（值普遍较长，留出呼吸位避免文字串列） */
.by-pf-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    column-gap: 40px;
    border-top: 1px solid var(--line);
    padding-top: 34px;
}
.by-pf-item { margin-bottom: 26px; }
.by-pf-k { font-size: 14px; color: var(--text-3); }
.by-pf-v { font-size: 16px; color: var(--text); margin-top: 4px; word-break: break-all; }

/* ============================================================
 * 12. 公司高管
 * ============================================================ */
.by-mgrid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 22px;
}
.by-mcard { background: var(--page); }
.by-mava {
    height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 34px;
    font-weight: 700;
    color: var(--white);
    letter-spacing: 2px;
    background: linear-gradient(140deg, var(--brand) 0%, #7BBFA9 100%);
}
.by-mbody { padding: 16px 18px 20px; text-align: center; }
.by-mname { font-size: 17px; font-weight: 700; color: var(--ink); }
.by-mpost { margin-top: 6px; font-size: 14px; color: var(--text-2); }

/* ============================================================
 * 13. 联系方式（沿用参考图的比依绿卡片）
 * ============================================================ */
.by-card--contact { background: var(--brand); padding-top: 48px; padding-bottom: 48px; }
/* 绿卡两列：左列起点 10%、右列起点 58%（对齐参考图绿卡实测位置） */
.by-card--contact .by-fgrid { grid-template-columns: 60% auto; }
.by-card--contact .by-frow { color: var(--white); font-size: 18px; line-height: 62px; }
.by-card--contact .by-frow .v { font-weight: 700; }
.by-card--contact a:hover { text-decoration: underline; }

/* ============================================================
 * 14. 分页器
 * ============================================================ */
.by-page {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 22px 24px 0;
    background: var(--page);
}
.by-page .pg-info { margin-right: auto; font-size: 13px; color: var(--text-3); }
.by-page .pg-info em { font-style: normal; color: var(--brand); font-weight: 700; }
.by-page a {
    min-width: 34px;
    height: 34px;
    line-height: 32px;
    padding: 0 10px;
    text-align: center;
    font-size: 14px;
    color: var(--text-2);
    border: 1px solid var(--line);
    border-radius: 3px;
    cursor: pointer;
}
.by-page a:hover { color: var(--brand); border-color: var(--brand); }
.by-page a.current { color: var(--white); background: var(--brand); border-color: var(--brand); }
.by-page a.disabled { color: #C0C0C0; cursor: default; border-color: var(--line); }

/* ============================================================
 * 15. Footer（上交所系标准版权行）
 * ============================================================ */
.by-footer {
    background: var(--footer-bg);
    padding: 26px 0 24px;
    text-align: center;
}
.by-foot-copy {
    font-size: 13px;
    color: var(--footer-text);
    line-height: 1.9;
}
.by-foot-gap { display: inline-block; width: var(--footer-gap); }

/* ============================================================
 * 16. 返回顶部
 * ============================================================ */
.by-gotop {
    position: fixed;
    right: 24px;
    bottom: 60px;
    z-index: 80;
    width: 46px;
    height: 46px;
    font-size: 12px;
    line-height: 1.25;
    color: var(--white);
    background: var(--brand);
    border-radius: 50%;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s, visibility .3s, background-color .3s;
}
.by-gotop.show { opacity: 1; visibility: visible; }
.by-gotop:hover { background: var(--brand-dark); }

/* ============================================================
 * 17. 响应式
 * ============================================================ */
@media only screen and (max-width: 1400px) {
    .by-nav-item > a { padding: 0 14px; font-size: 15px; }
    .by-mgrid { grid-template-columns: repeat(3, 1fr); }
}
@media only screen and (max-width: 1100px) {
    :root { --header-h: 92px; --hero-h: 300px; }
    .by-logo-mark, .by-logo-text { font-size: 24px; }
    .by-hero-title { font-size: 34px; letter-spacing: 4px; }
    .by-hero-sub { font-size: 20px; letter-spacing: 2px; }
    .by-subnav-inner { flex-direction: column; align-items: flex-start; padding: 26px 0 24px; }
    .by-nav { justify-content: flex-start; }
    .by-nav-item > a { padding: 0 12px; font-size: 14px; }
    .by-sec-title { font-size: 24px; margin-bottom: 40px; }
    .by-sec { padding-top: 50px; }
    .by-card { padding: 34px 6%; }
    .by-mkt-data { grid-template-columns: repeat(3, 1fr); }
    .by-mgrid { grid-template-columns: repeat(2, 1fr); }
    .by-pf-grid { grid-template-columns: 1fr; }
    .by-fgrid { grid-template-columns: 1fr; }
    .by-chart { height: 340px; }
    .by-table .c-date, .by-table .c-cat, .by-table .c-num { width: auto; }
}
@media only screen and (max-width: 700px) {
    .by-nav-item > a { padding: 0 10px; font-size: 13px; }
    .by-mkt-head { flex-direction: column; align-items: flex-start; }
    .by-mkt-price { text-align: left; }
    .by-mgrid { grid-template-columns: 1fr; }
    .by-card--contact .by-frow { line-height: 34px; margin-bottom: 12px; }
}
