akhaliq HF Staff commited on
Commit
33f3a57
·
1 Parent(s): 9f70fc7

fix: clean up duplicate closing tags at end of showcase container in index.html

Browse files
Files changed (1) hide show
  1. index.html +140 -142
index.html CHANGED
@@ -201,7 +201,7 @@
201
  </span>
202
  </a>
203
 
204
- <span class="px-3 py-1 text-xs font-semibold rounded bg-emerald-500/10 text-nvidia-brand border border-nvidia-brand/20 flex items-center gap-1.5 font-mono">
205
  <span class="h-1.5 w-1.5 rounded-full bg-nvidia-brand animate-pulse"></span>
206
  ZeroGPU Server
207
  </span>
@@ -211,128 +211,203 @@
211
  <!-- MAIN MINIMAL LAYOUT CONTAINER -->
212
  <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 pt-8 lg:pt-10 space-y-8">
213
 
214
- <div class="grid grid-cols-1 lg:grid-cols-12 gap-8 items-start">
 
215
 
216
- <!-- LEFT PANEL: Brand Info & Primary Controls (Col Span: 5) -->
217
- <section class="lg:col-span-5 space-y-6">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
218
 
219
- <!-- Main SAM 3 style Intro Headline -->
220
- <div class="space-y-4 pt-2">
221
  <span class="text-[9px] font-bold text-nvidia-brand uppercase tracking-widest block font-mono">AI Research from NVIDIA</span>
222
- <h1 class="font-outfit text-4xl sm:text-5xl font-extrabold tracking-tight text-white leading-none">
223
  Locate<span class="text-nvidia-brand font-light">Anything</span>
224
  </h1>
225
- <p class="text-sm text-slate-400 max-w-md font-medium leading-relaxed">
226
- An advanced 3B vision-language model. Locate any object, UI target, or text in images and videos with natural language—powered by ZeroGPU.
227
  </p>
228
  </div>
229
 
230
- <!-- Primary Setup Card -->
231
- <div class="glass-panel rounded-2xl p-5 space-y-5">
232
- <div class="grid grid-cols-2 gap-4">
233
 
234
  <!-- Media Type toggle selection -->
235
- <div class="space-y-1.5">
236
- <label class="text-[9px] font-bold text-slate-400 uppercase tracking-widest">Media Type</label>
237
- <div class="grid grid-cols-2 gap-1 bg-black/40 p-1 rounded-xl border border-white/5 text-center">
238
- <button id="media-type-image" class="py-1.5 rounded-lg font-semibold text-[10px] transition-all bg-nvidia-brand text-black font-outfit font-black shadow shadow-nvidia-brand/10">
239
  Image
240
  </button>
241
- <button id="media-type-video" class="py-1.5 rounded-lg font-semibold text-[10px] text-slate-400 hover:text-slate-200 transition-all">
242
  Video
243
  </button>
244
  </div>
245
  </div>
246
 
247
  <!-- Task Selector -->
248
- <div class="space-y-1.5">
249
- <label for="task-type" class="text-[9px] font-bold text-slate-400 uppercase tracking-widest">Task Type</label>
250
- <select id="task-type" class="w-full bg-black/40 border border-white/5 rounded-xl px-2.5 py-2 text-[10px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-semibold">
251
- <option value="Detection">Detection - Locate all matched</option>
252
- <option value="Grounding">Grounding - Match expression</option>
253
- <option value="OCR">OCR - Extract text boxes</option>
254
- <option value="GUI">GUI - Ground GUI targets</option>
255
- <option value="Pointing">Pointing - Extract points</option>
256
  </select>
257
  </div>
258
 
259
  </div>
260
 
261
- <!-- Run CTA Button -->
262
- <button id="run-btn" class="pill-btn-green w-full py-3.5 px-6 rounded-full text-black font-extrabold text-sm flex items-center justify-center gap-2 select-none">
263
- <span id="btn-icon">🧠</span>
264
- <span id="btn-text">Run Inference</span>
265
- </button>
266
-
267
- <!-- Advanced parameters sliders (Collapsible details) -->
268
- <details class="group border-t border-white/5 pt-4">
269
- <summary class="list-none flex justify-between items-center cursor-pointer select-none text-[10px] font-bold text-slate-400 tracking-wider uppercase hover:text-slate-200 transition-colors">
270
  <span>⚙️ Advanced parameters</span>
