/* 2026-11 site-wide announcement bar (layout/site-announcement.php). Green + black, slim, one subtle sheen, RTL-safe (logical properties).
   The strip is in the first HTML so it never shifts the page; a visitor who dismissed it gets html.nx-ann-off before first paint. */
.nx-ann{position:relative;z-index:61;overflow:hidden;background:linear-gradient(90deg,#06100a,#0c2416 50%,#06100a);border-bottom:1px solid rgba(69,248,130,.32);color:#f2f4f6}
.nx-ann::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 40%,rgba(69,248,130,.14) 50%,transparent 60%);transform:translateX(-120%);animation:nxAnnSheen 7s ease-in-out 1.2s infinite}
.nx-ann-in{position:relative;z-index:1;max-width:var(--nx-container,1180px);margin-inline:auto;padding:8px 44px 8px 16px;min-height:40px;display:flex;align-items:center;justify-content:center;gap:12px;text-align:center}
[dir="rtl"] .nx-ann-in,.nx-rtl .nx-ann-in{padding:8px 16px 8px 44px}
.nx-ann-dot{flex:none;width:8px;height:8px;border-radius:50%;background:#45f882;box-shadow:0 0 0 0 rgba(69,248,130,.55);animation:nxAnnDot 2.4s ease-out infinite}
.nx-ann-text{margin:0;font-size:13.5px;line-height:1.35;font-weight:600;letter-spacing:.005em;text-wrap:balance}
.nx-ann-cta{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:4px 12px;border-radius:99px;background:#45f882;color:#04140a;font-size:12.5px;font-weight:800;text-decoration:none;white-space:nowrap}
.nx-ann-cta:hover,.nx-ann-cta:focus-visible{background:#6bff9c;color:#04140a}
.nx-ann-cta .nx-i{width:13px;height:13px}
.nx-ann-x{position:absolute;inset-block:0;inset-inline-end:6px;margin:auto 0;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:8px;background:transparent;color:#b2b8bf;cursor:pointer}
.nx-ann-x:hover,.nx-ann-x:focus-visible{background:rgba(255,255,255,.08);color:#fff}
.nx-ann-x .nx-i{width:14px;height:14px}
html.nx-ann-off .nx-ann{display:none}
.nx-ann-short{display:none}
/* Phones: ONE line (short wording + the button), 40px, so it does not stack with the campaign bar into a 250px slab. A long text with no short wording is cut with an ellipsis. */
@media (max-width:640px){
  .nx-ann-in{flex-wrap:nowrap;gap:8px;padding:6px 40px 6px 12px;min-height:40px;justify-content:flex-start}
  [dir="rtl"] .nx-ann-in,.nx-rtl .nx-ann-in{padding:6px 12px 6px 40px}
  .nx-ann-text{flex:1 1 auto;min-width:0;font-size:12.5px;text-align:start;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}
  .nx-ann-full{display:none}.nx-ann-short{display:inline}
  .nx-ann-dot{display:none}
  .nx-ann-cta{min-height:28px;padding:3px 10px;font-size:12px}
}
@keyframes nxAnnSheen{0%,55%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@keyframes nxAnnDot{70%{box-shadow:0 0 0 7px rgba(69,248,130,0)}100%{box-shadow:0 0 0 0 rgba(69,248,130,0)}}
@media (prefers-reduced-motion:reduce){.nx-ann::after,.nx-ann-dot{animation:none}}
