Spaces:
Running on Zero
Running on Zero
Refine urban case card grid
Browse files
app.py
CHANGED
|
@@ -399,11 +399,14 @@ CSS = """
|
|
| 399 |
.prob-row b {text-align:right}.prob-track {height:9px;background:#e5edf1;border-radius:20px;overflow:hidden}.prob-track i {display:block;height:100%;background:linear-gradient(90deg,#169c7d,#36b7c5);border-radius:20px;}
|
| 400 |
.section-note {padding:12px 14px;border-left:4px solid #15947a;background:#eef9f6;border-radius:8px;color:#315c62;}
|
| 401 |
.case-heading{display:flex;justify-content:space-between;align-items:end;margin:.35rem 2px .5rem}.case-heading h2{margin:0;color:#123746;font-size:1.2rem}.case-heading p{margin:0;color:#647984;font-size:.82rem}
|
| 402 |
-
.case-
|
| 403 |
-
.case-
|
|
|
|
| 404 |
.case-note{background:#eaf7f3;border:1px solid #b9ded3;border-radius:11px;padding:1px 12px;margin:.4rem 0 .75rem}.case-note h3{font-size:.95rem;margin:.6rem 0 .2rem}.case-note p{font-size:.8rem}
|
| 405 |
.workspace-title h3{margin-bottom:.25rem!important}.controls-card{background:#fff;border:1px solid #dae5ea;border-radius:15px;padding:14px!important}
|
|
|
|
| 406 |
@media(max-width:850px){.hero-grid{grid-template-columns:1fr}.hero-stats{display:none}.method-strip,.summary-grid{grid-template-columns:1fr}.prob-row{grid-template-columns:115px 1fr 56px}.case-heading{display:block}}
|
|
|
|
| 407 |
"""
|
| 408 |
|
| 409 |
|
|
@@ -422,21 +425,21 @@ with gr.Blocks(title="Satellite Vision Toolkit Pro", css=CSS, theme=gr.themes.So
|
|
| 422 |
</div>
|
| 423 |
""")
|
| 424 |
gr.HTML("<div class='case-heading'><h2>Urban sample scenes</h2><p>High-resolution 256×256 USGS aerial chips · click any card to load</p></div>")
|
| 425 |
-
with gr.Row():
|
| 426 |
with gr.Column(elem_classes="case-card"):
|
| 427 |
-
gr.Image("assets/cases/dense_residential.jpg", show_label=False, height=
|
| 428 |
gr.Markdown("### Dense residential\nBuildings · streets · impervious cover")
|
| 429 |
residential_case = gr.Button("Load residential scene")
|
| 430 |
with gr.Column(elem_classes="case-card"):
|
| 431 |
-
gr.Image("assets/cases/urban_intersection.jpg", show_label=False, height=
|
| 432 |
gr.Markdown("### Urban intersection\nRoads · vehicles · pavement")
|
| 433 |
intersection_case = gr.Button("Load intersection scene")
|
| 434 |
with gr.Column(elem_classes="case-card"):
|
| 435 |
-
gr.Image("assets/cases/harbor_marina.jpg", show_label=False, height=
|
| 436 |
gr.Markdown("### Marina / harbor\nWater · boats · harbor context")
|
| 437 |
harbor_case = gr.Button("Load harbor scene")
|
| 438 |
with gr.Column(elem_classes="case-card"):
|
| 439 |
-
gr.Image("assets/cases/parking_lot.jpg", show_label=False, height=
|
| 440 |
gr.Markdown("### Parking lot\nPavement · dense small vehicles")
|
| 441 |
parking_case = gr.Button("Load parking scene")
|
| 442 |
case_note = gr.Markdown("Select an urban case to load its acquisition details and analysis prompt.", elem_classes="case-note")
|
|
|
|
| 399 |
.prob-row b {text-align:right}.prob-track {height:9px;background:#e5edf1;border-radius:20px;overflow:hidden}.prob-track i {display:block;height:100%;background:linear-gradient(90deg,#169c7d,#36b7c5);border-radius:20px;}
|
| 400 |
.section-note {padding:12px 14px;border-left:4px solid #15947a;background:#eef9f6;border-radius:8px;color:#315c62;}
|
| 401 |
.case-heading{display:flex;justify-content:space-between;align-items:end;margin:.35rem 2px .5rem}.case-heading h2{margin:0;color:#123746;font-size:1.2rem}.case-heading p{margin:0;color:#647984;font-size:.82rem}
|
| 402 |
+
.case-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important}.case-grid>div{min-width:0!important}
|
| 403 |
+
.case-card {background:#fff;border:1px solid #d7e2e8!important;border-radius:15px!important;padding:8px!important;box-shadow:0 6px 16px rgba(20,50,70,.06);min-width:0!important}.case-card:hover{border-color:#62a99a!important;box-shadow:0 9px 22px rgba(20,80,70,.1)}
|
| 404 |
+
.case-thumb {border-radius:10px!important;overflow:hidden;background:#e7eef1}.case-thumb img{width:100%!important;height:100%!important;object-fit:cover!important;image-rendering:auto!important}.case-card h3{margin:2px 2px 0!important;color:#143643;font-size:.92rem!important}.case-card p{margin:0 2px 3px!important;color:#667b85;font-size:.73rem!important;line-height:1.35}.case-card button{min-height:34px!important;font-size:.78rem!important}
|
| 405 |
.case-note{background:#eaf7f3;border:1px solid #b9ded3;border-radius:11px;padding:1px 12px;margin:.4rem 0 .75rem}.case-note h3{font-size:.95rem;margin:.6rem 0 .2rem}.case-note p{font-size:.8rem}
|
| 406 |
.workspace-title h3{margin-bottom:.25rem!important}.controls-card{background:#fff;border:1px solid #dae5ea;border-radius:15px;padding:14px!important}
|
| 407 |
+
@media(max-width:950px){.case-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
|
| 408 |
@media(max-width:850px){.hero-grid{grid-template-columns:1fr}.hero-stats{display:none}.method-strip,.summary-grid{grid-template-columns:1fr}.prob-row{grid-template-columns:115px 1fr 56px}.case-heading{display:block}}
|
| 409 |
+
@media(max-width:560px){.case-grid{grid-template-columns:1fr!important}}
|
| 410 |
"""
|
| 411 |
|
| 412 |
|
|
|
|
| 425 |
</div>
|
| 426 |
""")
|
| 427 |
gr.HTML("<div class='case-heading'><h2>Urban sample scenes</h2><p>High-resolution 256×256 USGS aerial chips · click any card to load</p></div>")
|
| 428 |
+
with gr.Row(elem_classes="case-grid"):
|
| 429 |
with gr.Column(elem_classes="case-card"):
|
| 430 |
+
gr.Image("assets/cases/dense_residential.jpg", show_label=False, height=144, interactive=False, show_download_button=False, show_fullscreen_button=False, show_share_button=False, elem_classes="case-thumb")
|
| 431 |
gr.Markdown("### Dense residential\nBuildings · streets · impervious cover")
|
| 432 |
residential_case = gr.Button("Load residential scene")
|
| 433 |
with gr.Column(elem_classes="case-card"):
|
| 434 |
+
gr.Image("assets/cases/urban_intersection.jpg", show_label=False, height=144, interactive=False, show_download_button=False, show_fullscreen_button=False, show_share_button=False, elem_classes="case-thumb")
|
| 435 |
gr.Markdown("### Urban intersection\nRoads · vehicles · pavement")
|
| 436 |
intersection_case = gr.Button("Load intersection scene")
|
| 437 |
with gr.Column(elem_classes="case-card"):
|
| 438 |
+
gr.Image("assets/cases/harbor_marina.jpg", show_label=False, height=144, interactive=False, show_download_button=False, show_fullscreen_button=False, show_share_button=False, elem_classes="case-thumb")
|
| 439 |
gr.Markdown("### Marina / harbor\nWater · boats · harbor context")
|
| 440 |
harbor_case = gr.Button("Load harbor scene")
|
| 441 |
with gr.Column(elem_classes="case-card"):
|
| 442 |
+
gr.Image("assets/cases/parking_lot.jpg", show_label=False, height=144, interactive=False, show_download_button=False, show_fullscreen_button=False, show_share_button=False, elem_classes="case-thumb")
|
| 443 |
gr.Markdown("### Parking lot\nPavement · dense small vehicles")
|
| 444 |
parking_case = gr.Button("Load parking scene")
|
| 445 |
case_note = gr.Markdown("Select an urban case to load its acquisition details and analysis prompt.", elem_classes="case-note")
|