Subh775 commited on
Commit
f111bd5
·
1 Parent(s): 66c759f

export options, product manager mindset..

Browse files
backend/visualize.py CHANGED
@@ -169,7 +169,7 @@ def export_csv(raw_events, out_dir):
169
  writer.writerows(raw_events)
170
  return "raw_data.csv"
171
 
172
- def spatial_heatmap(heatmap_points, video_path, out_dir):
173
  if not heatmap_points or not video_path or not os.path.exists(video_path):
174
  return None
175
 
@@ -200,9 +200,21 @@ def spatial_heatmap(heatmap_points, video_path, out_dir):
200
  overlay = frame.copy()
201
  overlay[mask] = cv2.addWeighted(frame[mask], 0.3, heatmap[mask], 0.7, 0).squeeze()
202
 
203
- path = os.path.join(out_dir, "heatmap.png")
204
- cv2.imwrite(path, overlay)
205
- return "heatmap.png"
 
 
 
 
 
 
 
 
 
 
 
 
206
 
207
 
208
  def generate_all(data, model_classes, out_dir, report_format="png"):
@@ -230,7 +242,7 @@ def generate_all(data, model_classes, out_dir, report_format="png"):
230
  lambda: congestion_chart(data.get("congestion", []), out_dir, fmt),
231
  lambda: class_dominance(data["class_in"], data["class_out"], model_classes, out_dir, fmt),
232
  lambda: confidence_dist(data.get("conf_scores", []), out_dir, fmt),
233
- lambda: spatial_heatmap(heatmap_points, video_path, out_dir),
234
  lambda: export_csv(raw_events, out_dir),
235
  ]:
236
  name = fn()
 
169
  writer.writerows(raw_events)
170
  return "raw_data.csv"
171
 
172
+ def spatial_heatmap(heatmap_points, video_path, out_dir, fmt="png"):
173
  if not heatmap_points or not video_path or not os.path.exists(video_path):
174
  return None
175
 
 
200
  overlay = frame.copy()
201
  overlay[mask] = cv2.addWeighted(frame[mask], 0.3, heatmap[mask], 0.7, 0).squeeze()
202
 
203
+ if fmt == "pdf":
204
+ # Wrap OpenCV image in matplotlib for PDF export
205
+ overlay_rgb = cv2.cvtColor(overlay, cv2.COLOR_BGR2RGB)
206
+ fig, ax = plt.subplots(figsize=(10, 6), facecolor=C_BG)
207
+ ax.imshow(overlay_rgb)
208
+ ax.set_title("Spatial Density Heatmap", fontsize=13, fontweight="700", color=C_PRIMARY, pad=14)
209
+ ax.axis('off')
210
+ path = os.path.join(out_dir, "heatmap.pdf")
211
+ fig.savefig(path, dpi=200, bbox_inches="tight", facecolor=C_BG, edgecolor="none")
212
+ plt.close(fig)
213
+ return "heatmap.pdf"
214
+ else:
215
+ path = os.path.join(out_dir, "heatmap.png")
216
+ cv2.imwrite(path, overlay)
217
+ return "heatmap.png"
218
 
219
 
220
  def generate_all(data, model_classes, out_dir, report_format="png"):
 
242
  lambda: congestion_chart(data.get("congestion", []), out_dir, fmt),
243
  lambda: class_dominance(data["class_in"], data["class_out"], model_classes, out_dir, fmt),
244
  lambda: confidence_dist(data.get("conf_scores", []), out_dir, fmt),
245
+ lambda: spatial_heatmap(heatmap_points, video_path, out_dir, fmt),
246
  lambda: export_csv(raw_events, out_dir),
247
  ]:
248
  name = fn()
frontend/initial.html CHANGED
@@ -98,20 +98,15 @@
98
  Automated <br>Vision Intelligence
99
  </h1>
100
  <p class="font-bold mb-8 text-sm uppercase tracking-[0.2em] flex items-center" style="color:#a89f97">
101
- <span class="core-badge px-3 py-1 rounded-full text-[10px] mr-3">v1.0 CORE</span>
102
- Powered by Deep Learning
103
  </p>
