/* =========================================================
   门头招牌 · 发光字制作页 · 专属样式
   文件：generatepress-child/signage.css
   页面：/signage-led/
   ---------------------------------------------------------
   架构：与 contact.css / faq.css / pricing.css / cases.css /
   event.css / ad-design.css / ad-production.css 完全同构 ——
   专属 CSS 文件 + 无条件全站入队 + 空依赖 + 零全局裸选择器。
   作用域：#tsSignageMain（模块根容器 id）/ .tssg-*（类前缀）
   令牌：全部声明在 #tsSignageMain 内，不污染 style.css 全站 :root

   设计纪律（继承项目既有硬规则）：
   ① 禁用灰色背景 —— 底色只用纯白 #FFFFFF 与深墨 #0A1628 两级，
      小面积暖色仅 #FFF1E5；禁用任何 R−B<15 的浅中性底。
   ② 橙色 #FF6B1A 为纯强调色，总面积 ≤5%，只用于按钮/关键数字/小标记。
   ③ 橙色文字统一 #B83E00（WCAG AA 达标），按钮渐变保留 #DC4E00。
   ④ 间距全部取自 8px 基准令牌，无 px 字面量。
   ⑤ h2/h3 居中一律带 #tsSignageMain.tssg 复合前缀（特异度 1,2,0），
      规避 style.css:111 的 margin-left:0 与 text-wrap:balance。
   ⑥ 深色区块一律 1240px 版心宽（仅 hero 全宽出血）；
      末段 CTA 为深色且页脚为全宽深色，故 CTA 保留底部间距。
   ========================================================= */

/* ========== 设计令牌（作用域化）========== */
#tsSignageMain{
  /* ---- 深色面（墨）---- */
  --ts-ink-900:#050D1A;
  --ts-ink-800:#0A1628;          /* 主深色 */
  --ts-ink-700:#122340;
  --ts-ink-600:#1B3050;
  --ts-ink-rgb:10,22,40;

  /* ---- 强调色（暖橙）：只用于小面积 ---- */
  --ts-brand:#FF6B1A;
  --ts-brand-600:#B83E00;        /* 浅底上的橙色【文字】统一用它 */
  --ts-brand-300:#FFA868;
  --ts-brand-rgb:255,107,26;

  /* ---- 中性底色：只用纯白一种 ---- */
  --ts-white:#FFFFFF;
  --ts-paper-2:#FFF1E5;          /* 小面积暖色：眉标胶囊、图标盒 */

  /* ---- 浅色面文字 ---- */
  --ts-ink:#0A1628;
  --ts-body:#3D4757;
  --ts-soft:#5F6B7C;
  --ts-muted:rgba(10,22,40,.52);

  /* ---- 浅色面线 ---- */
  --ts-line:rgba(10,22,40,.09);
  --ts-line-strong:rgba(10,22,40,.16);
  --ts-line-warm:rgba(255,107,26,.22);

  /* ---- 深色面文字 ---- */
  --ts-d-ink:#FFFFFF;
  --ts-d-body:rgba(255,255,255,.78);
  --ts-d-muted:rgba(255,255,255,.55);
  --ts-d-line:rgba(255,255,255,.14);
  --ts-d-card:rgba(255,255,255,.06);
  --ts-d-card-2:rgba(255,255,255,.09);

  /* ---- 字号阶梯（8 级）---- */
  --ts-fs-display:clamp(34px,4.8vw,62px);  /* 首屏主标题 */
  --ts-fs-h1:clamp(31px,4.1vw,52px);       /* 主段标题 */
  --ts-fs-h2:clamp(25px,3.1vw,38px);       /* 次段标题 */
  --ts-fs-h3:clamp(19px,2.1vw,25px);       /* 组内标题 */
  --ts-fs-lead:clamp(16px,1.6vw,19px);     /* 段首导语 */
  --ts-fs-card:17px;
  --ts-fs-body:15px;
  --ts-fs-small:13.5px;
  /* ★ 2026-09-22 多视口体检：原 11.5px 低于全站 12px 可读底线；
     同族页面 ad-production.css:69 已把同名令牌改为 12px 并注明「原 11.5px」，
     本页仍留 11.5px 属跨页不一致。受影响：hero 眉标、服务区域卡副标。 */
  --ts-fs-micro:12px;

  /* ---- 圆角 ---- */
  --ts-radius-xs:8px;
  --ts-radius-sm:12px;
  --ts-radius:18px;
  --ts-radius-lg:24px;
  --ts-radius-xl:32px;

  /* ---- 容器 ---- */
  --ts-container:1240px;
  --ts-gutter:24px;

  /* ---- 阴影 ---- */
  --ts-shadow-sm:0 1px 2px rgba(10,22,40,.05),0 4px 12px -3px rgba(10,22,40,.07);
  --ts-shadow:0 2px 4px rgba(10,22,40,.04),0 12px 32px -8px rgba(10,22,40,.12);
  --ts-shadow-lg:0 4px 8px rgba(10,22,40,.05),0 28px 64px -16px rgba(10,22,40,.20);

  --ts-ease:cubic-bezier(.25,.8,.4,1);
  --ts-ease-out:cubic-bezier(.2,.7,.2,1);

  /* ---- 渐变 ---- */
  --ts-grad-dark:linear-gradient(165deg,#050D1A 0%,#0A1628 46%,#122340 100%);
  --ts-grad-accent:linear-gradient(135deg,#FF6B1A 0%,#DC4E00 100%);
  --ts-grad-text:linear-gradient(135deg,#FF6B1A 0%,#FFA868 62%,#FFD2A0 100%);

  /* ---- 8px 基准空间梯度（1=4 … 12=96）----
     全部 spacing 必须从此处取，禁用 px 字面量。 */
  --ts-space-1:4px;  --ts-space-2:8px;   --ts-space-3:12px;  --ts-space-4:16px;
  --ts-space-5:20px; --ts-space-6:24px;  --ts-space-7:32px;  --ts-space-8:40px;
  --ts-space-9:48px; --ts-space-10:64px; --ts-space-11:80px; --ts-space-12:96px;

  /* 语义别名：保持响应式，底值取自上面梯度 */
  --ts-section-y:clamp(24px,3vw,48px);      /* 标准段上下内边距 */
  --ts-section-y-sm:clamp(16px,2.2vw,32px); /* 紧凑段 */
  --ts-head-gap:clamp(16px,2vw,28px);       /* 段首标题到内容 */
  --ts-card-pad:24px;
  --ts-card-pad-sm:16px;
  --ts-grid-gap:16px;
  --ts-stack-2:8px;
  --ts-stack-3:12px;
  --ts-stack-4:16px;

  /* ---- 兼容别名：旧变量名继续可用，一律指向新令牌 ---- */
  --ts-accent:var(--ts-brand);
  --ts-accent-2:var(--ts-brand-600);
  --ts-accent-3:var(--ts-brand-300);
  --ts-accent-soft:var(--ts-paper-2);
  --ts-accent-rgb:var(--ts-brand-rgb);
  --ts-snow:var(--ts-white);
  --ts-sand:var(--ts-white);
  --ts-sand-2:var(--ts-paper-2);
}

/* ========== 页面级对齐：只零化左右内边距 ========== */
body.page:has(#tsSignageMain) .site-content,
body.page:has(#tsSignageMain) .content-area,
body.page:has(#tsSignageMain) .site-main,
body.page:has(#tsSignageMain) .inside-article,
body.page:has(#tsSignageMain) .entry-content{
  padding-left:0;
  padding-right:0;
  max-width:100%;
}

/* ========== 根容器 ========== */
.tssg{
  margin:0;padding:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","PingFang SC","Noto Sans SC","Microsoft YaHei","HarmonyOS Sans SC",sans-serif;
  color:var(--ts-body);
  line-height:1.75;
  font-size:16px;
  background:var(--ts-white);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.tssg img{max-width:100%;display:block;}
.tssg a{color:inherit;}

.tssg-inner{
  max-width:var(--ts-container);
  margin:0 auto;
  padding-left:var(--ts-gutter);
  padding-right:var(--ts-gutter);
}

/* ========== 通用版式 ========== */
#tsSignageMain .tssg-eyebrow{
  display:inline-flex;align-items:center;gap:var(--ts-space-2);
  margin:0 0 var(--ts-space-4);
  padding:7px 16px;border-radius:999px;
  background:var(--ts-paper-2);color:var(--ts-accent-2);
  font-size:var(--ts-fs-micro);font-weight:800;letter-spacing:.16em;
  line-height:1.4;
}
#tsSignageMain .tssg-eyebrow--dark{
  background:rgba(255,255,255,.10);color:#FFB27A;
}

/* 十四轮（2026-09-18）：段首标题改单行显示。
   实测 1440px 下「门头招牌、发光字、标识标牌三类都做」单行需 874px、
   容器只有 820px，超出 54px 才折成两行，第二行只剩「都做」两字（孤行）。
   同段的导语单行需 817px，同样差 37px。
   修法：**加宽容器，不缩字号**（缩到 94% 才能塞下，会削弱段首标题的层级）。
   900px 给最长的一条留 26px 余量。 */
#tsSignageMain .tssg-head{
  max-width:900px;margin:0 auto var(--ts-head-gap);
  text-align:center;
}

#tsSignageMain .tssg-h2{
  font-size:var(--ts-fs-h2);
  font-weight:800;line-height:1.34;letter-spacing:-.4px;
  color:var(--ts-ink);text-align:center;
  /* 十四轮：820 → 900px。真正的宽度上限在这里，不在 .tssg-head 上
     （改 .tssg-head 无效，因为子元素自带 max-width 才是约束）。 */
  max-width:900px;margin:0 auto var(--ts-stack-3);
}
#tsSignageMain .tssg-h2--lg{font-size:var(--ts-fs-h1);letter-spacing:-.6px;}
#tsSignageMain .tssg-h2--sm{font-size:var(--ts-fs-h3);letter-spacing:-.2px;}

#tsSignageMain .tssg-lead{
  /* 十四轮：780 → 860px。S3 导语单行需 817px，原 780px 差 37px，
     折行后第二行只剩「能定。」三字。 */
  max-width:860px;margin:0 auto;
  font-size:var(--ts-fs-lead);line-height:1.85;color:var(--ts-soft);
  text-align:center;
}

/* 十四轮补：正文类孤行抑制。
   用 `_scan_orphans.py` 全页扫描发现，以下正文块折行后末行只剩两三个字。
   实测 `text-wrap:pretty` 对**中文**几乎无效（中文按字断行，没有「词」可搬），
   改用 `text-wrap:balance`：它把两行拉成等长，正好治「一行 43 字 + 一行 1 字」。
   **不改字号、不改容器宽度**，零布局风险；不支持的浏览器按普通断行。
   注意：浏览器对 balance 的行数有上限（超出则退化为普通断行），
   故仅用于卡片短描述，不用于长段落。 */
#tsSignageMain .tssg-hero__desc,
#tsSignageMain .tssg-lead,
#tsSignageMain .tssg-svc__text,
#tsSignageMain .tssg-kind__desc,
#tsSignageMain .tssg-sol__list span,
#tsSignageMain .tssg-mat__item span,
#tsSignageMain .tssg-why__text,
#tsSignageMain .tssg-why__note,
#tsSignageMain .tssg-step__text,
#tsSignageMain .tssg-pcard__text,
#tsSignageMain .tssg-quote__row dd,
#tsSignageMain .tssg-prep__lead,
#tsSignageMain .tssg-q__p,
#tsSignageMain .tssg-cta__desc,
#tsSignageMain .tssg-kind__note,
#tsSignageMain .tssg-flow__note,
#tsSignageMain .tssg-price__note,
#tsSignageMain .tssg-sol__note,
#tsSignageMain .tssg-area__note,
#tsSignageMain .tssg-industry__note,
/* ★ 2026-09-22 多视口体检：FAQ 问句为 flex:1 1 auto 的定宽项，
   balance 可生效。m-360 下 5 条问句末行只剩 2~3 字。 */
#tsSignageMain .tssg-q__t,
#tsSignageMain .tssg-prep__tip{
  text-wrap:balance;
}

/* ★ h2 / h3 关键属性覆盖块
   style.css:111 `#content .entry-content h2,h3{margin-left:0;padding:0;
   border:none;background:none;position:relative;text-wrap:balance}` 特异度 (1,1,1)。
   本块用 #tsSignageMain.tssg 复合前缀提到 (1,2,0)，不依赖加载顺序即可稳定取胜。 */
#tsSignageMain.tssg .tssg-head h2,
#tsSignageMain.tssg .tssg-head h3,
#tsSignageMain.tssg .tssg-h2,
#tsSignageMain.tssg .tssg-cta h2,
#tsSignageMain.tssg .tssg-flow h2,
#tsSignageMain.tssg .tssg-svc__title,
#tsSignageMain.tssg .tssg-kind__name,
#tsSignageMain.tssg .tssg-step__title,
#tsSignageMain.tssg .tssg-pcard__title,
#tsSignageMain.tssg .tssg-industry__title,
#tsSignageMain.tssg .tssg-q__h{
  margin-left:auto;
  margin-right:auto;
  /* ★ 2026-09-22 多视口体检：原为 text-wrap:pretty。
     本文件上方「正文类孤行抑制」块已实测「pretty 对中文几乎无效
     （中文按字断行，没有词可搬）」并改用 balance，且 style.css:111
     给 h2/h3 的本来就是 balance —— 本覆盖块写 pretty 属降级。
     实测孤行：m-360 六处、m-390 五处、m-414 五处，末行只剩 2~3 字
     （如「在益阳做过的门头与发 / 光字」）。改 balance 后孤行归零。 */
  text-wrap:balance;
}

