/* 天枢竞策 · 动态播报样式(全部悬浮, 不占板块) */
:root { --ds-feed-h: 34px; --ds-feed-top: 56px; }

/* ---------- ① 数据墙(右下角 · 竖向 · 从上到下滚动) ---------- */
#ds-feed-wall {
  position: fixed; right: 14px; bottom: 118px; z-index: 880;
  width: auto; min-width: 190px; max-width: 300px;
  height: calc(var(--ds-feed-h, 32px) * 1);   /* 只显示一条的高度, 其余裁掉 */
  background: transparent; border: none; box-shadow: none;
  overflow: hidden; pointer-events: none;
  display: flex; align-items: center; justify-content: flex-end;
}
#ds-feed-wall::after {
  content: ''; position: absolute; inset: -6px -12px -6px -14px; border-radius: 12px; z-index: 0;
  background: radial-gradient(120% 100% at 80% 50%, rgba(4,7,14,.62), rgba(4,7,14,.34) 60%, transparent 84%);
  filter: blur(6px); pointer-events: none;
}
#ds-feed-wall .fw-track {
  position: relative; z-index: 1; display: flex; flex-direction: column; width: 100%;
  animation: fw-scroll-y linear infinite; will-change: transform;
}
@keyframes fw-scroll-y { from { transform: translateY(-50%); } to { transform: translateY(0); } }
#ds-feed-wall .fw-item {
  display: flex; align-items: center; justify-content: flex-end; gap: 6px;
  width: 100%; height: var(--ds-feed-h, 32px); flex: 0 0 var(--ds-feed-h, 32px);
  font-size: 11.5px; font-weight: 700; letter-spacing: .2px; white-space: nowrap;
  text-shadow: 0 2px 6px rgba(0,0,0,.98), 0 0 14px rgba(0,0,0,.9);
}
#ds-feed-wall .fw-item i { font-style: normal; font-size: 14px;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,.95)) drop-shadow(0 0 10px rgba(232,181,73,.55)); }
#ds-feed-wall .fw-item b { color: #ffe9a8; font-weight: 900; font-size: 14.5px;
  font-family: ui-monospace, Menlo, monospace; letter-spacing: .5px;
  text-shadow: 0 2px 5px rgba(0,0,0,.98), 0 0 18px rgba(232,181,73,.75), 0 0 34px rgba(232,181,73,.35); }
#ds-feed-wall .fw-item em { font-style: normal; color: rgba(214,223,240,.85); font-size: 11px; font-weight: 700;
  text-shadow: 0 2px 6px rgba(0,0,0,.98), 0 0 12px rgba(0,0,0,.85); }
body.ds-has-feed-wall { padding-top: 0; }