271
- <svg class="h-3.5 w-3.5 transform group-open:rotate-180 transition-transform text-slate-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
272
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
273
  </svg>
274
  </summary>
275
- <div class="space-y-4 pt-4">
276
 
277
  <!-- Inference Mode Selection -->
278
- <div class="space-y-1.5">
279
- <label for="inference-mode" class="text-[9px] font-bold text-slate-400 uppercase tracking-widest">Inference Mode</label>
280
- <select id="inference-mode" class="w-full bg-black/40 border border-white/5 rounded-xl px-2.5 py-1.5 text-[10px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200">
281
- <option value="hybrid">Hybrid - Speed & Quality</option>
282
- <option value="fast">Fast - PBD Parallel</option>
283
- <option value="slow">Slow - AR Sequential</option>
284
  </select>
285
  </div>
286
 
287
  <!-- Short side resize cap -->
288
- <div class="space-y-1.5">
289
- <label for="short-size" class="text-[9px] font-bold text-slate-400 uppercase tracking-widest">Resize Cap (px)</label>
290
- <input type="number" id="short-size" placeholder="Auto-Cap (1024)" class="w-full bg-black/40 border border-white/5 rounded-xl px-2.5 py-1.5 text-[10px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-mono">
291
  </div>
292
 
293
  <!-- Temp -->
294
- <div class="space-y-1.5">
295
- <div class="flex justify-between text-[9px] uppercase font-bold text-slate-400 tracking-wider">
296
  <span>Temperature</span>
297
  <span id="temp-val" class="font-mono text-nvidia-brand">0.7</span>
298
  </div>
299
- <input type="range" id="temp" min="0.1" max="2.0" step="0.1" value="0.7" class="w-full h-1 bg-black rounded-lg appearance-none cursor-pointer accent-nvidia-brand">
300
  </div>
301
 
302
  <!-- Top P -->
303
- <div class="space-y-1.5">
304
- <div class="flex justify-between text-[9px] uppercase font-bold text-slate-400 tracking-wider">
305
  <span>Top P</span>
306
  <span id="topp-val" class="font-mono text-nvidia-brand">0.9</span>
307
  </div>
308
- <input type="range" id="topp" min="0.05" max="1.0" step="0.05" value="0.9" class="w-full h-1 bg-black rounded-lg appearance-none cursor-pointer accent-nvidia-brand">
309
  </div>
310
 
311
  <!-- Top K -->
312
- <div class="space-y-1.5">
313
- <div class="flex justify-between text-[9px] uppercase font-bold text-slate-400 tracking-wider">
314
  <span>Top K</span>
315
  <span id="topk-val" class="font-mono text-nvidia-brand">20</span>
316
  </div>
317
- <input type="range" id="topk" min="1" max="100" step="1" value="20" class="w-full h-1 bg-black rounded-lg appearance-none cursor-pointer accent-nvidia-brand">
318
  </div>
319
 
320
  <!-- Video Frames (Only displayed for Video mode) -->
321
- <div id="video-frames-wrapper" class="space-y-1.5 opacity-50 pointer-events-none transition-opacity duration-300">
322
- <div class="flex justify-between text-[9px] uppercase font-bold text-slate-400 tracking-wider">
323
  <span>Max Video Frames</span>
324
  <span id="frames-val" class="font-mono text-nvidia-brand">4</span>
325
  </div>
326
- <input type="range" id="max-frames" min="1" max="10" step="1" value="4" class="w-full h-1 bg-black rounded-lg appearance-none cursor-pointer accent-nvidia-brand" disabled>
327
  </div>
328
 
329
  </div>
330
  </details>
331
  </div>
332
 
333
- <!-- Example Library Section (SAM 3 Grid Style) -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
334
  <div class="glass-panel rounded-2xl p-5 space-y-4">
335
- <span class="text-[9px] font-bold text-slate-400 uppercase tracking-widest block">🖼️ Interactive Quick Sandbox</span>
336
  <div class="grid grid-cols-4 gap-3">
337
 
338
  <!-- Card 1 -->
