/* ===== 比赛页信号入口加强（站点开关 signal_big；开关关掉时这个文件根本不加载）=====
 * 背景：30 个皮肤的信号按钮各自沿用所在皮肤的小按钮/小药丸样式，用户反馈"一眼看不到"。
 * 做法：各皮肤的 match.php 给信号 <a> 打 data-sig="1"（已结束时补的录像入口是 data-sig="2"），
 *       这里统一加强。因为要盖住各皮肤自己的按钮规则（有的还是行内 style，如 zqlive），
 *       关键属性用 !important —— 这是本文件唯一的职责，不会影响别的类。
 * 可按站覆盖（_head.php 按站点配置输出 :root 变量）：
 *   signal_color / signal_color2 → --sig-c1 / --sig-c2  主色渐变
 *   signal_radius                → --sig-radius         圆角（60px 即胶囊形）
 *   signal_height                → --sig-h              按钮高度
 *   signal_icon                  → --sig-icon           按钮前的小图标（CSS content 值，如 "\25B6"）
 *   signal_text                  → --sig-fg             主按钮文字色（主色偏亮时要配深色字，默认 #fff）
 *   signal_fx                    → html 上的 sigfx-<名>  轻微动效（pulse/sweep/dot/lift/ring/breath/tint/nudge/edge/bar/flip/ring2/shine/slide/glowbar/corner/dash/wave/tick/halo/trail/beam），默认无
 *   signal_text2                 → --sig-fg2            次级按钮（录像入口）描边与文字色，默认跟主色；
 *                                                       主色偏亮时必须单独配，否则白底上的描边按钮看不清（站 7 黄色踩过）
 * 站群里各站皮肤不同，信号区不要长得一样——用这些变量按皮肤配色/形状区分。
 * 这个文件在 _head.php 里最后加载。
 * 选择器故意重复写 4 遍属性（a[data-sig][data-sig][data-sig][data-sig]）来提特指度：
 * 皮肤里存在 .layout-ref3 .signal_list .navs2 a{color:#fff!important}（0,3,1）这种规则，
 * 单写 a[data-sig]（0,1,1）即使带 !important 也会被它压过去，表现为按钮白字白底看不见。 */