104
  <ul class="space-y-4 xl:space-y-5 text-base xl:text-lg font-medium" style="color:#a89f97">
105
- <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Real-time
106
- spatial detection and tracking</li>
107
- <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Multi-class
108
- object categorization</li>
109
- <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Bidirectional
110
- movement analysis</li>
111
- <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> High-performance
112
- multi-object tracking</li>
113
- <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Intelligent
114
- processing optimization</li>
115
  </ul>
116
  </div>
117
 
 
98
  Automated <br>Vision Intelligence
99
  </h1>
100
  <p class="font-bold mb-8 text-sm uppercase tracking-[0.2em] flex items-center" style="color:#a89f97">
101
+ <span class="core-badge px-3 py-1 rounded-full text-[10px] mr-3">DEMO</span>
102
+ Cloud-Native Traffic Intelligence
103
  </p>
104
  <ul class="space-y-4 xl:space-y-5 text-base xl:text-lg font-medium" style="color:#a89f97">
105
+ <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> No new hardware &mdash; works with your existing cameras</li>
106
+ <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Granular vehicle counts across 14 Indian road classes</li>
107
+ <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Directional flow &amp; congestion insights in minutes</li>
108
+ <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Downloadable reports ready for planning &amp; compliance</li>
109
+ <li class="flex items-center"><i class="fa-solid fa-check mr-5 text-xl" style="color:#c89a6c"></i> Built for Indian roads &mdash; tested on real field conditions</li>
 
 
 
 
 
110
  </ul>
111
  </div>
112
 
frontend/vehicles.html CHANGED
@@ -363,10 +363,10 @@
363
 
364
  <!-- TAB: About -->
365
  <div id="tab-about" class="hidden flex-1 min-h-0 overflow-y-auto">
366
- <div class="bg-black border border-slate-800 rounded-xl p-12 shadow-2xl space-y-12 min-h-full flex flex-col justify-center">
 
367
  <div class="text-center">
368
- <p class="text-[13px] font-montserrat font-bold italic leading-relaxed max-w-3xl mx-auto"
369
- style="color:#a89f97">
370
  &ldquo;Traffic data has always existed on Indian roads &mdash; in the movement of every vehicle,
371
  every crossing, every congested junction.
372
  UrbanFlow is built to read that data precisely, and return it in a form that practitioners can
@@ -374,37 +374,43 @@
374
  </p>
375
  </div>
376
 
377
- <div class="space-y-6 leading-relaxed text-sm text-center max-w-5xl mx-auto" style="color:#a89f97">
378
  <p>
379
- UrbanFlow is a computer vision system purpose-built for traffic analysis on Indian roads.
380
- It processes video footage and returns structured outputs &mdash; vehicle counts by class,
381
- directional flow totals, and temporal traffic patterns &mdash; without requiring new hardware
382
- or on-site installation.
383
  </p>
384
  <p>
385
- The system is designed for practitioners working in traffic planning, urban mobility research,
386
- and transport infrastructure assessment. Footage is submitted, inference runs in the cloud,
387
- and results are returned as structured KPI outputs and downloadable reports.
 
388
  </p>
 
 
 
 
 
 
389
  <div class="grid grid-cols-3 gap-8 pt-8 text-left border-t border-slate-900 max-w-5xl mx-auto">
390
  <div class="space-y-4">
391
- <h4 class="font-bold text-[13px] uppercase tracking-wider" style="color:#f0ece6">What It Does</h4>
392
  <ul class="text-xs space-y-3 pl-1">
393
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
394
  style="color:#c89a6c"></i>
395
- <span>Vehicle detection across 14 classes</span>
396
  </li>
397
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
398
  style="color:#c89a6c"></i>
399
- <span>Bidirectional crossing count at defined boundary</span>
400
  </li>
401
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
402
  style="color:#c89a6c"></i>
403
- <span>Temporal flow analysis per second of footage</span>
404
  </li>
405
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
406
  style="color:#c89a6c"></i>
