: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 !important; pointer-events: none !important; } /* 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}