Spaces:
Running on Zero
Running on Zero
Apply ColmapView dark theme styling
Browse files
app.py
CHANGED
|
@@ -103,35 +103,135 @@ DEFAULT_STEP = 3
|
|
| 103 |
|
| 104 |
|
| 105 |
css = """
|
| 106 |
-
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 107 |
.stepper-wrapper { padding: 0; }
|
| 108 |
.stepper-container { padding: 0; align-items: center; }
|
| 109 |
.step-button { flex-direction: row; }
|
| 110 |
.step-connector { transform: none; }
|
| 111 |
-
.step-number { width: 16px; height: 16px; }
|
| 112 |
-
.step-label { position: relative; bottom: 0; }
|
| 113 |
.wrap.center.full { inset: 0; height: 100%; }
|
| 114 |
-
.wrap.center.full.translucent { background: var(--
|
| 115 |
.meta-text-center { display: block !important; position: absolute !important; top: unset !important; bottom: 0 !important; right: 0 !important; transform: unset !important; }
|
| 116 |
|
| 117 |
/* Previewer */
|
| 118 |
-
.previewer-container {
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
.previewer-container .previewer-main-image { max-width: 100%; max-height: 100%; flex-grow: 1; object-fit: contain; display: none; }
|
| 129 |
.previewer-container .previewer-main-image.visible { display: block; }
|
| 130 |
-
.previewer-container .slider-row { width: 100%; display: flex; flex-direction: column; align-items: center; gap:
|
| 131 |
-
.previewer-container input[type=range] { -webkit-appearance: none; width: 100%; max-width: 400px; background: transparent; }
|
| 132 |
-
.previewer-container input[type=range]::-webkit-slider-runnable-track { width: 100%; height:
|
| 133 |
-
.previewer-container input[type=range]::-webkit-slider-thumb {
|
| 134 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 135 |
.gradio-container .padded:has(.previewer-container) { padding: 0 !important; }
|
| 136 |
.gradio-container:has(.previewer-container) [data-testid="block-label"] { position: absolute; top: 0; left: 0; }
|
| 137 |
"""
|
|
|
|
| 103 |
|
| 104 |
|
| 105 |
css = """
|
| 106 |
+
/* ColmapView Dark Theme */
|
| 107 |
+
:root {
|
| 108 |
+
--bg-void: #0a0a0a;
|
| 109 |
+
--bg-primary: #0f0f0f;
|
| 110 |
+
--bg-secondary: #161616;
|
| 111 |
+
--bg-tertiary: #1e1e1e;
|
| 112 |
+
--bg-input: #1a1a1a;
|
| 113 |
+
--bg-elevated: #242424;
|
| 114 |
+
--bg-hover: #262626;
|
| 115 |
+
--text-primary: #e8e8e8;
|
| 116 |
+
--text-secondary: #8a8a8a;
|
| 117 |
+
--text-muted: #5a5a5a;
|
| 118 |
+
--border-subtle: #222222;
|
| 119 |
+
--border-color: #2a2a2a;
|
| 120 |
+
--border-light: #3a3a3a;
|
| 121 |
+
--accent: #b8b8b8;
|
| 122 |
+
--accent-hover: #d0d0d0;
|
| 123 |
+
--accent-dim: rgba(184, 184, 184, 0.12);
|
| 124 |
+
--shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
|
| 125 |
+
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5), 0 2px 4px rgba(0, 0, 0, 0.3);
|
| 126 |
+
--radius: 0.25rem;
|
| 127 |
+
--radius-md: 0.375rem;
|
| 128 |
+
--radius-lg: 0.5rem;
|
| 129 |
+
--font-sans: 'Roboto', -apple-system, BlinkMacSystemFont, sans-serif;
|
| 130 |
+
--font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
/* Global Overrides */
|
| 134 |
+
.gradio-container { background: var(--bg-primary) !important; color: var(--text-primary) !important; font-family: var(--font-sans) !important; }
|
| 135 |
+
.dark { background: var(--bg-primary) !important; }
|
| 136 |
+
body { background: var(--bg-void) !important; color-scheme: dark; }
|
| 137 |
+
|
| 138 |
+
/* Panels & Blocks */
|
| 139 |
+
.block { background: var(--bg-secondary) !important; border: 1px solid var(--border-color) !important; border-radius: var(--radius-lg) !important; }
|
| 140 |
+
.panel { background: var(--bg-secondary) !important; }
|
| 141 |
+
|
| 142 |
+
/* Inputs */
|
| 143 |
+
input, textarea, select { background: var(--bg-input) !important; border: 1px solid var(--border-color) !important; color: var(--text-primary) !important; border-radius: var(--radius) !important; }
|
| 144 |
+
input:focus, textarea:focus, select:focus { border-color: var(--accent) !important; outline: none !important; }
|
| 145 |
+
|
| 146 |
+
/* Buttons */
|
| 147 |
+
.primary { background: var(--accent) !important; color: var(--bg-void) !important; border: none !important; }
|
| 148 |
+
.primary:hover { background: var(--accent-hover) !important; }
|
| 149 |
+
.secondary { background: var(--bg-hover) !important; color: var(--text-primary) !important; border: 1px solid var(--border-color) !important; }
|
| 150 |
+
.secondary:hover { background: var(--bg-tertiary) !important; }
|
| 151 |
+
button { transition: all 0.15s ease-out !important; }
|
| 152 |
+
|
| 153 |
+
/* Labels & Text */
|
| 154 |
+
label, .label-wrap { color: var(--text-secondary) !important; font-size: 0.875rem !important; }
|
| 155 |
+
.prose { color: var(--text-primary) !important; }
|
| 156 |
+
.prose h2 { color: var(--text-primary) !important; border: none !important; }
|
| 157 |
+
|
| 158 |
+
/* Sliders */
|
| 159 |
+
input[type="range"] { accent-color: var(--accent) !important; }
|
| 160 |
+
|
| 161 |
+
/* Gallery */
|
| 162 |
+
.gallery { background: var(--bg-tertiary) !important; border: 1px solid var(--border-color) !important; }
|
| 163 |
+
|
| 164 |
+
/* Accordion */
|
| 165 |
+
.accordion { background: var(--bg-secondary) !important; border: 1px solid var(--border-color) !important; }
|
| 166 |
+
|
| 167 |
+
/* Scrollbar */
|
| 168 |
+
::-webkit-scrollbar { width: 12px; }
|
| 169 |
+
::-webkit-scrollbar-track { background: var(--bg-secondary); }
|
| 170 |
+
::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 9999px; }
|
| 171 |
+
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }
|
| 172 |
+
|
| 173 |
+
/* Gradio Overrides */
|
| 174 |
.stepper-wrapper { padding: 0; }
|
| 175 |
.stepper-container { padding: 0; align-items: center; }
|
| 176 |
.step-button { flex-direction: row; }
|
| 177 |
.step-connector { transform: none; }
|
| 178 |
+
.step-number { width: 16px; height: 16px; background: var(--bg-tertiary) !important; border: 1px solid var(--border-color) !important; }
|
| 179 |
+
.step-label { position: relative; bottom: 0; color: var(--text-secondary) !important; }
|
| 180 |
.wrap.center.full { inset: 0; height: 100%; }
|
| 181 |
+
.wrap.center.full.translucent { background: var(--bg-secondary); }
|
| 182 |
.meta-text-center { display: block !important; position: absolute !important; top: unset !important; bottom: 0 !important; right: 0 !important; transform: unset !important; }
|
| 183 |
|
| 184 |
/* Previewer */
|
| 185 |
+
.previewer-container {
|
| 186 |
+
position: relative;
|
| 187 |
+
font-family: var(--font-sans);
|
| 188 |
+
width: 100%;
|
| 189 |
+
height: 722px;
|
| 190 |
+
margin: 0 auto;
|
| 191 |
+
padding: 20px;
|
| 192 |
+
display: flex;
|
| 193 |
+
flex-direction: column;
|
| 194 |
+
align-items: center;
|
| 195 |
+
justify-content: center;
|
| 196 |
+
background: var(--bg-void);
|
| 197 |
+
border-radius: var(--radius-lg);
|
| 198 |
+
}
|
| 199 |
+
.previewer-container .tips-icon {
|
| 200 |
+
position: absolute; right: 10px; top: 10px; z-index: 10;
|
| 201 |
+
border-radius: var(--radius-md); color: var(--bg-void);
|
| 202 |
+
background-color: var(--accent); padding: 4px 8px;
|
| 203 |
+
user-select: none; font-size: 0.75rem; font-weight: 500;
|
| 204 |
+
}
|
| 205 |
+
.previewer-container .tips-text {
|
| 206 |
+
position: absolute; right: 10px; top: 45px;
|
| 207 |
+
color: var(--text-primary); background-color: var(--bg-elevated);
|
| 208 |
+
border: 1px solid var(--border-light); border-radius: var(--radius-md);
|
| 209 |
+
padding: 8px 12px; text-align: left; max-width: 280px; z-index: 10;
|
| 210 |
+
transition: opacity 0.15s ease-out; opacity: 0; user-select: none;
|
| 211 |
+
box-shadow: var(--shadow-md);
|
| 212 |
+
}
|
| 213 |
+
.previewer-container .tips-text p { font-size: 0.75rem; line-height: 1.4; color: var(--text-secondary); margin: 4px 0; }
|
| 214 |
+
.tips-icon:hover + .tips-text { opacity: 1; }
|
| 215 |
+
.previewer-container .mode-row { width: 100%; display: flex; gap: 8px; justify-content: center; margin-bottom: 16px; flex-wrap: wrap; }
|
| 216 |
+
.previewer-container .mode-btn {
|
| 217 |
+
width: 28px; height: 28px; border-radius: 50%; cursor: pointer;
|
| 218 |
+
opacity: 0.5; transition: all 0.15s ease-out;
|
| 219 |
+
border: 2px solid var(--border-light); object-fit: cover;
|
| 220 |
+
}
|
| 221 |
+
.previewer-container .mode-btn:hover { opacity: 0.85; transform: scale(1.1); border-color: var(--text-muted); }
|
| 222 |
+
.previewer-container .mode-btn.active { opacity: 1; border-color: var(--accent); transform: scale(1.1); }
|
| 223 |
+
.previewer-container .display-row { margin-bottom: 16px; min-height: 400px; width: 100%; flex-grow: 1; display: flex; justify-content: center; align-items: center; }
|
| 224 |
.previewer-container .previewer-main-image { max-width: 100%; max-height: 100%; flex-grow: 1; object-fit: contain; display: none; }
|
| 225 |
.previewer-container .previewer-main-image.visible { display: block; }
|
| 226 |
+
.previewer-container .slider-row { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 0 16px; }
|
| 227 |
+
.previewer-container input[type=range] { -webkit-appearance: none; width: 100%; max-width: 400px; background: transparent; height: 20px; }
|
| 228 |
+
.previewer-container input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 4px; cursor: pointer; background: var(--bg-tertiary); border-radius: 9999px; }
|
| 229 |
+
.previewer-container input[type=range]::-webkit-slider-thumb {
|
| 230 |
+
height: 12px; width: 12px; border-radius: 50%; background: var(--accent);
|
| 231 |
+
cursor: pointer; -webkit-appearance: none; margin-top: -4px;
|
| 232 |
+
box-shadow: var(--shadow-sm); transition: transform 0.1s ease-out;
|
| 233 |
+
}
|
| 234 |
+
.previewer-container input[type=range]::-webkit-slider-thumb:hover { transform: scale(1.2); background: var(--accent-hover); }
|
| 235 |
.gradio-container .padded:has(.previewer-container) { padding: 0 !important; }
|
| 236 |
.gradio-container:has(.previewer-container) [data-testid="block-label"] { position: absolute; top: 0; left: 0; }
|
| 237 |
"""
|