@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";#app{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--color-primary: #FF7900;--color-primary-dark: #E06D00;--color-green: #64BA5D;--color-red: #DF6352;--color-blue: #6888B9;--color-bg-dark: #20293A;--color-bg-body: #333A47;--color-white: #FFFFFF;--color-black: #000000;--color-grey-dark: #4F4F4F;--color-grey-light: #C4C4C4;--color-grey-lighter: #F1EEEE;--w-02: rgba(255, 255, 255, .02);--w-04: rgba(255, 255, 255, .04);--w-05: rgba(255, 255, 255, .05);--w-06: rgba(255, 255, 255, .06);--w-08: rgba(255, 255, 255, .08);--w-10: rgba(255, 255, 255, .1);--w-12: rgba(255, 255, 255, .12);--w-15: rgba(255, 255, 255, .15);--w-20: rgba(255, 255, 255, .2);--w-25: rgba(255, 255, 255, .25);--w-30: rgba(255, 255, 255, .3);--w-35: rgba(255, 255, 255, .35);--w-40: rgba(255, 255, 255, .4);--w-45: rgba(255, 255, 255, .45);--w-50: rgba(255, 255, 255, .5);--w-55: rgba(255, 255, 255, .55);--w-60: rgba(255, 255, 255, .6);--w-70: rgba(255, 255, 255, .7);--w-75: rgba(255, 255, 255, .75);--w-80: rgba(255, 255, 255, .8);--w-85: rgba(255, 255, 255, .85);--w-90: rgba(255, 255, 255, .9);--w-92: rgba(255, 255, 255, .92);--w-95: rgba(255, 255, 255, .95);--b-05: rgba(0, 0, 0, .05);--b-10: rgba(0, 0, 0, .1);--b-15: rgba(0, 0, 0, .15);--b-20: rgba(0, 0, 0, .2);--b-25: rgba(0, 0, 0, .25);--b-30: rgba(0, 0, 0, .3);--b-35: rgba(0, 0, 0, .35);--b-45: rgba(0, 0, 0, .45);--b-50: rgba(0, 0, 0, .5);--b-85: rgba(0, 0, 0, .85);--p-10: rgba(255, 121, 0, .1);--p-15: rgba(255, 121, 0, .15);--p-20: rgba(255, 121, 0, .2);--p-30: rgba(255, 121, 0, .3);--p-35: rgba(255, 121, 0, .35);--p-40: rgba(255, 121, 0, .4);--p-45: rgba(255, 121, 0, .45);--p-50: rgba(255, 121, 0, .5);--glass-bg: rgba(16, 22, 40, .94);--glass-bg-elevated: rgba(12, 18, 35, .96);--glass-border: var(--w-15);--glass-border-subtle: var(--w-08);--glass-blur: 24px;--glass-backdrop: blur(24px) saturate(1.2);--glass-shadow: 0 8px 32px var(--b-45), 0 2px 8px var(--b-25);--glass-shadow-elevated: 0 16px 56px var(--b-55), 0 6px 16px var(--b-35);--glass-inner-glow: inset 0 1px 0 var(--w-08);--control-active-bg: var(--w-12);--control-active-text: var(--w-95);--control-active-border: var(--w-35);--control-hover-bg: var(--w-06);--control-hover-text: var(--w-75);--control-muted-text: var(--w-55);--control-muted-dot: var(--w-50);--control-focus-border: var(--w-25);--cta-bg: #E8854A;--cta-bg-hover: #EE9460;--cta-bg-active: #D07540;--cta-shadow: rgba(232, 133, 74, .3);--toggle-active-bg: var(--w-50);--toggle-active-thumb: var(--w-95);--toggle-inactive-bg: var(--w-12);--color-elevation-gain: #7BC67F;--color-elevation-loss: #D4756E;--color-error: #D4756E;--color-error-bg: rgba(212, 117, 110, .08);--color-error-border: rgba(212, 117, 110, .12);--trace-color: var(--color-primary);--trace-shadow: var(--b-25);--marker-current-fill: var(--color-white);--marker-current-stroke: var(--color-primary);--marker-current-glow: var(--p-45);--marker-pin-bg: var(--color-bg-dark);--marker-pin-text: var(--color-white);--marker-waypoint: var(--color-primary);--overlay-bg: rgba(24, 34, 56, .88);--canvas-axis-text: rgba(255, 255, 255, .7);--canvas-grid-line: rgba(255, 255, 255, .04);--canvas-overview-bg: rgba(255, 255, 255, .08);--canvas-overview-line: rgba(255, 255, 255, .2);--canvas-bar-past: rgba(255, 255, 255, .9);--canvas-bar-future: rgba(255, 255, 255, .15);--pin-fill: #20293A;--pin-stroke: rgba(255, 255, 255, .5);--pin-text: white;--pin-inner: rgba(255, 255, 255, .12);--flag-bg: rgba(20, 25, 35, .88);--flag-border: rgba(255, 255, 255, .08);--flag-text: #ffffff;--flag-meta: rgba(255, 255, 255, .45);--flag-desc: rgba(255, 255, 255, .7);--flag-close: rgba(255, 255, 255, .45);--flag-wire: rgba(20, 25, 35, .85);--flag-shadow: 0 2px 8px rgba(0,0,0,.25), 0 8px 32px rgba(0,0,0,.15);--flag-inner-glow: inset 0 1px 0 rgba(255, 255, 255, .06);--font-family-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-family-mono: "SF Mono", "Fira Code", "Cascadia Code", monospace;--font-size-button: 12px;--font-size-text: 13px;--font-size-subtitle: 15px;--font-size-title: 16px;--font-size-title-large: 19px;--map-border-radius: 20px}[data-theme=light]{--color-bg-dark: #FFFFFF;--color-bg-body: #FFFFFF;--glass-bg: rgba(255, 255, 255, .97);--glass-bg-elevated: rgba(255, 255, 255, .98);--glass-blur: 0px;--glass-backdrop: none;--glass-border: rgba(0, 0, 0, .08);--glass-border-subtle: rgba(0, 0, 0, .05);--glass-shadow: 0 1px 6px rgba(0,0,0,.15), 0 0 0 1px rgba(0,0,0,.04);--glass-shadow-elevated: 0 4px 16px rgba(0,0,0,.16), 0 0 0 1px rgba(0,0,0,.04);--glass-inner-glow: none;--control-active-bg: var(--b-15);--control-active-text: var(--b-85);--control-active-border: var(--b-30);--control-hover-bg: var(--b-10);--control-hover-text: var(--b-50);--control-muted-text: var(--b-35);--control-muted-dot: var(--b-30);--control-focus-border: var(--b-20);--toggle-active-bg: var(--color-primary);--toggle-active-thumb: #FFFFFF;--toggle-inactive-bg: var(--b-15);--overlay-bg: rgba(255, 255, 255, .75);--marker-pin-bg: #FFFFFF;--marker-pin-text: var(--color-bg-dark);--canvas-axis-text: rgba(0, 0, 0, .65);--canvas-grid-line: rgba(0, 0, 0, .1);--canvas-overview-bg: rgba(0, 0, 0, .1);--canvas-overview-line: rgba(0, 0, 0, .35);--canvas-bar-past: rgba(0, 0, 0, .75);--canvas-bar-future: rgba(0, 0, 0, .25);--pin-fill: #3A4560;--pin-stroke: rgba(255, 255, 255, .7);--pin-text: white;--pin-inner: rgba(255, 255, 255, .2);--flag-bg: rgba(255, 255, 255, .92);--flag-border: rgba(0, 0, 0, .12);--flag-text: #1a1a2e;--flag-meta: rgba(0, 0, 0, .45);--flag-desc: rgba(0, 0, 0, .65);--flag-close: rgba(0, 0, 0, .35);--flag-wire: rgba(0, 0, 0, .3);--flag-shadow: 0 2px 8px rgba(0,0,0,.1), 0 8px 32px rgba(0,0,0,.08);--flag-inner-glow: inset 0 1px 0 rgba(255, 255, 255, .5);--w-02: rgba(0, 0, 0, .02);--w-04: rgba(0, 0, 0, .04);--w-05: rgba(0, 0, 0, .05);--w-06: rgba(0, 0, 0, .07);--w-08: rgba(0, 0, 0, .09);--w-10: rgba(0, 0, 0, .11);--w-12: rgba(0, 0, 0, .14);--w-15: rgba(0, 0, 0, .16);--w-20: rgba(0, 0, 0, .22);--w-25: rgba(0, 0, 0, .3);--w-30: rgba(0, 0, 0, .35);--w-35: rgba(0, 0, 0, .4);--w-40: rgba(0, 0, 0, .46);--w-45: rgba(0, 0, 0, .5);--w-50: rgba(0, 0, 0, .55);--w-55: rgba(0, 0, 0, .6);--w-60: rgba(0, 0, 0, .68);--w-70: rgba(0, 0, 0, .75);--w-75: rgba(0, 0, 0, .8);--w-80: rgba(0, 0, 0, .75);--w-85: rgba(0, 0, 0, .8);--w-90: rgba(0, 0, 0, .85);--w-92: rgba(0, 0, 0, .88);--w-95: rgba(0, 0, 0, .92)}:root{--color-secondary: var(--color-blue);--color-background: var(--color-bg-body);--color-text: var(--color-white);--color-text-light: var(--color-grey-light);--color-border: var(--color-grey-dark);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 3rem;--transition-fast: .15s ease;--transition-base: .3s ease;--transition-slow: .5s ease;--shadow-sm: 0 1px 2px var(--b-05);--shadow-md: 0 4px 6px var(--b-10);--shadow-lg: 0 10px 15px var(--b-10);--shadow-xl: 0 20px 25px var(--b-15)}*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden}body{font-family:var(--font-family-primary, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text);background:var(--color-background)}html:fullscreen,html:-webkit-full-screen{background:var(--color-bg-body)}[data-theme=light]:fullscreen,[data-theme=light]:-webkit-full-screen{background:#fff}[data-theme=light]::backdrop{background:#fff}button,a,input,select,textarea{min-height:44px;min-width:44px}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}@media(prefers-reduced-motion:no-preference){*{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.beacon-flag .shape-flag-still{margin-top:5px;padding:3px 7px;border-radius:6px;font-size:11px;font-weight:700;color:#f5a623;background:#f5a62329}.shape-flag-container{background:none!important;border:none!important;overflow:visible!important}.shape-flag{position:absolute;bottom:0;transform:translate(-50%);pointer-events:auto;cursor:default;white-space:nowrap;display:flex;align-items:flex-start;gap:6px;background:var(--flag-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--flag-border);border-radius:10px;padding:8px 26px 8px 10px;color:var(--flag-text);font-family:Inter,system-ui,-apple-system,sans-serif;box-shadow:var(--flag-shadow),var(--flag-inner-glow);min-width:100px;max-width:260px;transform:none;left:0;transform-origin:bottom left}.shape-flag.shape-flag-animate{animation:shape-flag-appear .4s cubic-bezier(.34,1.56,.64,1) backwards}@keyframes shape-flag-appear{0%{opacity:0;transform:scale(.7) rotate(-2deg)}to{opacity:1;transform:none}}.shape-flag-close{position:absolute;top:-6px;right:-6px;background:transparent;border:none;color:var(--flag-close);font-size:14px;line-height:1;cursor:pointer;padding:0;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:color .15s,background .15s;z-index:2}.shape-flag-close:hover{color:var(--flag-text);background:#e74c3cb3}.shape-flag-color{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:3px}.shape-flag-body{display:flex;flex-direction:column;gap:1px;min-width:0}.shape-flag-title{font-size:12px;font-weight:600;color:var(--flag-text);line-height:1.3;overflow:hidden;text-overflow:ellipsis}.shape-flag-meta{font-size:10px;font-weight:500;color:var(--flag-meta);letter-spacing:.02em}.shape-flag-meta .bf-alt{font-weight:700;color:var(--flag-text)}.shape-flag-desc{font-size:11px;color:var(--flag-desc);line-height:1.45;margin-top:3px;white-space:normal;max-width:220px}.shape-flag-desc p{margin:0 0 3px}.shape-flag-desc p:last-child{margin-bottom:0}.shape-flag-desc a{color:#6cb4ee;text-decoration:none;border-bottom:1px solid rgba(108,180,238,.3)}.shape-flag-desc a:hover{border-bottom-color:#6cb4ee}.flag-overlay-3d{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:5}.flag-overlay-3d .shape-flag-container{z-index:200000;position:absolute;top:0;left:0;width:0;height:0;pointer-events:none}.flag-overlay-3d .shape-flag{pointer-events:auto}.beacon-flag{flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}.beacon-flag .bf-band{display:flex;align-items:center;gap:7px;padding:6px 24px 6px 8px}.beacon-flag .bf-band .shape-flag-color{width:9px;height:9px;margin:0;box-shadow:0 0 0 1.5px #ffffffd9}.beacon-flag .bf-band-text{display:flex;flex-direction:column;min-width:0;line-height:1.15}.beacon-flag .bf-band .shape-flag-title{color:inherit;font-size:12px;font-weight:700}.beacon-flag .bf-serial{font-size:9.5px;font-weight:600;letter-spacing:.06em;color:inherit;opacity:.7;font-variant-numeric:tabular-nums}.beacon-flag .shape-flag-body{padding:7px 10px 8px;gap:2px}.beacon-flag .bf-coord{font-variant-numeric:tabular-nums;opacity:.85}.beacon-flag .bf-owner{font-weight:600}.beacon-flag .bf-seen{opacity:.75}.beacon-flag .bf-off{color:#c8ccd4;background:#c8ccd424}.beacon-flag .bf-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.25);flex-shrink:0}.group-avatar-icon .grp-heading,.current-pos-avatar-pin .grp-heading{transition:transform .4s ease-out,opacity .25s linear}.beacon-flag .bf-actions{display:flex;gap:6px;margin-top:6px}.beacon-flag .bf-act{border:none;border-radius:7px;padding:9px 12px;cursor:pointer;background:#ffffff1f;color:inherit;display:flex;align-items:center;min-width:40px;min-height:32px;justify-content:center}.beacon-flag .bf-act:hover{background:#ffffff38}.beacon-flag .bf-act-ok{background:#2ebe6b;color:#fff}.beacon-flag .bf-act-ko{background:#e5484d;color:#fff}.beacon-flag .bf-motion{display:block;text-align:right}.beacon-flag .bf-serial-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.beacon-flag .bf-batt{font-size:10px;font-weight:700;color:inherit;opacity:.9;white-space:nowrap;font-variant-numeric:tabular-nums}.beacon-flag .bf-band{min-width:170px}.beacon-flag .bf-band-text{flex:1;min-width:0}.beacon-flag .bf-owner-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.beacon-flag .bf-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.beacon-flag .bf-line .bf-motion{display:inline;white-space:nowrap}.beacon-flag{max-width:300px}.beacon-flag .bf-line{flex-wrap:wrap}.beacon-flag .bf-line .bf-motion{margin-left:auto}.grp-label{position:absolute;left:20px;bottom:51px;transform:translate(-50%);width:max-content;max-width:160px;white-space:normal;overflow-wrap:anywhere;display:flex;flex-direction:column;align-items:center;text-align:center;padding:2px 7px;border-radius:7px;font-size:11px;font-weight:700;line-height:1.3;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.55);box-shadow:0 1px 4px #00000059;pointer-events:none}.grp-label .grp-label-alt{font-weight:800;font-size:10.5px;opacity:.97}.flag-overlay-3d .grp-frame-3d{position:absolute;top:0;left:0;pointer-events:none;transition:opacity .25s ease}.flag-overlay-3d .grp-frame-3d.grp-frame-ghost{opacity:.35}.flag-overlay-3d .grp-frame-3d .grp-label{left:0;bottom:51px;transform:translate(-50%)}
