:root{--bg: #0b0f16;--panel: rgba(18, 24, 34, .92);--border: rgba(255, 255, 255, .1);--text: #e9eef7;--muted: #8e9aad;--accent: #4c8dff;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overflow:hidden}button{font:inherit}.app{position:relative;height:100%}.map{position:absolute;top:0;right:0;bottom:0;left:0}.map__canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none;background:radial-gradient(circle at 60% 40%,#121a26,#0b0f16 70%)}.map__canvas:active{cursor:grabbing}.map__zoom{position:absolute;right:20px;bottom:20px;display:flex;flex-direction:column;gap:6px}.map__zoom button{width:40px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.map__zoom button:hover{border-color:var(--accent)}.tooltip{position:fixed;z-index:20;pointer-events:none;display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:#0b0f16f2;font-size:12px;max-width:280px}.tooltip span{color:var(--muted)}.panel{position:absolute;top:20px;left:20px;bottom:20px;width:342px;display:flex;flex-direction:column;gap:18px;padding:18px;border-radius:14px;border:1px solid var(--border);background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden}.panel h1{margin:0;font-size:16px;letter-spacing:.02em}.panel h2{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);display:flex;justify-content:space-between}.panel__section--grow{flex:1;min-height:90px;display:flex;flex-direction:column}.panel__blurb,.panel__hint{margin:10px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}.panel__muted{color:var(--muted);font-weight:400}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tab{padding:6px 11px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:12px;cursor:pointer}.tab:hover{color:var(--text)}.tab--active{background:var(--accent);border-color:var(--accent);color:#fff}.legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.legend li{display:flex;align-items:center;gap:9px;font-size:13px}.legend__swatch{width:13px;height:13px;border-radius:3px;flex:none}.legend__swatch--parcel{background:#e9eef729;border:1px solid var(--text)}.legend__label{flex:1}.legend__count{color:var(--muted);font-variant-numeric:tabular-nums}.output{flex:1;margin:0;padding:10px;overflow:auto;border-radius:8px;border:1px solid var(--border);background:#0000004d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;letter-spacing:-.2px;line-height:1.7;white-space:pre;color:#c8d3e4}.button{padding:9px 14px;border-radius:9px;border:1px solid var(--border);background:transparent;color:var(--text);font-size:13px;cursor:pointer}.button:hover{border-color:var(--accent)}.button--primary{background:var(--accent);border-color:var(--accent);color:#fff}.button--block{display:block;width:100%;margin-top:10px}.button--primary:disabled{opacity:.4;cursor:not-allowed}.modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;background:#04070cb3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(760px,92vw);height:min(640px,88vh);display:flex;flex-direction:column;gap:14px;padding:22px;border-radius:14px;border:1px solid var(--border);background:#121824}.modal header h2{margin:0 0 6px;font-size:16px}.modal header p{margin:0;font-size:12px;line-height:1.6;color:var(--muted)}.modal code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#b9c6da}.modal textarea{flex:1;resize:none;padding:12px;border-radius:9px;border:1px solid var(--border);background:#00000052;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.6}.modal textarea:focus{outline:none;border-color:var(--accent)}.modal footer{display:flex;align-items:center;justify-content:space-between;gap:14px}.modal__actions{display:flex;gap:8px}.modal__status{font-size:12px;color:var(--muted)}.modal__status--bad{color:#ff8189}
