/* =====================================================================
   顶部公告条 —— 文字装不下一行时来回滚动看全，不再用省略号截断。
   结构在 layouts/_nav.blade.php（Topbar），每条公告外层是 .topbar-tip，
   轮播切换靠 Swiper（data-swiper），这里只管单条公告内部的横向滚动，不影响整条切换。
   是否需要滚动、滚多久由 js/topbar.js 量出文字实际宽度后决定（超出才加 .is-marquee），
   没超出的保持原样居中不动。
   ===================================================================== */
.topbar-tip {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.topbar-tip__text {
  display: inline-block;
}
.topbar-tip.is-marquee .topbar-tip__text {
  animation-name: topbar-marquee;
  animation-duration: var(--topbar-marquee-duration, 9s);
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
}
@keyframes topbar-marquee {
  0%, 12% { transform: translateX(0); }
  50% { transform: translateX(var(--topbar-marquee-distance, 0px)); }
  88%, 100% { transform: translateX(0); }
}
/* 用户选择减少动态效果时：关掉来回滚动，退回原来的"装不下就省略号截断"，不产生位移感 */
@media (prefers-reduced-motion: reduce) {
  .topbar-tip.is-marquee .topbar-tip__text {
    animation: none;
    display: inline;
  }
}
