1<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Thu Oct 16 2025 15:46:35 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="spotlight-cursor.webflow.io" data-wf-page="6137a13bc94e0102bfa001a3" data-wf-site="6137a13bc94e015885a001a2"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>005 Spotlight Cursor</title><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/css/spotlight-cursor.webflow.shared.524e547f4.css" rel="stylesheet" type="text/css"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({ google: { families: ["Roboto Mono:300,regular,700","Rubik Mono One:regular","Inter:regular,600,800"] }});</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/img/favicon.ico" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/img/webclip.png" rel="apple-touch-icon"/></head><body class="body flex--center"><div class="mm--delete-me"><div id="mm-config" data-domain="spotlight-cursor" class="mm__config w-embed w-iframe w-script">
1<script> 2document.addEventListener('DOMContentLoaded', function () { 3 (function () { 4 console.log('[MM] Script initialized'); 5 6 // ----- Domain gate ----- 7 const mmConfig = document.querySelector('#mm-config'); 8 if (!mmConfig) { 9 console.warn('[MM] No #mm-config element found â aborting'); 10 return; 11 } 12 const domain = (mmConfig.dataset.domain || '').trim(); 13 if (!domain) { 14 console.warn('[MM] No data-domain found on #mm-config â aborting'); 15 return; 16 } 17 18 const authorizedDomain = `${domain.toLowerCase()}.webflow.io`; 19 const currentHost = window.location.hostname.toLowerCase().replace(/^www\./, ''); 20 console.log(`[MM] Authorized domain: ${authorizedDomain}`); 21 console.log(`[MM] Current host: ${currentHost}`); 22 23 if (currentHost !== authorizedDomain) { 24 console.log('[MM] Host does not match authorized domain â skipping analytics + iframe setup'); 25 return; 26 } 27 28 // ----- Fathom injection (dynamic async) ----- 29 if ([...document.scripts].some(s => s.src && s.src.includes('cdn.usefathom.com/script.js'))) { 30 console.log('[MM] Fathom Analytics script already present â not injecting again'); 31 } else { 32 console.log('[MM] Injecting Fathom Analytics scriptâ¦'); 33 const s = document.createElement('script'); 34 s.src = 'https://cdn.usefathom.com/script.js'; 35 s.async = true; 36 s.dataset.site = 'FTGQSODZ'; 37 38 const fathomQueue = []; 39 function safeTrack(label) { 40 if (window.fathom && typeof window.fathom.trackEvent === 'function') { 41 window.fathom.trackEvent(label); 42 } else { 43 fathomQueue.push(label); 44 } 45 } 46 s.onload = function () { 47 console.log('[MM] Fathom loaded'); 48 if (fathomQueue.length) { 49 console.log(`[MM] Flushing ${fathomQueue.length} queued Fathom event(s)`); 50 while (fathomQueue.length) { 51 const label = fathomQueue.shift(); 52 if (window.fathom && typeof window.fathom.trackEvent === 'function') { 53 window.fathom.trackEvent(label); 54 } 55 } 56 } 57 }; 58 document.head.appendChild(s); 59 60 // Expose for click tracking below 61 window.__mmSafeTrack = safeTrack; 62 } 63 64 // ----- Custom event link tracking ----- 65 document.addEventListener('click', function (e) { 66 const link = e.target.closest('a[fathom-event]'); 67 if (!link) return; 68 69 const eventName = link.getAttribute('fathom-event'); 70 if (!eventName) return; 71 72 if (window.__mmSafeTrack) { 73 window.__mmSafeTrack(eventName); 74 } else if (window.fathom && typeof window.fathom.trackEvent === 'function') { 75 window.fathom.trackEvent(eventName); 76 } 77 }); 78 79 // ----- Menu iframe height sync ----- 80 window.addEventListener('message', function (event) { 81 const data = event.data; 82 if (data && typeof data === 'object' && Object.prototype.hasOwnProperty.call(data, 'FrameHeight')) { 83 const menuIframe = document.getElementById('menuIframe'); 84 if (!menuIframe) return; 85 const h = Number(data.FrameHeight); 86 if (Number.isNaN(h) || h <= 0) return; 87 menuIframe.style.height = h + 'px'; 88 } 89 }); 90 91 // Expose globally for onload/onready callbacks 92 window.setIframeHeight = function (ifrm) { 93 if (ifrm && ifrm.contentWindow) { 94 ifrm.contentWindow.postMessage({ getHeight: true }, '*'); 95 } 96 }; 97 })(); 98}); 99</script>
99 100 101<style> 102 *{-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;} 103 104 html[data-wf-domain] .mm__custom-code-tag, 105 html[data-wf-domain] .micromonday-library--mm__custom-code-tag{ 106 display: none !important; 107 } 108</style></div><div class="mm__menu"><div class="mm__menu-button"><img src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/68b3dcda55767e4fa8e30650_10d233b890f8c83b5e453e8a2df6ab59_logo.png" loading="lazy" width="32" height="32" alt="" class="mm__logo"/><div>MicroMondayâ¢ï¸</div><img src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/68b3dcda55767e4fa8e3064f_1cd6df164560576f8e4ecb7130f0a308_hamburger.svg" loading="lazy" alt="" class="mm__hamburger"/></div><div class="mm__number-wrapper"><div class="mm__number">â</div><div class="mm__number">005</div></div><div class="mm__title">Spotlight Cursor</div></div><div class="mm__buttons"><a id="clone" fathom-event="Clicked clone link" href="https://try.webflow.com/spotlight-cursor" target="_blank" class="mm__button w-inline-block"><div class="mm__webflow-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 1080 674" fill="none"> 109<path fill-rule="evenodd" clip-rule="evenodd" d="M1080 0L735.386 673.684H411.695L555.916 394.481H549.445C430.464 548.934 252.942 650.61 -0.000488281 673.684V398.344C-0.000488281 398.344 161.813 388.787 256.938 288.776H-0.000488281V0.0053214H288.771V237.515L295.252 237.489L413.254 0.0053214H631.644V236.009L638.126 235.999L760.555 0H1080Z" fill="currentColor"/> 110</svg></div><div class="mm__button-text">Clone project</div></a><a id="youtube" fathom-event="Clicked Youtube link" href="https://youtube.com/kevinhaagsucks?sub_confirmation=1" target="_blank" class="mm__button mm__button--youtube w-inline-block"><img src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/68b3dcda55767e4fa8e3064d_1ba649716d56efef42a633a5035cdf1d_youtube.svg" loading="lazy" alt="" class="mm__button-icon"/><div class="mm__button-text">Subscribe</div></a></div><div class="mm__sponsor"><div class="mm__small-text">Supported by affiliate links. Thanks for clicking!</div><div class="mm__stack"><a id="twitter" fathom-event="Clicked X link" href="https://twitter.com/intent/follow?screen_name=kevinhaag" target="_blank" class="mm__button mm__button--s mm__button--x w-inline-block"><div class="mm__x-icon w-embed"><svg width="100%" height="100%" viewBox="0 0 1200 1227" fill="none" xmlns="http://www.w3.org/2000/svg"> 111<path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z" fill="currentColor"/> 112</svg></div><div class="mm__button-text">Follow <span class="mm__bold">@kevinhaag</span></div></a><a id="templates" fathom-event="Clicked templates link" href="https://try.webflow.com/kh-templates" target="_blank" class="mm__button mm__button--s w-inline-block"><div class="mm__button-text">â¡ï¸ Get my premium <span class="mm__bold">Webflow Templates</span></div></a></div></div><div class="mm__sidebar"><div class="mm__sidebar-body"><img src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/68b3dcda55767e4fa8e3064b_c64af8199cefa50dbefbbe7d910d7696_close-icon.svg" loading="lazy" alt="" class="mm__sidebar-close"/><div class="mm__sidebar-title">MicroMondayâ¢ï¸</div><div class="mm__sidebar-subtitle">A weekly microinteraction project by <a href="https://try.webflow.com/webflow-kevinhaag" id="profile" target="_blank" class="mm__link">Kevin Haag</a></div><div class="mm__sidebar-iframe w-embed w-iframe"><iframe id="menuIframe" src="https://mm-menu.webflow.io/" width="100%" frameborder="0" style="height: 100%; margin: 0; display: block;"></iframe></div></div><div class="mm__sidebar-scrim"></div></div></div><img src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/68b3dfcb2cc1a875c6b288a8_interaction-page.svg" loading="lazy" alt="" class="mm__custom-code-tag"/><div class="frame"><div class="frame__viewer"><div class="iframe-wrapper w-embed w-iframe"><style> 113 .iframe { 114 width: 200%; 115 height:1080px; 116 transform: scale(0.5); 117 transform-origin: 0 0; 118 border: none; 119 } 120</style> 121<iframe class="iframe" src="https://spotlight-cursor.webflow.io/interaction"></iframe></div><a href="/interaction" class="fullscreen-button w-inline-block">
121<div class="fullscreen-button__icon w-embed"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 122<path d="M12 19H5L5.007 12H7V17H12V19ZM18.992 12H17V7H12V5H19L18.992 12Z" fill="currentColor"></path> 123</svg></div></a></div><div class="frame__background"><div class="iframe-wrapper w-embed w-iframe"><style> 124 .iframe { 125 width: 200%; 126 height:1080px; 127 transform: scale(0.5); 128 transform-origin: 0 0; 129 border: none; 130 } 131</style> 132<iframe class="iframe" src="https://spotlight-cursor.webflow.io/interaction"></iframe></div></div></div>
132<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=6137a13bc94e015885a001a2" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
132<script src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/js/webflow.schunk.36b8fb49256177c8.js" type="text/javascript"></script>
132<script src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/js/webflow.schunk.e0804a1f74fe949e.js" type="text/javascript"></script>
132<script src="https://cdn.prod.website-files.com/6137a13bc94e015885a001a2/js/webflow.8496022b.85c932c373d04b42.js" type="text/javascript"></script>
132<script type="text/javascript" language="javascript"> 133 $(document).ready(function(){ 134 $(window.frames[0]).on('scroll', function() { 135 $(window.frames[1]).scrollTop($(window.frames[0]).scrollTop()); 136 }); 137 }); 138</script>
138</body></html>
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.