407
- <span>Annotated video export with spatial overlays</span>
408
  </li>
409
  </ul>
410
  </div>
@@ -413,44 +419,54 @@
413
  <ul class="text-xs space-y-3 pl-1">
414
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
415
  style="color:#c89a6c"></i>
416
- <span>Upload footage from any existing camera source</span>
417
  </li>
418
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
419
  style="color:#c89a6c"></i>
420
- <span>Define a spatial boundary to count vehicle crossings</span>
421
  </li>
422
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
423
  style="color:#c89a6c"></i>
424
- <span>Inference runs in the cloud &mdash; no on-site compute required</span>
425
  </li>
426
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
427
  style="color:#c89a6c"></i>
428
- <span>Download structured reports and annotated outputs</span>
429
  </li>
430
  </ul>
431
  </div>
432
  <div class="space-y-4">
433
- <h4 class="font-bold text-[13px] uppercase tracking-wider" style="color:#f0ece6">Where It's Going</h4>
434
  <ul class="text-xs space-y-3 pl-1" style="color:#a89f97">
435
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
436
  style="color:#8b5e3c"></i>
437
- <span>Cloud-native inference &mdash; horizontally scalable for concurrent institutional sessions</span>
438
  </li>
439
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
440
  style="color:#8b5e3c"></i>
441
- <span>Per-analysis and subscription pricing model for government and research clients</span>
442
  </li>
443
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
444
  style="color:#8b5e3c"></i>
445
- <span>REST API layer for direct integration with city ATCC and ITS platforms</span>
446
  </li>
447
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
448
  style="color:#8b5e3c"></i>
449
- <span>Production deployment pathway via institutional licensing and MoU agreements</span>
450
  </li>
451
  </ul>
452
  </div>
453
  </div>
 
 
 
 
 
 
 
 
 
 
454
  </div>
455
  </div>
456
  </div>
@@ -1491,6 +1507,15 @@
1491
  document.getElementById('proc-label').innerText = 'Complete';
1492
  document.getElementById('proc-bar').style.width = '100%';
1493
  document.getElementById('proc-pct').innerText = '100%';
 
 
 
 
 
 
 
 
 
1494
 
1495
  // Update Run Tab Badge
1496
  const badge = document.getElementById('results-status-badge');
@@ -1570,6 +1595,7 @@
1570
  'confidence_dist.pdf': { title: 'Confidence Curve', desc: 'Distribution of detection confidences' },
1571
  'annotated.mp4': { title: 'Annotated Video Export', desc: 'Rendered video with tracking overlays' },
1572
  'heatmap.png': { title: 'Spatial Density Heatmap', desc: 'Aggregated path utilization mapping' },
 
1573
  'raw_data.csv': { title: 'Raw Analytics Export', desc: 'Comma-separated values of all crossings' }
1574
  };
1575
 
@@ -1672,13 +1698,13 @@
1672
  <h2 style="color:#f0ece6;font-size:1.1rem;font-weight:700;margin-bottom:8px">Privacy Policy</h2>
1673
  <p style="color:#a89f97;font-size:11px;margin-bottom:20px">We keep this simple and honest.</p>
1674
  <ul style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc">
1675
- <li>Footage you submit is processed for detection and discarded immediately. Nothing is saved on our
1676
- servers.</li>
1677
- <li>We do not use your footage to train models, sell it, or share it with anyone.</li>
1678
- <li>If you export an annotated video, only you can save it (download) on your device. We never receive a
1679
- copy.</li>
1680
- <li>We do not use advertising cookies or behavioral tracking. We do not use cookies on this site.</li>
1681
- <li>For any queries contact: <strong style="color:#c89a6c">support@urbanflow.in</strong></li>
1682
  </ul>
1683
  <p style="color:#555;font-size:10px;margin-top:20px">&mdash; Team UrbanFlow</p>
1684
  </div>
@@ -1692,24 +1718,26 @@
1692
  <button onclick="closeAppModal('termsModal')"
1693
  style="position:absolute;top:16px;right:18px;background:none;border:none;color:#a89f97;font-size:18px;cursor:pointer">&times;</button>