/* ========== 通用按钮（均为 <a>，不受父主题 button 规则影响）========== */
#tsSignageMain .tssg-btn-call{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--ts-space-2);
  padding:14px 26px;border-radius:999px;
  background:var(--ts-grad-accent);color:#fff;
  font-size:15px;font-weight:700;text-decoration:none;
  box-shadow:0 10px 24px -8px rgba(255,107,26,.50);
  transition:transform .25s var(--ts-ease),box-shadow .25s var(--ts-ease);
}
#tsSignageMain .tssg-btn-call:hover,
#tsSignageMain .tssg-btn-call:focus{
  color:#fff;transform:translateY(-2px);
  box-shadow:0 16px 34px -10px rgba(255,107,26,.62);
}
#tsSignageMain .tssg-btn-ghost{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--ts-space-2);
  padding:14px 26px;border-radius:999px;
  border:1px solid var(--ts-line-strong);
  background:transparent;color:var(--ts-ink);
  font-size:15px;font-weight:700;text-decoration:none;
  transition:border-color .25s var(--ts-ease),color .25s var(--ts-ease),transform .25s var(--ts-ease);
}
#tsSignageMain .tssg-btn-ghost:hover,
#tsSignageMain .tssg-btn-ghost:focus{
  border-color:var(--ts-brand);color:var(--ts-brand-600);transform:translateY(-2px);
}
#tsSignageMain .tssg-hero .tssg-btn-ghost,
#tsSignageMain .tssg-cta .tssg-btn-ghost{
  border-color:rgba(255,255,255,.30);color:#fff;
}
#tsSignageMain .tssg-hero .tssg-btn-ghost:hover,
#tsSignageMain .tssg-hero .tssg-btn-ghost:focus,
#tsSignageMain .tssg-cta .tssg-btn-ghost:hover,
#tsSignageMain .tssg-cta .tssg-btn-ghost:focus{
  border-color:var(--ts-brand-300);color:#FFC79A;
}

/* ========== 滚动进度条 ========== */
#tsSignageMain .tssg-progress{
  position:fixed;top:0;left:0;right:0;height:3px;z-index:9998;
  background:rgba(10,22,40,.06);pointer-events:none;
}
#tsSignageMain .tssg-progress span{
  display:block;height:100%;width:0;
  background:var(--ts-grad-accent);
  transition:width .12s linear;
}

/* =========================================================
   S1  Hero（唯一全宽出血区块）
   ========================================================= */
#tsSignageMain .tssg-hero{
  position:relative;isolation:isolate;overflow:hidden;color:#fff;
  width: calc(100vw - var(--ts-sbw, 0px));
  margin-left: calc((100% - (100vw - var(--ts-sbw, 0px))) / 2);
  margin-right: calc((100% - (100vw - var(--ts-sbw, 0px))) / 2);
  padding-top:clamp(48px,6vw,80px);
  padding-bottom:clamp(40px,4.5vw,64px);
  background:var(--ts-grad-dark);
}
#tsSignageMain .tssg-hero__bg{
  position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;
}
#tsSignageMain .tssg-hero__orb{
  position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;
}
#tsSignageMain .tssg-hero__orb--1{
  width:520px;height:520px;top:-220px;right:-120px;
  background:radial-gradient(circle,rgba(255,107,26,.42),transparent 68%);
  animation:tssgFloat 14s var(--ts-ease) infinite;
}
#tsSignageMain .tssg-hero__orb--2{
  width:440px;height:440px;bottom:-220px;left:-120px;
  background:radial-gradient(circle,rgba(56,120,255,.30),transparent 70%);
  animation:tssgFloat 18s var(--ts-ease) infinite reverse;
}
#tsSignageMain .tssg-hero__grid{
  position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse at 50% 0%,#000 20%,transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse at 50% 0%,#000 20%,transparent 78%);
}
@keyframes tssgFloat{
  0%,100%{transform:translate3d(0,0,0);}
  50%{transform:translate3d(0,32px,0);}
}

#tsSignageMain .tssg-hero__inner{
  position:relative;z-index:1;
  display:grid;
  grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  gap:clamp(28px,4vw,56px);
  align-items:center;
}

/* 网格子项：min-width:0 防止长内容撑破 grid 轨道 */
#tsSignageMain .tssg-hero__left,
#tsSignageMain .tssg-hero__right{min-width:0;}

#tsSignageMain .tssg-hero__badge{
  display:inline-flex;align-items:center;gap:var(--ts-space-2);
  margin:0 0 var(--ts-space-4);
  padding:7px 16px;border-radius:999px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);
  color:rgba(255,255,255,.86);
  font-size:var(--ts-fs-micro);font-weight:700;letter-spacing:.12em;
}
#tsSignageMain .tssg-hero__badge i{
  width:6px;height:6px;border-radius:50%;
  background:var(--ts-brand);
  box-shadow:0 0 0 4px rgba(255,107,26,.22);
}

#tsSignageMain .tssg-hero__title{
  margin:0 0 var(--ts-space-4);
  font-size:var(--ts-fs-display);
  font-weight:800;line-height:1.16;letter-spacing:-1.2px;color:#fff;
}
#tsSignageMain .tssg-hero__title span{display:block;}
#tsSignageMain .tssg-hero__title-top{line-height:1.14;}
#tsSignageMain .tssg-hero__title-sub{
  font-size:clamp(20px,2.4vw,30px);
  font-weight:700;letter-spacing:.4px;
  color:rgba(255,255,255,.72);
  margin-top:var(--ts-space-2);
}
#tsSignageMain .tssg-hero__title em{
  font-style:normal;
  background:var(--ts-grad-text);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  /* 规则 3：负字距 + 渐变文字必须补偿右侧内边距，否则末字被切 */
  padding-right:.10em;
  display:inline-block;
}

#tsSignageMain .tssg-hero__desc{
  margin:0 0 var(--ts-space-6);
  max-width:620px;
  font-size:var(--ts-fs-lead);line-height:1.85;
  color:rgba(255,255,255,.74);
}
#tsSignageMain .tssg-hero__desc b{color:#fff;font-weight:700;}

#tsSignageMain .tssg-hero__actions{
  display:flex;flex-wrap:wrap;gap:var(--ts-space-3);
  margin-bottom:var(--ts-space-6);
}

