*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{color:#1a1a1a;background:#f7f9fb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.cluster-tooltip{pointer-events:none;box-shadow:none!important;background:0 0!important;border:none!important;margin:0!important;padding:0!important}.cluster-tooltip:before{display:none!important}:root{--bg:#f7f9fb;--fg:#1a1a1a;--muted:#6b7280;--border:#e5e7eb;--accent:#2563eb}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-header{border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;padding:12px 20px}.app-header h1{margin:0 0 4px;font-size:18px}.disclaimer{color:var(--muted);margin:0 0 2px;font-size:12px}.meta-small{color:var(--muted);margin:0;font-size:11px}.app-body{flex:1;grid-template-columns:1fr 340px 200px;min-height:0;display:grid}.leaflet-container{width:100%;height:100%}.camp-list{border-left:1px solid var(--border);background:#fff;padding:12px;overflow-y:auto}.camp-list h2{margin:0 0 4px;font-size:14px}.camp-list .meta{color:var(--muted);margin:0 0 8px;font-size:11px}.camp-list .filters{border-bottom:1px solid var(--border);flex-direction:column;gap:6px;margin-bottom:8px;padding-bottom:8px;display:flex}.camp-list .search-input{border:1px solid var(--border);border-radius:4px;width:100%;padding:5px 8px;font-family:inherit;font-size:12px}.camp-list .filter-select{border:1px solid var(--border);background:#fff;border-radius:4px;width:100%;padding:4px 6px;font-family:inherit;font-size:11px}.camp-list .status-filter{color:var(--muted);gap:8px;font-size:11px;display:flex}.camp-list .status-filter label{cursor:pointer;align-items:center;gap:3px;display:flex}.camp-list .empty{text-align:center;color:var(--muted);padding:20px;font-size:12px;list-style:none}.camp-list .bucket-filter{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.camp-list .bucket-btn{color:#1a1a1a;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:12px;align-items:center;gap:4px;padding:4px 8px;font-size:11px;transition:all .15s;display:inline-flex}.camp-list .bucket-btn:hover:not(:disabled){background:#f3f4f6}.camp-list .bucket-btn.active{color:#fff;background:#1a1a1a;border-color:#1a1a1a}.camp-list .bucket-btn.active .bucket-count{color:#fff}.camp-list .bucket-btn:disabled{opacity:.4;cursor:not-allowed}.camp-list .bucket-dot{border:1px solid #fff;border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block;box-shadow:0 0 0 1px #d1d5db}.camp-list .bucket-count{color:var(--muted);font-size:11px;font-weight:600}.camp-list ol{margin:0;padding:0;list-style:none}.camp-list li{cursor:pointer;border:1px solid #0000;border-radius:6px;gap:8px;margin-bottom:4px;padding:10px;transition:background .1s;display:flex}.camp-list li:hover{background:#f3f4f6}.camp-list li.selected{border-color:var(--accent);background:#eff6ff}.camp-list .rank{color:var(--muted);min-width:28px;padding-top:2px;font-size:11px}.camp-list .info{flex:1;min-width:0}.camp-list .name{white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:13px;font-weight:600;overflow:hidden}.camp-list .addr{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-bottom:6px;font-size:11px;overflow:hidden}.camp-list .stats{color:var(--muted);flex-wrap:wrap;gap:4px;font-size:11px;display:flex}.camp-list .stats .muted{color:#9ca3af}.camp-list .badge{color:#fff;text-shadow:0 0 2px #0000004d;border-radius:3px;padding:1px 6px;font-weight:600}.camp-list .load-more-sentinel{text-align:center;color:var(--muted);cursor:default;border-top:1px dashed var(--border);background:#fafafa;padding:14px 10px;font-size:11px}.camp-list .end-marker{text-align:center;color:var(--muted);border-top:1px dashed var(--border);padding:12px 10px;font-size:11px}.legend{border-left:1px solid var(--border);background:#fff;padding:12px;overflow-y:auto}.legend h3{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:12px 0 6px;font-size:12px}.legend h3:first-child{margin-top:0}.legend-rows{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.legend-row{align-items:center;gap:6px;font-size:11px;display:flex}.legend-row .dot{border:1px solid #fff;border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 1px #0000001a}.app-footer{border-top:1px solid var(--border);color:var(--muted);background:#fff;flex-shrink:0;padding:8px 20px;font-size:11px}.app-footer p{margin:2px 0}.modal-backdrop{z-index:9999;background:#0f172a8c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-panel{background:#fff;border-radius:10px;flex-direction:column;width:100%;max-width:600px;max-height:85vh;display:flex;box-shadow:0 20px 50px #0000004d}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-header h2{margin:0;font-size:16px}.modal-close{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:4px;padding:4px 8px;font-size:18px}.modal-close:hover{background:var(--bg);color:var(--fg)}.modal-body{flex:1;padding:18px;overflow-y:auto}.modal-body h3{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:16px 0 6px;font-size:13px}.modal-body h3:first-child{margin-top:0}.modal-body ul{margin:0 0 12px;padding-left:20px;font-size:13px;line-height:1.6}.modal-body p{margin:8px 0;font-size:13px;line-height:1.6}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;padding:12px 18px;display:flex}.modal-ok{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:8px 20px;font-family:inherit;font-size:13px;font-weight:600}.modal-ok:hover{filter:brightness(1.1)}.link-button{color:var(--accent);cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.link-button:hover{filter:brightness(.85)}.user-location-bar{margin-top:8px;font-size:12px}.geo-btn{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:4px;padding:5px 10px;font-family:inherit;font-size:12px}.geo-btn:hover{filter:brightness(1.1)}.geo-status{background:#eef2ff;border-radius:4px;align-items:center;gap:8px;padding:5px 10px;font-size:12px;display:inline-flex}.geo-status.geo-denied{color:#991b1b;background:#fee2e2}.geo-status.geo-granted{color:#065f46;background:#d1fae5}.geo-clear{color:inherit;cursor:pointer;background:#0000000d;border:0;border-radius:3px;padding:2px 8px;font-family:inherit;font-size:11px}.camp-list .sort-toggle{color:var(--muted);gap:12px;font-size:12px;display:flex}.camp-list .sort-toggle label{cursor:pointer;align-items:center;gap:4px;display:inline-flex}.dist-from-user{color:#1e40af;background:#dbeafe;border-radius:3px;padding:1px 6px;font-size:11px;font-weight:500;display:inline-block}.measure-toggle{color:var(--fg);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:4px;margin-left:8px;padding:5px 10px;font-family:inherit;font-size:12px;transition:all .15s}.measure-toggle:hover{background:#fef3c7}.measure-toggle.active{color:#fff;background:#f59e0b;border-color:#b45309;box-shadow:0 0 0 3px #f59e0b40}.measure-marker-icon{pointer-events:auto;background:0 0!important;border:none!important}.measure-popup{width:320px;font-family:inherit;font-size:12px}.measure-popup-header{color:#fff;border-radius:4px 4px 0 0;justify-content:space-between;align-items:center;margin:-10px -10px 8px;padding:6px 10px;font-weight:700;display:flex}.measure-popup-title{font-size:13px}.measure-popup-close{color:#fff;cursor:pointer;background:0 0;border:0;padding:0 4px;font-size:14px}.measure-popup-body{padding:0 4px}.measure-coords{color:var(--muted);margin-bottom:4px;font-family:monospace;font-size:10px}.measure-score-row{align-items:baseline;gap:8px;margin:6px 0 4px;display:flex}.measure-score-value{color:var(--fg);font-size:24px;font-weight:800}.measure-score-label{font-size:13px;font-weight:700}.measure-stats{color:var(--muted);margin-bottom:8px;font-size:11px}.measure-radius-toggle{color:var(--muted);align-items:center;gap:8px;margin-bottom:8px;font-size:11px;display:flex}.measure-radius-toggle .radius-pill{cursor:pointer;align-items:center;gap:3px;display:inline-flex}.measure-compare{color:#78350f;background:#fef3c7;border:1px solid #fcd34d;border-radius:4px;margin-bottom:8px;padding:6px 8px;font-size:11px}.measure-compare strong{color:#1a1a1a}.measure-nearby summary{cursor:pointer;color:var(--muted);margin-bottom:4px;font-size:11px;font-weight:600}.measure-nearby-list{margin:0;padding:0;list-style:none}.measure-nearby-list li{border-bottom:1px solid #f3f4f6;grid-template-columns:12px 1fr 50px 50px 40px 50px;align-items:center;gap:4px;padding:2px 0;font-size:10px;display:grid}.measure-nearby-list li.empty{color:var(--muted);text-align:center;padding:10px;display:block}.measure-nearby-list .kind-dot{border:1px solid #fff;border-radius:50%;width:8px;height:8px}.measure-nearby-list .name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.measure-nearby-list .kind{color:var(--muted);font-size:9px}.measure-nearby-list .count,.measure-nearby-list .dist{color:var(--muted);text-align:right}.measure-nearby-list .contrib{text-align:right;color:#92400e;font-family:monospace}.measure-disclaimer{color:var(--muted);background:#f9fafb;border-radius:3px;margin-top:8px;padding:6px;font-size:10px;line-height:1.4}.stale-badge{vertical-align:middle;border-radius:10px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.stale-badge.stale-warn{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.stale-badge.stale-critical{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.loading-state{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px 20px;display:flex}.loading-spinner{border:3px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;width:32px;height:32px;margin-bottom:12px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loading-spinner{animation:none}}.popup-link{background:var(--accent);border-radius:3px;margin-top:4px;padding:3px 8px;font-size:12px;text-decoration:none;display:inline-block;color:#fff!important}.popup-link:hover{filter:brightness(1.1)}.popup-category{color:var(--muted);background:#f3f4f6;border-radius:3px;margin-top:2px;padding:1px 6px;font-size:10px;display:inline-block}.load-more-sentinel{text-align:center;color:var(--muted);border-top:1px dashed var(--border);padding:14px;font-size:12px;list-style:none}.end-marker{text-align:center;color:var(--muted);padding:14px;font-size:11px;list-style:none}
