/* wm-announce: a slim sale / launch bar at the top. Adapted from Watermelon UI (MIT), announcement-1 (badge,
   message, link underline that draws from the right on hover (scaleX, 300 ms ease-out), arrow nudges up-right,
   close). Vanilla port by SilverLion; colours from the host: --wm-ann-bg, --wm-ann-fg, --wm-ann-accent. */
.wm-ann { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 40px; padding: 6px 8px 6px 16px; font-size: 0.875rem;
  background: var(--wm-ann-bg, transparent); color: var(--wm-ann-fg, inherit); border-bottom: 1px solid var(--wm-ann-accent, currentColor);
  transition: transform 0.35s var(--wm-ease, cubic-bezier(0.16, 1, 0.3, 1)), opacity 0.25s ease; }
.wm-ann.wm-armed { transform: translate3d(0, -100%, 0); opacity: 0; }
.wm-ann-msg { display: flex; align-items: center; gap: 8px; min-width: 0; }
.wm-ann-msg p { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wm-ann-badge { flex: none; padding: 2px 8px; border-radius: 999px; font-size: 0.75rem; font-weight: 600; background: var(--wm-ann-accent, currentColor); color: var(--wm-ann-badge-fg, #fff); }
.wm-ann a { position: relative; display: inline-flex; align-items: center; gap: 4px; flex: none; font-weight: 600; color: var(--wm-ann-accent, inherit); text-decoration: none; }
.wm-ann a::before { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform 0.3s ease-out; }
.wm-ann a svg { width: 1em; height: 1em; transition: transform 0.2s ease-out; }
@media (hover: hover) and (pointer: fine) { .wm-ann a:hover::before { transform: scaleX(1); transform-origin: left; } .wm-ann a:hover svg { transform: translate3d(2px, -2px, 0); } }
.wm-ann a:focus-visible::before { transform: scaleX(1); }
.wm-ann-x { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: 10px; background: transparent; color: inherit; cursor: pointer; opacity: 0.7; }
.wm-ann.wm-gone { transform: translate3d(0, -100%, 0); opacity: 0; }
@media (max-width: 600px) { .wm-ann-badge { display: none; } .wm-ann { padding-left: 12px; } }
@media (prefers-reduced-motion: reduce) { .wm-ann, .wm-ann a::before, .wm-ann a svg { transition: none; } .wm-ann.wm-armed { transform: none; opacity: 1; } }
