:root { --background: 0 0% 100%; --foreground: 222.2 84% 4.9%; --card: 0 0% 100%; --card-foreground: 222.2 84% 4.9%; --popover: 0 0% 100%; --popover-foreground: 222.2 84% 4.9%; --primary: 221.2 83.2% 53.3%; --primary-foreground: 210 40% 98%; --secondary: 210 40% 96.1%; --secondary-foreground: 222.2 47.4% 11.2%; --muted: 210 40% 96.1%; --muted-foreground: 215.4 16.3% 46.9%; --accent: 210 40% 96.1%; --accent-foreground: 222.2 47.4% 11.2%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 210 40% 98%; --border: 214.3 31.8% 91.4%; --input: 214.3 31.8% 91.4%; --ring: 221.2 83.2% 53.3%; --radius: 0.5rem; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; background-color: hsl(var(--background)); color: hsl(var(--foreground)); line-height: 1.5; min-height: 100vh; transition: background-color 0.2s; overflow-y: scroll; } .container { max-width: 1400px; margin: 0 auto; padding: 1rem; } header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 2rem; } h1 { font-size: 1.5rem; font-weight: 600; } .grid { display: grid; gap: 1.5rem; } .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mb-2 { margin-bottom: 2rem; } .card { background-color: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); padding: 1.5rem; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } .card-header { margin-bottom: 1rem; } .card-title { font-size: 1.25rem; font-weight: 600; margin-bottom: 0.5rem; } .card-description { color: hsl(var(--muted-foreground)); font-size: 0.875rem; } .preview-area { position: relative; width: 100%; height: 300px; border: 2px dashed hsl(var(--border)); border-radius: var(--radius); display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; margin-bottom: 1rem; } .text-output-area { width: 100%; height: 500px; border: 2px dashed hsl(var(--border)); border-radius: var(--radius); display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: scroll; } .preview-area.has-image { border: none; } .preview-area img { max-width: 100%; max-height: 100%; object-fit: contain; } .preview-placeholder { text-align: center; color: hsl(var(--muted-foreground)); } .preview-placeholder svg { width: 3rem; height: 3rem; margin-bottom: 1rem; color: hsl(var(--muted-foreground)); } .btn { display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius); font-size: 0.875rem; font-weight: 500; transition: all 0.2s; padding: 0.5rem 1rem; cursor: pointer; border: 1px solid transparent; } .btn-primary { background-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } .btn-primary:hover { background-color: hsl(var(--primary) / 0.9); } .btn-secondary { background-color: hsl(var(--secondary)); color: hsl(var(--secondary-foreground)); border-color: hsl(var(--border)); } .btn-secondary:hover { background-color: hsl(var(--secondary) / 0.9); } .btn-group { display: flex; gap: 0.5rem; } .tabs { display: flex; border-bottom: 1px solid hsl(var(--border)); margin-bottom: 1rem; } .tab { padding: 0.5rem 1rem; cursor: pointer; border-bottom: 2px solid transparent; font-size: 0.875rem; font-weight: 500; color: hsl(var(--muted-foreground)); } .tab.active { color: hsl(var(--primary)); border-bottom-color: hsl(var(--primary)); } .results { margin-top: 1rem; border-top: 1px solid hsl(var(--border)); padding-top: 1rem; } .result-item { padding: 0.5rem; border-radius: var(--radius); margin-bottom: 0.5rem; background-color: hsl(var(--secondary)); } .result-label { font-weight: 500; } .result-confidence { color: hsl(var(--muted-foreground)); font-size: 0.75rem; } .bounding-box { position: absolute; border: 2px solid hsl(var(--primary)); background-color: hsl(var(--primary) / 0.2); } /* Updated tabs styling for collapsible applications */ .applications-container { display: flex; flex-direction: column; gap: 1rem; margin-bottom: 1rem; } .application-tab { border: 1px solid hsl(var(--border)); border-radius: var(--radius); overflow: hidden; } .application-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background-color: hsl(var(--secondary)); cursor: pointer; user-select: none; } .application-header:hover { background-color: hsl(var(--secondary) / 0.9); } .application-title { font-weight: 500; display: flex; align-items: center; gap: 0.5rem; } .application-icon { width: 1.25rem; height: 1.25rem; } .application-content { padding: 0 1rem; max-height: 0; overflow: hidden; transition: max-height 0.1s ease-out; } .application-tab.active .application-content { padding: 1rem; max-height: 2000px; transition: max-height 0.2s ease-in; } .application-arrow { transition: transform 0.2s ease; } .application-tab.active .application-arrow { transform: rotate(180deg); } /* -- */ @media (max-width: 768px) { .grid-cols-2 { grid-template-columns: 1fr; } } .input-group { margin-bottom: 4px; } .input-group label { display: block; margin-bottom: 4px; font-weight: 500; font-size: 0.875rem; color: var(--foreground); } .input-group input { width: 100%; padding: 10px 12px; font-size: 0.9375rem; border: 1px solid hsl(var(--border)); border-radius: var(--radius); transition: var(--transition); box-shadow: var(--shadow-sm); } .input-group input::placeholder { color: #9ca3af; /* Placeholder text color */ } .input-group input:focus { outline: none; border-color: #6b7280; box-shadow: var(--shadow-focus), var(--shadow-sm); } .helper-text { margin-top: 6px; font-size: 0.75rem; color: #6b7280; /* Muted gray for helper text */ } .hidden { display: none; } .confidence-slider input[type="range"] { width: 100%; appearance: none; height: 6px; background: hsl(var(--border)); border-radius: var(--radius); outline: none; transition: background 0.2s; } .confidence-slider input[type="range"]::-webkit-slider-thumb { appearance: none; width: 16px; height: 16px; border-radius: 50%; background: hsl(var(--primary)); cursor: pointer; transition: background 0.2s; } .confidence-slider input[type="range"]::-webkit-slider-thumb:hover { background: hsl(var(--primary) / 0.9); } /* Sample images collapsible section */ .sample-images-container { border-top: 1px solid hsl(var(--border)); margin-top: 1rem; } .collapsible-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 0; cursor: pointer; font-weight: 500; user-select: none; } .collapsible-header:hover { color: hsl(var(--primary)); } .transition-transform { transition: transform 0.2s ease; } .rotate-180 { transform: rotate(180deg); } .sample-images-content { padding-bottom: 0.5rem; } .sample-image-grid { display: flex; flex-wrap: wrap; gap: 1rem; } .sample-image { cursor: pointer; text-align: center; transition: transform 0.2s; } .sample-image:hover { transform: scale(1.05); } .sample-image-thumb { width: 80px; height: 80px; border-radius: var(--radius); overflow: hidden; border: 1px solid hsl(var(--border)); margin-bottom: 0.25rem; } .sample-image-thumb img { width: 100%; height: 100%; object-fit: cover; } .sample-image p { font-size: 0.75rem; margin-top: 0.25rem; } .mt-2 { margin-top: 2rem; }