h1, h2, h3, h4, h5, h6 { margin-bottom: 1rem; } .flex { display: flex; } .flex-row { flex-direction: row; } .flex-column { flex-direction: column; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .align-center { align-items: center; } /* Grid utilities */ .grid { display: grid; } .grid-cols { grid-template-columns: repeat(1, minmax(0, 1fr)); } @media (min-width: 640px) { .grid-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (min-width: 768px) { .grid-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); } } .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } /* Gap utilities */ .gap-0 { gap: 0; } .gap-1 { gap: 0.25rem; } .gap-2 { gap: 0.5rem; } .gap-3 { gap: 0.75rem; } .gap-4 { gap: 1rem; } /* Responsive container class */ .container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 2rem; } .btn-error { background-color: #c10c0c; border-color: #c10c0c; } .btn-error:hover { background-color: #a80c0c; border-color: #a80c0c; } .btn-warning { background-color: #c1a10c; border-color: #c1a10c; } .btn-warning:hover { background-color: #a88c0c; border-color: #a88c0c; } .btn-success { background-color: #0cc14e; border-color: #0cc14e; } .btn-success:hover { background-color: #0ca83d; border-color: #0ca83d; } .btn-primary { background-color: #0c6fc1; border-color: #0c6fc1; } .btn-primary:hover { background-color: #0c5fa8; border-color: #0c5fa8; } /* B&W + Gray buttons */ .btn-bw { background-color: #fff; border-color: #fff; color: #000; } .btn-bw:hover { background-color: #000; border-color: #000; color: #fff; } .btn-gray { background-color: #ccc; border-color: #ccc; color: #000; } .btn-gray:hover { background-color: #000; border-color: #000; color: #fff; } .image-container { display: flex; justify-content: center; } #detected-objects-container { position: absolute; } .bounding-box { position: absolute; border: 3px solid red; } .tooltip { position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background-color: rgba(0, 0, 0, 0.8); color: white; font-size: 16px; font-weight: bold; padding: 4px 8px; border-radius: 4px; white-space: nowrap; opacity: 0; transition: opacity 0.3s; } .bounding-box:hover .tooltip { opacity: 1; } #audio { width: 100%; } #audio-label { padding-left: 4px; }