1694
  <h2 style="color:#f0ece6;font-size:1.1rem;font-weight:700;margin-bottom:8px">Terms &amp; Conditions</h2>
1695
- <p style="color:#a89f97;font-size:11px;margin-bottom:20px">By using this platform, you agree to the
1696
  following terms.</p>
1697
  <p style="color:#c89a6c;font-size:11px;font-weight:700;margin-bottom:6px">You can:</p>
1698
  <ul
1699
  style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc;margin-bottom:16px">
1700
- <li>Use the platform to evaluate UrbanFlow&rsquo;s traffic detection capabilities.</li>
1701
- <li>Export annotated video outputs to your own device for personal review.</li>
1702
- <li>Contact us with feedback, suggestions, or questions.</li>
 
1703
  </ul>
1704
  <p style="color:#c89a6c;font-size:11px;font-weight:700;margin-bottom:6px">You cannot:</p>
1705
  <ul
1706
  style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc;margin-bottom:16px">
1707
- <li>Share, redistribute, or publicly post outputs without written permission.</li>
1708
- <li>Reverse-engineer or try to extract the model or attempt to extract its workflow under the hood.</li>
1709
- <li>Use the platform for unlawful or harmful purposes.</li>
 
1710
  </ul>
1711
- <p style="color:#a89f97;font-size:11px">The platform is provided as-is for demonstration purposes only.
1712
- Outputs are not intended for operational or safety-critical use.</p>
1713
  <p style="color:#555;font-size:10px;margin-top:16px">Questions: <strong
1714
  style="color:#c89a6c">support@urbanflow.in</strong></p>
1715
  </div>
 
363
 
364
  <!-- TAB: About -->
365
  <div id="tab-about" class="hidden flex-1 min-h-0 overflow-y-auto">
366
+ <div class="bg-black border border-slate-800 rounded-xl p-12 shadow-2xl space-y-8 min-h-full flex flex-col justify-center">
367
+ <div class="max-w-5xl mx-auto bg-white rounded-xl border border-slate-200 shadow-sm p-10 space-y-8">
368
  <div class="text-center">
369
+ <p class="text-sm italic font-bold leading-relaxed max-w-3xl mx-auto" style="color:#c89a6c;font-family:'Montserrat',sans-serif">
 
370
  &ldquo;Traffic data has always existed on Indian roads &mdash; in the movement of every vehicle,
371
  every crossing, every congested junction.
372
  UrbanFlow is built to read that data precisely, and return it in a form that practitioners can
 
374
  </p>
375
  </div>
376
 
377
+ <div class="space-y-5 leading-relaxed text-sm text-center" style="color:#a89f97">
378
  <p>
379
+ UrbanFlow is a cloud-based traffic intelligence platform that turns raw camera footage from Indian roads
380
+ into structured, actionable data &mdash; vehicle counts by class, directional flow totals, congestion patterns,
381
+ and downloadable reports &mdash; without requiring new hardware or on-site installation.
 
382
  </p>
383
  <p>
384
+ This is a <strong style="color:#f0ece6">public demo</strong>. It exists so that traffic engineers, urban planners,
385
+ transport authorities, and researchers can evaluate what UrbanFlow delivers &mdash; and tell us what they actually need.
386
+ We are in the <strong style="color:#f0ece6">requirements gathering phase</strong>, and your feedback directly shapes
387
+ what gets built for production.
388
  </p>
389
+ <p style="font-size:11px;color:#666">
390
+ The production system will support RTSP live-stream input, institutional dashboards, REST APIs, and advanced analytics.
391
+ This demo serves video upload only.
392
+ </p>
393
+ </div>
394
+
395
  <div class="grid grid-cols-3 gap-8 pt-8 text-left border-t border-slate-900 max-w-5xl mx-auto">
396
  <div class="space-y-4">
397
+ <h4 class="font-bold text-[13px] uppercase tracking-wider" style="color:#f0ece6">What You Get</h4>
398
  <ul class="text-xs space-y-3 pl-1">
399
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
400
  style="color:#c89a6c"></i>
