/** * OSINT Suite - Session Footer * IC-style footer with DTG, session ID, handling caveats * Include with: */ (function() { const SPONSOR_URL = 'https://github.com/sponsors/ejfox'; // DTG helper — duplicates ic.js/nav.js, intentional since sponsor.js // may be the only script loaded on some pages const dtg = () => { const d = new Date(); const months = ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC']; const dd = String(d.getUTCDate()).padStart(2, '0'); const hhmm = d.toISOString().slice(11, 16).replace(':', ''); return `${dd}${hhmm}Z${months[d.getUTCMonth()]}${String(d.getUTCFullYear()).slice(-2)}`; }; // Get session ID from nav.js or generate const sessionId = sessionStorage.getItem('osint-session') || Date.now().toString(16).slice(-6).toUpperCase() + '-' + Math.random().toString(16).slice(2, 6).toUpperCase(); const styles = ` .osint-footer { font-family: 'IBM Plex Mono', Consolas, monospace; font-size: 9px; letter-spacing: 0.05em; color: var(--text-muted); border-top: 1px solid var(--border); padding: 8px 20px; margin: 40px -20px -20px -20px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; background: var(--bg-muted); } .osint-footer a { color: var(--link); text-decoration: underline; } .osint-footer .footer-left { display: flex; gap: 16px; align-items: center; } .osint-footer .footer-right { display: flex; gap: 16px; align-items: center; } .osint-footer .dtg { color: var(--text-muted); font-weight: 500; } .osint-footer .session { color: var(--text-faint); } .osint-footer .handling { color: var(--text-faint); font-size: 8px; text-transform: uppercase; letter-spacing: 0.1em; } .osint-footer .sponsor { color: var(--red) !important; } @media (max-width: 600px) { .osint-footer { font-size: 8px; padding: 6px 12px; } .osint-footer .handling { display: none; } } `; // Inject styles const styleEl = document.createElement('style'); styleEl.textContent = styles; document.head.appendChild(styleEl); // Create footer const footer = document.createElement('footer'); footer.className = 'osint-footer'; footer.innerHTML = ` `; document.body.appendChild(footer); })();