/* Hero 右图 */
#tsSignageMain .tssg-hero__pics{
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:auto auto;
  gap:var(--ts-space-3);
}
#tsSignageMain .tssg-hero__pic{
  position:relative;margin:0;overflow:hidden;
  border-radius:var(--ts-radius);
  border:1px solid rgba(255,255,255,.14);
  background:var(--ts-ink-700);
}
#tsSignageMain .tssg-hero__pic img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .6s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-hero__pic:hover img{transform:scale(1.05);}
}
#tsSignageMain .tssg-hero__pic figcaption{
  position:absolute;left:12px;bottom:12px;
  padding:6px 14px;border-radius:999px;
  background:rgba(5,13,26,.72);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  color:#fff;font-size:12.5px;font-weight:600;
}
#tsSignageMain .tssg-hero__pic--main{
  grid-column:span 2;
  aspect-ratio:16/9;
}
#tsSignageMain .tssg-hero__pic--sub{aspect-ratio:4/3;}
#tsSignageMain .tssg-hero__pic--main figcaption{
  left:14px;bottom:14px;padding:7px 16px;font-size:13px;
}

/* Hero 数据条 */
#tsSignageMain .tssg-quickfacts{
  list-style:none;margin:0;padding:var(--ts-space-4) 0 0;
  display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--ts-d-line);
}
#tsSignageMain .tssg-quickfacts li{
  padding:var(--ts-space-2) var(--ts-space-4);
  border-left:1px solid var(--ts-d-line);
}
#tsSignageMain .tssg-quickfacts li:first-child{border-left:0;padding-left:0;}
#tsSignageMain .tssg-quickfacts b{
  display:block;
  font-size:clamp(22px,2.4vw,30px);font-weight:800;line-height:1.2;
  color:#fff;letter-spacing:-.5px;
  /* 数值项一律不折行。「09:00-18:30」折行时断点落在连字符上，
     会显示成「09:00-」/「18:30」两行，看起来像两个数字。
     列宽保障见下方 ≥1181px 的 2×2 规则；此处 nowrap 为兜底，
     若某视口放不下会撑宽 grid 列，由 _measure_quickfacts.py 逐视口验证 avail ≥ need。 */
  white-space:nowrap;
}
#tsSignageMain .tssg-quickfacts b em{
  font-style:normal;font-size:.5em;font-weight:700;
  color:var(--ts-brand-300);margin-left:2px;
}
#tsSignageMain .tssg-quickfacts span{
  display:block;margin-top:var(--ts-space-1);
  font-size:var(--ts-fs-small);color:rgba(255,255,255,.62);
}

/* =========================================================
   S2  服务范围（图文卡 · 变体 D）
   ========================================================= */
#tsSignageMain .tssg-svc{padding:var(--ts-section-y) 0;background:var(--ts-white);}
#tsSignageMain .tssg-svc__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--ts-grid-gap);
}
#tsSignageMain .tssg-svc__card{
  display:flex;flex-direction:column;overflow:hidden;
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  box-shadow:var(--ts-shadow-sm);
  transition:transform .3s var(--ts-ease),box-shadow .3s var(--ts-ease),border-color .3s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-svc__card:hover{
    transform:translateY(-4px);
    box-shadow:var(--ts-shadow);
    border-color:var(--ts-line-warm);
  }
}
#tsSignageMain .tssg-svc__pic{
  position:relative;aspect-ratio:16/10;overflow:hidden;
  background:var(--ts-paper-2);
}
#tsSignageMain .tssg-svc__pic img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .6s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-svc__card:hover .tssg-svc__pic img{transform:scale(1.06);}
}
#tsSignageMain .tssg-svc__no{
  position:absolute;top:var(--ts-space-3);left:var(--ts-space-3);
  width:32px;height:32px;border-radius:10px;
  display:grid;place-items:center;
  background:rgba(5,13,26,.72);color:#fff;
  font-size:12.5px;font-weight:800;
}
/* 十三轮（2026-09-18）：卡片内容改居中。
   依据：本页标题体系早已全居中（.tssg-head / .tssg-price__range-title /
   .tssg-quote__title），且 S7 制作流程、S10 服务区域的卡片本身就是
   text-align:center（实测文本盒偏差 = 0）。只有 S2/S3/S4/S6/S8 的卡片还是左对齐，
   全页「一半居中、一半左对齐」。此处统一为居中。
   注意：.tssg-quote__row / .tssg-prep__item 是「固定宽标签列 + 内容列」的定义列表，
   靠列对齐阅读，**不参与居中**，否则标签列会散开。 */
#tsSignageMain .tssg-svc__body{padding:var(--ts-card-pad);text-align:center;}
#tsSignageMain .tssg-svc__title{
  margin:0 0 var(--ts-stack-2);
  font-size:var(--ts-fs-h3);font-weight:800;line-height:1.4;
  letter-spacing:-.2px;color:var(--ts-ink);
}
#tsSignageMain .tssg-svc__text{
  margin:0 0 var(--ts-stack-4);
  font-size:var(--ts-fs-body);line-height:1.8;color:var(--ts-soft);
}
#tsSignageMain .tssg-svc__tags{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:var(--ts-space-2);
  justify-content:center;   /* 十三轮：chip 随卡片内容一起居中 */
}
#tsSignageMain .tssg-svc__tags li{
  padding:5px 12px;border-radius:999px;
  background:var(--ts-paper-2);color:var(--ts-brand-600);
  font-size:var(--ts-fs-small);font-weight:600;
}

/* ---- S2 尾：适用行业（细线 chip 行 · 与 .tssg-svc__tags 实心 pill 区分形态）---- */
#tsSignageMain .tssg-industry{
  margin-top:var(--ts-section-y-sm);
  padding-top:var(--ts-section-y-sm);
  border-top:1px dashed var(--ts-line);
  text-align:center;
}
#tsSignageMain .tssg-industry__title{
  margin:0 auto var(--ts-space-4);
  font-size:var(--ts-fs-h3);font-weight:800;line-height:1.45;
  letter-spacing:-.2px;color:var(--ts-ink);
  /* ★ 2026-09-22：同 FIX-1，中文标题用 balance（pretty 对中文无效） */
  text-wrap:balance;
}
#tsSignageMain .tssg-industry__list{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--ts-space-2) var(--ts-space-3);
}
#tsSignageMain .tssg-industry__list li{
  padding:6px 14px;border-radius:var(--ts-space-1);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  font-size:var(--ts-fs-small);font-weight:600;
  color:var(--ts-ink-700);line-height:1.5;
  transition:border-color .22s ease,color .22s ease;
}
@media (hover: hover){
  #tsSignageMain .tssg-industry__list li:hover{
    border-color:var(--ts-brand);
    color:var(--ts-brand-600);
  }
}
/* ★ 窄版心「注记块」家族宽度统一为 780px（勿单独改窄/改宽）：
   .tssg-kind__note / .tssg-flow__note / .tssg-price__note /
   .tssg-sol__note / .tssg-area__note / .tssg-industry__note。
   本块原为 760px，比家族内其余 5 处窄 20px → 与直接同构的 .tssg-area__note
   （同为 780px + text-align:center + 零 padding）出现左右各 10px 边缘错位，已归一。
   改宽会破坏与价格表 / 报价单 / 准备清单的左右边缘对齐。 */
#tsSignageMain .tssg-industry__note{
  margin:var(--ts-space-4) auto 0;
  max-width:780px;
  font-size:var(--ts-fs-small);line-height:1.85;
  color:var(--ts-soft);text-align:center;
}

/* =========================================================
   S3  发光字种类（左图标横排卡 · 变体 B）
   ========================================================= */
#tsSignageMain .tssg-kind{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-kind__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--ts-grid-gap);
}
/* 十三轮：由「图标在左 + 文字在右」的横排改为「图标在上 + 内容居中」。
   横排下居中文字会与左侧图标错位，必须一起改成纵向才成立。 */
#tsSignageMain .tssg-kind__card{
  display:flex;flex-direction:column;align-items:center;
  gap:var(--ts-space-3);
  text-align:center;
  padding:var(--ts-card-pad);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  transition:transform .3s var(--ts-ease),box-shadow .3s var(--ts-ease),border-color .3s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-kind__card:hover{
    transform:translateY(-3px);
    box-shadow:var(--ts-shadow-sm);
    border-color:var(--ts-line-warm);
  }
}
#tsSignageMain .tssg-kind__ico{
  /* 十三轮：改纵向布局后 flex-basis 作用在高度上，交给 width/height 控制更直观 */
  flex:0 0 auto;width:48px;height:48px;border-radius:14px;
  display:grid;place-items:center;
  background:var(--ts-paper-2);color:var(--ts-brand-600);
}
#tsSignageMain .tssg-kind__ico svg{width:22px;height:22px;}
#tsSignageMain .tssg-kind__main{flex:0 0 auto;width:100%;min-width:0;}
#tsSignageMain .tssg-kind__name{
  margin:0 0 var(--ts-space-2);
  font-size:var(--ts-fs-card);font-weight:800;line-height:1.45;
  color:var(--ts-ink);
}
#tsSignageMain .tssg-kind__desc{
  margin:0 0 var(--ts-space-3);
  font-size:var(--ts-fs-body);line-height:1.75;color:var(--ts-soft);
}
#tsSignageMain .tssg-kind__use{
  display:inline-block;
  padding:5px 12px;border-radius:999px;
  background:var(--ts-paper-2);color:var(--ts-brand-600);
  font-size:var(--ts-fs-small);font-weight:600;
}
#tsSignageMain .tssg-kind__note{
  max-width:780px;margin:var(--ts-space-6) auto 0;
  padding:var(--ts-card-pad-sm) var(--ts-card-pad);
  border-left:3px solid var(--ts-brand);
  background:var(--ts-paper-2);border-radius:0 var(--ts-radius-sm) var(--ts-radius-sm) 0;
  font-size:var(--ts-fs-body);line-height:1.8;color:var(--ts-ink);
}