@@ -366,93 +441,16 @@
366
  <div class="glass-panel rounded-2xl p-4 text-[10px] text-slate-500 font-mono flex justify-between items-center select-none bg-black/40">
367
  <span class="truncate block">compiled: <span id="raw-prompt-preview" class="text-slate-400"></span></span>
368
  </div>
 
369
 
370
- </section>
371
-
372
- <!-- RIGHT PANEL: Full Showcase Media Sandbox (Col Span: 7) -->
373
- <section class="lg:col-span-7 space-y-6">
374
-
375
- <!-- GTC Polygon Frame Workspace -->
376
- <div class="gtc-polygon-wrapper w-full aspect-video min-h-[360px] sm:min-h-[440px] relative">
377
- <div class="gtc-neon-border"></div>
378
- <div class="gtc-inner-box p-0 flex flex-col relative"> <!-- Full-bleed inner box -->
379
-
380
- <!-- Floating Glassmorphic Workspace Status -->
381
- <div class="absolute bottom-4 right-4 z-30 bg-black/60 backdrop-blur px-2.5 py-1 rounded-lg border border-white/10 text-[9px] text-slate-400 font-mono select-none pointer-events-none">
382
- status: <span id="workspace-status" class="text-slate-200 font-semibold">No Media Loaded</span>
383
- </div>
384
-
385
- <!-- Dynamic Canvas Box Inside Polygon Frame -->
386
- <div class="flex-1 relative flex items-center justify-center overflow-hidden min-h-0 z-20">
387
-
388
- <!-- 1. Floating Glassmorphic Categories Search Bar Overlay (SAM 3 Keynote Feature) -->
389
- <div class="absolute top-5 left-4 right-4 z-30 flex justify-center pointer-events-none">
390
- <div class="sam-input-bar rounded-xl px-4 py-2.5 flex items-center gap-2.5 w-full max-w-md pointer-events-auto">
391
- <svg class="h-4.5 w-4.5 text-nvidia-brand" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
392
- <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
393
- </svg>
394
- <input type="text" id="categories" value="car, bus, person, potted plant" placeholder="Describe objects to locate (e.g. car, person)..." class="bg-transparent border-none outline-none focus:outline-none w-full text-slate-100 placeholder-slate-600 font-semibold text-xs">
395
- <button id="clear-search-btn" class="text-slate-500 hover:text-white transition-colors p-0.5 rounded-full hover:bg-white/5">
396
- <svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
397
- <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
398
- </svg>
399
- </button>
400
- </div>
401
- </div>
402
-
403
- <!-- Input Media Upload Zone (Initially shown if no media loaded) -->
404
- <div id="drop-zone" class="absolute inset-0 border-none rounded-none bg-black/40 flex flex-col items-center justify-center p-4 text-center cursor-pointer transition-all">
405
- <div id="upload-prompt" class="space-y-3 pt-8"> <!-- Offset for search bar -->
406
- <div class="inline-flex h-11 w-11 rounded-full bg-white/5 items-center justify-center text-slate-400">
407
- <svg class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.2">
408
- <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" />
409
- </svg>
410
- </div>
411
- <div>
412
- <p class="text-xs font-bold text-slate-200">Drag & drop your file here</p>
413
- <p class="text-[10px] text-slate-500 mt-1">or click to browse local folders</p>
414
- </div>
415
- </div>
416
-
417
- <!-- Dynamic Preview Media Rendering inside Hexagon Frame -->
418
- <img id="preview-image" src="" alt="Input Preview" class="hidden max-h-full max-w-full rounded-lg object-contain shadow-lg">
419
- <video id="preview-video" src="" controls class="hidden max-h-full max-w-full rounded-lg shadow-lg"></video>
420
-
421
- <!-- File Upload Trigger -->
422
- <input type="file" id="media-file-input" accept="image/*,video/*" class="absolute inset-0 opacity-0 cursor-pointer">
423
- </div>
424
-
425
- <!-- Inference Output Zone (Takes over when result loaded) -->
426
- <div class="absolute inset-0 pointer-events-none flex items-center justify-center">
427
- <img id="output-image" src="" alt="Inference Output" class="hidden max-h-full max-w-full rounded-lg object-contain shadow-lg pointer-events-auto">
428
- <video id="output-video" src="" controls class="hidden max-h-full max-w-full rounded-lg shadow-lg pointer-events-auto"></video>
429
- </div>
430
-
431
- <!-- Processing Overlays -->
432
- <div id="processing-overlay" class="absolute inset-0 bg-black/85 backdrop-blur-sm hidden flex-col items-center justify-center gap-4 z-50">
433
- <div class="flex gap-1.5">
434
- <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-nvidia-brand" style="animation-delay: 0s;"></span>
435
- <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-400" style="animation-delay: 0.2s;"></span>
436
- <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-300" style="animation-delay: 0.4s;"></span>
437
- </div>
438
- <div class="text-center space-y-1">
439
- <p id="processing-status" class="text-[11px] font-bold tracking-widest text-slate-200 uppercase">Executing Model...</p>
440
- <p class="text-[9px] text-slate-500 uppercase tracking-wider font-mono">Gradio Queue Engine Active</p>
441
- </div>
442
- </div>
443
-
444
- </div>
445
-
446
- </div>
447
- </div>
448
-
449
- <!-- PERFORMANCE ANALYTICS & LOG CONSOLE -->
450
  <div class="glass-panel rounded-2xl p-5 space-y-4">
