:root{--bg-dark:#0f1115;--panel-bg:rgba(15,17,21,0.72);--panel-blur:blur(16px);--panel-border:rgba(255,255,255,0.08);--text-main:#f3f4f6;--text-muted:#9ca3af;--accent-cyan:#06b6d4;--accent-purple:#8b5cf6;--accent-green:#10b981;--accent-orange:#f59e0b;--accent-red:#ef4444}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,Oxygen,Ubuntu,sans-serif;background-color:var(--bg-dark);color:var(--text-main)}.dashboard-container{display:block;height:100vh;width:100vw;position:relative;overflow:hidden}.sidebar{transition:transform .3s cubic-bezier(.4,0,.2,1)}.sidebar.closed{transform:translateY(calc(100% - 60px))}.map-container{width:100%;height:100%;position:absolute;top:0;left:0}.header{padding:24px;border-bottom:1px solid var(--panel-border)}.header h1{margin:0;font-size:24px;font-weight:700;background:linear-gradient(90deg,var(--accent-cyan),var(--accent-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.header p{margin:8px 0 0;font-size:14px;color:var(--text-muted)}.tabs{display:flex;border-bottom:1px solid var(--panel-border);background:rgba(0,0,0,.25);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.tab{flex:1 1;padding:16px;text-align:center;font-size:14px;font-weight:600;cursor:pointer;color:var(--text-muted);transition:all .2s;border-bottom:2px solid transparent}.tab.active{color:var(--text-main);border-bottom:2px solid var(--accent-cyan);background:rgba(6,182,212,.06)}.tab-content{flex-grow:1;overflow-y:auto;padding:16px}.category-title{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin:24px 0 12px;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.05)}.layer-toggle{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;margin-bottom:8px;background:rgba(255,255,255,.03);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid transparent;border-radius:8px;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1)}.layer-toggle:hover{background:rgba(255,255,255,.06)}.layer-toggle.active{background:rgba(6,182,212,.1);border-color:rgba(6,182,212,.25);box-shadow:0 0 12px rgba(6,182,212,.08),inset 0 1px 0 rgba(255,255,255,.04)}.layer-info{display:flex;flex-direction:column}.layer-title{font-size:14px;font-weight:600}.layer-desc{font-size:12px;color:var(--text-muted);margin-top:4px}.switch{position:relative;display:inline-block;width:40px;height:20px}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:rgba(255,255,255,.2);border-radius:20px}.slider,.slider:before{position:absolute;transition:.4s}.slider:before{content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:white;border-radius:50%}input:checked+.slider{background-color:var(--accent-cyan)}input:checked+.slider:before{transform:translateX(20px)}.feed-post{background:rgba(255,255,255,.03);border-radius:8px;padding:16px;margin-bottom:12px;border:1px solid rgba(255,255,255,.05)}.feed-header{display:flex;align-items:center;margin-bottom:12px}.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent-purple),var(--accent-cyan));margin-right:12px}.feed-user{font-weight:600;font-size:14px}.feed-time{font-size:12px;color:var(--text-muted)}.feed-content{font-size:14px;line-height:1.5;color:#d1d5db}.feed-input{width:100%;background:rgba(0,0,0,.2);border:1px solid var(--panel-border);border-radius:8px;padding:12px;color:white;resize:none;font-family:Inter,sans-serif;margin-bottom:16px;box-sizing:border-box}.feed-input:focus{outline:none;border-color:var(--accent-cyan)}.btn-post{background:var(--accent-cyan);color:black;border:none;padding:8px 16px;border-radius:4px;font-weight:600;cursor:pointer;float:right;transition:opacity .2s}.btn-post:hover{opacity:.8}@media (max-width:768px){.dashboard-container{flex-direction:column}.sidebar{width:100%;min-width:100%;height:50vh;border-right:none;border-bottom:1px solid var(--panel-border);position:absolute;bottom:0;z-index:20;box-shadow:0 -5px 25px rgba(0,0,0,.5)}.map-container{height:100vh}}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.maplibregl-ctrl-bottom-left,.maplibregl-ctrl-bottom-right{z-index:50!important}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:rgba(0,0,0,.2)}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.2)}.nexa-select{width:100%;padding:8px 12px;background:rgba(17,24,39,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-main);border:1px solid rgba(255,255,255,.1);border-radius:6px;outline:none;font-size:13px;font-family:Inter,sans-serif;appearance:none;cursor:pointer;transition:all .2s ease;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 10px center;background-size:14px}.nexa-select:hover{border-color:rgba(255,255,255,.3);background:rgba(17,24,39,.85)}.nexa-select:focus{border-color:var(--accent-cyan);box-shadow:0 0 0 2px rgba(6,182,212,.2)}.nexa-select option{background:#111827;color:#f3f4f6;padding:8px}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-glow{0%,to{opacity:.4}50%{opacity:1}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.skeleton{background:linear-gradient(90deg,rgba(148,163,184,.05) 25%,rgba(148,163,184,.12) 50%,rgba(148,163,184,.05) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:6px}.skeleton-text{height:14px;margin-bottom:8px}.skeleton-text.short{width:40%}.skeleton-text.medium{width:65%}.skeleton-text.long{width:90%}.loading-spinner{width:20px;height:20px;border:2px solid rgba(59,130,246,.2);border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite}.loading-pulse{display:flex;align-items:center;gap:8px;padding:8px 12px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.15);border-radius:8px;font-size:12px;color:#93c5fd;animation:pulse-glow 2s ease-in-out infinite}.layer-loading-bar{position:absolute;bottom:0;left:0;height:2px;background:linear-gradient(90deg,transparent,#3b82f6,transparent);background-size:200% 100%;animation:shimmer 1.2s ease-in-out infinite;width:100%;border-radius:0 0 8px 8px}.layer-toggle{position:relative}.layer-toggle.error-pulse{border-color:rgba(239,68,68,.3)!important;animation:error-flash 2s ease-in-out 3}@keyframes error-flash{0%,to{border-color:rgba(239,68,68,.15)}50%{border-color:rgba(239,68,68,.5)}}.layer-toggle.loading:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:linear-gradient(90deg,transparent,var(--accent-cyan),transparent);background-size:200% 100%;animation:shimmer 1s ease-in-out infinite}.deckgl-tooltip{pointer-events:auto!important;transition:opacity .3s ease-out .5s!important}.deckgl-tooltip:not(:empty),.deckgl-tooltip[style*="display: block"]{opacity:1!important;transition:opacity .1s ease-in!important}.deckgl-tooltip:hover{opacity:1!important;transition:none!important}@media (max-width:768px) and (pointer:coarse){.deckgl-tooltip a,.deckgl-tooltip button{min-height:44px!important;display:flex!important;align-items:center!important;padding:10px 12px!important;font-size:14px!important}.layer-toggle{min-height:48px!important;padding:10px 12px!important}.layer-toggle .layer-title{font-size:14px!important}.story-mode-selector a,.story-mode-selector button{min-height:44px!important;padding:10px 12px!important}input[type=search],input[type=text],select{min-height:44px!important;font-size:16px!important}}@supports (padding:env(safe-area-inset-top)){.sidebar{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}}@keyframes pulse-slide{0%{transform:translateX(-100%)}to{transform:translateX(430%)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}