/* 项目级补充样式（不改动原设计 style.css）。
   配色统一：炭黑 #1c1c1c + 信号黄 #ffc400（与 style.css :root 一致）；
   版式统一：工业直角，不引入圆角。 */

/* 未上传 Logo 时的文字版品牌名回退（header 白底用炭黑，页脚深底用白色） */
.brand-logo--text {
  font-weight: 800;
  font-size: 20px;
  letter-spacing: 0.02em;
  color: var(--navy, #1c1c1c);
  display: inline-block;
  line-height: 1.1;
}
.site-footer .brand-logo--text {
  color: #fff;
}

/* 联系页双地图（国内高德 / 海外 Google，赞比亚 + 济宁两地） */
.map-dual {
  margin-top: 64px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.map-card {
  border: 1px solid var(--line, #e3e4df);
  overflow: hidden;
  background: #fff;
}
.map-card__title {
  font-weight: 700;
  padding: 12px 16px;
  background: var(--navy, #1c1c1c);
  color: #fff;
  font-size: 15px;
  border-bottom: 3px solid var(--accent, #ffc400);
}
.map-box {
  width: 100%;
  height: 360px;
}
.map-box iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}
.map-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  padding: 20px;
  color: var(--gray, #5a6470);
  text-align: center;
  background: var(--paper, #f5f5f2);
}
@media (max-width: 720px) {
  .map-dual { grid-template-columns: 1fr; }
}

/* 现场相册 gallery（深色区与全站 .section.dark 同一渐变基调） */
.gallery-section.gallery-dark {
  background: linear-gradient(120deg, var(--navy-deep, #0e0e0e), var(--navy, #1c1c1c));
  color: #fff;
}
.gallery-section.gallery-dark .section-head h2 { color: #fff; }
.gallery-section.gallery-dark .section-head .lead { color: rgba(255, 255, 255, 0.66); }
.gallery-grid {
  display: grid;
  gap: 16px;
  margin-top: 40px;
}
/* 与 style.css 里六个网格同一套做法：列数交给容器宽度，不再写死。
   下限按「内容区 1176px + gap 16px」倒推——四列要落在 (222, 282]，三列要落在 (282, 381]，
   两个区间不重叠，照搬另一个的数就会当场多出一列。 */
.gallery-cols-4 { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
.gallery-cols-3 { grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); }
.gallery-item {
  position: relative;
  margin: 0;
  overflow: hidden;
  background: var(--navy, #1c1c1c);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
  /* 图挂掉时 alt 文字会用继承色画在这块深底上，不给浅色就等于看不见 */
  color: rgba(255, 255, 255, 0.75);
  font-size: 13px;
}
.gallery-img {
  display: block;
  width: 100%;
  height: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 0.45s ease;
}
.gallery-item:hover .gallery-img { transform: scale(1.06); }
.gallery-item figcaption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 22px 14px 12px;
  font-size: 13px;
  line-height: 1.4;
  color: #fff;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
}
/* 原先这里有一套 900/560 的手写断点，与全站 1080/960/640 不同源；
   改 auto-fill 后列数随容器连续变化，两套机制会打架，故整段移除。 */

/* ===================== 业务 / 实力页 视觉升级（直角工业版式） ===================== */

/* 业务中心 A1–A4：悬浮「能力卡」，纸灰底 + 白卡浮起 */
/* scroll-margin-top 要盖住两层 sticky：页头 76px + 锚点导航条约 61px（17px×2 内边距
   + 15px×1.75 行高 + 1px 边框）≈ 137px，再留 13px 呼吸位。原来的 92px 只算了页头，
   点锚点跳转后区块顶端有 40 多像素压在导航条底下，卡片上边框被啃掉一截。 */
.psec { padding: 26px 0; background: var(--paper, #f5f5f2); scroll-margin-top: 150px; }
.psec.alt { background: var(--paper, #f5f5f2); }
.psec:first-of-type { padding-top: 50px; }
.psec:last-of-type { padding-bottom: 50px; }
.psec-card {
  position: relative;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 4px solid var(--accent);
  padding: 32px 38px 36px;
  box-shadow: 0 18px 46px rgba(0, 0, 0, 0.09);
  overflow: hidden;
}
.psec-card .psec-head {
  position: relative;
  margin-bottom: 26px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--line);
}
.psec-card .p-icon {
  width: 58px; height: 58px; padding: 13px;
  box-shadow: 0 10px 22px rgba(255, 196, 0, 0.35);
}
.psec-card h2 { font-size: 25px; letter-spacing: -0.01em; }
.psec-code {
  position: absolute; right: 4px; top: 50%; transform: translateY(-54%);
  font-family: var(--num-font); font-weight: 800; font-size: 72px; line-height: 1;
  color: rgba(28, 28, 28, 0.06); letter-spacing: 0.02em; pointer-events: none;
}
.psec-card .model-tags { margin-top: 22px; gap: 8px; }
.psec-card .model-tags span {
  border: 1px solid rgba(255, 196, 0, 0.55);
  background: rgba(255, 196, 0, 0.12);
  color: var(--navy);
  padding: 6px 14px;
  font-weight: 600;
  transition: background 0.2s ease, transform 0.2s ease;
}
.psec-card .model-tags span:hover { background: rgba(255, 196, 0, 0.26); transform: translateY(-1px); }
.psec-table-wrap {
  /* overflow-x:auto 而不是 hidden：参数表的型号列是不可断的连续串（表格布局里
     min-content 按最长词算，body 的 break-word 帮不上忙），窄屏下表格会比容器宽。
     hidden 会把超出的列整个裁没——访客既看不到也滚不到；auto 在放得下时零表现差异，
     放不下时出横向滚动条，数据一列不丢。 */
  overflow-x: auto;
  border: 1px solid var(--line);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.05);
}
.psec-table-wrap .parts-table { border: 0; }
.psec-table-wrap .parts-table tbody tr:nth-child(even) td { background: #fafaf8; }
.psec-table-wrap .parts-table tbody tr:last-child td { border-bottom: 0; }

/* 实力保障：承诺表精致化（保持直角） */
.promise-table {
  overflow: hidden;
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.06);
}
.promise-table tbody tr:nth-child(even) td { background: #fafaf8; }

@media (max-width: 900px) {
  .psec-card { padding: 26px 22px 28px; }
  .psec-code { font-size: 50px; }
}

/* ===================== 整图展示（不裁切） =====================
   全站其余图位都是裁切式的：相册服务端 fill-440x330、图文两栏与公司简介是
   object-fit:cover 填进定高盒子、案例卡锁 16/10。照片被裁掉边缘无妨，但海报与
   展板的标题和 Logo 通常正好压在边上，一裁就废。所以这里刻意不设任何固定比例、
   不用 object-fit：高度完全由图片自身比例决定，什么比例进来就什么比例显示。 */
.full-image { margin: 0; }
.full-image img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--line);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.08);
}
/* 竖图或方图铺满 1176px 会高得离谱，收窄一档 */
.full-image.narrow { max-width: 900px; margin-inline: auto; }
.full-image figcaption {
  margin-top: 14px;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--gray);
  text-align: center;
}
.section.dark .full-image figcaption { color: rgba(255, 255, 255, 0.66); }