451
  <div class="grid grid-cols-1 sm:grid-cols-12 gap-4 items-stretch">
452
 
453
  <!-- Performance Statistics Metrics Console (Grid: 5) -->
454
  <div class="sm:col-span-5 bg-black/60 rounded-xl p-4 border border-white/5 font-mono text-[10px] text-slate-300 space-y-2 leading-normal">
455
- <div class="text-nvidia-brand font-bold border-b border-white/5 pb-1 mb-1.5 uppercase tracking-widest text-[9px]">📊 Metrics Log</div>
456
  <div class="flex justify-between"><span class="text-slate-500">Status:</span> <span id="meta-status" class="text-emerald-500 font-semibold">Idle</span></div>
457
  <div class="flex justify-between"><span class="text-slate-500">Tokens/Frames:</span> <span id="meta-tokens">-</span></div>
458
  <div class="flex justify-between"><span class="text-slate-500">Detections:</span> <span id="meta-boxes">-</span></div>
@@ -476,10 +474,10 @@
476
  <!-- Optional dynamic trace wrapper -->
477
  <div id="rich-trace-log" class="hidden border-t border-white/5 pt-3"></div>
478
  </div>
479
-
480
- </section>
481
 
482
  </div>
 
483
  </main>
484
 
485
  <!-- Gradio client connection & app runtime logic -->
 
201
  </span>
202
  </a>
203
 
204
+ <span class="px-3 py-1 text-xs font-semibold rounded bg-nvidia-brand/10 text-nvidia-brand border border-nvidia-brand/20 flex items-center gap-1.5 font-mono">
205
  <span class="h-1.5 w-1.5 rounded-full bg-nvidia-brand animate-pulse"></span>
206
  ZeroGPU Server
207
  </span>
 
211
  <!-- MAIN MINIMAL LAYOUT CONTAINER -->
212
  <main class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 pt-8 lg:pt-10 space-y-8">
213
 
214
+ <!-- Giant Showcase Container (SAM 3 Full-Bleed Style) -->
215
+ <div class="relative w-full rounded-[32px] overflow-hidden border border-white/5 bg-[#080a0e] shadow-2xl h-[580px] lg:h-[640px] flex select-none">
216
 