401
+ <span>Class-wise vehicle counts across 14 Indian road categories</span>
402
  </li>
403
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
404
  style="color:#c89a6c"></i>
405
+ <span>Directional flow analysis &mdash; incoming vs outgoing at any boundary</span>
406
  </li>
407
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
408
  style="color:#c89a6c"></i>
409
+ <span>Congestion trends, peak detection, and temporal flow charts</span>
410
  </li>
411
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
412
  style="color:#c89a6c"></i>
413
+ <span>Downloadable reports (PDF/PNG) and annotated video exports</span>
414
  </li>
415
  </ul>
416
  </div>
 
419
  <ul class="text-xs space-y-3 pl-1">
420
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
421
  style="color:#c89a6c"></i>
422
+ <span>Upload footage from any existing camera &mdash; phone, CCTV, dashcam</span>
423
  </li>
424
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
425
  style="color:#c89a6c"></i>
426
+ <span>Draw a counting boundary on the first frame</span>
427
  </li>
428
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
429
  style="color:#c89a6c"></i>
430
+ <span>Inference runs in the cloud &mdash; no local GPU or setup needed</span>
431
  </li>
432
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
433
  style="color:#c89a6c"></i>
434
+ <span>Review live KPIs and download bundled artifacts when complete</span>
435
  </li>
436
  </ul>
437
  </div>
438
  <div class="space-y-4">
439
+ <h4 class="font-bold text-[13px] uppercase tracking-wider" style="color:#f0ece6">What's Coming</h4>
440
  <ul class="text-xs space-y-3 pl-1" style="color:#a89f97">
441
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
442
  style="color:#8b5e3c"></i>
443
+ <span>RTSP live-stream support &mdash; connect directly to IP cameras</span>
444
  </li>
445
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
446
  style="color:#8b5e3c"></i>
447
+ <span>REST API for integration with city ATCC and ITS platforms</span>
448
  </li>
449
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
450
  style="color:#8b5e3c"></i>
451
+ <span>Advanced analytics &mdash; speed estimation, helmet compliance, illegal parking</span>
452
  </li>
453
  <li class="flex items-start gap-3"><i class="fa-solid fa-circle text-[5px] mt-1.5"
454
  style="color:#8b5e3c"></i>
455
+ <span>Institutional deployment with dedicated SLAs and onboarding</span>
456
  </li>
457
  </ul>
458
  </div>
459
  </div>
460
+
461
+ <div class="text-center pt-6 border-t border-slate-900">
462
+ <p class="text-[11px]" style="color:#666">
463
+ We are an applied research team &mdash; using state-of-the-art detection models, fine-tuned on Indian traffic datasets,
464
+ to build systems that work in production. Not a black box. Not a benchmark demo. A working tool, built for real roads.
465
+ </p>
466
+ <p class="text-[10px] mt-3" style="color:#555">
467
+ Feedback, collaboration, or questions: <strong style="color:#c89a6c">support@urbanflow.in</strong>
468
+ </p>
469
+ </div>
470
  </div>
471
  </div>
472
  </div>
 
1507
  document.getElementById('proc-label').innerText = 'Complete';
1508
  document.getElementById('proc-bar').style.width = '100%';
1509
  document.getElementById('proc-pct').innerText = '100%';
1510
+ // Force frame counter to n/n
1511
+ const framesEl = document.getElementById('proc-frames');
1512
+ if (framesEl) {
1513
+ const parts = framesEl.innerText.split('/');
1514
+ if (parts.length === 2) {
1515
+ const total = parts[1].trim().replace(' Frames', '');
1516
+ framesEl.innerText = `${total} / ${total} Frames`;
1517
+ }
1518
+ }
1519
 
1520
  // Update Run Tab Badge
1521
  const badge = document.getElementById('results-status-badge');
 
1595
  'confidence_dist.pdf': { title: 'Confidence Curve', desc: 'Distribution of detection confidences' },
1596
  'annotated.mp4': { title: 'Annotated Video Export', desc: 'Rendered video with tracking overlays' },
