/* onchain web 样式（自 dashboard/static/page.html 提取，2026-09-14 阶段 3）*/
  body { background:#14161a; color:#e6e6e6; font-family:"Microsoft YaHei",sans-serif; margin:0; padding:20px; }
  .wrap { max-width:1400px; margin:0 auto; }
  h1 { font-size:20px; margin:0 0 4px; }
  .sub { color:#8a8f98; font-size:13px; margin:8px 0 16px; }
  h2 { font-size:14px; border-left:3px solid #4a9eff; padding-left:8px; margin:14px 0 6px; }
  table { border-collapse:collapse; width:100%; font-size:12px; }
  th, td { border:1px solid #2a2e35; padding:4px 8px; text-align:left; vertical-align:top; }
  th { background:#1d2127; color:#8a8f98; font-weight:normal; }
  /* lp对冲策略页：策略/财务两表平行放置，窄屏自动换回上下 */
  /* 策略状态 | 财务状态 两栏固定左右并排（窄屏才上下堆叠）；
     min-width:0 允许收缩，表格内宽内容走 overflow-x 横向滚动 */
  .gme-cols { display:flex; flex-wrap:nowrap; gap:16px; align-items:flex-start; }
  .gme-col { flex:1 1 50%; min-width:0; overflow-x:auto; }
  .gme-col h3 { font-size:13px; color:#8a8f98; margin:4px 0 6px; font-weight:normal; }
  .gme-col tr.gme-sec td { background:#1d2127; color:#4a9eff; font-weight:bold; }
  .gme-col td.gme-sec-note { color:#8a8f98; font-weight:normal; }
  .gme-col td.sub { padding-left:18px; }
  .gme-col tr.sum td { border-top:2px solid #3a3f47; font-weight:bold; }
  .gme-col td.usd { text-align:right; color:#8a8f98; white-space:nowrap; }
  /* Horizon 页：三列等宽（各 1/3）并排，列内独立滚动（窄屏改上下堆叠）；
     条目 = 时间 + 推送标题 + 正文（正文按行拆 .hist-line，报告全文可滚动） */
  .hz-cols { display:flex; flex-wrap:nowrap; gap:16px; align-items:flex-start; }
  .hz-col { flex:1 1 33.33%; min-width:0; }
  .hz-col h3 { font-size:13px; color:#8a8f98; margin:4px 0 6px; font-weight:normal; }
  .hz-list { max-height:72vh; overflow-y:auto; border:1px solid #2a2e35;
    background:#171a1e; padding:4px 8px; }
  .hz-item { border-bottom:1px solid #2a2e35; padding:6px 0; }
  .hz-item:last-child { border-bottom:none; }
  .hz-head { font-size:12px; color:#8a8f98; margin-bottom:3px; }
  .hz-head .hz-title { color:#4a9eff; margin-left:6px; }
  .hz-empty { color:#8a8f98; font-size:12px; padding:6px 0; }
  /* 裂解价差页：顶部数值行（当前值 / 较前一交易日 / 区间 / 日涨跌相关）
     + 双轴折线图（手写 SVG，无图表库）+ 可折叠数据表 */
  .cs-stats { display:flex; flex-wrap:wrap; gap:8px 24px; align-items:baseline;
    font-size:13px; margin:8px 0 2px; }
  .cs-stats .cs-k { color:#8a8f98; font-size:12px; margin-right:5px; }
  .cs-stats .cs-v { font-size:20px; }
  .cs-chart { position:relative; margin:8px 0 2px; }
  .cs-chart svg { display:block; }
  .cs-tip { position:absolute; display:none; pointer-events:none; z-index:5;
    background:#1d2127; border:1px solid #2a2e35; border-radius:3px;
    color:#e6e6e6; font-size:12px; padding:5px 8px; white-space:nowrap; }
  .cs-tip .cs-tip-t { color:#8a8f98; }
  #cs-table { max-height:60vh; overflow:auto; margin-top:6px; }
  pre { margin:0; white-space:pre-wrap; word-break:break-all; font-family:Consolas,monospace; font-size:12px; }
  .ok { color:#4ade80; }
  .bad { color:#f87171; }
  .warn { color:#fbbf24; }
  .kv td:first-child { width:86px; color:#8a8f98; }
  .note { color:#8a8f98; font-size:12px; margin:6px 0 0; }
  /* 推送记录标题旁三色灯（提醒 / 通知 / 报警） */
  .lamp { font-size:12px; margin-left:8px; vertical-align:middle;
    white-space:nowrap; }
  /* 推送记录：报警条目三列字体统一（时间/类型/内容同为内容列大小 18px），
     时间列不换行收窄，内容列自动获得剩余宽度 */
  .hist-line { white-space:pre-wrap; word-break:break-all;
    font-family:Consolas,monospace; font-size:12px; }
  /* 连发折叠进度徽标（x/总数）：蓝色小字，随内容列字号略缩 */
  .burst { color:#4a9eff; font-size:12px; white-space:nowrap; }
  /* Vol 徽标（金色实底，全角括号与品种名分隔）：24h 成交额前 N 名合约
     （相比BTC涨跌 / ATR波动页品种列） */
  .vol100 { background:#fbbf24; color:#14161a; border-radius:3px;
    font-size:11px; font-weight:bold; padding:0 5px; margin-left:5px;
    white-space:nowrap; }
  .alertrow .burst { font-size:16px; }
  .hist-line.relbtc { text-align:center; }
  .alertrow td { font-size:18px; }
  .alertrow .hist-line { font-size:18px; }
  #hist-tbl th:first-child, #hist-tbl td:first-child { white-space:nowrap; color:#8a8f98; }
  #hist-tbl th:nth-child(2), #hist-tbl td:nth-child(2) { white-space:nowrap; }
  /* 推送记录：品种/实时价格/推送次数/持仓/计价来源列不换行收窄
     （持仓列两行：持仓量 + 灰色 ≈持仓额），宽度留给推送内容列 */
  #hist-tbl th:nth-child(3), #hist-tbl td:nth-child(3),
  #hist-tbl th:nth-child(4), #hist-tbl td:nth-child(4),
  #hist-tbl th:nth-child(6), #hist-tbl td:nth-child(6),
  #hist-tbl th:nth-child(7), #hist-tbl td:nth-child(7),
  #hist-tbl th:nth-child(8), #hist-tbl td:nth-child(8) { white-space:nowrap; }
  /* 推送内容列：三行左对齐（默认），宽度占剩余空间 */
  /* 报错信息页：时间/项目列不换行收窄（时间 10%、项目按内容自适应），
     内容列自动获得剩余宽度 */
  #err-tbl th:first-child, #err-tbl td:first-child { white-space:nowrap; color:#8a8f98; }
  #err-tbl th:nth-child(2), #err-tbl td:nth-child(2) { white-space:nowrap; color:#8a8f98; }
  /* 标签页：「监控」区块（行情接口 / 运行统计 / 监控分组，子标签+可折叠）
     置顶常驻，其余内容分「推送记录 / 相比BTC涨跌 / ATR波动 / 市值排行 /
     合约盘口深度 / 设置」六个标签切换 */
  .tabbar { display:flex; gap:8px; margin:12px 0; }
  .tabbar button { padding:7px 22px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:14px; cursor:pointer; font-family:inherit; }
  .tabbar button.active { background:#14161a; color:#4a9eff; border-color:#4a9eff; }
  /* 监控区块：折叠按钮与子标签（状态 / 分组 / 报错信息）；
     折叠后仅剩标题与运行徽标 */
  .mini { padding:2px 12px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:12px; cursor:pointer;
    font-family:inherit; margin-left:8px; vertical-align:middle; }
  /* 最近 1h 报错数徽标：与运行状态徽标并排，随异步刷新更新 */
  #mon-err-badge { margin-left:8px; }
  #mon-panel.collapsed { display:none; }
  #mon-status { display:block; }
  #mon-groups, #mon-errors { display:none; }
  body[data-monsub="status"] #mon-status { display:block; }
  body[data-monsub="groups"] #mon-status { display:none; }
  body[data-monsub="groups"] #mon-groups { display:block; }
  body[data-monsub="errors"] #mon-status { display:none; }
  body[data-monsub="errors"] #mon-errors { display:block; }
  #panel-history, #panel-btcchg, #panel-atr, #panel-mktcap, #panel-depth, #panel-lp, #panel-lph, #panel-settings, #panel-addrbook, #panel-hz, #panel-crackspread, #panel-hist, #panel-calc, #panel-cfg { display:none; }
  body[data-tab="lp"] #panel-lp { display:block; }
  body[data-tab="addr"] #panel-addrbook { display:block; }
  body[data-tab="hedge"] #panel-lph { display:block; }
  body[data-tab="calc"] #panel-calc { display:block; }
  body[data-tab="hist"] #panel-hist { display:block; }
  body[data-tab="cfg"] #panel-cfg { display:block; }
  /* 地址库页：列搜索框 / 操作按钮 / 新增编辑表单 */
  #ab-tbl input.ab-search { width: 100%; box-sizing: border-box; font-size: 11px; padding: 2px 4px; }
  #ab-tbl td.ab-note { max-width: 340px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #ab-tbl td.ab-ops button { margin-right: 4px; }
  #ab-form { border: 1px solid #3a3f47; padding: 8px; margin: 6px 0; }
  #ab-form input, #ab-form select { margin: 2px 4px 2px 0; }
  /* 设置页子面板（行情监控 / LP 手续费 / 美股LP对冲 / Meme LP对冲）显隐：
     独立 body 属性，与监控区块 data-monsub 完全解耦 */
  #cfg-lp, #cfg-stonks, #cfg-cryptos { display:none; }
  body[data-cfgsub="lp"] #cfg-dash { display:none; }
  body[data-cfgsub="lp"] #cfg-lp { display:block; }
  body[data-cfgsub="stonks"] #cfg-dash, body[data-cfgsub="stonks"] #cfg-lp,
  body[data-cfgsub="cryptos"] #cfg-dash, body[data-cfgsub="cryptos"] #cfg-lp { display:none; }
  body[data-cfgsub="stonks"] #cfg-stonks { display:block; }
  body[data-cfgsub="cryptos"] #cfg-cryptos { display:block; }
  /* 设置页 config.json 编辑器（四个子面板共用） */
  #cfg-editor, #lpcfg-editor, #stonkscfg-editor, #cryptoscfg-editor { width:100%; box-sizing:border-box; background:#1d2127; color:#e6e6e6;
    border:1px solid #2a2e35; font-family:Consolas,monospace; font-size:12px;
    padding:8px; white-space:pre; overflow:auto; }
  /* 相比BTC涨跌 / ATR波动 / 盘口深度：排序按钮与右对齐的数字列 */
  .sortbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:8px 0; }
  .sortbar button { padding:5px 14px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:13px; cursor:pointer; font-family:inherit; }
  .sortbar button.active { color:#4a9eff; border-color:#4a9eff; }
  .sortbar input { padding:5px 10px; background:#1d2127; color:#e6e6e6;
    border:1px solid #2a2e35; font-size:13px; font-family:inherit; width:220px; }
  .sortbar select { padding:5px 8px; background:#1d2127; color:#e6e6e6;
    border:1px solid #2a2e35; font-size:13px; font-family:inherit; }
  /* LP 子标签页（当前LP状态 / 历史LP状态 / LP持仓查询，同级）：
     body 属性控制显隐（沿用主标签页模式），选择存 localStorage。
     注意不得用 .tabbar class——主标签切换 JS 按 .tabbar button 全量绑定，
     子标签被绑上会在点击时把主标签切成 undefined 导致整页空白 */
  .lp-tabs { display:flex; gap:8px; margin:6px 0 2px; }
  .lp-tabs button { padding:5px 16px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:13px; cursor:pointer;
    font-family:inherit; }
  .lp-tabs button.active { background:#14161a; color:#4a9eff;
    border-color:#4a9eff; }
  #lp-tab-current, #lp-tab-history, #lp-tab-query, #lp-tab-stock-hist { display:none; }
  body[data-lptab="current"] #lp-tab-current { display:block; }
  body[data-lptab="history"] #lp-tab-current,
  body[data-lptab="query"] #lp-tab-current,
  body[data-lptab="stock_hist"] #lp-tab-current { display:none; }
  body[data-lptab="history"] #lp-tab-history { display:block; }
  body[data-lptab="query"] #lp-tab-query { display:block; }
  body[data-lptab="stock_hist"] #lp-tab-stock-hist { display:block; }
  /* lp对冲策略双子标签（美股LP对冲 / Meme LP对冲，同级）：标题栏左标题
     右按钮（按钮样式沿用 lp-tabs 小按钮），body 属性控制显隐（不得用
     .tabbar class——主标签 JS 全量绑定会整页空白） */
  .lph-head { display:flex; align-items:center; justify-content:space-between;
    flex-wrap:wrap; gap:8px; }
  .lph-tabs { display:flex; gap:8px; }
  .lph-tabs button { padding:5px 16px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:13px; cursor:pointer;
    font-family:inherit; }
  .lph-tabs button.active { background:#14161a; color:#4a9eff;
    border-color:#4a9eff; }
  #lph-sub-stonks, #lph-sub-cryptos { display:none; }
  body[data-hedgetab="stonks"] #lph-sub-stonks { display:block; }
  body[data-hedgetab="cryptos"] #lph-sub-cryptos { display:block; }
  /* 配置页：子标签（照 lp-tabs 抄；**不得复用 .tabbar class**——主标签 JS
     按 .tabbar button 全量绑定，复用会整页空白）+ 原文编辑器 */
  .cfg-tabs { display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 2px; }
  .cfg-tabs button { padding:5px 16px; background:#1d2127; color:#8a8f98;
    border:1px solid #2a2e35; font-size:13px; cursor:pointer;
    font-family:inherit; }
  .cfg-tabs button.active { background:#14161a; color:#4a9eff;
    border-color:#4a9eff; }
  #cfg-text { width:100%; box-sizing:border-box; background:#1d2127;
    color:#e6e6e6; border:1px solid #2a2e35; font-family:Consolas,monospace;
    font-size:12px; padding:8px; white-space:pre; overflow:auto; }
  #cfg-text:disabled { opacity:0.5; }
  /* lp对冲策略控制面板：开启/关闭服务、开启/关闭仓位按钮条
     （flex-basis:100% 独占一行，按钮态由 app.js 按服务/仓位状态切换） */
  .lph-ctl { flex-basis:100%; display:flex; gap:6px; align-items:center;
    flex-wrap:wrap; margin-bottom:8px; }
  .lph-ctl button { margin-left:0; }
  .lph-ctl button:disabled { opacity:0.45; cursor:not-allowed; }
  /* 参数化开启仓位表单行：链 + 池子地址（手填）+ 金额 */
  .lph-open { flex-basis:100%; display:flex; gap:6px; align-items:center;
    flex-wrap:wrap; margin-top:4px; }
  .lph-open select, .lph-open input { padding:4px 8px; background:#1d2127;
    color:#e6e6e6; border:1px solid #2a2e35; font-size:12px; font-family:inherit; }
  .lph-open input.hedge-pool { width:340px; max-width:100%;
    font-family:Consolas,monospace; }
  .lph-open select:disabled, .lph-open input:disabled { opacity:0.45; }
  /* 多仓位清单：每仓位一行（id+品种+链+池），关闭按钮关指定仓位 */
  .lph-poslist { flex-basis:100%; display:flex; flex-direction:column;
    gap:4px; margin-top:4px; }
  .lph-pos { display:flex; gap:6px; align-items:center; flex-wrap:wrap;
    padding:4px 8px; background:#1d2127; border:1px solid #2a2e35; }
  .lph-pos .pos-tag { color:#8ab4f8; }
  .lph-pos .pos-halted { color:#f28b82; margin-left:4px; }
  /* 概览与主表只在「当前LP状态」页显示；历史桶只在历史页显示 */
  #lp-hist { display:none; }
  body[data-lptab="history"] #lp-overview,
  body[data-lptab="history"] #lp-tbl,
  body[data-lptab="query"] #lp-overview,
  body[data-lptab="query"] #lp-tbl,
  body[data-lptab="stock_hist"] #lp-overview,
  body[data-lptab="stock_hist"] #lp-tbl { display:none; }
  body[data-lptab="history"] #lp-hist { display:block; }
  /* 监控链和池状态：概览区隐藏按钮（body 属性 + localStorage） */
  body[data-lpov="hidden"] #lp-overview { display:none; }
  .lp-sec-head { display:flex; align-items:center; justify-content:space-between;
    margin:10px 0 4px; color:#8a8f98; font-size:13px; }
  #btc-tbl th, #btc-tbl td, #atr-tbl th, #atr-tbl td,
  #depth-tbl th, #depth-tbl td, #lp-tbl th, #lp-tbl td,
  #lp-ov-tbl th, #lp-ov-tbl td,
  .lp-hist-tbl th, .lp-hist-tbl td { text-align:right; }
  #btc-tbl th:first-child, #btc-tbl td:first-child,
  #atr-tbl th:first-child, #atr-tbl td:first-child,
  #depth-tbl th:first-child, #depth-tbl td:first-child,
  #lp-tbl th:first-child, #lp-tbl td:first-child,
  #lp-tbl th:nth-child(2), #lp-tbl td:nth-child(2),
  #lp-ov-tbl th:first-child, #lp-ov-tbl td:first-child,
  #lp-ov-tbl th:nth-child(2), #lp-ov-tbl td:nth-child(2),
  .lp-hist-tbl th:first-child, .lp-hist-tbl td:first-child,
  .lp-hist-tbl th:nth-child(2), .lp-hist-tbl td:nth-child(2) { text-align:left; }
  #lp-ov-tbl { margin:4px 0 8px; }
  #lp-pager { margin:8px 0; }
  /* LP主表表头过滤行（按列过滤）：链/DEX 列两个下拉（DEX 随所选链联动，
     链选「全部链」时列出各链+DEX 组合）+ 类型列一个下拉。选项由 /lp_rows
     响应里的 facets 填充，选项变化才重建（app.js applyLpFacets） */
  #lp-filter-row th { padding:2px 4px; background:#14161a; font-weight:normal; }
  #lp-filter-row select { max-width:100%; padding:2px 4px; background:#1d2127;
    color:#e6e6e6; border:1px solid #2a2e35; font-size:11px; font-family:inherit; }
  #lp-filter-row #lp-fdex { display:block; margin-top:2px; }
  #lp-filter-row #lp-fchain, #lp-filter-row #lp-ftype { width:auto; }
  /* LP手续费：币对行可点击复制合约地址（点击后行高亮 + 底部提示条展示全文；
     历史LP状态桶内表行同样可复制） */
  #lp-tbl tbody tr, #lp-hist tbody tr, #lp-stock-hist tbody tr { cursor:pointer; }
  #lp-tbl tbody tr.lp-copied td, #lp-hist tbody tr.lp-copied td,
  #lp-stock-hist tbody tr.lp-copied td { background:#24404f; }
  #copy-toast { position:fixed; left:50%; bottom:28px; transform:translateX(-50%);
    background:#1d2127; border:1px solid #4a9eff; color:#e6e6e6; border-radius:6px;
    padding:8px 16px; font-size:13px; display:none; z-index:1000; max-width:92%;
    white-space:pre-wrap; word-break:break-all;
    font-family:Consolas,monospace; }
  /* 手机端：收窄页面边距、表格字体与单元格内边距，给内容列更多横向空间；
     报警内容列 18px -> 14px，时间列再降到 10px */
  @media (max-width:768px) {
    body { padding:10px; }
    table { font-size:11px; }
    th, td { padding:3px 4px; }
    pre { font-size:11px; }
    .hist-line { font-size:11px; }
    .alertrow .hist-line { font-size:14px; }
    .tabbar button { padding:6px 12px; font-size:13px; }
    .mini { font-size:11px; }
    /* 窄屏：主表过滤行下拉收窄字号，给数据列留横向空间 */
    #lp-filter-row select { font-size:10px; padding:2px; }
    /* 窄屏：lp对冲策略两栏恢复上下堆叠 */
    .gme-cols { flex-wrap:wrap; }
    .gme-col { flex-basis:100%; }
    /* 窄屏：Horizon 三栏同样上下堆叠 */
    .hz-cols { flex-wrap:wrap; }
    .hz-col { flex-basis:100%; }
    .hz-list { max-height:none; }
    /* 推送记录：时间/类型各 10%、其余 80% 给内容列；手机端时间只显示
       「时:分」（隐藏日期与秒），时间与类型列允许自动换行。
       10% 列宽放不下 14px 时间串，报警行时间/类型列用 11px */
    .t-date, .t-sec { display:none !important; }
    #hist-tbl th, #hist-tbl td { padding:3px 2px !important; }
    #hist-tbl th:first-child, #hist-tbl td:first-child { width:10% !important;
      white-space:normal !important; }
    #hist-tbl th:nth-child(2), #hist-tbl td:nth-child(2) { width:10% !important;
      white-space:normal !important; }
    /* 品种/实时价格/推送次数/计价来源列各 8% 收窄允许换行，宽度给
       持仓与推送内容列 */
    #hist-tbl th:nth-child(3), #hist-tbl td:nth-child(3),
    #hist-tbl th:nth-child(4), #hist-tbl td:nth-child(4),
    #hist-tbl th:nth-child(6), #hist-tbl td:nth-child(6),
    #hist-tbl th:nth-child(8), #hist-tbl td:nth-child(8) { width:8% !important;
      white-space:normal !important; }
    #err-tbl th:first-child, #err-tbl td:first-child { width:10% !important;
      white-space:normal !important; }
    #err-tbl th:nth-child(2), #err-tbl td:nth-child(2) { width:16% !important;
      white-space:normal !important; }
    .alertrow td:first-child, .alertrow td:nth-child(2) { font-size:11px !important; }
  }
  /* 「报警」弹框数据源容器：纯数据用途，始终隐藏 */
  #alert-feed { display:none; }
  /* 报警弹窗提醒：全屏遮罩 + 居中卡片，弹窗期间盖住页面内容 */
  #alert-overlay { position:fixed; inset:0; background:rgba(0,0,0,0.55);
    display:none; z-index:999; align-items:center; justify-content:center; }
  #alert-overlay.show { display:flex; }
  #alert-card { max-width:540px; width:90%; background:#1d2127;
    border:1px solid #f87171; border-radius:8px; padding:18px;
    box-shadow:0 8px 40px rgba(0,0,0,.6); }
  #alert-card h3 { color:#f87171; margin:0 0 10px; font-size:16px; }
  #alert-text { font-size:18px; line-height:1.5; word-break:break-all;
    white-space:pre-wrap; max-height:45vh; overflow-y:auto; }
  #alert-ack { margin-top:14px; padding:10px 32px; background:#f87171;
    color:#14161a; border:none; border-radius:6px; font-size:15px;
    cursor:pointer; font-family:inherit; }

/* ---- LP 计算器 ---- */
.calc-form { display:flex; flex-wrap:wrap; gap:10px 16px; align-items:flex-end;
             margin:8px 0 14px; }
.calc-form label { display:flex; flex-direction:column; gap:4px; font-size:12px;
                   color:#9aa4b2; }
.calc-form input, .calc-form select { background:#1b1f27; color:#e6e6e6;
  border:1px solid #2c323d; border-radius:4px; padding:6px 8px;
  font-family:inherit; font-size:13px; width:130px; }
.calc-form button { padding:7px 18px; font-size:13px; }
.calc-cards { display:flex; flex-wrap:wrap; gap:10px; margin:10px 0 14px; }
.calc-card { background:#1b1f27; border:1px solid #2c323d; border-radius:6px;
             padding:8px 12px; min-width:132px; }
.calc-card .k { font-size:11px; color:#9aa4b2; }
.calc-card .v { font-size:15px; margin-top:3px; }
#calc-chart { background:#1b1f27; border:1px solid #2c323d; border-radius:6px;
              margin:12px 0; overflow-x:auto; }
#calc-chart svg { display:block; }
.calc-hint { font-size:12px; color:#9aa4b2; margin:6px 0; }

/* ---- LP 计算器：目标价结果（置顶醒目）---- */
.calc-target { background:#16202e; border:1px solid #2f4a6b; border-radius:6px;
               padding:12px 16px; margin:12px 0; }
.calc-target h3 { margin:0 0 8px; font-size:14px; color:#9ec4f0; }
.calc-target .row { display:flex; flex-wrap:wrap; gap:6px 22px; font-size:14px;
                    margin:4px 0; }
.calc-target .sym { color:#9aa4b2; min-width:56px; display:inline-block; }
.calc-target .note { margin-top:8px; }
