@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap);:root{--font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;--bg-app:#F8FAFC;--bg-surface:rgba(255, 255, 255, 0.94);--bg-surface-hover:#F1F5F9;--bg-surface-active:#E2E8F0;--text-primary:#0F172A;--text-secondary:#475569;--text-muted:#94A3B8;--border-subtle:rgba(226, 232, 240, 0.9);--border-strong:#CBD5E1;--border-focus:#3B82F6;--primary:#3B82F6;--primary-hover:#2563EB;--primary-light:#EFF6FF;--primary-glow:rgba(59, 130, 246, 0.35);--success:#10B981;--success-light:#ECFDF5;--warning:#F59E0B;--warning-light:#FFFBEB;--danger:#EF4444;--danger-light:#FEF2F2;--branch-blue:#3B82F6;--branch-indigo:#6366F1;--branch-purple:#8B5CF6;--branch-pink:#EC4899;--branch-rose:#F43F5E;--branch-orange:#F97316;--branch-amber:#F59E0B;--branch-emerald:#10B981;--branch-teal:#14B8A6;--branch-cyan:#06B6D4;--shadow-xs:0 1px 2px rgba(0, 0, 0, 0.05);--shadow-sm:0 2px 6px rgba(15, 23, 42, 0.06);--shadow-md:0 6px 16px -2px rgba(15, 23, 42, 0.08),0 2px 4px -2px rgba(15, 23, 42, 0.04);--shadow-lg:0 12px 28px -4px rgba(15, 23, 42, 0.12),0 4px 8px -2px rgba(15, 23, 42, 0.06);--shadow-float:0 20px 35px -5px rgba(15, 23, 42, 0.15),0 10px 15px -5px rgba(15, 23, 42, 0.05);--shadow-node:0 2px 5px rgba(15, 23, 42, 0.05),0 1px 2px rgba(15, 23, 42, 0.03);--shadow-node-active:0 0 0 3px rgba(59, 130, 246, 0.3),0 8px 18px rgba(59, 130, 246, 0.18);--glass-bg:rgba(255, 255, 255, 0.85);--glass-border:rgba(255, 255, 255, 0.7);--glass-blur:blur(14px);--transition-fast:150ms cubic-bezier(0.4, 0, 0.2, 1);--transition-normal:240ms cubic-bezier(0.4, 0, 0.2, 1);--transition-spring:350ms cubic-bezier(0.175, 0.885, 0.32, 1.275);--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--header-height:58px}[data-theme=dark]{--bg-app:#0B0F19;--bg-surface:rgba(17, 24, 39, 0.94);--bg-surface-hover:#1F2937;--bg-surface-active:#374151;--text-primary:#F8FAFC;--text-secondary:#CBD5E1;--text-muted:#64748B;--border-subtle:rgba(51, 65, 85, 0.7);--border-strong:#475569;--glass-bg:rgba(17, 24, 39, 0.85);--glass-border:rgba(255, 255, 255, 0.08);--shadow-sm:0 2px 6px rgba(0, 0, 0, 0.4);--shadow-md:0 6px 16px -2px rgba(0, 0, 0, 0.5);--shadow-lg:0 12px 28px -4px rgba(0, 0, 0, 0.6);--shadow-node:0 2px 6px rgba(0, 0, 0, 0.35)}*,::after,::before{box-sizing:border-box;margin:0;padding:0}body,html{width:100%;height:100%;overflow:hidden;font-family:var(--font-family);background-color:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;user-select:none}#app-container{display:flex;flex-direction:column;width:100vw;height:100vh;position:relative;overflow:hidden}.top-header{height:var(--header-height);width:100%;background:var(--glass-bg);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 .85rem;gap:.5rem;z-index:100;box-shadow:var(--shadow-xs);transition:background var(--transition-fast);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.top-header::-webkit-scrollbar{display:none}.header-left{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.brand-badge{display:flex;align-items:center;gap:.4rem;font-weight:700;font-size:1.05rem;color:var(--text-primary);text-decoration:none;letter-spacing:-.02em;flex-shrink:0}.brand-icon{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#3b82f6,#8b5cf6);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 3px 8px rgba(59,130,246,.35);flex-shrink:0}.brand-icon svg{width:16px;height:16px;fill:currentColor}.map-title-wrapper{display:flex;align-items:center;gap:.35rem;min-width:0}.map-title-input{font-family:inherit;font-size:.88rem;font-weight:600;color:var(--text-primary);background:0 0;border:1px solid transparent;border-radius:var(--radius-sm);padding:.2rem .4rem;max-width:170px;min-width:80px;text-overflow:ellipsis;white-space:nowrap;transition:all var(--transition-fast)}.map-title-input:hover{background:var(--bg-surface-hover);border-color:var(--border-subtle)}.map-title-input:focus{outline:0;background:var(--bg-surface);border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-glow)}.save-badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:500;padding:.2rem .5rem;border-radius:var(--radius-full);background:var(--success-light);color:var(--success);white-space:nowrap;flex-shrink:0;height:24px;line-height:1;transition:all var(--transition-fast)}.save-badge .pulse-dot{width:6px;height:6px;border-radius:50%;background-color:currentColor;box-shadow:0 0 0 0 rgba(16,185,129,.7);animation:2s infinite pulse-save;flex-shrink:0}@keyframes pulse-save{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(16,185,129,.7)}70%{transform:scale(1);box-shadow:0 0 0 5px rgba(16,185,129,0)}100%{transform:scale(.95);box-shadow:0 0 0 0 rgba(16,185,129,0)}}.header-center{display:flex;align-items:center;gap:.15rem;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:.15rem .25rem;box-shadow:var(--shadow-xs);flex-shrink:0}.btn-icon{background:0 0;border:none;color:var(--text-secondary);border-radius:var(--radius-sm);width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);position:relative;flex-shrink:0}.btn-icon:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--text-primary)}.btn-icon:active:not(:disabled){background:var(--bg-surface-active);transform:scale(.95)}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.separator-v{width:1px;height:16px;background-color:var(--border-subtle);margin:0 .15rem;flex-shrink:0}.zoom-indicator{font-size:.76rem;font-weight:600;color:var(--text-secondary);min-width:38px;text-align:center;cursor:pointer;padding:.15rem .25rem;border-radius:var(--radius-sm);transition:background var(--transition-fast);flex-shrink:0}.zoom-indicator:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.header-right{display:flex;align-items:center;gap:.35rem;flex-shrink:0;margin-right:.15rem}.btn-header{display:inline-flex;align-items:center;gap:.35rem;background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-primary);font-family:inherit;font-size:.78rem;font-weight:500;padding:.28rem .55rem;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all var(--transition-fast);box-shadow:var(--shadow-xs)}.btn-header:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.btn-header.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600;box-shadow:0 3px 10px rgba(59,130,246,.3)}.btn-header.btn-primary:hover{background:var(--primary-hover);box-shadow:0 5px 14px rgba(59,130,246,.4)}.user-profile-badge{display:flex;align-items:center;gap:.4rem;padding:.2rem .55rem;border-radius:var(--radius-full);border:1px solid var(--border-subtle);background:var(--bg-surface);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all var(--transition-fast)}.user-profile-badge:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.user-avatar{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#10b981,#06b6d4);color:#fff;font-size:.7rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-name-text{font-size:.78rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}#toast-container{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:9999;pointer-events:none}.toast{pointer-events:auto;background:rgba(15,23,42,.92);backdrop-filter:blur(8px);color:#fff;padding:.6rem 1.1rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:.5rem;animation:.3s cubic-bezier(.175,.885,.32,1.275) toast-in;transition:opacity .25s,transform .25s}.toast.toast-success svg{stroke:#10b981}.toast.toast-info svg{stroke:#3b82f6}.toast.toast-warning svg{stroke:#f59e0b}@keyframes toast-in{from{opacity:0;transform:translateY(12px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:-32px;left:50%;transform:translateX(-50%) scale(.85);background:rgba(15,23,42,.95);color:#fff;padding:.25rem .55rem;border-radius:4px;font-size:.72rem;font-weight:500;white-space:nowrap;pointer-events:none;opacity:0;transition:.15s;z-index:1000;box-shadow:0 4px 10px rgba(0,0,0,.15)}[data-tooltip]:hover::after{opacity:1;transform:translateX(-50%) scale(1)}