1// scrolling banner 2(function() { 3 'use strict'; 4 5 function createC3Ticker() { 6 // Create the ticker container 7 const tickerContainer = document.createElement('div'); 8 tickerContainer.id = 'c3-unga-ticker'; 9 tickerContainer.style.cssText = ` 10 position: fixed; 11 top: 0; 12 left: 0; 13 width: 100%; 14 height: 45px; 15 background: linear-gradient(135deg, #f4fcff 0%, #e6f7ff 100%); 16 border-bottom: 2px solid #0f71e5; 17 z-index: 100000000 !important; 18 overflow: hidden; 19 font-family: 'Manrope', 'IBM Plex Serif', sans-serif; 20 font-weight: 600; 21 box-shadow: 0 2px 8px rgba(15, 113, 229, 0.1); 22 `; 23 24 // Create the scrolling text link 25 const tickerLink = document.createElement('a'); 26 tickerLink.href = 'https://ungaguide.com/events/healthcare-disrupted-the-future-of-ai-data-precision-medicine/'; 27 tickerLink.target = '_blank'; 28 tickerLink.rel = 'noopener noreferrer'; 29 tickerLink.textContent = 'C3 Davos of Healthcare⢠Summit listed in the Official UN General Assembly Guide (UNGA) for the fourth consecutive year'; 30 31 tickerLink.style.cssText = ` 32 display: inline-block; 33 white-space: nowrap; 34 color: #0f71e5; 35 text-decoration: none; 36 font-size: 20px; 37 line-height: 45px; 38 padding: 0 2rem; 39 animation: tickerScroll 25s linear infinite; 40 transition: color 0.3s ease; 41 will-change: transform; 42 `; 43 44 // Hover effects for the link 45 tickerLink.addEventListener('mouseenter', function() { 46 this.style.color = '#1ca5e7'; 47 }); 48 49 tickerLink.addEventListener('mouseleave', function() { 50 this.style.color = '#0f71e5'; 51 }); 52 53 // Add the link to container 54 tickerContainer.appendChild(tickerLink); 55 56 // Pause animation on container hover 57 tickerContainer.addEventListener('mouseenter', function() { 58 tickerLink.style.animationPlayState = 'paused'; 59 }); 60 61 tickerContainer.addEventListener('mouseleave', function() { 62 tickerLink.style.animationPlayState = 'running'; 63 }); 64 65 return tickerContainer; 66 } 67 68 function addTickerStyles() { 69 const style = document.createElement('style'); 70 style.textContent = ` 71 @keyframes tickerScroll { 72 0% { 73 transform: translateX(100vw); 74 } 75 100% { 76 transform: translateX(-100%); 77 } 78 } 79 80 /* Mobile responsive adjustments */ 81 @media (max-width: 768px) { 82 #c3-unga-ticker { 83 height: 40px; 84 font-size: 14px; 85 } 86 87 #c3-unga-ticker a { 88 font-size: 14px; 89 line-height: 40px; 90 padding: 0 1rem; 91 animation-duration: 20s; 92 } 93 } 94 95 @media (max-width: 480px) { 96 #c3-unga-ticker { 97 height: 36px; 98 } 99 100 #c3-unga-ticker a { 101 font-size: 13px; 102 line-height: 36px; 103 padding: 0 0.5rem; 104 animation-duration: 18s; 105 } 106 } 107 108 /* Ensure body content isn't hidden behind ticker */ 109 body { 110 padding-top: 45px !important; 111 } 112 113 @media (max-width: 768px) { 114 body { 115 padding-top: 40px !important; 116 } 117 } 118 119 @media (max-width: 480px) { 120 body { 121 padding-top: 36px !important; 122 } 123 } 124 `; 125 126 document.head.appendChild(style); 127 } 128 129 function initializeTicker() { 130 // Add styles first 131 addTickerStyles(); 132 133 // Create and insert ticker 134 const ticker = createC3Ticker(); 135 document.body.insertBefore(ticker, document.body.firstChild); 136 137 // Smooth entrance effect
138 requestAnimationFrame(() => { 139 ticker.style.opacity = '0'; 140 ticker.style.transform = 'translateY(-100%)'; 141 ticker.style.transition = 'all 0.5s ease-out'; 142 143 setTimeout(() => { 144 ticker.style.opacity = '1'; 145 ticker.style.transform = 'translateY(0)'; 146 }, 100); 147 }); 148 } 149 150 // Initialize when DOM is ready 151 if (document.readyState === 'loading') { 152 document.addEventListener('DOMContentLoaded', initializeTicker); 153 } else { 154 initializeTicker(); 155 } 156 157})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.