(function(){ 'use strict'; const SCT = { number(value, fallback = 0) { const n = Number.parseFloat(value); return Number.isFinite(n) ? n : fallback; }, positive(value, fallback = 0) { return Math.max(0, SCT.number(value, fallback)); }, integer(value, fallback = 0) { return Math.max(0, Math.floor(SCT.number(value, fallback))); }, money(value, digits = 2) { return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD', minimumFractionDigits: digits, maximumFractionDigits: digits }).format(Number.isFinite(value) ? value : 0); }, format(value, digits = 1) { return new Intl.NumberFormat('en-US', { minimumFractionDigits: 0, maximumFractionDigits: digits }).format(Number.isFinite(value) ? value : 0); }, plural(value, singular, plural) { return `${SCT.format(value, 0)} ${value === 1 ? singular : (plural || `${singular}s`)}`; }, showError(element, message) { if (!element) return; element.textContent = message || ''; element.hidden = !message; }, print() { window.print(); }, reset(form, callback) { if (form) form.reset(); if (typeof callback === 'function') callback(); }, setText(id, text) { const element = document.getElementById(id); if (element) element.textContent = text; }, setHTML(id, html) { const element = document.getElementById(id); if (element) element.innerHTML = html; } }; window.SCT = SCT; })();