Spaces:
Running
Running
color and styling
Browse files- frontend/initial.html +41 -26
- frontend/vehicles.html +20 -15
frontend/initial.html
CHANGED
|
@@ -25,10 +25,19 @@
|
|
| 25 |
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Montserrat:wght@400;500;600;700;800;900&display=swap"
|
| 26 |
rel="stylesheet">
|
| 27 |
<style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
body {
|
| 29 |
font-family: 'Montserrat', sans-serif;
|
| 30 |
background-color: #000000;
|
| 31 |
-
color:
|
| 32 |
}
|
| 33 |
|
| 34 |
.fade-in {
|
|
@@ -49,22 +58,27 @@
|
|
| 49 |
|
| 50 |
/* Executive Overrides */
|
| 51 |
.traffic-dynamics-card {
|
| 52 |
-
background-color: #
|
| 53 |
-
border: 2px solid
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
}
|
| 55 |
|
| 56 |
#dropzone {
|
| 57 |
transition: all 0.2s ease;
|
|
|
|
| 58 |
}
|
| 59 |
|
| 60 |
#dropzone:hover {
|
| 61 |
-
border-color:
|
| 62 |
background-color: #0a0a0a !important;
|
| 63 |
}
|
| 64 |
|
| 65 |
.core-badge {
|
| 66 |
-
background-color:
|
| 67 |
-
color:
|
| 68 |
}
|
| 69 |
</style>
|
| 70 |
</head>
|
|
@@ -80,23 +94,23 @@
|
|
| 80 |
class="flex-1 w-full max-w-[90rem] mx-auto grid grid-cols-1 lg:grid-cols-12 gap-12 lg:gap-20 px-10 py-6 items-center z-10">
|
| 81 |
|
| 82 |
<div class="lg:col-span-7 flex flex-col justify-center xl:pl-10 pb-10 lg:pb-0">
|
| 83 |
-
<h1 class="text-5xl xl:text-[4.5rem] font-extrabold mb-4 leading-[1.1]
|
| 84 |
Automated <br>Vision Intelligence
|
| 85 |
</h1>
|
| 86 |
-
<p class="font-bold mb-8 text-sm uppercase tracking-[0.2em]
|
| 87 |
<span class="core-badge px-3 py-1 rounded-full text-[10px] mr-3">v1.0 CORE</span>
|
| 88 |
Powered by Deep Learning
|
| 89 |
</p>
|
| 90 |
-
<ul class="space-y-4 xl:space-y-5 text-base xl:text-lg font-medium
|
| 91 |
-
<li class="flex items-center"><i class="fa-solid fa-check
|
| 92 |
spatial detection and tracking</li>
|
| 93 |
-
<li class="flex items-center"><i class="fa-solid fa-check
|
| 94 |
object categorization</li>
|
| 95 |
-
<li class="flex items-center"><i class="fa-solid fa-check
|
| 96 |
movement analysis</li>
|
| 97 |
-
<li class="flex items-center"><i class="fa-solid fa-check
|
| 98 |
multi-object tracking</li>
|
| 99 |
-
<li class="flex items-center"><i class="fa-solid fa-check
|
| 100 |
processing optimization</li>
|
| 101 |
</ul>
|
| 102 |
</div>
|
|
@@ -112,13 +126,14 @@
|
|
| 112 |
|
| 113 |
<div class="flex justify-center w-full">
|
| 114 |
<div onclick="showStep('upload')"
|
| 115 |
-
class="group relative border-2
|
| 116 |
<div
|
| 117 |
-
class="absolute top-4 right-6
|
|
|
|
| 118 |
V1.0</div>
|
| 119 |
-
<i class="fa-solid fa-car-side text-4xl
|
| 120 |
-
<h3 class="font-bold text-lg mb-2 leading-tight
|
| 121 |
-
<p class="text-[10px]
|
| 122 |
vehicles in real-world environments.</p>
|
| 123 |
</div>
|
| 124 |
</div>
|
|
@@ -145,13 +160,13 @@
|
|
| 145 |
</div>
|
| 146 |
|
| 147 |
<div id="upload-progress-container" class="hidden mt-10 w-full">
|
| 148 |
-
<div class="flex justify-between text-[11px] font-bold uppercase tracking-widest mb-3
|
| 149 |
<span id="upload-text">Uploading...</span>
|
| 150 |
<span id="upload-percentage">0%</span>
|
| 151 |
</div>
|
| 152 |
<div class="w-full h-1 bg-neutral-900 rounded-full overflow-hidden">
|
| 153 |
<div id="upload-bar"
|
| 154 |
-
class="h-full
|
| 155 |
</div>
|
| 156 |
</div>
|
| 157 |
</div>
|
|
@@ -176,9 +191,9 @@
|
|
| 176 |
|
| 177 |
<div class="flex space-x-3">
|
| 178 |
<button onclick="resetCanvas()"
|
| 179 |
-
class="w-1/3 py-3.5
|
| 180 |
<button id="btn-proceed" onclick="startRun()"
|
| 181 |
-
class="w-2/3 py-3.5
|
| 182 |
→</button>
|
| 183 |
</div>
|
| 184 |
</div>
|
|
@@ -330,9 +345,9 @@
|
|
| 330 |
function drawDot(x, y) {
|
| 331 |
ctx.beginPath();
|
| 332 |
ctx.arc(x, y, 5, 0, Math.PI * 2);
|
| 333 |
-
ctx.fillStyle = '#
|
| 334 |
ctx.fill();
|
| 335 |
-
ctx.strokeStyle = '#
|
| 336 |
ctx.lineWidth = 2;
|
| 337 |
ctx.stroke();
|
| 338 |
}
|
|
@@ -341,7 +356,7 @@
|
|
| 341 |
ctx.beginPath();
|
| 342 |
ctx.moveTo(points[0].cx, points[0].cy);
|
| 343 |
ctx.lineTo(points[1].cx, points[1].cy);
|
| 344 |
-
ctx.strokeStyle = '#
|
| 345 |
ctx.lineWidth = 3;
|
| 346 |
ctx.stroke();
|
| 347 |
}
|
|
|
|
| 25 |
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Montserrat:wght@400;500;600;700;800;900&display=swap"
|
| 26 |
rel="stylesheet">
|
| 27 |
<style>
|
| 28 |
+
:root {
|
| 29 |
+
--cocoa: #8b5e3c;
|
| 30 |
+
--cocoa-l: #c89a6c;
|
| 31 |
+
--cocoa-xl: #d4b08a;
|
| 32 |
+
--t1: #f0ece6;
|
| 33 |
+
--t2: #a89f97;
|
| 34 |
+
--border: #2a2a2a;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
body {
|
| 38 |
font-family: 'Montserrat', sans-serif;
|
| 39 |
background-color: #000000;
|
| 40 |
+
color: var(--t1);
|
| 41 |
}
|
| 42 |
|
| 43 |
.fade-in {
|
|
|
|
| 58 |
|
| 59 |
/* Executive Overrides */
|
| 60 |
.traffic-dynamics-card {
|
| 61 |
+
background-color: #0a0a0a !important;
|
| 62 |
+
border: 2px solid var(--cocoa) !important;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
.traffic-dynamics-card:hover {
|
| 66 |
+
border-color: var(--cocoa-l) !important;
|
| 67 |
}
|
| 68 |
|
| 69 |
#dropzone {
|
| 70 |
transition: all 0.2s ease;
|
| 71 |
+
border-color: #2a2a2a;
|
| 72 |
}
|
| 73 |
|
| 74 |
#dropzone:hover {
|
| 75 |
+
border-color: var(--cocoa-l) !important;
|
| 76 |
background-color: #0a0a0a !important;
|
| 77 |
}
|
| 78 |
|
| 79 |
.core-badge {
|
| 80 |
+
background-color: var(--cocoa) !important;
|
| 81 |
+
color: var(--t1) !important;
|
| 82 |
}
|
| 83 |
</style>
|
| 84 |
</head>
|
|
|
|
| 94 |
class="flex-1 w-full max-w-[90rem] mx-auto grid grid-cols-1 lg:grid-cols-12 gap-12 lg:gap-20 px-10 py-6 items-center z-10">
|
| 95 |
|
| 96 |
<div class="lg:col-span-7 flex flex-col justify-center xl:pl-10 pb-10 lg:pb-0">
|
| 97 |
+
<h1 class="text-5xl xl:text-[4.5rem] font-extrabold mb-4 leading-[1.1] tracking-tight" style="color:#f0ece6">
|
| 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>
|
|
|
|
| 126 |
|
| 127 |
<div class="flex justify-center w-full">
|
| 128 |
<div onclick="showStep('upload')"
|
| 129 |
+
class="group relative border-2 rounded-[2rem] p-8 cursor-pointer hover:-translate-y-1 transition-all duration-300 text-center max-w-sm w-full traffic-dynamics-card">
|
| 130 |
<div
|
| 131 |
+
class="absolute top-4 right-6 text-[9px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider"
|
| 132 |
+
style="background:#c89a6c;color:#000">
|
| 133 |
V1.0</div>
|
| 134 |
+
<i class="fa-solid fa-car-side text-4xl mb-4 block mx-auto" style="color:#c89a6c"></i>
|
| 135 |
+
<h3 class="font-bold text-lg mb-2 leading-tight" style="color:#f0ece6">Traffic <br>Dynamics</h3>
|
| 136 |
+
<p class="text-[10px] font-medium leading-relaxed" style="color:#a89f97">Detect, track, and analyze
|
| 137 |
vehicles in real-world environments.</p>
|
| 138 |
</div>
|
| 139 |
</div>
|
|
|
|
| 160 |
</div>
|
| 161 |
|
| 162 |
<div id="upload-progress-container" class="hidden mt-10 w-full">
|
| 163 |
+
<div class="flex justify-between text-[11px] font-bold uppercase tracking-widest mb-3" style="color:#f0ece6">
|
| 164 |
<span id="upload-text">Uploading...</span>
|
| 165 |
<span id="upload-percentage">0%</span>
|
| 166 |
</div>
|
| 167 |
<div class="w-full h-1 bg-neutral-900 rounded-full overflow-hidden">
|
| 168 |
<div id="upload-bar"
|
| 169 |
+
class="h-full w-0 transition-all duration-75 ease-linear rounded-full" style="background:#c89a6c"></div>
|
| 170 |
</div>
|
| 171 |
</div>
|
| 172 |
</div>
|
|
|
|
| 191 |
|
| 192 |
<div class="flex space-x-3">
|
| 193 |
<button onclick="resetCanvas()"
|
| 194 |
+
class="w-1/3 py-3.5 rounded-full font-bold transition-all text-sm" style="background:#111;border:1px solid #2a2a2a;color:#a89f97">Reset</button>
|
| 195 |
<button id="btn-proceed" onclick="startRun()"
|
| 196 |
+
class="w-2/3 py-3.5 rounded-full font-bold transition-all text-center text-sm" style="background:#c89a6c;color:#000">Continue
|
| 197 |
→</button>
|
| 198 |
</div>
|
| 199 |
</div>
|
|
|
|
| 345 |
function drawDot(x, y) {
|
| 346 |
ctx.beginPath();
|
| 347 |
ctx.arc(x, y, 5, 0, Math.PI * 2);
|
| 348 |
+
ctx.fillStyle = '#c89a6c';
|
| 349 |
ctx.fill();
|
| 350 |
+
ctx.strokeStyle = '#f0ece6';
|
| 351 |
ctx.lineWidth = 2;
|
| 352 |
ctx.stroke();
|
| 353 |
}
|
|
|
|
| 356 |
ctx.beginPath();
|
| 357 |
ctx.moveTo(points[0].cx, points[0].cy);
|
| 358 |
ctx.lineTo(points[1].cx, points[1].cy);
|
| 359 |
+
ctx.strokeStyle = '#c89a6c';
|
| 360 |
ctx.lineWidth = 3;
|
| 361 |
ctx.stroke();
|
| 362 |
}
|
frontend/vehicles.html
CHANGED
|
@@ -17,12 +17,15 @@
|
|
| 17 |
:root {
|
| 18 |
--bg-primary: #000000;
|
| 19 |
--bg-secondary: #000000;
|
| 20 |
-
--text-primary: #
|
| 21 |
-
--text-secondary: #
|
| 22 |
-
--border-color: #
|
| 23 |
--sidebar-bg: #000000;
|
| 24 |
--card-bg: #0a0a0a;
|
| 25 |
--input-bg: #111111;
|
|
|
|
|
|
|
|
|
|
| 26 |
}
|
| 27 |
|
| 28 |
body {
|
|
@@ -99,16 +102,16 @@
|
|
| 99 |
/* Nav states */
|
| 100 |
.nav-item-active {
|
| 101 |
background-color: #111111 !important;
|
| 102 |
-
color:
|
| 103 |
-
border-left: 2px solid
|
| 104 |
}
|
| 105 |
|
| 106 |
.nav-item-inactive {
|
| 107 |
-
color: #
|
| 108 |
}
|
| 109 |
|
| 110 |
.nav-item-inactive:hover {
|
| 111 |
-
color:
|
| 112 |
background-color: #050505 !important;
|
| 113 |
}
|
| 114 |
|
|
@@ -167,14 +170,14 @@
|
|
| 167 |
}
|
| 168 |
|
| 169 |
.toggle-track.active {
|
| 170 |
-
background:
|
| 171 |
}
|
| 172 |
|
| 173 |
.toggle-thumb {
|
| 174 |
width: 14px;
|
| 175 |
height: 14px;
|
| 176 |
border-radius: 50%;
|
| 177 |
-
background: #
|
| 178 |
position: absolute;
|
| 179 |
top: 2px;
|
| 180 |
left: 2px;
|
|
@@ -246,7 +249,7 @@
|
|
| 246 |
}
|
| 247 |
|
| 248 |
#proc-bar {
|
| 249 |
-
background-color:
|
| 250 |
}
|
| 251 |
|
| 252 |
#proc-label {
|
|
@@ -291,9 +294,9 @@
|
|
| 291 |
}
|
| 292 |
|
| 293 |
.chip.active {
|
| 294 |
-
background:
|
| 295 |
color: #000000;
|
| 296 |
-
border-color:
|
| 297 |
}
|
| 298 |
|
| 299 |
.chip.frozen {
|
|
@@ -309,7 +312,7 @@
|
|
| 309 |
}
|
| 310 |
|
| 311 |
.chip.active:hover {
|
| 312 |
-
background:
|
| 313 |
}
|
| 314 |
|
| 315 |
.chip i {
|
|
@@ -749,7 +752,8 @@
|
|
| 749 |
<!-- Start Button -->
|
| 750 |
<div class="col-span-3 pb-4" id="settings-start-wrap">
|
| 751 |
<button id="btn-start-processing" onclick="startProcessingFromSettings()"
|
| 752 |
-
class="w-full py-4
|
|
|
|
| 753 |
<span>Process <i class="fa-solid fa-arrow-right ml-2 text-[10px]"></i></span>
|
| 754 |
</button>
|
| 755 |
</div>
|
|
@@ -757,7 +761,8 @@
|
|
| 757 |
<!-- New Analysis Button (visible only after processing completes) -->
|
| 758 |
<div class="col-span-3 pb-4 hidden" id="new-analysis-wrap">
|
| 759 |
<button onclick="startNewAnalysis()"
|
| 760 |
-
class="w-full py-4
|
|
|
|
| 761 |
<i class="fa-solid fa-rotate-left text-xs"></i>
|
| 762 |
<span>New Analysis</span>
|
| 763 |
</button>
|
|
|
|
| 17 |
:root {
|
| 18 |
--bg-primary: #000000;
|
| 19 |
--bg-secondary: #000000;
|
| 20 |
+
--text-primary: #f0ece6;
|
| 21 |
+
--text-secondary: #a89f97;
|
| 22 |
+
--border-color: #2a2a2a;
|
| 23 |
--sidebar-bg: #000000;
|
| 24 |
--card-bg: #0a0a0a;
|
| 25 |
--input-bg: #111111;
|
| 26 |
+
--cocoa: #8b5e3c;
|
| 27 |
+
--cocoa-l: #c89a6c;
|
| 28 |
+
--cocoa-xl: #d4b08a;
|
| 29 |
}
|
| 30 |
|
| 31 |
body {
|
|
|
|
| 102 |
/* Nav states */
|
| 103 |
.nav-item-active {
|
| 104 |
background-color: #111111 !important;
|
| 105 |
+
color: var(--cocoa-xl) !important;
|
| 106 |
+
border-left: 2px solid var(--cocoa-l) !important;
|
| 107 |
}
|
| 108 |
|
| 109 |
.nav-item-inactive {
|
| 110 |
+
color: #555555 !important;
|
| 111 |
}
|
| 112 |
|
| 113 |
.nav-item-inactive:hover {
|
| 114 |
+
color: var(--text-primary) !important;
|
| 115 |
background-color: #050505 !important;
|
| 116 |
}
|
| 117 |
|
|
|
|
| 170 |
}
|
| 171 |
|
| 172 |
.toggle-track.active {
|
| 173 |
+
background: var(--cocoa-l);
|
| 174 |
}
|
| 175 |
|
| 176 |
.toggle-thumb {
|
| 177 |
width: 14px;
|
| 178 |
height: 14px;
|
| 179 |
border-radius: 50%;
|
| 180 |
+
background: #555555;
|
| 181 |
position: absolute;
|
| 182 |
top: 2px;
|
| 183 |
left: 2px;
|
|
|
|
| 249 |
}
|
| 250 |
|
| 251 |
#proc-bar {
|
| 252 |
+
background-color: var(--cocoa-l) !important;
|
| 253 |
}
|
| 254 |
|
| 255 |
#proc-label {
|
|
|
|
| 294 |
}
|
| 295 |
|
| 296 |
.chip.active {
|
| 297 |
+
background: var(--cocoa-l);
|
| 298 |
color: #000000;
|
| 299 |
+
border-color: var(--cocoa-l);
|
| 300 |
}
|
| 301 |
|
| 302 |
.chip.frozen {
|
|
|
|
| 312 |
}
|
| 313 |
|
| 314 |
.chip.active:hover {
|
| 315 |
+
background: var(--cocoa-xl);
|
| 316 |
}
|
| 317 |
|
| 318 |
.chip i {
|
|
|
|
| 752 |
<!-- Start Button -->
|
| 753 |
<div class="col-span-3 pb-4" id="settings-start-wrap">
|
| 754 |
<button id="btn-start-processing" onclick="startProcessingFromSettings()"
|
| 755 |
+
class="w-full py-4 font-bold text-sm rounded-full transition flex items-center justify-center gap-2 shadow-lg"
|
| 756 |
+
style="background:#0a0a0a;border:1px solid var(--cocoa);color:var(--cocoa-l)">
|
| 757 |
<span>Process <i class="fa-solid fa-arrow-right ml-2 text-[10px]"></i></span>
|
| 758 |
</button>
|
| 759 |
</div>
|
|
|
|
| 761 |
<!-- New Analysis Button (visible only after processing completes) -->
|
| 762 |
<div class="col-span-3 pb-4 hidden" id="new-analysis-wrap">
|
| 763 |
<button onclick="startNewAnalysis()"
|
| 764 |
+
class="w-full py-4 font-bold text-sm rounded-full transition flex items-center justify-center gap-2"
|
| 765 |
+
style="background:var(--cocoa-l);color:#000">
|
| 766 |
<i class="fa-solid fa-rotate-left text-xs"></i>
|
| 767 |
<span>New Analysis</span>
|
| 768 |
</button>
|