/* =========================================================
   S4  案例展示（图片墙 · 突出）★
   ========================================================= */
#tsSignageMain .tssg-case{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-case__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  grid-auto-rows:clamp(140px,15vw,200px);
  gap:var(--ts-grid-gap);
}
#tsSignageMain .tssg-case__item{
  position:relative;margin:0;overflow:hidden;
  border-radius:var(--ts-radius);
  background:var(--ts-paper-2);
  cursor:pointer;
}
#tsSignageMain .tssg-case__item--lg{
  grid-column:span 2;
  grid-row:span 2;
}
#tsSignageMain .tssg-case__item img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .7s var(--ts-ease);
}
#tsSignageMain .tssg-case__item:hover img,
#tsSignageMain .tssg-case__item:focus-within img{transform:scale(1.07);}
#tsSignageMain .tssg-case__veil{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(5,13,26,.80) 0%,rgba(5,13,26,.28) 42%,transparent 72%);
  opacity:.92;
  transition:opacity .35s var(--ts-ease);
}
#tsSignageMain .tssg-case__item:hover .tssg-case__veil,
#tsSignageMain .tssg-case__item:focus-within .tssg-case__veil{opacity:1;}
#tsSignageMain .tssg-case__cap{
  position:absolute;left:var(--ts-space-4);right:var(--ts-space-4);bottom:var(--ts-space-4);
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--ts-space-2);
}
#tsSignageMain .tssg-case__tag{
  padding:6px 14px;border-radius:999px;
  background:var(--ts-grad-accent);color:#fff;
  font-size:var(--ts-fs-small);font-weight:700;
}
#tsSignageMain .tssg-case__loc{
  padding:6px 12px;border-radius:999px;
  background:rgba(255,255,255,.16);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  color:#fff;font-size:var(--ts-fs-small);font-weight:600;
}
#tsSignageMain .tssg-case__item--lg .tssg-case__cap{
  left:var(--ts-space-6);right:var(--ts-space-6);bottom:var(--ts-space-6);
}
#tsSignageMain .tssg-case__item--lg .tssg-case__tag{
  padding:8px 18px;font-size:15px;
}
/* 案例卡：第三行「内容/做法」，独占一行 */
#tsSignageMain .tssg-case__way{
  flex:0 0 100%;
  font-size:var(--ts-fs-micro);
  color:rgba(255,255,255,.72);
  line-height:1.6;
}
#tsSignageMain .tssg-case__item--lg .tssg-case__way{font-size:var(--ts-fs-small);}

/* =========================================================
   S6  为什么选天舜
   ========================================================= */
#tsSignageMain .tssg-why{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-why__grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:var(--ts-grid-gap);
}
#tsSignageMain .tssg-why__card{
  padding:var(--ts-card-pad);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  text-align:center;   /* 十三轮 */
  transition:border-color .3s var(--ts-ease),transform .3s var(--ts-ease),box-shadow .3s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-why__card:hover{
    border-color:var(--ts-line-warm);
    transform:translateY(-4px);
    box-shadow:var(--ts-shadow-sm);
  }
}
#tsSignageMain .tssg-why__num{
  display:block;margin-bottom:var(--ts-space-3);
  font-size:34px;font-weight:800;line-height:1;letter-spacing:-.02em;
  color:transparent;
  -webkit-text-stroke:1.4px var(--ts-brand);
}
#tsSignageMain .tssg-why__title{
  margin:0 0 var(--ts-space-2);
  font-size:var(--ts-fs-card);font-weight:800;line-height:1.45;
  color:var(--ts-ink);
}
#tsSignageMain .tssg-why__text{
  margin:0;
  font-size:var(--ts-fs-small);line-height:1.8;color:var(--ts-soft);
}
/* ★ 本块归入「注记块家族」：宽度必须 780px，与 .tssg-area__note 完全同构
   （780px + text-align:center + 零 padding + 卡片网格之后）。
   改窄或改宽都会破坏与价格表 / 报价单 / 服务区域注记的左右边缘对齐。
   八轮新增，用途：给出统一社会信用代码，让「实体公司」这一信任点可自行核验。 */
#tsSignageMain .tssg-why__note{
  max-width:780px;margin:var(--ts-space-5) auto 0;
  text-align:center;
  font-size:var(--ts-fs-small);line-height:1.85;color:var(--ts-soft);
}
/* 十轮补：注记内的「百度百科查看中标详情」外链。
   注记是弱化灰调，链接须与 .tssg-price__note a 保持同一套观感
   （品牌橙文字 + 下划线），否则可核验入口会被整段淹没。 */
#tsSignageMain .tssg-why__note a{
  color:var(--ts-brand-600);font-weight:700;text-decoration:underline;
  text-underline-offset:3px;
}
#tsSignageMain .tssg-case__tip{
  margin:var(--ts-space-5) 0 0;
  text-align:center;
  font-size:var(--ts-fs-small);color:var(--ts-muted);
}

/* =========================================================
   S5  制作流程（白底 · 横向时间轴 · 变体 A）
   ========================================================= */
/* 十四轮改版（2026-09-18）：本段原为深墨底，现改白底。
   理由：设计系统规定「背景节奏：纯白 + 深墨 + **2 个深色锚点**（hero / cta）」，
   而本段是第 3 个深色段（hero / flow / cta），与规范冲突。
   改白底后全页深色只剩 hero 与 cta 两处，节奏回到「深—白—深」。
   代价：本段上下（S4 门头方案 / S6 价格）都是白底，需加分隔线区分，
   故补 border-top（与 .tssg-area 同一手法）。 */
#tsSignageMain .tssg-flow{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-flow .tssg-h2,
#tsSignageMain .tssg-flow h2{color:var(--ts-ink);}
#tsSignageMain .tssg-flow .tssg-lead{color:var(--ts-soft);}

#tsSignageMain .tssg-flow__steps{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(6,1fr);
  gap:var(--ts-grid-gap);
  position:relative;
}
/* 连接线：画在容器层，保证每条恒定，不随单行文字漂移 */
#tsSignageMain .tssg-flow__steps::before{
  content:"";
  position:absolute;top:23px;left:4%;right:4%;height:1px;
  background:linear-gradient(90deg,transparent,var(--ts-line-strong) 12%,var(--ts-line-strong) 88%,transparent);
}
#tsSignageMain .tssg-step{
  position:relative;
  padding:var(--ts-space-6) var(--ts-space-3) 0;
  text-align:center;
}
#tsSignageMain .tssg-step__no{
  position:relative;z-index:1;
  display:grid;place-items:center;
  width:46px;height:46px;margin:0 auto var(--ts-space-4);
  border-radius:50%;
  /* 白底上仍用深墨实心圆：与 --ts-ink 同源，对比度足够且不引入新色。
     补一圈柔和外环——深色圆直接落在纯白上偏硬，加环后与时间轴线的过渡更自然。 */
  background:var(--ts-ink-800);
  border:1px solid transparent;
  box-shadow:0 0 0 6px var(--ts-line);
  color:#fff;font-size:14px;font-weight:800;letter-spacing:.02em;
  transition:background .3s var(--ts-ease),border-color .3s var(--ts-ease),transform .3s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-step:hover .tssg-step__no{
    background:var(--ts-grad-accent);
    border-color:transparent;
    box-shadow:0 0 0 6px var(--ts-line-warm);
    transform:scale(1.08);
  }
}
#tsSignageMain .tssg-step__title{
  margin:0 0 var(--ts-space-2);
  font-size:var(--ts-fs-card);font-weight:800;line-height:1.5;color:var(--ts-ink);
}
#tsSignageMain .tssg-step__text{
  margin:0;
  font-size:var(--ts-fs-small);line-height:1.75;
  color:var(--ts-soft);
}
#tsSignageMain .tssg-flow__note{
  /* 十四轮：本注记受「注记块家族 780px」硬约束（改宽会破坏与价格表 / 报价单 /
     服务区域注记的左右边缘对齐），所以宽度只能从盒内腾：
     横向内边距 24px → 12px，正文 15px → 13.5px（--ts-fs-small，
     与同族的 .tssg-why__note 同一档）。
     实测：文本可用宽 732 → 756px，单行所需 810 → 756px。
     但 756 对 756 是零余量，故字号再降到 13px：单行所需 728px，余量 28px（约 2 字）。
     中文为全角，每字恰为 1em，宽度可精确预测，28px 余量足够容纳日后微调。
     另两个选择是「把盒子加宽到 860px」（破坏家族对齐）或「文案砍掉 5 个字」，
     均未采用。 */
  max-width:780px;margin:var(--ts-space-8) auto 0;
  padding:var(--ts-card-pad-sm) var(--ts-space-3);
  /* 十四轮改版：本段转白底，注记随之换成浅色口径
     （虚线边框 + 透明底 + --ts-soft，与同族的 .tssg-price__note 一致） */
  border:1px dashed var(--ts-line-strong);
  border-radius:var(--ts-radius-sm);
  background:transparent;
  font-size:13px;line-height:1.8;
  color:var(--ts-soft);text-align:center;
}

/* =========================================================
   S6  价格与工期
   ========================================================= */