217
+ <!-- 1. Background Media Canvas (Coverage Layer) -->
218
+ <div class="absolute inset-0 z-0 flex items-center justify-center bg-black/40">
219
+ <!-- Drop Zone (Initially shown) -->
220
+ <div id="drop-zone" class="absolute inset-0 border-none rounded-none bg-transparent flex flex-col items-center justify-center p-4 text-center cursor-pointer transition-all z-10">
221
+ <div id="upload-prompt" class="space-y-3 opacity-60 hover:opacity-100 transition-opacity">
222
+ <div class="inline-flex h-12 w-12 rounded-full bg-white/5 items-center justify-center text-slate-300">
223
+ <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
224
+ <path stroke-linecap="round" stroke-linejoin="round" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" />
225
+ </svg>
226
+ </div>
227
+ <div>
228
+ <p class="text-xs font-bold text-slate-200">Drag & drop your file here</p>
229
+ <p class="text-[10px] text-slate-500 mt-1">or click to browse local folders</p>
230
+ </div>
231
+ </div>
232
+
233
+ <!-- Dynamic Preview Media -->
234
+ <img id="preview-image" src="" alt="Input Preview" class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl z-20 border border-white/5">
235
+ <video id="preview-video" src="" controls class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl z-20 border border-white/5"></video>
236
+
237
+ <!-- File Input -->
238
+ <input type="file" id="media-file-input" accept="image/*,video/*" class="absolute inset-0 opacity-0 cursor-pointer z-30">
239
+ </div>
240
+
241
+ <!-- Inference Output Zone -->
242
+ <div class="absolute inset-0 pointer-events-none flex items-center justify-center z-20">
243
+ <img id="output-image" src="" alt="Inference Output" class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl pointer-events-auto border border-white/5">
244
+ <video id="output-video" src="" controls class="hidden max-h-full max-w-full rounded-2xl object-contain shadow-2xl pointer-events-auto border border-white/5"></video>
245
+ </div>
246
+
247
+ <!-- Processing Overlays -->
248
+ <div id="processing-overlay" class="absolute inset-0 bg-black/85 backdrop-blur-sm hidden flex-col items-center justify-center gap-4 z-40">
249
+ <div class="flex gap-1.5">
250
+ <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-nvidia-brand" style="animation-delay: 0s;"></span>
251
+ <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-400" style="animation-delay: 0.2s;"></span>
252
+ <span class="dot-pulse inline-block h-3 w-3 rounded-full bg-emerald-300" style="animation-delay: 0.4s;"></span>
253
+ </div>
254
+ <div class="text-center space-y-1">
255
+ <p id="processing-status" class="text-[11px] font-bold tracking-widest text-slate-200 uppercase">Executing Model...</p>
256
+ <p class="text-[9px] text-slate-500 uppercase tracking-wider font-mono">ZeroGPU Queue Active</p>
257
+ </div>
258
+ </div>
259
+ </div>
260
+
261
+ <!-- 2. Left Floating Overlay Panel (Title, simple selectors, accordion, and action buttons) -->
262
+ <div class="absolute left-6 lg:left-12 top-8 bottom-8 z-30 flex flex-col justify-between max-w-sm sm:max-w-md pointer-events-none">
263
 
264
+ <!-- Main Header Overlay text -->
265
+ <div class="space-y-3 pt-4 pointer-events-auto bg-gradient-to-b from-[#080a0e]/90 via-[#080a0e]/60 to-transparent p-4 rounded-2xl">
266
  <span class="text-[9px] font-bold text-nvidia-brand uppercase tracking-widest block font-mono">AI Research from NVIDIA</span>
267
+ <h1 class="font-outfit text-3xl sm:text-5xl font-black tracking-tight text-white leading-none">
268
  Locate<span class="text-nvidia-brand font-light">Anything</span>
269
  </h1>
270
+ <p class="text-xs text-slate-400 max-w-sm font-medium leading-relaxed">
271
+ NVIDIA's advanced 3B vision-language model. Locate any object, UI target, or text in images and videos with natural language.
272
  </p>
273
  </div>
274
 
275
+ <!-- Setup Glass Card Controls -->
276
+ <div class="glass-panel rounded-2xl p-4 space-y-4 pointer-events-auto max-w-xs shadow-2xl">
277
+ <div class="grid grid-cols-2 gap-3">
278
 
279
  <!-- Media Type toggle selection -->
280
+ <div class="space-y-1">
281
+ <label class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Media Type</label>
282
+ <div class="grid grid-cols-2 gap-0.5 bg-black/40 p-0.5 rounded-lg border border-white/5 text-center">
283
+ <button id="media-type-image" class="py-1 rounded-md font-semibold text-[9px] transition-all bg-nvidia-brand text-black font-outfit font-black shadow shadow-nvidia-brand/10">
284
  Image
285
  </button>
286
+ <button id="media-type-video" class="py-1 rounded-md font-semibold text-[9px] text-slate-400 hover:text-slate-200 transition-all">
287
  Video
288
  </button>
289
  </div>
290
  </div>
291
 
292
  <!-- Task Selector -->
