/* embed.js – discrete 4Hz ticking version */ (() => { const API = "https://ntdservices-debt-clock.hf.space/api/debt"; const CLS = "ntd-debt-clock"; const REFRESH_MS = 5 * 60 * 1000; // poll backend every 5 min /* 1 ▸ inject DSEG-7 font once per page */ if (!document.getElementById("dseg-face")) { const style = document.createElement("style"); style.id = "dseg-face"; style.textContent = ` @font-face { font-family: "DSEG7"; src: url("https://cdn.jsdelivr.net/npm/@fontsource/dseg7-classic/files/dseg7-classic-latin-700-normal.woff2") format("woff2"); font-weight: 700; font-style: normal; font-display: swap; }`; document.head.appendChild(style); } /* 2 ▸ mount one clock per matching element */ function mount(el) { Object.assign(el.style, { font: "700 5.5rem 'DSEG7', monospace", color: "#ffb400", textShadow: "0 0 8px rgba(255,180,0,.9)", background: "transparent", padding: "10px 18px", borderRadius: "6px", whiteSpace: "pre", letterSpacing: ".6em", userSelect: "none", position: "relative", }); let baseDebt = 0; let ratePerSec = 0; let baseTime = Date.now(); async function pull() { try { const d = await fetch(API).then(r => r.json()); baseDebt = d.startingDebt; ratePerSec = d.ratePerSecond; baseTime = Date.now(); } catch (err) { console.error("Debt fetch failed:", err); } } pull(); setInterval(pull, REFRESH_MS); /* update 4×/sec (every 250ms) */ setInterval(() => { const now = Date.now(); const delta = (now - baseTime) / 1000; const debt = baseDebt + ratePerSec * delta; el.textContent = Math.round(debt).toLocaleString("en-US").replace(/,/g, " "); }, 250); } document.querySelectorAll("." + CLS).forEach(mount); })();