html, body { height: 100%; background:#f6f8fb; }
.navbar-brand { font-weight: 700; }
.map { height: 58vh; min-height: 420px; border-radius: 12px; overflow: hidden; background:#dbeafe; }
.card-header { background:#fff; }
.source-item { border:1px solid #e2e8f0; border-radius:10px; padding:10px; margin-bottom:10px; background:#fff; }
.source-title { font-weight:700; }
.source-actions { display:grid; grid-template-columns: 1fr 1fr; gap:6px; margin-top:8px; }
.metric-card { background:#fff; border-radius:12px; padding:16px; box-shadow:0 2px 10px rgba(0,0,0,.08); min-height:110px; }
.metric-label { color:#667085; font-size:.9rem; }
.metric-value { font-size:1.6rem; font-weight:800; color:#0d6efd; margin-top:8px; }
.metric-value.good { color:#198754; }
.metric-value.warn { color:#b45309; }
.metric-value.bad { color:#dc3545; }
.log { white-space: pre-wrap; max-height:140px; overflow:auto; }
.small-table { max-height: 230px; overflow: auto; border: 1px solid #e2e8f0; border-radius: 8px; }
.result-table { max-height: 260px; overflow:auto; border: 1px solid #e2e8f0; border-radius: 8px; }
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:8px}.kpi{padding:10px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc}.kpi .label{font-size:11px;color:#667085;font-weight:700}.kpi .value{font-size:20px;font-weight:800;margin-top:4px;color:#0d6efd}.kpi.good .value{color:#198754}.kpi.warn .value{color:#b45309}.kpi.bad .value{color:#dc3545}
.layer-toggles{display:flex;flex-wrap:wrap;gap:8px}.layer-toggles label{display:flex;gap:5px;align-items:center;background:#f8fafc;border:1px solid #e2e8f0;padding:5px 8px;border-radius:999px;font-weight:600;font-size:.85rem}
.point-marker{background:#fff;border-radius:999px;border:3px solid #0d6efd;width:18px;height:18px}.dest-marker{background:#fff;border-radius:999px;border:3px solid #d97706;width:18px;height:18px}
.blank-polygon { stroke:#dc3545; stroke-width:1; fill:#dc3545; fill-opacity:.18; }
@media(max-width:991px){.map{height:52vh}.kpi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.kpi-grid{grid-template-columns:1fr}.metric-card{min-height:92px}.metric-value{font-size:1.35rem}}
.map.adding-point { cursor: crosshair; }
.layer-card { margin-bottom: .5rem; }
.source-list { max-height: 60vh; overflow:auto; }
.blob-settings-card { margin-top: 1rem; }
@media(min-width:992px){ .blob-settings-card { margin-top: 2rem; } }