a[data-sig][data-sig][data-sig][data-sig] {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 132px;
  height: var(--sig-h, 52px) !important;
  line-height: 1 !important;
  padding: 0 30px !important;
  margin: 10px 12px 2px 0 !important;
  font-size: 19px !important;
  font-weight: 700 !important;
  letter-spacing: 1px;
  color: var(--sig-fg, #fff) !important;
  border: 0 !important;
  border-radius: var(--sig-radius, 6px) !important;
  background: linear-gradient(135deg, var(--sig-c1, #e02020), var(--sig-c2, #b71414)) !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .2) !important;
  white-space: nowrap;
  text-decoration: none !important;
  transition: transform .15s, box-shadow .15s;
}
a[data-sig][data-sig][data-sig][data-sig]:before { content: var(--sig-icon, "\25B6"); font-size: 13px; margin-right: 9px; }
a[data-sig][data-sig][data-sig][data-sig]:hover { color: var(--sig-fg, #fff) !important; background: linear-gradient(135deg, var(--sig-c2, #b71414), var(--sig-c1, #e02020)) !important; box-shadow: 0 6px 18px rgba(0, 0, 0, .28) !important; transform: translateY(-1px); }
/* 已结束时并列给出的录像入口：次级按钮。
 * 不能写死浅灰底——有的皮肤信号条是深色的（如 ref2 的 .xinhao 背景 #26262b，浅灰块在上面很刺眼）；
 * 也不能用 color:inherit——容器文字色可能正好和底色同色（ref3 容器是白字白底，按钮直接看不见）。
 * 最后用「品牌色描边 + 品牌色文字 + 透明底」：深底浅底都有对比，且跟着各站主色走。 */
a[data-sig="2"][data-sig][data-sig][data-sig] { background: transparent !important; color: var(--sig-fg2, var(--sig-c1, #e02020)) !important;
  border: 2px solid var(--sig-fg2, var(--sig-c1, #e02020)) !important; border-radius: var(--sig-radius, 6px) !important;
  height: var(--sig-h, 52px) !important; font-size: 17px !important; font-weight: 600 !important;
  box-shadow: none !important; min-width: 0; padding: 0 20px !important; }
a[data-sig="2"][data-sig][data-sig][data-sig]:before { content: "\25CF"; color: var(--sig-fg2, var(--sig-c1, #e02020)); }
a[data-sig="2"][data-sig][data-sig][data-sig]:hover { background: var(--sig-fg2, var(--sig-c1, #e02020)) !important; color: #fff !important; box-shadow: none !important; }
/* 皮肤自带的内层元素要跟着按钮走：
 * 有的皮肤把文字包在 <span>（如 mgtv 的 .playbtn_t）并单独给了颜色，只设 <a> 的 color 不生效，按钮上会留一段原色文字；
 * 皮肤自带的图标图片（mgtv 的红色 play.svg）也和按钮主色冲突，统一隐藏，改用 --sig-icon 的字形。 */
a[data-sig][data-sig][data-sig][data-sig] * { color: inherit !important; background: none !important; }
a[data-sig][data-sig][data-sig][data-sig] > img { display: none !important; }

@media screen and (max-width: 780px) {
  a[data-sig][data-sig][data-sig][data-sig] { height: calc(var(--sig-h, 52px) - 6px) !important; font-size: 17px !important; padding: 0 18px !important; min-width: 112px; margin: 8px 8px 2px 0 !important; }
  a[data-sig="2"][data-sig][data-sig][data-sig] { font-size: 15px !important; padding: 0 14px !important; }
}

/* ===== 可选轻微动效（站点配置 signal_fx，_head.php 给 <body> 加 sigfx-<名>）=====
 * 站群里每站挑一个不同的，幅度都压得很小：慢、位移/亮度变化轻，不做闪烁跳动那种夸张效果。
 * 尊重系统的"减少动态效果"设置，勾了就全部关掉。 */
@keyframes sig-pulse  { 0%,100% { box-shadow: 0 4px 14px rgba(0,0,0,.2); } 50% { box-shadow: 0 4px 22px var(--sig-c1, #e02020); } }
@keyframes sig-sweep  { 0% { left: -60%; } 55%,100% { left: 130%; } }
@keyframes sig-dot    { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes sig-lift   { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes sig-ring   { 0% { box-shadow: 0 0 0 0 var(--sig-c1, #e02020); opacity: .55; } 70%,100% { box-shadow: 0 0 0 10px transparent; opacity: 0; } }
@keyframes sig-breath { 0%,100% { filter: brightness(1); } 50% { filter: brightness(1.13); } }

.sigfx-pulse  a[data-sig="1"] { animation: sig-pulse 2.6s ease-in-out infinite; }
.sigfx-breath a[data-sig="1"] { animation: sig-breath 3.2s ease-in-out infinite; }
.sigfx-lift   a[data-sig="1"] { animation: sig-lift 3.4s ease-in-out infinite; }
.sigfx-dot    a[data-sig="1"]:before { animation: sig-dot 1.6s ease-in-out infinite; }
/* 扫光：按钮内一条斜向高光缓慢划过，overflow 裁掉出界部分 */
.sigfx-sweep  a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-sweep  a[data-sig="1"]:after { content: ""; position: absolute; top: -60%; left: -60%; width: 45%; height: 220%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent); transform: skewX(-18deg);
  animation: sig-sweep 4.5s ease-in-out infinite; pointer-events: none; }
/* 呼吸环：按钮外缘一圈淡淡扩散 */
.sigfx-ring   a[data-sig="1"] { position: relative; }
.sigfx-ring   a[data-sig="1"]:after { content: ""; position: absolute; inset: 0; border-radius: inherit;
  animation: sig-ring 2.8s ease-out infinite; pointer-events: none; }

/* 第二批动效（前六种用完后加的，同样是慢速小幅度） */
@keyframes sig-tint  { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
@keyframes sig-nudge { 0%,100% { transform: translateX(0); } 50% { transform: translateX(3px); } }
@keyframes sig-edge  { 0%,100% { outline-color: transparent; outline-offset: 2px; } 50% { outline-color: var(--sig-c1, #e02020); outline-offset: 4px; } }

/* 底色渐变缓慢左右漂移（背景拉到 200% 才有漂移空间） */
/* 底色缓慢漂移：不能直接动 <a> 的 background-position——主规则的 background 简写带 !important，
   CSS 动画改不动被 !important 锁住的属性（实测 backgroundPosition 一直是 0% 0%）。
   改成在 :after 上铺一层很淡的渐变缓慢左右漂移，观感是底色在轻微流动。 */
.sigfx-tint a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-tint a[data-sig="1"]:after { content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, rgba(255,255,255,0) 20%, rgba(255,255,255,.22) 50%, rgba(255,255,255,0) 80%);
  background-size: 220% 100%; animation: sig-tint 7s ease-in-out infinite; }

/* 图标轻推：只有按钮前的小图标左右各 3px */
.sigfx-nudge a[data-sig="1"]:before { display: inline-block; animation: sig-nudge 2.2s ease-in-out infinite; }
/* 描边呼吸：outline 不参与布局，不会把周围元素挤动 */
.sigfx-edge  a[data-sig="1"] { outline: 2px solid transparent; animation: sig-edge 3s ease-in-out infinite; }

/* 第三批动效 */
@keyframes sig-bar  { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
@keyframes sig-flip { 0%,70%,100% { transform: rotateY(0deg); } 85% { transform: rotateY(180deg); } }

/* 底部细线来回：线条在按钮底边缓慢滑动，不改变按钮尺寸 */
.sigfx-bar  a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-bar  a[data-sig="1"]:after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px;
  background: rgba(255,255,255,.75); animation: sig-bar 3.6s linear infinite; pointer-events: none; }
/* 图标每隔几秒翻转一次（大部分时间静止） */
.sigfx-flip a[data-sig="1"]:before { display: inline-block; animation: sig-flip 5s ease-in-out infinite; }

/* 第四批动效 */
@keyframes sig-ring2 { 0%,100% { opacity: 0; } 50% { opacity: .75; } }

/* 内描边呼吸：按钮内侧一圈白线淡入淡出。
   不能用 box-shadow inset 做动画——主规则的 box-shadow 带 !important，动画改不动（和 tint 同一个坑），
   所以放在 :after 上，用 border + opacity。 */
.sigfx-ring2 a[data-sig="1"] { position: relative; }
.sigfx-ring2 a[data-sig="1"]:after { content: ""; position: absolute; inset: 3px; border-radius: inherit;
  border: 2px solid rgba(255,255,255,.85); opacity: 0; animation: sig-ring2 3.2s ease-in-out infinite; pointer-events: none; }

/* 第五批动效 */
@keyframes sig-shine { 0%,100% { transform: scale(1); opacity: .0; } 45% { transform: scale(1.06); opacity: .35; } }

/* 外层柔光：按钮外一层同色光晕轻微放大再消失（scale 在伪元素上，不影响布局） */
.sigfx-shine a[data-sig="1"] { position: relative; }
.sigfx-shine a[data-sig="1"]:after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: var(--sig-c1, #e02020); opacity: 0; z-index: -1; animation: sig-shine 3.8s ease-in-out infinite; }

/* 第六批动效 */
@keyframes sig-slide { 0%,100% { background-position: 0 0; } 50% { background-position: 18px 0; } }

/* 斜纹缓慢平移：按钮上一层很淡的斜条纹左右挪，观感像"正在直播"的流动感 */
.sigfx-slide a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-slide a[data-sig="1"]:after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .07;
  background-image: repeating-linear-gradient(45deg, #fff 0 2px, transparent 2px 18px);
  animation: sig-slide 3.6s linear infinite; }

/* 第七批动效 */
@keyframes sig-glowbar { 0%,100% { width: 24%; opacity: .25; } 50% { width: 72%; opacity: .55; } }

/* 顶边一条短亮线宽度来回伸缩（只在按钮内，不影响布局） */
.sigfx-glowbar a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-glowbar a[data-sig="1"]:after { content: ""; position: absolute; left: 14%; top: 0; height: 3px;
  background: rgba(255,255,255,.9); border-radius: 0 0 3px 3px; animation: sig-glowbar 3s ease-in-out infinite; pointer-events: none; }

/* 第八批动效 */
@keyframes sig-corner { 0%,100% { transform: translate(0,0); opacity: .0; } 50% { transform: translate(3px,-3px); opacity: .5; } }

/* 右上角小三角轻微外移（像个"可点"的角标提示） */
.sigfx-corner a[data-sig="1"] { position: relative; }
.sigfx-corner a[data-sig="1"]:after { content: ""; position: absolute; right: 6px; top: 6px; width: 0; height: 0;
  border: 5px solid transparent; border-top-color: rgba(255,255,255,.9); border-right-color: rgba(255,255,255,.9);
  animation: sig-corner 2.8s ease-in-out infinite; pointer-events: none; }

/* 第九批动效 */
@keyframes sig-dash { 0%,100% { background-position: 0 100%; } 50% { background-position: 26px 100%; } }

/* 底边虚线缓慢平移 */
.sigfx-dash a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-dash a[data-sig="1"]:after { content: ""; position: absolute; left: 0; right: 0; bottom: 3px; height: 2px; pointer-events: none;
  background-image: repeating-linear-gradient(90deg, rgba(255,255,255,.85) 0 10px, transparent 10px 26px);
  animation: sig-dash 2.6s linear infinite; }

/* 第十批动效 */
@keyframes sig-wave { 0%,100% { transform: translateY(0) scaleX(1); opacity: .35; } 50% { transform: translateY(-2px) scaleX(.82); opacity: .7; } }

/* 底部一条短横线轻微起伏（像声波指示） */
.sigfx-wave a[data-sig="1"] { position: relative; }
.sigfx-wave a[data-sig="1"]:after { content: ""; position: absolute; left: 50%; bottom: 5px; width: 34px; height: 2px; margin-left: -17px;
  background: rgba(255,255,255,.9); border-radius: 2px; animation: sig-wave 2.2s ease-in-out infinite; pointer-events: none; }

/* 第十一批动效 */
@keyframes sig-tick { 0%,100% { opacity: .25; transform: scale(1); } 50% { opacity: .85; transform: scale(1.35); } }

/* 左侧小圆点节律闪动（放在图标位置外侧，不挤动文字） */
.sigfx-tick a[data-sig="1"] { position: relative; }
.sigfx-tick a[data-sig="1"]:after { content: ""; position: absolute; left: 10px; top: 50%; width: 5px; height: 5px; margin-top: -2.5px;
  border-radius: 50%; background: rgba(255,255,255,.95); animation: sig-tick 1.8s ease-in-out infinite; pointer-events: none; }

/* 第十二批动效 */
@keyframes sig-halo { 0%,100% { box-shadow: 0 4px 14px rgba(0,0,0,.2); } 50% { box-shadow: 0 4px 14px rgba(0,0,0,.2), 0 0 0 4px rgba(255,255,255,.28); } }

/* 外圈柔光（用伪元素避免和主规则里带 !important 的 box-shadow 冲突） */
.sigfx-halo a[data-sig="1"] { position: relative; }
.sigfx-halo a[data-sig="1"]:after { content: ""; position: absolute; inset: -4px; border-radius: inherit; pointer-events: none;
  border: 2px solid rgba(255,255,255,.35); opacity: 0; animation: sig-ring2 3.4s ease-in-out infinite; }

/* 第十三批动效 */
@keyframes sig-trail { 0% { transform: translateX(-120%); } 100% { transform: translateX(420%); } }

/* 一小段亮块沿底边缓慢掠过（比 bar 的整条线更含蓄） */
.sigfx-trail a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-trail a[data-sig="1"]:after { content: ""; position: absolute; left: 0; bottom: 0; width: 22%; height: 2px;
  background: rgba(255,255,255,.85); border-radius: 2px; animation: sig-trail 4s ease-in-out infinite; pointer-events: none; }

/* 第十四批动效 */
@keyframes sig-beam { 0%,100% { opacity: 0; transform: translateY(6px); } 45% { opacity: .5; transform: translateY(0); } }

/* 顶部一条细光带淡入下落（直角按钮配直线动效） */
.sigfx-beam a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-beam a[data-sig="1"]:after { content: ""; position: absolute; left: 12%; right: 12%; top: 0; height: 2px;
  background: rgba(255,255,255,.95); animation: sig-beam 3s ease-in-out infinite; pointer-events: none; }

@media (prefers-reduced-motion: reduce) {
  .sigfx-pulse a[data-sig="1"], .sigfx-breath a[data-sig="1"], .sigfx-lift a[data-sig="1"],
  .sigfx-dot a[data-sig="1"]:before, .sigfx-sweep a[data-sig="1"]:after, .sigfx-ring a[data-sig="1"]:after,
  .sigfx-tint a[data-sig="1"]:after, .sigfx-nudge a[data-sig="1"]:before, .sigfx-edge a[data-sig="1"],
  .sigfx-bar a[data-sig="1"]:after, .sigfx-flip a[data-sig="1"]:before, .sigfx-ring2 a[data-sig="1"]:after, .sigfx-shine a[data-sig="1"]:after, .sigfx-slide a[data-sig="1"]:after, .sigfx-glowbar a[data-sig="1"]:after, .sigfx-corner a[data-sig="1"]:after, .sigfx-dash a[data-sig="1"]:after, .sigfx-wave a[data-sig="1"]:after, .sigfx-tick a[data-sig="1"]:after, .sigfx-halo a[data-sig="1"]:after, .sigfx-trail a[data-sig="1"]:after, .sigfx-beam a[data-sig="1"]:after, .sigfx-bracket a[data-sig="1"]:after, .sigfx-beat a[data-sig="1"]:before, .sigfx-tilt a[data-sig="1"], .sigfx-spread a[data-sig="1"]:after, .sigfx-ping a[data-sig="1"]:after, .sigfx-dots3 a[data-sig="1"]:after, .sigfx-spin a[data-sig="1"]:after, .sigfx-iconin a[data-sig="1"]:before, .sigfx-underglow a[data-sig="1"]:after, .sigfx-swell a[data-sig="1"] { animation: none; }
}

/* 第十五批动效（站 25） */
@keyframes sig-bracket { 0%,100% { opacity: .3; transform: translateY(-50%) scaleY(.62); } 50% { opacity: .9; transform: translateY(-50%) scaleY(1); } }

/* 左右两条短竖线呼吸（像括号夹住文案）。:before 被图标占用，所以用一个 :after 透明盒的左右边框凑出两条线。 */
.sigfx-bracket a[data-sig="1"] { position: relative; }
.sigfx-bracket a[data-sig="1"]:after { content: ""; position: absolute; left: 6px; right: 6px; top: 50%; height: 56%;
  border-left: 2px solid rgba(255,255,255,.95); border-right: 2px solid rgba(255,255,255,.95);
  transform: translateY(-50%); animation: sig-bracket 2.6s ease-in-out infinite; pointer-events: none; }

/* 第十六批动效（站 26） */
@keyframes sig-beat { 0%,62%,100% { transform: scale(1); } 70% { transform: scale(1.28); } 78% { transform: scale(1); } 86% { transform: scale(1.22); } }

/* 图标心跳：大部分时间静止，每轮快跳两下（只缩放 :before 的图标，inline-block 不挤动文字） */
.sigfx-beat a[data-sig="1"]:before { display: inline-block; animation: sig-beat 3.4s ease-in-out infinite; }

/* 第十七批动效（站 27） */
@keyframes sig-tilt { 0%,86%,100% { transform: rotate(0deg); } 92% { transform: rotate(-.8deg); } 96% { transform: rotate(.5deg); } }

/* 整只按钮极轻微摇一下（大部分时间静止；transform 不参与布局，不会挤动周围元素） */
.sigfx-tilt a[data-sig="1"] { animation: sig-tilt 4.2s ease-in-out infinite; }

/* 第十八批动效（站 28） */
@keyframes sig-spread { 0%,100% { transform: scaleX(.2); opacity: .35; } 50% { transform: scaleX(1); opacity: .85; } }

/* 底部横线从中心向两侧展开再收回（glowbar 是顶边左侧定位的宽度变化，这条是中心对称的 scaleX） */
.sigfx-spread a[data-sig="1"] { position: relative; overflow: hidden; }
.sigfx-spread a[data-sig="1"]:after { content: ""; position: absolute; left: 12%; right: 12%; bottom: 4px; height: 2px; border-radius: 2px;
  background: rgba(255,255,255,.9); animation: sig-spread 3s ease-in-out infinite; pointer-events: none; }

/* 第十九批动效（站 29） */
@keyframes sig-ping { 0% { transform: scale(.7); opacity: .85; } 70%,100% { transform: scale(2.4); opacity: 0; } }

/* 右上角小圆点向外扩散消失（像未读提示的 ping；tick 是左侧圆点原地闪，这条是扩散） */
.sigfx-ping a[data-sig="1"] { position: relative; }
.sigfx-ping a[data-sig="1"]:after { content: ""; position: absolute; right: 9px; top: 9px; width: 6px; height: 6px; border-radius: 50%;
  background: rgba(255,255,255,.95); animation: sig-ping 2.8s ease-out infinite; pointer-events: none; }

/* 第二十批动效（站 30） */
@keyframes sig-dots3 {
  0%,100% { background: rgba(255,255,255,.95); box-shadow: 7px 0 0 rgba(255,255,255,.3), 14px 0 0 rgba(255,255,255,.3); }
  33%     { background: rgba(255,255,255,.3);  box-shadow: 7px 0 0 rgba(255,255,255,.95), 14px 0 0 rgba(255,255,255,.3); }
  66%     { background: rgba(255,255,255,.3);  box-shadow: 7px 0 0 rgba(255,255,255,.3), 14px 0 0 rgba(255,255,255,.95); }
}

/* 右侧三个小圆点依次点亮（像"加载中"的指示）。一个 :after + 两层 box-shadow 造出三点，
   box-shadow 只写在伪元素上，不会和主规则里带 !important 的 box-shadow 打架。 */
.sigfx-dots3 a[data-sig="1"] { position: relative; }
.sigfx-dots3 a[data-sig="1"]:after { content: ""; position: absolute; right: 22px; top: 50%; margin-top: -2px; width: 4px; height: 4px; border-radius: 50%;
  animation: sig-dots3 1.8s steps(1) infinite; pointer-events: none; }

/* 第二十一批动效（站 31） */
@keyframes sig-spin { to { transform: rotate(360deg); } }

/* 按钮右侧一个小加载环持续旋转（用 border-top-color 亮、其余淡的经典画法） */
.sigfx-spin a[data-sig="1"] { position: relative; }
.sigfx-spin a[data-sig="1"]:after { content: ""; position: absolute; right: 12px; top: 50%; margin-top: -6px; width: 12px; height: 12px; border-radius: 50%;
  border: 2px solid rgba(255,255,255,.3); border-top-color: rgba(255,255,255,.95); animation: sig-spin 1.1s linear infinite; pointer-events: none; }

/* 第二十二批动效（站 32） */
@keyframes sig-iconin { 0% { transform: translateX(-7px); opacity: .15; } 22%,100% { transform: translateX(0); opacity: 1; } }

/* 图标从左侧滑入到位后停住（每轮开头动一下，其余时间静止） */
.sigfx-iconin a[data-sig="1"]:before { display: inline-block; animation: sig-iconin 3.6s ease-out infinite; }

/* 第二十三批动效（站 33） */
@keyframes sig-underglow { 0%,100% { opacity: .25; transform: scaleX(.7); } 50% { opacity: .7; transform: scaleX(1); } }

/* 按钮下方一条模糊光带轻微呼吸（blur 在伪元素上，不影响按钮本身的清晰度） */
.sigfx-underglow a[data-sig="1"] { position: relative; }
.sigfx-underglow a[data-sig="1"]:after { content: ""; position: absolute; left: 12%; right: 12%; bottom: -5px; height: 8px; border-radius: 50%;
  background: rgba(255,255,255,.6); filter: blur(5px); animation: sig-underglow 3.2s ease-in-out infinite; pointer-events: none; }

/* 第二十四批动效（站 34） */
@keyframes sig-swell { 0%,100% { transform: scale(1); } 50% { transform: scale(1.035); } }

/* 整只按钮极轻微缩放呼吸（transform 不参与布局，周围元素不会被挤动） */
.sigfx-swell a[data-sig="1"] { animation: sig-swell 3s ease-in-out infinite; }

/* 信号区提示（给原本没有任何说明的皮肤补的一行小标题；文案按站取 signal_tip） */
/* width/flex-basis 100%：有的皮肤信号容器是横向 flex，提示不占满一行就会挤到按钮左边（站 17 踩过） */
.sig-head { display: flex; align-items: baseline; gap: 10px; margin: 14px 0 4px; flex-wrap: wrap; width: 100%; flex: 0 0 100%; }
.sig-head-t { font-size: 17px; font-weight: 700; color: var(--sig-fg2, var(--sig-c1, #e02020)); }
.sig-head-t:before { content: "\25CF"; font-size: 11px; margin-right: 6px; vertical-align: 2px; }
/* 提示小字跟随该站的次级色（写死灰色在深色/彩色信号区上看不见；继承容器色又会拿到黑色——站 24 的信号区是蓝紫渐变，两种都不行）*/
.sig-head-tip { font-style: normal; font-size: 13px; color: var(--sig-fg2, var(--sig-c1, #8a8a8a)); opacity: .82; }
/* 提示块的父容器如果是 display:flex 且没开换行，提示会和按钮并排（站 17 的 .zb-detail 就是）。
   用 :has 让"直接包含提示块"的容器允许换行。 */
*:has(> .sig-head) { flex-wrap: wrap; }
