/* pc/_supply_real.css —— ★ r1003 供应大厅「实拍货源」真实数据视图样式 */
/* ★ r1004：真实货源区提到页面顶部后的标题条 */
.ysr-real-top{margin:0 0 14px}
.ysr-real-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 10px}
.ysr-real-hd h3{margin:0;font-size:16px;color:#1c1c1c;font-weight:700}
.ysr-real-hd span{font-size:12.5px;color:#8a8168}
.ysr-real-hd .ysr-real-more{margin-left:auto;font-size:12.5px;color:#145c43;text-decoration:none}
.ysr-real-hd .ysr-real-more:hover{text-decoration:underline}

.ysr-bar{display:flex;gap:9px;flex-wrap:wrap;align-items:center;
  background:#ffffff;border:1px solid #e2dcc8;border-radius:10px;
  padding:11px 13px;margin:12px 0 14px}
.ysr-bar input[type=search],.ysr-bar select{padding:7px 11px;
  border:1px solid #e2dcc8;border-radius:7px;background:#ffffff;
  font-size:13.5px;color:#2b2119;min-width:0}
.ysr-bar input[type=search]{flex:1 1 220px}
.ysr-bar button{padding:7px 15px;border:1px solid #e2dcc8;background:#ffffff;
  border-radius:7px;cursor:pointer;font-size:13.5px;color:#5a4a33}
.ysr-bar button:hover{border-color:#145c43;color:#145c43}
.ysr-cnt{margin-left:auto;font-size:12.5px;color:#8a8168}

/* ★ r1003 王先生定版：**一排四个**，方框清晰（跟站点既有 .grid 同口径：
   repeat(4,1fr)，窄屏降 3/2/1 列）。卡片边框加实、加阴影，视觉不乱。 */
/* ★★ r1003 王先生定版：卡片尺寸与首页 .gcard **完全一致**
   —— 图片固定 140px 高（object-fit:cover，不压扁）
   —— 卡片等高（flex + 固定 padding），绝不出现长条
   —— 圆角 6px、边框 1px var(--line)、hover 位移 2px（同首页） */
/* ★★ 王先生定版：**所有卡片高度完全一致**（680px）——
   不再出现「有的高有的低」的长短不一。
   字段多时正文区内部滚动/截断，卡片外形永远统一。 */
/* ★★ r1004 王先生定版（治「下半截大片空白」）：
   根因 = 硬写 grid-auto-rows:680px + .ysr-card{height:680px}，
   而供应卡字段多、实际内容只占约 520px → 下半截空一大块（图7 实拍）。
   治法（与首页 .gcard **完全同口径**）：
     ① 去掉固定行高 → **内容撑开**，卡高随字段多少自然生长；
     ② Grid 默认 align-items:stretch → **同一排卡片仍然等高**（尺寸统一不破）；
     ③ 卡内 .ysr-ft{margin-top:auto} → 底部「联系人 + 电话 + 查看手机号」永远贴底。
   → 结果：既无空白，又全排等高。
   ★ r1004 追加：实测跨排仍不等高（472/494/547）→ 王先生要「尺寸一模一样」
     → 固定行高 560px（全页统一），卡内超出部分截断，绝不长短不一。 */
/* ★ r1004 王先生定版（治「下半截大片空白」）：
   供应卡的字段数因条目而异（有的 9 项、有的 4 项）→ 固定 560px 会让字段少的卡
   下半截空一大块（实测首屏卡片就是这样）。
   定版：**内容撑开 + 同排等高**（Grid stretch）
     → 同排卡片等高（尺寸统一不破），卡高随字段多少自然生长（无空白）。 */
.ysr-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
  align-items:stretch}
.ysr-grid{grid-auto-rows:400px}
.ysr-grid > .ysr-card{height:400px;min-height:0;max-height:400px;overflow:hidden}
.ysr-card .ysr-bd{overflow:hidden;min-height:0}
/* ★ r1004：内容超出固定行高时**截断**而不是撑破卡片
   （实测不设 max-height 时卡高被内容顶到 551~677 六种，违反「尺寸一模一样」） */
.ysr-card .ysr-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ysr-card .ysr-bd>.ysr-m:nth-of-type(n+6){display:none}
@media(max-width:1260px){.ysr-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.ysr-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.ysr-grid{grid-template-columns:1fr}}
.ysr-card{background:var(--panel,#ffffff);border:1px solid var(--line,#e2dcc8);
  border-radius:6px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 1px 3px rgba(0,0,0,.05);
  transition:box-shadow .15s,transform .15s}
.ysr-card:hover{box-shadow:0 4px 14px rgba(20,92,67,.14);transform:translateY(-2px)}
/* 图片高度与首页 .gcard .img 一致（140px 固定高，cover 不压扁） */
.ysr-img{width:100%;height:140px;object-fit:cover;display:block;
  background:#eef4ef;border-bottom:1px solid var(--line,#e2dcc8)}
/* ★ r1003 王先生：「没有图片就算了」→ 无图时用**紧凑文字头**，
   不留大块空白占位（4:3 的大米色块太占地方，看着乱）。
   有图时才是完整 4:3 实拍图。 */
/* 无图时同样占 140px（与有图卡片**等高**，不出现长短不一的卡片） */
.ysr-noimg{width:100%;height:140px;display:flex;align-items:center;
  justify-content:center;background:linear-gradient(135deg,#eef4ef,#e3ede6);
  border-bottom:1px solid var(--line,#e2dcc8)}
.ysr-noimg span{font-size:19px;font-weight:600;color:#a9b3a0;letter-spacing:3px}

.ysr-bd{padding:10px 12px;display:flex;flex-direction:column;gap:5px;flex:1;
  min-width:0;min-height:0}
/* ★ r1004：字段少的卡 → 内容区撑高，底部动作条（联系人+电话+查看手机号）沉底 */
.ysr-bd>.ysr-ft{margin-top:auto}
/* 字段多的卡：超出部分裁切（保证全页高度统一、外形不破） */
.ysr-bd>.ysr-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ysr-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.ysr-nm{font-size:15.5px;font-weight:600;line-height:1.45;color:#1c1c1c;word-break:break-all}
.ysr-nm .ok{color:#1f7a4d;font-size:12px;margin-left:4px}
.ysr-m{font-size:12.5px;color:#555;line-height:1.75}
.ysr-m b{color:#1c1c1c;font-weight:600}
.ysr-ft{margin-top:auto;padding-top:9px;border-top:1px dashed #e2dcc8;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-size:12.5px;color:#6b5c49}
.ysr-ft b{color:#3a2e1e}
.ysr-phone{font-family:Consolas,Monaco,monospace;font-size:13px;color:#8a6100;
  background:#eaf5ee;border:1px solid #b9d8c6;border-radius:5px;padding:2px 9px;
  display:inline-block}
.ysr-go{margin-left:auto;color:#145c43;font-size:12px;text-decoration:none;cursor:pointer;
  white-space:nowrap}
.ysr-go:hover{text-decoration:underline}

.ysr-tag{font-size:11.5px;padding:2px 8px;border-radius:4px;
  background:#f2f5f2;color:#3f5c4a;border:1px solid #d6e3da}
.ysr-tag.corp{background:#eaf5ee;color:#145c43;border-color:#b9d8c6}
.ysr-tag.person{background:#eef3f8;color:#1f5f8b;border-color:#c2d4e2}
.ysr-tag.img{background:#f7f4ec;color:#8a6100;border-color:#e2dcc8}

.ysr-code{font-family:Consolas,Monaco,monospace;font-size:11.5px;font-weight:600;
  color:#145c43;background:#eaf5ee;
  border:1px solid #b9d8c6;border-radius:4px;padding:2px 8px;letter-spacing:.4px;
  white-space:nowrap}
.ysr-code.m{color:#145c43;background:#eaf5ee;border-color:#b9d8c6}
.ysr-code.p{color:#1f5f8b;background:#eef3f8;border-color:#c2d4e2}
.ysr-code.s{color:#145c43;background:#eaf5ee;border-color:#b9d8c6}

.ysr-empty{text-align:center;padding:48px 20px;color:#8c8478;font-size:14px;
  grid-column:1/-1}
.ysr-pager{display:flex;gap:7px;align-items:center;justify-content:center;
  flex-wrap:wrap;margin:20px 0 4px}
.ysr-pager .yp{min-width:34px;padding:7px 12px;border:1px solid #e2dcc8;
  background:#ffffff;border-radius:8px;cursor:pointer;font-size:13px;color:#5a4a33}
.ysr-pager .yp:hover:not(:disabled){border-color:#145c43;color:#145c43}
.ysr-pager .yp.on{background:#145c43;border-color:#145c43;color:#fff;font-weight:600}
.ysr-pager .yp:disabled{opacity:.45;cursor:not-allowed}
.ysr-pginfo{margin-left:8px;font-size:12.5px;color:#8a8168}
@media(max-width:640px){
  .ysr-grid{grid-template-columns:1fr}
  .ysr-bar input[type=search]{flex:1 1 100%}
  .ysr-cnt{margin-left:0;width:100%}
  .ysr-pginfo{margin-left:0;width:100%;text-align:center;margin-top:6px}
}

/* ★ r1003 「查看手机号」按钮：登录后点开显示完整 11 位（可拨号） */
.ysr-reveal{font-size:12px;color:#145c43;background:#fff;border:1px solid #145c43;
  border-radius:5px;padding:2px 9px;cursor:pointer;white-space:nowrap;
  text-decoration:none;display:inline-block}
.ysr-reveal:hover{background:#145c43;color:#fff}
.ysr-reveal[disabled]{color:#9aa08f;border-color:#d5d8cd;cursor:not-allowed;background:#f7f7f4}
.ysr-reveal.on{background:#145c43;color:#fff;border-color:#145c43}
.ysr-full{font-family:Consolas,Monaco,monospace;font-size:13.5px;font-weight:700;
  color:#0d5c3c;background:#eaf5ee;border:1px solid #7cc39c;border-radius:5px;
  padding:2px 10px;letter-spacing:.6px;display:inline-block}