#tsSignageMain .tssg-price{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
}
#tsSignageMain .tssg-price__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--ts-grid-gap);
}
#tsSignageMain .tssg-pcard{
  padding:var(--ts-card-pad);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  box-shadow:var(--ts-shadow-sm);
  text-align:center;   /* 十三轮 */
}
#tsSignageMain .tssg-pcard__ico{
  display:grid;place-items:center;
  /* 十三轮：44px 方块要随文字一起居中，margin 左右须为 auto（原为纯 margin-bottom） */
  width:44px;height:44px;margin:0 auto var(--ts-space-4);
  border-radius:var(--ts-radius-sm);
  background:var(--ts-paper-2);color:var(--ts-brand-600);
  font-size:15px;font-weight:800;
}
#tsSignageMain .tssg-pcard__title{
  margin:0 0 var(--ts-stack-2);
  font-size:var(--ts-fs-card);font-weight:800;line-height:1.5;color:var(--ts-ink);
}
#tsSignageMain .tssg-pcard__text{
  margin:0;
  font-size:var(--ts-fs-body);line-height:1.8;color:var(--ts-soft);
}
#tsSignageMain .tssg-price__note{
  max-width:780px;margin:var(--ts-space-6) auto 0;
  padding:var(--ts-card-pad);
  border:1px dashed var(--ts-line-strong);
  border-radius:var(--ts-radius);
  font-size:var(--ts-fs-body);line-height:1.85;color:var(--ts-soft);
  text-align:center;
}
#tsSignageMain .tssg-price__note a{
  color:var(--ts-brand-600);font-weight:700;text-decoration:underline;
  text-underline-offset:3px;
}
/* 十轮补：价格注记里的「2026 年 9 月核对」等时间/范围限定词。
   注记正文是弱化灰调，限定词需回深一档并加粗，否则时效信息会被整段淹没。 */
#tsSignageMain .tssg-price__note b{
  color:var(--ts-ink-800);font-weight:700;
}

/* =========================================================
   S7  常见问题（手风琴 · 变体 C）
   ========================================================= */
#tsSignageMain .tssg-faq{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-faq__list{
  max-width:860px;margin:0 auto;
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-q{border-bottom:1px solid var(--ts-line);}
#tsSignageMain .tssg-q__h{margin:0;}
/* ★ <button> 会命中父主题全局规则（静态 (0,0,1) / hover (0,1,1)），
      这里三态全部显式声明且特异度 (1,1,0)/(1,2,0)，稳定压住。 */
#tsSignageMain .tssg-q__btn{
  display:flex;align-items:center;justify-content:space-between;gap:var(--ts-space-4);
  width:100%;padding:var(--ts-card-pad) var(--ts-space-2);
  border:0;border-radius:0;
  background:none;
  font-family:inherit;font-size:var(--ts-fs-card);font-weight:700;
  line-height:1.6;color:var(--ts-ink);
  text-align:left;cursor:pointer;
  transition:color .25s var(--ts-ease);
}
#tsSignageMain .tssg-q__btn:hover,
#tsSignageMain .tssg-q__btn:focus,
#tsSignageMain .tssg-q__btn:active{
  background:none;
  color:var(--ts-brand-600);
}
#tsSignageMain .tssg-q__btn:focus-visible{
  outline:2px solid var(--ts-brand);outline-offset:2px;
}
#tsSignageMain .tssg-q__t{flex:1 1 auto;min-width:0;}
#tsSignageMain .tssg-q__ic{
  flex:0 0 28px;width:28px;height:28px;position:relative;
  border-radius:50%;
  background:var(--ts-paper-2);
  transition:background .25s var(--ts-ease),transform .35s var(--ts-ease);
}
#tsSignageMain .tssg-q__ic::before,
#tsSignageMain .tssg-q__ic::after{
  content:"";position:absolute;top:50%;left:50%;
  background:var(--ts-brand-600);
  transform:translate(-50%,-50%);
  transition:opacity .3s var(--ts-ease),background .25s var(--ts-ease);
}
#tsSignageMain .tssg-q__ic::before{width:12px;height:2px;}
#tsSignageMain .tssg-q__ic::after{width:2px;height:12px;}
#tsSignageMain .tssg-q.is-open .tssg-q__ic{transform:rotate(180deg);}
#tsSignageMain .tssg-q.is-open .tssg-q__ic::after{opacity:0;}
#tsSignageMain .tssg-q.is-open .tssg-q__ic{background:var(--ts-brand);}
#tsSignageMain .tssg-q.is-open .tssg-q__ic::before{background:#fff;}

#tsSignageMain .tssg-q__panel{
  overflow:hidden;max-height:0;
  transition:max-height .38s var(--ts-ease);
}
#tsSignageMain .tssg-q__panel-in{
  padding:0 var(--ts-space-2) var(--ts-card-pad);
  font-size:var(--ts-fs-body);line-height:1.9;color:var(--ts-soft);
}
#tsSignageMain .tssg-q__panel-in a{
  color:var(--ts-brand-600);font-weight:700;text-decoration:underline;
  text-underline-offset:3px;
}
/* 十轮补：FAQ 答案内的分段。其余条目答案是纯文本节点，
   仅 sg-q3 这类「讲完尺寸还要讲颜色对比」的用 <p> 分段，
   段间距取 8px 基准令牌，末段不留底距（下沿交给 panel-in 的 padding）。 */
#tsSignageMain .tssg-q__p{
  margin:0 0 var(--ts-space-2);
}
#tsSignageMain .tssg-q__p:last-child{margin-bottom:0;}

/* =========================================================
   S8  CTA（深色锚点；末段深色 + 全宽深色页脚 → 保留底部间距）
   ========================================================= */
#tsSignageMain .tssg-cta{
  position:relative;overflow:hidden;
  margin:clamp(24px,3vw,48px) 0 clamp(48px,6vw,88px);
  padding:clamp(40px,5vw,72px) 0;
  background:var(--ts-grad-dark);
  border-radius:var(--ts-radius-xl);
  color:var(--ts-d-body);
  text-align:center;
}
#tsSignageMain .tssg-cta::before{
  content:"";position:absolute;top:-160px;right:-120px;
  width:420px;height:420px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,107,26,.34),transparent 68%);
  filter:blur(60px);pointer-events:none;
}
#tsSignageMain .tssg-cta__inner{position:relative;z-index:1;}
#tsSignageMain .tssg-cta h2{
  /* 十四轮：「要做门头或发光字，先打个电话说说」单行需 823px，原 780px 差 43px，
     折行后第二行只剩「说说」两字。加宽到 850px，留 27px 余量，字号不动。 */
  max-width:850px;
  font-size:var(--ts-fs-h1);font-weight:800;line-height:1.3;
  letter-spacing:-.6px;color:#fff;
  margin:0 auto var(--ts-stack-3);
}
#tsSignageMain .tssg-cta__desc{
  max-width:660px;margin:0 auto var(--ts-space-6);
  font-size:var(--ts-fs-lead);line-height:1.85;
  color:rgba(255,255,255,.72);
}
#tsSignageMain .tssg-cta__tel{
  display:inline-flex;align-items:center;gap:var(--ts-space-4);
  padding:var(--ts-space-3) var(--ts-space-6) var(--ts-space-3) var(--ts-space-3);
  border-radius:999px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.20);
  text-decoration:none;
  transition:background .3s var(--ts-ease),transform .3s var(--ts-ease),border-color .3s var(--ts-ease);
}
#tsSignageMain .tssg-cta__tel:hover,
#tsSignageMain .tssg-cta__tel:focus{
  background:rgba(255,255,255,.14);
  border-color:var(--ts-brand-300);
  transform:translateY(-2px);
}
#tsSignageMain .tssg-cta__tel-ico{
  display:grid;place-items:center;
  width:48px;height:48px;border-radius:50%;
  background:var(--ts-grad-accent);color:#fff;
}
#tsSignageMain .tssg-cta__tel-ico svg{width:22px;height:22px;}
#tsSignageMain .tssg-cta__tel-num{
  font-size:clamp(22px,2.6vw,30px);font-weight:800;
  color:#fff;letter-spacing:.5px;
}
#tsSignageMain .tssg-cta__meta{
  margin:var(--ts-space-4) 0 var(--ts-space-6);
  font-size:var(--ts-fs-small);color:rgba(255,255,255,.60);
}
#tsSignageMain .tssg-cta__acts{
  display:flex;flex-wrap:wrap;justify-content:center;gap:var(--ts-space-3);
}

/* ========== 回到顶部 ========== */
/* 十七轮（2026-09-18）：本页自建按钮 .tssg-top 已从页面内容中删除 ——
   全站统一使用父主题 GeneratePress 的 .generate-back-to-top
   （品牌化样式见 style.css「回到顶部按钮品牌化」一节），本页不再另建，样式一并移除。
   同时删掉十六轮那段「隐藏父主题回顶」的规则：三条选择器一条都没命中
   （GP 3.6.1 实际输出 <a href="#" class="generate-back-to-top">，既非 href="#top"，
   也没有 .gp-back-to-top 这个类），且它是本文件唯一的 !important，
   违反本文件「零强制覆盖声明」约定；一旦被改到能命中，本页会一个回顶都不剩。 */

/* ========== 滚动浮现 ========== */
#tsSignageMain .tssg-rv{
  opacity:0;transform:translateY(18px);
  transition:opacity .6s var(--ts-ease-out),transform .6s var(--ts-ease-out);
}
#tsSignageMain .tssg-rv.tssg-rv-in{opacity:1;transform:none;}

/* =========================================================
   响应式
   ========================================================= */

/* ≥1181px：Hero 为双栏，左栏约 576–605px。
   此时 4 列布局每项只剩 112–119px 可用，而「09:00-18:30」在 30px 字号下需 168px
   → 必然折行（实测 1440 / 1280 / 1200 均折行，「常规门头工期（约）」标签同样折行）。
   改为 2×2 后每项约 256–270px，30px 字号放得下，标签也回到一行。
   代价：数据条高度 133px → 152px（+19px），左栏 524px → 543px，
         仍与右栏 508px 同量级，Hero 总高基本不变。
   规则与 ≤767px 的既有 2×2 处理保持一致，不引入新写法。 */
@media (min-width:1181px){
  #tsSignageMain .tssg-quickfacts{grid-template-columns:1fr 1fr;}
  #tsSignageMain .tssg-quickfacts li:nth-child(odd){border-left:0;padding-left:0;}
  #tsSignageMain .tssg-quickfacts li:nth-child(n+3){border-top:1px solid var(--ts-d-line);}
}