293
+ <div class="space-y-1">
294
+ <label for="task-type" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Task Type</label>
295
+ <select id="task-type" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-semibold">
296
+ <option value="Detection">Detection</option>
297
+ <option value="Grounding">Grounding</option>
298
+ <option value="OCR">OCR</option>
299
+ <option value="GUI">GUI</option>
300
+ <option value="Pointing">Pointing</option>
301
  </select>
302
  </div>
303
 
304
  </div>
305
 
306
+ <!-- Advanced parameters sliders (Collapsible details inside the left overlay) -->
307
+ <details class="group border-t border-white/5 pt-3">
308
+ <summary class="list-none flex justify-between items-center cursor-pointer select-none text-[8px] font-bold text-slate-400 tracking-wider uppercase hover:text-slate-200 transition-colors">
 
 
 
 
 
 
309
  <span>⚙️ Advanced parameters</span>
310
+ <svg class="h-3 w-3 transform group-open:rotate-180 transition-transform text-slate-500" fill="none" viewBox="0 0 24 24" stroke="currentColor">
311
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
312
  </svg>
313
  </summary>
314
+ <div class="space-y-3 pt-3">
315
 
316
  <!-- Inference Mode Selection -->
317
+ <div class="space-y-1">
318
+ <label for="inference-mode" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Inference Mode</label>
319
+ <select id="inference-mode" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200">
320
+ <option value="hybrid">Hybrid</option>
321
+ <option value="fast">Fast</option>
322
+ <option value="slow">Slow</option>
323
  </select>
324
  </div>
325
 
326
  <!-- Short side resize cap -->
327
+ <div class="space-y-1">
328
+ <label for="short-size" class="text-[8px] font-bold text-slate-400 uppercase tracking-widest">Resize Cap (px)</label>
329
+ <input type="number" id="short-size" placeholder="Auto-Cap (1024)" class="w-full bg-black/40 border border-white/5 rounded-lg px-2 py-1 text-[9px] focus:border-nvidia-brand focus:outline-none transition-all text-slate-200 font-mono">
330
  </div>
331
 
332
  <!-- Temp -->
333
+ <div class="space-y-1">
334
+ <div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
335
  <span>Temperature</span>
336
  <span id="temp-val" class="font-mono text-nvidia-brand">0.7</span>
337
  </div>
338
+ <input type="range" id="temp" min="0.1" max="2.0" step="0.1" value="0.7" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
339
  </div>
340
 
341
  <!-- Top P -->
342
+ <div class="space-y-1">
343
+ <div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
344
  <span>Top P</span>
345
  <span id="topp-val" class="font-mono text-nvidia-brand">0.9</span>
346
  </div>
347
+ <input type="range" id="topp" min="0.05" max="1.0" step="0.05" value="0.9" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
348
  </div>
349
 
350
  <!-- Top K -->
351
+ <div class="space-y-1">
352
+ <div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
353
  <span>Top K</span>
354
  <span id="topk-val" class="font-mono text-nvidia-brand">20</span>
355
  </div>
356
+ <input type="range" id="topk" min="1" max="100" step="1" value="20" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand">
357
  </div>
358
 
359
  <!-- Video Frames (Only displayed for Video mode) -->
360
+ <div id="video-frames-wrapper" class="space-y-1 opacity-50 pointer-events-none transition-opacity duration-300">
361
+ <div class="flex justify-between text-[8px] uppercase font-bold text-slate-400 tracking-wider">
362
  <span>Max Video Frames</span>
363
  <span id="frames-val" class="font-mono text-nvidia-brand">4</span>
364
  </div>
365
+ <input type="range" id="max-frames" min="1" max="10" step="1" value="4" class="w-full h-0.5 bg-black rounded appearance-none cursor-pointer accent-nvidia-brand" disabled>
366
  </div>
367
 
368
  </div>
369
  </details>
370
  </div>
371
 
