1<!DOCTYPE html> 2<html lang="en-US" class="overflow-x-hidden"> 3<head> 4 <meta charset="utf-8"> 5 <meta name="robots" content="index,follow,max-image-preview:large"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Login Help for Online Tap Dance Purchases | United Taps</title> 8 <meta name="description" content="Find the right United Taps login area for all-access content, Teachable purchases, or direct-link purchases from July 2023 through October 2025."> 9 <link rel="canonical" href="https://unitedtaps.com/Login.html"> 10 <link rel="icon" href="/Images/Favicon.png"> 11 <link rel="apple-touch-icon" href="/Images/Favicon.png"> 12 <meta name="theme-color" content="#1e3a5f"> 13 14 <!-- Open Graph --> 15 <meta property="og:url" content="https://unitedtaps.com/Login.html"> 16 <meta property="og:type" content="website"> 17 <meta property="og:site_name" content="UNITED TAPS"> 18 <meta property="og:locale" content="en_US"> 19 <meta property="og:title" content="Login Help for Online Tap Dance Purchases | United Taps"> 20 <meta property="og:description" content="Find the right United Taps login area for all-access content, Teachable purchases, or direct-link purchases from July 2023 through October 2025."> 21 <meta property="og:image" content="https://unitedtaps.com/Images/Homepage-Social-Share.webp"> 22 <meta property="og:image:width" content="1200"> 23 <meta property="og:image:height" content="630"> 24 <meta property="og:image:alt" content="United Taps login help for purchase access"> 25 26 <!-- Twitter Card --> 27 <meta name="twitter:card" content="summary_large_image"> 28 <meta name="twitter:title" content="Login Help for Online Tap Dance Purchases | United Taps"> 29 <meta name="twitter:description" content="Find the right United Taps login area for all-access content, Teachable purchases, or direct-link purchases from July 2023 through October 2025."> 30 <meta name="twitter:image" content="https://unitedtaps.com/Images/Homepage-Social-Share.webp"> 31 32 <meta name="twitter:image:alt" content="United Taps login help for purchase access"> 33 <link rel="preload" as="font" href="/fonts/oswald-400.woff2" type="font/woff2" crossorigin> 34 <link rel="preload" as="font" href="/fonts/oswald-600.woff2" type="font/woff2" crossorigin> 35 36 <link rel="stylesheet" href="/css/site.css"> 37 <style> 38 @font-face { 39 font-family: 'Oswald'; 40 font-style: normal; 41 font-weight: 400; 42 font-display: swap; 43 src: url('/fonts/oswald-400.woff2') format('woff2'); 44 } 45 @font-face { 46 font-family: 'Oswald'; 47 font-style: normal; 48 font-weight: 600; 49 font-display: swap; 50 src: url('/fonts/oswald-600.woff2') format('woff2'); 51 } 52 </style> 53</head> 54<body class="bg-white font-system text-black overflow-x-hidden"> 55 56 <a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:bg-white focus:text-ut-navy focus:px-4 focus:py-2 focus:z-50">Skip to main content</a> 57 58 <!-- Cookieless baseline analytics. --> 59
59<script defer src="https://aquamarine-caiman.pikapod.net/script.js" data-website-id="e4a2ac90-d8e1-408b-8c21-9e3feb8226a6"></script>
59 60
60<script src="/js/ut-attribution.js"></script>
60 61 62<!-- HEADER / NAVIGATION --> 63 <header class="bg-ut-navy text-white"> 64 <nav class="max-w-6xl mx-auto px-6 flex items-center justify-between h-16 max-[359px]:h-14"> 65 66 <!-- Logo --> 67 <a href="/" class="font-oswald text-white/50 text-2xl max-[359px]:text-xl lg:text-2xl font-semibold tracking-wide max-[359px]:tracking-normal">UNITED TAPS</a> 68 69 <!-- Desktop Nav --> 70 <ul class="hidden lg:flex items-center gap-6 font-oswald text-xl font-normal tracking-wide"> 71 <li class="relative desktop-dropdown"> 72 <button id="nav-access" type="button" class="desktop-dropdown-toggle text-ut-gold hover:text-white transition-colors flex items-center gap-1" aria-expanded="false" aria-controls="nav-access-menu" aria-haspopup="true"> 73 Access Everything 74 <svg class="w-3 h-3 fill-current" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M2 4l4 4 4-4"/></svg> 75 </button> 76 <ul id="nav-access-menu" class="desktop-submenu absolute left-0 top-full hidden bg-ut-navy py-2 px-2 z-50 whitespace-nowrap text-white" aria-labelledby="nav-access" aria-hidden="true"> 77 <li><a href="/All-Access-for-Students.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">I'm a Student</a></li> 78 <li><a href="/All-Access-for-Teachers.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">I'm a Teacher</a></li> 79 </ul> 80 </li> 81 <li class="relative desktop-dropdown"> 82 <button id="nav-lessons" type="button" class="desktop-dropdown-toggle text-white/70 hover:text-ut-gold transition-colors flex items-center gap-1" aria-expanded="false" aria-controls="nav-lessons-menu" aria-haspopup="true"> 83 Lessons 84 <svg class="w-3 h-3 fill-current" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M2 4l4 4 4-4"/></svg> 85 </button> 86 <ul id="nav-lessons-menu" class="desktop-submenu absolute left-0 top-full hidden bg-ut-navy py-2 px-2 z-50 whitespace-nowrap text-white" aria-labelledby="nav-lessons" aria-hidden="true"> 87 <li><a href="/Beginner-Tap-Dance-Videos.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Beginner</a></li> 88 <li><a href="/Adv-Beginner-Tap-Dance-Videos.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Adv-Beginner</a></li> 89 <li><a href="/Intermediate-Tap-Dance-Videos.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Intermediate</a></li> 90 <li><a href="/Int-Advanced-Tap-Dance-Videos.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Int-Advanced</a></li> 91 <li><a href="/Advanced-Tap-Dance-Videos.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Advanced</a></li> 92 </ul> 93 </li> 94 <li><a href="/315-Tap-Dictionary.html" class="text-white/70 hover:text-ut-gold transition-colors">Dictionary</a></li> 95 <li class="relative desktop-dropdown"> 96 <button id="nav-choreo" type="button" class="desktop-dropdown-toggle text-white/70 hover:text-ut-gold transition-colors flex items-center gap-1" aria-expanded="false" aria-controls="nav-choreo-menu" aria-haspopup="true"> 97 Choreography 98 <svg class="w-3 h-3 fill-current" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M2 4l4 4 4-4"/></svg> 99 </button> 100 <ul id="nav-choreo-menu" class="desktop-submenu absolute left-0 top-full hidden bg-ut-navy py-2 px-2 z-50 whitespace-nowrap text-white" aria-labelledby="nav-choreo" aria-hidden="true"> 101 <li><a href="/tap-dance-choreography/Beginner-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Beginner</a></li> 102 <li><a href="/tap-dance-choreography/Adv-Beginner-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Adv-Beginner</a></li> 103 <li><a href="/tap-dance-choreography/Intermediate-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Intermediate</a></li> 104 <li><a href="/tap-dance-choreography/Int-Advanced-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Int-Advanced</a></li> 105 <li><a href="/tap-dance-choreography/Advanced-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Advanced</a></li> 106 <li><a href="/tap-dance-choreography/Custom-Tap-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">Custom</a></li> 107 <li><a href="/Tap-Dance-Choreography.html" class="block px-4 py-2 text-white/70 hover:text-ut-gold transition-colors">All Choreography</a></li> 108 </ul> 109 </li> 110 <li><a href="/Teacher-Tap-Dance-Videos.html" class="text-white/70 hover:text-ut-gold transition-colors">Teachers</a></li> 111 <li class="text-white/30" aria-hidden="true">|</li> 112 <li><a href="/Login.html" class="text-white/50 hover:text-ut-gold transition-colors">Login</a></li> 113 </ul> 114 115 <!-- Mobile Hamburger --> 116 <button id="menu-toggle" type="button" class="lg:hidden text-white" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-menu"> 117 <svg class="w-8 h-8 max-[359px]:w-6 max-[359px]:h-6" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> 118 <path d="M4 6h16M4 12h16M4 18h16"/> 119 </svg> 120 </button> 121 122 </nav> 123 124 <!-- Mobile Menu --> 125 <div id="mobile-menu" class="hidden lg:hidden bg-ut-navy border-t border-white/10 text-white" aria-hidden="true"> 126 <ul class="font-oswald text-2xl font-normal tracking-wide px-6 py-4 space-y-1"> 127 <li> 128 <button id="mobile-nav-access" type="button" class="mobile-dropdown-toggle w-full text-left text-ut-gold transition-colors py-3 flex items-center justify-between" data-default-color="text-ut-gold" aria-expanded="false" aria-controls="mobile-nav-access-menu"> 129 Access Everything 130 <svg class="w-4 h-4 fill-current transition-transform" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
130<path d="M2 4l4 4 4-4"/></svg> 131 </button> 132 <ul id="mobile-nav-access-menu" class="mobile-submenu hidden bg-ut-navy-dark -mx-6 py-2 px-12 space-y-1 text-white" aria-labelledby="mobile-nav-access" aria-hidden="true"> 133 <li><a href="/All-Access-for-Students.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">I'm a Student</a></li> 134 <li><a href="/All-Access-for-Teachers.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">I'm a Teacher</a></li> 135 </ul> 136 </li> 137 <li> 138 <button id="mobile-nav-lessons" type="button" class="mobile-dropdown-toggle w-full text-left text-white/70 transition-colors py-3 flex items-center justify-between" data-default-color="text-white/70" aria-expanded="false" aria-controls="mobile-nav-lessons-menu"> 139 Lessons 140 <svg class="w-4 h-4 fill-current transition-transform" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M2 4l4 4 4-4"/></svg> 141 </button> 142 <ul id="mobile-nav-lessons-menu" class="mobile-submenu hidden bg-ut-navy-dark -mx-6 py-2 px-12 space-y-1 text-white" aria-labelledby="mobile-nav-lessons" aria-hidden="true"> 143 <li><a href="/Beginner-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Beginner</a></li> 144 <li><a href="/Adv-Beginner-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Adv-Beginner</a></li> 145 <li><a href="/Intermediate-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Intermediate</a></li> 146 <li><a href="/Int-Advanced-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Int-Advanced</a></li> 147 <li><a href="/Advanced-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Advanced</a></li> 148 </ul> 149 </li> 150 <li><a href="/315-Tap-Dictionary.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Dictionary</a></li> 151 <li> 152 <button id="mobile-nav-choreo" type="button" class="mobile-dropdown-toggle w-full text-left text-white/70 transition-colors py-3 flex items-center justify-between" data-default-color="text-white/70" aria-expanded="false" aria-controls="mobile-nav-choreo-menu"> 153 Choreography 154 <svg class="w-4 h-4 fill-current transition-transform" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="M2 4l4 4 4-4"/></svg> 155 </button> 156 <ul id="mobile-nav-choreo-menu" class="mobile-submenu hidden bg-ut-navy-dark -mx-6 py-2 px-12 space-y-1 text-white" aria-labelledby="mobile-nav-choreo" aria-hidden="true"> 157 <li><a href="/tap-dance-choreography/Beginner-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Beginner</a></li> 158 <li><a href="/tap-dance-choreography/Adv-Beginner-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Adv-Beginner</a></li> 159 <li><a href="/tap-dance-choreography/Intermediate-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Intermediate</a></li> 160 <li><a href="/tap-dance-choreography/Int-Advanced-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Int-Advanced</a></li> 161 <li><a href="/tap-dance-choreography/Advanced-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Advanced</a></li> 162 <li><a href="/tap-dance-choreography/Custom-Tap-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Custom</a></li> 163 <li><a href="/Tap-Dance-Choreography.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">All Choreography</a></li> 164 </ul> 165 </li> 166 <li><a href="/Teacher-Tap-Dance-Videos.html" class="block py-3 text-white/70 hover:text-ut-gold transition-colors">Teachers</a></li> 167 <li><a href="/Login.html" class="block py-3 text-white/50 hover:text-ut-gold transition-colors">Login</a></li> 168 </ul> 169 </div> 170 </header> 171 172 <!-- Navigation JS - desktop dropdowns (hover + keyboard), mobile menu toggle, mobile accordions --> 173
173<script> 174 // --- Desktop Dropdowns --- 175 // Supports: mouse hover, click, Enter/Space, Escape, click-outside-to-close 176 function openDesktopDropdown(li) { 177 var btn = li.querySelector('.desktop-dropdown-toggle'); 178 var menu = li.querySelector('.desktop-submenu'); 179 menu.classList.remove('hidden'); 180 menu.setAttribute('aria-hidden', 'false'); 181 btn.setAttribute('aria-expanded', 'true'); 182 } 183 function closeDesktopDropdown(li) { 184 var btn = li.querySelector('.desktop-dropdown-toggle'); 185 var menu = li.querySelector('.desktop-submenu'); 186 menu.classList.add('hidden'); 187 menu.setAttribute('aria-hidden', 'true'); 188 btn.setAttribute('aria-expanded', 'false'); 189 } 190 function closeAllDesktopDropdowns() { 191 document.querySelectorAll('.desktop-dropdown').forEach(function(li) { 192 closeDesktopDropdown(li); 193 }); 194 } 195 196 document.querySelectorAll('.desktop-dropdown').forEach(function(li) { 197 // Mouse hover 198 li.addEventListener('mouseenter', function() { openDesktopDropdown(li); }); 199 li.addEventListener('mouseleave', function() { closeDesktopDropdown(li); }); 200 201 // Click / keyboard activation on the button 202 var btn = li.querySelector('.desktop-dropdown-toggle'); 203 btn.addEventListener('click', function(e) { 204 e.preventDefault(); 205 var isOpen = btn.getAttribute('aria-expanded') === 'true'; 206 closeAllDesktopDropdowns(); 207 if (!isOpen) { openDesktopDropdown(li); } 208 }); 209 210 // Escape closes the open dropdown and returns focus to button 211 li.addEventListener('keydown', function(e) { 212 if (e.key === 'Escape') { 213 closeDesktopDropdown(li); 214 btn.focus(); 215 } 216 }); 217 }); 218 219 // Click outside closes all desktop dropdowns 220 document.addEventListener('click', function(e) { 221 if (!e.target.closest('.desktop-dropdown')) { 222 closeAllDesktopDropdowns(); 223 } 224 }); 225 226 // --- Mobile Menu Toggle --- 227 var mobileToggle = document.getElementById('menu-toggle'); 228 var mobileMenu = document.getElementById('mobile-menu'); 229 230 function closeAllMobileSubmenus() { 231 document.querySelectorAll('.mobile-dropdown-toggle').forEach(function(btn) { 232 var submenu = btn.nextElementSibling; 233 var icon = btn.querySelector('svg'); 234 var defaultColor = btn.getAttribute('data-default-color') || 'text-white/70'; 235 236 if (submenu) { 237 submenu.classList.add('hidden'); 238 submenu.setAttribute('aria-hidden', 'true'); 239 } 240 241 if (icon) { 242 icon.classList.remove('rotate-180'); 243 } 244 245 btn.setAttribute('aria-expanded', 'false'); 246 btn.classList.remove('text-ut-gold'); 247 btn.classList.add(defaultColor); 248 }); 249 } 250 251 function setMobileMenuOpen(isOpen, returnFocus) { 252 mobileMenu.classList.toggle('hidden', !isOpen); 253 mobileToggle.querySelector('path').setAttribute('d', isOpen ? 'M6 18L18 6M6 6l12 12' : 'M4 6h16M4 12h16M4 18h16'); 254 mobileMenu.setAttribute('aria-hidden', isOpen ? 'false' : 'true'); 255 mobileToggle.setAttribute('aria-label', isOpen ? 'Close menu' : 'Open menu'); 256 mobileToggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); 257 258 if (!isOpen) { 259 closeAllMobileSubmenus(); 260 } 261 262 if (returnFocus) { 263 mobileToggle.focus(); 264 } 265 } 266 267 mobileToggle.addEventListener('click', function() { 268 setMobileMenuOpen(mobileMenu.classList.contains('hidden'), false); 269 }); 270 271 document.addEventListener('keydown', function(e) { 272 if (e.key === 'Escape' && !mobileMenu.classList.contains('hidden')) { 273 setMobileMenuOpen(false, true); 274 } 275 }); 276 277 // --- Mobile Dropdown Accordions --- 278 document.querySelectorAll('.mobile-dropdown-toggle').forEach(function(btn) { 279 btn.addEventListener('click', function() { 280 var submenu = this.nextElementSibling; 281 var isOpening = submenu.classList.contains('hidden'); 282 submenu.classList.toggle('hidden'); 283 this.querySelector('svg').classList.toggle('rotate-180'); 284 submenu.setAttribute('aria-hidden', isOpening ? 'false' : 'true'); 285 this.setAttribute('aria-expanded', isOpening ? 'true' : 'false'); 286 var defaultColor = this.getAttribute('data-default-color') || 'text-white/70'; 287 if (isOpening) { 288 this.classList.remove(defaultColor); 289 this.classList.add('text-ut-gold'); 290 } else { 291 this.classList.remove('text-ut-gold'); 292 this.classList.add(defaultColor); 293 } 294 }); 295 }); 296 </script>
296 297 298 299 <main id="main-content"> 300 301 <section class="py-10 md:py-14 lg:py-16 bg-ut-hero-bg"> 302 <div class="max-w-6xl mx-auto px-6"> 303 304 <h1 class="font-oswald text-[2.5rem] max-[359px]:text-2xl font-semibold text-black leading-tight text-center mb-10 md:mb-12 break-words"> 305 Login 306 </h1> 307 308 309 <h2 class="sr-only">Login Options</h2> 310 311 <div class="grid grid-cols-1 md:grid-cols-3 gap-8 md:gap-6 max-w-md md:max-w-5xl mx-auto"> 312 313 <div class="bg-ut-review-blue shadow-[2px_4px_10px_rgba(0,0,0,0.2)] py-8 px-6 text-center flex flex-col items-center text-white"> 314 <a href="https://allaccess.unitedtaps.com/" rel="nofollow" aria-label="Open the All Access homepage"> 315 <img 316 src="/Images/Login-All-Access-Pass.webp?v=20260811-1" 317 alt="All Access Pass login tile for current United Taps membership access" 318 loading="lazy" 319 width="1080" 320 height="1080" 321 class="block w-40 h-40 mx-auto mb-5 border border-gray-300" 322 > 323 </a> 324 <h3 class="font-oswald text-3xl max-[359px]:text-2xl sm:text-2xl font-semibold leading-tight mb-3"> 325 <a href="https://allaccess.unitedtaps.com/" rel="nofollow" class="text-white hover:text-ut-gold transition-colors"> 326 All Access Homepage 327 </a> 328 </h3> 329 <p class="font-system text-2xl max-[359px]:text-xl md:text-xl text-white leading-relaxed text-left w-full"> 330 All Access has been available since Feb 2026. If you made a purchase prior to this - your content is accessed another way. Need help? <a href="mailto:[email protected]" class="text-ut-gold hover:text-white transition-colors">Email me.</a> 331 </p> 332 </div> 333 334 <div class="bg-ut-review-blue shadow-[2px_4px_10px_rgba(0,0,0,0.2)] py-8 px-6 text-center flex flex-col items-center text-white"> 335 <a href="https://unitedtaps.teachable.com" rel="nofollow" aria-label="Open the Teachable login for July 2019 through July 2023 purchases"> 336 <img 337 src="/Images/Login-July-2019-July-2023.webp" 338 alt="Teachable login tile for United Taps purchases from July 2019 through July 2023" 339 loading="lazy" 340 width="1080" 341 height="1080" 342 class="block w-40 h-40 mx-auto mb-5 border border-gray-300" 343 > 344 </a> 345 <h3 class="font-oswald text-3xl max-[359px]:text-2xl sm:text-2xl font-semibold leading-tight mb-3"> 346 <a href="https://unitedtaps.teachable.com" rel="nofollow" class="text-white hover:text-ut-gold transition-colors"> 347 July 2019 - July 2023 348 </a> 349 </h3> 350 <p class="font-system text-2xl max-[359px]:text-xl md:text-xl text-white leading-relaxed text-left w-full"> 351 Purchases made between July 2019 and July 2023 are accessed here. Need help? <a href="mailto:[email protected]" class="text-ut-gold hover:text-white transition-colors">Email me.</a> 352 </p> 353 </div> 354 355 <div class="bg-ut-review-blue shadow-[2px_4px_10px_rgba(0,0,0,0.2)] py-8 px-6 text-center flex flex-col items-center text-white"> 356 <img 357 src="/Images/Login-July-2023-Oct-2025.webp" 358 alt="Direct-link access tile for United Taps purchases from July 2023 through October 2025" 359 loading="lazy" 360 width="1080" 361 height="1080" 362 class="block w-40 h-40 mx-auto mb-5 border border-gray-300" 363 > 364 <h3 class="font-oswald text-3xl max-[359px]:text-2xl sm:text-2xl font-semibold leading-tight mb-3"> 365 July 2023 - Oct 2025 366 </h3> 367 <p class="font-system text-2xl max-[359px]:text-xl md:text-xl text-white leading-relaxed text-left w-full"> 368 Purchases made between July 2023 and October 2025 have direct links without login. Need help? <a href="mailto:[email protected]" class="text-ut-gold hover:text-white transition-colors">Email me.</a> 369 </p> 370 </div> 371 372 </div> 373 374 <p class="font-system text-2xl max-[359px]:text-xl md:text-xl text-black leading-relaxed text-center mt-10 md:mt-12"> 375 Need help? Email me at <a href="mailto:[email protected]" class="font-semibold text-blue-600 hover:text-blue-800 max-[359px]:text-base transition-colors">[email protected]</a> 376 </p> 377 378 </div> 379 </section> 380 381 </main> 382 383 <!-- FOOTER --> 384 <footer class="bg-ut-navy-dark text-white"> 385 <div class="max-w-6xl mx-auto px-6 py-12"> 386 387 <!-- Footer Content - Two Columns --> 388 <div class="flex flex-col items-center gap-6 sm:flex-row sm:items-stretch sm:justify-center sm:gap-6"> 389 390 <!-- Left Column - Nav Links --> 391 <div class="font-oswald text-xl lg:text-base uppercase tracking-wide text-center sm:text-right space-y-4 lg:space-y-2 min-w-0"> 392 <a href="/About-Us.html" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">About</a> 393 <a href="/Support.html" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">Support</a> 394 <a href="/Outreach.html" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">Outreach</a> 395 <a href="/Tap-Dance-FAQ.html" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">FAQ</a> 396 </div> 397 398 <div class="w-24 border-t border-gray-700 sm:w-px sm:border-t-0 sm:border-l" aria-hidden="true"></div> 399 400 <!-- Right Column - Contact Info --> 401 <div class="font-oswald text-xl lg:text-base uppercase tracking-wide text-center sm:text-left space-y-4 lg:space-y-2 min-w-0"> 402 <a href="/" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">United Taps</a> 403 <a href="/About-Us.html" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">Rod Howell</a> 404 <a href="mailto:[email protected]" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors break-all">[email protected]</a> 405 <a href="tel:1-888-210-1075" class="block py-0.5 lg:py-0 text-gray-400 hover:text-ut-gold transition-colors">1-888-210-1075</a> 406 </div> 407 408 </div> 409 410 <!-- Legal Links --> 411 <div class="mt-8 text-center flex flex-wrap items-center justify-center gap-x-2 gap-y-2"> 412 <a href="/privacy-policy.html" class="py-1 px-1 lg:py-0 lg:px-0 text-base lg:text-sm text-gray-400 hover:text-ut-gold transition-colors">Privacy Policy</a>
413 <span class="text-base lg:text-sm text-gray-400">•</span> 414 <a href="/terms-of-service.html" class="py-1 px-1 lg:py-0 lg:px-0 text-base lg:text-sm text-gray-400 hover:text-ut-gold transition-colors">Terms of Service</a> 415 416 </div> 417 418 </div> 419 </footer> 420 421 <button 422 id="back-to-top" 423 type="button" 424 class="hidden fixed right-4 bottom-4 md:right-6 md:bottom-6 z-50 h-12 w-12 items-center justify-center rounded-full transition-transform hover:scale-105 focus:outline-none focus:ring-4 focus:ring-ut-gold focus:ring-offset-2 active:scale-95" 425 aria-label="Back to top" 426 > 427 <svg aria-hidden="true" focusable="false" class="h-full w-full drop-shadow-md" viewBox="0 0 56 56"> 428 <defs> 429 <radialGradient id="back-to-top-gradient" gradientUnits="userSpaceOnUse" cx="26" cy="21" r="31"> 430 <stop offset="0" stop-color="#8fc3ee"></stop> 431 <stop offset="1" stop-color="#76b5e8"></stop> 432 </radialGradient> 433 <mask id="back-to-top-cutout" maskUnits="userSpaceOnUse"> 434 <rect width="56" height="56" fill="white"></rect> 435 <path d="M17 34l11-11 11 11" fill="none" stroke="black" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"></path> 436 </mask> 437 </defs> 438 <circle cx="28" cy="28" r="27" fill="url(#back-to-top-gradient)" fill-opacity="0.9" mask="url(#back-to-top-cutout)"></circle> 439 </svg> 440 </button> 441
441<script> 442 (function() { 443 var button = document.getElementById('back-to-top'); 444 if (!button) { 445 return; 446 } 447 function getBackToTopScale() { 448 var scale = 1; 449 450 if (window.visualViewport && window.visualViewport.scale) { 451 scale = Math.max(scale, window.visualViewport.scale); 452 } 453 454 if (window.matchMedia('(pointer: coarse)').matches && window.screen && window.screen.width && window.innerWidth) { 455 scale = Math.max(scale, window.screen.width / window.innerWidth); 456 } 457 458 return Math.min(Math.max(scale, 1), 4); 459 } 460 461 function updateBackToTopGeometry() { 462 var scale = getBackToTopScale(); 463 var baseSize = 48; 464 var baseOffset = window.matchMedia('(min-width: 768px)').matches ? 24 : 16; 465 466 button.style.width = (baseSize / scale) + 'px'; 467 button.style.height = (baseSize / scale) + 'px'; 468 button.style.right = (baseOffset / scale) + 'px'; 469 button.style.bottom = (baseOffset / scale) + 'px'; 470 } 471 472 function updateBackToTopButton() { 473 updateBackToTopGeometry(); 474 475 if (window.scrollY > 400) { 476 button.classList.remove('hidden'); 477 button.classList.add('flex'); 478 } else { 479 button.classList.add('hidden'); 480 button.classList.remove('flex'); 481 } 482 } 483 484 button.addEventListener('click', function() { 485 var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; 486 window.scrollTo({ top: 0, behavior: prefersReducedMotion ? 'auto' : 'smooth' }); 487 }); 488 489 window.addEventListener('scroll', updateBackToTopButton, { passive: true }); 490 window.addEventListener('resize', updateBackToTopButton); 491 if (window.visualViewport) { 492 window.visualViewport.addEventListener('resize', updateBackToTopButton); 493 window.visualViewport.addEventListener('scroll', updateBackToTopButton); 494 } 495 updateBackToTopButton(); 496 })(); 497 </script>
497 498 499 500</body> 501</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.