1(function () { 2 var COOKIE_KEY = 'mizl_cookie_consent'; 3 var banner = document.getElementById('cookie-banner'); 4 5 function loadTracking() { 6 if (window.MizlTracking && typeof window.MizlTracking.load === 'function') { 7 window.MizlTracking.load(); 8 } 9 } 10 11 /* ÐиджеÑÑ Ð¸ ÑÑÑÑÑики â ÑÑазÑ; Ð±Ð°Ð½Ð½ÐµÑ ÑолÑко инÑоÑмиÑÑеÑ, «ÐÑинимаÑ» ÑкÑÑÐ²Ð°ÐµÑ ÐµÐ³Ð¾. */ 12 document.documentElement.setAttribute('data-cookie-consent', 'all'); 13 loadTracking(); 14 15 if (banner) { 16 var dismissed = false; 17 try { 18 dismissed = localStorage.getItem(COOKIE_KEY) === 'all'; 19 } catch (e) {} 20 21 function dismissBanner() { 22 try { 23 localStorage.setItem(COOKIE_KEY, 'all'); 24 } catch (e) {} 25 banner.hidden = true; 26 loadTracking(); 27 } 28 29 banner.hidden = dismissed; 30 31 var accept = banner.querySelector('[data-cookie-accept]'); 32 if (accept) { 33 accept.addEventListener('click', dismissBanner); 34 } 35 } 36 37 var toggle = document.querySelector('.nav-toggle'); 38 var nav = document.getElementById('site-nav'); 39 if (toggle && nav) { 40 toggle.addEventListener('click', function () { 41 var open = toggle.getAttribute('aria-expanded') === 'true'; 42 toggle.setAttribute('aria-expanded', open ? 'false' : 'true'); 43 nav.classList.toggle('is-open', !open); 44 }); 45 nav.querySelectorAll('a').forEach(function (link) { 46 link.addEventListener('click', function () { 47 toggle.setAttribute('aria-expanded', 'false'); 48 nav.classList.remove('is-open'); 49 }); 50 }); 51 } 52 53 var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 54 55 /* Hero hierarchy enters as one staged composition. */ 56 var hero = document.querySelector('.home-hero'); 57 if (hero) { 58 hero.classList.add('is-staging'); 59 if (reduceMotion) { 60 hero.classList.add('is-ready'); 61 } else { 62 requestAnimationFrame(function () { 63 requestAnimationFrame(function () { 64 hero.classList.add('is-ready'); 65 }); 66 }); 67 68 hero.addEventListener('pointermove', function (event) { 69 if (event.pointerType === 'touch') return; 70 var x = event.clientX / Math.max(window.innerWidth, 1) - 0.5; 71 var y = event.clientY / Math.max(window.innerHeight, 1) - 0.5; 72 hero.style.setProperty('--hero-x', (x * 12).toFixed(2) + 'px'); 73 hero.style.setProperty('--hero-y', (y * 8).toFixed(2) + 'px'); 74 }); 75 hero.addEventListener('pointerleave', function () { 76 hero.style.setProperty('--hero-x', '0px'); 77 hero.style.setProperty('--hero-y', '0px'); 78 }); 79 } 80 } 81 82 /* Presence: staggered fade/slide into view. */ 83 var reveals = document.querySelectorAll('.reveal'); 84 var staggerParents = [ 85 '.home-outcomes__grid', 86 '.home-clients__grid', 87 '.home-process__steps', 88 '.home-pillars__grid', 89 '.home-svc-grid' 90 ]; 91 staggerParents.forEach(function (sel) { 92 document.querySelectorAll(sel).forEach(function (grid) { 93 var kids = grid.querySelectorAll(':scope > .reveal, :scope > .home-outcome.reveal, :scope > .home-client.reveal, :scope > .home-process__step.reveal, :scope > .home-pillar.reveal, :scope > .home-svc-card'); 94 if (!kids.length) { 95 kids = grid.children; 96 } 97 Array.prototype.forEach.call(kids, function (el, i) { 98 if (!el.classList.contains('reveal')) { 99 el.classList.add('reveal'); 100 } 101 el.style.setProperty('--reveal-delay', Math.min(i * 70, 420) + 'ms'); 102 }); 103 }); 104 }); 105 106 if (reveals.length && 'IntersectionObserver' in window) { 107 var io = new IntersectionObserver( 108 function (entries) { 109 entries.forEach(function (entry) { 110 if (entry.isIntersecting) { 111 entry.target.classList.add('is-in'); 112 io.unobserve(entry.target); 113 } 114 }); 115 }, 116 { rootMargin: '0px 0px -8% 0px', threshold: 0.1 } 117 ); 118 document.querySelectorAll('.reveal').forEach(function (el) { 119 io.observe(el); 120 }); 121 } else { 122 document.querySelectorAll('.reveal').forEach(function (el) { 123 el.classList.add('is-in'); 124 }); 125 } 126 127 var footerTop = document.getElementById('footer-top'); 128 if (footerTop) { 129 footerTop.addEventListener('click', function () { 130 window.scrollTo({ top: 0, behavior: reduceMotion ? 'auto' : 'smooth' }); 131 }); 132 133 if ('IntersectionObserver' in window) { 134 var topSentinel = document.createElement('span'); 135 topSentinel.setAttribute('aria-hidden', 'true'); 136 topSentinel.style.cssText = 'position:absolute;top:320px;left:0;width:1px;height:1px;pointer-events:none;'; 137 document.body.appendChild(topSentinel); 138 139 var topObserver = new IntersectionObserver(function (entries) { 140 var entry = entries[0]; 141 var show = !entry.isIntersecting && entry.boundingClientRect.top < 0; 142 footerTop.classList.toggle('is-visible', show); 143 footerTop.hidden = !show; 144 }); 145 topObserver.observe(topSentinel); 146 } else { 147 footerTop.hidden = false;
148 } 149 } 150})();
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.