@media (max-width:1180px){
  #tsSignageMain .tssg-hero__inner{
    grid-template-columns:1fr;
    gap:var(--ts-space-8);
  }
  #tsSignageMain .tssg-hero__desc{max-width:none;}
  #tsSignageMain .tssg-svc__grid,
  #tsSignageMain .tssg-kind__grid,
  #tsSignageMain .tssg-price__grid{grid-template-columns:1fr 1fr;}
  #tsSignageMain .tssg-flow__steps{grid-template-columns:repeat(3,1fr);}
  #tsSignageMain .tssg-flow__steps::before{display:none;}
  #tsSignageMain .tssg-flow__note{margin-top:var(--ts-space-6);}
}

@media (max-width:1024px){
  #tsSignageMain .tssg-case__grid{grid-auto-rows:clamp(130px,18vw,180px);}
}

@media (max-width:860px){
  /* ★ 2026-09-22 多视口体检：此处原有
       .tssg-kind__grid{grid-template-columns:1fr;}
       .tssg-price__grid{grid-template-columns:1fr;}
     但同页 .tssg-svc__grid 的塌陷点是 767 —— 同类栅格阈值不一致，
     导致 iPad 竖屏（768 / 820）拿到手机版式：6 张卡单列 720~772px 宽，
     页高 12974 / 13014px（1366 下仅 10116px）。已把这两条下沉到 ≤767，
     使 768~1180 统一为 2 列，与 t-1024 的既有表现一致。 */
  #tsSignageMain .tssg-flow__steps{grid-template-columns:1fr 1fr;}
}

@media (max-width:767px){
  #tsSignageMain .tssg-hero{
    padding-top:clamp(40px,9vw,56px);
    padding-bottom:var(--ts-space-8);
  }
  #tsSignageMain .tssg-hero__actions{flex-direction:column;align-items:stretch;}
  #tsSignageMain .tssg-hero__actions a{width:100%;justify-content:center;}
  #tsSignageMain .tssg-hero__pics{gap:var(--ts-space-2);}
  #tsSignageMain .tssg-hero__pic figcaption{
    /* ★ 2026-09-22：原 11.5px，与 FIX-5 同源（低于 12px 底线）。 */
    left:10px;bottom:10px;padding:5px 12px;font-size:12px;
  }

  #tsSignageMain .tssg-quickfacts{
    grid-template-columns:1fr 1fr;
    padding-top:var(--ts-space-4);
  }
  #tsSignageMain .tssg-quickfacts li{padding:var(--ts-space-3) var(--ts-space-4);}
  #tsSignageMain .tssg-quickfacts li:nth-child(odd){border-left:0;padding-left:0;}
  #tsSignageMain .tssg-quickfacts li:nth-child(n+3){border-top:1px solid var(--ts-d-line);}

  /* ★ 2026-09-22 多视口体检：由 ≤860 下沉至此（原阈值与 .tssg-svc__grid
     的 767 不一致，使 768/820 平板竖屏误吃手机单列版式）。 */
  #tsSignageMain .tssg-kind__grid{grid-template-columns:1fr;}
  #tsSignageMain .tssg-price__grid{grid-template-columns:1fr;}
  #tsSignageMain .tssg-svc__grid{grid-template-columns:1fr;}
  #tsSignageMain .tssg-case__grid{
    grid-template-columns:1fr 1fr;
    grid-auto-rows:clamp(120px,26vw,160px);
  }
  #tsSignageMain .tssg-case__item--lg{grid-column:span 2;grid-row:span 1;}
  #tsSignageMain .tssg-flow__steps{grid-template-columns:1fr 1fr;}
  #tsSignageMain .tssg-step{padding-top:var(--ts-space-5);}
  #tsSignageMain .tssg-cta__acts{flex-direction:column;align-items:stretch;}
  #tsSignageMain .tssg-cta__acts a{width:100%;justify-content:center;}
}

@media (max-width:560px){
  #tsSignageMain .tssg-flow__steps{grid-template-columns:1fr;}
  #tsSignageMain .tssg-step{
    display:grid;grid-template-columns:46px 1fr;
    gap:var(--ts-space-4);align-items:start;
    padding-top:var(--ts-space-3);
    text-align:left;
  }
  /* 十三轮修（窄屏步骤项排版缺陷）：
     .tssg-step 在本断点变成 2 列栅格（46px 编号 + 1fr），但有 3 个子元素，
     自动排列结果为 (1,1)编号 / (1,2)标题 / (2,1)正文——
     正文落进 46px 的编号列，实测宽 46px，中文一字一行，完全不可读。
     修法：编号跨两行，标题与正文固定到第 2 列。
     标题还须清掉文件上方 #tsSignageMain.tssg .tssg-step__title 的 margin:auto：
     auto 外边距会让栅格项收缩居中、撑不满第 2 列（R6 的居中补偿在本断点不适用，
     因为此处本就是左对齐列表）。 */
  #tsSignageMain .tssg-step__no{margin:0;grid-row:1 / span 2;}
  #tsSignageMain.tssg .tssg-step__title{
    grid-column:2;justify-self:stretch;text-align:left;
    margin-left:0;margin-right:0;
  }
  #tsSignageMain .tssg-step__text{
    grid-column:2;justify-self:stretch;text-align:left;
  }
  #tsSignageMain .tssg-case__grid{
    grid-template-columns:1fr;
    grid-auto-rows:clamp(180px,52vw,240px);
  }
  #tsSignageMain .tssg-case__item--lg{grid-column:span 1;}
  #tsSignageMain .tssg-cta__tel{
    padding:var(--ts-space-2) var(--ts-space-5) var(--ts-space-2) var(--ts-space-2);
    gap:var(--ts-space-3);
  }
  #tsSignageMain .tssg-cta__tel-ico{width:42px;height:42px;}
  #tsSignageMain .tssg-cta__tel-ico svg{width:19px;height:19px;}
}

/* 触屏：去掉 hover 位移带来的粘滞感 */
@media (hover:none){
  #tsSignageMain .tssg-svc__card:hover,
  #tsSignageMain .tssg-kind__card:hover{transform:none;}
  #tsSignageMain .tssg-cta__tel:hover{transform:none;}
}

/* 无障碍：减弱动效
   七轮补：原先只关了 hero 光晕 / 滚动渐显 / 进度条 / FAQ 面板，
   漏掉三类 —— FAQ 图标旋转、按钮 hover 位移、回顶按钮显隐。
   这里一律只关 transition（状态变化瞬时完成），不关 transform/配色，
   保证展开收起、hover 反馈等状态指示仍然可读。
   ★ 另有一处 CSS 管不到：模块 script 里 window.scrollTo({behavior:"smooth"})，
     已改为运行时读 prefers-reduced-motion 决定 smooth / auto。 */
@media (prefers-reduced-motion:reduce){
  #tsSignageMain .tssg-hero__orb{animation:none;}
  #tsSignageMain .tssg-rv{opacity:1;transform:none;transition:none;}
  #tsSignageMain .tssg-progress span{transition:none;}
  #tsSignageMain .tssg-q__panel{transition:none;}
  #tsSignageMain .tssg-q__ic,
  #tsSignageMain .tssg-q__ic::before,
  #tsSignageMain .tssg-q__ic::after{transition:none;}
  #tsSignageMain .tssg-btn-call,
  #tsSignageMain .tssg-btn-ghost,
  #tsSignageMain .tssg-cta__tel{transition:none;}
}

/* =========================================================
   打印 / 另存 PDF —— 九轮补
   FAQ 展开由 JS 写内联 max-height，未被点开的条目在打印时仍是 max-height:0，
   导出的 PDF 会整片缺答案；渐显元素若从未滚到过也是 opacity:0。
   这里让内容一律以最终态呈现，并隐藏纯交互控件。
   注：已展开条目带内联 max-height，内联优先，此处覆盖不到，
   但其值等于内容实际高度，打印同样完整，不冲突。
   ========================================================= */
@media print{
  #tsSignageMain .tssg-q__panel{max-height:none;overflow:visible;}
  #tsSignageMain .tssg-rv{opacity:1;transform:none;}
  #tsSignageMain .tssg-progress{display:none;}
}

/* =========================================================
   S4  门头整体方案（配置组合 + 底板材质）
   ========================================================= */
#tsSignageMain .tssg-sol{
  padding:var(--ts-section-y) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
/* 十四轮改版（2026-09-18）：本段两栏原为「左=虚线清单行 / 右=小卡片」两种形态，
   左栏的虚线通栏像没做完的表格，且与右栏的卡片毫无呼应，两栏高度也不齐。
   改法：两栏统一为同一套卡片语言，并让两栏等高。
   ——左栏 3 项由「虚线分隔的清单行」改为 3 张竖排卡片（与右栏同款边框/圆角/内边距）；
   ——右栏 6 张卡片的行高改为等分（grid-auto-rows:1fr），与左栏 3 张卡一一对应；
   ——栅格 align-items 由 start 改 stretch，两栏拉平。 */
#tsSignageMain .tssg-sol__grid{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:var(--ts-space-6);
  align-items:stretch;
}
/* 网格子项：min-width:0 防止长内容撑破 grid 轨道 */
#tsSignageMain .tssg-sol__combos,
#tsSignageMain .tssg-sol__mats{
  min-width:0;
  display:flex;flex-direction:column;
}

/* 十三轮：去掉左侧品牌竖条并居中。
   竖条（border-left + padding-left）是「左对齐小标题」的配件，
   与居中文字同框会出现「竖条在最左、文字在中间」的割裂感；
   且本页同类小标题（.tssg-price__range-title / .tssg-quote__title）均为无竖条居中。 */
