@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap";:root{--bg-color: #121212;--panel-bg: rgba(25, 25, 25, .85);--panel-border: rgba(255, 255, 255, .1);--text-primary: #ffffff;--text-secondary: #aaaaaa;--accent-color: #00d4aa;--accent-hover: #00b38f;--danger-color: #ff5252;--glass-blur: blur(12px);--shadow-lg: 0 8px 32px 0 rgba(0, 0, 0, .5);--radius-lg: 16px;--radius-sm: 8px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;font-family:Inter,sans-serif;background-color:var(--bg-color);overflow:hidden;touch-action:manipulation}.map-container{height:100%;width:100%;position:absolute;top:0;left:0;z-index:1}.info-panel{position:fixed;bottom:0;left:0;right:0;width:100%;max-height:60vh;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-lg);color:var(--text-primary);z-index:10;padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;transform:translateY(100%);transition:transform .3s ease}.info-panel.visible{transform:translateY(0)}.panel-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--panel-border);padding-bottom:12px}.panel-title-group{display:flex;flex-direction:column;gap:2px}.panel-header h2{font-size:1rem;font-weight:600;color:var(--accent-color);letter-spacing:.5px;margin:0}.panel-subtitle{font-size:.7rem;color:var(--text-secondary);font-weight:400;text-transform:uppercase;letter-spacing:.5px}.close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.5rem;padding:8px;transition:color .2s;line-height:1}.close-btn:hover,.close-btn:active{color:var(--text-primary)}.attr-list{display:flex;flex-direction:column;gap:10px;overflow-y:auto;max-height:40vh}.attr-item{display:flex;flex-direction:column;gap:2px}.attr-label{font-size:.7rem;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px;font-weight:500}.attr-value{font-size:.9rem;color:var(--text-primary);font-weight:400;word-break:break-word}.action-btn{margin-top:8px;background-color:var(--accent-color);color:#000;border:none;padding:14px;border-radius:var(--radius-sm);font-weight:600;font-size:.95rem;cursor:pointer;transition:background-color .2s,transform .1s;text-align:center;-webkit-tap-highlight-color:transparent}.action-btn:hover,.action-btn:active{background-color:var(--accent-hover)}.action-btn:active{transform:scale(.98)}.loader{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#000c;padding:16px 24px;border-radius:50px;z-index:20;color:#fff;pointer-events:none;font-size:.85rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.loader.active{display:flex;align-items:center;gap:10px}.loader-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-toast{position:fixed;bottom:100px;left:50%;transform:translate(-50%);background:var(--danger-color);color:#fff;padding:12px 20px;border-radius:var(--radius-sm);z-index:30;font-size:.85rem;animation:fadeInOut 3s ease forwards}.map-status{position:fixed;top:20px;left:50%;transform:translate(-50%);background:#000c;padding:12px 20px;border-radius:var(--radius-sm);z-index:20;color:#fff;font-size:.85rem;display:flex;align-items:center;gap:10px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%) translateY(20px)}10%{opacity:1;transform:translate(-50%) translateY(0)}90%{opacity:1}to{opacity:0}}.esri-ui{--esri-widget-background: var(--panel-bg) !important;--esri-widget-color: var(--text-secondary) !important}.esri-view .esri-view-surface--inset-outline:focus:after{outline:auto 2px var(--accent-color)!important}.esri-attribution{background:transparent!important;color:#ffffff4d!important}.search-container{position:fixed;top:16px;left:16px;right:16px;z-index:15;max-width:400px}.search-box{display:flex;align-items:center;gap:8px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:8px 12px;box-shadow:var(--shadow-lg)}.search-box input{flex:1;background:transparent;border:none;color:var(--text-primary);font-size:.95rem;font-family:inherit;outline:none}.search-box input::placeholder{color:var(--text-secondary)}.search-box .search-icon{color:var(--text-secondary);flex-shrink:0}.result-icon{display:flex;align-items:center;justify-content:center;color:var(--accent-color);flex-shrink:0}.location-btn{background:transparent;border:none;color:var(--accent-color);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s;-webkit-tap-highlight-color:transparent}.location-btn:hover,.location-btn:active{background:#00d4aa1a}.location-btn:disabled{opacity:.5;cursor:not-allowed}.mini-spinner{width:18px;height:18px;border:2px solid rgba(0,212,170,.3);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}.suggestions-list{margin-top:4px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-lg)}.suggestion-item{padding:12px 16px;color:var(--text-primary);font-size:.9rem;cursor:pointer;transition:background-color .15s;border-bottom:1px solid var(--panel-border)}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover,.suggestion-item:active{background:#00d4aa1a}.download-btn{position:fixed;bottom:20px;right:16px;z-index:15;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:10px 14px;color:var(--accent-color);font-size:.85rem;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-lg);transition:background-color .2s,transform .1s;-webkit-tap-highlight-color:transparent}.download-btn:hover,.download-btn:active{background:#00d4aa1a}.download-btn:active{transform:scale(.98)}.download-btn:disabled{opacity:.5;cursor:not-allowed}.download-btn svg{flex-shrink:0}.map-controls{position:fixed;bottom:70px;right:16px;z-index:15;display:flex;flex-direction:column;gap:8px;align-items:flex-end}.logout-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#dc3545e6;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid rgba(220,53,69,.5);border-radius:var(--radius-sm);color:#fff;cursor:pointer;transition:all .2s ease}.logout-btn:hover{background:#c82333;transform:scale(1.05)}.basemap-toggle{position:relative}.basemap-toggle-btn{display:flex;align-items:center;gap:6px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text-primary);cursor:pointer;transition:all .2s ease;font-size:.85rem}.basemap-toggle-btn:hover{background:#ffffff26;border-color:var(--accent-color)}.basemap-toggle-btn svg{opacity:.8}.basemap-menu{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:6px;display:flex;flex-direction:column;gap:4px;min-width:120px;box-shadow:var(--shadow-lg)}.basemap-option{display:flex;align-items:center;gap:8px;background:transparent;border:none;padding:8px 12px;border-radius:6px;color:var(--text-primary);cursor:pointer;transition:all .2s ease;font-size:.85rem;text-align:left}.basemap-option:hover{background:#ffffff1a}.basemap-option.active{background:#00d4aa33;color:var(--accent-color)}.basemap-option .basemap-icon{font-size:1.1rem}.layer-toggle{position:relative}.layer-toggle-btn{display:flex;align-items:center;gap:6px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text-primary);cursor:pointer;transition:all .2s ease;font-size:.85rem}.layer-toggle-btn:hover{background:#ffffff26;border-color:var(--accent-color)}.layer-toggle-btn svg{opacity:.8}.layer-menu{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:10px;min-width:220px;max-height:50vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.layer-menu-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--panel-border);font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.layer-count{color:var(--accent-color);font-weight:600}.layer-list{display:flex;flex-direction:column;gap:6px}.layer-option{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;transition:all .2s ease;font-size:.85rem;color:var(--text-primary)}.layer-option:hover{background:#ffffff14}.layer-option input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent-color);cursor:pointer}.layer-color{width:14px;height:14px;border-radius:3px;flex-shrink:0;opacity:.8}.layer-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend{background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:10px 14px;box-shadow:var(--shadow-lg)}.legend-title{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--text-primary);margin-bottom:4px}.legend-item:last-child{margin-bottom:0}.legend-color{width:16px;height:16px;border-radius:3px;flex-shrink:0}.legend-color.ftth{background:#00bfffb3;border:1px solid rgba(0,220,255,.9)}.legend-color.hfc{background:#ff3c3cb3;border:1px solid rgba(255,80,80,.9)}.legend-color.other{background:#00c864b3;border:1px solid rgba(0,255,120,.9)}.recent-searches{margin-top:8px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:10px}.recent-title{font-size:.7rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.recent-list{display:flex;flex-wrap:wrap;gap:6px}.recent-item{display:flex;align-items:center;background:#ffffff14;border:1px solid var(--panel-border);border-radius:20px;transition:all .2s ease}.recent-item:hover{background:#ffffff26;border-color:var(--accent-color)}.recent-item-btn{display:flex;align-items:center;gap:5px;background:none;border:none;padding:5px 4px 5px 10px;font-size:.8rem;color:var(--text-primary);cursor:pointer}.recent-item-btn svg{opacity:.6;flex-shrink:0}.recent-item-remove{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);font-size:1rem;cursor:pointer;padding:2px 8px 2px 4px;opacity:.6;transition:all .2s ease}.recent-item-remove:hover{opacity:1;color:#ff6b6b}.feature-search-container{position:fixed;top:70px;left:16px;z-index:15;max-width:350px;width:calc(100% - 32px)}.feature-search-box{display:flex;align-items:center;gap:8px;background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);padding:8px 12px;box-shadow:var(--shadow-lg)}.feature-search-box .search-icon{color:var(--text-secondary);flex-shrink:0}.feature-search-box input{flex:1;min-width:0;background:transparent;border:none;color:var(--text-primary);font-size:.9rem;font-family:inherit;outline:none}.feature-search-box input::placeholder{color:var(--text-secondary)}.clear-search-btn{background:none;border:none;color:var(--text-secondary);font-size:1.2rem;cursor:pointer;padding:4px;line-height:1;transition:color .2s}.clear-search-btn:hover{color:var(--text-primary)}.search-submit-btn{background:var(--accent-color);border:none;color:#000;font-size:.8rem;font-weight:600;padding:6px 12px;border-radius:4px;cursor:pointer;transition:all .2s;white-space:nowrap}.search-submit-btn:hover{background:var(--accent-hover)}.search-submit-btn:disabled{opacity:.5;cursor:not-allowed}.results-panel{position:fixed;top:70px;left:16px;margin-bottom:16px;width:350px;max-width:calc(100% - 32px);max-height:calc(100vh - 200px);background:var(--panel-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--panel-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:14;display:flex;flex-direction:column;transform:translate(-120%);transition:transform .3s ease}.results-panel.visible{transform:translate(0)}.results-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--panel-border)}.results-header h3{margin:0;font-size:.95rem;font-weight:600;color:var(--accent-color)}.results-list{overflow-y:auto;max-height:calc(100vh - 280px)}.result-item{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--panel-border);cursor:pointer;transition:all .15s ease}.result-item:hover,.result-item.hovered{background:#00d4aa26}.result-item.hovered{background:#ff03;border-left:3px solid #ffcc00;padding-left:13px}.result-item:last-child{border-bottom:none}.result-color-bar{width:4px;height:100%;min-height:36px;border-radius:2px;flex-shrink:0}.result-content{flex:1;min-width:0}.result-name{font-size:.9rem;color:var(--text-primary);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-layer{font-size:.75rem;color:var(--text-secondary);margin-top:2px}.result-arrow{color:var(--text-secondary);flex-shrink:0;opacity:.5;transition:all .2s}.result-item:hover .result-arrow,.result-item.hovered .result-arrow{opacity:1;color:var(--accent-color);transform:translate(2px)}.no-results{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;color:var(--text-secondary);gap:10px}.no-results svg{opacity:.4}.no-results span{font-size:.9rem}@media(max-width:600px){.feature-search-container{top:75px;max-width:calc(100% - 32px)}.results-panel{top:135px;width:calc(100% - 32px);max-height:40vh}.results-list{max-height:35vh}}.login-container{display:flex;min-height:100vh;width:100%}.login-left{flex:1;display:flex;align-items:center;justify-content:center;background:#fff;padding:40px}.logo-container{max-width:400px;width:100%}.company-logo{width:100%;height:auto;object-fit:contain}.login-right{flex:1;display:flex;align-items:center;justify-content:center;background:#f8f9fa;padding:40px}.login-form{width:100%;max-width:350px}.login-title{font-size:28px;font-weight:600;color:#333;margin-bottom:30px}.login-input{width:100%;padding:14px 16px;border:1px solid #ddd;border-radius:6px;font-size:15px;margin-bottom:16px;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.login-input:focus{outline:none;border-color:#e65100;box-shadow:0 0 0 3px #e651001a}.login-input::placeholder{color:#999}.login-button{width:100%;padding:14px;background:linear-gradient(135deg,#e65100,#ff6d00);color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:500;cursor:pointer;transition:opacity .2s,transform .1s}.login-button:hover:not(:disabled){opacity:.9}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:disabled{background:#ccc;cursor:not-allowed}.login-error{background:#ffebee;color:#c62828;padding:12px 16px;border-radius:6px;margin-bottom:16px;font-size:14px;border:1px solid #ffcdd2}@media(max-width:768px){.login-container{flex-direction:column}.login-left{padding:30px 20px;min-height:auto}.logo-container{max-width:280px}.login-right{padding:30px 20px;flex:2}.login-title{font-size:24px}}
