/* LO-4c launch-offer ticker, static landing copy (public/index.html's
   "LO-4c banner" block). The SAME rules as the Worker's ARCHIVE_CSS .lo4c
   block (worker/src/templates/archive-css.ts); tokens fall back to the
   Worker's values where the landing's site.css does not declare them.
   Motion only once banner-lo4c.v2.js has marked the strip data-js; the control
   buttons do not pause it (hover over the text or the link does), so Play
   resumes while the button keeps focus (LO-4c fix round Q1 and R6).
   This file keeps its original name on purpose (Q31b fix round, Captain
   ruling): live production answers Cache-Control: public, max-age=0,
   must-revalidate for unhashed paths like this one (checked directly against
   / and /assets/site.css; only the hashed fonts under /assets/fonts/* are
   immutable, public/_headers), so an edit here revalidates on the next load
   with no stale-serving window. Remove this file with the block after
   2026-10-15T14:00Z (worker/PRODUCTION.md, OWED list). */
.lo4c{position:relative;display:flex;align-items:center;gap:.25rem;height:44px;
  padding:0 .5rem 0 1rem;overflow:hidden;background:var(--bg2,#191c24);color:var(--text,#e8eaf0);
  border-bottom:1px solid var(--line-strong,rgba(255,255,255,.14));font-size:14px;line-height:1.2}
.lo4c[hidden]{display:none}
.lo4c-view{flex:1 1 auto;min-width:0;height:100%;overflow:hidden;display:flex;align-items:center}
.lo4c-track{display:flex;flex:none;white-space:nowrap}
.lo4c[data-js] .lo4c-track{animation:lo4c-scroll var(--lo4c-dur,24s) linear infinite}
.lo4c-item{flex:none;min-width:100vw;padding-right:3rem}
.lo4c-view:hover .lo4c-track,.lo4c[data-paused] .lo4c-track{animation-play-state:paused}
.lo4c:has(.lo4c-link:hover) .lo4c-track,.lo4c:has(.lo4c-link:focus) .lo4c-track{animation-play-state:paused}
@keyframes lo4c-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.lo4c:not([data-js]) .lo4c-track{display:block;width:100%}
.lo4c:not([data-js]) .lo4c-item{display:block;min-width:0;padding-right:0;overflow:hidden;text-overflow:ellipsis}
.lo4c:not([data-js]) .lo4c-item[aria-hidden="true"]{display:none}
.lo4c-link{flex:none;display:inline-flex;align-items:center;min-height:44px;padding:0 .5rem;
  color:var(--text,#e8eaf0);text-decoration:underline;white-space:nowrap}
/* Q31b: .lo4c-link sets its own display, so the UA default for [hidden] loses the cascade to it
   without this rule. banner-lo4c.v2.js sets the hidden attribute for a signed-in visitor
   (cookie wr_signedin=1); this rule is what actually removes the link from layout. */
.lo4c-link[hidden]{display:none}
.lo4c-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;
  min-width:44px;min-height:44px;padding:0 .5rem;background:transparent;border:0;
  border-radius:6px;color:var(--text-2,#a6adbb);font:inherit;font-size:13px;cursor:pointer}
.lo4c-btn:hover{color:var(--text,#e8eaf0);background:var(--bg3,#21252f)}
.lo4c-btn[hidden]{display:none}
.lo4c-close{font-size:20px;line-height:1}
/* Row 20 (animation smoothness, owner 2026-09-29 "check any other animation smoothness
   needed"): the close collapses the strip's height and fades it over the site's 160ms ease-out
   before the script sets hidden, so the page below moves up over several frames instead of 44px
   in one. */
.lo4c.is-leaving{height:0;opacity:0;transition:height 160ms ease-out,opacity 160ms ease-out}
@media (prefers-reduced-motion:reduce){
  .lo4c.is-leaving{transition:none}
  .lo4c[data-js] .lo4c-track{display:block;width:100%;animation:none;transform:none}
  .lo4c[data-js] .lo4c-item{display:block;min-width:0;padding-right:0;overflow:hidden;text-overflow:ellipsis}
  .lo4c[data-js] .lo4c-item[aria-hidden="true"]{display:none}
  .lo4c-toggle{display:none}
}
