/* ============================================================ NeuralScout — Feature Cards Each card is a small "camera monitor" with looping animation ============================================================ */ function useTick(ms = 50) { const [, setT] = React.useState(0); React.useEffect(() => { const id = setInterval(() => setT(t => t + 1), ms); return () => clearInterval(id); }, [ms]); return Date.now(); } const TRAFFIC_COUNTING_VIDEO = 'assets/videos/fish-shop-people-count.mp4'; /* ----------- 1. Traffic Counting ----------- */ function FeatTraffic() { return (
); } const DWELL_TIME_VIDEO = 'assets/videos/Jewelllery-Shop_Person_dwell-time.mp4'; /* ----------- 2. Dwell Time ----------- */ function FeatDwell() { return (
); } /* ----------- 3. Staff Time on Floor ----------- */ function FeatFace() { const now = useTick(); const t = (now % 6000) / 6000; const identified = t > 0.4; const names = ['Priya K.', 'Marcus T.', 'Ayaan S.']; const idx = Math.floor(now / 6000) % 3; return (
{/* Face silhouette */} {/* hair */} {/* Scan grid */} {!identified && (
)} {/* Landmarks */} {identified && <> } {/* Detection frame */}
{/* Label */} {identified && (
{names[idx]} · STAFF · 0.96
)}
); } const FEATURES_EXTRACTION_VIDEO = 'assets/videos/Highway_vehicle_Demographics.mp4'; /* ----------- 4. Features Extraction ----------- */ function FeatPlate() { return (
); } const DEMOGRAPHICS_VIDEO = 'assets/videos/Jewelllery Shop Person In New Video.mp4'; /* ----------- 5. Demographics ----------- */ function FeatDemo() { return (
); } const VLM_QUERY_VIDEO = 'assets/videos/construction-vlm-query.mp4'; /* ----------- 6. Custom AI Queries ----------- */ function FeatQuery() { return (
); } /* ----------- Shared card frame ----------- */ function FeatureMonitor({ title, code, desc, accent, children }) { return (
F_{code}
LIVE
{children} {/* Scanline */}

{title}

{desc}

); } const featStyles = { card: { background: 'var(--ns-bg-1)', border: '1px solid var(--ns-line)', borderRadius: 'var(--ns-r-3)', overflow: 'hidden', display: 'flex', flexDirection: 'column', }, cardHeader: { padding: '10px 14px', display: 'flex', justifyContent: 'space-between', alignItems: 'center', borderBottom: '1px solid var(--ns-line)', background: 'var(--ns-bg-2)', }, monitor: { position: 'relative', aspectRatio: '16/10', background: '#080b12', overflow: 'hidden', borderBottom: '1px solid var(--ns-line)', }, scene: { position: 'absolute', inset: 0 }, roadBg: { position: 'absolute', inset: 0, background: 'linear-gradient(180deg, #141a24 0%, #141a24 45%, #0c1018 46%, #0c1018 100%)', backgroundImage: ` linear-gradient(180deg, #141a24 0%, #141a24 45%, #0c1018 46%, #0c1018 100%), repeating-linear-gradient(90deg, transparent 0 40px, #2a3240 40px 60px)`, }, roomBg: { position: 'absolute', inset: 0, background: 'linear-gradient(180deg, #1a2030 0%, #0c1018 100%)', }, counter: { position: 'absolute', top: 10, right: 10, padding: '6px 10px', background: 'rgba(8,11,18,0.85)', border: '1px solid var(--ns-line-2)', display: 'flex', flexDirection: 'column', alignItems: 'flex-end', gap: 1, minWidth: 52, }, cardMeta: { padding: '18px 20px 22px', }, cardTitle: { fontFamily: 'var(--ns-display)', fontSize: 20, fontWeight: 500, margin: '0 0 6px 0', letterSpacing: '-0.01em', color: 'var(--ns-fg)', }, cardDesc: { fontSize: 13.5, lineHeight: 1.55, color: 'var(--ns-fg-dim)', margin: 0, textWrap: 'pretty', }, }; Object.assign(window, { FeatTraffic, FeatDwell, FeatFace, FeatPlate, FeatDemo, FeatQuery, FeatureMonitor, useTick, });