mhassanch's picture
add logo and link
32e860b
raw
history blame
5.66 kB
: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}