:root{--bg: #05070d;--bg-elev: #0a0f1f;--surface: rgba(12, 18, 32, .78);--surface-solid: #0c1220;--border: rgba(120, 200, 255, .18);--border-strong: rgba(120, 200, 255, .42);--text: #e8f1ff;--text-muted: #7a8aa3;--text-dim: #4a5870;--neon-cyan: #00f5ff;--neon-magenta: #ff2bd6;--neon-lime: #39ff7a;--neon-amber: #ffb020;--neon-red: #ff3b6b;--neon-violet: #9d6cff;--neon-blue: #3aa8ff;--warn: #ff3b6b;--ok: #39ff7a;--shadow-strong: 0 16px 48px rgba(0, 0, 0, .6), 0 2px 12px rgba(0, 245, 255, .06);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;height:100%;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;overscroll-behavior:none;touch-action:manipulation}button{font-family:inherit;background:none;border:none;color:inherit;cursor:pointer;padding:0}a{color:var(--neon-cyan);text-decoration:none}a:hover{text-decoration:underline}code,pre{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;background:#00f5ff14;border:1px solid var(--border);border-radius:6px;padding:2px 6px;font-size:.85em;color:var(--neon-cyan)}pre{padding:12px 14px;overflow-x:auto}.app-root{position:relative;width:100%;height:100%;background:var(--bg)}.map-wrap{position:absolute;top:0;right:0;bottom:0;left:0}.map-wrap>div{width:100%;height:100%}.top-bar{position:absolute;top:calc(var(--safe-top) + 12px);left:12px;right:12px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;z-index:5}.brand{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:14px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow-strong);pointer-events:auto}.brand-dot{width:10px;height:10px;border-radius:50%;background:var(--neon-cyan);box-shadow:0 0 10px var(--neon-cyan),0 0 22px var(--neon-cyan)}.brand-text{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-weight:700;font-size:13px;letter-spacing:.04em;text-transform:uppercase}.brand-sub{font-size:10px;color:var(--text-muted);letter-spacing:.06em}.about-btn{pointer-events:auto}.search-wrap{position:absolute;top:calc(var(--safe-top) + 64px);left:12px;right:12px;z-index:5;display:flex;justify-content:center}.search-bar{width:100%;max-width:540px;background:var(--surface);border:1px solid var(--border);border-radius:14px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow-strong);overflow:hidden}.search-input-row{display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px}.search-icon{color:var(--neon-cyan);flex-shrink:0}.search-input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:15px;padding:8px 0;min-width:0}.search-input::placeholder{color:var(--text-muted)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;color:var(--text-muted);border:1px solid transparent;transition:background .15s,color .15s,border .15s}.icon-btn:hover{background:#00f5ff14;color:var(--neon-cyan)}.icon-btn:active{transform:scale(.96)}.icon-btn.ghost{background:var(--surface);border-color:var(--border);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.locate-btn{color:var(--neon-cyan)}.search-results{list-style:none;margin:0;padding:4px;border-top:1px solid var(--border);max-height:50vh;overflow-y:auto}.search-result{display:flex;flex-direction:column;padding:10px 12px;border-radius:10px;cursor:pointer;gap:2px}.search-result:hover{background:#00f5ff0f}.search-result-main{font-size:14px;color:var(--text)}.search-result-sub{font-size:12px;color:var(--text-muted)}.search-empty{color:var(--text-muted);font-size:13px}.legend-wrap{position:absolute;top:calc(var(--safe-top) + 128px);left:12px;right:12px;z-index:4;pointer-events:none;display:flex;justify-content:center}.legend{display:flex;align-items:center;gap:10px;padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:999px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);font-size:12px}.legend-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-weight:600;letter-spacing:.03em}.legend-warn{color:var(--warn);background:#ff3b6b1f;box-shadow:inset 0 0 0 1px #ff3b6b66,0 0 14px #ff3b6b2e}.legend-ok{color:var(--ok);background:#39ff7a1a;box-shadow:inset 0 0 0 1px #39ff7a59,0 0 14px #39ff7a24}.legend-counts{display:flex;align-items:center;gap:6px;color:var(--text-muted)}.legend-sep{color:var(--text-dim)}.legend-warn-text{color:var(--warn)}.legend-amber-text{color:var(--neon-amber)}.status-toast{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 96px);transform:translate(-50%);display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:12px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);z-index:5}.status-info{color:var(--neon-cyan);border-color:#00f5ff59}.status-warn{color:var(--neon-amber);border-color:#ffb02066}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fab{position:absolute;right:12px;bottom:calc(var(--safe-bottom) + 16px);display:inline-flex;align-items:center;gap:8px;padding:12px 16px;border-radius:999px;background:var(--neon-cyan);color:#04111a;font-weight:700;font-size:13px;letter-spacing:.04em;box-shadow:0 0 24px #00f5ff80,0 10px 30px #00f5ff40;z-index:6;transition:transform .15s,box-shadow .15s}.fab:hover{transform:translateY(-2px)}.fab:active{transform:scale(.97)}.scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;opacity:0;visibility:hidden;transition:opacity .25s;z-index:10}.scrim-open{opacity:1;visibility:visible}.filter-panel{position:absolute;z-index:11;background:var(--surface-solid);border:1px solid var(--border);display:flex;flex-direction:column;transition:transform .3s cubic-bezier(.22,1,.36,1);box-shadow:var(--shadow-strong)}@media(max-width:720px){.filter-panel{left:0;right:0;bottom:0;max-height:78vh;border-radius:22px 22px 0 0;border-left:none;border-right:none;border-bottom:none;transform:translateY(100%);padding-bottom:var(--safe-bottom)}.filter-panel-open{transform:translateY(0)}.panel-handle{width:42px;height:4px;background:var(--border-strong);border-radius:999px;margin:10px auto 4px}}@media(min-width:721px){.filter-panel{top:12px;bottom:12px;right:12px;width:380px;border-radius:18px;transform:translate(calc(100% + 24px))}.filter-panel-open{transform:translate(0)}.panel-handle{display:none}}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.panel-title{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px;letter-spacing:.02em;color:var(--neon-cyan)}.panel-section{padding:14px 16px;border-bottom:1px solid var(--border);overflow-y:auto}.panel-section:last-of-type{flex:1}.panel-section-title{font-size:11px;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase}.panel-section-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.bulk-actions{display:flex;gap:6px;align-items:center;font-size:12px}.link-btn{color:var(--neon-cyan);font-size:12px}.link-btn:hover{text-decoration:underline}.dot-sep{color:var(--text-dim)}.radius-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}.pill-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted);font-size:12px}.pill-btn.pill-on{border-color:var(--neon-cyan);color:var(--neon-cyan);background:#00f5ff14;box-shadow:0 0 10px #00f5ff2e}.scale-group{display:inline-flex;gap:4px}.scale-btn{padding:6px 10px;border-radius:8px;border:1px solid var(--border);color:var(--text-muted);font-size:12px;font-weight:600}.scale-btn.scale-on{border-color:var(--neon-cyan);color:var(--neon-cyan);background:#00f5ff14}.cat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.cat-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px;border-radius:12px;border:1px solid transparent;background:#ffffff05;text-align:left;transition:background .15s,border .15s}.cat-row:hover{background:#00f5ff0a}.cat-row.cat-on{border-color:var(--border);background:#00f5ff0d}.cat-swatch{width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid;flex-shrink:0;transition:box-shadow .2s}.cat-text{flex:1;display:flex;flex-direction:column;min-width:0}.cat-label{font-size:13px;color:var(--text);font-weight:600}.cat-sub{font-size:11px;color:var(--text-muted);letter-spacing:.02em}.cat-count{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted);min-width:36px;justify-content:flex-end}.panel-footer{padding:12px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-muted)}.disclaimer{margin:0;line-height:1.5}.detail-drawer{position:absolute;z-index:9;background:var(--surface-solid);border:1px solid var(--border);box-shadow:var(--shadow-strong);padding:16px 18px 18px;color:var(--text)}@media(max-width:720px){.detail-drawer{left:12px;right:12px;bottom:calc(var(--safe-bottom) + 84px);border-radius:16px}}@media(min-width:721px){.detail-drawer{left:12px;bottom:12px;width:360px;border-radius:16px}}.detail-close{position:absolute;top:8px;right:8px}.detail-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:11px;letter-spacing:.06em;font-weight:600;text-transform:uppercase;border:1px solid}.badge-pill{background:var(--neon-red);color:#1a0008;padding:1px 6px;border-radius:999px;font-size:9px;margin-left:4px}.detail-name{margin:10px 0 2px;font-size:19px;line-height:1.25;letter-spacing:-.01em}.detail-sub{font-size:12px;color:var(--text-muted);text-transform:capitalize;margin-bottom:8px}.detail-row{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px;margin-bottom:8px}.detail-desc{font-size:13px;line-height:1.5;color:var(--text);margin:10px 0}.detail-actions{display:flex;gap:8px;margin-top:6px;flex-wrap:wrap}.detail-action{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:10px;background:#00f5ff14;border:1px solid rgba(0,245,255,.4);color:var(--neon-cyan);font-size:12px;font-weight:600;text-decoration:none}.detail-action:hover{background:#00f5ff29;text-decoration:none}.detail-meta{display:flex;justify-content:space-between;margin-top:12px;font-size:11px;color:var(--text-muted)}.marker-pin{width:28px;height:28px;border-radius:50%;background:#05070deb;border:1.5px solid;display:flex;align-items:center;justify-content:center;transition:transform .15s;will-change:transform}.marker-pin:hover{transform:scale(1.15)}.modal-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:20;padding:16px}.modal{width:100%;max-width:520px;max-height:80vh;background:var(--surface-solid);border:1px solid var(--border);border-radius:18px;display:flex;flex-direction:column;box-shadow:var(--shadow-strong)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;font-size:16px}.modal-body{padding:18px;overflow-y:auto;line-height:1.55;font-size:14px}.modal-body h3{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--neon-cyan);margin:18px 0 6px}.modal-body ul{padding-left:18px}.modal-body li{margin-bottom:4px}.key-missing{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px}.key-card{max-width:460px;background:var(--surface-solid);border:1px solid var(--border);border-radius:18px;padding:28px;box-shadow:var(--shadow-strong)}.key-card h1{margin:0 0 12px;font-size:22px}.key-card p{margin:0 0 14px;color:var(--text-muted);line-height:1.55}.key-card pre{margin:0;font-size:12px}.gm-style-cc,.gmnoprint a{filter:brightness(.7) saturate(.5)}