#tsSignageMain .tssg-sol__sub{
  margin:0 0 var(--ts-space-4);
  font-size:var(--ts-fs-card);font-weight:800;line-height:1.4;
  color:var(--ts-ink);text-align:center;
}
#tsSignageMain .tssg-sol__list{
  list-style:none;margin:0;padding:0;
  flex:1 1 auto;
  display:flex;flex-direction:column;gap:var(--ts-space-3);
}
#tsSignageMain .tssg-sol__list li{
  flex:1 1 auto;
  display:flex;flex-direction:column;justify-content:center;
  padding:var(--ts-card-pad-sm) var(--ts-space-4);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius-sm);
  text-align:center;   /* 十三轮 */
  transition:border-color .28s var(--ts-ease),transform .28s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-sol__list li:hover{
    border-color:var(--ts-line-warm);
    transform:translateY(-2px);
  }
}
#tsSignageMain .tssg-sol__list b{
  display:block;
  font-size:var(--ts-fs-body);font-weight:700;color:var(--ts-ink);
  margin-bottom:var(--ts-space-1);
}
#tsSignageMain .tssg-sol__list span{
  font-size:var(--ts-fs-small);line-height:1.75;color:var(--ts-soft);
}
#tsSignageMain .tssg-mat__grid{
  flex:1 1 auto;
  display:grid;grid-template-columns:1fr 1fr;
  grid-auto-rows:1fr;          /* 3 行等分，与左栏 3 张卡对齐 */
  gap:var(--ts-space-3);
}
#tsSignageMain .tssg-mat__item{
  display:flex;flex-direction:column;justify-content:center;
  padding:var(--ts-card-pad-sm) var(--ts-space-4);
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius-sm);
  text-align:center;   /* 十三轮 */
  transition:border-color .28s var(--ts-ease),transform .28s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-mat__item:hover{
    border-color:var(--ts-line-warm);
    transform:translateY(-2px);
  }
}
#tsSignageMain .tssg-mat__item b{
  display:block;
  font-size:var(--ts-fs-body);font-weight:700;color:var(--ts-ink);
  margin-bottom:var(--ts-space-1);
}
#tsSignageMain .tssg-mat__item span{
  font-size:var(--ts-fs-small);line-height:1.7;color:var(--ts-soft);
}
#tsSignageMain .tssg-sol__note{
  max-width:780px;margin:var(--ts-space-6) auto 0;
  padding:var(--ts-card-pad-sm) var(--ts-card-pad);
  border-left:3px solid var(--ts-brand);
  background:var(--ts-paper-2);
  border-radius:0 var(--ts-radius-sm) var(--ts-radius-sm) 0;
  font-size:var(--ts-fs-body);line-height:1.8;color:var(--ts-ink);
}

/* =========================================================
   S7  参考区间表 + 报价单说明
   ========================================================= */
#tsSignageMain .tssg-price__range{
  margin-top:var(--ts-space-8);
  padding:var(--ts-card-pad);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  background:var(--ts-white);
}
#tsSignageMain .tssg-price__range-title{
  margin:0 0 var(--ts-space-4);
  font-size:var(--ts-fs-h3);font-weight:800;line-height:1.4;
  color:var(--ts-ink);text-align:center;
}
/* 表格：列宽固定（table-layout:fixed），避免逐行漂移 */
#tsSignageMain .tssg-price__table{
  width:100%;border-collapse:collapse;table-layout:fixed;
  font-size:var(--ts-fs-small);
}
#tsSignageMain .tssg-price__caption{
  caption-side:bottom;
  padding-top:var(--ts-space-3);
  font-size:var(--ts-fs-small);line-height:1.7;
  color:var(--ts-muted);text-align:left;
}
#tsSignageMain .tssg-price__table th,
#tsSignageMain .tssg-price__table td{
  padding:var(--ts-space-3) var(--ts-space-3);
  border-bottom:1px solid var(--ts-line);
  text-align:left;vertical-align:top;
  font-weight:400;line-height:1.7;
}
#tsSignageMain .tssg-price__table thead th{
  background:var(--ts-paper-2);
  color:var(--ts-ink);font-weight:700;font-size:var(--ts-fs-small);
  border-bottom:1px solid var(--ts-line-strong);
  white-space:nowrap;
}
#tsSignageMain .tssg-price__table tbody th{
  font-weight:700;color:var(--ts-ink);
}
#tsSignageMain .tssg-price__table tbody td{color:var(--ts-soft);}
/* 价格数字：父主题对 td 可能有独立配色，这里把特异度提到 (1,2,1) 稳赢，不使用强制覆盖声明 */
#tsSignageMain .tssg-price__table td.tssg-price__val{
  color:var(--ts-brand-600);
  font-weight:700;white-space:nowrap;
}
#tsSignageMain .tssg-price__table tbody tr:last-child th,
#tsSignageMain .tssg-price__table tbody tr:last-child td{border-bottom:0;}

#tsSignageMain .tssg-quote{
  /* 十四轮：上边距 16px → 32px。原来与上方价格区间块只隔 16px，
     而同段内 .tssg-price__range 用的是 32px —— 两个「块」贴太近，
     读起来像同一块的延续。拉到 32px 与段内既有节奏一致。 */
  margin-top:var(--ts-space-8);
  padding:var(--ts-card-pad);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius);
  background:var(--ts-white);
}
#tsSignageMain .tssg-quote__title{
  margin:0 0 var(--ts-space-4);
  font-size:var(--ts-fs-h3);font-weight:800;line-height:1.4;
  color:var(--ts-ink);text-align:center;
}
#tsSignageMain .tssg-quote__list{margin:0;padding:0;}
#tsSignageMain .tssg-quote__row{
  display:grid;grid-template-columns:88px 1fr;
  gap:var(--ts-space-4);
  padding:var(--ts-space-3) 0;
  border-bottom:1px dashed var(--ts-line-strong);
}
#tsSignageMain .tssg-quote__row:last-child{border-bottom:0;}
#tsSignageMain .tssg-quote__row dt{
  font-size:var(--ts-fs-small);font-weight:800;
  color:var(--ts-brand-600);
}
#tsSignageMain .tssg-quote__row dd{
  margin:0;
  font-size:var(--ts-fs-body);line-height:1.85;color:var(--ts-soft);
}
#tsSignageMain .tssg-quote__row dd b{color:var(--ts-ink);font-weight:700;}

/* ---- 问价前准备三样（细线清单行 · 与 quote 的定义列表区分形态）---- */
#tsSignageMain .tssg-prep{
  /* 十四轮：上边距 16px → 32px，与 .tssg-quote / .tssg-price__range 统一 */
  margin-top:var(--ts-space-8);
  padding:var(--ts-card-pad);
  border:1px solid var(--ts-line);
  border-left:3px solid var(--ts-brand);
  border-radius:var(--ts-radius);
  background:var(--ts-white);
}
/* 十三轮：标题与导语改居中，与同段的 .tssg-quote__title（本就是居中）对齐。
   下方的 .tssg-prep__item 是「80px 标签列 + 内容列」的定义列表，保持左对齐不动。 */
#tsSignageMain .tssg-prep__title{
  margin:0 0 var(--ts-space-2);
  font-size:var(--ts-fs-h3);font-weight:800;line-height:1.4;
  color:var(--ts-ink);text-align:center;
}
#tsSignageMain .tssg-prep__lead{
  margin:0 0 var(--ts-space-4);
  font-size:var(--ts-fs-small);line-height:1.8;color:var(--ts-soft);
  text-align:center;
}
#tsSignageMain .tssg-prep__list{
  list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;gap:var(--ts-space-2);
}
#tsSignageMain .tssg-prep__item{
  display:grid;grid-template-columns:80px 1fr;
  gap:var(--ts-space-4);align-items:baseline;
  /* 十四轮：行内上下内边距 8px → 12px，与 .tssg-quote__row 对齐
     （原来本块的三行比报价单的四行挤，两块叠在一起更显拥挤） */
  padding:var(--ts-space-3) 0;
  border-bottom:1px dashed var(--ts-line-strong);
}
#tsSignageMain .tssg-prep__item:last-child{border-bottom:0;}
#tsSignageMain .tssg-prep__k{
  font-size:var(--ts-fs-small);font-weight:800;
  color:var(--ts-brand-600);
}
#tsSignageMain .tssg-prep__v{
  font-size:var(--ts-fs-body);line-height:1.85;color:var(--ts-soft);
}
#tsSignageMain .tssg-prep__tip{
  margin:var(--ts-space-4) 0 0;
  font-size:var(--ts-fs-small);line-height:1.8;color:var(--ts-soft);
}

/* =========================================================
   S9  服务区域
   ========================================================= */
#tsSignageMain .tssg-area{
  padding:var(--ts-section-y-sm) 0;
  background:var(--ts-white);
  border-top:1px solid var(--ts-line);
}
#tsSignageMain .tssg-area__grid{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(7,1fr);
  gap:var(--ts-grid-gap);
}
#tsSignageMain .tssg-area__item{
  padding:var(--ts-space-4) var(--ts-space-2);
  text-align:center;
  background:var(--ts-white);
  border:1px solid var(--ts-line);
  border-radius:var(--ts-radius-sm);
  transition:border-color .28s var(--ts-ease),transform .28s var(--ts-ease);
}
@media (hover: hover){
  #tsSignageMain .tssg-area__item:hover{
    border-color:var(--ts-line-warm);
    transform:translateY(-3px);
  }
}
#tsSignageMain .tssg-area__item b{
  display:block;
  font-size:var(--ts-fs-body);font-weight:700;color:var(--ts-ink);
  margin-bottom:var(--ts-space-1);
}
#tsSignageMain .tssg-area__item span{
  font-size:var(--ts-fs-micro);color:var(--ts-soft);
}
#tsSignageMain .tssg-area__note{
  max-width:780px;margin:var(--ts-space-5) auto 0;
  text-align:center;
  font-size:var(--ts-fs-small);line-height:1.85;color:var(--ts-soft);
}

/* ★ 新增区块的 h2/h3 同样需要复合前缀，规避 style.css:111 的 margin-left:0 */
#tsSignageMain.tssg .tssg-sol__sub,
#tsSignageMain.tssg .tssg-price__range-title,
#tsSignageMain.tssg .tssg-quote__title,
#tsSignageMain.tssg .tssg-why h2,
#tsSignageMain.tssg .tssg-why__title,
#tsSignageMain.tssg .tssg-area h2{
  /* ★ 2026-09-22：同 FIX-1，中文标题用 balance（pretty 对中文无效） */
  margin-left:auto;margin-right:auto;text-wrap:balance;
}

