:root{--primary: #2563eb;--primary-hover: #1d4ed8;--secondary: #64748b;--bg-sidebar: #ffffff;--bg-app: #f8fafc;--text-main: #0f172a;--text-muted: #64748b;--danger: #ef4444;--success: #22c55e;--border: #e2e8f0;--shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1)}*,*:before,*:after{box-sizing:border-box}html,body,#root,.App{height:100vh;width:100vw;margin:0;padding:0;overflow:hidden;font-family:Inter,system-ui,-apple-system,sans-serif;background-color:var(--bg-app);color:var(--text-main)}.App{display:flex;flex-direction:column}.app-header{background-color:#fff;border-bottom:1px solid var(--border);padding:.75rem 1.5rem;z-index:2000;box-shadow:0 1px 2px #0000000d}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:450px;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;box-shadow:var(--shadow);z-index:1001}.sidebar-header{padding:1.5rem;border-bottom:1px solid var(--border)}.sidebar-content{flex:1;overflow-y:auto;padding:1.5rem}.input-group{margin-bottom:1rem}.input-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem;color:var(--secondary)}.input-group input{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:.375rem;font-size:1rem;transition:border-color .2s}.input-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:.375rem;font-weight:500;cursor:pointer;transition:all .2s;border:none;gap:.5rem;width:100%}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover{background-color:var(--primary-hover)}.btn-success{background-color:var(--success);color:#fff}.card{background:#fff;border:1px solid var(--border);border-radius:.5rem;padding:1rem;margin-bottom:1rem;transition:transform .2s}.card-hit{border-left:4px solid var(--danger);background:#fef2f2}.card-ok{border-left:4px solid var(--success);background:#f0fdf4}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.leaflet-container.crosshair-cursor-override,.leaflet-container.crosshair-cursor-override .leaflet-interactive{cursor:crosshair!important}body.bplan-active .map-compass-overlay,body.bplan-active .map-legend-overlay{display:none!important}.leaflet-draw-actions a{font-size:14px!important;padding:8px 12px!important;line-height:1.5!important}.leaflet-draw-toolbar a{background-image:url(https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/images/spritesheet.svg)!important}.leaflet-retina .leaflet-draw-toolbar a{background-image:url(https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/images/spritesheet-2x.png)!important}#ag-buffer-btn{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><text x="50%" y="54%" dominant-baseline="middle" text-anchor="middle" font-size="16">🚧</text></svg>')!important;background-size:24px 24px!important;background-position:center!important;background-repeat:no-repeat!important;display:block;background-color:#fff;border-bottom:none!important}#ag-buffer-btn.active{background-color:#fde047!important}.leaflet-container.buffer-drawing-mode,.leaflet-container.ag-native-drawing-mode{cursor:crosshair!important}.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1-pane,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1Pane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1Pane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1Pane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-aiBlock1Pane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-aiBufferBlock2-pane,.leaflet-container.ag-native-drawing-mode .leaflet-aiBufferBlock2-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-aiBufferBlock2-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-aiBufferBlock2-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-aiRouteBlock2-pane,.leaflet-container.ag-native-drawing-mode .leaflet-aiRouteBlock2-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-aiRouteBlock2-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-aiRouteBlock2-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayer-pane,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayer-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayer-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayer-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayerPane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayerPane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayerPane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-constraintsLayerPane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayer-pane,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayer-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayer-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayer-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayerPane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayerPane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayerPane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-layoutLayerPane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-shadow-pane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-shadow-pane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-shadow-pane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-shadow-pane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-glare-pane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-glare-pane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-glare-pane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-glare-pane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-op-pane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-op-pane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-op-pane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-op-pane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-cabins-pane,.leaflet-container.ag-native-drawing-mode .leaflet-cabins-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-cabins-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-cabins-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-cabinsPane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-cabinsPane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-cabinsPane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-cabinsPane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-gsePoints-pane,.leaflet-container.ag-native-drawing-mode .leaflet-gsePoints-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-gsePoints-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-gsePoints-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-gsePointsPane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-gsePointsPane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-gsePointsPane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-gsePointsPane-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-catasto-pane,.leaflet-container.ag-native-drawing-mode .leaflet-catasto-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-catasto-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-catasto-pane .leaflet-interactive,.leaflet-container.ag-native-drawing-mode .leaflet-catastoPane-pane,.leaflet-container.ag-native-drawing-mode .leaflet-catastoPane-pane canvas,.leaflet-container.ag-native-drawing-mode .leaflet-catastoPane-pane svg,.leaflet-container.ag-native-drawing-mode .leaflet-catastoPane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1-pane,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1Pane-pane,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1Pane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1Pane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-aiBlock1Pane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-aiBufferBlock2-pane,.leaflet-container.buffer-drawing-mode .leaflet-aiBufferBlock2-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-aiBufferBlock2-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-aiBufferBlock2-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-aiRouteBlock2-pane,.leaflet-container.buffer-drawing-mode .leaflet-aiRouteBlock2-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-aiRouteBlock2-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-aiRouteBlock2-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayer-pane,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayer-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayer-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayer-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayerPane-pane,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayerPane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayerPane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-constraintsLayerPane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayer-pane,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayer-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayer-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayer-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayerPane-pane,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayerPane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayerPane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-layoutLayerPane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-shadow-pane-pane,.leaflet-container.buffer-drawing-mode .leaflet-shadow-pane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-shadow-pane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-shadow-pane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-glare-pane-pane,.leaflet-container.buffer-drawing-mode .leaflet-glare-pane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-glare-pane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-glare-pane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-op-pane-pane,.leaflet-container.buffer-drawing-mode .leaflet-op-pane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-op-pane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-op-pane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-cabins-pane,.leaflet-container.buffer-drawing-mode .leaflet-cabins-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-cabins-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-cabins-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-cabinsPane-pane,.leaflet-container.buffer-drawing-mode .leaflet-cabinsPane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-cabinsPane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-cabinsPane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-gsePoints-pane,.leaflet-container.buffer-drawing-mode .leaflet-gsePoints-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-gsePoints-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-gsePoints-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-gsePointsPane-pane,.leaflet-container.buffer-drawing-mode .leaflet-gsePointsPane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-gsePointsPane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-gsePointsPane-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-catasto-pane,.leaflet-container.buffer-drawing-mode .leaflet-catasto-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-catasto-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-catasto-pane .leaflet-interactive,.leaflet-container.buffer-drawing-mode .leaflet-catastoPane-pane,.leaflet-container.buffer-drawing-mode .leaflet-catastoPane-pane canvas,.leaflet-container.buffer-drawing-mode .leaflet-catastoPane-pane svg,.leaflet-container.buffer-drawing-mode .leaflet-catastoPane-pane .leaflet-interactive{pointer-events:none!important}.force-scrollbar::-webkit-scrollbar{width:18px;background:#2a2a2a;border-left:1px solid #444}.force-scrollbar::-webkit-scrollbar-thumb{background:#888;border-radius:8px;border:4px solid #2a2a2a}.force-scrollbar::-webkit-scrollbar-thumb:hover{background:#aaa}
