my personal site
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add Privacy Policy page for VT gym tracker

+238
+79
privacy.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="UTF-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 + <title>Privacy Policy | Jack Hannon</title> 7 + <script> 8 + // Apply saved theme or OS preference before CSS loads to prevent flash 9 + if (localStorage.getItem('theme') === 'dark' || 10 + (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches)) { 11 + document.documentElement.classList.add('dark-theme'); 12 + } 13 + </script> 14 + <link rel="stylesheet" href="style.css" /> 15 + <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=match_case" /> 16 + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /> 17 + <style> 18 + .material-symbols-outlined { 19 + font-variation-settings: 20 + 'FILL' 0, 21 + 'wght' 400, 22 + 'GRAD' 0, 23 + 'opsz' 24 24 + } 25 + </style> 26 + </head> 27 + <body> 28 + <main class="container" id="main-content"> 29 + <div id="a11y-status" class="visually-hidden" aria-live="polite" aria-atomic="true"></div> 30 + 31 + <section class="privacy-policy"> 32 + <h1>Privacy Policy</h1> 33 + <p><strong>Last Updated:</strong> January 11, 2025</p> 34 + 35 + <p>Jack Hannon [I, Me, My] built Gym Tracker (the "App") as a free, non-commercial application. The App and any additional services provided now or in the future are provided "as is." This Privacy Policy outlines how I handle your information when you use my mobile application, Gym Tracker. By accessing or using the App, you agree to these privacy terms.</p> 36 + 37 + <h2>Information Collected</h2> 38 + <p>Gym Tracker does not collect, store, or transmit any personal or non-personal information from its users. Any data saved in the app is stored locally on the device.</p> 39 + 40 + <h2>Third-Party Services</h2> 41 + <p>The App connects to the Virginia Tech Recreational Sports website ("VT Rec Sports"). VT Rec Sports and their partners may collect personal information as outlined in their Privacy Policy. I encourage you to review their policy to understand how your information is handled when you interact with VT Rec Sports through the App.</p> 42 + 43 + <h2>Links to Third-Party Websites</h2> 44 + <p>The App may contain links to third-party websites or services that I don't operate. Once you leave the App, I have no control over these external sites and cannot be responsible for their privacy practices. Please review the privacy policies of any third-party sites you visit.</p> 45 + 46 + <h2>Changes to This Privacy Policy</h2> 47 + <p>I may update this Privacy Policy periodically. Any changes will be posted on this page with an updated "Last Updated" date.</p> 48 + 49 + <h2>Contact</h2> 50 + <p>If you have any questions or suggestions about this Privacy Policy, please contact me at <a href="mailto:hannon@vt.edu">hannon@vt.edu</a></p> 51 + </section> 52 + </main> 53 + 54 + <footer class="privacy-footer"> 55 + <div class="container"> 56 + <div class="footer-content"> 57 + <div class="footer-social"> 58 + <a href="https://www.linkedin.com/in/jackphannon/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn Profile"> 59 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="linkedin-icon"> 60 + <path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/> 61 + </svg> 62 + </a> 63 + <a href="https://github.com/Hann8n" target="_blank" rel="noopener noreferrer" aria-label="GitHub Profile"> 64 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512" class="github-icon"> 65 + <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/> 66 + </svg> 67 + </a> 68 + <a href="https://bsky.app/profile/jackhannon.me" target="_blank" rel="noopener noreferrer" aria-label="Bluesky Profile"> 69 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="bluesky-icon"> 70 + <path d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"/> 71 + </svg> 72 + </a> 73 + </div> 74 + </div> 75 + </div> 76 + </footer> 77 + <script src="script.js"></script> 78 + </body> 79 + </html>
+159
style.css
··· 2251 2251 .social-links a, .social-links svg { 2252 2252 color: #fff; 2253 2253 } 2254 + } 2255 + 2256 + /* Privacy Policy Page Styles */ 2257 + .privacy-policy { 2258 + max-width: 800px; 2259 + margin: 0 auto; 2260 + line-height: 1.7; 2261 + } 2262 + 2263 + .privacy-policy h1 { 2264 + font-size: 2.2em; 2265 + margin: 0 0 1rem 0; 2266 + color: var(--text-color); 2267 + text-align: center; 2268 + border-bottom: 2px solid var(--link-color); 2269 + padding-bottom: 0.5rem; 2270 + } 2271 + 2272 + .privacy-policy h2 { 2273 + font-size: 1.6em; 2274 + margin: 2rem 0 1rem 0; 2275 + color: var(--text-color); 2276 + border-left: 4px solid var(--vt-maroon); 2277 + padding-left: 1rem; 2278 + } 2279 + 2280 + .privacy-policy h3 { 2281 + font-size: 1.3em; 2282 + margin: 1.5rem 0 0.8rem 0; 2283 + color: var(--link-color); 2284 + } 2285 + 2286 + .privacy-policy p { 2287 + margin: 0.8rem 0 1.2rem 0; 2288 + color: var(--text-color); 2289 + } 2290 + 2291 + .privacy-policy ul { 2292 + margin: 0.8rem 0 1.2rem 0; 2293 + padding-left: 1.5rem; 2294 + } 2295 + 2296 + .privacy-policy li { 2297 + margin-bottom: 0.5rem; 2298 + color: var(--text-color); 2299 + } 2300 + 2301 + .privacy-policy strong { 2302 + color: var(--link-hover-color); 2303 + font-weight: 600; 2304 + } 2305 + 2306 + .privacy-policy a { 2307 + color: var(--vt-maroon); 2308 + text-decoration: underline; 2309 + transition: color 0.15s; 2310 + } 2311 + 2312 + .privacy-policy a:hover, 2313 + .privacy-policy a:focus { 2314 + color: var(--vt-burntOrange); 2315 + text-decoration: underline; 2316 + } 2317 + 2318 + .privacy-policy em { 2319 + font-style: italic; 2320 + color: var(--link-color); 2321 + opacity: 0.9; 2322 + } 2323 + 2324 + /* Mobile responsive adjustments for privacy policy */ 2325 + @media (max-width: 650px) { 2326 + .privacy-policy h1 { 2327 + font-size: 1.8em; 2328 + } 2329 + 2330 + .privacy-policy h2 { 2331 + font-size: 1.4em; 2332 + margin: 1.5rem 0 0.8rem 0; 2333 + padding-left: 0.8rem; 2334 + } 2335 + 2336 + .privacy-policy h3 { 2337 + font-size: 1.2em; 2338 + margin: 1.2rem 0 0.6rem 0; 2339 + } 2340 + 2341 + .privacy-policy ul { 2342 + padding-left: 1.2rem; 2343 + } 2344 + } 2345 + 2346 + /* Privacy Policy Footer Styles */ 2347 + .privacy-footer { 2348 + background: var(--nav-bg); 2349 + border-top: var(--nav-border); 2350 + margin-top: 3rem; 2351 + padding: 2rem 0; 2352 + } 2353 + 2354 + .footer-content { 2355 + display: flex; 2356 + justify-content: center; 2357 + align-items: center; 2358 + flex-wrap: wrap; 2359 + gap: 1.5rem; 2360 + } 2361 + 2362 + .footer-social { 2363 + display: flex; 2364 + gap: 1rem; 2365 + align-items: center; 2366 + } 2367 + 2368 + .footer-social a { 2369 + display: flex; 2370 + align-items: center; 2371 + justify-content: center; 2372 + width: 2.5rem; 2373 + height: 2.5rem; 2374 + border-radius: 50%; 2375 + background: transparent; 2376 + color: var(--text-color); 2377 + text-decoration: none; 2378 + transition: all 0.2s ease; 2379 + border: none; 2380 + } 2381 + 2382 + .footer-social a:hover, 2383 + .footer-social a:focus { 2384 + background: transparent; 2385 + color: var(--link-hover-color); 2386 + transform: translateY(-2px); 2387 + } 2388 + 2389 + .footer-social .bluesky-icon, 2390 + .footer-social .github-icon, 2391 + .footer-social .linkedin-icon { 2392 + width: 1.2rem; 2393 + height: 1.2rem; 2394 + fill: currentColor; 2395 + } 2396 + 2397 + 2398 + /* Mobile responsive footer */ 2399 + @media (max-width: 650px) { 2400 + .privacy-footer { 2401 + padding: 1.5rem 0; 2402 + } 2403 + 2404 + .footer-content { 2405 + flex-direction: column; 2406 + gap: 1rem; 2407 + text-align: center; 2408 + } 2409 + 2410 + .footer-social { 2411 + justify-content: center; 2412 + } 2254 2413 }