:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-panel:#0a0a0f66;--bg-panel-hover:#0f0f1680;--bg-control:#ffffff0d;--bg-control-hover:#ffffff1a;--bg-control-active:#ffffff26;--accent-primary:#6366f1;--accent-primary-glow:#6366f166;--accent-secondary:#8b5cf6;--accent-warm:#f59e0b;--accent-green:#10b981;--accent-red:#ef4444;--accent-cyan:#06b6d4;--text-primary:#fff;--text-secondary:#a1a1aa;--text-tertiary:#71717a;--text-accent:#c7d2fe;--border-subtle:#ffffff0a;--border-medium:#ffffff14;--border-focus:#6366f180;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 12px #0006;--shadow-lg:0 12px 40px #00000080;--shadow-glow:0 0 20px var(--accent-primary-glow);--glass-blur:32px;--glass-bg:#0a0a0f8c;--glass-border:#ffffff0f;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--space-2xl:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--transition-fast:.12s ease;--transition-normal:.2s ease;--transition-smooth:.3s cubic-bezier(.4, 0, .2, 1);--transition-spring:.4s cubic-bezier(.34, 1.56, .64, 1);--z-map:0;--z-panel:100;--z-toolbar:200;--z-modal:300;--z-toast:400}.light-theme{--bg-primary:#f0f2f5;--bg-secondary:#fff;--bg-panel:#ffffff8c;--bg-panel-hover:#ffffffb3;--bg-control:#0000000a;--bg-control-hover:#00000012;--bg-control-active:#0000001f;--accent-primary-glow:#6366f140;--text-primary:#0f172a;--text-secondary:#475569;--text-tertiary:#64748b;--text-accent:#4338ca;--border-subtle:#0000000f;--border-medium:#0000001f;--border-focus:#6366f180;--glass-bg:#ffffffa6;--glass-border:#00000014;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 12px 40px #0000001a;--shadow-glow:0 0 16px var(--accent-primary-glow)}.light-theme .glass-panel{box-shadow:var(--shadow-lg), inset 0 1px 0 #fff9}.light-theme .btn{background:#0000000a;border-color:#00000014;box-shadow:0 1px 3px #0000000f}.light-theme .btn:hover{background:#00000012;border-color:#00000024}.light-theme .btn:active{background:#0000001a}.light-theme .chip{background:#00000008;border-color:#00000014}.light-theme .chip:hover{background:#0000000f;border-color:#0000001f}.light-theme .chip.active{box-shadow:0 0 8px var(--accent-primary-glow);background:#6366f11f}.light-theme .toggle-track{background:#0000001f;box-shadow:inset 0 1px 2px #0000001a}.light-theme .toggle-track:after{background:#fff;box-shadow:0 1px 3px #0003}.light-theme input[type=range]{background:#0000001f}.light-theme input[type=range]::-webkit-slider-thumb{background:var(--accent-primary);box-shadow:0 1px 4px #0003}.light-theme .section-title:after{background:#00000014}.light-theme ::-webkit-scrollbar-track{background:0 0}.light-theme ::-webkit-scrollbar-thumb{background:#0000001f}.light-theme ::-webkit-scrollbar-thumb:hover{background:#0003}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border-radius:var(--radius-full);background:#ffffff26}::-webkit-scrollbar-thumb:hover{background:#ffffff40}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(200%);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg), inset 0 1px 0 #ffffff1a}.btn{justify-content:center;align-items:center;gap:var(--space-sm);color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-normal);-webkit-user-select:none;user-select:none;white-space:nowrap;background:#ffffff0d;border:1px solid #ffffff0d;border-radius:20px;padding:6px 14px;font-size:13px;font-weight:500;display:inline-flex;box-shadow:0 2px 4px #0003}.btn:hover{background:#ffffff1a;border-color:#ffffff26;transform:translateY(-1px)}.btn:active{background:#ffffff08;transform:translateY(0)}.btn-accent{background:var(--accent-primary);color:#fff;border-color:#0000}.btn-accent:hover{box-shadow:var(--shadow-glow);background:#5558e6}.btn-icon{border-radius:var(--radius-md);width:30px;height:30px;padding:0;font-size:14px}.slider-container{align-items:center;gap:var(--space-sm);display:flex}.slider-label{color:var(--text-secondary);min-width:80px;font-size:11px}.slider-value{font-family:var(--font-mono);color:var(--text-accent);text-align:right;min-width:36px;font-size:11px}input[type=range]{appearance:none;border-radius:var(--radius-full);cursor:pointer;background:#fff3;outline:none;flex:1;height:2px;position:relative}input[type=range]::-webkit-slider-thumb{appearance:none;width:12px;height:12px;box-shadow:0 0 10px var(--accent-primary-glow), 0 2px 4px #00000080;cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast);background:#fff;border-radius:50%}input[type=range]::-webkit-slider-thumb:hover{box-shadow:0 0 14px var(--accent-primary-glow), 0 2px 8px #0009;transform:scale(1.3)}.toggle{flex-shrink:0;width:32px;height:18px;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle-track{border-radius:var(--radius-full);cursor:pointer;transition:background var(--transition-normal);background:#ffffff1a;position:absolute;inset:0;box-shadow:inset 0 1px 3px #0000004d}.toggle-track:after{content:"";width:14px;height:14px;transition:transform var(--transition-smooth), background var(--transition-normal);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0006}.toggle input:checked+.toggle-track{background:var(--accent-primary)}.toggle input:checked+.toggle-track:after{box-shadow:0 1px 2px #0006, 0 0 8px var(--accent-primary-glow);transform:translate(14px)}.section-title{align-items:center;gap:var(--space-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);padding:var(--space-sm) 0;margin-top:var(--space-sm);font-size:10px;font-weight:600;display:flex}.section-title:after{content:"";background:var(--border-subtle);flex:1;height:1px}.control-row{padding:var(--space-xs) 0;justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.control-label{color:var(--text-secondary);font-size:12px}.chip-grid{gap:var(--space-xs);grid-template-columns:repeat(3,1fr);display:grid}.chip{color:var(--text-secondary);cursor:pointer;transition:all var(--transition-normal);text-align:center;background:#ffffff08;border:1px solid #ffffff0d;border-radius:12px;justify-content:center;align-items:center;gap:4px;padding:6px;font-size:11px;font-weight:500;display:flex}.chip:hover{color:var(--text-primary);background:#ffffff14;border-color:#ffffff1a;transform:translateY(-1px)}.chip.active{border-color:var(--accent-primary);color:var(--text-primary);box-shadow:0 0 12px var(--accent-primary-glow);background:#6366f126}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.maplibregl-ctrl-attrib{color:#ffffff59!important;background:0 0!important;border-radius:0!important;margin:0!important;padding:0 4px!important;font-size:9px!important}.maplibregl-ctrl-attrib a{color:#fff6!important}.maplibregl-ctrl-logo{display:none!important}.maplibregl-ctrl-scale{color:#fff6!important;background:0 0!important;border-color:#ffffff40!important;height:auto!important;margin:0!important;padding:0 4px!important;font-size:9px!important;line-height:16px!important}.light-theme .maplibregl-ctrl-attrib{color:#0000004d!important}.light-theme .maplibregl-ctrl-attrib a{color:#00000059!important}.light-theme .maplibregl-ctrl-scale{color:#00000059!important;border-color:#0003!important}.maplibregl-ctrl-bottom-right{bottom:32px!important}
