@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-400.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-500.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-600.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/inter-700.woff2)format("woff2")}:root{--gold:#b4975a;--gold-light:#d4b87a;--gold-dark:#9a8049;--gold-dim:#8a7340;--bg-primary:#0f0f1a;--bg-secondary:#1a1a2e;--bg-tertiary:#252540;--bg-hover:#2d2d4a;--text-primary:#e8e8f0;--text-secondary:#9898b0;--text-muted:#686880;--border:#335;--border-light:#446;--border-color:#335;--steel:var(--bg-secondary);--steel-light:var(--bg-tertiary);--steel-dark:var(--bg-primary);--black:var(--bg-primary);--white:var(--text-primary);--gray-100:#e8e8f0;--gray-200:#d0d0e0;--gray-300:#b0b0c8;--gray-400:#9898b0;--gray-500:#8080a0;--gray-600:#686880;--gray-700:#505068;--gray-800:#383850;--gray-900:#252540;--success:#4ade80;--warning:#fbbf24;--error:#f87171;--info:#60a5fa;--primary:var(--gold);--primary-hover:var(--gold-light);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Consolas", "Monaco", monospace;--font-size-xs:11px;--font-size-sm:13px;--font-size-base:13px;--font-size-lg:15px;--font-size-xl:20px;--radius-sm:4px;--radius-md:6px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 2px #0003;--shadow-md:0 4px 6px #0000004d;--shadow-lg:0 10px 25px #0006;--shadow-xl:0 20px 40px #00000080;--shadow-gold:0 0 12px #b4975a4d;--transition-fast:.15s ease;--transition-normal:.2s ease;--z-base:0;--z-dropdown:100;--z-sticky:200;--z-modal:500;--z-toast:800}[data-theme=light]{--steel:#fff;--steel-light:#f5f5f5;--steel-dark:#e5e5e5;--black:#fff;--white:#171717;--gray-100:#171717;--gray-200:#262626;--gray-300:#404040;--gray-400:#525252;--gray-500:#737373;--gray-600:#a3a3a3;--gray-700:#d4d4d4;--gray-800:#e5e5e5;--gray-900:#f5f5f5;--gold:#9a8049;--gold-light:#b4975a;--gold-dark:#7a6639;--border:#e5e5e5;--border-light:#f0f0f0;--border-color:#e5e5e5;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000014;--shadow-lg:0 10px 25px #0000001f}[data-theme=light] body{background:#fafafa}[data-theme=light] .sidebar{background:#fff;border-right-color:#e5e5e5}[data-theme=light] .sidebar-header{background:#f5f5f5;border-bottom-color:#e5e5e5}[data-theme=light] .sidebar-nav{background:#f0f0f0;border-bottom-color:#e5e5e5}[data-theme=light] .nav-tab.active,[data-theme=light] .modal{background:#fff}[data-theme=light] .map-toolbar{background:#fff;border:1px solid #e5e5e5}[data-theme=light] .map-toolbar .toolbar-btn{color:#404040}[data-theme=light] .map-toolbar .toolbar-btn:hover{color:#171717;background:#f0f0f0}[data-theme=light] .map-toolbar .toolbar-btn.active{background:var(--gold);color:#fff}[data-theme=light] .map-toolbar .toolbar-btn:disabled{opacity:.4}[data-theme=light] .map-toolbar .toolbar-btn:disabled:hover{color:#404040;background:0 0}[data-theme=light] .map-control,[data-theme=light] .toast{background:#fff;border:1px solid #e5e5e5}[data-theme=light] .point-label{color:#262626;background:#fffffffa;border-color:#d4d4d4}[data-theme=light] .leaflet-control-zoom a{color:#404040!important;background:#fff!important;border:1px solid #e5e5e5!important}[data-theme=light] .leaflet-control-zoom a:hover{background:#f5f5f5!important}[data-theme=light] .leaflet-control-scale-line{color:#404040!important;background:#fff!important;border:1px solid #e5e5e5!important}[data-theme=light] .leaflet-control-attribution{color:#737373!important;background:#ffffffe6!important}[data-theme=light] .toggle-switch{background:#d4d4d4}[data-theme=light] .toggle-label{color:#404040}html{transition:background-color .3s}body,.sidebar,.sidebar-header,.sidebar-nav,.modal,.map-toolbar,.map-control,.toast,.leaflet-control-zoom a,.toggle-switch{transition:background-color .3s,border-color .3s,color .3s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--font-size-base);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--gold-dim);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gold)}*{scrollbar-width:thin;scrollbar-color:var(--gold-dim) transparent}a{color:var(--gold);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer;background:0 0;border:none}img,svg{max-width:100%;display:block}#app{width:100%;height:100%;display:flex}.sidebar{background:var(--bg-secondary);border-right:1px solid var(--border);border-left:3px solid var(--gold-dim);width:320px;height:100%;transition:width var(--transition-normal), margin var(--transition-normal);z-index:100;flex-direction:column;display:flex}.sidebar.collapsed{width:0;margin-left:-320px}.sidebar-header{padding:var(--space-3) var(--space-4);background:var(--bg-primary);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.logo{align-items:center;gap:var(--space-2);display:flex}.logo-icon{font-size:1.5rem}.logo-text{font-size:var(--font-size-xl);color:var(--gold);letter-spacing:-.02em;font-weight:700}.sidebar-toggle{background:var(--steel);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--gray-400);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.sidebar-toggle:hover{background:var(--steel-light);color:var(--white)}.sidebar.collapsed .toggle-icon{transform:rotate(180deg)}.sidebar-header-actions{align-items:center;gap:var(--space-2);display:flex}.sidebar-close-mobile{background:var(--steel);border-radius:var(--radius-sm);width:32px;height:32px;color:var(--gray-400);transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;font-size:1.25rem;display:none}.sidebar-close-mobile:hover{background:var(--steel-light);color:var(--white)}@media (width<=768px){.sidebar-close-mobile{display:flex}.sidebar-toggle{display:none}}.sidebar-nav{background:var(--black);border-bottom:1px solid var(--steel-light);display:flex}.nav-tab{align-items:center;gap:var(--space-1);padding:var(--space-3) var(--space-2);color:var(--gray-500);transition:all var(--transition-fast);border-bottom:2px solid #0000;flex-direction:column;flex:1;display:flex}.nav-tab:hover{color:var(--gray-300);background:#ffffff0d}.nav-tab.active{color:var(--gold);border-bottom-color:var(--gold);background:var(--steel)}.tab-icon{font-size:1.25rem}.tab-label{text-transform:uppercase;letter-spacing:.05em;font-size:.625rem;font-weight:600}.sidebar-content{flex:1;overflow-y:auto}.tab-panel{flex-direction:column;height:100%;display:none}.tab-panel.active{display:flex}.panel-header{padding:var(--space-4);border-bottom:1px solid var(--steel-light);justify-content:space-between;align-items:center;display:flex}.panel-header h2{font-size:var(--font-size-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.panel-body{padding:var(--space-4);flex:1;overflow-y:auto}.empty-state{color:var(--gray-500);text-align:center;padding:var(--space-8) var(--space-4);font-size:.875rem}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);border-radius:var(--radius-md);transition:all var(--transition-fast);font-weight:500;display:inline-flex}.btn-primary:hover{background:var(--gold-light);box-shadow:var(--shadow-gold)}.btn-ghost{color:var(--text-secondary);background:0 0;border:none}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-icon{border-radius:var(--radius-md);width:36px;height:36px;color:var(--text-secondary);transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.btn-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.tool-btn{background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);width:44px;height:44px;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:1.25rem;display:flex}.tool-btn.active{background:var(--gold);border-color:var(--gold);color:var(--black)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.tool-btn:disabled:hover{background:var(--steel-dark);border-color:var(--steel-light)}.settings-section{margin-bottom:var(--space-6)}.settings-section h3{color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3);font-size:.75rem;font-weight:600}.not-signed-in{color:var(--gray-400);margin-bottom:var(--space-3);font-size:.875rem}.basemap-options{gap:var(--space-2);grid-template-columns:repeat(2,1fr);display:grid}.basemap-option{align-items:center;gap:var(--space-1);padding:var(--space-3);background:var(--steel-dark);border:2px solid var(--steel-light);border-radius:var(--radius-md);transition:all var(--transition-fast);flex-direction:column;display:flex}.basemap-option:hover{border-color:var(--gray-500)}.basemap-option.active{border-color:var(--gold);background:#b4975a1a}.option-icon{font-size:1.5rem}.option-label{color:var(--gray-400);font-size:.75rem}.basemap-option.active .option-label{color:var(--gold)}.custom-basemaps-section{margin-top:var(--space-3)}.custom-basemaps-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.custom-basemaps-label{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.custom-basemaps-add{border-radius:var(--radius-sm);background:var(--steel-dark);border:1px solid var(--steel-light);width:28px;height:28px;color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.custom-basemaps-add:hover{border-color:var(--gold);color:var(--gold)}.custom-basemap-list{gap:var(--space-2);flex-direction:column;display:flex}.custom-basemap-item{align-items:stretch;gap:var(--space-1);display:flex}.custom-basemap-item .basemap-option{padding:var(--space-2) var(--space-3);flex-direction:row;flex:1;justify-content:flex-start}.custom-basemap-item .option-icon{font-size:1.1rem}.custom-basemap-remove{background:var(--steel-dark);border:2px solid var(--steel-light);border-radius:var(--radius-md);width:32px;color:var(--gray-500);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;display:flex}.custom-basemap-remove:hover{border-color:var(--red,#e74c3c);color:var(--red,#e74c3c);background:#e74c3c1a}.custom-basemap-modal-content{max-width:480px}.basemap-form .form-group{margin-bottom:var(--space-3)}.basemap-form label{margin-bottom:var(--space-1);color:var(--gray-300);font-size:.85rem;font-weight:600;display:block}.basemap-form .form-input{width:100%;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-sm);color:var(--text-primary);box-sizing:border-box;font-size:.9rem}.basemap-form .form-input:focus{border-color:var(--gold);outline:none}.basemap-form .form-hint{margin-top:var(--space-1);color:var(--gray-500);font-size:.75rem;display:block}.basemap-form .form-actions{margin-top:var(--space-4)}.preset-divider{align-items:center;gap:var(--space-3);margin:var(--space-4) 0;color:var(--gray-500);font-size:.8rem;display:flex}.preset-divider:before,.preset-divider:after{content:"";background:var(--steel-light);flex:1;height:1px}.preset-list{gap:var(--space-2);flex-direction:column;display:flex}.preset-item{padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);justify-content:space-between;align-items:center;display:flex}.preset-item:hover{border-color:var(--gold)}.preset-name{font-size:.85rem}.preset-add{color:var(--gold);opacity:0;transition:opacity var(--transition-fast);font-size:.75rem}.preset-item:hover .preset-add{opacity:1}.version-info{color:var(--gray-400);margin-bottom:var(--space-1);font-size:.875rem}.copyright{color:var(--gray-600);font-size:.75rem}.user-info{gap:var(--space-2);flex-direction:column;display:flex}.user-email{color:var(--gold);word-break:break-all;font-size:.875rem}.btn-secondary{border:1px solid var(--gold);color:var(--gold);background:0 0}.btn-secondary:hover{border-color:var(--gold-light);color:var(--gold-light);background:#b4975a1a}.modal-backdrop{z-index:var(--z-modal);opacity:0;visibility:hidden;transition:all var(--transition-normal);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-backdrop.visible{opacity:1;visibility:visible}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:90%;max-width:500px;box-shadow:var(--shadow-xl);transition:transform var(--transition-normal);transform:scale(.95)translateY(10px)}.modal-backdrop.visible .modal{transform:scale(1)translateY(0)}.modal-header{padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:var(--font-size-lg);color:var(--gold);font-weight:600}.modal-close{width:32px;height:32px;color:var(--gray-500);border-radius:var(--radius-sm);transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:1.5rem;display:flex}.modal-close:hover{background:var(--steel-light);color:var(--white)}.modal-tabs{border-bottom:1px solid var(--steel-light);display:flex}.modal-tab{padding:var(--space-3) var(--space-4);color:var(--gray-500);transition:all var(--transition-fast);border-bottom:2px solid #0000;flex:1;font-weight:600}.modal-tab:hover{color:var(--gray-300)}.modal-tab.active{color:var(--gold);border-bottom-color:var(--gold)}.modal-body{padding:var(--space-6)}.auth-form{gap:var(--space-4);flex-direction:column;display:flex}.auth-form.hidden{display:none}.form-field{gap:var(--space-1);flex-direction:column;display:flex}.form-field label{color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.form-field input{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--font-size-sm);transition:all var(--transition-fast);padding:8px}.form-field input::placeholder{color:var(--text-muted)}.form-field input:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #b4975a33}.btn-full{width:100%}.auth-error{padding:var(--space-3);border-radius:var(--radius-md);text-align:center;font-size:.875rem}.auth-error.error{color:#f87171;background:#ef444426;border:1px solid #ef44444d}.auth-error.success{color:#4ade80;background:#22c55e26;border:1px solid #22c55e4d}.oauth-buttons{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.btn-oauth{color:var(--text);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff26;border-radius:8px;justify-content:center;align-items:center;gap:10px;padding:10px 16px;font-size:14px;font-weight:500;transition:all .2s;display:flex}.btn-oauth:hover{background:#ffffff1a;border-color:#ffffff40}.btn-oauth svg{flex-shrink:0}.auth-divider{color:var(--text-dim,#888);align-items:center;gap:12px;margin:12px 0;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:#ffffff1a;flex:1;height:1px}.modal-lg{max-width:500px}.new-project-form{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.new-project-form input{padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);flex:1;font-size:.875rem}.new-project-form input:focus{border-color:var(--gold);outline:none}.new-project-form input::placeholder{color:var(--gray-600)}.projects-list{gap:var(--space-2);flex-direction:column;max-height:300px;display:flex;overflow-y:auto}.project-item{padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);justify-content:space-between;align-items:center;display:flex}.project-item:hover{border-color:var(--gray-500)}.project-item.active{border-color:var(--gold);background:#b4975a1a}.project-info{flex:1;min-width:0}.project-name{color:var(--white);white-space:nowrap;text-overflow:ellipsis;font-weight:600;display:block;overflow:hidden}.project-item.active .project-name{color:var(--gold)}.project-date{color:var(--gray-500);margin-top:var(--space-1);font-size:.75rem;display:block}.project-actions{gap:var(--space-1);opacity:0;transition:opacity var(--transition-fast);display:flex}.project-item:hover .project-actions{opacity:1}.project-selector{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;transition:all var(--transition-fast);max-width:200px;font-size:.875rem;font-weight:600;display:flex}.project-selector:hover{border-color:var(--gold)}.project-selector-name{text-align:left;white-space:nowrap;text-overflow:ellipsis;color:var(--gold);flex:1;overflow:hidden}.project-selector-arrow{color:var(--gray-500);font-size:.625rem}.layers-list{gap:var(--space-2);flex-direction:column;display:flex}.layer-item{align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);display:flex}.layer-item:hover{border-color:var(--gray-500)}.layer-item.active{border-color:var(--gold)}.layer-color{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.geometry-type-picker{gap:8px;display:flex}.geom-type-option{border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-secondary);cursor:pointer;flex-direction:column;flex:1;align-items:center;gap:4px;padding:12px 8px;font-size:.75rem;transition:all .15s;display:flex}.geom-type-option i{font-size:1.25rem}.geom-type-option:hover{border-color:var(--gold);color:var(--gold)}.geom-type-option.active{border-color:var(--gold);color:var(--gold);background:#b4975a1a}.geom-type-option.active i{color:var(--gold)}.layer-info{flex:1;min-width:0}.layer-name{color:var(--white);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:500;overflow:hidden}.layer-item.active .layer-name{color:var(--gold)}.layer-count{color:var(--gray-500);font-size:.75rem}.layer-visibility{color:var(--gray-400);transition:color var(--transition-fast), opacity var(--transition-fast)}.layer-visibility:hover{color:var(--accent)}.layer-visibility i{font-size:.875rem}.layer-item.layer-hidden{opacity:.5}.layer-item.layer-hidden .layer-visibility{color:var(--gray-600)}.layer-item.layer-hidden .layer-visibility:hover{color:var(--accent);opacity:1}.layer-drag-handle{width:20px;height:100%;color:var(--gray-600);cursor:grab;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:12px;display:flex}.layer-drag-handle:hover{color:var(--gold)}.layer-drag-handle:active{cursor:grabbing}.layer-item.dragging{opacity:.5}.layer-item.drag-over-top{border-top:2px solid var(--gold)}.layer-item.drag-over-bottom{border-bottom:2px solid var(--gold)}.layer-opacity-control{margin-top:6px;display:none}.layer-item:hover .layer-opacity-control,.layer-item.active .layer-opacity-control{display:block}.layer-opacity-label{color:var(--gray-500);align-items:center;gap:8px;font-size:11px;display:flex}.layer-opacity-label span{min-width:70px}.layer-opacity-slider{appearance:none;background:var(--bg-tertiary);cursor:pointer;border-radius:2px;outline:none;width:100%;height:4px}.layer-opacity-slider::-webkit-slider-thumb{appearance:none;background:var(--gold);cursor:pointer;border-radius:50%;width:12px;height:12px;transition:background .15s}.layer-opacity-slider::-moz-range-thumb{background:var(--gold);cursor:pointer;border:none;border-radius:50%;width:12px;height:12px;transition:background .15s}.layer-opacity-slider::-webkit-slider-thumb:hover{background:var(--gold-light)}.layer-opacity-slider::-moz-range-thumb:hover{background:var(--gold-light)}.layer-actions{color:var(--gray-400);transition:color var(--transition-fast);font-size:16px;font-weight:700}.layer-actions:hover{color:var(--gold)}.layer-actions-menu{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);min-width:200px;padding:4px;position:fixed}.layer-actions-menu .menu-item{border-radius:var(--radius-sm);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;transition:background var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.layer-actions-menu .menu-item:hover{background:var(--bg-hover)}.layer-actions-menu .menu-item.danger{color:var(--error)}.layer-actions-menu .menu-item.danger:hover{background:#f871711a}.stats-section h3{color:var(--gold);margin-bottom:12px;font-size:16px}.stats-section p{color:var(--text-primary);margin:6px 0;font-size:14px}.field-stats{margin-bottom:16px}.field-stats h4{color:var(--text-secondary);margin-bottom:6px;font-size:13px}.field-stats ul{margin:0;padding:0;list-style:none}.field-stats li{color:var(--text-primary);padding:4px 0;font-size:12px}.color-picker{gap:var(--space-2);flex-wrap:wrap;display:flex}.color-option{border-radius:var(--radius-md);cursor:pointer;width:36px;height:36px;transition:all var(--transition-fast);border:2px solid #0000}.color-option:hover{transform:scale(1.1)}.color-option.active{border-color:var(--white);box-shadow:0 0 0 2px var(--gold)}.feature-marker{background:0 0}.marker-pin{border:3px solid;border-radius:50% 50% 50% 0;width:24px;height:24px;margin:-20px 0 0 -12px;position:absolute;top:50%;left:50%;transform:rotate(-45deg);box-shadow:0 2px 6px #0000004d}.marker-inner{background:var(--white);border-radius:50%;width:8px;height:8px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.feature-cluster{background:0 0!important}.cluster-marker{color:var(--white);border:3px solid;border-radius:50%;justify-content:center;align-items:center;font-size:.875rem;font-weight:600;transition:transform .15s;display:flex;box-shadow:0 2px 8px #0000004d}.cluster-marker:hover{transform:scale(1.1)}.cluster-marker.cluster-small{width:36px;height:36px;font-size:.8125rem}.cluster-marker.cluster-medium{width:44px;height:44px;font-size:.9375rem}.cluster-marker.cluster-large{width:52px;height:52px;font-size:1rem}.cluster-marker span{text-shadow:0 1px 2px #0000004d}.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large,.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:0 0!important}.point-label{border:1px solid var(--gray-300);border-radius:var(--radius-sm);color:var(--gray-800);white-space:nowrap;text-overflow:ellipsis;background:#fffffff2;max-width:150px;padding:2px 6px;font-size:.75rem;font-weight:500;overflow:hidden;box-shadow:0 1px 4px #00000026}.point-label:before{display:none}.settings-toggles{gap:var(--space-3);flex-direction:column;display:flex}.toggle-row{cursor:pointer;padding:var(--space-2) 0;justify-content:space-between;align-items:center;display:flex}.toggle-label{font-size:var(--font-size-sm);color:var(--text-secondary)}.toggle-input{opacity:0;width:0;height:0;position:absolute}.toggle-switch{background:var(--gray-300);border-radius:12px;width:44px;height:24px;transition:background .2s;position:relative}.toggle-switch:after{content:"";background:var(--white);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.toggle-input:checked+.toggle-switch{background:var(--gold)}.toggle-input:checked+.toggle-switch:after{transform:translate(20px)}.toggle-input:focus+.toggle-switch{outline:2px solid var(--gold-light);outline-offset:2px}.feature-popup{min-width:180px;max-width:220px}.popup-header{margin-bottom:var(--space-1)}.popup-name{color:var(--gray-800);word-break:break-word;font-size:.9375rem;display:block}.popup-description{color:var(--gray-600);margin-bottom:var(--space-2);word-break:break-word;font-size:.8125rem;line-height:1.4}.popup-coords{color:var(--gray-500);font-size:.75rem;font-family:var(--font-mono);margin-bottom:var(--space-3)}.popup-actions{gap:var(--space-2);display:flex}.popup-btn{padding:var(--space-2);background:var(--gray-100);border:1px solid var(--gray-300);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);flex:1;font-size:.75rem}.popup-btn:hover{background:var(--gray-200)}.popup-delete:hover{border-color:var(--error);color:var(--error);background:#ef44441a}.leaflet-popup-content-wrapper{border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.leaflet-popup-content{margin:12px}.leaflet-popup-close-button{color:var(--gray-500)!important}.leaflet-popup-close-button:hover{color:var(--gray-800)!important}.sync-status{bottom:var(--space-4);right:var(--space-4);background:var(--steel);border-radius:var(--radius-full);z-index:1000;width:32px;height:32px;box-shadow:var(--shadow-md);transition:transform var(--transition-fast);justify-content:center;align-items:center;font-size:1rem;display:flex;position:fixed}.sync-status.flash{animation:.5s sync-flash}@keyframes sync-flash{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.panel-actions{gap:var(--space-2);display:flex}.data-actions{gap:var(--space-3);margin-bottom:var(--space-6);flex-direction:column;display:flex}.data-info{border-top:1px solid var(--steel-light);padding-top:var(--space-4)}.map-toolbar{z-index:1000;background:var(--bg-primary);border-bottom:1px solid var(--border);height:40px;box-shadow:var(--shadow-sm);align-items:center;gap:2px;padding:4px 8px;display:flex;position:absolute;top:0;left:0;right:0}.map-toolbar .toolbar-btn{padding:var(--space-1) var(--space-3);color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;align-items:center;height:100%;display:flex}.map-toolbar .toolbar-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.map-toolbar .toolbar-btn.active{color:var(--gold);border-bottom-color:var(--gold);background:#b4975a1a;font-weight:500}.map-toolbar .toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.map-toolbar .toolbar-btn:disabled:hover{color:var(--gray-300);background:0 0}.toolbar-divider{background:var(--border);width:1px;height:20px;margin:0 var(--space-2);align-self:center}.map-control.gps-panel{top:calc(var(--space-3) + 56px);align-items:center;gap:var(--space-2);color:var(--gray-300);padding:6px 10px;font-size:.75rem;display:none;left:50%;transform:translate(-50%)}.map-control.gps-panel.visible{display:flex}.gps-panel-btn{background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-sm);cursor:pointer;width:28px;height:28px;color:var(--gray-300);transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:.85rem;display:flex}.gps-panel-btn:hover{background:var(--steel-light);color:var(--white)}.gps-panel-btn.active{background:var(--gold);border-color:var(--gold);color:var(--steel)}.gps-position-marker{filter:drop-shadow(0 0 4px #4285f499);animation:1.6s ease-out infinite gpsPulse}@keyframes gpsPulse{0%{opacity:1}70%{opacity:.6}to{opacity:1}}.toolbar-search{align-items:center;display:flex;position:relative}.toolbar-search-input-wrapper{background:var(--steel-dark);border-radius:var(--radius-md);padding:0 var(--space-2);transition:all var(--transition-fast);border:1px solid #0000;align-items:center;display:flex}.toolbar-search-input-wrapper:focus-within{border-color:var(--gold);background:var(--steel)}.toolbar-search-icon{margin-right:var(--space-1);opacity:.6;font-size:.875rem}.toolbar-search-input{width:160px;padding:var(--space-2) var(--space-1);color:var(--white);background:0 0;border:none;outline:none;font-size:.875rem}.toolbar-search-input::placeholder{color:var(--gray-500)}.toolbar-search-input:focus{width:200px}.toolbar-search-clear{width:20px;height:20px;color:var(--gray-400);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:.75rem;display:flex}.toolbar-search-clear:hover{background:var(--steel-light);color:var(--white)}.toolbar-search-results{background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);min-width:280px;max-width:360px;max-height:320px;box-shadow:var(--shadow-lg);z-index:1001;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto}.toolbar-search-empty{padding:var(--space-4);text-align:center;color:var(--gray-500);font-size:.875rem}.toolbar-search-result{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background var(--transition-fast);display:flex}.toolbar-search-result:hover,.toolbar-search-result.selected{background:var(--steel-light)}.toolbar-search-result .result-color{border-radius:50%;flex-shrink:0;width:8px;height:8px}.toolbar-search-result .result-content{flex:1;min-width:0}.toolbar-search-result .result-name{color:var(--white);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;overflow:hidden}.toolbar-search-result .result-name mark{background:var(--gold);color:var(--steel);border-radius:2px;padding:0 2px}.toolbar-search-result .result-meta{align-items:center;gap:var(--space-2);color:var(--gray-500);font-size:.75rem;display:flex}.toolbar-search-result .result-group{border-radius:var(--radius-sm);text-transform:uppercase;border:1px solid;padding:1px 4px;font-size:.625rem}.toolbar-search-result .result-coords{font-family:var(--font-mono);font-size:.625rem}.toolbar-search-result .result-action{border-radius:var(--radius-sm);opacity:0;width:24px;height:24px;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:.75rem;display:flex}.toolbar-search-result:hover .result-action{opacity:1}.toolbar-search-result .result-action:hover{background:var(--steel-dark)}#map.mode-add{cursor:crosshair}#map.mode-edit,#map.mode-pan{cursor:grab}#map-container{flex:1;height:100%;position:relative}#map{z-index:var(--z-base);position:absolute;inset:40px 0 0}.map-control{z-index:1000;background:var(--steel);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--space-2);position:absolute}#basemap-switcher{top:var(--space-4);right:var(--space-4);gap:var(--space-1);display:flex}.basemap-btn{background:var(--steel-dark);border-radius:var(--radius-sm);width:40px;height:40px;transition:all var(--transition-fast);border:2px solid #0000;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.basemap-btn:hover{background:var(--steel-light)}.basemap-btn.active{border-color:var(--gold);background:var(--steel-light)}#coords-display{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-secondary);padding:var(--space-1) var(--space-3);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-top:1px solid var(--border);box-shadow:none;background:#0f0f1ad9;border-radius:0;bottom:0;left:0;right:0}#coords-display.copied{color:var(--gold)}.hidden{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.leaflet-control-zoom{box-shadow:var(--shadow-md)!important;border:none!important}.compass-control{background:var(--steel);border:1px solid var(--gold);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);justify-content:center;align-items:center;width:48px;height:48px;padding:6px;display:flex}.compass-svg{width:32px;height:32px}.compass-ring{fill:none;stroke:var(--gold-light);stroke-width:4px}.compass-arrow{fill:var(--gold);stroke:var(--gold-dark);stroke-width:2px}.compass-south{fill:var(--steel-light)}.compass-label{fill:var(--white);font-size:20px;font-weight:700;font-family:var(--font-sans)}.leaflet-control-zoom a{background:var(--steel)!important;color:var(--white)!important;border:none!important;width:36px!important;height:36px!important;font-size:18px!important;line-height:36px!important}.leaflet-control-zoom a:hover{background:var(--steel-light)!important}.leaflet-control-zoom a:first-child{border-radius:var(--radius-sm) var(--radius-sm) 0 0!important}.leaflet-control-zoom a:last-child{border-radius:0 0 var(--radius-sm) var(--radius-sm)!important}.leaflet-control-scale-line{background:var(--steel)!important;color:var(--white)!important;border-radius:var(--radius-sm)!important;border:none!important;padding:2px 8px!important;font-size:11px!important}.leaflet-control-attribution{color:var(--gray-400)!important;background:#333f42cc!important;font-size:10px!important}.leaflet-control-attribution a{color:var(--gold)!important}.toast-container{bottom:var(--space-6);gap:var(--space-2);z-index:var(--z-toast);pointer-events:none;flex-direction:column;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--steel-dark);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);opacity:0;transition:all var(--transition-normal);pointer-events:auto;border-left:3px solid var(--gray-500);display:flex;transform:translateY(20px)}.toast.visible{opacity:1;transform:translateY(0)}.toast.hiding{opacity:0;transform:translateY(-10px)}.toast-icon{font-size:1.125rem;font-weight:700}.toast-message{color:var(--white);font-size:.875rem}.toast-success{border-left-color:var(--success)}.toast-success .toast-icon{color:var(--success)}.toast-error{border-left-color:var(--error)}.toast-error .toast-icon{color:var(--error)}.toast-warning{border-left-color:var(--warning)}.toast-warning .toast-icon{color:var(--warning)}.toast-info{border-left-color:var(--info)}.toast-info .toast-icon{color:var(--info)}.loading-overlay{z-index:calc(var(--z-modal) + 100);opacity:0;visibility:hidden;transition:all var(--transition-normal);background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-overlay.visible{opacity:1;visibility:visible}.loading-spinner{align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.spinner-ring{border:4px solid var(--steel-light);border-top-color:var(--gold);border-radius:50%;width:48px;height:48px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner-text{color:var(--gold);font-size:.875rem;font-weight:600}.mobile-menu-btn{top:var(--space-4);left:var(--space-4);background:var(--steel);border-radius:var(--radius-md);width:44px;height:44px;box-shadow:var(--shadow-md);z-index:150;color:var(--white);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;font-size:1.5rem;display:none;position:fixed}.mobile-menu-btn:active{background:var(--steel-light)}.mobile-overlay{z-index:199;-webkit-tap-highlight-color:transparent;background:#00000080;display:none;position:fixed;inset:0}@media (width<=768px){.sidebar{z-index:200;height:100%;transition:transform var(--transition-normal);position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar.collapsed{width:320px;margin-left:0}.mobile-menu-btn{display:flex}.mobile-overlay.visible{display:block}.map-toolbar{top:var(--space-3);left:60px;right:var(--space-3);flex-wrap:nowrap;justify-content:flex-start;max-width:calc(100% - 70px);overflow-x:auto;transform:none}.map-toolbar .toolbar-btn{padding:var(--space-2);font-size:.8125rem}.toolbar-search-input{width:120px}.toolbar-search-input:focus{width:160px}.toolbar-search-results{min-width:240px;max-width:300px}.modal-backdrop.visible{z-index:9999;background:var(--bg-primary);flex-direction:column;justify-content:stretch;align-items:stretch;display:flex;position:fixed;inset:0}.modal-backdrop.visible .modal{border-radius:0;flex-direction:column;margin:0;display:flex;overflow-y:auto;width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important}.modal .modal-close{min-width:48px;min-height:48px;font-size:1.75rem}.modal-body{flex:1;overflow-y:auto}.toast-container{left:var(--space-4);right:var(--space-4);transform:none}.toast{width:100%}.attribute-table-modal{max-height:calc(100vh - 2rem)}.attribute-table-wrapper{max-height:calc(100vh - 200px);overflow:auto}#basemap-switcher{top:auto;bottom:60px;right:var(--space-3)}.leaflet-control-zoom a{width:44px!important;height:44px!important;line-height:44px!important}.sync-status{bottom:var(--space-4);right:60px}}@media (width<=480px){.sidebar,.sidebar.collapsed{width:100%}.tab-label{display:none}.nav-tab{padding:var(--space-3)}.tab-icon{font-size:1.5rem}.map-toolbar{left:52px;right:var(--space-2);flex-wrap:nowrap;gap:1px;padding:3px;overflow-x:auto}.map-toolbar .toolbar-btn{padding:var(--space-1) var(--space-2);font-size:.75rem}.map-toolbar .toolbar-btn .btn-text{display:none}.toolbar-divider{margin:0}.toolbar-search-input{width:80px}.toolbar-search-input:focus{width:140px}.toolbar-search-results{left:var(--space-2);right:var(--space-2);min-width:auto;max-width:none;position:fixed;top:70px}.basemap-options{grid-template-columns:repeat(4,1fr)}.basemap-option{padding:var(--space-2)}.option-label{display:none}#coords-display{padding:var(--space-1) var(--space-2);left:50%;bottom:var(--space-2);font-size:.625rem;transform:translate(-50%)}.tool-btn{width:40px;height:40px;font-size:1.125rem}.form-row{grid-template-columns:1fr}.add-field-row{flex-direction:column;align-items:stretch}.add-field-row input[type=text],.add-field-row select{width:100%}.add-group-row{flex-direction:column;align-items:stretch}.add-group-row input[type=text],.add-group-row select{width:100%}.points-list-controls{flex-direction:column}.points-search-wrapper{width:100%}.feature-popup{min-width:160px;max-width:200px}.popup-btn{padding:var(--space-1) var(--space-2)}.stats-grid{grid-template-columns:1fr}.layer-item,.project-item{padding:var(--space-2)}.toggle-row{min-height:44px}.toggle-switch{border-radius:14px;width:50px;height:28px}.toggle-switch:after{width:24px;height:24px}.toggle-input:checked+.toggle-switch:after{transform:translate(22px)}.icon-picker-dropdown{left:var(--space-2);right:var(--space-2);border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:60vh;position:fixed;top:auto;bottom:0}}@media (width<=360px){.map-toolbar{padding:2px;left:50px}.map-toolbar .toolbar-btn{padding:6px 8px;font-size:.6875rem}.mobile-menu-btn{width:40px;height:40px;font-size:1.25rem}.modal-body,.sidebar-header{padding:var(--space-3)}.logo-text{font-size:1rem}}@media (hover:none) and (pointer:coarse){.btn-icon{min-width:44px;min-height:44px}.project-actions,.layer-visibility,.group-actions{opacity:1}.tool-btn:hover{background:var(--steel-dark)}.tool-btn:active,.tool-btn.active{background:var(--gold)}.btn:active,.tool-btn:active,.nav-tab:active,.project-item:active,.layer-item:active{opacity:.8}.sidebar-content,.modal-body,.projects-list,.layers-list,.points-list,.custom-fields-list,.point-groups-list{scrollbar-width:none;-ms-overflow-style:none}.sidebar-content::-webkit-scrollbar{display:none}.modal-body::-webkit-scrollbar{display:none}.projects-list::-webkit-scrollbar{display:none}.layers-list::-webkit-scrollbar{display:none}.points-list::-webkit-scrollbar{display:none}.custom-fields-list::-webkit-scrollbar{display:none}.point-groups-list::-webkit-scrollbar{display:none}}@media (width<=768px){input,select,textarea{font-size:16px!important}button,.btn,.btn-icon,.tool-btn,.nav-tab,.modal-tab{min-width:44px;min-height:44px}.form-field input,.form-field select,.form-field textarea,input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{min-height:44px;padding:10px 12px}.auth-form .btn{min-height:48px;font-size:16px;font-weight:600}}@media (height<=480px) and (orientation:landscape){.sidebar-header{padding:var(--space-2) var(--space-3)}.nav-tab{padding:var(--space-2)}.panel-header{padding:var(--space-2) var(--space-3)}.modal{max-height:95vh}.modal-body{padding:var(--space-3)}.tool-group{margin-bottom:var(--space-3)}#coords-display{top:60px;bottom:auto;left:auto;right:var(--space-3);transform:none}}.point-details-modal{max-width:420px}.point-details-modal .modal-body{max-height:calc(100vh - 180px);overflow-y:auto}.point-details-modal .form-field{margin-bottom:var(--space-4)}.point-details-modal textarea{padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);resize:vertical;width:100%;min-height:80px;transition:all var(--transition-fast);font-family:inherit;font-size:1rem}.point-details-modal textarea::placeholder{color:var(--gray-600)}.point-details-modal textarea:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #b4975a33}.form-row{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.readonly-field{cursor:default;font-family:var(--font-mono);font-size:.875rem;background:var(--steel)!important;color:var(--gray-400)!important}.timestamps{gap:var(--space-1);padding-top:var(--space-2);border-top:1px solid var(--steel-light);margin-bottom:var(--space-4);flex-direction:column;display:flex}.timestamp{color:var(--gray-500);font-size:.75rem}.form-actions{align-items:center;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--steel-light);display:flex}.action-spacer{flex:1}.btn-danger{border:1px solid var(--error);color:var(--error);background:0 0}.btn-danger:hover{background:#ef444426}.popup-view-details{background:var(--gold);color:var(--black);font-weight:600}.popup-view-details:hover{background:var(--gold-light)}@media (width<=480px){.form-row{grid-template-columns:1fr}.point-details-modal .modal-body{max-height:calc(100vh - 140px)}}.custom-fields-modal{max-width:520px}.custom-fields-modal .modal-description{color:var(--gray-400);margin-bottom:var(--space-4);font-size:.875rem}.add-field-form{background:var(--steel);padding:var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.add-field-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.add-field-row input[type=text]{flex:1;min-width:140px}.add-field-row select{width:140px;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);font-size:.875rem}.add-field-row select:focus{border-color:var(--gold);outline:none}.checkbox-label{align-items:center;gap:var(--space-2);color:var(--gray-300);white-space:nowrap;font-size:.875rem;display:flex}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold)}.dropdown-options-row{align-items:center;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--steel-light);display:flex}.dropdown-options-row label{color:var(--gray-400);white-space:nowrap;font-size:.8125rem}.dropdown-options-row input{flex:1}.custom-fields-list{max-height:300px;overflow-y:auto}.custom-field-item{padding:var(--space-3);background:var(--steel);border-radius:var(--radius-md);margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.custom-field-item:last-child{margin-bottom:0}.field-info{align-items:center;gap:var(--space-3);flex:1;min-width:0;display:flex}.field-icon{font-size:1rem}.field-name{color:var(--white);font-weight:600}.field-type{color:var(--gray-500);text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:.75rem;overflow:hidden}.field-required{color:var(--gold);border-radius:var(--radius-sm);text-transform:uppercase;background:#b4975a26;padding:2px 6px;font-size:.625rem;font-weight:600}.field-actions{gap:var(--space-1);display:flex}.custom-fields-section{margin-top:var(--space-2)}.custom-fields-divider{align-items:center;gap:var(--space-3);margin:var(--space-4) 0;color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;display:flex}.custom-fields-divider:before,.custom-fields-divider:after{content:"";background:var(--steel-light);flex:1;height:1px}.custom-field{margin-bottom:var(--space-3)}.custom-field:last-child{margin-bottom:0}.required-star{color:var(--error);margin-left:2px}.checkbox-inline{align-items:center;gap:var(--space-2);color:var(--gray-300);padding:var(--space-2);font-size:.875rem;display:inline-flex}.checkbox-inline input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold)}.multiselect-container{gap:var(--space-1);padding:var(--space-2);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.panel-settings-btn{padding:var(--space-1) var(--space-2);border:1px solid var(--steel-light);border-radius:var(--radius-sm);color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);background:0 0;font-size:.875rem}.panel-settings-btn:hover{background:var(--steel-light);color:var(--white);border-color:var(--gold)}.modal-footer{justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--steel-light);display:flex}.marker-emoji{font-size:10px;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.marker-fa-icon{color:var(--white);font-size:11px;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(45deg)}.point-groups-modal{max-width:500px}.add-group-form{margin-bottom:var(--space-4)}.add-group-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.add-group-row input[type=text]{flex:1;min-width:120px}.add-group-row select{min-width:100px}.color-picker-wrapper{align-items:center;display:flex;position:relative}.color-picker-wrapper input[type=color]{border:2px solid var(--steel-light);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:36px;height:36px;padding:0}.color-picker-wrapper input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.color-picker-wrapper input[type=color]::-webkit-color-swatch{border:none;border-radius:2px}.color-palette{gap:var(--space-1);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.color-swatch{border-radius:var(--radius-sm);cursor:pointer;width:24px;height:24px;transition:all var(--transition-fast);border:2px solid #0000}.color-swatch:hover{border-color:var(--white);transform:scale(1.1)}.point-groups-list{max-height:300px;overflow-y:auto}.point-group-item{padding:var(--space-2) var(--space-3);background:var(--steel-dark);border-radius:var(--radius-md);margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.point-group-item:last-child{margin-bottom:0}.group-info{align-items:center;gap:var(--space-2);display:flex}.group-color-dot{border-radius:50%;flex-shrink:0;width:16px;height:16px}.group-icon{font-size:1rem}.group-name{color:var(--white);font-weight:600}.group-actions{align-items:center;gap:var(--space-2);display:flex}.group-color-edit{border:1px solid var(--steel-light);border-radius:var(--radius-sm);cursor:pointer;background:0 0;width:28px;height:28px;padding:0}.group-color-edit::-webkit-color-swatch-wrapper{padding:2px}.group-color-edit::-webkit-color-swatch{border:none;border-radius:2px}.icon-picker{position:relative}.icon-picker-trigger{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;transition:all var(--transition-fast);min-width:140px;display:flex}.icon-picker-trigger:hover{background:var(--steel-light)}.icon-picker-trigger i:first-child{font-size:1rem}.icon-picker-trigger .icon-label{text-align:left;flex:1;font-size:.875rem}.icon-picker-trigger .icon-arrow{opacity:.7;transition:transform var(--transition-fast);font-size:.75rem}.icon-picker-dropdown.open~.icon-picker-trigger .icon-arrow,.icon-picker-dropdown.open+.icon-picker-trigger .icon-arrow{transform:rotate(180deg)}.icon-picker-dropdown{background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);min-width:280px;max-height:320px;box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);flex-direction:column;display:none;position:absolute;top:calc(100% + 4px);left:0;right:0}.icon-picker-dropdown.open{display:flex}.icon-search-wrapper{padding:var(--space-2);border-bottom:1px solid var(--steel-light)}.icon-search{width:100%;padding:var(--space-2);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-sm);color:var(--white);font-size:.875rem}.icon-search::placeholder{color:var(--gray-500)}.icon-grid-container{padding:var(--space-2);flex:1;overflow-y:auto}.icon-category{margin-bottom:var(--space-3)}.icon-category:last-child{margin-bottom:0}.icon-category-label{color:var(--gold);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1);padding:0 var(--space-1);font-size:.75rem;font-weight:600}.icon-grid{gap:var(--space-1);grid-template-columns:repeat(auto-fill,minmax(36px,1fr));display:grid}.icon-option{background:var(--steel-dark);border-radius:var(--radius-sm);width:36px;height:36px;color:var(--white);cursor:pointer;transition:all var(--transition-fast);border:2px solid #0000;justify-content:center;align-items:center;font-size:1rem;display:flex}.icon-option:hover{background:var(--steel-light);border-color:var(--gold)}.icon-option.selected{background:var(--gold);color:var(--black);border-color:var(--gold)}.points-list-controls{gap:var(--space-2);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.points-search-wrapper{flex:1;min-width:150px;position:relative}.points-search-wrapper input{width:100%;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);padding-right:36px;font-size:.875rem}.points-search-wrapper input:focus{border-color:var(--gold);outline:none}.points-search-wrapper input::placeholder{color:var(--gray-500)}.points-search-clear{width:20px;height:20px;color:var(--gray-500);transition:all var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.points-search-clear:hover{background:var(--steel-light);color:var(--white)}.points-layer-filter{min-width:120px;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;font-size:.875rem}.points-layer-filter:focus{border-color:var(--gold);outline:none}.points-list-empty{padding:var(--space-8);color:var(--gray-500);text-align:center;justify-content:center;align-items:center;font-size:.875rem;display:flex}.points-list-table-wrapper{border:1px solid var(--steel-light);border-radius:var(--radius-md);background:var(--steel-dark);overflow-x:auto}.points-list-table{border-collapse:collapse;width:100%;font-size:.813rem}.points-list-table th{text-align:left;padding:var(--space-2) var(--space-3);background:var(--black);color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--steel-light);white-space:nowrap;font-size:.75rem;font-weight:600}.points-list-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.points-list-table th.sortable:hover{color:var(--gold)}.points-list-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--steel-light);color:var(--gray-300);vertical-align:middle}.points-list-table tbody tr:hover{background:#b4975a1a}.points-list-table tbody tr:last-child td{border-bottom:none}.points-list-name{align-items:center;gap:var(--space-2);color:var(--white);font-weight:500;display:flex}.layer-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.points-list-layer{color:var(--gray-400)}.points-list-group .group-badge{border-radius:var(--radius-full);color:var(--white);padding:2px 8px;font-size:.688rem;font-weight:600;display:inline-block}.points-list-coords{font-family:var(--font-mono);color:var(--gray-500);font-size:.75rem}.points-list-date{color:var(--gray-500);font-size:.75rem}.points-list-actions{gap:var(--space-1);display:flex}.list-btn{border-radius:var(--radius-sm);width:28px;height:28px;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-size:.875rem;display:flex}.list-btn:hover{background:var(--steel-light);border-color:var(--steel-light)}.list-btn.list-delete:hover{border-color:var(--error);background:#ef444433}.points-list-footer{padding:var(--space-2) var(--space-3);color:var(--gray-500);text-align:center;border-top:1px solid var(--steel-light);font-size:.75rem}.attr-table-overlay{z-index:calc(var(--z-modal) + 10);opacity:0;visibility:hidden;transition:all var(--transition-normal);background:#000000d9;justify-content:stretch;align-items:stretch;display:flex;position:fixed;inset:0}.attr-table-overlay.visible{opacity:1;visibility:visible}.attr-table-container{margin:var(--space-4);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);flex-direction:column;flex:1;display:flex;overflow:hidden}.attr-table-header{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--steel-dark);border-bottom:1px solid var(--steel-light);flex-wrap:wrap;display:flex}.attr-table-title{align-items:center;gap:var(--space-2);display:flex}.attr-table-icon{font-size:1.5rem}.attr-table-title h2{color:var(--gold);margin:0;font-size:1.25rem;font-weight:700}.attr-table-count{color:var(--gray-400);padding:var(--space-1) var(--space-2);background:var(--steel);border-radius:var(--radius-full);font-size:.875rem}.attr-table-controls{align-items:center;gap:var(--space-2);flex:1;display:flex}.attr-table-search{flex:1;max-width:300px;position:relative}.attr-table-search input{width:100%;padding:var(--space-2) var(--space-3);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);padding-right:36px;font-size:.875rem}.attr-table-search input:focus{border-color:var(--gold);outline:none}.attr-table-search input::placeholder{color:var(--gray-500)}.attr-search-clear{width:24px;height:24px;color:var(--gray-500);cursor:pointer;transition:all var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;font-size:.75rem;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.attr-search-clear:hover{background:var(--steel-light);color:var(--white)}.attr-filter{min-width:140px;padding:var(--space-2) var(--space-3);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;font-size:.875rem}.attr-filter:focus{border-color:var(--gold);outline:none}.attr-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--gray-300);cursor:pointer;transition:all var(--transition-fast);font-size:.875rem;font-weight:500;display:inline-flex}.attr-btn:hover:not(:disabled){background:var(--steel-light);color:var(--white)}.attr-btn:disabled{opacity:.5;cursor:not-allowed}.attr-btn-primary{background:var(--gold);border-color:var(--gold);color:var(--black)}.attr-btn-primary:hover{background:var(--gold-light);border-color:var(--gold-light)}.attr-btn-secondary:hover:not(:disabled){border-color:var(--error);color:var(--error)}.attr-table-actions{align-items:center;gap:var(--space-2);display:flex}.attr-table-close{width:40px;height:40px;color:var(--gray-400);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;font-size:1.5rem;display:flex}.attr-table-close:hover{background:var(--steel-light);color:var(--white)}.attr-table-body{flex:1;position:relative;overflow:auto}.attr-table{border-collapse:collapse;width:100%;font-size:.875rem}.attr-table thead{z-index:10;position:sticky;top:0}.attr-table th{text-align:left;padding:var(--space-3) var(--space-4);background:var(--black);color:var(--gray-400);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--gold);white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:.75rem;font-weight:600}.attr-table th.sortable{cursor:pointer}.attr-table th.sortable:hover{color:var(--gold)}.attr-table th .sort-icon{margin-left:var(--space-1);font-size:.625rem}.attr-table th .sort-icon.inactive{opacity:.3}.attr-table td{padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--steel-light);color:var(--gray-200);vertical-align:middle}.attr-table tbody tr:hover{background:#b4975a14}.attr-table tbody tr.selected{background:#b4975a26}.attr-table tbody tr.selected:hover{background:#b4975a33}.col-checkbox{text-align:center;width:40px}.col-checkbox input{width:16px;height:16px;accent-color:var(--gold)}.col-name{min-width:180px}.col-name .layer-dot{width:10px;height:10px;margin-right:var(--space-2);border-radius:50%;display:inline-block}.col-layer{min-width:120px;color:var(--gray-400)}.col-group{min-width:100px}.col-group .group-badge{border-radius:var(--radius-full);color:var(--white);padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-block}.col-lat,.col-lng{min-width:110px;font-family:var(--font-mono);color:var(--gray-400);font-size:.813rem}.col-custom{min-width:120px}.col-updated{min-width:100px;color:var(--gray-500);font-size:.813rem}.col-actions{text-align:right;width:120px}.no-value{color:var(--gray-600)}.editable{cursor:pointer;transition:background var(--transition-fast)}.editable:hover{background:#b4975a1a}.inline-edit-input{width:100%;padding:var(--space-1) var(--space-2);background:var(--steel-dark);border:1px solid var(--gold);border-radius:var(--radius-sm);color:var(--white);font-size:inherit;font-family:inherit}.inline-edit-input:focus{outline:none;box-shadow:0 0 0 2px #b4975a4d}.attr-row-btn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;font-size:.813rem;display:inline-flex}.attr-row-btn:hover{background:var(--steel-light);border-color:var(--steel-light);color:var(--white)}.attr-row-btn-danger:hover{border-color:var(--error);color:var(--error);background:#ef444433}.attr-table-empty{color:var(--gray-500);justify-content:center;align-items:center;font-size:1rem;display:none;position:absolute;inset:0}.attr-table-empty.visible{display:flex}.attr-table-footer{padding:var(--space-3) var(--space-6);background:var(--steel-dark);border-top:1px solid var(--steel-light);justify-content:space-between;align-items:center;display:flex}.attr-table-selection{align-items:center;gap:var(--space-2);color:var(--gray-400);font-size:.875rem;display:flex}.attr-table-selection input{width:16px;height:16px;accent-color:var(--gold)}.attr-table-selection label{cursor:pointer}#attr-selected-count{color:var(--gold);font-weight:600}.attr-table-pagination{color:var(--gray-500);font-size:.875rem}.attr-page-controls{align-items:center;gap:var(--space-2);display:flex}#attr-page-info{color:var(--gray-400);white-space:nowrap;font-size:.875rem}#attr-page-size{min-width:80px}.resize-handle{cursor:col-resize;z-index:10;opacity:0;width:8px;transition:opacity var(--transition-fast);position:absolute;top:0;bottom:0;right:0}.resizable:hover .resize-handle{opacity:1}.resize-handle:after{content:"";background:var(--gold);border-radius:1px;width:2px;height:60%;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.sort-priority{background:var(--gold);width:14px;height:14px;color:var(--black);text-align:center;border-radius:50%;margin-left:2px;font-size:.625rem;font-weight:700;line-height:14px;display:inline-block}.attr-table.compact-mode td,.attr-table.compact-mode th{padding:var(--space-1) var(--space-2);font-size:.8125rem}.attr-table.compact-mode .layer-dot{width:8px;height:8px}.attr-table.compact-mode .attr-row-btn{width:24px;height:24px;font-size:.75rem}.attr-table.alternating-rows tbody tr:nth-child(2n){background:#ffffff05}.attr-table.alternating-rows tbody tr:nth-child(2n):hover{background:#b4975a14}.attr-table.alternating-rows tbody tr:nth-child(2n).selected{background:#b4975a26}.attr-table.freeze-first-col .frozen{z-index:5;background:var(--steel-dark);position:sticky;left:0}.attr-table.freeze-first-col tbody tr:hover .frozen{background:#b4975a14}.attr-table.freeze-first-col tbody tr.selected .frozen{background:#b4975a26}.attr-table.freeze-first-col.alternating-rows tbody tr:nth-child(2n) .frozen{background:var(--steel)}.cell-selected{outline:2px solid var(--gold);outline-offset:-2px;position:relative}.cell-saved{animation:.6s cellFlash}@keyframes cellFlash{0%,to{background:0 0}50%{background:#22c55e4d}}.column-visibility-list{gap:var(--space-2);flex-direction:column;max-height:400px;display:flex;overflow-y:auto}.column-visibility-item{align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--steel-dark);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast);display:flex}.column-visibility-item:hover{background:var(--steel-light)}.column-visibility-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold)}.column-visibility-item span{color:var(--white);flex:1;font-size:.875rem}@media (width<=768px){.attr-table-container{border-radius:0;margin:0}.attr-table-header{padding:var(--space-3) var(--space-4)}.attr-table-controls{flex-wrap:wrap}.attr-table-search{width:100%;max-width:none}.attr-filter{flex:1;min-width:0}.attr-btn span{display:none}.attr-table-footer{gap:var(--space-2);flex-wrap:wrap}.attr-page-controls{flex-wrap:wrap;justify-content:center}}@media (width<=480px){.attr-table-title h2{display:none}.attr-table-count{margin-left:0}}.stats-panel{top:var(--space-4);right:var(--space-4);width:360px;max-height:calc(100vh - var(--space-8));background:var(--steel);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);border:1px solid var(--steel-light);z-index:1100;flex-direction:column;display:none;position:fixed;overflow:hidden}.stats-panel.visible{display:flex}.stats-header{padding:var(--space-3) var(--space-4);background:var(--steel-dark);border-bottom:1px solid var(--steel-light);justify-content:space-between;align-items:center;display:flex}.stats-title{align-items:center;gap:var(--space-2);display:flex}.stats-icon{font-size:1.25rem}.stats-title h3{color:var(--white);margin:0;font-size:1rem;font-weight:600}.stats-close{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1rem;display:flex}.stats-close:hover{background:var(--steel-light);color:var(--white)}.stats-content{padding:var(--space-4);flex:1;overflow-y:auto}.stats-loading,.stats-empty{text-align:center;color:var(--gray-500);padding:var(--space-8)}.stats-empty p{margin:0 0 var(--space-2)}.stats-hint{color:var(--gray-600);font-size:.875rem}.stats-section{margin-bottom:var(--space-6)}.stats-section:last-child{margin-bottom:0}.stats-section-title{margin:0 0 var(--space-3);text-transform:uppercase;letter-spacing:.05em;color:var(--gray-500);font-size:.75rem;font-weight:600}.stats-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.stats-card{background:var(--steel-dark);border-radius:var(--radius-md);padding:var(--space-3);text-align:center}.stats-card-primary{background:linear-gradient(135deg, var(--gold-dark), var(--gold))}.stats-card-value{color:var(--white);font-size:1.5rem;font-weight:700;line-height:1.2;display:block}.stats-card-primary .stats-card-value{color:var(--black)}.stats-card-label{color:var(--gray-400);margin-top:var(--space-1);font-size:.75rem;display:block}.stats-card-primary .stats-card-label{color:#000000b3}.stats-bars{gap:var(--space-2);flex-direction:column;display:flex}.stats-bar-row{align-items:center;gap:var(--space-2);display:flex}.stats-bar-label{align-items:center;gap:var(--space-2);min-width:100px;color:var(--white);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;display:flex;overflow:hidden}.stats-bar-label .layer-dot,.stats-bar-label .group-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.stats-bar-track{background:var(--steel-dark);border-radius:4px;flex:1;height:8px;overflow:hidden}.stats-bar-fill{height:100%;transition:width var(--transition-normal);border-radius:4px}.stats-bar-value{text-align:right;min-width:32px;color:var(--gray-400);font-size:.875rem;font-weight:600}.stats-coords{gap:var(--space-2);flex-direction:column;display:flex}.stats-coord-row{justify-content:space-between;align-items:center;font-size:.875rem;display:flex}.stats-coord-label{color:var(--gray-400)}.stats-coord-range{font-family:var(--font-mono);color:var(--white);font-size:.8125rem}.stats-fields{gap:var(--space-3);flex-direction:column;display:flex}.stats-field-item{background:var(--steel-dark);border-radius:var(--radius-md);padding:var(--space-3)}.stats-field-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.stats-field-name{color:var(--white);font-size:.875rem;font-weight:600}.stats-field-fill{color:var(--gray-500);font-size:.75rem}.stats-field-details{gap:var(--space-2);color:var(--gray-400);flex-wrap:wrap;font-size:.8125rem;display:flex}.stats-field-distribution{gap:var(--space-1)}.stats-chip{background:var(--steel-light);border-radius:var(--radius-sm);color:var(--gray-300);padding:2px 8px;font-size:.75rem;display:inline-block}@media (width<=768px){.stats-panel{border-radius:0;width:auto;max-height:100vh;top:0;left:0;right:0}.stats-grid{grid-template-columns:repeat(3,1fr)}}#map.mode-select,#map.mode-lasso{cursor:crosshair!important}#map.mode-move{cursor:move!important}.feature-marker.selected .marker-pin,.leaflet-marker-icon.selected .marker-pin{box-shadow:0 0 0 3px var(--gold), 0 0 12px var(--gold-light);transform:scale(1.1);z-index:1000!important}.feature-marker.selected:after,.leaflet-marker-icon.selected:after{content:"✓";background:var(--gold);width:18px;height:18px;color:var(--black);box-shadow:var(--shadow-md);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex;position:absolute;top:-8px;right:-8px}.selection-toolbar{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-modal);transition:opacity var(--transition-normal), transform var(--transition-normal);display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.selection-toolbar.hidden{opacity:0;pointer-events:none;transform:translate(-50%)translateY(20px)}.selection-info{padding-right:var(--space-3);border-right:1px solid var(--steel-light)}#selection-count{color:var(--gold);font-size:.875rem;font-weight:600}.selection-actions{gap:var(--space-2);display:flex}.selection-btn{padding:var(--space-2) var(--space-3);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;transition:all var(--transition-fast);font-size:1rem}.selection-btn:hover{background:var(--steel-light);border-color:var(--gold)}.selection-btn.danger:hover{background:var(--error);border-color:var(--error)}#mode-select.active{background:var(--gold);color:var(--black)}@media (width<=768px){.selection-toolbar{padding:var(--space-2) var(--space-3);bottom:80px}.selection-btn{padding:var(--space-2)}}#map.mode-measure{cursor:crosshair!important}.measure-tooltip{padding:var(--space-2) var(--space-3);background:var(--steel-dark);color:var(--white);border:1px solid var(--gold);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-toast);pointer-events:none;white-space:nowrap;font-size:.875rem;line-height:1.4;position:fixed}.measure-tooltip.hidden{display:none}.measure-result{padding:var(--space-3) var(--space-4);background:var(--steel-dark);border:2px solid var(--gold);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-modal);align-items:center;gap:var(--space-3);display:flex;position:fixed;top:80px;right:20px}.measure-result-content{color:var(--white);font-size:1rem;font-weight:600;line-height:1.5}.measure-result-close{padding:var(--space-1) var(--space-2);border:1px solid var(--gray-600);border-radius:var(--radius-sm);color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);background:0 0;font-size:.875rem}.measure-result-close:hover{background:var(--steel-light);color:var(--white)}.tool-btn.active{background:var(--gold);color:var(--black);border-color:var(--gold)}#map.mode-draw{cursor:crosshair!important}#map.mode-edit-shape{cursor:pointer!important}.draw-tooltip{padding:var(--space-2) var(--space-3);background:var(--steel-dark);color:var(--white);border:1px solid var(--gold);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:var(--z-toast);pointer-events:none;white-space:nowrap;font-size:.875rem;line-height:1.4;position:fixed}.draw-tooltip.hidden{display:none}.drawing-action-bar{gap:var(--space-3);z-index:var(--z-toast);pointer-events:all;display:flex;position:absolute;bottom:48px;left:50%;transform:translate(-50%)}.drawing-action-bar.hidden{display:none}.draw-action-btn{align-items:center;gap:var(--space-2);border-radius:var(--radius-full);cursor:pointer;min-height:44px;box-shadow:var(--shadow-lg);border:none;padding:10px 20px;font-size:.9rem;font-weight:600;transition:opacity .15s;display:flex}.draw-action-btn:active{opacity:.8}.draw-finish-btn{background:var(--gold);color:var(--steel-dark)}.draw-cancel-btn{background:var(--steel-medium,#2a2a3e);color:var(--white);border:1px solid var(--border-color)}.shape-popup{min-width:180px}.shape-popup .popup-header{margin-bottom:var(--space-2)}.shape-popup .popup-name{color:var(--steel-dark);font-size:1rem}.shape-popup .popup-info{color:var(--gray-500);margin-bottom:var(--space-2);font-size:.8125rem}.shape-popup .popup-measurement{color:var(--gray-600);margin-bottom:var(--space-2);padding:var(--space-2);background:var(--gray-100);border-radius:var(--radius-sm);font-size:.875rem;font-weight:500}.shape-popup .popup-actions{gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--gray-200);display:flex}.shape-popup .popup-btn{padding:var(--space-1) var(--space-2);background:var(--gray-100);border:1px solid var(--gray-300);border-radius:var(--radius-sm);color:var(--gray-700);cursor:pointer;transition:all var(--transition-fast);flex:1;font-size:.75rem}.shape-popup .popup-btn:hover{background:var(--gold);border-color:var(--gold);color:var(--black)}.shape-style-modal{max-width:360px}.shape-style-modal .form-group{margin-bottom:var(--space-4)}.shape-style-modal label{margin-bottom:var(--space-2);color:var(--white);font-weight:500;display:block}.shape-style-modal input[type=text]{width:100%;padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);font-size:1rem}.shape-style-modal input[type=color]{border:1px solid var(--steel-light);border-radius:var(--radius-sm);cursor:pointer;width:48px;height:32px;padding:0}.shape-style-modal input[type=range]{accent-color:var(--gold);flex:1}.shape-style-modal .form-group:has(input[type=range]){align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.shape-style-modal .form-group:has(input[type=range]) label{width:100%;margin-bottom:var(--space-1)}.shape-style-modal .form-group span{min-width:40px;color:var(--gray-400);font-size:.875rem}.data-section-header{padding:var(--space-3) 0;margin-top:var(--space-4);border-top:1px solid var(--steel-light)}.data-section-header h3{color:var(--gray-400);text-transform:uppercase;letter-spacing:.5px;font-size:.875rem;font-weight:600}.shapes-list-controls{gap:var(--space-2);margin-bottom:var(--space-3);flex-direction:column;display:flex}.shapes-search-wrapper{position:relative}.shapes-search-wrapper input{width:100%;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);padding-right:36px;font-size:.875rem}.shapes-search-wrapper input:focus{border-color:var(--gold);outline:none}.shapes-search-clear{color:var(--gray-500);cursor:pointer;opacity:.6;background:0 0;border:none;padding:4px 8px;font-size:.75rem;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.shapes-search-clear:hover{opacity:1;color:var(--white)}.shapes-layer-filter,.shapes-type-filter{width:100%;padding:var(--space-2) var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);font-size:.875rem}.shapes-layer-filter:focus,.shapes-type-filter:focus{border-color:var(--gold);outline:none}.shapes-empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--gray-500);font-size:.875rem}.shapes-layer-group{margin-bottom:var(--space-3)}.shapes-layer-header{align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--steel-dark);border-radius:var(--radius-sm);margin-bottom:var(--space-1);display:flex}.shapes-layer-color{border-radius:2px;flex-shrink:0;width:12px;height:12px}.shapes-layer-name{color:var(--white);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8125rem;font-weight:600;overflow:hidden}.shapes-layer-count{background:var(--steel-light);color:var(--gray-400);border-radius:10px;padding:2px 6px;font-size:.75rem}.shapes-layer-items{flex-direction:column;gap:2px;display:flex}.shape-item{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--steel);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);border:1px solid #0000;display:flex}.shape-item:hover{background:var(--steel-light);border-color:var(--gold)}.shape-item-icon{opacity:.8;font-size:1.25rem;line-height:1}.shape-item-content{flex:1;min-width:0}.shape-item-name{color:var(--white);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500;overflow:hidden}.shape-item-meta{color:var(--gray-500);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.shape-item-actions{opacity:0;transition:opacity var(--transition-fast);gap:2px;display:flex}.shape-item:hover .shape-item-actions{opacity:1}.shape-action-btn{background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-sm);color:var(--gray-400);cursor:pointer;transition:all var(--transition-fast);padding:4px 6px;font-size:.75rem}.shape-action-btn:hover{background:var(--gold);border-color:var(--gold);color:var(--black)}@media (hover:none){.shape-item-actions{opacity:1}}.goto-modal{max-width:400px}.goto-modal .form-group{margin-bottom:var(--space-4)}.goto-modal label{margin-bottom:var(--space-2);color:var(--white);font-weight:500;display:block}.goto-modal input{width:100%;padding:var(--space-3);background:var(--steel-dark);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);font-size:1rem;font-family:var(--font-mono)}.goto-modal input:focus{border-color:var(--gold);outline:none}.goto-modal input.error{border-color:var(--error);animation:.3s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.form-hint{margin-top:var(--space-2);color:var(--gray-500);font-size:.8125rem}.form-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.goto-marker{background:0 0;border:none}.goto-marker-pin{font-size:24px;animation:.5s infinite bounce}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.location-marker{background:0 0;border:none}.location-marker-dot{background:#3b82f6;border:3px solid #fff;border-radius:50%;width:14px;height:14px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 6px #0000004d}.location-marker-pulse{background:#3b82f64d;border-radius:50%;width:40px;height:40px;animation:2s infinite pulse-ring;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes pulse-ring{0%{opacity:1;transform:translate(-50%,-50%)scale(.5)}to{opacity:0;transform:translate(-50%,-50%)scale(1.5)}}.tool-group{margin-bottom:var(--space-4)}.tool-group h3{color:var(--gray-500);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2);font-size:.75rem;font-weight:600}.tool-buttons{gap:var(--space-2);flex-wrap:wrap;display:flex}.tool-btn{padding:var(--space-2) var(--space-3);background:var(--steel);border:1px solid var(--steel-light);border-radius:var(--radius-md);color:var(--white);cursor:pointer;transition:all var(--transition-fast);text-align:center;min-width:44px;font-size:1rem}.tool-btn:hover{background:var(--steel-light);border-color:var(--gold)}.photos-section{margin:var(--space-4) 0;padding:var(--space-3);background:var(--steel-darker);border-radius:var(--radius-md);border:1px solid var(--steel-light)}.photos-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.photos-header label:first-child{color:var(--white);font-size:.9rem;font-weight:600}.photo-upload-btn{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--gold);color:var(--black);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);font-size:.8rem;font-weight:600;display:inline-flex}.photo-upload-btn:hover{background:var(--gold-bright)}.photo-upload-btn.disabled{opacity:.5;pointer-events:none}.upload-icon{font-size:1rem;font-weight:700}.photos-gallery{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(80px,1fr));display:grid}.no-photos{color:var(--white-dim);text-align:center;padding:var(--space-3);font-size:.85rem}.photo-item{aspect-ratio:1;border-radius:var(--radius-sm);background:var(--steel-dark);cursor:pointer;transition:transform var(--transition-fast);position:relative;overflow:hidden}.photo-item:hover{transform:scale(1.03)}.photo-item img{object-fit:cover;width:100%;height:100%}.photo-delete-btn{color:#fff;cursor:pointer;opacity:0;width:22px;height:22px;transition:opacity var(--transition-fast);background:#dc3545e6;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:700;line-height:1;display:flex;position:absolute;top:4px;right:4px}.photo-item:hover .photo-delete-btn{opacity:1}.photo-delete-btn:hover{background:#dc3545}.photos-loading{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3);color:var(--gold);font-size:.85rem;display:flex}.loading-spinner{border:2px solid var(--steel-light);border-top-color:var(--gold);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}.photo-lightbox{z-index:10000;opacity:0;visibility:hidden;transition:opacity var(--transition-normal), visibility var(--transition-normal);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.photo-lightbox.visible{opacity:1;visibility:visible}.lightbox-backdrop{background:#000000eb;position:absolute;inset:0}.lightbox-content{flex-direction:column;align-items:center;max-width:90vw;max-height:90vh;display:flex;position:relative}.lightbox-image{object-fit:contain;border-radius:var(--radius-sm);max-width:90vw;max-height:85vh;box-shadow:0 8px 32px #00000080}.lightbox-caption{margin-top:var(--space-2);color:var(--white-dim);text-align:center;font-size:.9rem}.lightbox-close{width:36px;height:36px;color:var(--white);cursor:pointer;opacity:.7;transition:opacity var(--transition-fast);background:0 0;border:none;font-size:28px;position:absolute;top:-40px;right:0}.lightbox-close:hover{opacity:1}.lightbox-prev,.lightbox-next{width:44px;height:60px;color:var(--white);cursor:pointer;opacity:.7;transition:opacity var(--transition-fast), background var(--transition-fast);border-radius:var(--radius-sm);background:#0006;border:none;font-size:32px;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-prev{left:-60px}.lightbox-next{right:-60px}.lightbox-prev:hover,.lightbox-next:hover{opacity:1;background:#0009}@media (width<=768px){.lightbox-prev,.lightbox-next{width:36px;height:48px;font-size:24px}.lightbox-prev{left:10px}.lightbox-next{right:10px}.lightbox-close{top:10px;right:10px}}.share-project-name{color:var(--gold-light);margin-bottom:var(--space-3);padding-bottom:var(--space-2);border-bottom:1px solid var(--border-dim);font-size:.9rem}.share-tabs{gap:var(--space-1);margin-bottom:var(--space-3);border-bottom:1px solid var(--border-dim);padding-bottom:var(--space-2);display:flex}.share-tab{padding:var(--space-2) var(--space-3);color:var(--white-dim);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;font-size:.85rem}.share-tab:hover{color:var(--white);background:var(--bg-hover)}.share-tab.active{color:var(--gold);background:#b4975a1a}.share-tab i{margin-right:var(--space-1)}.share-tab-content{margin-bottom:var(--space-4);display:none}.share-tab-content.active{display:block}.invite-link-section label{color:var(--white-dim);margin-bottom:var(--space-1);margin-top:var(--space-2);font-size:.8rem;display:block}.invite-link-section label:first-child{margin-top:0}.invite-link-result{gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-2);background:var(--bg-elevated);border-radius:var(--radius-sm);display:flex}.invite-link-result input{background:var(--bg-surface);border:1px solid var(--border-dim);color:var(--white);padding:var(--space-2);border-radius:var(--radius-sm);flex:1;font-size:.85rem}.user-search-section{margin-bottom:var(--space-3)}.user-search-section label{color:var(--white-dim);margin-bottom:var(--space-1);font-size:.8rem;display:block}.search-results{max-height:200px;margin-top:var(--space-2);overflow-y:auto}.search-result-item{align-items:center;gap:var(--space-2);padding:var(--space-2);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast);display:flex}.search-result-item:hover{background:var(--bg-hover)}.search-result-item .user-avatar{background:var(--bg-surface);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;display:flex;overflow:hidden}.search-result-item .user-avatar img{object-fit:cover;width:100%;height:100%}.search-result-item .user-info{flex-direction:column;display:flex}.search-result-item .user-name{color:var(--white);font-size:.9rem}.search-result-item .user-email{color:var(--white-dim);font-size:.8rem}.search-loading,.search-empty,.search-error{padding:var(--space-3);text-align:center;color:var(--white-dim);font-size:.85rem}.share-permission-row{align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--bg-elevated);border-radius:var(--radius-sm);margin-top:var(--space-2);display:flex}.share-user-info{flex-direction:column;flex:1;display:flex}.share-user-info span:first-child{color:var(--white);font-size:.9rem}.teams-list{max-height:200px;margin-bottom:var(--space-2);overflow-y:auto}.team-item{padding:var(--space-2);border-radius:var(--radius-sm);transition:background var(--transition-fast);justify-content:space-between;align-items:center;display:flex}.team-item:hover{background:var(--bg-hover)}.team-info{align-items:center;gap:var(--space-2);display:flex}.team-info i{color:var(--gold-dim)}.team-name{color:var(--white)}.team-members{color:var(--white-dim);font-size:.8rem}.teams-loading,.teams-empty,.teams-error{padding:var(--space-3);text-align:center;color:var(--white-dim);font-size:.85rem}.current-shares-section{border-top:1px solid var(--border-dim);padding-top:var(--space-3)}.current-shares-section h4{color:var(--white-dim);margin-bottom:var(--space-2);font-size:.85rem;font-weight:500}.shares-list{max-height:200px;overflow-y:auto}.share-item{align-items:center;gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-sm);display:flex}.share-item:hover{background:var(--bg-hover)}.share-info{align-items:center;gap:var(--space-2);flex:1;display:flex}.share-info i{color:var(--gold-dim)}.share-name{color:var(--white);font-size:.9rem}.share-detail{color:var(--white-dim);font-size:.8rem}.shares-empty{padding:var(--space-3);text-align:center;color:var(--white-dim);font-size:.85rem}.shares-empty i{margin-bottom:var(--space-2);opacity:.5;font-size:1.5rem;display:block}.shares-loading,.shares-error{padding:var(--space-3);text-align:center;color:var(--white-dim);font-size:.85rem}.form-select-inline{padding:var(--space-1) var(--space-2);background:var(--bg-surface);border:1px solid var(--border-dim);color:var(--white);border-radius:var(--radius-sm);cursor:pointer;font-size:.8rem}.form-select-inline:focus{border-color:var(--gold-dim);outline:none}.btn-danger-text{color:var(--error);background:0 0}.btn-danger-text:hover{color:#ff6b6b;background:#e74c3c1a}.btn-block{width:100%;margin-top:var(--space-3);display:block}.btn-outline{border:1px solid var(--border);color:var(--white-dim);background:0 0}.btn-outline:hover{border-color:var(--gold-dim);color:var(--white)}.shared-badge{margin-left:var(--space-1);color:var(--gold-dim);align-items:center;font-size:.75rem;display:inline-flex}.shared-badge i{font-size:.7rem}.perm-badge{margin-left:var(--space-1);padding:0 var(--space-1);text-transform:uppercase;border-radius:var(--radius-sm);align-items:center;font-size:.65rem;font-weight:500;display:inline-flex}.perm-view{color:var(--white-dim);background:#6464644d}.perm-edit{color:#2ecc71;background:#2ecc7133}.perm-admin{color:#9b59b6;background:#9b59b633}.offline-status{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--steel-dark);border-radius:var(--radius-full);box-shadow:var(--shadow-md);z-index:var(--z-toast);transition:all var(--transition-normal);font-size:.8rem;display:flex;position:fixed;bottom:20px;left:20px}.offline-status .status-icon{font-size:1rem}.offline-status .status-text{color:var(--white-dim)}.offline-status .pending-count{color:var(--warning);font-weight:500}.offline-status.online{background:var(--steel-dark)}.offline-status.offline{background:var(--error)}.offline-status.offline .status-text{color:var(--white)}.offline-status.syncing{background:var(--steel-light)}.offline-status.syncing .status-icon{animation:1s linear infinite spin}.offline-status.synced{background:var(--success)}.offline-status.synced .status-text{color:var(--white)}.offline-status.error{background:var(--warning)}.offline-status.error .status-text{color:var(--black)}.offline-status.synced{animation:3s forwards fadeOutAfter}@keyframes fadeOutAfter{0%,80%{opacity:1}to{opacity:0;pointer-events:none}}@media (width<=768px){.offline-status{padding:var(--space-1) var(--space-2);font-size:.75rem;bottom:70px;left:10px}}.history-modal{max-width:500px;max-height:80vh}.history-modal .modal-body{flex-direction:column;max-height:calc(80vh - 120px);padding:0;display:flex}.history-info{padding:var(--space-4);border-bottom:1px solid var(--gray-700);background:var(--steel-dark);justify-content:space-between;align-items:center;display:flex}#history-feature-name{color:var(--gold);text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-weight:500;overflow:hidden}.history-count{color:var(--gray-400);font-size:.85rem}.history-list{padding:var(--space-3);flex:1;overflow-y:auto}.history-loading,.history-empty{text-align:center;color:var(--gray-400);padding:var(--space-6)}.history-item{background:var(--steel);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3);border:1px solid var(--gray-700);transition:border-color var(--transition-fast)}.history-item:hover{border-color:var(--gold-dark)}.history-item.current{border-color:var(--gold);background:#b4975a1a}.history-item-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.history-action{color:var(--white);font-weight:500}.history-time{color:var(--gray-400);font-size:.8rem}.history-item-details{margin-bottom:var(--space-2)}.history-name{color:var(--white-dim);margin-bottom:var(--space-1);display:block}.history-coords{color:var(--gray-500);font-size:.8rem;font-family:var(--font-mono);display:block}.history-item-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.history-current-badge{background:var(--gold);color:var(--black);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:.75rem;font-weight:500}.history-restore-btn,.history-preview-btn{padding:var(--space-1) var(--space-2);font-size:.8rem}.history-modal .modal-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--gray-700);justify-content:flex-end;display:flex}.point-details-history-btn{border:1px solid var(--gray-600);color:var(--gray-400);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;margin-left:auto;font-size:.8rem}.point-details-history-btn:hover{border-color:var(--gold);color:var(--gold)}.point-details-history-btn:disabled{opacity:.5;cursor:not-allowed}.keyboard-help-modal{max-width:500px;max-height:80vh}.keyboard-help-body{padding:var(--space-4);max-height:60vh;overflow-y:auto}.shortcut-category{margin-bottom:var(--space-4)}.shortcut-category:last-child{margin-bottom:0}.shortcut-category h3{color:var(--gold);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2);padding-bottom:var(--space-1);border-bottom:1px solid var(--gray-700);font-size:.9rem}.shortcut-list{gap:var(--space-2);flex-direction:column;display:flex}.shortcut-row{align-items:center;gap:var(--space-3);display:flex}.shortcut-row kbd{text-align:center;background:var(--gray-800);border:1px solid var(--gray-600);border-radius:var(--radius-sm);min-width:80px;padding:var(--space-1) var(--space-2);font-family:var(--font-mono);color:var(--white);box-shadow:0 2px 0 var(--gray-700);font-size:.85rem}.shortcut-row span{color:var(--white-dim);font-size:.9rem}.keyboard-help-modal .modal-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--gray-700);justify-content:center;display:flex}.keyboard-help-tip{color:var(--gray-500);font-size:.85rem}.keyboard-help-tip kbd{background:var(--gray-800);border:1px solid var(--gray-600);border-radius:var(--radius-sm);padding:0 var(--space-1);font-family:var(--font-mono);color:var(--gold);font-size:.8rem}#keyboard-help-btn{margin-left:auto}[data-theme=dark] .shortcut-row kbd{background:var(--gray-900);border-color:var(--gray-700);box-shadow:0 2px 0 var(--gray-800)}.measurement-label{background:0 0;border:none}.measurement-label-text{color:#fff;white-space:nowrap;font-size:11px;font-weight:600;font-family:var(--font-mono);pointer-events:none;background:#000000bf;border-radius:3px;padding:2px 6px;display:inline-block;box-shadow:0 1px 3px #0000004d}[data-theme=dark] .measurement-label-text{background:#1e1e1ee6;border:1px solid #ffffff26}[data-theme=light] .measurement-label-text{color:#333;background:#fffffff2;border:1px solid #00000026}.csv-import-modal .modal,.csv-import-modal .csv-import-content{width:95%;max-width:700px}.csv-import-modal .modal-body{max-height:60vh;overflow-y:auto}.import-step{margin-bottom:var(--space-4)}.step-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.step-number{background:var(--gold);width:28px;height:28px;color:var(--black);border-radius:50%;justify-content:center;align-items:center;font-size:.9rem;font-weight:600;display:flex}.step-title{color:var(--white);font-size:1rem;font-weight:600}.file-drop-zone{padding:var(--space-8);border:2px dashed var(--gray-600);border-radius:var(--radius-md);background:var(--gray-800);flex-direction:column;justify-content:center;align-items:center;transition:all .2s;display:flex}.file-drop-zone:hover,.file-drop-zone.drag-over{border-color:var(--gold);background:#b4975a1a}.drop-icon{margin-bottom:var(--space-2);font-size:3rem}.drop-hint{color:var(--gray-500);margin:var(--space-2) 0;font-size:.9rem}.file-info{align-items:center;gap:var(--space-2);padding:var(--space-3);background:var(--gray-800);border-radius:var(--radius-md);border:1px solid var(--gray-600);display:flex}.file-name{color:var(--white);flex:1;font-weight:500}#csv-file-clear{color:var(--gray-500)}#csv-file-clear:hover{color:var(--error)}.mapping-grid{gap:var(--space-3);flex-direction:column;display:flex}.mapping-row{align-items:center;gap:var(--space-3);display:flex}.mapping-row label{min-width:120px;color:var(--white);font-size:.9rem}.mapping-row .required{color:var(--error)}.mapping-select{padding:var(--space-2) var(--space-3);background:var(--gray-800);border:1px solid var(--gray-600);border-radius:var(--radius-sm);color:var(--white);flex:1;font-size:.9rem}.mapping-select:focus{border-color:var(--gold);outline:none}.mapping-hint{color:var(--gray-500);margin-top:var(--space-2);font-size:.85rem}.preview-stats{gap:var(--space-4);margin-bottom:var(--space-3);display:flex}.stat{padding:var(--space-2) var(--space-4);background:var(--gray-800);border-radius:var(--radius-md);border:1px solid var(--gray-600);flex-direction:column;align-items:center;display:flex}.stat-value{color:var(--white);font-size:1.5rem;font-weight:700}.stat-valid .stat-value{color:var(--success)}.stat-invalid .stat-value{color:var(--error)}.stat-label{color:var(--gray-500);text-transform:uppercase;font-size:.75rem}.preview-table-container{border:1px solid var(--gray-700);border-radius:var(--radius-md);max-height:250px;margin-bottom:var(--space-3);overflow-y:auto}.preview-table{border-collapse:collapse;width:100%;font-size:.85rem}.preview-table th{background:var(--gray-800);color:var(--gold);text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--gray-600);font-weight:600;position:sticky;top:0}.preview-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--gray-800);color:var(--white-dim)}.preview-table tr.row-valid td:first-child{color:var(--success)}.preview-table tr.row-invalid{background:#ef44441a}.preview-table tr.row-invalid td:first-child{color:var(--error)}.props-cell{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.preview-more{text-align:center;color:var(--gray-500);font-style:italic}.validation-errors{padding:var(--space-3);border-radius:var(--radius-md);background:#ef44441a;border:1px solid #ef44444d}.validation-errors h4{color:var(--error);margin-bottom:var(--space-2);font-size:.9rem}.validation-errors ul{padding-left:var(--space-4);color:var(--white-dim);margin:0;font-size:.85rem}.validation-errors li{margin-bottom:var(--space-1)}.error-hint{color:var(--gray-500);margin-top:var(--space-2);font-size:.8rem}.import-progress{padding:var(--space-4);text-align:center}.progress-bar{background:var(--gray-700);border-radius:var(--radius-full);height:8px;margin-bottom:var(--space-2);overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--gold-dark), var(--gold));border-radius:var(--radius-full);width:0%;height:100%;transition:width .3s}.progress-text{color:var(--white-dim);font-size:.9rem}[data-theme=dark] .file-drop-zone,[data-theme=dark] .mapping-select,[data-theme=dark] .file-info,[data-theme=dark] .stat{background:var(--gray-900)}[data-theme=light] .step-title,[data-theme=light] .file-name,[data-theme=light] .mapping-row label,[data-theme=light] .stat-value{color:var(--gray-800)}[data-theme=light] .file-drop-zone{background:var(--gray-100);border-color:var(--gray-400)}[data-theme=light] .mapping-select,[data-theme=light] .file-info,[data-theme=light] .stat{background:var(--white);border-color:var(--gray-300);color:var(--gray-800)}[data-theme=light] .preview-table th{background:var(--gray-100);color:var(--gray-700)}[data-theme=light] .preview-table td{color:var(--gray-600);border-color:var(--gray-200)}.save-template-form{margin-bottom:var(--space-4)}.save-template-row{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.save-template-row input[type=text]{flex:1;min-width:150px}.hint-text{color:var(--gray-500);margin-top:var(--space-1);font-size:.75rem}.templates-section{margin-bottom:var(--space-5)}.templates-section h3{color:var(--white);margin-bottom:var(--space-3);font-size:.9rem;font-weight:600}.template-item{padding:var(--space-3);background:var(--steel);border-radius:var(--radius-md);margin-bottom:var(--space-2);justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.template-item:last-child{margin-bottom:0}.template-info{flex:1;min-width:0}.template-name{color:var(--white);margin-bottom:2px;font-weight:600}.template-desc{color:var(--gray-400);margin-bottom:4px;font-size:.8rem}.template-meta{color:var(--gray-500);margin-bottom:var(--space-2);font-size:.7rem}.template-fields-preview{flex-wrap:wrap;gap:4px;display:flex}.field-tag{background:var(--charcoal);color:var(--gray-400);border-radius:var(--radius-sm);border:1px solid var(--gray-700);padding:1px 6px;font-size:.65rem;display:inline-block}.template-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}[data-theme=light] .templates-section h3{color:var(--gray-800)}[data-theme=light] .template-item{background:var(--gray-100)}[data-theme=light] .template-name{color:var(--gray-800)}[data-theme=light] .template-desc{color:var(--gray-600)}[data-theme=light] .template-meta{color:var(--gray-500)}[data-theme=light] .field-tag{background:var(--white);color:var(--gray-600);border-color:var(--gray-300)}.time-filter-panel{background:var(--charcoal);border-bottom:1px solid var(--gray-700);padding:var(--space-2) var(--space-3);z-index:400;font-size:.8rem;position:relative}.time-filter-panel.active{border-bottom-color:var(--primary)}.time-filter-header{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.time-filter-toggle{align-items:center;gap:var(--space-2);cursor:pointer;color:var(--white);-webkit-user-select:none;user-select:none;font-weight:600;display:flex}.time-filter-toggle input[type=checkbox]{width:14px;height:14px}.time-filter-count{color:var(--gray-400);font-size:.7rem}.time-filter-controls{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;transition:all .2s;display:flex}.time-filter-controls.hidden{display:none}.time-filter-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.time-filter-row label{align-items:center;gap:var(--space-1);color:var(--gray-300);font-size:.75rem;display:flex}.time-filter-row input[type=date],.time-filter-row select{border:1px solid var(--gray-600);border-radius:var(--radius-sm);background:var(--steel);color:var(--white);padding:3px 6px;font-size:.75rem}[data-theme=light] .time-filter-panel{background:var(--gray-50);border-bottom-color:var(--gray-300)}[data-theme=light] .time-filter-toggle{color:var(--gray-800)}[data-theme=light] .time-filter-count{color:var(--gray-500)}[data-theme=light] .time-filter-row label{color:var(--gray-600)}[data-theme=light] .time-filter-row input[type=date],[data-theme=light] .time-filter-row select{background:var(--white);color:var(--gray-800);border-color:var(--gray-300)}.comments-section{border-top:1px solid var(--gray-600);margin-top:12px;padding-top:12px}.comments-section-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.comments-section-header span{color:var(--gray-300);font-size:.85rem;font-weight:600}.comments-count-badge{background:var(--gold,#b4975a);color:var(--bg-primary,#0f0f1a);border-radius:10px;margin-left:6px;padding:1px 6px;font-size:.7rem}.comments-list{max-height:200px;margin-bottom:8px;overflow-y:auto}.comments-empty{text-align:center;color:var(--gray-500);padding:12px 0;font-size:.8rem;font-style:italic}.comment-item{background:var(--gray-700);border-radius:6px;margin-bottom:6px;padding:8px 10px;position:relative}.comment-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.comment-author{color:var(--primary);font-size:.75rem;font-weight:600}.comment-time{color:var(--gray-500);font-size:.7rem}.comment-edited{color:var(--gray-500);font-size:.65rem;font-style:italic}.comment-text{color:var(--gray-200);white-space:pre-wrap;word-break:break-word;font-size:.82rem;line-height:1.4}.comment-actions{gap:2px;display:none;position:absolute;top:6px;right:6px}.comment-item:hover .comment-actions{display:flex}.comment-edit-btn,.comment-delete-btn{cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:3px;padding:2px 4px;font-size:.7rem}.comment-edit-btn:hover,.comment-delete-btn:hover{opacity:1;background:var(--gray-600)}.comment-input-row{gap:6px;display:flex}.comment-input{background:var(--gray-700);border:1px solid var(--gray-600);color:var(--gray-200);resize:none;border-radius:6px;flex:1;min-height:34px;max-height:80px;padding:6px 10px;font-size:.82rem}.comment-input:focus{border-color:var(--primary);outline:none}.comment-submit-btn{background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:6px 12px;font-size:.82rem}.comment-submit-btn:hover{background:var(--primary-hover)}.comment-submit-btn:disabled{opacity:.5;cursor:not-allowed}[data-theme=light] .comment-item{background:var(--gray-100)}[data-theme=light] .comment-text{color:var(--gray-800)}[data-theme=light] .comment-input{background:var(--white);color:var(--gray-800);border-color:var(--gray-300)}.panel-managed{transition:box-shadow var(--transition-fast)}.panel-drag-handle{cursor:grab;-webkit-user-select:none;user-select:none}.panel-drag-handle-created{padding:var(--space-2);background:var(--bg-primary);border-bottom:1px solid var(--border);justify-content:center;align-items:center;display:flex}.drag-grip{color:var(--text-muted);letter-spacing:2px;font-size:1rem}.panel-dragging{opacity:.92;box-shadow:var(--shadow-xl)!important;transition:none!important}.panel-dragging .panel-drag-handle{cursor:grabbing}.panel-resizing{transition:none!important}.panel-minimize-btn{width:32px;height:32px;color:var(--text-secondary);border-radius:var(--radius-sm);transition:all var(--transition-fast);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:1.25rem;display:flex}.panel-minimize-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.panel-minimized .modal-body,.panel-minimized .panel-body,.panel-minimized .stats-content,.panel-minimized .modal-footer,.panel-minimized .panel-resize-handle{display:none!important}.panel-minimized{overflow:hidden;height:auto!important;min-height:0!important}.panel-resize-handle{cursor:nwse-resize;width:20px;height:20px;color:var(--text-muted);opacity:.5;transition:opacity var(--transition-fast);z-index:5;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:.75rem;display:flex;position:absolute;bottom:0;right:0}.panel-resize-handle:hover{opacity:1}.panel-overlay{z-index:999;transition:opacity var(--transition-normal);opacity:0;background:#00000080;display:none;position:fixed;inset:0}.panel-overlay.visible{opacity:1;display:block}@media (width<=768px){.panel-managed.bottom-sheet-open{animation:.3s ease-out slideUpSheet;overflow-y:auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0!important;z-index:1001!important;width:100%!important;max-width:100%!important;max-height:60vh!important;margin:0!important;position:fixed!important;inset:auto 0 0!important;transform:translateY(0)!important}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.panel-resize-handle,.panel-minimize-btn{display:none!important}.sidebar.open{max-width:85vw}.modal-backdrop.visible .modal{border-radius:0!important;width:100%!important;max-width:100%!important;height:100vh!important;max-height:100vh!important;margin:0!important}.modal-backdrop.visible .modal .modal-body{-webkit-overflow-scrolling:touch;flex:1;overflow-y:auto}}.tab-icon i,.tool-btn i,.toolbar-btn i,.btn i,.btn-icon i{vertical-align:middle;font-size:16px}.logo-icon i{font-size:20px}.nav-tab .tab-icon i{font-size:18px}.gps-panel-btn i,.selection-btn i{font-size:14px}.icon-selector-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.icon-preview{border:1px solid var(--border-color,#444);background:var(--surface-color,#2a2a2a);border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.icon-selector-row select{flex:1}.icon-grid-compact{border:1px solid var(--border-color,#444);background:var(--surface-color,#2a2a2a);border-radius:6px;grid-template-columns:repeat(auto-fill,minmax(32px,1fr));gap:3px;max-height:120px;padding:4px;display:grid;overflow-y:auto}.icon-grid-btn{cursor:pointer;width:32px;height:32px;color:var(--text-color,#ccc);background:0 0;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;font-size:14px;transition:all .15s;display:flex}.icon-grid-btn:hover{background:var(--hover-color,#333);border-color:var(--border-color,#555)}.icon-grid-btn.selected{background:var(--accent-color,#b4975a);border-color:var(--accent-color,#b4975a);color:#fff}.icon-grid-btn.selected i{color:#fff!important}.import-tabs{border-bottom:1px solid var(--border-color,#444);gap:4px;margin-bottom:12px;padding-bottom:8px;display:flex}.import-tab{color:var(--text-muted,#888);cursor:pointer;background:0 0;border:none;border-radius:4px 4px 0 0;padding:6px 12px;font-size:13px}.import-tab.active{background:var(--accent-color,#b4975a);color:#fff}.import-preview{background:var(--surface-color,#2a2a2a);border:1px solid var(--border-color,#444);border-radius:6px;margin-top:8px;padding:8px;font-size:12px}.preview-fields{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.preview-tag{background:var(--accent-color,#b4975a);color:#fff;border-radius:3px;padding:2px 6px;font-size:11px}.preview-rows{opacity:.7;margin-top:6px}.checkbox-row{flex-wrap:wrap;gap:16px;display:flex}.checkbox-row label{cursor:pointer;align-items:center;gap:4px;font-size:13px;display:flex}.slider-row,.select-row{align-items:center;gap:8px;padding:8px 0;display:flex}.slider-row .toggle-label,.select-row .toggle-label{flex:1}.slider-input{width:80px;accent-color:var(--accent-color,#b4975a)}.settings-select{background:var(--surface-color,#2a2a2a);color:var(--text-color,#ccc);border:1px solid var(--border-color,#444);border-radius:4px;padding:4px 8px;font-size:13px}.modal-footer{border-top:1px solid var(--border-color,#333);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.btn{cursor:pointer;border:none;border-radius:6px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;display:inline-flex}.btn-primary{background:var(--accent-color,#b4975a);color:var(--bg-primary,#0f0f1a)}.btn-primary:hover{filter:brightness(1.1)}.btn-secondary{background:var(--surface-color,#333);color:var(--text-color,#ccc)}.btn-secondary:hover{background:var(--hover-color,#444)}.settings-buttons{flex-wrap:wrap;gap:8px;display:flex}.settings-buttons .btn{flex:1;justify-content:center;min-width:120px}.layer-section.collapsible{border:1px solid var(--steel-light,#3a3a4a);border-radius:6px;margin-bottom:4px;transition:border-color .2s;overflow:hidden}.layer-section.collapsible.drag-over{border-color:var(--gold,#b4975a);background:#b4975a0d}.layer-section-title{background:var(--steel-dark,#1a1a2e);cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--gray-300,#ccc);align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;transition:background .15s;display:flex}.layer-section-title:hover{background:var(--steel,#2a2a3e)}.layer-section-title .section-toggle{color:var(--gray-500,#777);flex-shrink:0;font-size:10px;transition:transform .2s}.layer-section.collapsible.collapsed .section-toggle{transform:rotate(-90deg)}.layer-group-color{border-radius:50%;flex-shrink:0;width:10px;height:10px}.layer-group-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.layer-group-count{color:var(--gray-500,#777);background:var(--steel,#2a2a3e);border-radius:10px;flex-shrink:0;padding:1px 6px;font-size:11px}.layer-group-visibility,.layer-group-delete{opacity:0;transition:opacity .15s}.layer-section-title:hover .layer-group-visibility,.layer-section-title:hover .layer-group-delete{opacity:1}.layer-group-delete:hover{color:var(--error,#ef4444)!important}.layer-section-content{max-height:500px;transition:max-height .25s;overflow:hidden}.layer-section.collapsible.collapsed .layer-section-content{max-height:0}.col-type{white-space:nowrap;color:var(--gray-300,#ccc);font-size:.8125rem}.feature-panel{background:var(--surface,#1a1a2e);border-left:1px solid var(--border,#333);z-index:1100;flex-direction:column;width:360px;max-width:100vw;height:100vh;animation:.2s slideInRight;display:flex;position:fixed;top:0;right:0;overflow-y:auto;box-shadow:-4px 0 20px #0000004d}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.feature-panel-header{border-bottom:1px solid var(--border,#333);align-items:center;gap:8px;padding:16px;display:flex}.feature-panel-title{flex:1;align-items:center;gap:8px;display:flex}.feature-panel-title i{color:var(--gold,#b4975a);font-size:1.1rem}.feature-name-input{color:var(--text,#fff);border-radius:var(--radius-sm,4px);background:0 0;border:1px solid #0000;flex:1;padding:4px 8px;font-size:1rem;font-weight:600}.feature-name-input:focus{border-color:var(--gold,#b4975a);outline:none}.feature-panel-close{color:var(--text-secondary,#999);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1.1rem}.feature-panel-close:hover{color:var(--text,#fff)}.feature-panel-type-badge{color:var(--text-secondary,#999);text-transform:uppercase;letter-spacing:.5px;padding:4px 16px 8px;font-size:.75rem}.feature-panel-section{border-bottom:1px solid var(--border,#333);padding:12px 16px}.feature-panel-section.collapsed .feature-panel-section-body{display:none}.feature-panel-section-title{color:var(--text-secondary,#999);cursor:default;margin-bottom:8px;font-size:.8125rem;font-weight:600}.fp-collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}.fp-collapsible:after{content:" ▾";font-size:.7rem}.collapsed .fp-collapsible:after{content:" ▸"}.feature-panel-measurements{grid-template-columns:1fr 1fr;gap:6px;display:grid}.fp-measure{border-radius:var(--radius-sm,4px);background:#ffffff08;justify-content:space-between;align-items:center;padding:4px 8px;font-size:.8125rem;display:flex}.fp-measure span{color:var(--text-secondary,#999)}.fp-measure strong{color:var(--gold,#b4975a)}.fp-field-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.fp-field-row label{color:var(--text-secondary,#999);flex:0 0 100px;font-size:.8125rem}.fp-field-row input,.fp-field-row select,.fp-field-row textarea{background:var(--bg,#0f0f23);border:1px solid var(--border,#333);color:var(--text,#fff);border-radius:var(--radius-sm,4px);flex:1;padding:6px 8px;font-size:.8125rem}.fp-field-row input:focus,.fp-field-row select:focus,.fp-field-row textarea:focus{border-color:var(--gold,#b4975a);outline:none}.fp-field-row input[type=color]{cursor:pointer;width:36px;height:28px;padding:2px}.fp-field-row input[type=range]{flex:1;padding:0}.fp-checkbox label{color:var(--text,#fff);cursor:pointer;flex:1;align-items:center;gap:8px;font-size:.8125rem;display:flex}.fp-calculated{opacity:.6;font-style:italic}.fp-empty{color:var(--text-secondary,#999);padding:4px 0;font-size:.8125rem;font-style:italic}.fp-badge{background:var(--gold,#b4975a);color:var(--bg,#0f0f23);border-radius:10px;padding:1px 6px;font-size:.6875rem;font-weight:600}.fp-comments-list{max-height:200px;margin-bottom:8px;overflow-y:auto}.fp-comment-input-row{gap:8px;display:flex}.fp-comment-input-row textarea{background:var(--bg,#0f0f23);border:1px solid var(--border,#333);color:var(--text,#fff);border-radius:var(--radius-sm,4px);resize:none;flex:1;padding:6px 8px;font-size:.8125rem}.feature-panel-actions{border-bottom:1px solid var(--border,#333);gap:8px;padding:12px 16px;display:flex}.fp-save-btn{margin:16px}.fp-photo-actions{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.fp-photos-section .photo-upload-btn{font-size:.75rem}.fp-photo-unavailable{height:100%;color:var(--text-secondary,#999);text-align:center;justify-content:center;align-items:center;padding:6px;font-size:.75rem;display:flex}@media (hover:none){.fp-photos-section .photo-delete-btn{opacity:1}}.btn-danger{background:var(--red,#ef4444)!important;color:#fff!important}.btn-ghost{border:1px dashed var(--border,#333);color:var(--text-secondary,#999);background:0 0}.btn-ghost:hover{border-color:var(--gold,#b4975a);color:var(--gold,#b4975a)}.btn-sm{padding:4px 10px;font-size:.8125rem}.vertex-handle{cursor:grab}.vertex-handle:active{cursor:grabbing}.midpoint-handle{cursor:pointer;opacity:.6}.midpoint-handle:hover{opacity:1}@media (width<=480px){.feature-panel{width:100vw}}.template-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.template-card{border:2px solid var(--border,#333);border-radius:var(--radius,8px);background:var(--surface,#1a1a2e);color:var(--text,#fff);cursor:pointer;text-align:center;flex-direction:column;align-items:center;gap:6px;padding:16px 12px;transition:all .15s;display:flex}.template-card:hover{border-color:var(--gold,#b4975a);background:#b4975a14}.template-card strong{font-size:.875rem}.template-field-count{color:var(--text-secondary,#999);font-size:.75rem}.import-preview-table th,.import-preview-table td{text-align:left;border-bottom:1px solid var(--border,#333);padding:4px 8px}.import-preview-table th{color:var(--text-secondary,#999);font-weight:600}.import-preview-table select{background:var(--bg,#0f0f23);border:1px solid var(--border,#333);color:var(--text,#fff);border-radius:4px;padding:2px 4px;font-size:.75rem}.fp-sample{color:var(--text-secondary,#999);text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:.75rem;overflow:hidden}[data-theme=dark] .csv-import-modal .modal,[data-theme=dark] .csv-import-modal .csv-import-content{background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border-color)}[data-theme=dark] .csv-import-modal .modal-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}[data-theme=dark] .csv-import-modal label,[data-theme=dark] .csv-import-modal .step-label,[data-theme=dark] .csv-import-modal p{color:var(--text-primary)}[data-theme=dark] .csv-import-modal input[type=text],[data-theme=dark] .csv-import-modal input[type=file],[data-theme=dark] .csv-import-modal select,[data-theme=dark] .csv-import-modal textarea{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}[data-theme=dark] .import-preview-table th{background:var(--bg-secondary);color:var(--text-primary)}[data-theme=dark] .import-preview-table td{color:var(--text-primary);border-color:var(--border-color)}[data-theme=dark] .import-tab{background:var(--bg-secondary);color:var(--text-secondary);border-color:var(--border-color)}[data-theme=dark] .import-tab.active{background:var(--gold);color:var(--black)}.layer-type-badge{color:var(--gold,#b4975a);text-transform:uppercase;letter-spacing:.5px;background:#b4975a26;border-radius:8px;margin-left:4px;padding:1px 6px;font-size:.625rem;font-weight:600}.modal-overlay{z-index:99999;background:#0009;justify-content:center;align-items:center;padding:16px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal-overlay .modal{-webkit-overflow-scrolling:touch;max-height:90vh;overflow-y:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.btn-icon-sm{border:1px solid var(--border);cursor:pointer;width:28px;height:28px;color:var(--text-dim);background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:all .2s;display:inline-flex}.btn-icon-sm:hover{background:var(--gold-dim);border-color:var(--gold);color:var(--gold)}.btn-icon-sm.listening{background:var(--gold);border-color:var(--gold);color:#0a0a14;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.mobile-fab{bottom:calc(80px + env(safe-area-inset-bottom,0px));background:var(--gold,#b4975a);color:#0a0a14;z-index:900;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:28px;justify-content:center;align-items:center;width:56px;height:56px;font-size:20px;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;right:16px;box-shadow:0 4px 16px #0006}.mobile-fab>i{transition:transform .3s cubic-bezier(.4,0,.2,1)}.mobile-fab:active{transform:scale(.92)}.mobile-fab.open{background:var(--text-dim,#888)}.mobile-fab.open>i,.mobile-fab.open>.fa-plus{transition:transform .3s cubic-bezier(.4,0,.2,1);transform:rotate(45deg)}.mobile-fab.open .fab-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.fab-menu{opacity:0;pointer-events:none;flex-direction:column-reverse;gap:10px;transition:all .25s;display:flex;position:absolute;bottom:64px;right:0;transform:translateY(10px)}.fab-menu-item{background:var(--dark-card,#12121e);border:1px solid var(--border,#ffffff14);color:var(--text,#e8e6e3);white-space:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:24px;align-items:center;gap:10px;min-height:44px;padding:10px 16px;font-size:13px;transition:all .15s;display:flex;box-shadow:0 2px 8px #0000004d}.fab-menu-item:active{background:var(--gold-dim,#b4975a26);border-color:var(--gold,#b4975a)}.fab-menu-item i{text-align:center;width:20px;color:var(--gold,#b4975a)}.mobile-bottom-bar{background:var(--dark-card,#12121e);border-top:1px solid var(--border,#ffffff14);z-index:850;height:56px;padding-bottom:env(safe-area-inset-bottom,0px);-webkit-tap-highlight-color:transparent;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-bar-item{color:var(--text-dim,#888);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:48px;min-height:48px;padding:6px 12px;font-size:10px;transition:color .15s;display:flex}.bottom-bar-item i{font-size:18px}.bottom-bar-item.active,.bottom-bar-item:active{color:var(--gold,#b4975a)}.mobile-bottom-sheet{background:var(--dark-card,#12121e);z-index:800;border-radius:16px 16px 0 0;height:0;transition:height .3s cubic-bezier(.4,0,.2,1);position:fixed;bottom:56px;left:0;right:0;overflow:hidden;box-shadow:0 -4px 20px #0000004d}.mobile-bottom-sheet.open{overflow-y:auto}.bottom-sheet-handle{background:var(--text-dim,#888);cursor:grab;border-radius:2px;width:40px;height:4px;margin:10px auto}.bottom-sheet-content{padding:0 16px 16px}.bottom-sheet-header{border-bottom:1px solid var(--border,#ffffff14);justify-content:space-between;align-items:center;margin-bottom:12px;padding:4px 0 12px;display:flex}.bottom-sheet-header h3{font-size:16px;font-weight:600}body.mobile-device{padding-bottom:56px}body.mobile-device #map{bottom:56px!important}body.mobile-device .sidebar{bottom:56px}body.mobile-device button,body.mobile-device .btn,body.mobile-device select,body.mobile-device input[type=checkbox]{min-width:44px;min-height:44px}body.mobile-device input[type=text],body.mobile-device input[type=email],body.mobile-device input[type=number],body.mobile-device input[type=date],body.mobile-device textarea,body.mobile-device select{padding:12px!important;font-size:16px!important}body.mobile-device .map-toolbar,body.mobile-device #keyboard-help-btn{display:none}.upgrade-banner{background:linear-gradient(135deg,#b4975a26,#b4975a0d);border-top:1px solid #b4975a4d;flex-shrink:0;padding:10px 12px}.upgrade-banner.hidden{display:none}.upgrade-banner-content{align-items:center;gap:10px;display:flex}.upgrade-banner-icon{flex-shrink:0;font-size:20px}.upgrade-banner-text{flex-direction:column;flex:1;min-width:0;display:flex}.upgrade-banner-text strong{color:var(--gold,#b4975a);font-size:13px}.upgrade-banner-text span{color:var(--text-dim,#888);font-size:11px}.upgrade-banner-btn{background:var(--gold,#b4975a);color:#111;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:6px 14px;font-size:12px;font-weight:700;transition:opacity .2s}.upgrade-banner-btn:hover{opacity:.85}.pro-badge{background:var(--gold,#b4975a);color:#111;letter-spacing:.5px;pointer-events:none;border-radius:3px;padding:1px 3px;font-size:7px;font-weight:800;line-height:1.2;position:absolute;top:-4px;right:-4px}.onboarding-overlay{z-index:10000;pointer-events:none;background:#0009;transition:opacity .3s;position:fixed;inset:0}.onboarding-highlight{z-index:10001;border:2px solid var(--gold,#b4975a);pointer-events:none;border-radius:8px;transition:all .3s;position:fixed;box-shadow:0 0 0 9999px #0000008c}.onboarding-tooltip{z-index:10002;background:var(--panel-bg,#1a1a2e);border:1px solid var(--gold,#b4975a);min-width:280px;max-width:340px;color:var(--text-primary,#e0e0e0);opacity:0;border-radius:12px;padding:20px;font-family:Inter,sans-serif;transition:opacity .3s;position:fixed;box-shadow:0 8px 32px #0006}.onboarding-tooltip.visible{opacity:1}.onboarding-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.onboarding-step-count{color:var(--gold,#b4975a);font-size:12px;font-weight:600}.onboarding-skip{color:var(--text-secondary,#888);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;line-height:1}.onboarding-skip:hover{color:var(--text-primary,#e0e0e0)}.onboarding-title{color:var(--gold,#b4975a);margin:0 0 8px;font-size:18px;font-weight:700}.onboarding-text{color:var(--text-secondary,#ccc);margin:0 0 16px;font-size:14px;line-height:1.5}.onboarding-actions{justify-content:space-between;align-items:center;gap:8px;display:flex}.onboarding-btn{cursor:pointer;border:none;border-radius:8px;padding:8px 20px;font-family:Inter,sans-serif;font-size:14px;font-weight:600;transition:all .2s}.onboarding-btn-next{background:var(--gold,#b4975a);color:#111}.onboarding-btn-next:hover{opacity:.9;transform:translateY(-1px)}.onboarding-btn-back{color:var(--text-secondary,#aaa);border:1px solid var(--border,#333);background:0 0}.onboarding-btn-back:hover{color:var(--text-primary,#e0e0e0);border-color:var(--text-secondary,#888)}@media (width<=768px){.onboarding-tooltip{max-width:calc(100vw - 32px);min-width:unset}}.tile-cache-info{color:var(--text-secondary,#888);margin-top:6px;margin-bottom:0;font-size:12px}.settings-hint{color:var(--text-secondary,#888);margin:0 0 8px;font-size:12px}.btn-danger-subtle{color:#e74c3c!important;border-color:#e74c3c33!important}.btn-danger-subtle:hover{background:#e74c3c22!important}.tile-cache-progress{z-index:9999;background:var(--panel-bg,#1a1a2e);border:1px solid var(--gold,#b4975a);border-radius:8px;align-items:center;gap:12px;min-width:240px;padding:8px 16px;display:flex;position:fixed;bottom:40px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.tile-cache-progress-bar{background:var(--border,#333);border-radius:3px;flex:1;height:6px;overflow:hidden}.tile-cache-progress-fill{background:var(--gold,#b4975a);border-radius:3px;width:0%;height:100%;transition:width .3s}.tile-cache-progress-text{color:var(--text-secondary,#ccc);white-space:nowrap;font-size:12px}.stats-partial-banner{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border:1px solid var(--gold);border-radius:var(--radius-md);margin-bottom:var(--space-4);color:var(--text-secondary);font-size:.85rem;display:flex}.feedback-modal textarea{resize:vertical;min-height:120px}.tile-zoom-select{width:100%;margin-bottom:6px}.tile-storage-bar{background:var(--bg-tertiary);border-radius:4px;width:100%;height:8px;margin:6px 0 4px;overflow:hidden}.tile-storage-fill{background:var(--primary);border-radius:4px;height:100%;transition:width .3s}.tile-storage-text{color:var(--text-muted);margin:0;font-size:11px}
