*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;line-height:1.5}html,body,#root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}body{line-height:inherit;font-size:16px}:root{--fs-2xs:.625rem;--fs-xs:.6875rem;--fs-sm:.75rem;--fs-md:.8125rem;--fs-lg:.875rem;--fs-xl:.9375rem}[data-theme=dark]{--bg-primary:#0a0e1a;--bg-secondary:#111827;--bg-tertiary:#1e2740;--bg-glass:#111827bf;--bg-glass-hover:#1e2740d9;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--accent:#06b6d4;--accent-hover:#22d3ee;--accent-glow:#06b6d440;--accent-subtle:#06b6d414;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--info:#3b82f6;--border:#94a3b81f;--border-hover:#94a3b840;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 12px 40px #0009;--shadow-glow:0 0 20px var(--accent-glow);--sidebar-width:200px;--sidebar-collapsed:48px;--header-height:42px;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--radius-xl:18px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-tertiary:#f1f5f9;--bg-glass:#fff;--bg-glass-hover:#f1f5f9;--text-primary:#111;--text-secondary:#333;--text-muted:#666;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-glow:#2563eb2e;--accent-subtle:#2563eb0f;--success:#059669;--warning:#d97706;--danger:#dc2626;--info:#2563eb;--border:#d1d5db;--border-hover:#9ca3af;--shadow-sm:0 1px 2px #0000001a;--shadow-md:0 4px 6px #0000001a;--shadow-lg:0 10px 15px #0000001a;--shadow-glow:none;--sidebar-width:200px;--sidebar-collapsed:48px;--header-height:42px;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--radius-xl:18px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=ocean]{--bg-primary:#021526;--bg-secondary:#03213d;--bg-tertiary:#0a3057;--bg-glass:#03213dc7;--bg-glass-hover:#0a3057e0;--text-primary:#e0f2fe;--text-secondary:#7dd3fc;--text-muted:#38bdf8;--accent:#38bdf8;--accent-hover:#7dd3fc;--accent-glow:#38bdf833;--accent-subtle:#38bdf80f;--success:#34d399;--warning:#fbbf24;--danger:#f87171;--info:#60a5fa;--border:#7dd3fc1a;--border-hover:#7dd3fc33;--shadow-sm:0 1px 3px #00000080;--shadow-md:0 4px 16px #0009;--shadow-lg:0 12px 40px #000000b3;--shadow-glow:0 0 25px var(--accent-glow);--sidebar-width:200px;--sidebar-collapsed:48px;--header-height:42px;--radius-sm:5px;--radius-md:8px;--radius-lg:12px;--radius-xl:18px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=dark]{--panel-surface:#0a0e1af0;--panel-surface-raised:#1e2740bd;--panel-surface-soft:#94a3b80f;--panel-border-strong:#94a3b838;--panel-highlight:#ffffff0b;--on-accent:#04242b;--success-subtle:#10b98121;--warning-subtle:#f59e0b21;--danger-subtle:#ef444421}[data-theme=light]{--panel-surface:#f8fafcf7;--panel-surface-raised:#fff;--panel-surface-soft:#0f172a09;--panel-border-strong:#b8c1ce;--panel-highlight:#ffffffe6;--on-accent:#fff;--success-subtle:#0596691a;--warning-subtle:#d977061a;--danger-subtle:#dc262617}[data-theme=ocean]{--panel-surface:#021526f2;--panel-surface-raised:#0a3057c2;--panel-surface-soft:#38bdf80e;--panel-border-strong:#7dd3fc3d;--panel-highlight:#7dd3fc0e;--on-accent:#03213d;--success-subtle:#34d39921;--warning-subtle:#fbbf2421;--danger-subtle:#f8717121}.app-layout{background:var(--bg-primary);width:100vw;height:100vh;color:var(--text-primary);flex-direction:column;display:flex;overflow:hidden}.app-body{flex:1;display:flex;position:relative;overflow:hidden}.app-main{flex:1;position:relative;overflow:hidden}.header{height:var(--header-height);background:var(--bg-glass);-webkit-backdrop-filter:blur(20px)saturate(1.4);border-bottom:1px solid var(--border);z-index:100;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 12px;display:flex}.header-left{align-items:center;gap:9px;display:flex}.header-logo{font-weight:700;font-size:var(--fs-lg);color:var(--text-primary);letter-spacing:-.3px;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;text-decoration:none;display:flex}.header-logo img{object-fit:contain;width:auto;height:24px}.header-logo-text{font-weight:800;font-size:var(--fs-sm);letter-spacing:1.1px;color:var(--text-primary)}.header-logo-text .logo-highlight{color:var(--accent)}.header-right{align-items:center;gap:5px;display:flex}.menu-toggle{color:var(--text-primary);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast);background:0 0;border:none;padding:5px;display:none}.menu-toggle:hover{background:var(--bg-tertiary)}.icon-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-glass);width:27px;height:27px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);justify-content:center;align-items:center;display:inline-flex;position:relative}.icon-btn:hover{background:var(--bg-glass-hover);color:var(--text-primary);border-color:var(--border-hover)}.icon-btn.active{background:var(--accent-subtle);color:var(--accent);border-color:var(--accent)}.menu-toggle:active,.icon-btn:active{opacity:.85;transform:scale(.95)}.sidebar{width:var(--sidebar-width);background:var(--bg-secondary);border-right:1px solid var(--border);z-index:90;flex-direction:column;flex-shrink:0;transition:width .3s cubic-bezier(.16,1,.3,1);display:flex;position:relative;overflow:hidden}.sidebar-brand,.sidebar-search,.sidebar-profile-bottom{flex-shrink:0}.sidebar-nav-scroll{flex:auto;min-height:0;padding-bottom:6px;overflow:hidden auto}.sidebar-search{align-items:center;margin:10px 12px 6px;display:flex;position:relative}.sidebar-search-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:9px}.sidebar-search-input{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-size:var(--fs-md);outline:none;padding:7px 26px 7px 30px;transition:border-color .15s}.sidebar-search-input::placeholder{color:var(--text-muted)}.sidebar-search-input:focus{border-color:var(--accent)}.sidebar-search-clear{border-radius:var(--radius-sm);width:18px;height:18px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:color .15s,background .15s;display:inline-flex;position:absolute;right:7px}.sidebar-search-clear:hover{color:var(--text-primary);background:var(--bg-secondary)}.sidebar-empty{color:var(--text-muted);font-size:var(--fs-md);text-align:center;padding:18px 16px}.sidebar.collapsed .sidebar-search{display:none}.sidebar-profile.horizontal-profile.sidebar-profile-bottom{border-top:1px solid var(--border);border-bottom:none;margin-top:auto}.sidebar.collapsed{width:var(--sidebar-collapsed)}.sidebar-brand{height:var(--header-height);border-bottom:1px solid var(--border);justify-content:flex-end;align-items:center;padding:12px 15px;display:flex}.sidebar.collapsed .sidebar-brand{flex-direction:column;justify-content:center;gap:12px;height:auto;padding:12px 6px}.sidebar-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);width:24px;height:24px;color:var(--text-secondary);cursor:pointer;background:0 0;justify-content:center;align-items:center;transition:all .2s;display:inline-flex}.sidebar-toggle:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-profile.horizontal-profile{border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-direction:row;justify-content:space-between;align-items:center;gap:9px;padding:12px;display:flex;position:relative}.sidebar.collapsed .sidebar-profile.horizontal-profile{display:none}.profile-main-info{flex:1;align-items:center;gap:8px;display:flex;overflow:hidden}.profile-main-info.clickable{cursor:pointer;border-radius:var(--radius-sm);padding:5px;transition:background .2s}.profile-main-info.clickable:hover{background:var(--bg-tertiary)}.profile-popover{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;margin-top:6px;padding:6px;animation:.2s ease-out slideUpFade;position:absolute;top:100%;left:12px;right:12px}@keyframes slideUpFade{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.btn-menu-item{width:100%;color:var(--text-primary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast);text-align:left;background:0 0;border:none;border-radius:5px;align-items:center;gap:6px;padding:8px 9px;font-weight:500;display:flex}.btn-menu-item:hover{background:var(--bg-tertiary);color:var(--accent)}.btn-signout-full{border:1px solid var(--danger);width:100%;color:var(--danger);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:5px;justify-content:center;align-items:center;gap:6px;margin-top:3px;padding:8px;font-weight:600;display:flex}.btn-signout-full:hover{background:var(--danger);color:var(--on-accent);box-shadow:0 4px 12px #ef44444d}.profile-avatar{background:linear-gradient(135deg, var(--accent) 0%, var(--info) 100%);width:33px;height:33px;color:var(--on-accent);font-weight:700;font-size:var(--fs-xl);box-shadow:0 3px 9px var(--accent-glow);border:1px solid #fff3;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.guest-avatar{color:var(--text-muted);box-shadow:none;background:#ffffff0d;border-color:#ffffff0d}.profile-details{flex-direction:column;gap:2px;display:flex;overflow:hidden}.profile-name{font-weight:700;font-size:var(--fs-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;letter-spacing:.15px;overflow:hidden}.profile-email{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.profile-role{font-size:var(--fs-2xs);background:var(--accent-subtle);color:var(--accent);border:1px solid var(--accent-glow);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;text-overflow:ellipsis;border-radius:9px;align-self:flex-start;max-width:100%;margin-top:1px;padding:1px 6px;font-weight:700;overflow:hidden}.btn-login-small{border:1px solid var(--accent);color:var(--accent);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;background:0 0;flex-shrink:0;padding:6px 9px;font-weight:600;transition:all .3s cubic-bezier(.16,1,.3,1)}.btn-login-small:hover{background:var(--accent);color:var(--on-accent);box-shadow:0 4px 15px var(--accent-glow)}.sidebar-section{border-bottom:1px solid var(--border);padding:12px 0}.sidebar-section:last-of-type{border-bottom:none}.sidebar.collapsed .sidebar-section{padding:9px 0}.sidebar-section-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:1.1px;color:var(--text-muted);white-space:nowrap;transition:opacity var(--transition-fast);margin-bottom:9px;padding:0 15px;font-weight:800;overflow:hidden}.sidebar.collapsed .sidebar-section-title{opacity:0;height:0;margin:0;padding:0;overflow:hidden}.sidebar-nav{flex-direction:column;gap:5px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;align-items:center;gap:9px;margin:0 9px;padding:9px 11px;font-weight:500;text-decoration:none;transition:all .2s;display:flex;overflow:hidden}[data-theme=light] .sidebar-link{color:#111;background:0 0;border:none;font-weight:600}[data-theme=light] .sidebar-link:hover{background:#f3f4f6}[data-theme=light] .sidebar-link.active{color:var(--accent);background:#e5e7eb}.sidebar-link:hover{background:var(--bg-tertiary);color:var(--text-primary)}.sidebar-link.active{background:var(--accent-subtle);color:var(--accent);border-color:var(--accent)}.sidebar.collapsed .sidebar-link{justify-content:center;gap:0;margin:0 6px;padding:9px}.sidebar-link svg{flex-shrink:0;width:15px;height:15px}.sidebar-link-label{transition:opacity var(--transition-fast), width var(--transition-fast);overflow:hidden}.sidebar.collapsed .sidebar-link-label{opacity:0;width:0;overflow:hidden}.sidebar.collapsed .sidebar-link[data-tooltip]:hover:after{content:attr(data-tooltip);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-xs);white-space:nowrap;box-shadow:var(--shadow-lg);border:1px solid var(--border);z-index:200;pointer-events:none;padding:5px 9px;font-weight:500;animation:.15s ease-out tooltipIn;position:absolute;top:50%;left:calc(100% + 11px);transform:translateY(-50%)}.theme-picker{position:relative}.theme-dropdown{background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.8);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:200;min-width:120px;padding:5px;animation:.2s ease-out dropdownIn;position:absolute;top:calc(100% + 6px);right:0}.sidebar-theme-dropdown{transform-origin:0 100%;animation:.2s ease-out dropdownUpIn;inset:auto auto calc(100% + 6px) 9px}@keyframes dropdownUpIn{0%{opacity:0;transform:translateY(6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-6px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.theme-option{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--text-secondary);text-align:left;width:100%;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:6px 9px;font-weight:500;display:flex}.theme-option:hover{background:var(--bg-tertiary);color:var(--text-primary)}.theme-option.active{color:var(--accent)}.theme-swatch{border:2px solid var(--border);border-radius:50%;flex-shrink:0;width:12px;height:12px}.theme-swatch.dark{background:linear-gradient(135deg,#0a0e1a,#1e2740)}.theme-swatch.light{background:linear-gradient(135deg,#f8fafc,#e2e8f0)}.theme-swatch.ocean{background:linear-gradient(135deg,#021526,#0ea5e9)}.sidebar-link.logout-link{color:var(--danger)}.menu-divider{background:var(--border);height:1px;margin:4px 0}.profile-popover.profile-popover-up{margin-top:0;margin-bottom:6px;animation:.2s ease-out slideDownFade;top:auto;bottom:100%}@keyframes slideDownFade{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.sidebar-toggle:active,.sidebar-link:active,.btn-menu-item:active,.btn-signout-full:active{opacity:.85;transform:scale(.97)}.map-container{background-color:var(--bg-primary);width:100%;height:100%;position:relative}.map-canvas{width:100%;height:100%}.map-loading{z-index:100;background:#0000001a;height:3px;position:absolute;top:0;left:0;right:0;overflow:hidden}.map-loading-bar{background:linear-gradient(90deg, transparent, var(--accent), var(--accent-hover), transparent);border-radius:2px;width:40%;height:100%;animation:1s ease-in-out infinite loadingSlide}@keyframes loadingSlide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.map-container .ol-viewport{border-radius:0}.map-container .ol-control{background:0 0}.map-container .ol-control button{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:pointer;transition:all var(--transition-fast);background:var(--bg-glass)!important;color:var(--text-primary)!important;border:1px solid var(--border)!important;border-radius:var(--radius-sm)!important;width:28px!important;height:28px!important;font-size:var(--fs-md)!important}.map-container .ol-control button:hover{background:var(--bg-glass-hover)!important;border-color:var(--accent)!important;color:var(--accent)!important}.map-container .ol-zoom{flex-direction:column;gap:3px;display:flex;inset:auto 9px 75px auto}.map-container .ol-attribution{font-size:var(--fs-2xs);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:2px 5px;background:var(--bg-glass)!important;border-radius:var(--radius-sm)!important;bottom:33px!important;right:9px!important}.map-container .ol-attribution a{color:var(--accent)}.map-search-container{z-index:100;width:290px;transition:left var(--transition-normal), width var(--transition-normal);flex-direction:column;gap:5px;display:flex;position:absolute;top:12px;left:12px}.map-search-container.has-badge{width:380px}.map-search-container.panel-open{left:354px}.map-search-input-wrapper{border:1px solid var(--panel-border-strong,var(--border));background:var(--panel-surface,var(--bg-glass));min-height:42px;box-shadow:var(--shadow-md);transition:border-color var(--transition-fast), background-color var(--transition-fast), box-shadow var(--transition-fast);border-radius:9px;align-items:center;gap:7px;padding:5px 7px;display:flex}.map-search-input-wrapper:focus-within{border-color:color-mix(in srgb, var(--accent) 56%, var(--border));background:var(--panel-surface-raised,var(--bg-secondary));box-shadow:var(--shadow-md), 0 0 0 2px var(--accent-subtle)}.map-search-icon-box{border:1px solid var(--border);background:var(--panel-surface-soft,var(--bg-tertiary));border-radius:7px;flex:0 0 28px;place-items:center;width:28px;height:28px;display:inline-grid}.map-search-icon{color:var(--text-muted);transition:color var(--transition-fast);flex-shrink:0}.map-search-input-wrapper:focus-within .map-search-icon{color:var(--accent)}.map-search-input{min-width:60px;font-family:inherit;font-size:var(--fs-sm);color:var(--text-primary);background:0 0;border:none;outline:none;flex-grow:1;flex-shrink:1;width:0}.map-search-input::placeholder{color:var(--text-muted);font-size:var(--fs-sm)}.map-search-clear-btn{width:28px;height:28px;min-height:0;color:var(--text-muted);cursor:pointer;transition:color var(--transition-fast), background-color var(--transition-fast);background:0 0;border:0;border-radius:6px;flex:0 0 28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.map-search-clear-btn:hover{background:var(--panel-surface-soft,var(--bg-tertiary));color:var(--text-primary)}.map-search-shortcut{border:1px solid var(--border);background:var(--panel-surface-soft,var(--bg-tertiary));width:22px;height:22px;color:var(--text-muted);font:600 var(--fs-2xs)/1 inherit;box-shadow:none;border-radius:5px;flex:0 0 22px;place-items:center;display:inline-grid}.map-search-dropdown{border:1px solid var(--panel-border-strong,var(--border));background:var(--panel-surface,var(--bg-glass));max-height:min(390px,100vh - 80px);box-shadow:var(--shadow-lg);border-radius:9px;flex-direction:column;padding:6px;display:flex;overflow-y:auto}.map-search-dropdown-head{border-bottom:1px solid var(--border);min-height:27px;color:var(--text-secondary);font-size:var(--fs-2xs);justify-content:space-between;align-items:center;gap:8px;padding:3px 6px 6px;font-weight:650;display:flex}.map-search-key-hint{color:var(--text-muted);align-items:center;gap:3px;font-weight:500;display:inline-flex}.map-search-dropdown::-webkit-scrollbar{width:6px}.map-search-dropdown::-webkit-scrollbar-track{background:0 0}.map-search-dropdown::-webkit-scrollbar-thumb{border-radius:var(--radius-sm);background:#ffffff1a}.map-search-dropdown::-webkit-scrollbar-thumb:hover{background:#fff3}.map-search-item{width:100%;min-height:47px;color:var(--text-secondary);font:inherit;text-align:left;cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background-color var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:7px;grid-template-columns:29px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 7px;display:grid}.map-search-item:hover,.map-search-item.focused{border-color:var(--border);background:var(--panel-surface-raised,var(--bg-tertiary));color:var(--text-primary)}.map-search-item.focused{border-color:color-mix(in srgb, var(--accent) 30%, var(--border));background:var(--accent-subtle);box-shadow:inset 2px 0 0 var(--accent)}.map-search-item-icon{border:1px solid var(--border);background:var(--panel-surface-soft,var(--bg-tertiary));width:28px;height:28px;color:var(--text-muted);border-radius:7px;place-items:center;display:inline-grid}.map-search-item-icon.vessel{color:var(--accent)}.map-search-item-icon.sensor{color:var(--warning)}.map-search-item.focused .map-search-item-icon{border-color:color-mix(in srgb, currentColor 28%, var(--border))}.map-search-item-main{flex-direction:column;gap:2px;min-width:0;display:flex}.map-search-item-callsign{font-size:var(--fs-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:650;overflow:hidden}.map-search-item-flag{font-size:var(--fs-2xs);color:var(--text-muted);white-space:nowrap}.map-search-item-status{justify-content:flex-end;align-items:center;display:flex}.map-search-item-status-text{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.4px;font-weight:500}.map-search-item-status-text.live{color:var(--success)}.map-search-item-status-text.offline{color:var(--text-muted)}.map-search-item-speed{font-size:var(--fs-2xs);color:var(--accent);background:var(--accent-subtle);border-radius:var(--radius-sm);border:1px solid #06b6d426;margin-right:3px;padding:1px 4px;font-weight:600}.map-search-item-pulse{background-color:var(--success);border-radius:50%;flex-shrink:0;width:6px;height:6px;position:relative}.map-search-item-pulse:after{content:"";background-color:var(--success);opacity:.6;border-radius:50%;width:10px;height:10px;animation:1.5s cubic-bezier(.215,.61,.355,1) infinite pulse-ring;position:absolute;top:-2px;left:-2px}@keyframes pulse-ring{0%{opacity:.6;transform:scale(.33)}80%,to{opacity:0;transform:scale(1.5)}}.map-search-section-header{font-size:var(--fs-2xs);letter-spacing:.06em;color:var(--text-muted);text-transform:uppercase;justify-content:space-between;align-items:center;gap:8px;padding:8px 7px 4px;font-weight:700;display:flex}.map-search-section-header>span:last-child{background:var(--panel-surface-soft,var(--bg-tertiary));text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:18px;padding:1px 5px}.map-search-section-divider{background:var(--border);height:1px;margin:3px 9px}.map-search-item-subtitle{font-size:var(--fs-2xs);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-weight:400;line-height:1.25;display:block;overflow:hidden}.map-search-status-badge{border:1px solid var(--border);min-height:20px;font-size:var(--fs-2xs);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 6px;font-weight:650;line-height:1;display:inline-flex}.map-search-status-badge>span{background:currentColor;border-radius:50%;width:5px;height:5px}.map-search-status-badge.connected{color:var(--success);background:var(--success-subtle,#10b9811f);border-color:color-mix(in srgb, var(--success) 24%, var(--border))}.map-search-status-badge.disconnected{color:var(--text-muted);background:var(--panel-surface-soft,var(--bg-tertiary));border-color:var(--border)}.map-search-more{border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-2xs);text-align:center;margin-top:4px;padding:7px;line-height:1.35}.map-search-selected-badge{border-radius:var(--radius-sm);font-size:var(--fs-2xs);color:var(--success);white-space:nowrap;background:#10b98126;border:1px solid #10b9814d;flex-shrink:0;align-items:center;gap:5px;padding:2px 6px;font-weight:500;animation:none;display:flex}[data-theme=light] .map-search-selected-badge{color:var(--success);background:#0596691a;border-color:#05966940}.map-search-selected-pulse{background-color:var(--success);width:6px;height:6px;box-shadow:none;border-radius:50%;display:inline-block;position:relative}.map-search-selected-pulse:after{display:none}.badge-callsign{letter-spacing:.02em;font-weight:700}.badge-speed{opacity:.9;border-left:1px solid #10b9814d;padding-left:5px}[data-theme=light] .badge-speed{border-left-color:#05966940}.map-search-selected-close{color:inherit;cursor:pointer;opacity:.7;transition:all var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;margin-left:2px;padding:1px;display:flex}.map-search-selected-close:hover{opacity:1;background:#10b98140}[data-theme=light] .map-search-selected-close:hover{background:#05966926}.map-overlay-controls{z-index:50;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:42px;left:12px}.map-control-group{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);flex-direction:column;gap:3px;padding:3px;display:flex}.map-control-btn{border-radius:var(--radius-sm);width:27px;height:27px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.map-control-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.map-control-btn.active{background:var(--accent-subtle);color:var(--accent)}.map-control-btn:disabled{cursor:default;color:var(--accent)}.map-control-spin{animation:.8s linear infinite mapControlSpin}@keyframes mapControlSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.map-control-spin{animation:none}}.map-control-btn[data-tooltip]{position:relative}.map-control-btn[data-tooltip]:hover:after{content:attr(data-tooltip);background:var(--bg-secondary);color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-2xs);white-space:nowrap;box-shadow:var(--shadow-md);border:1px solid var(--border);z-index:60;padding:4px 8px;font-weight:500;animation:.15s ease-out tooltipIn;position:absolute;top:50%;left:calc(100% + 8px);transform:translateY(-50%)}@keyframes tooltipIn{0%{opacity:0;transform:translateY(-50%)translate(-4px)}to{opacity:1;transform:translateY(-50%)translate(0)}}.coords-display{background:var(--bg-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--fs-2xs);color:var(--text-secondary);z-index:50;letter-spacing:.15px;gap:11px;padding:3px 8px;font-family:Inter,monospace;font-weight:500;display:flex;position:absolute;bottom:6px;right:9px}.coords-display span{color:var(--text-muted)}.coords-display strong{color:var(--text-primary);font-weight:600}.coords-time strong{font-variant-numeric:tabular-nums}@media (width<=640px){.coords-time{display:none}}.bottom-left-watermark{background:var(--bg-secondary);border-top-right-radius:var(--radius-md);z-index:40;font-size:var(--fs-xs);align-items:center;gap:9px;padding:6px 12px;display:flex;position:absolute;bottom:0;left:0;box-shadow:2px -2px 8px #0003}.watermark-logo{color:var(--text-primary);align-items:center;gap:5px;font-weight:700;display:flex}.watermark-logo img{width:auto;height:15px}.watermark-company{color:var(--text-primary);border-right:1px solid var(--border);padding-right:9px;font-weight:600}.watermark-info{color:var(--text-muted)}.sidebar-overlay{z-index:85;background:#00000080;animation:.2s ease-out fadeIn;display:none;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.floating-menu-toggle{background:var(--bg-glass);-webkit-backdrop-filter:blur(20px)saturate(1.8);backdrop-filter:blur(20px)saturate(1.8);border-radius:var(--radius-md);width:33px;height:33px;color:var(--text-primary);z-index:80;cursor:pointer;transition:all var(--transition-fast);border:1px solid #ffffff1a;justify-content:center;align-items:center;display:none;position:absolute;top:12px;left:12px;box-shadow:0 3px 12px #0003}.floating-menu-toggle:hover{background:var(--accent-subtle);color:var(--accent)}.map-control-btn:active,.btn-pick-map:active,.map-search-clear-btn:active{opacity:.85;transform:scale(.95)}.side-panel{background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.4);border:1px solid var(--border);border-radius:var(--radius-md);width:300px;box-shadow:var(--shadow-lg);z-index:70;animation:slidePanelIn var(--transition-normal);flex-direction:column;display:flex;position:absolute;top:12px;bottom:12px;left:12px;overflow:hidden}@keyframes slidePanelIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.side-panel.expanded{z-index:110;width:auto;right:12px}.side-panel-actions{align-items:center;gap:4px;display:flex}.side-panel-header{border-bottom:1px solid var(--border);background:#0000001a;justify-content:space-between;align-items:center;padding:12px;display:flex}.side-panel-title{font-weight:600;font-size:var(--fs-md);color:var(--text-primary);align-items:center;gap:8px;display:flex}.side-panel-title svg{color:var(--accent)}.side-panel-body{flex:1;padding:12px;overflow-y:auto}@media (width<=1024px){.floating-menu-toggle{display:flex}.sidebar{box-shadow:var(--shadow-lg);z-index:95;transition:width .25s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;transform:none;width:var(--sidebar-collapsed)!important}.app-main{margin-left:var(--sidebar-collapsed)}.sidebar.open{width:var(--sidebar-width)!important}.sidebar:not(.open) .sidebar-section-title{opacity:0;height:0;margin:0;padding:0;overflow:hidden}.sidebar:not(.open) .sidebar-link-label{opacity:0;width:0;overflow:hidden}.sidebar:not(.open) .sidebar-link{justify-content:center;gap:0;margin:0 6px;padding:9px}.sidebar:not(.open) .sidebar-section{padding:9px 0}.sidebar .sidebar-profile.horizontal-profile{display:flex!important}.sidebar:not(.open) .sidebar-profile.horizontal-profile{justify-content:center;padding:9px 6px}.sidebar:not(.open) .profile-details,.sidebar:not(.open) .btn-login-small,.sidebar:not(.open) .profile-popover{display:none}.sidebar:not(.open) .profile-main-info{flex:none}.sidebar:not(.open) .sidebar-link.active:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 5px var(--accent-glow,var(--accent));border-radius:50%;position:absolute;top:5px;right:5px}.sidebar.open .sidebar-link-label{opacity:1;width:auto}.sidebar.open .sidebar-section-title{opacity:1;height:auto;margin-bottom:6px;padding:0 15px}.sidebar.open .sidebar-link{justify-content:flex-start;gap:9px;margin:0 9px;padding:8px 9px}.sidebar-overlay.visible{display:block}.map-search-container:not(.panel-open){width:min(290px, calc(100vw - var(--sidebar-collapsed) - 70px));left:57px}.sidebar.open~.app-main .floating-menu-toggle{left:calc(var(--sidebar-width) - var(--sidebar-collapsed) + 12px)}.sidebar.open~.app-main .map-search-container:not(.panel-open){left:calc(var(--sidebar-width) - var(--sidebar-collapsed) + 57px);width:min(290px, calc(100vw - var(--sidebar-width) - 70px))}.menu-toggle{display:inline-flex}.desktop-only{display:none!important}}.mobile-only-logo{display:none}@media (width<=1024px){.mobile-only-logo{display:flex}}@media (width<=640px){:root{--header-height:38px;--sidebar-width:195px}.header{padding:0 9px}.header-logo{font-size:var(--fs-sm)}.map-overlay-controls{bottom:12px;left:8px}.coords-display{font-size:var(--fs-2xs);gap:6px;padding:2px 6px;bottom:5px;right:6px}.map-container .ol-zoom{bottom:60px;right:6px}.map-container .ol-zoom button{width:40px!important;height:40px!important;font-size:var(--fs-lg)!important}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.auth-form{flex-direction:column;gap:20px;display:flex}.auth-intro{color:var(--text-secondary);font-size:var(--fs-xl);margin-bottom:10px}.auth-error{border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius-sm);font-size:var(--fs-lg);background:#ef44441a;padding:10px}.auth-fields{flex-direction:column;gap:16px;display:flex}.auth-field{flex-direction:column;gap:6px;display:flex}.auth-label{font-size:var(--fs-lg);color:var(--text-secondary);font-weight:500}.auth-input{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);padding:10px}.auth-input:focus{border-color:var(--accent)}.auth-submit{background:var(--accent);color:var(--on-accent);border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;margin-top:10px;padding:12px;font-weight:600;display:flex}.auth-submit:disabled{cursor:not-allowed;opacity:.7}.mgmt-list{flex-direction:column;gap:6px;display:flex}.mgmt-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary);justify-content:space-between;align-items:flex-start;gap:6px;padding:9px 11px;transition:border-color .15s,background .15s;display:flex}.mgmt-card:hover{border-color:var(--border-hover);background:var(--bg-tertiary)}.mgmt-card-main{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.mgmt-card-id{font-weight:700;font-size:var(--fs-sm);color:var(--text-primary);align-items:center;gap:6px;display:flex}.mgmt-card-details{flex-direction:column;gap:3px;display:flex}.mgmt-card-row{align-items:center;gap:6px;display:flex}.mgmt-card-label{font-size:var(--fs-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.2px;flex-shrink:0;min-width:60px;font-weight:600}.mgmt-card-value{font-size:var(--fs-xs);color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:3px;display:flex}.mgmt-card-mono{font-family:Consolas,Monaco,monospace;font-size:var(--fs-xs)}.mgmt-card-actions{flex-shrink:0;gap:2px;padding-top:2px;display:flex}.mgmt-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:0;padding-bottom:9px;display:flex}.mgmt-scroll-area{flex:1;min-height:0;padding:9px 0;overflow-y:auto}.mgmt-pagination{border-top:1px solid var(--border);flex-shrink:0;justify-content:center;align-items:center;gap:9px;padding:9px 0 0;display:flex}.mgmt-page-btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-secondary);width:24px;height:24px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.mgmt-page-btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent);color:var(--accent)}.mgmt-page-btn:disabled{opacity:.35;cursor:not-allowed}.mgmt-page-info{font-size:var(--fs-xs);color:var(--text-primary);align-items:center;gap:5px;font-weight:500;display:flex}.mgmt-page-total{font-size:var(--fs-2xs);color:var(--text-muted);font-weight:400}.mgmt-header-desc{color:var(--text-secondary);font-size:var(--fs-xl);margin:0}.mgmt-add-btn{font-size:var(--fs-lg);padding:6px 12px}.mgmt-state{text-align:center;color:var(--text-secondary);padding:20px}.mgmt-empty{text-align:center;flex-direction:column;align-items:center;gap:15px;padding:40px 20px;display:flex}.mgmt-empty-text{color:var(--text-secondary)}.mgmt-card-subtitle{font-size:var(--fs-sm);color:var(--text-muted);font-weight:400}.mgmt-search{align-items:center;display:flex;position:relative}.mgmt-search-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:10px}.mgmt-search-input{box-sizing:border-box;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-tertiary);width:100%;color:var(--text-primary);font-size:var(--fs-lg);outline:none;padding:8px 30px 8px 32px;font-family:inherit;transition:border-color .2s,box-shadow .2s}.mgmt-search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0ea5e91a}.mgmt-search-clear{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex;position:absolute;right:8px}.mgmt-search-clear:hover{color:var(--text-primary);background:var(--bg-secondary)}.vessel-modal.inline,.sensor-modal.inline,.user-modal.inline,.overlay-modal.inline{resize:none;width:100%;max-width:none;height:auto;max-height:none;box-shadow:none;position:static}.vessel-modal.inline .vessel-modal-body,.sensor-modal.inline .sensor-modal-body,.user-modal.inline .user-modal-body,.overlay-modal.inline .overlay-modal-body{max-height:none;overflow:visible}.settings-panel{flex-direction:column;min-height:100%;margin:-12px;display:flex}.settings-tabs{border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-wrap:wrap;gap:6px;padding:12px;display:flex}.settings-tab{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;font-weight:500;font-size:var(--fs-sm);transition:all var(--transition-fast);background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 12px;display:flex}.settings-tab:hover{background:var(--bg-tertiary);color:var(--text-primary)}.settings-tab.active{background:var(--bg-tertiary);color:var(--accent);border:1px solid #ffffff1a}.settings-content{flex:1;padding:15px}.settings-section{flex-direction:column;gap:12px;display:flex}.settings-subtitle{font-size:var(--fs-md);color:var(--text-primary);align-items:center;gap:6px;margin:0;font-weight:600;display:flex}.settings-desc{font-size:var(--fs-sm);color:var(--text-secondary);margin:0}.settings-radio-group{flex-direction:column;gap:9px;margin:6px 0;display:flex}.settings-radio{cursor:pointer;align-items:center;gap:8px;display:flex}.settings-radio input[type=radio]{accent-color:var(--accent);cursor:pointer;width:12px;height:12px}.settings-radio .radio-label{font-size:var(--fs-sm);color:var(--text-primary)}.settings-preview,.settings-about{margin-top:18px}.preview-title{font-size:var(--fs-sm);color:var(--text-primary);margin:0 0 9px;font-weight:600}.preview-box,.about-box{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px}.preview-label{font-size:var(--fs-sm);color:var(--text-secondary);margin-bottom:6px}.preview-value{font-family:Consolas,Monaco,monospace;font-size:var(--fs-sm);color:var(--text-primary);background:#0003;border-radius:3px;padding:6px 9px}.about-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.about-row:last-child{border-bottom:none;padding-bottom:0}.about-label{color:var(--text-secondary);font-size:var(--fs-sm)}.about-value{color:var(--text-primary);font-size:var(--fs-sm);font-weight:600}.measure-tooltip{color:#fff;opacity:.9;white-space:nowrap;font-size:var(--fs-lg);pointer-events:none;z-index:1000;background:#000000d9;border-radius:12px;padding:4px 10px;font-weight:500;position:relative;box-shadow:0 2px 4px #0000004d}.measure-tooltip-static{background:#000000b3;border:1px solid #fff3}.measure-tooltip-dynamic{background:#000000e6;border:1px solid #3b82f680}.measure-panel{flex-direction:column;gap:12px;height:100%;display:flex}.measure-panel-info{border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--fs-xs);background:#3b82f614;border:1px solid #3b82f633;align-items:center;gap:6px;padding:8px 11px;line-height:1.4;display:flex}.measure-panel-info svg{color:var(--info);flex-shrink:0}.measure-panel-empty{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;padding:36px 12px;display:flex}.measure-empty-icon{opacity:.5;margin-bottom:9px;font-size:1.875rem}.measure-panel-empty p{font-size:var(--fs-sm);margin:0}.measure-panel-empty .text-muted{font-size:var(--fs-xs);opacity:.6;margin-top:3px}.measure-track-card{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.measure-track-header{border-bottom:1px solid var(--border);background:#ffffff05;justify-content:space-between;align-items:center;padding:8px 11px;display:flex}.measure-track-label{font-size:var(--fs-sm);color:var(--text-primary);font-weight:600}.measure-track-total{font-size:var(--fs-sm);color:var(--info);font-family:Consolas,Monaco,monospace;font-weight:700}.measure-table-wrapper{overflow-x:auto}.measure-table{border-collapse:collapse;width:100%;font-size:var(--fs-xs)}.measure-table th{text-align:left;color:var(--text-secondary);font-weight:600;font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);white-space:nowrap;background:#ffffff05;padding:6px 8px}.measure-table td{color:var(--text-primary);vertical-align:middle;border-bottom:1px solid #ffffff0a;padding:5px 8px}.measure-table tr:last-child td{border-bottom:none}.measure-table tr:hover td{background:#3b82f60a}.seg-index{color:var(--text-secondary);text-align:center;width:23px;font-weight:600}.seg-coord{font-family:Consolas,Monaco,monospace;font-size:var(--fs-2xs);color:var(--text-secondary);white-space:nowrap}.seg-dist{color:var(--text-primary);white-space:nowrap;font-family:Consolas,Monaco,monospace;font-weight:600}.measure-track-summary{border-top:1px solid var(--border);font-size:var(--fs-xs);color:var(--text-secondary);justify-content:space-between;padding:6px 11px;display:flex}.measure-track-summary strong{color:var(--info)}.measure-clear-btn{border:1px solid var(--danger);width:100%;color:var(--danger);border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;gap:6px;padding:8px;font-weight:600;display:flex}.measure-clear-btn:hover{background:#ef44441a}.measure-action-bar{gap:6px;display:flex}.measure-action-btn{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;transition:all var(--transition-fast);flex:1;justify-content:center;align-items:center;gap:5px;padding:6px 9px;font-weight:500;display:flex}.measure-action-btn:hover{background:#ffffff14}.measure-action-btn-accent{color:var(--info);border-color:#3b82f666}.measure-action-btn-accent:hover{background:#3b82f61a}.measure-track-remove{width:17px;height:17px;color:var(--danger);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #ef44444d;border-radius:3px;justify-content:center;align-items:center;padding:0;display:flex}.measure-track-remove:hover{background:#ef444426}.measure-total-row{border-top:2px solid var(--border);background:#ffffff05}.measure-total-label{text-align:right;font-weight:700;font-size:var(--fs-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.03em;padding-right:9px!important}.measure-total-value{color:var(--info);white-space:nowrap;font-family:Consolas,Monaco,monospace;font-weight:700}.measure-grand-total{border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--text-secondary);background:#3b82f60f;border:1px solid #3b82f633;justify-content:space-between;align-items:center;padding:9px 11px;display:flex}.measure-grand-total strong{color:var(--info);font-family:Consolas,Monaco,monospace;font-size:var(--fs-sm)}.measure-segment-label{color:#fff;font-size:var(--fs-md);white-space:nowrap;pointer-events:none;z-index:999;background:#000c;border-radius:8px;padding:2px 8px;font-weight:600;position:relative;box-shadow:0 1px 3px #0006}.terminal-panel{background:var(--bg-primary);flex-direction:column;height:100%;display:flex}.terminal-status-bar{border-bottom:1px solid var(--border);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:6px 11px;display:flex}.terminal-status{font-size:var(--fs-xs);align-items:center;gap:5px;font-weight:600;display:flex}.terminal-status.connected{color:var(--success)}.terminal-status.disconnected{color:var(--danger)}.terminal-controls{gap:3px;display:flex}.terminal-ctrl-btn{border:1px solid var(--border);width:21px;height:21px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;border-radius:3px;justify-content:center;align-items:center;display:flex}.terminal-ctrl-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.terminal-ctrl-btn.active{color:var(--info);background:#3b82f626;border-color:#3b82f666}.terminal-filters{border-bottom:1px solid var(--border);flex-shrink:0;gap:3px;padding:6px 8px;display:flex;overflow-x:auto}.terminal-filter-btn{color:var(--text-secondary);font-size:var(--fs-2xs);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;border-radius:3px;align-items:center;gap:5px;padding:3px 8px;font-weight:600;display:flex}.terminal-filter-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.terminal-filter-btn.active{background:var(--bg-tertiary);border-color:var(--border);color:var(--text-primary)}.filter-count{min-width:14px;height:12px;font-size:var(--fs-2xs);background:var(--bg-tertiary);color:var(--text-primary);border-radius:6px;justify-content:center;align-items:center;padding:0 3px;font-weight:700;display:inline-flex}.terminal-log{font-family:Consolas,Monaco,Courier New,monospace;font-size:var(--fs-xs);flex:1;padding:6px 0;line-height:1.6;overflow-y:auto}.terminal-empty{text-align:center;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;padding:36px 12px;display:flex}.terminal-empty p{font-size:var(--fs-sm);margin:3px 0}.terminal-empty .text-muted{font-size:var(--fs-2xs);opacity:.6}.terminal-line{align-items:flex-start;gap:6px;padding:2px 9px;transition:background .1s;display:flex}.terminal-line:hover{background:#ffffff05}.terminal-time{color:var(--text-muted);font-size:var(--fs-2xs);flex-shrink:0;min-width:64px}.terminal-type-badge{font-size:var(--fs-2xs);color:var(--bg-primary);text-transform:uppercase;letter-spacing:.02em;border-radius:2px;flex-shrink:0;padding:0 5px;font-weight:700;line-height:1.6;display:inline-block}.terminal-source{color:var(--accent);font-weight:600;font-size:var(--fs-2xs);flex-shrink:0}.terminal-msg{word-break:break-all;flex:1}.terminal-paused-banner{text-align:center;color:var(--warning);font-size:var(--fs-xs);background:#f59e0b1a;border:1px solid #f59e0b4d;border-radius:3px;margin:6px 9px;padding:6px;font-weight:600}.terminal-filter-sep{background:var(--border);flex-shrink:0;align-self:stretch;width:1px;margin:2px 4px}.terminal-search{background:var(--bg-tertiary);border:1px solid var(--border);min-width:150px;color:var(--text-secondary);border-radius:4px;flex-shrink:0;align-items:center;gap:5px;margin-left:auto;padding:2px 8px;display:flex}.terminal-search:focus-within{border-color:var(--accent)}.terminal-search input{width:130px;color:var(--text-primary);font-size:var(--fs-xs);background:0 0;border:none;outline:none}.terminal-search input::placeholder{color:var(--text-secondary)}.terminal-search-clear{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.terminal-search-clear:hover{color:var(--text-primary)}.vessel-tooltip-overlay-container{pointer-events:none}.vessel-hover-tooltip-card{background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.2);border:1px solid var(--border);width:220px;color:var(--text-primary);box-shadow:var(--shadow-md);z-index:1000;pointer-events:none;border-radius:12px;padding:12px 14px;font-family:Inter,-apple-system,sans-serif;animation:.2s cubic-bezier(.16,1,.3,1) tooltipFadeIn;position:relative;transform:translateY(-8px)}@keyframes tooltipFadeIn{0%{opacity:0;transform:translateY(0)scale(.98)}to{opacity:1;transform:translateY(-8px)scale(1)}}.vessel-hover-tooltip-card .tooltip-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;display:flex}.vessel-hover-tooltip-card .tooltip-title{font-weight:600;font-size:var(--fs-lg);letter-spacing:.01em}.vessel-hover-tooltip-card .tooltip-timestamp{font-size:var(--fs-xs);color:var(--text-muted);font-family:monospace}.vessel-hover-tooltip-card .tooltip-body{flex-direction:column;gap:4px;display:flex}.vessel-hover-tooltip-card .tooltip-row{font-size:var(--fs-md);justify-content:space-between;align-items:center;display:flex}.vessel-hover-tooltip-card .tooltip-label{color:var(--text-secondary);font-weight:500}.vessel-hover-tooltip-card .tooltip-value{font-weight:600}.vessel-hover-tooltip-card .tooltip-status{font-size:var(--fs-xs);text-transform:uppercase;border-radius:4px;padding:2px 6px;font-weight:600}.vessel-hover-tooltip-card .tooltip-status.active{color:var(--success);background:#10b98126}.vessel-hover-tooltip-card .tooltip-status.inactive{color:var(--danger);background:#ef444426}.vessel-hover-tooltip-card .tooltip-footer{font-size:var(--fs-xs);color:var(--text-muted);text-align:center;border-top:1px solid var(--border);margin-top:8px;padding-top:6px;font-family:monospace}.vessel-hover-tooltip-card .tooltip-arrow{border-left:6px solid #0000;border-right:6px solid #0000;border-top:6px solid var(--bg-secondary);pointer-events:none;width:0;height:0;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.right-side-panel{width:var(--panel-w,320px);background:var(--bg-glass);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:var(--radius-lg);max-width:calc(100vw - 80px);box-shadow:var(--shadow-lg);z-index:100;flex-direction:column;animation:.3s cubic-bezier(.16,1,.3,1) slideInRight;display:flex;position:absolute;top:9px;bottom:9px;right:9px;overflow:hidden}.right-side-panel.vessel-detail-panel{border-color:var(--panel-border-strong,var(--border));background:var(--panel-surface,var(--bg-glass));-webkit-backdrop-filter:none}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)scale(.98)}to{opacity:1;transform:translate(0)scale(1)}}.right-side-panel-header{border-bottom:1px solid var(--border);background:#ffffff03;justify-content:space-between;align-items:center;padding:8px 11px;display:flex}.right-side-panel-title{font-weight:700;font-size:var(--fs-2xs);color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:5px;display:flex}.right-panel-close-btn{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:3px;display:flex}.right-panel-close-btn:hover{background:var(--border-hover);color:var(--text-primary)}.right-side-panel-body{flex-direction:column;flex:1;padding:9px 11px;display:flex;overflow:hidden}.vessel-title-large{font-size:var(--fs-xl);color:var(--text-primary);letter-spacing:-.02em;margin-bottom:8px;font-weight:800}.vessel-hero{border:1px solid var(--border);background:var(--panel-surface-raised,var(--bg-tertiary));border-radius:9px;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:9px;padding:9px;display:grid}.vessel-hero-icon{border:1px solid color-mix(in srgb, var(--accent) 24%, var(--border));background:var(--accent-subtle);width:34px;height:34px;color:var(--accent);border-radius:8px;place-items:center;display:inline-grid}.vessel-hero-name{font-size:var(--fs-lg);color:var(--text-primary);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:700;line-height:1.15;overflow:hidden}.vessel-hero-sub{font-size:var(--fs-2xs);color:var(--text-muted);margin-top:1px;font-weight:500}.status-pill{font-size:var(--fs-2xs);white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:3px 8px;font-weight:700;display:inline-flex}.status-pill-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.status-pill-ok{color:var(--success);background:#10b9811f;border:1px solid #10b9814d}.status-pill-ok .status-pill-dot{opacity:1}.status-pill-off{color:var(--text-muted);border:1px solid var(--border);background:#94a3b81a}.stat-tile-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.stat-tile{background:var(--panel-surface-raised,#ffffff05);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;align-items:center;gap:3px;min-width:0;padding:8px 6px;display:flex}.stat-tile-label{font-size:var(--fs-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:3px;font-weight:600;display:flex}.stat-tile-label svg{flex-shrink:0;transition:transform .4s}.stat-tile-value{font-size:var(--fs-xl);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.stat-tile-unit{font-size:var(--fs-2xs);color:var(--text-muted);margin-left:2px;font-weight:600}.coord-block{background:var(--panel-surface-soft,var(--bg-tertiary));border:1px solid var(--border);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:6px;min-height:36px;margin-bottom:7px;padding:6px 7px;display:flex}.coord-value{font-family:monospace;font-size:var(--fs-2xs);color:var(--text-primary);word-break:break-word;font-weight:600}.coord-copy-btn{width:28px;height:28px;min-height:0;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.coord-copy-btn:hover{border-color:var(--border);background:var(--panel-surface-raised,var(--bg-secondary));color:var(--text-primary)}.coord-copy-btn.copied{border-color:color-mix(in srgb, var(--success) 30%, var(--border));background:var(--success-subtle,#10b9811f);color:var(--success)}.sidebar-tabs{background:var(--panel-surface-raised,var(--bg-tertiary));border-radius:var(--radius-md);border:1px solid var(--border);margin-bottom:9px;padding:2px;display:flex}.sidebar-tab{min-height:32px;color:var(--text-secondary);font-weight:600;font-size:var(--fs-2xs);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:3px;padding:5px 6px;display:flex}.sidebar-tab:hover{color:var(--text-primary)}.sidebar-tab.active{background:var(--panel-surface,var(--bg-primary));color:var(--accent);box-shadow:var(--shadow-sm)}.tab-scroll-content{flex-direction:column;flex:1;gap:8px;padding-right:2px;display:flex;overflow-y:auto}.vessel-tab-panel{flex:1;min-height:0;display:flex}.vessel-tab-panel>.tab-scroll-content{width:100%}.tab-scroll-content::-webkit-scrollbar{width:4px}.tab-scroll-content::-webkit-scrollbar-track{background:0 0}.tab-scroll-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.vessel-detail-card{background:var(--panel-surface-raised,#ffffff05);border:1px solid var(--border);border-radius:var(--radius-md);padding:9px 10px}.card-title-sec{font-size:var(--fs-2xs);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;padding-bottom:3px;font-weight:700;display:flex}.card-title-label{align-items:center;gap:5px;min-width:0;display:inline-flex}.card-title-label svg{color:var(--accent);flex:none}.details-info-table{border-collapse:collapse;width:100%}.details-info-table td{font-size:var(--fs-2xs);color:var(--text-secondary);border-bottom:1px solid #94a3b80d;padding:5px 0}.details-info-table td:first-child{white-space:nowrap;vertical-align:top;padding-right:10px}.details-info-table .text-right-bold{word-break:break-word}.details-info-table tr:last-child td{border-bottom:none;padding-bottom:0}.details-info-table tr:first-child td{padding-top:0}.details-info-table .text-right-bold{text-align:right;color:var(--text-primary);font-weight:600}.details-info-table .status-green{color:var(--success);font-weight:700}.details-info-table .status-gray{color:var(--text-muted);font-weight:700}.no-telemetry-notice{text-align:center;min-height:78px;color:var(--text-muted);font-size:var(--fs-2xs);border:1px dashed var(--border);border-radius:var(--radius-md);flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:12px;display:flex}.no-telemetry-notice svg{color:var(--text-muted)}.history-log-container{overflow-x:auto}.history-log-table{border-collapse:collapse;text-align:left;width:100%}.history-log-table th{font-size:var(--fs-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border);padding:3px 5px;font-weight:700}.history-log-table td{font-size:var(--fs-2xs);color:var(--text-secondary);border-bottom:1px solid #94a3b80d;padding:4px 5px}.history-log-table tbody tr:hover td{color:var(--text-primary);background:#ffffff03}.right-side-panel-footer{border-top:1px solid var(--border);background:var(--panel-surface-raised,#ffffff03);gap:6px;padding:8px 10px;display:flex}.panel-btn{min-height:34px;font-size:var(--fs-xs);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:none;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 7px;font-weight:650;display:flex}.panel-btn:disabled{cursor:not-allowed;opacity:.46}.panel-btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border)}.panel-btn-secondary:hover{background:var(--bg-glass-hover);border-color:var(--border-hover)}.panel-btn-primary{background:var(--accent);color:var(--on-accent,#04242b);border:1px solid var(--accent);font-weight:700}.panel-btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:none}.panel-btn-secondary.panel-btn-active{border-color:color-mix(in srgb, var(--accent) 40%, var(--border));background:var(--accent-subtle);color:var(--accent)}.panel-btn-utility{flex:.86}.vessel-detail-panel .right-side-panel-header{background:0 0;min-height:44px;padding:5px 8px 5px 12px}.vessel-detail-panel .right-side-panel-title{color:var(--text-secondary);font-size:var(--fs-xs);letter-spacing:0;text-transform:none;gap:6px;font-weight:650}.vessel-detail-panel .right-side-panel-title svg{color:var(--accent)}.vessel-detail-panel .right-panel-close-btn{width:32px;height:32px;padding:0}.vessel-detail-panel .right-side-panel-body{padding:0 12px 8px}.vessel-detail-panel .vessel-hero{border:0;border-bottom:1px solid var(--border);background:0 0;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;gap:8px;margin:0;padding:11px 0 10px}.vessel-detail-panel .vessel-hero-icon{border:0;border-radius:7px;width:30px;height:30px}.vessel-detail-panel .vessel-hero-name{font-size:var(--fs-md);font-weight:700}.vessel-detail-panel .vessel-hero-sub{font-size:var(--fs-2xs);margin-top:2px}.vessel-detail-panel .status-pill{font-size:var(--fs-2xs);border:0;gap:4px;padding:3px 7px}.vessel-detail-panel .status-pill-dot{width:5px;height:5px}.vessel-detail-panel .sidebar-tabs{border:0;border-bottom:1px solid var(--border);background:0 0;border-radius:0;margin:0 0 10px;padding:0;position:relative}.vessel-detail-panel .sidebar-tab{min-height:36px;font-size:var(--fs-2xs);border-radius:0;padding:6px;position:relative}.vessel-detail-panel .sidebar-tab.active{box-shadow:none;background:0 0}.vessel-detail-panel .sidebar-tab.active:after{background:var(--accent);content:"";border-radius:2px 2px 0 0;height:2px;position:absolute;bottom:-1px;left:20%;right:20%}.vessel-detail-panel .tab-scroll-content{gap:0;padding-right:1px}.vessel-detail-panel .stat-tile-grid{border:1px solid var(--border);background:var(--panel-surface-soft,#ffffff04);border-radius:8px;gap:0;overflow:hidden}.vessel-detail-panel .stat-tile{background:0 0;border:0;border-radius:0;gap:3px;padding:8px 4px}.vessel-detail-panel .stat-tile+.stat-tile{border-left:1px solid var(--border)}.vessel-detail-panel .stat-tile-label{font-size:var(--fs-2xs);letter-spacing:0;text-transform:none;font-weight:550}.vessel-detail-panel .stat-tile-value{font-size:var(--fs-lg)}.vessel-detail-panel .vessel-detail-card{border:0;border-top:1px solid var(--border);background:0 0;border-radius:0;padding:11px 0 0}.vessel-detail-panel .position-section,.vessel-detail-panel .vessel-spec-section{margin-top:11px}.vessel-detail-panel .card-title-sec{color:var(--text-secondary);font-size:var(--fs-2xs);letter-spacing:0;text-transform:none;border:0;margin-bottom:7px;padding:0;font-weight:650}.vessel-detail-panel .coord-block{border-color:#0000;border-radius:7px;min-height:38px;margin-bottom:5px;padding:5px 6px 5px 9px}.vessel-detail-panel .coord-value{font-size:var(--fs-2xs)}.vessel-detail-panel .details-info-table td{font-size:var(--fs-2xs);border-bottom:0;padding:4px 0}.vessel-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px;margin:0;display:grid}.vessel-geometry-preview{border-bottom:1px solid var(--border);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:12px;padding:2px 0 10px;display:grid}.vessel-geometry-canvas{border:1px solid var(--border);background:var(--panel-surface-soft,#ffffff04);width:104px;height:104px;color:inherit;cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast);border-radius:8px;place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.vessel-geometry-canvas:hover{border-color:color-mix(in srgb, var(--accent) 48%, var(--border));background:var(--accent-subtle)}.vessel-geometry-canvas:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.vessel-geometry-canvas .vessel-geometry-graphic{width:100%;height:100%;display:block}.vessel-geometry-expand-cue{border:1px solid var(--border);background:var(--panel-surface,var(--bg-primary));width:24px;height:24px;color:var(--text-secondary);transition:color var(--transition-fast), border-color var(--transition-fast);border-radius:6px;place-items:center;display:grid;position:absolute;top:6px;right:6px}.vessel-geometry-canvas:hover .vessel-geometry-expand-cue{border-color:color-mix(in srgb, var(--accent) 42%, var(--border));color:var(--accent)}.vessel-geometry-axis{stroke:var(--border);stroke-width:1px;stroke-dasharray:2 3}.vessel-geometry-bounds{fill:none;stroke:color-mix(in srgb, var(--text-muted) 48%, transparent);stroke-width:1px;stroke-dasharray:3 3}.vessel-geometry-hull{fill:color-mix(in srgb, var(--accent) 14%, transparent);stroke:var(--accent);stroke-width:1.8px;stroke-linejoin:round}.vessel-geometry-origin{fill:var(--text-muted)}.vessel-geometry-offset{stroke:var(--warning,#f59e0b);stroke-width:1px;stroke-dasharray:3 2}.vessel-geometry-gps{fill:var(--warning,#f59e0b);stroke:var(--panel-surface,var(--bg-primary));stroke-width:2px}.vessel-geometry-bow{fill:none;stroke:var(--text-muted);stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round}.vessel-geometry-bow-label{fill:var(--text-muted);text-anchor:middle;font-size:5px;font-weight:650}.vessel-geometry-empty{color:var(--text-muted);font-size:var(--fs-2xs)}.vessel-geometry-summary-wrap,.vessel-geometry-summary{min-width:0}.vessel-geometry-summary{margin:0}.vessel-geometry-summary>div{padding:5px 0}.vessel-geometry-summary dt{color:var(--text-muted);font-size:var(--fs-2xs);margin-bottom:1px}.vessel-geometry-summary dd{color:var(--text-primary);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:650;line-height:1.25;overflow:hidden}.vessel-geometry-open-hint{color:var(--accent);font-size:var(--fs-2xs);margin-top:2px;font-weight:600;display:block}.vessel-geometry-modal{z-index:2200;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(5px);background:#03070eb8;place-items:center;display:grid;position:fixed;inset:0}.vessel-geometry-dialog{border:1px solid var(--panel-border-strong,var(--border));background:var(--panel-surface,var(--bg-primary));width:min(780px,100%);max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);color:var(--text-primary);border-radius:12px;overflow:hidden}.vessel-geometry-dialog-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;min-height:56px;padding:10px 12px 10px 16px;display:flex}.vessel-geometry-dialog-header h2{color:var(--text-primary);font-size:var(--fs-md);margin:0;font-weight:700}.vessel-geometry-dialog-header p{color:var(--text-muted);font-size:var(--fs-2xs);margin:2px 0 0}.vessel-geometry-dialog-close{border:1px solid var(--border);background:var(--panel-surface-raised,var(--bg-secondary));min-width:44px;min-height:44px;color:var(--text-secondary);cursor:pointer;font-size:var(--fs-xs);transition:border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);border-radius:7px;justify-content:center;align-items:center;gap:5px;padding:7px 10px;font-weight:650;display:inline-flex}.vessel-geometry-dialog-close:hover{border-color:var(--border-hover);background:var(--bg-glass-hover);color:var(--text-primary)}.vessel-geometry-dialog-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.vessel-geometry-dialog-body{grid-template-columns:minmax(340px,1.2fr) minmax(240px,.8fr);align-items:start;gap:16px;max-height:calc(100dvh - 105px);padding:16px;display:grid;overflow-y:auto}.vessel-geometry-detail-canvas{aspect-ratio:1;border:1px solid var(--border);background:var(--panel-surface-soft,#ffffff04);border-radius:10px;justify-self:center;place-items:center;width:100%;max-width:430px;display:grid;overflow:hidden}.vessel-geometry-detail-canvas.engineering-grid{background-color:color-mix(in srgb, var(--bg-primary) 76%, var(--bg-tertiary));background-image:linear-gradient(color-mix(in srgb, var(--border) 62%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--border) 62%, transparent) 1px, transparent 1px);background-position:50%;background-size:32px 32px}.vessel-geometry-detail-canvas .vessel-geometry-engineering-graphic{width:100%;height:100%}.vessel-geometry-detail-axis{stroke:color-mix(in srgb, var(--text-muted) 42%, transparent);stroke-width:1px}.vessel-geometry-detail-bounds{fill:none;stroke:color-mix(in srgb, var(--accent) 36%, transparent);stroke-width:1px;stroke-dasharray:6 5}.vessel-geometry-detail-hull{fill:color-mix(in srgb, var(--accent) 12%, transparent);stroke:var(--accent);stroke-width:2.5px;stroke-linejoin:round}.vessel-geometry-midpoint circle{fill:var(--panel-surface,var(--bg-primary));stroke:var(--accent);stroke-width:1.5px}.vessel-geometry-midpoint line{stroke:var(--accent);stroke-width:1.5px;stroke-linecap:round}.vessel-geometry-vertex circle{fill:var(--success);stroke:var(--text-primary);stroke-width:1.5px}.vessel-geometry-vertex text{fill:color-mix(in srgb, var(--success) 82%, var(--text-primary));paint-order:stroke;stroke:var(--panel-surface,var(--bg-primary));stroke-linejoin:round;stroke-width:3px;font-size:10px;font-weight:700}.vessel-geometry-detail-offset{stroke:var(--warning,#f59e0b);stroke-width:1.5px;stroke-dasharray:5 4}.vessel-geometry-detail-gps circle{fill:var(--warning,#f59e0b);stroke:var(--text-primary);stroke-width:2.5px}.vessel-geometry-detail-gps text{fill:var(--warning,#f59e0b);paint-order:stroke;stroke:var(--panel-surface,var(--bg-primary));stroke-width:3px;font-size:14px;font-weight:750}.vessel-geometry-detail-panel{flex-direction:column;gap:12px;min-width:0;display:flex}.vessel-geometry-detail-panel.engineering-details{width:100%}.vessel-geometry-detail-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px;margin:0;display:grid}.vessel-geometry-detail-list>div{border-bottom:1px solid var(--border);min-width:0;padding:7px 0}.vessel-geometry-detail-list dt{color:var(--text-muted);font-size:var(--fs-2xs);margin-bottom:2px}.vessel-geometry-detail-list dd{color:var(--text-primary);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:650;overflow:hidden}.vessel-geometry-legend{color:var(--text-secondary);font-size:var(--fs-2xs);flex-wrap:wrap;gap:6px 10px;display:flex}.vessel-geometry-legend span{align-items:center;gap:5px;display:inline-flex}.vessel-geometry-legend i{border-radius:2px;flex:none;width:8px;height:8px;display:inline-block}.vessel-geometry-legend .hull{border:1px solid var(--accent);background:var(--accent-subtle)}.vessel-geometry-legend .vertex{background:var(--success);border-radius:50%}.vessel-geometry-legend .midpoint{border:1px solid var(--accent);background:var(--panel-surface,var(--bg-primary))}.vessel-geometry-legend .gps{background:var(--warning,#f59e0b);border-radius:50%}.vessel-geometry-legend .bounds{border:1px dashed var(--text-muted);background:0 0}.vessel-geometry-readout{color:var(--text-secondary);font-family:monospace;font-size:var(--fs-xs);font-variant-numeric:tabular-nums;font-weight:650}.vessel-geometry-detail-note{border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-2xs);margin:auto 0 0;padding-top:10px;line-height:1.45}@media (width<=640px){.vessel-geometry-dialog{max-height:calc(100dvh - 24px)}.vessel-geometry-dialog-body{grid-template-columns:1fr;max-height:calc(100dvh - 92px);padding:12px}.vessel-geometry-detail-canvas,.vessel-geometry-detail-panel.engineering-details{width:min(100%,330px)}.vessel-geometry-detail-list{grid-template-columns:repeat(2,minmax(0,1fr))}.vessel-geometry-dialog-close span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (prefers-reduced-motion:reduce){.vessel-geometry-canvas,.vessel-geometry-expand-cue,.vessel-geometry-dialog-close{transition:none}}.vessel-spec-item{border-bottom:1px solid color-mix(in srgb, var(--border) 65%, transparent);min-width:0;padding:6px 0 7px}.vessel-spec-item:nth-last-child(-n+2){border-bottom:0}.vessel-spec-item dt{color:var(--text-muted);font-size:var(--fs-2xs);text-overflow:ellipsis;white-space:nowrap;margin:0 0 2px;line-height:1.2;overflow:hidden}.vessel-spec-item dd{color:var(--text-primary);font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:650;line-height:1.25;overflow:hidden}.vessel-detail-panel .right-side-panel-footer{background:var(--panel-surface,var(--bg-primary));gap:5px;padding:7px 9px}.vessel-detail-panel .panel-btn{min-width:0;min-height:34px;font-size:var(--fs-2xs);white-space:nowrap;border-radius:7px;gap:4px;padding:5px 6px}.vessel-detail-panel .panel-btn-utility{flex:0 0 70px}@media (width<=640px){.right-side-panel{border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-left:none;border-right:none;border-top:1px solid var(--border);width:100%;height:50vh;animation:.3s cubic-bezier(.16,1,.3,1) slideInUp;inset:auto 0 0}.right-side-panel.vessel-detail-panel{height:min(64dvh,620px)}@keyframes slideInUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.right-side-panel.popped-out{width:var(--panel-w,320px);height:var(--panel-h,460px);z-index:1000;resize:both;min-width:218px;max-width:min(85vw,720px);min-height:285px;max-height:92vh;animation:none;position:fixed;inset:auto;overflow:hidden;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0006}.right-side-panel.popped-out .right-side-panel-header{cursor:grab;-webkit-user-select:none;user-select:none;background:#ffffff08;border-bottom:1px solid #ffffff1a}.right-side-panel.popped-out .right-side-panel-header:active{cursor:grabbing}@media (pointer:coarse){.vessel-detail-panel :is(.panel-btn,.sidebar-tab){min-height:44px}.vessel-detail-panel :is(.right-panel-close-btn,.coord-copy-btn){min-width:40px;min-height:40px}}.sensor-title{align-items:center;gap:10px;display:flex}.sensor-type-badge{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sensor-type-label{font-size:var(--fs-sm);color:var(--text-muted);font-weight:400}.history-field{flex-direction:column;gap:3px;margin-bottom:9px;display:flex}.history-field-label{font-size:var(--fs-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.history-select{border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-sm);background:#0003;outline:none;padding:6px 8px}.history-select:focus{border-color:var(--accent)}.history-fetch-btn-full{background:var(--accent);width:100%;color:var(--on-accent);border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;margin-bottom:6px;padding:8px;font-weight:600;transition:all .2s;display:flex}.history-fetch-btn-full:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.history-fetch-btn-full:disabled{opacity:.7;cursor:not-allowed}.history-date-input{border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-sm);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#0003;padding:6px 8px}.history-error{color:var(--danger);border-radius:var(--radius-sm);font-size:var(--fs-xs);background:#ef44441a;border:1px solid #ef44444d;margin-top:6px;padding:6px 9px}.history-results-summary{align-items:baseline;gap:6px;margin-bottom:12px;display:flex}.history-results-count{color:var(--accent);font-size:1.2rem;font-weight:700;line-height:1}.history-results-label{font-size:var(--fs-xs);color:var(--text-muted)}.history-action-row{margin-bottom:8px}.history-toggle-btn{border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;background:#0003;justify-content:center;align-items:center;gap:5px;margin-bottom:8px;padding:6px;font-weight:500;transition:all .2s;display:flex}.history-toggle-btn.active{color:var(--warning);background:#f59e0b26;border-color:#f59e0b66}.history-toggle-btn:hover{background:#ffffff0d}.history-export-row{gap:6px;margin-bottom:9px;display:flex}.history-export-btn{border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;flex:1;justify-content:center;align-items:center;gap:5px;padding:5px;font-weight:500;transition:all .2s;display:flex}.history-export-btn.csv{color:var(--success);background:#10b98126;border:1px solid #10b9814d}.history-export-btn.csv:hover{background:#10b98140}.history-export-btn.excel{color:var(--info);background:#3b82f626;border:1px solid #3b82f64d}.history-export-btn.excel:hover{background:#3b82f640}.history-playback-bar{background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.4);border:1px solid var(--border);border-radius:var(--radius-lg);z-index:800;width:90%;max-width:600px;padding:12px 15px;animation:.3s cubic-bezier(.16,1,.3,1) slideUpFade;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 19px -4px #00000080}.history-playback-header{justify-content:space-between;align-items:center;margin-bottom:9px;display:flex}.history-playback-title{font-size:var(--fs-sm);color:var(--accent);align-items:center;gap:6px;font-weight:600;display:flex}.history-playback-counter{font-size:var(--fs-xs);color:var(--text-muted)}.history-playback-controls{margin-bottom:12px}.history-playback-nav{align-items:center;gap:9px;margin-bottom:9px;display:flex}.history-nav-btn{border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);cursor:pointer;background:#ffffff0d;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;transition:all .2s;display:flex}.history-nav-btn:hover:not(:disabled){background:var(--accent-subtle);color:var(--accent);border-color:var(--accent)}.history-nav-btn:disabled{opacity:.3;cursor:not-allowed}.history-playback-slider{appearance:none;cursor:pointer;background:#ffffff1a;border-radius:2px;outline:none;flex:1;height:5px}.history-playback-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border:2px solid var(--on-accent);border-radius:50%;width:14px;height:14px;box-shadow:0 0 8px #00f0ff80}.history-time-jumps{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.history-time-label{font-size:var(--fs-2xs);color:var(--text-muted);margin-right:3px}.history-jump-btn{border:1px solid var(--border);color:var(--text-secondary);font-size:var(--fs-2xs);cursor:pointer;background:#0003;border-radius:3px;padding:3px 6px;transition:all .2s}.history-jump-btn:hover:not(:disabled){color:var(--text-primary);background:#ffffff1a}.history-jump-btn:disabled{opacity:.3;cursor:not-allowed}.history-playback-data{border-radius:var(--radius-md);border:1px solid var(--border);background:#0003;grid-template-columns:1.2fr 1.5fr 1fr 1fr;gap:9px;padding:9px;display:grid}.history-data-cell{flex-direction:column;gap:3px;display:flex}.history-data-label{font-size:var(--fs-2xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.history-data-value{font-size:var(--fs-sm);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.history-fetch-progress{margin-top:8px;margin-bottom:9px}.history-progress-bar{background:#ffffff14;border-radius:2px;width:100%;height:3px;margin-bottom:5px;overflow:hidden}.history-progress-bar-fill{background:linear-gradient(90deg, var(--accent), var(--warning), var(--accent));background-size:200% 100%;border-radius:2px;width:30%;height:100%;animation:1.5s ease-in-out infinite progressSlide}@keyframes progressSlide{0%{transform:translate(-100%)}to{transform:translate(400%)}}.history-progress-text{font-size:var(--fs-2xs);color:var(--text-muted);align-items:center;gap:3px;display:flex}.spin{animation:1s linear infinite spinKeyframes}@keyframes spinKeyframes{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sensor-chart{margin-bottom:12px}.sensor-chart:last-of-type{margin-bottom:6px}.sensor-chart-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.sensor-chart-label{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.5px;font-weight:700}.sensor-chart-unit{font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500}.sensor-chart-svg{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:crosshair;background:#0000001f;width:100%;height:auto;display:block}[data-theme=light] .sensor-chart-svg{background:#00000008}.sensor-chart-grid{stroke:var(--border);stroke-width:.5px;stroke-dasharray:3 3}.sensor-chart-tick{fill:var(--text-muted);font-family:Inter,monospace;font-size:7.5px}.sensor-chart-crosshair{stroke:var(--text-muted);stroke-width:.8px;stroke-dasharray:2 2}.sensor-chart-empty{text-align:center;font-size:var(--fs-xs);color:var(--text-muted);border:1px dashed var(--border);border-radius:var(--radius-sm);padding:24px 12px}.sensor-chart-stats{grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0;display:grid}.sensor-chart-stat{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;align-items:center;gap:2px;padding:6px 4px;display:flex}.sensor-chart-stat-label{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.6px;color:var(--text-muted);font-weight:700}.sensor-chart-stat-value{font-size:var(--fs-sm);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:700}.sensor-export-btn{justify-content:center;width:100%}.sensor-chart-canvas{position:relative}.sensor-chart-tooltip{z-index:5;pointer-events:none;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);white-space:nowrap;padding:5px 8px;animation:.1s ease-out fadeIn;position:absolute}.sensor-chart-tooltip.above{transform:translate(-50%,calc(-100% - 10px))}.sensor-chart-tooltip.below{transform:translate(-50%,12px)}.sensor-chart-tooltip.x-left.above{transform:translate(-12px,calc(-100% - 10px))}.sensor-chart-tooltip.x-left.below{transform:translate(-12px,12px)}.sensor-chart-tooltip.x-right.above{transform:translate(calc(12px - 100%),calc(-100% - 10px))}.sensor-chart-tooltip.x-right.below{transform:translate(calc(12px - 100%),12px)}.sensor-chart-tooltip-value{font-size:var(--fs-sm);font-variant-numeric:tabular-nums;font-weight:700}.sensor-chart-tooltip-time{font-size:var(--fs-2xs);color:var(--text-muted);font-variant-numeric:tabular-nums;margin-top:1px}.side-panel{background:var(--panel-surface);-webkit-backdrop-filter:none;border-color:var(--panel-border-strong);border-radius:10px;width:min(330px,100% - 20px);box-shadow:0 8px 24px #00000047}.side-panel.expanded{right:10px}.side-panel-header{background:var(--panel-surface-raised);border-bottom-color:var(--panel-border-strong);min-height:50px;padding:7px 9px 7px 11px}.side-panel-title{gap:8px;min-width:0}.side-panel-title-icon{width:24px;height:24px;color:var(--accent);flex:0 0 24px;justify-content:center;align-items:center;display:inline-flex}.side-panel-title h2{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.8125rem;font-weight:650;line-height:1.3;overflow:hidden}.side-panel-actions{gap:4px;margin-left:6px}.side-panel .side-panel-actions .icon-btn{border-color:var(--border);background:0 0;border-radius:6px;width:32px;height:32px}.side-panel .side-panel-actions .icon-btn:hover{border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel-body{scrollbar-gutter:stable;min-width:0;padding:10px}.side-panel :is(.vessel-panel,.sensor-panel,.overlay-panel,.user-panel){height:100%;min-height:0}.side-panel .mgmt-header{border-bottom-color:var(--border);flex-direction:column;align-items:stretch;gap:8px;padding:0 0 8px;display:flex}.side-panel .mgmt-header-desc{color:var(--text-secondary);margin:0;font-size:.6875rem;line-height:1.45}.side-panel .mgmt-search,.side-panel .user-search{margin-top:8px}.side-panel .mgmt-search-input,.side-panel .user-search-input{border-color:var(--border);background:var(--bg-tertiary);min-height:36px;color:var(--text-primary);border-radius:6px;padding:7px 34px 7px 32px;font-size:.75rem}.side-panel .mgmt-search-icon,.side-panel .user-search-icon{color:var(--text-muted);left:10px}.side-panel :is(.mgmt-search-clear,.user-search-clear){border-radius:5px;width:32px;height:32px;padding:0;right:2px}.side-panel .mgmt-scroll-area{padding:8px 1px 8px 0}.side-panel .mgmt-list{gap:6px}.side-panel .mgmt-card{border-color:var(--border);background:var(--panel-surface-raised);box-shadow:none;transition:border-color var(--transition-fast), background var(--transition-fast);border-radius:7px;gap:8px;padding:9px 10px}.side-panel .mgmt-card:hover{border-color:var(--border-hover);background:var(--bg-tertiary);box-shadow:none;transform:none}.side-panel .mgmt-card-main{gap:5px}.side-panel .mgmt-card-id{color:var(--text-primary);gap:6px;font-size:.75rem;line-height:1.3}.side-panel .mgmt-card-subtitle{color:var(--text-muted);font-size:.625rem;line-height:1.3}.side-panel .mgmt-card-details{gap:3px}.side-panel .mgmt-card-row{grid-template-columns:64px minmax(0,1fr);align-items:start;gap:7px;display:grid}.side-panel .mgmt-card-label{min-width:0;color:var(--text-muted);font-size:var(--fs-2xs);letter-spacing:.04em;font-weight:650;line-height:1.5}.side-panel .mgmt-card-value{min-width:0;color:var(--text-secondary);overflow-wrap:anywhere;font-size:.6875rem;line-height:1.4}.side-panel .mgmt-card-mono{font-variant-numeric:tabular-nums;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.side-panel .mgmt-card-actions{grid-template-columns:repeat(2,32px);align-content:start;gap:4px;padding-top:0;display:grid}.side-panel .side-panel-body :is(.btn-primary,.auth-submit){border:1px solid var(--accent);background:var(--accent);min-height:34px;color:var(--on-accent);cursor:pointer;box-shadow:none;transition:background var(--transition-fast), border-color var(--transition-fast);border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 11px;font-family:inherit;font-size:.6875rem;font-weight:650;line-height:1;display:inline-flex}.side-panel .side-panel-body :is(.btn-primary,.auth-submit):hover:not(:disabled){border-color:var(--accent-hover);background:var(--accent-hover);filter:none;box-shadow:none;transform:none}.side-panel .side-panel-body :is(.btn-primary,.auth-submit):disabled{opacity:.48;cursor:not-allowed}.side-panel .side-panel-body .mgmt-add-btn{width:100%}.side-panel .side-panel-body :is(.btn-secondary,.measure-action-btn){border-color:var(--border);min-height:34px;color:var(--text-primary);background:0 0;border-radius:6px;font-family:inherit;font-size:.6875rem;font-weight:550}.side-panel .side-panel-body :is(.btn-secondary,.measure-action-btn):hover:not(:disabled){border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel .side-panel-body .btn-icon,.side-panel .mgmt-page-btn{border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.side-panel .side-panel-body .btn-icon:hover:not(:disabled),.side-panel .mgmt-page-btn:hover:not(:disabled){border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel .side-panel-body .btn-icon.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-subtle);color:var(--danger)}.side-panel .mgmt-pagination{border-top-color:var(--border);gap:8px;min-height:40px;padding-top:7px}.side-panel .mgmt-page-info{color:var(--text-primary);gap:4px;font-size:.625rem;line-height:1.3}.side-panel .mgmt-page-total{color:var(--text-muted);font-size:var(--fs-2xs)}.side-panel .mgmt-state,.side-panel .mgmt-empty{border:1px dashed var(--border);min-height:110px;color:var(--text-secondary);background:0 0;border-radius:7px;justify-content:center;padding:16px 12px;font-size:.6875rem;line-height:1.4}.side-panel .mgmt-state{align-items:center;gap:7px;display:flex}.side-panel .mgmt-state.loading:before{content:"";border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex:0 0 13px;width:13px;height:13px;animation:.8s linear infinite panelSpinner}@keyframes panelSpinner{to{transform:rotate(360deg)}}.side-panel .mgmt-empty-text{color:var(--text-secondary);font-size:.6875rem}.side-panel :is(.status-badge,.type-badge,.overlay-type-badge,.user-level-badge){min-height:19px;font-size:var(--fs-2xs);letter-spacing:.02em;border-radius:999px;padding:2px 6px;font-weight:650;line-height:1.2}.side-panel .status-badge:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px;margin-right:4px}.side-panel .status-badge.active{background:var(--success-subtle);color:var(--success)}.side-panel .status-badge.inactive{background:var(--panel-surface-soft);color:var(--text-muted)}.side-panel .side-panel-body :is(.form-group,.auth-field){gap:4px}.side-panel .side-panel-body :is(.form-label,.auth-label){color:var(--text-secondary);font-size:.6875rem;font-weight:600;line-height:1.3}.side-panel .side-panel-body :is(.form-input,.auth-input){border:1px solid var(--border);background:var(--bg-tertiary);width:100%;min-height:36px;color:var(--text-primary);transition:border-color var(--transition-fast);border-radius:6px;padding:7px 9px;font-family:inherit;font-size:.75rem;line-height:1.35}.side-panel .side-panel-body :is(.form-input,.auth-input):focus{border-color:var(--accent);box-shadow:none}.side-panel .side-panel-body :is(.form-input,.auth-input)::placeholder{color:var(--text-muted);opacity:.75;font-style:normal}.side-panel .side-panel-body :is(.form-input,.auth-input):disabled{opacity:.5;cursor:not-allowed}.side-panel .side-panel-body .form-row{grid-template-columns:1fr;gap:8px}.side-panel .side-panel-body :is(.form-hint,.user-form-note){color:var(--text-muted);font-size:.625rem;font-style:normal;line-height:1.4}.side-panel .side-panel-body .form-actions,.side-panel .side-panel-body .overlay-form-actions{border-top-color:var(--border);background:var(--panel-surface);gap:6px;padding-top:9px}.side-panel .side-panel-body :is(.toggle-row,.overlay-toggle-row){min-height:34px}.side-panel .overlay-file-label{border-color:var(--border);background:0 0;border-radius:6px;min-height:54px;padding:9px}.side-panel .settings-panel{background:0 0;min-height:calc(100% + 20px);margin:-10px}.side-panel .settings-tabs{border-bottom-color:var(--border);background:var(--panel-surface-raised);grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:7px 9px;display:grid}.side-panel .settings-tab{min-height:32px;color:var(--text-secondary);border:1px solid #0000;border-radius:5px;justify-content:flex-start;gap:5px;padding:0 7px;font-size:.625rem;font-weight:550}.side-panel .settings-tab.active{border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary);box-shadow:none}.side-panel .settings-content{padding:11px 10px 14px}.side-panel .settings-section{gap:8px}.side-panel .settings-subtitle{color:var(--text-primary);gap:6px;font-size:.75rem;font-weight:650}.side-panel .settings-subtitle svg{width:14px;height:14px;color:var(--text-secondary)}.side-panel .settings-desc{color:var(--text-secondary);font-size:.6875rem;line-height:1.4}.side-panel .settings-radio-group{gap:4px;margin:1px 0}.side-panel .settings-radio{border:1px solid var(--border);min-height:36px;transition:border-color var(--transition-fast), background var(--transition-fast);background:0 0;border-radius:6px;padding:6px 8px}.side-panel .settings-radio:hover,.side-panel .settings-radio.active{border-color:var(--border-hover);background:var(--bg-tertiary)}.side-panel .settings-radio input[type=radio]{flex:0 0 15px;width:15px;height:15px;margin:0}.side-panel .settings-radio .radio-label{color:var(--text-primary);font-size:.6875rem;line-height:1.35}.side-panel .settings-theme-options .settings-radio{align-items:flex-start;gap:8px;padding:8px}.side-panel .settings-theme-options input[type=radio]{margin-top:1px}.settings-theme-copy{flex-direction:column;gap:2px;display:flex}.side-panel .settings-theme-title{align-items:center;gap:5px;font-weight:600;display:flex}.side-panel .settings-theme-title svg{width:14px;height:14px;color:var(--text-secondary)}.side-panel .settings-theme-desc{color:var(--text-muted);font-size:.625rem;line-height:1.35}.side-panel :is(.preview-box,.about-box){border-color:var(--border);background:var(--panel-surface-raised);border-radius:6px;padding:8px}.side-panel .preview-value{border:1px solid var(--border);background:var(--bg-tertiary);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;border-radius:4px;padding:6px 7px;font-size:.6875rem}.side-panel .about-row{align-items:center;min-height:30px;padding:4px 0}.side-panel .settings-footer{border-top:1px solid var(--border);background:var(--panel-surface-raised);justify-content:flex-end;margin-top:auto;padding:7px 9px;display:flex}.side-panel .measure-panel{gap:8px}.side-panel .measure-panel-info{border-color:var(--border);color:var(--text-secondary);background:0 0;border-radius:6px;gap:7px;padding:8px 9px;font-size:.6875rem;line-height:1.4}.side-panel .measure-panel-info svg{width:14px;height:14px;color:var(--text-secondary)}.side-panel .measure-panel-empty{border:1px dashed var(--border);background:0 0;border-radius:7px;min-height:130px;padding:16px 12px}.side-panel .measure-empty-icon{border:1px solid var(--border);width:36px;height:36px;color:var(--text-secondary);opacity:1;background:0 0;border-radius:6px;justify-content:center;align-items:center;margin-bottom:8px;display:inline-flex}.side-panel .measure-panel-empty p{color:var(--text-primary);font-size:.75rem;font-weight:600}.side-panel .measure-panel-empty .text-muted{max-width:220px;color:var(--text-secondary);opacity:1;margin-top:4px;font-size:.625rem;font-weight:400;line-height:1.4}.side-panel .measure-action-bar{gap:5px}.side-panel .measure-track-card{border-color:var(--border);background:var(--panel-surface-raised);border-radius:6px}.side-panel .measure-track-header{border-bottom-color:var(--border);background:var(--bg-tertiary);min-height:38px;padding:4px 7px}.side-panel .measure-track-label{align-items:center;gap:5px;font-size:.6875rem;font-weight:600;display:inline-flex}.side-panel .measure-live-dot{background:var(--danger);border-radius:50%;width:6px;height:6px}.side-panel .measure-track-heading-actions{align-items:center;gap:5px;display:flex}.side-panel .measure-track-total,.side-panel :is(.seg-dist,.measure-total-value,.measure-grand-total strong){color:var(--text-primary);font-variant-numeric:tabular-nums}.side-panel .measure-track-remove{border-color:var(--border);background:0 0;border-radius:5px;width:30px;height:30px}.side-panel .measure-table{font-size:.625rem}.side-panel .measure-table th{color:var(--text-muted);font-size:var(--fs-2xs);padding:5px 6px}.side-panel .measure-table td{padding:5px 6px}.side-panel .seg-coord{font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}.side-panel .measure-grand-total{border-color:var(--border);background:var(--bg-tertiary);border-radius:6px;min-height:36px;padding:6px 8px}.side-panel .measure-clear-btn{background:0 0;border-radius:6px;min-height:34px;font-size:.6875rem}.side-panel .side-panel-body>.terminal-panel{background:var(--bg-primary);width:calc(100% + 20px);height:calc(100% + 20px);margin:-10px}.side-panel .terminal-status-bar{border-bottom-color:var(--border);background:var(--panel-surface-raised);min-height:42px;padding:5px 8px}.side-panel .terminal-status{gap:5px;font-size:.6875rem;font-weight:600}.side-panel .terminal-status:after{content:"LIVE";font-size:var(--fs-2xs);letter-spacing:.04em;opacity:.7;border:1px solid;border-radius:999px;padding:1px 4px;line-height:1.2}.side-panel .terminal-controls{gap:3px}.side-panel .terminal-ctrl-btn{border-color:var(--border);background:0 0;border-radius:5px;width:30px;height:30px}.side-panel .terminal-ctrl-btn.active{border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel .terminal-filters{border-bottom-color:var(--border);background:var(--bg-secondary);scrollbar-width:thin;gap:3px;padding:5px}.side-panel .terminal-filter-btn{border:1px solid var(--border);min-height:28px;font-size:var(--fs-2xs);background:0 0;border-radius:5px;padding:0 7px}.side-panel .terminal-filter-btn.active{border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel .terminal-filter-sep{background:var(--border);margin:3px 2px}.side-panel .terminal-search{border-color:var(--border);background:var(--bg-tertiary);border-radius:5px;min-width:170px;min-height:30px;padding:0 4px 0 7px}.side-panel .terminal-search input{width:120px;font-size:.625rem}.side-panel .terminal-search-clear{border-radius:4px;justify-content:center;width:28px;height:28px}.terminal-output-shell{background:var(--bg-primary);flex:1;min-height:0;padding:7px;position:relative;overflow:hidden}.terminal-output{width:100%;height:100%}.sensor-form-actions{margin-top:10px}.side-panel .terminal-paused-banner{z-index:10;border-color:var(--warning);background:var(--warning-subtle);color:var(--warning);font-size:var(--fs-2xs);box-shadow:none;border-radius:4px;align-items:center;gap:4px;margin:0;padding:4px 6px;display:inline-flex;position:absolute;bottom:10px;right:10px}.side-panel .map-filter-panel.docked{gap:7px}.side-panel .map-filter-tabs{gap:4px;padding-bottom:0}.side-panel .map-filter-tab{border:1px solid var(--border);background:0 0;border-radius:6px;gap:5px;min-height:34px;padding:0 8px;font-size:.625rem}.side-panel .map-filter-tab svg{width:14px;height:14px}.side-panel .map-filter-tab.active{border-color:var(--border-hover);background:var(--bg-tertiary);color:var(--text-primary)}.side-panel .map-filter-count{background:var(--accent);min-width:17px;min-height:17px;color:var(--on-accent);padding:1px 4px;line-height:15px}.side-panel .map-filter-search{margin-bottom:0}.side-panel .map-filter-search-icon{width:14px;height:14px;color:var(--text-muted);left:10px}.side-panel .map-filter-search input{border-color:var(--border);background:var(--bg-tertiary);border-radius:6px;min-height:36px;padding:7px 34px 7px 31px;font-size:.75rem}.side-panel .map-filter-search-clear{width:32px;height:32px;right:2px}.side-panel .map-filter-status{border:1px solid var(--border);min-height:30px;color:var(--text-secondary);font-size:var(--fs-2xs);background:0 0;border-radius:5px;padding:4px 7px}.side-panel .map-filter-clear{min-height:28px;color:var(--text-primary);font-size:var(--fs-2xs);border:0;padding:0 5px}.side-panel .map-filter-list{gap:3px;padding-right:1px}.side-panel .map-filter-item{background:0 0;border:1px solid #0000;border-radius:5px;gap:7px;min-height:36px;padding:6px 7px;font-size:.6875rem}.side-panel .map-filter-item:hover,.side-panel .map-filter-item.checked{border-color:var(--border);background:var(--bg-tertiary)}.side-panel .map-filter-checkbox{border-color:var(--border-hover);width:16px;height:16px;color:var(--on-accent);border-radius:4px}.side-panel .map-filter-item-sub{font-size:var(--fs-2xs);margin-top:1px;display:block}.side-panel .map-filter-empty{border:1px dashed var(--border);background:0 0;border-radius:6px;justify-content:center;align-items:center;min-height:100px;padding:14px;font-size:.6875rem;display:flex}.side-panel .auth-form{gap:11px}.side-panel .auth-intro{border:1px solid var(--border);color:var(--text-secondary);background:0 0;border-radius:6px;margin:0;padding:8px 9px;font-size:.6875rem;line-height:1.4}.side-panel .auth-fields{gap:9px}.side-panel .auth-input{min-height:38px}.side-panel .auth-submit{width:100%;min-height:36px;margin-top:2px}.side-panel .auth-error{border-color:var(--danger);background:var(--danger-subtle);border-radius:5px;padding:7px 8px;font-size:.6875rem;line-height:1.4}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal){border-color:var(--panel-border-strong);background:var(--panel-surface);border-radius:9px;box-shadow:0 12px 32px #00000052}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal) :is(.vessel-modal-header,.sensor-modal-header,.user-modal-header,.overlay-modal-header){border-bottom-color:var(--border);background:var(--panel-surface-raised);min-height:48px;padding:8px 11px}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal) :is(.vessel-modal-title,.sensor-modal-title,.user-modal-title,.overlay-modal-title){color:var(--text-primary);font-size:.8125rem;font-weight:650}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal) :is(.vessel-modal-body,.sensor-modal-body,.user-modal-body,.overlay-modal-body){padding:12px}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal) :is(.form-input,.auth-input){border-color:var(--border);background:var(--bg-tertiary);border-radius:6px;min-height:36px;font-size:.75rem}body :is(.vessel-modal,.sensor-modal,.user-modal,.overlay-modal) :is(.btn-primary,.btn-secondary){border-radius:6px;min-height:34px;font-size:.6875rem}.side-panel.expanded .side-panel-body>:not(.terminal-panel){width:min(100%,1080px);margin-inline:auto}.side-panel.expanded .mgmt-header{grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.side-panel.expanded .side-panel-body .mgmt-add-btn{width:auto}.side-panel.expanded .mgmt-list{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));display:grid}.side-panel.expanded .side-panel-body .form-row{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=640px){.side-panel,.side-panel.expanded{border-radius:8px;width:auto;position:absolute;inset:6px}.side-panel-header{min-height:48px}.side-panel-body{padding:9px}.side-panel .settings-panel{min-height:calc(100% + 18px);margin:-9px}.side-panel .side-panel-body>.terminal-panel{width:calc(100% + 18px);height:calc(100% + 18px);margin:-9px}.side-panel.expanded .mgmt-header,.side-panel.expanded .side-panel-body .form-row{flex-direction:column;align-items:stretch;display:flex}.side-panel.expanded .side-panel-body .mgmt-add-btn{width:100%}.side-panel.expanded .mgmt-list{display:flex}.side-panel :is(input,select,textarea){min-height:44px;font-size:1rem!important}}@media (pointer:coarse){.side-panel button,.side-panel .settings-radio,.side-panel .map-filter-item{min-height:44px}.side-panel :is(.icon-btn,.btn-icon,.mgmt-page-btn,.terminal-ctrl-btn,.terminal-search-clear,.map-filter-search-clear,.mgmt-search-clear,.user-search-clear,.measure-track-remove){min-width:44px;min-height:44px}}.guest-lock-overlay{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:9px;padding:30px 18px;display:flex}.guest-lock-icon{width:48px;height:48px;color:var(--text-muted);background:#ffffff0a;border:1px solid #ffffff14;border-radius:50%;justify-content:center;align-items:center;margin-bottom:3px;display:flex}.guest-lock-title{font-size:var(--fs-md);color:var(--text-primary);font-weight:600}.guest-lock-text{font-size:var(--fs-xs);color:var(--text-muted);max-width:165px;line-height:1.5}.layer-picker{z-index:60;background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.8);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:132px;padding:6px;animation:.18s ease-out layerPickerIn;position:absolute;bottom:24px;left:60px}@keyframes layerPickerIn{0%{opacity:0;transform:translate(-8px)scale(.97)}to{opacity:1;transform:translate(0)scale(1)}}.layer-picker-title{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:3px 9px 6px;font-weight:800}.layer-picker-option{border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);color:var(--text-secondary);text-align:left;width:100%;transition:all var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:6px 9px;font-weight:500;display:flex}.layer-picker-option:hover{background:var(--bg-tertiary);color:var(--text-primary)}.layer-picker-option.active{color:var(--accent);background:var(--accent-subtle)}.layer-picker-swatch{border:1px solid var(--border);border-radius:4px;flex-shrink:0;width:14px;height:14px}.layer-picker-divider{background:var(--border);height:1px;margin:6px 4px}.layer-picker-hint{font-size:var(--fs-xs);color:var(--text-muted);max-width:150px;padding:4px 9px 8px;line-height:1.4}.layer-picker-slider{flex-direction:column;gap:5px;padding:5px 9px 8px;display:flex}.layer-picker-slider.disabled{opacity:.45}.layer-picker-slider-label{font-size:var(--fs-sm);color:var(--text-secondary);justify-content:space-between;align-items:center;font-weight:500;display:flex}.layer-picker-slider-value{font-size:var(--fs-xs);color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.layer-picker-slider input[type=range]{appearance:none;background:var(--bg-tertiary);cursor:pointer;border-radius:999px;outline:none;width:100%;height:4px}.layer-picker-slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);border:2px solid var(--bg-glass);width:13px;height:13px;box-shadow:var(--shadow-sm);transition:transform var(--transition-fast);border-radius:50%}.layer-picker-slider input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}.layer-picker-slider input[type=range]::-moz-range-thumb{background:var(--accent);border:2px solid var(--bg-glass);cursor:pointer;border-radius:50%;width:13px;height:13px}.layer-picker-slider input[type=range]:disabled{cursor:not-allowed}.map-filter-panel{z-index:60;background:var(--bg-glass);-webkit-backdrop-filter:blur(24px)saturate(1.8);border:1px solid var(--border);border-radius:var(--radius-md);width:230px;max-height:min(380px,100% - 48px);box-shadow:var(--shadow-lg);flex-direction:column;padding:6px;animation:.18s ease-out layerPickerIn;display:flex;position:absolute;bottom:24px;left:60px}.map-filter-panel.docked{-webkit-backdrop-filter:none;width:100%;height:100%;max-height:none;box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;animation:none;position:static}.map-filter-tabs{gap:4px;padding-bottom:6px;display:flex}.map-filter-tab{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);font-size:var(--fs-xs);cursor:pointer;transition:all var(--transition-fast);border:none;flex:1;justify-content:center;align-items:center;gap:5px;padding:5px 6px;font-weight:600;display:inline-flex}.map-filter-tab:hover{color:var(--text-primary)}.map-filter-tab.active{background:var(--accent-subtle);color:var(--accent)}.map-filter-count{background:var(--accent);min-width:15px;color:var(--on-accent);font-size:var(--fs-2xs);border-radius:999px;padding:0 4px;font-weight:700;line-height:15px}.map-filter-search{align-items:center;margin-bottom:6px;display:flex;position:relative}.map-filter-search-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:8px}.map-filter-search input{box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);width:100%;color:var(--text-primary);font-size:var(--fs-xs);transition:border-color var(--transition-fast);outline:none;padding:5px 24px 5px 26px;font-family:inherit}.map-filter-search input:focus{border-color:var(--accent)}.map-filter-search-clear{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:2px;display:flex;position:absolute;right:6px}.map-filter-search-clear:hover{color:var(--text-primary)}.map-filter-status{font-size:var(--fs-2xs);color:var(--text-muted);justify-content:space-between;align-items:center;gap:6px;padding:0 3px 6px;display:flex}.map-filter-clear{color:var(--accent);font-size:var(--fs-2xs);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700}.map-filter-clear:hover{text-decoration:underline}.map-filter-list{flex-direction:column;flex:1;gap:1px;min-height:0;display:flex;overflow-y:auto}.map-filter-item{border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);font-size:var(--fs-xs);text-align:left;cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;align-items:center;gap:7px;padding:5px 6px;font-weight:500;display:flex}.map-filter-item:hover{background:var(--bg-tertiary);color:var(--text-primary)}.map-filter-item.checked{color:var(--text-primary)}.map-filter-checkbox{border:1px solid var(--border-hover);width:14px;height:14px;color:var(--on-accent);transition:all var(--transition-fast);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.map-filter-item.checked .map-filter-checkbox{background:var(--accent);border-color:var(--accent)}.map-filter-item-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.map-filter-item-sub{color:var(--text-muted)}.map-filter-empty{text-align:center;font-size:var(--fs-xs);color:var(--text-muted);padding:14px 8px}.map-control-btn.filter-on{color:var(--accent);position:relative}.map-control-btn.filter-on:after{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 4px var(--accent);border-radius:50%;position:absolute;top:3px;right:3px}.ws-status{align-items:center;gap:4px;display:inline-flex}.ws-status-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:6px;height:6px}.ws-status-connected .ws-status-dot{background:var(--success);box-shadow:0 0 4px var(--success)}.ws-status-connected{color:var(--success)}.ws-status-connecting .ws-status-dot,.ws-status-reconnecting .ws-status-dot{background:var(--warning);animation:1s ease-in-out infinite wsBlink}.ws-status-connecting,.ws-status-reconnecting{color:var(--warning)}.ws-status-disconnected .ws-status-dot{background:var(--danger)}.ws-status-disconnected{color:var(--danger)}@keyframes wsBlink{0%,to{opacity:1}50%{opacity:.35}}.ws-reconnect-banner{z-index:110;background:var(--bg-glass);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--warning);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);color:var(--warning);font-size:var(--fs-sm);align-items:center;gap:8px;padding:7px 12px;font-weight:600;animation:.25s ease-out bannerDropIn;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}@keyframes bannerDropIn{0%{opacity:0;transform:translate(-50%)translateY(-10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.ws-reconnect-retry{border:1px solid var(--warning);border-radius:var(--radius-sm);color:var(--warning);font-size:var(--fs-xs);cursor:pointer;transition:all var(--transition-fast);background:0 0;align-items:center;gap:4px;padding:3px 8px;font-weight:600;display:inline-flex}.ws-reconnect-retry:hover{background:var(--warning);color:var(--on-accent)}.telemetry-age{font-size:var(--fs-2xs);text-transform:none;letter-spacing:0;align-items:center;gap:4px;margin-left:8px;font-weight:600;display:inline-flex}.telemetry-age-dot{background:currentColor;border-radius:50%;width:5px;height:5px}.telemetry-age-fresh{color:var(--success)}.telemetry-age-warn{color:var(--warning)}.telemetry-age-stale{color:var(--danger)}.map-search-empty{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:4px;padding:18px 12px;display:flex}.map-search-empty-title{font-size:var(--fs-sm);color:var(--text-secondary);font-weight:600}.map-search-empty-text{font-size:var(--fs-xs);color:var(--text-muted);line-height:1.4}.map-search-input-stack{flex:auto;min-width:60px;display:flex;position:relative}.map-search-input-stack .map-search-input{z-index:1;width:100%;position:relative}.map-search-ghost{font-size:var(--fs-md);pointer-events:none;white-space:pre;z-index:0;align-items:center;display:flex;position:absolute;inset:0;overflow:hidden}.map-search-ghost .ghost-typed{color:#0000}.map-search-ghost .ghost-completion{color:var(--text-muted);opacity:.55}.badge-callsign{text-overflow:ellipsis;white-space:nowrap;max-width:110px;overflow:hidden}@media (width<=480px){.badge-callsign{max-width:64px}}@media (width<=640px){.map-search-key-hint{display:none}}@media (width<=1100px){.map-search-container.panel-open{display:none}}@media (pointer:coarse){.map-search-shortcut{display:none}.map-search-clear-btn{min-width:36px;min-height:36px}}.panel-btn.tracking-active{position:relative}.panel-btn.tracking-active:after{content:"";border-radius:inherit;border:2px solid var(--accent);pointer-events:none;animation:1.6s cubic-bezier(.215,.61,.355,1) infinite trackingPulse;position:absolute;inset:-3px}@keyframes trackingPulse{0%{opacity:.8;transform:scale(.98)}70%{opacity:0;transform:scale(1.12)}to{opacity:0;transform:scale(1.12)}}.error-boundary-fallback{text-align:center;height:100%;min-height:120px;color:var(--danger);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:32px 18px;display:flex}.error-boundary-title{font-size:var(--fs-md);color:var(--text-primary);font-weight:700}.error-boundary-message{font-size:var(--fs-sm);color:var(--text-muted);word-break:break-word;max-width:280px}.error-boundary-retry{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:6px;margin-top:4px;padding:6px 14px;font-weight:600;display:inline-flex}.error-boundary-retry:hover{border-color:var(--accent);color:var(--accent)}.panel-suspense-loading{color:var(--text-muted);font-size:var(--fs-sm);justify-content:center;align-items:center;gap:8px;padding:32px 0;display:flex}.sidebar-link{position:relative}.sidebar.collapsed .sidebar-link.active:before{content:"";background:var(--accent);width:6px;height:6px;box-shadow:0 0 5px var(--accent-glow,var(--accent));border-radius:50%;position:absolute;top:5px;right:5px}.profile-popover:before{content:"";background:var(--bg-primary);border-left:1px solid var(--border);border-top:1px solid var(--border);width:9px;height:9px;position:absolute;top:-5px;left:22px;transform:rotate(45deg)}.floating-menu-toggle svg{transition:transform .2s}.floating-menu-toggle.open svg{transform:rotate(90deg)}@media (pointer:coarse){.map-control-btn,.floating-menu-toggle{width:44px;height:44px}.map-container .ol-control button{width:38px!important;height:38px!important}}@supports (padding:env(safe-area-inset-left)){.bottom-left-watermark{padding-bottom:max(6px, env(safe-area-inset-bottom));padding-left:max(12px, env(safe-area-inset-left))}.coords-display{right:max(9px, env(safe-area-inset-right))}}.map-pick-banner{z-index:110;background:var(--bg-glass);-webkit-backdrop-filter:blur(16px)saturate(1.4);border:1px solid var(--accent);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg), var(--shadow-glow);color:var(--accent);font-size:var(--fs-sm);pointer-events:auto;align-items:center;gap:8px;padding:7px 12px;font-weight:600;animation:.25s ease-out bannerDropIn;display:flex;position:absolute;top:60px;left:50%;transform:translate(-50%)}.map-pick-cancel{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--fs-xs);cursor:pointer;transition:all var(--transition-fast);background:0 0;align-items:center;gap:4px;padding:3px 8px;font-weight:600;display:inline-flex}.map-pick-cancel:hover{border-color:var(--danger);color:var(--danger)}.btn-pick-map{border:1px dashed var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-secondary);font-size:var(--fs-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;gap:6px;margin-top:8px;padding:8px 12px;font-weight:600;display:inline-flex}.btn-pick-map:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}.btn-pick-map.picking{border-style:solid;border-color:var(--accent);color:var(--accent);background:var(--accent-subtle);animation:1.4s ease-in-out infinite wsBlink}.panel-resize-handle{z-index:30;background:0 0;position:absolute}.panel-resize-handle.edge-left{cursor:ew-resize;width:8px;top:0;bottom:0;left:-3px}.panel-resize-handle.edge-right{cursor:ew-resize;width:8px;top:0;bottom:0;right:-3px}.panel-resize-handle.edge-bottom{cursor:ns-resize;height:8px;bottom:-3px;left:0;right:0}.panel-resize-handle.edge-left:after,.panel-resize-handle.edge-right:after,.panel-resize-handle.edge-bottom:after{content:"";background:var(--accent);opacity:0;transition:opacity var(--transition-fast);border-radius:2px;margin:auto;position:absolute;inset:0}.panel-resize-handle.edge-left:after,.panel-resize-handle.edge-right:after{width:3px}.panel-resize-handle.edge-bottom:after{height:3px}.panel-resize-handle:hover:after{opacity:.7}.vessel-detail-panel .panel-resize-handle.edge-left:after{background:var(--text-muted);opacity:.2;width:3px;height:42px}.vessel-detail-panel .panel-resize-handle.edge-left:hover:after{background:var(--accent);opacity:.7}.panel-resize-handle.corner-se{cursor:nwse-resize;width:16px;height:16px;color:var(--text-muted);justify-content:flex-end;align-items:flex-end;padding:2px;display:flex;bottom:1px;right:1px}.panel-resize-handle.corner-se:hover{color:var(--accent)}@media (width<=640px){.panel-resize-handle{display:none}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root,:host{--ol-background-color:white;--ol-accent-background-color:#f5f5f5;--ol-subtle-background-color:#80808040;--ol-partial-background-color:#ffffffbf;--ol-foreground-color:#333;--ol-subtle-foreground-color:#666;--ol-brand-color:#0af}.ol-box{box-sizing:border-box;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color);border-radius:2px}.ol-mouse-position{position:absolute;top:8px;right:8px}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;padding:2px;position:absolute;bottom:8px;left:8px}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-align:center;will-change:contents, width;border-top:none;margin:1px;font-size:10px;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{background-color:var(--ol-foreground-color);float:right;z-index:10;width:1px;height:15px}.ol-scale-step-text{z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:10px;position:absolute;bottom:-5px}.ol-scale-text{text-align:center;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color), 0 1.5px var(--ol-partial-background-color), 1.5px 0 var(--ol-partial-background-color), 0 -1.5px var(--ol-partial-background-color);font-size:12px;position:absolute;bottom:25px}.ol-scale-singlebar{z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color);height:10px;position:relative}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{background-color:var(--ol-subtle-background-color);border-radius:4px;position:absolute}.ol-zoom{top:.5em;left:.5em}.ol-rotate{transition:opacity .25s linear,visibility linear;top:.5em;right:.5em}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{top:.5em;right:.5em}.ol-control button{color:var(--ol-subtle-foreground-color);font-weight:700;font-size:inherit;text-align:center;background-color:var(--ol-background-color);border:none;border-radius:2px;width:1.375em;height:1.375em;margin:1px;padding:0;line-height:.4em;text-decoration:none;display:block}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{will-change:transform;font-weight:400;display:block}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color);text-decoration:none}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;flex-flow:row-reverse;align-items:center;max-width:calc(100% - 1.3em);display:flex;bottom:.5em;right:.5em}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);margin:0;padding:1px .5em;font-size:12px}.ol-attribution li{list-style:none;display:inline}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{border-radius:4px 0 0;bottom:0;right:0}.ol-attribution.ol-uncollapsible img{max-height:1.6em;margin-top:-.2em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{height:200px;top:4.5em;left:.5em}.ol-zoomslider button{height:10px;position:relative}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{bottom:.5em;left:.5em}.ol-overviewmap.ol-uncollapsible{border-radius:0 4px 0 0;bottom:0;left:0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);width:150px;height:150px}.ol-overviewmap:not(.ol-collapsed) button{position:absolute;bottom:0;left:0}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}.maintenance-screen{z-index:4000;background:var(--bg-primary);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.maintenance-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-md);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:32px 28px;display:flex}.maintenance-icon{background:var(--accent-subtle,#0ea5e91f);width:56px;height:56px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.maintenance-title{color:var(--text-primary);margin:0;font-size:1.35rem;font-weight:700}.maintenance-message{color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.55}.maintenance-eta{border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);border-radius:999px;align-items:center;gap:6px;margin:0;padding:6px 12px;font-size:.8rem;font-weight:600;display:inline-flex}.maintenance-countdown{color:var(--accent);font-variant-numeric:tabular-nums}.maintenance-eta-abs{color:var(--text-muted);font-weight:500}.maintenance-retry{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;align-items:center;gap:8px;margin-top:8px;padding:8px 16px;font-size:.85rem;font-weight:600;transition:background .15s;display:inline-flex}.maintenance-retry:hover:not(:disabled){background:var(--bg-secondary)}.maintenance-retry:disabled{opacity:.6;cursor:not-allowed}.maintenance-divider{width:100%;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:10px;margin-top:8px;font-size:.72rem;display:flex}.maintenance-divider:before,.maintenance-divider:after{content:"";background:var(--border);flex:1;height:1px}.maintenance-form{gap:8px;width:100%;display:flex}.maintenance-input-wrap{flex:1;align-items:center;display:flex;position:relative}.maintenance-input-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:10px}.maintenance-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);width:100%;color:var(--text-primary);box-sizing:border-box;outline:none;padding:9px 10px 9px 32px;font-family:inherit;font-size:.85rem;transition:border-color .2s,box-shadow .2s}.maintenance-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #0ea5e91a}.maintenance-submit{border-radius:var(--radius-sm);background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;padding:9px 16px;font-size:.85rem;font-weight:600;transition:opacity .15s}.maintenance-submit:hover:not(:disabled){opacity:.9}.maintenance-submit:disabled{opacity:.5;cursor:not-allowed}.maintenance-error{color:var(--danger,#ef4444);margin:4px 0 0;font-size:.8rem}
