Spaces:
Running
Running
| :root{ | |
| --bg: #ffffff; | |
| --surface: #ffffff; | |
| --card: #f6f8f7; | |
| --accent: #247c53; /* main green */ | |
| --accent-2: #2fb36a; /* lighter green */ | |
| --text: #072021; /* dark text on white */ | |
| --muted: #5f6b67; | |
| --danger: #ff4d4f; | |
| } | |
| *{box-sizing:border-box} | |
| html,body,#root{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:Inter, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial} | |
| .app-root{display:flex;flex-direction:column;min-height:100vh;background:linear-gradient(180deg, var(--bg) 0%, #fbfdfb 100%);} | |
| .app-header{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:var(--surface);border-bottom:1px solid rgba(6,21,13,0.06)} | |
| .brand{display:flex;align-items:center;gap:14px} | |
| .brand-logo{width:150px;} | |
| .brand-title{display:inline-flex;align-items:center;gap:8px;font-size:36px;margin:0} | |
| .theme-dark .brand-title{color:#ffffff} | |
| .theme-light .brand-title{color:#072021} | |
| .brand-title img{filter:grayscale(0);} | |
| .brand-text{display:flex;flex-direction:column;margin-left:100;} | |
| .demo-title{margin:0;font-size:20px;font-weight:700;color:var(--text)} | |
| .theme-dark .demo-title{color:#ffffff} | |
| .theme-light .demo-title{color:var(--text)} | |
| .tagline{margin:6px 0 0;color:var(--muted);font-size:13px} | |
| .status{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px} | |
| .ready-dot{width:10px;height:10px;border-radius:50%;background:#e6f3ed} | |
| .ready-dot.on{background:var(--accent)} | |
| .app-main{display:flex;flex:1;gap:20px;padding:20px} | |
| .map-area{flex:1;border-radius:12px;overflow:hidden;box-shadow:0 6px 24px rgba(10,20,18,0.06);background:#f8fbfa;border:1px solid rgba(6,21,13,0.04)} | |
| .map-container{width:100%;height:100%;min-height:420px} | |
| .control-panel{width:360px;background:var(--card);border-radius:12px;padding:18px;border:1px solid rgba(6,21,13,0.04);display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 120px);overflow:hidden} | |
| /* Ensure the geojson section takes remaining vertical space */ | |
| .geojson-section{margin-top:14px;display:flex;flex-direction:column;flex:1;min-height:0} | |
| .geojson-header{display:flex;align-items:center;justify-content:space-between;gap:8px} | |
| .geojson-actions{display:flex;gap:8px} | |
| .geojson-box{ | |
| /* allow box to expand to fill remaining space */ | |
| flex:1;min-height:0;overflow:auto;background:#ffffff;padding:12px;border-radius:8px;border:1px solid rgba(6,21,13,0.04);font-size:12px;color:var(--text);white-space:pre-wrap;word-break:break-word;margin-top:8px | |
| } | |
| .controls-row{display:flex;gap:12px;margin-top:12px} | |
| .btn{ | |
| background:linear-gradient(90deg,var(--accent) 0%, var(--accent-2) 100%); | |
| color:#ffffff; | |
| border:0; | |
| padding:8px 14px; | |
| border-radius:10px; | |
| font-weight:600; | |
| cursor:pointer; | |
| box-shadow:0 8px 20px rgba(36,124,83,0.12); | |
| transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease; | |
| display:inline-flex;align-items:center;gap:8px; | |
| } | |
| .btn:hover{transform:translateY(-2px)} | |
| .btn:disabled{opacity:.6;cursor:not-allowed;transform:none} | |
| .btn.secondary{ | |
| background:transparent; | |
| color:var(--accent); | |
| border:1px solid rgba(36,124,83,0.12); | |
| box-shadow:none; | |
| } | |
| .btn.small{padding:6px 10px;font-size:13px;border-radius:8px;background:transparent;color:var(--muted);border:1px solid rgba(6,21,13,0.04)} | |
| .stats{display:flex;align-items:center;gap:12px;margin-top:12px} | |
| .stats strong{font-size:32px;color:var(--accent-2)} | |
| .stats span{color:var(--muted);font-size:13px} | |
| .geojson-section{margin-top:14px;display:flex;flex-direction:column;flex:1;min-height:0} | |
| .geojson-header{display:flex;align-items:center;justify-content:space-between;gap:8px} | |
| .geojson-actions{display:flex;gap:8px} | |
| .geojson-box{ | |
| flex:1;min-height:0;overflow:auto;background:#ffffff;padding:12px;border-radius:8px;border:1px solid rgba(6,21,13,0.04);font-size:12px;color:var(--text);white-space:pre-wrap;word-break:break-word;margin-top:8px | |
| } | |
| .footer-note{margin-top:auto;color:var(--muted);font-size:13px;text-align:center} | |
| .footer-link{display:inline-flex;align-items:center;gap:8px;color:var(--muted);text-decoration:none} | |
| .footer-logo{width:20px;height:20px;opacity:0.9} | |
| .footer-link span{font-size:13px} | |
| /* Hide only the MapLibre GL Draw toolbar controls (keep draw features/handles visible) */ | |
| .mapbox-gl-draw .mapbox-gl-draw_ctrl, | |
| .mapbox-gl-draw .mapbox-gl-draw_ctrl-group, | |
| .mapbox-gl-draw .mapbox-gl-draw_ctrl-top-left, | |
| .mapbox-gl-draw .mapbox-gl-draw_ctrl-bottom-left, | |
| .mapboxgl-ctrl.mapboxgl-ctrl-group, | |
| .mapbox-gl-draw_ctrl-icon { display: none ; pointer-events: none ; } | |
| /* responsive */ | |
| @media (max-width: 900px){ | |
| .app-main{flex-direction:column} | |
| .control-panel{width:100%;max-height:none} | |
| .map-container{min-height:320px} | |
| } | |
| /* Theme dark overrides */ | |
| .theme-dark{background:linear-gradient(180deg,#071022 0%, #0f1724 100%);color:#e6eef3} | |
| .theme-dark .app-header{background:linear-gradient(90deg, rgba(255,255,255,0.01), rgba(255,255,255,0.005));border-bottom:1px solid rgba(255,255,255,0.03)} | |
| .theme-dark .brand-logo{box-shadow:0 6px 18px rgba(0,0,0,0.6)} | |
| .theme-dark .app-main{gap:20px;padding:20px} | |
| .theme-dark .map-area{background:#071022;border:1px solid rgba(255,255,255,0.03);box-shadow:0 6px 30px rgba(2,6,23,0.6)} | |
| .theme-dark .control-panel{background:rgba(3,6,12,0.45);border:1px solid rgba(255,255,255,0.03);color:#e6eef3} | |
| .theme-dark .geojson-box{background:#021017;color:#cfeff6;border:1px solid rgba(255,255,255,0.03)} | |
| .theme-dark .btn.small{background:transparent;color:#cfeff6;border:1px solid rgba(255,255,255,0.04)} | |
| /* keep buttons accessible in dark */ | |
| .theme-dark .btn{box-shadow:0 8px 20px rgba(0,0,0,0.6)} | |
| .theme-dark .footer-link{color:#cfeff6} | |