/* ---------- ② 右下飘屏 ---------- */
#ds-feed-popup {
  position: fixed; left: 0; right: 0; top: var(--ds-feed-top, 120px); z-index: 950;
  display: flex; flex-direction: column; align-items: center; gap: 6px; pointer-events: none;
}
.fp-card {
  position: relative; display: flex; align-items: center; gap: 7px; min-width: 190px; max-width: 310px;
  padding: 5px 10px 6px 11px; border-radius: 10px; overflow: visible;
  background: transparent;            /* 无底板 */
  border: none; box-shadow: none;
  opacity: 0; transform: translateY(-26px) scale(.92);
  transition: opacity .34s cubic-bezier(.2,.9,.3,1.3), transform .44s cubic-bezier(.2,.9,.3,1.3);
}
/* 文字背后的柔和暗晕(保证任何背景下可读, 不是底板) */
.fp-card::before {
  content: ''; position: absolute; inset: -7px -14px -7px -14px; border-radius: 14px; z-index: 0;
  background: radial-gradient(120% 100% at 50% 50%, rgba(4,7,14,.66), rgba(4,7,14,.36) 58%, transparent 84%);
  filter: blur(7px); pointer-events: none;
}
.fp-card > * { position: relative; z-index: 1; }
.fp-card.fp-in { opacity: 1; transform: translateY(0) scale(1); }
.fp-card.fp-out { opacity: 0; transform: translateY(-18px) scale(.94); transition-duration: .3s; }
/* 左侧金色竖条(唯一保留的"形体") */
.fp-card .fp-bar { position: absolute; left: 0; top: 3px; bottom: 3px; width: 2.5px; border-radius: 2px; z-index: 2;
  background: linear-gradient(180deg,#ffe9a8,#e8b549); box-shadow: 0 0 14px rgba(232,181,73,.85); }
.fp-card .fp-ico { font-size: 18px; line-height: 1; flex: 0 0 auto;
  filter: drop-shadow(0 2px 10px rgba(0,0,0,.95)) drop-shadow(0 0 12px rgba(232,181,73,.75));
  animation: fp-breathe 2.2s ease-in-out infinite; }
@keyframes fp-breathe { 0%,100% { transform: scale(1); opacity: .93; } 50% { transform: scale(1.09); opacity: 1; } }
.fp-card .fp-body { min-width: 0; }
/* 主文案: 金色 + 多层发光阴影(透明板上依然醒目) */
.fp-card .fp-txt { color: #ffe9a8; font-size: 12px; font-weight: 800; line-height: 1.45; letter-spacing: .1px;
  word-break: keep-all; overflow-wrap: anywhere;
  text-shadow: 0 2px 4px rgba(0,0,0,.98), 0 0 12px rgba(0,0,0,.9), 0 0 22px rgba(232,181,73,.55); }
.fp-card .fp-sub { color: rgba(206,216,236,.78); font-size: 9.5px; margin-top: 1px; font-weight: 600;
  text-shadow: 0 2px 6px rgba(0,0,0,.98), 0 0 10px rgba(0,0,0,.85); }
.fp-card .fp-prog { position: absolute; left: 3px; bottom: -2px; height: 2px; width: calc(100% - 6px);
  border-radius: 2px; background: linear-gradient(90deg, rgba(255,233,168,.95), rgba(232,181,73,.1));
  transform-origin: left; animation: fp-prog 4s linear forwards; box-shadow: 0 0 8px rgba(232,181,73,.7); }
@keyframes fp-prog { from { transform: scaleX(1); } to { transform: scaleX(0); } }
/* 热点消息(好评/命中/VIP): 更强的金色光晕, 依然无底板 */
.fp-card.fp-hot .fp-txt { color: #fff3cc; font-size: 12.5px;
  text-shadow: 0 2px 4px rgba(0,0,0,.98), 0 0 16px rgba(0,0,0,.92), 0 0 30px rgba(255,215,120,.75); }
.fp-card.fp-hot::before {
  background: radial-gradient(120% 100% at 20% 50%, rgba(232,181,73,.24), rgba(4,7,14,.5) 60%, transparent 84%); }
/* 粒子(分级) */
.fp-card.fp-fx-low .fp-ico::after,
.fp-card.fp-fx-mid .fp-ico::after,
.fp-card.fp-fx-high .fp-ico::after { content: '✨'; position: absolute; font-size: 11px;
  animation: fp-spark 1.6s ease-out infinite; text-shadow: 0 0 10px rgba(255,215,120,.9); }
@keyframes fp-spark { 0% { opacity: 0; transform: translate(0,0) scale(.4); } 30% { opacity: 1; } 100% { opacity: 0; transform: translate(14px,-18px) scale(1.1); } }
.fp-card.fp-fx-high .fp-ico { animation: fp-breathe 1.8s ease-in-out infinite, fp-glowico 2.6s ease-in-out infinite; }
@keyframes fp-glowico { 0%,100% { filter: drop-shadow(0 2px 10px rgba(0,0,0,.95)) drop-shadow(0 0 10px rgba(232,181,73,.6)); }
  50% { filter: drop-shadow(0 2px 10px rgba(0,0,0,.95)) drop-shadow(0 0 22px rgba(255,215,120,1)); } }

/* ---------- ③ 全屏弹幕 ---------- */
#ds-feed-danmaku { position: fixed; inset: 0; z-index: 940; pointer-events: none; overflow: hidden; }
.fd-item {
  position: absolute; right: -420px; white-space: nowrap; color: rgba(247,217,140,.68);
  font-weight: 800; text-shadow: 0 2px 12px rgba(0,0,0,.85), 0 0 16px rgba(232,181,73,.35);
  animation-name: fd-move; animation-timing-function: linear; animation-fill-mode: forwards;
}
@keyframes fd-move { from { transform: translateX(0); } to { transform: translateX(calc(-100vw - 460px)); } }

/* ---------- ④ 成就横幅 ---------- */
#ds-feed-banner {
  position: fixed; left: 50%; top: 38%; transform: translate(-50%, -50%) scale(.9); z-index: 960;
  padding: 20px 46px; border-radius: 18px; pointer-events: none; opacity: 0;
  background: linear-gradient(135deg, rgba(28,22,8,.96), rgba(14,19,34,.97));
  border: 2px solid rgba(247,217,140,.75);
  box-shadow: 0 20px 70px rgba(0,0,0,.7), 0 0 60px rgba(232,181,73,.45);
  transition: opacity .4s ease, transform .5s cubic-bezier(.2,.9,.3,1.35);
}
#ds-feed-banner.fb-in { opacity: 1; transform: translate(-50%, -50%) scale(1); }
#ds-feed-banner span { font-size: 22px; font-weight: 900; color: #ffe9a8; letter-spacing: 1px;
  text-shadow: 0 0 24px rgba(232,181,73,.75); }

/* ---------- 移动端 ---------- */
@media (max-width: 640px) {
  #ds-feed-wall { top: 50px; }
  #ds-feed-wall .fw-item b { font-size: 13.5px; }
  #ds-feed-wall .fw-item em { font-size: 10.5px; }
  #ds-feed-popup { right: 10px; left: 10px; bottom: 84px; }
  .fp-card { min-width: 0; max-width: none; width: auto; padding: 5px 10px 6px 11px; }
  .fp-card .fp-txt { font-size: 11.5px; }
  .fp-card .fp-sub { font-size: 9px; }
  .fp-card .fp-ico { font-size: 16px; }
  .fp-card::before { inset: -6px -10px -6px -14px; }
  #ds-feed-banner { padding: 15px 24px; } #ds-feed-banner span { font-size: 16px; }
  .fd-item { font-size: 12px !important; }
}

/* 数据墙出现时, 内容整体下移(避免压住首屏) */
body.ds-has-feed-wall > .nav, body.ds-has-feed-wall > .navbar, body.ds-has-feed-wall > header { }
body.ds-has-feed-wall main, body.ds-has-feed-wall .wrap, body.ds-has-feed-wall .container,
body.ds-has-feed-wall #app, body.ds-has-feed-wall .page { padding-top: calc(var(--ds-feed-h) + 6px) !important; }
@media (max-width: 640px) {
  #ds-feed-wall { right: 8px; bottom: 104px; min-width: 0; max-width: 80vw; }
  #ds-feed-wall .fw-item b { font-size: 13px; }
  #ds-feed-popup { top: var(--ds-feed-top, 100px); }
}