1597
  'heatmap.png': { title: 'Spatial Density Heatmap', desc: 'Aggregated path utilization mapping' },
1598
+ 'heatmap.pdf': { title: 'Spatial Density Heatmap', desc: 'Aggregated path utilization mapping' },
1599
  'raw_data.csv': { title: 'Raw Analytics Export', desc: 'Comma-separated values of all crossings' }
1600
  };
1601
 
 
1698
  <h2 style="color:#f0ece6;font-size:1.1rem;font-weight:700;margin-bottom:8px">Privacy Policy</h2>
1699
  <p style="color:#a89f97;font-size:11px;margin-bottom:20px">We keep this simple and honest.</p>
1700
  <ul style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc">
1701
+ <li>This is a <strong style="color:#f0ece6">public demo</strong> hosted on Hugging Face Spaces. It is not a production service.</li>
1702
+ <li>Footage you submit is processed in real time and <strong style="color:#f0ece6">discarded immediately</strong> after the session ends. Nothing is stored on our servers.</li>
1703
+ <li>We do not use your footage to train models, sell it, or share it with any third party.</li>
1704
+ <li>Reports and annotated videos are generated temporarily and delivered to your device. We do not retain copies.</li>
1705
+ <li>We do not use advertising cookies, behavioral tracking, or analytics scripts on this platform.</li>
1706
+ <li>Your use of this demo may inform product requirements. No personally identifiable data is collected in that process.</li>
1707
+ <li>For any queries: <strong style="color:#c89a6c">support@urbanflow.in</strong></li>
1708
  </ul>
1709
  <p style="color:#555;font-size:10px;margin-top:20px">&mdash; Team UrbanFlow</p>
1710
  </div>
 
1718
  <button onclick="closeAppModal('termsModal')"
1719
  style="position:absolute;top:16px;right:18px;background:none;border:none;color:#a89f97;font-size:18px;cursor:pointer">&times;</button>
1720
  <h2 style="color:#f0ece6;font-size:1.1rem;font-weight:700;margin-bottom:8px">Terms &amp; Conditions</h2>
1721
+ <p style="color:#a89f97;font-size:11px;margin-bottom:20px">By using this demo platform, you agree to the
1722
  following terms.</p>
1723
  <p style="color:#c89a6c;font-size:11px;font-weight:700;margin-bottom:6px">You can:</p>
1724
  <ul
1725
  style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc;margin-bottom:16px">
1726
+ <li>Use this demo to evaluate UrbanFlow&rsquo;s traffic detection and analytics capabilities.</li>
1727
+ <li>Export reports, annotated video outputs, and data artifacts to your own device.</li>
1728
+ <li>Share feedback, feature requests, or questions with us at <strong style="color:#c89a6c">support@urbanflow.in</strong>.</li>
1729
+ <li>Reference this demo in research or internal evaluation, with proper attribution.</li>
1730
  </ul>
1731
  <p style="color:#c89a6c;font-size:11px;font-weight:700;margin-bottom:6px">You cannot:</p>
1732
  <ul
1733
  style="color:#a89f97;font-size:11px;line-height:1.9;padding-left:16px;list-style:disc;margin-bottom:16px">
1734
+ <li>Commercially redistribute outputs or present them as your own product&rsquo;s capability.</li>
1735
+ <li>Reverse-engineer, extract, or attempt to replicate the underlying model or processing pipeline.</li>
1736
+ <li>Use the platform for unlawful, harmful, or safety-critical operational purposes.</li>
1737
+ <li>Misrepresent demo outputs as certified or regulatory-grade traffic data.</li>
1738
  </ul>
1739
+ <p style="color:#a89f97;font-size:11px">This platform is provided as-is for <strong style="color:#f0ece6">demonstration and evaluation purposes only</strong>.
1740
+ Outputs are not intended for operational, regulatory, or safety-critical use. This is an early-stage research project, not a commercial product.</p>
1741
  <p style="color:#555;font-size:10px;margin-top:16px">Questions: <strong
1742
  style="color:#c89a6c">support@urbanflow.in</strong></p>
1743
  </div>