/* ---- 新增区块响应式 ---- */
@media (max-width:1180px){
  #tsSignageMain .tssg-sol__grid{grid-template-columns:1fr;}
  /* 十四轮改版：S4 转单栏后，3 张配置卡会全宽铺开、右侧大片留白（内容只有
     一行标签 + 一行说明）。改为 3 列并排，密度与下方 2 列的材质卡接近。 */
  #tsSignageMain .tssg-sol__list{display:grid;grid-template-columns:repeat(3,1fr);}
  #tsSignageMain .tssg-area__grid{grid-template-columns:repeat(4,1fr);}
  #tsSignageMain .tssg-why__grid{grid-template-columns:1fr 1fr;}
}
@media (max-width:860px){
  /* ★ 2026-09-22 多视口体检：原为 var(--ts-fs-micro)（=11.5px），低于全站
     12px 可读底线，且造成「响应式倒挂」——768/820 平板竖屏落在 ≤860 且 >767
     的区间，拿到 11.5px；而 ≤480 手机端反被 style.css 的 12px 底线兜住。
     即平板竖屏比手机字更小，属适配异常。改为固定 12px。 */
  #tsSignageMain .tssg-price__table{font-size:12px;}
  #tsSignageMain .tssg-price__table th,
  #tsSignageMain .tssg-price__table td{padding:var(--ts-space-2);}
}
@media (max-width:767px){
  #tsSignageMain .tssg-sol__list{grid-template-columns:1fr;}
  #tsSignageMain .tssg-mat__grid{grid-template-columns:1fr;}
  #tsSignageMain .tssg-why__grid{grid-template-columns:1fr;}
  #tsSignageMain .tssg-area__grid{grid-template-columns:repeat(2,1fr);}
  #tsSignageMain .tssg-quote__row{grid-template-columns:1fr;gap:var(--ts-space-1);}
  #tsSignageMain .tssg-prep__item{grid-template-columns:1fr;gap:var(--ts-space-1);}
  /* 窄屏表格改为卡片式，避免三列挤压 */
  #tsSignageMain .tssg-price__table{table-layout:auto;}
  #tsSignageMain .tssg-price__table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  #tsSignageMain .tssg-price__table tbody tr{
    display:block;padding:var(--ts-space-3) 0;
    border-bottom:1px solid var(--ts-line);
  }
  #tsSignageMain .tssg-price__table tbody tr:last-child{border-bottom:0;}
  #tsSignageMain .tssg-price__table tbody th,
  #tsSignageMain .tssg-price__table tbody td{display:block;border-bottom:0;padding:var(--ts-space-1) 12px;}
  /* 2026-09-25：原 padding 左右为 0，手机端卡片内表格文字贴到边线，客户截图反馈「左边没给间距」；改为左右各 12px。 */
  #tsSignageMain .tssg-price__table tbody th{font-size:var(--ts-fs-body);}
  #tsSignageMain .tssg-price__val{font-size:var(--ts-fs-body);}
}

/* 打印：本文件保持「零强制覆盖声明」约定（与 ad-production.css 一致），
   打印块内的覆盖靠媒体查询后置 + 同等特异度生效。 */
@media print{
  #tsSignageMain .tssg-progress{display:none;}
  #tsSignageMain .tssg-hero,
  #tsSignageMain .tssg-flow,
  #tsSignageMain .tssg-cta{
    background:#fff;color:#000;
  }
  #tsSignageMain .tssg-hero__title,
  #tsSignageMain .tssg-cta h2,
  #tsSignageMain .tssg-step__title{color:#000;}
  #tsSignageMain .tssg-hero__desc,
  #tsSignageMain .tssg-step__text,
  #tsSignageMain .tssg-flow .tssg-lead{color:#000;}
}

/* =========================================================
   ★ 2026-09-22 多视口体检修复（奇数项栅格 / 孤儿项居中）
   体检视口：360 / 390 / 414 / 768 / 820 / 1024 / 1366 / 1440
   ========================================================= */

/* ---- S2 服务范围：3 张卡落入 2 列 → 第 3 张独占半行 ----
   768 / 820 / 1024 实测 perRow=[2,1]，第 2 行右半整块留白。
   不采用「第 3 张跨满整行」：.tssg-svc__pic 是 aspect-ratio:16/10，
   跨满 1140px 会变成 712px 高的巨图。改为保持原尺寸并水平居中，
   留白对称、卡片比例不变。 */
@media (min-width:768px) and (max-width:1180px){
  #tsSignageMain .tssg-svc__grid{justify-content:center;}
  #tsSignageMain .tssg-svc__card:nth-child(3){
    grid-column:1 / -1;
    justify-self:center;
    width:calc((100% - var(--ts-grid-gap)) / 2);
  }
}

/* ---- S9 服务区域：7 个区县为奇数项，末行必缺格 ----
   ≤767（2 列）：末行只剩「安化县」1 张且左对齐 → 居中，左右留白对称。
   768~1180（4 列）：末行 3 张、右侧空 1 格 → 末项跨 2 列补齐整行。
   ≥1181（7 列）：7 张正好铺满，无需处理。 */
@media (max-width:767px){
  #tsSignageMain .tssg-area__grid > li:last-child:nth-child(odd){
    grid-column:1 / -1;
    justify-self:center;
    width:calc((100% - var(--ts-grid-gap)) / 2);
  }
}
@media (min-width:768px) and (max-width:1180px){
  #tsSignageMain .tssg-area__grid > li:last-child{grid-column:span 2;}
}

/* =========================================================
   ★ 2026-09-22 触控目标修补（CDP 多视口实测）
   实测 m-360 / m-390 / t-768 / t-834：以下三个内文链接
   点击区高度仅 19-20px，低于 WCAG 2.5.8 的 24px 下限：
     - .tssg-why__note a   「详情可在百度百科查看」 h=19
     - .tssg-price__note a 「益阳广告制作价格指南」 h=20
     - .tssg-price__note a 「189-7373-0903」        h=20
   修法：inline-block + 上下 3px padding + 等量负 margin，
   点击区增高至 >=25px，版面零位移（负 margin 抵消 padding）。
   三个链接宽 111-150px，inline-block 化后均单行放得下，不产生折行变化。
   ========================================================= */
#tsSignageMain .tssg-why__note a,
#tsSignageMain .tssg-price__note a{
  display:inline-block;
  padding:3px 2px;
  margin:-3px -2px;
}

/* ★ 2026-09-22 hero 导语加粗词组防断行：
   d-1440 实测「上门量尺」跨行断成「从上门量 / 尺、」。
   该 <b> 仅 4 个全角字（约 64px），nowrap 在最窄视口 360px 下也安全。 */
#tsSignageMain .tssg-hero__desc b{white-space:nowrap;}

/* =========================================================
   门头招牌页注记块：移除 text-wrap:balance（2026-09-24）
   ---------------------------------------------------------
   反馈：用户截图指出「底板和字可以分开换……」这个提示块「有点丑」。

   实测（1440 视口，线上）：
     外框 780px，内边距 16/24 → 内容宽 732px；
     实际 3 行，每行宽 495 / 495 / 501px —— 只占内容宽的 68%，
     右侧空出 231px 一大块，看起来就是「文字缩在左边」。

   根因：该块被写进了本文件上方「正文类孤行抑制」的多选择器列表，
   拿到了 text-wrap:balance。balance 的作用是把多行拉成等长（专治末行只剩
   一两个字的孤行），代价就是每行都填不满容器 —— 行数越多越明显。
   而那条注释本身写明：balance「仅用于卡片短描述，不用于长段落」；
   本块是 3 行长段落，属于误用。同家族的其它 5 个 note 都没进这个列表
   （实测它们的文字占内容宽 96%~98%），只有本块 68%，对比之下更突兀。

   改法：显式恢复普通断行 text-wrap:wrap。文字随即填满容器宽度。
   不改宽度（家族 780px 统一，勿单独改）、不改字号、不改内边距。
   ========================================================= */
/* 实测补充：只去掉 balance 之后，文字虽然填满了宽度（726px / 99%），
   但该段共 101 个全角字符，15px 下总量 1491px，刚好超过两行容量
   （内容宽 732 × 2 = 1464），末行只剩 45px（3 个字）—— 从「右边空一块」
   变成「末行孤零零三个字」，仍然不好看。
   字号降到 14.5px 时总量 1464.5px，正好压在临界线上，实测仍是 3 行；
   降到 14px 后总量约 1414px，比两行容量少 50px，稳定两行、末行不孤。
   故取 calc(var(--ts-fs-body) - 1px) = 14px。 */
#tsSignageMain .tssg-sol__note{
  text-wrap:wrap;
  font-size:calc(var(--ts-fs-body) - 1px);
}

/* ==========================================================================
   手机端 CTA 卡片左右贴边（2026-09-25）
   --------------------------------------------------------------------------
   客户手机截图：深色 CTA（开始合作 / 要做门头或发光字…）左右贴到屏幕边缘。
   实测（390）：.tssg-cta 的 margin 简写为「clamp(24px,3vw,48px) 0 clamp(48px,6vw,88px)」
   —— 左右为 0，卡片边界实测 l=0 / r=375，占满可用宽。
   而该块自带 border-radius:var(--ts-radius-xl)=32px 与 overflow:hidden，
   设计意图显然是「卡片」，贴边时圆角顶在屏幕边上，观感突兀。
   改法：手机端补左右外边距 = var(--ts-gutter)（本页为 24px），与同页其它卡片
   （如「常见项目参考区间」卡片）左右边界对齐。上下边距不动。
   ★ 只改手机端；桌面端该块仍为通栏设计，保持不变。
   ========================================================================== */
@media (max-width:767px){
  #tsSignageMain .tssg-cta{
    margin-left:var(--ts-gutter,24px);
    margin-right:var(--ts-gutter,24px);
  }
}