372
+ <!-- CTA Action Button (Floats at bottom-left corner of visual container) -->
373
+ <div class="pointer-events-auto pt-2 max-w-xs">
374
+ <button id="run-btn" class="pill-btn-green w-full py-3 px-6 rounded-full text-black font-extrabold text-sm flex items-center justify-center gap-2 select-none shadow-2xl">
375
+ <span id="btn-icon">🧠</span>
376
+ <span id="btn-text">Run Inference</span>
377
+ </button>
378
+ </div>
379
+
380
+ </div>
381
+
382
+ <!-- 3. Floating Categories Search Bar Overlay (Right/Center side, extremely clean glass box) -->
383
+ <div class="absolute top-1/2 right-6 lg:right-16 -translate-y-1/2 z-30 flex justify-center pointer-events-none w-full max-w-xs">
384
+ <div class="sam-input-bar rounded-2xl px-3.5 py-2.5 flex items-center gap-2 w-full pointer-events-auto">
385
+ <svg class="h-4 w-4 text-nvidia-brand shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
386
+ <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
387
+ </svg>
388
+ <input type="text" id="categories" value="car, bus, person, potted plant" placeholder="Describe objects to locate..." class="bg-transparent border-none outline-none focus:outline-none w-full text-slate-100 placeholder-slate-600 font-semibold text-xs">
389
+ <button id="clear-search-btn" class="text-slate-500 hover:text-white transition-colors p-0.5 rounded-full hover:bg-white/5 shrink-0">
390
+ <svg class="h-3.5 w-3.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5">
391
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
392
+ </svg>
393
+ </button>
394
+ </div>
395
+ </div>
396
+
397
+ <!-- Floating Workspace Status -->
398
+ <div class="absolute bottom-4 right-4 z-30 bg-black/60 backdrop-blur px-2.5 py-1 rounded-lg border border-white/10 text-[9px] text-slate-400 font-mono select-none pointer-events-none">
399
+ status: <span id="workspace-status" class="text-slate-200 font-semibold">No Media Loaded</span>
400
+ </div>
401
+
402
+ </div>
403
+
404
+ <!-- Shelf Section (Examples and Log metrics placed directly below the giant showcase) -->
405
+ <div class="grid grid-cols-1 lg:grid-cols-12 gap-6 items-start">
406
+
407
+ <!-- Left: Examples Library Shelf (Col Span: 5) -->
408
+ <div class="lg:col-span-5 space-y-4">
409
  <div class="glass-panel rounded-2xl p-5 space-y-4">
410
+ <span class="text-[9px] font-bold text-slate-400 uppercase tracking-widest block font-mono">🖼️ Interactive Quick Sandbox</span>
411
  <div class="grid grid-cols-4 gap-3">
412
 
413
  <!-- Card 1 -->
 
441
  <div class="glass-panel rounded-2xl p-4 text-[10px] text-slate-500 font-mono flex justify-between items-center select-none bg-black/40">
442
  <span class="truncate block">compiled: <span id="raw-prompt-preview" class="text-slate-400"></span></span>
443
  </div>
444
+ </div>
445
 
446
+ <!-- Right: Performance Metrics & Tag draw overlays (Col Span: 7) -->
447
+ <div class="lg:col-span-7 space-y-4">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  <div class="glass-panel rounded-2xl p-5 space-y-4">
449
  <div class="grid grid-cols-1 sm:grid-cols-12 gap-4 items-stretch">
450
 
451
  <!-- Performance Statistics Metrics Console (Grid: 5) -->
452
  <div class="sm:col-span-5 bg-black/60 rounded-xl p-4 border border-white/5 font-mono text-[10px] text-slate-300 space-y-2 leading-normal">
453
+ <div class="text-nvidia-brand font-bold border-b border-white/5 pb-1 mb-1.5 uppercase tracking-widest text-[9px] font-mono">📊 Metrics Log</div>
454
  <div class="flex justify-between"><span class="text-slate-500">Status:</span> <span id="meta-status" class="text-emerald-500 font-semibold">Idle</span></div>
455
  <div class="flex justify-between"><span class="text-slate-500">Tokens/Frames:</span> <span id="meta-tokens">-</span></div>
456
  <div class="flex justify-between"><span class="text-slate-500">Detections:</span> <span id="meta-boxes">-</span></div>
 
474
  <!-- Optional dynamic trace wrapper -->
475
  <div id="rich-trace-log" class="hidden border-t border-white/5 pt-3"></div>
476
  </div>
477
+ </div>
 
478
 
479
  </div>
480
+
481
  </main>
482
 
483
  <!-- Gradio client connection & app runtime logic -->