/* ============================================================================ ads.css — in-world ad boards ---------------------------------------------------------------------------- The billboards themselves are drawn in WebGL (src/adboards.js) and need no CSS at all. The only DOM surface this file owns is the single settings row adRenderSettingsRow() appends to #setList — it already inherits the full look of every other row via the shared .sItem/.setRow/.sTx/.sDs/.sBuy/.togB classes from ui.css, so nothing here is load-bearing. This file only adds a small amount of namespaced polish (.adsRow*) so the row reads as slightly distinct from a purchasable item, using the same theme variables (--cy, --gold, --panelG, --steelB, --fT…) the rest of the settings screen uses, never redefining or overriding a shared class from ui.css. ============================================================================ */ .adsRow{ border-color:rgba(65,200,255,.16); background:linear-gradient(180deg,rgba(20,34,50,.95),rgba(8,14,22,.97)) padding-box,var(--steelB) border-box; } .adsRow .sTx b{ display:inline-flex;align-items:center;gap:6px; } .adsRow .sDs{ color:#7fa8c4; } /* Small "loop" pulse on the emoji glyph so the row hints at motion/video even at rest — subtle, off the critical path, and harmless if reduced-motion users never notice it (it's a colour/opacity pulse, not a layout shift). */ @keyframes adsGlyphPulse{ 0%,100%{ filter:drop-shadow(0 0 0 rgba(65,200,255,0)); opacity:.92; } 50%{ filter:drop-shadow(0 0 5px rgba(65,200,255,.55)); opacity:1; } } .adsRow .sTx b{ animation:adsGlyphPulse 2.6s ease-in-out infinite; } @media (prefers-reduced-motion: reduce){ .adsRow .sTx b{ animation:none; } }