1<!DOCTYPE html><html lang="en" style="height: auto; overflow: auto; background: #ffffff;" data-beasties-container><head> 2 <meta charset="utf-8"> 3 <title>SkyHub</title> 4 <meta name="description" content="Fly your entire drone fleet from one screen. SkyHub gives you live positions, sub-second video and mission control for every aircraft you own â whoever made it. Works with any ArduPilot, PX4 or MAVLink vehicle, in the cloud or on your own hardware."> 5 <base href="/"> 6 <link rel="icon" type="image/png" href="favicon.png"> 7 <!-- Warm DNS+TLS to the API origin so the first authenticated request skips a cold handshake --> 8 <!-- 9 Preconnect to the origins that are actually on the critical path. 10 11 Measured on the map page: the longest request chain is 3,987 ms and every link in it 12 after the app's own chunks is Mapbox â the style, the sprite, fourteen font ranges 13 and the tile JSON. Those two origins were not preconnected; two origins that are 14 never requested were. 15 16 prod.skyhub.ai was preconnected from every build, including ones whose API is 17 somewhere else entirely, and fonts.googleapis.com is not used at all â the app 18 self-hosts its fonts and only ever fetches the woff2 from fonts.gstatic.com. A 19 browser will only keep a handful of speculative connections, so spending two of them 20 on origins that are never contacted costs the ones that are. 21 --> 22 <link rel="preconnect" href="https://api.mapbox.com" crossorigin> 23 <link rel="preconnect" href="https://events.mapbox.com" crossorigin> 24 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 25 <style>@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
25src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;
25src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7SUc.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7SUc.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7SUc.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7SUc.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7SUc.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7SUc.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url(https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;
25src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aPdu2ui.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5ardu2ui.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a_du2ui.woff2) format('woff2');unicode-range:U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aLdu2ui.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a3du2ui.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aHdu2ui.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aDdu2ui.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a7duw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aPdu2ui.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5ardu2ui.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a_du2ui.woff2) format('woff2');unicode-range:U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+20F0, U+25CC, U+A830-A839, U+A8E0-A8FF, U+11B00-11B09;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aLdu2ui.woff2) format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a3du2ui.woff2) format('woff2');unicode-range:U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;
25src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aHdu2ui.woff2) format('woff2');unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5aDdu2ui.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face{font-family:'Noto Sans';font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(https://fonts.gstatic.com/s/notosans/v42/o-0bIpQlx3QUlC5A4PNB6Ryti20_6n1iPHjc5a7duw.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style> 26 27 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, viewport-fit=cover, user-scalable=no"> 28 29 <link rel="manifest" href="manifest.webmanifest"> 30 <meta name="theme-color" content="#317EFB"> 31 32 <!-- Apple PWA Meta Tags --> 33 <meta name="apple-mobile-web-app-capable" content="yes"> 34 <meta name="apple-mobile-web-app-title" content="SkyHub"> 35 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> 36 <link rel="apple-touch-icon" href="apple-touch-icon.png"> 37 <link rel="apple-touch-icon" sizes="152x152" href="assets/icons/icon-152x152.png"> 38 <link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png"> 39 <link rel="apple-touch-icon" sizes="167x167" href="apple-touch-icon.png"> 40 41 <!-- iPhone Splash Screen Images --> 42 <link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)" href="assets/icons/icon-512x512.png"> 43 <link rel="apple-touch-startup-image" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)" href="assets/icons/icon-512x512.png"> 44 <link rel="apple-touch-startup-image" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)" href="assets/icons/icon-512x512.png"> 45 46 <!-- Essential Meta Tags --> 47 <meta property="og:title" content="SkyHub â Drone Fleet Management & Mission Control Platform"> 48 <meta property="og:type" content="website"> 49 <meta property="og:site_name" content="SkyHub"> 50 <meta property="og:image" content="https://skyhub.ai/assets/logo/logo-landing-page-light.png"> 51 <meta property="og:url" content="https://skyhub.ai/"> 52 <meta property="og:description" content="Fly your entire drone fleet from one screen. SkyHub gives you live positions, sub-second video and mission control for every aircraft you own â whoever made it. Works with any ArduPilot, PX4 or MAVLink vehicle, in the cloud or on your own hardware."> 53 <meta name="twitter:card" content="summary_large_image"> 54 <meta name="twitter:domain" content="skyhub.ai"> 55 <meta name="twitter:url" content="https://skyhub.ai/"> 56 <meta name="twitter:title" content="SkyHub â Drone Fleet Management & Mission Control Platform"> 57 <meta name="twitter:description" content="Fly your entire drone fleet from one screen. SkyHub gives you live positions, sub-second video and mission control for every aircraft you own â whoever made it. Works with any ArduPilot, PX4 or MAVLink vehicle, in the cloud or on your own hardware."> 58 <meta name="twitter:image" content="https://skyhub.ai/assets/logo/logo-landing-page-light.png"> 59 <!-- Removed 'adapter.min.js' script as it's no longer needed --> 60 <style>body{margin:0;padding:0}:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-solid:normal 900 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}.w-full{width:100%!important}@font-face{font-family:primeicons;font-display:block;src:url("./media/primeicons-RSSEDYLY.eot");src:url("./media/primeicons-RSSEDYLY.eot?#iefix") format("embedded-opentype"),url("./media/primeicons-4GST5W3O.woff2") format("woff2"),url("./media/primeicons-P53SE5CV.woff") format("woff"),url("./media/primeicons-GEFHGEHP.ttf") format("truetype"),url("./media/primeicons-DHQU4SEP.svg?#primeicons") format("svg");font-weight:400;font-style:normal}.pi{font-family:primeicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pi:before{--webkit-backface-visibility:hidden;backface-visibility:hidden}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.pi-expand:before{content:"\ea0a"}.pi-code:before{content:"\e9e7"}.pi-server:before{content:"\e9e4"}.pi-bolt:before{content:"\e9db"}.pi-send:before{content:"\e9ca"}.pi-github:before{content:"\e9b5"}.pi-play:before{content:"\e9b3"}.pi-volume-off:before{content:"\e978"}.pi-video:before{content:"\e962"}.pi-lock:before{content:"\e95f"}.pi-chevron-down:before{content:"\e902"}.pi-bars:before{content:"\e91d"}html,body{height:100%;margin:0}:root{font-family:Poppins,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";font-variation-settings:normal;--font-family:"Poppins", sans-serif;--font-feature-settings: "cv02","cv03","cv04","cv11";--surface-a:#ffffff;--surface-b:#f9fafb;--surface-c:#f3f4f6;--surface-d:#e5e7eb;--surface-e:#ffffff;--surface-f:#ffffff;--text-color:#4b5563;--text-color-secondary:#6b7280;--primary-color:#3b82f6;--primary-color-text:#ffffff;--surface-0: #ffffff;--surface-50: #f9fafb;--surface-100: #f3f4f6;--surface-200: #e5e7eb;--surface-300: #d1d5db;--surface-400: #9ca3af;--surface-500: #6b7280;--surface-600: #4b5563;--surface-700: #374151;--surface-800: #1f2937;--surface-900: #111827;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--content-padding:1.25rem;
60--inline-spacing:.5rem;--border-radius:6px;--surface-ground:#f9fafb;--surface-section:#ffffff;--surface-card:#ffffff;--surface-overlay:#ffffff;--surface-border:#dfe7ef;--surface-hover:#f6f9fc;--focus-ring: 0 0 0 .2rem #bfdbfe;--maskbg: rgba(0, 0, 0, .4);--highlight-bg: #eff6ff;--highlight-text-color: #1d4ed8;color-scheme:light;--transition-duration: .2s}:root{--blue-50:#f5f9ff;--blue-100:#d0e1fd;--blue-200:#abc9fb;--blue-300:#85b2f9;--blue-400:#609af8;--blue-500:#3b82f6;--blue-600:#326fd1;--blue-700:#295bac;--blue-800:#204887;--blue-900:#183462;--green-50:#f4fcf7;--green-100:#caf1d8;--green-200:#a0e6ba;--green-300:#76db9b;--green-400:#4cd07d;--green-500:#22c55e;--green-600:#1da750;--green-700:#188a42;--green-800:#136c34;--green-900:#0e4f26;--yellow-50:#fefbf3;--yellow-100:#faedc4;--yellow-200:#f6de95;--yellow-300:#f2d066;--yellow-400:#eec137;--yellow-500:#eab308;--yellow-600:#c79807;--yellow-700:#a47d06;--yellow-800:#816204;--yellow-900:#5e4803;--cyan-50:#f3fbfd;--cyan-100:#c3edf5;--cyan-200:#94e0ed;--cyan-300:#65d2e4;--cyan-400:#35c4dc;--cyan-500:#06b6d4;--cyan-600:#059bb4;--cyan-700:#047f94;--cyan-800:#036475;--cyan-900:#024955;--pink-50:#fef6fa;--pink-100:#fad3e7;--pink-200:#f7b0d3;--pink-300:#f38ec0;--pink-400:#f06bac;--pink-500:#ec4899;--pink-600:#c93d82;--pink-700:#a5326b;--pink-800:#822854;--pink-900:#5e1d3d;--indigo-50:#f7f7fe;--indigo-100:#dadafc;--indigo-200:#bcbdf9;--indigo-300:#9ea0f6;--indigo-400:#8183f4;--indigo-500:#6366f1;--indigo-600:#5457cd;--indigo-700:#4547a9;--indigo-800:#363885;--indigo-900:#282960;--teal-50:#f3fbfb;--teal-100:#c7eeea;--teal-200:#9ae0d9;--teal-300:#6dd3c8;--teal-400:#41c5b7;--teal-500:#14b8a6;--teal-600:#119c8d;--teal-700:#0e8174;--teal-800:#0b655b;--teal-900:#084a42;--orange-50:#fff8f3;--orange-100:#feddc7;--orange-200:#fcc39b;--orange-300:#fba86f;--orange-400:#fa8e42;--orange-500:#f97316;--orange-600:#d46213;--orange-700:#ae510f;--orange-800:#893f0c;--orange-900:#642e09;--bluegray-50:#f7f8f9;--bluegray-100:#dadee3;--bluegray-200:#bcc3cd;--bluegray-300:#9fa9b7;--bluegray-400:#818ea1;--bluegray-500:#64748b;--bluegray-600:#556376;--bluegray-700:#465161;--bluegray-800:#37404c;--bluegray-900:#282e38;--purple-50:#fbf7ff;--purple-100:#ead6fd;--purple-200:#dab6fc;--purple-300:#c996fa;--purple-400:#b975f9;--purple-500:#a855f7;--purple-600:#8f48d2;--purple-700:#763cad;--purple-800:#5c2f88;--purple-900:#432263;--red-50:#fff5f5;--red-100:#ffd0ce;--red-200:#ffaca7;--red-300:#ff8780;--red-400:#ff6259;--red-500:#ff3d32;--red-600:#d9342b;--red-700:#b32b23;--red-800:#8c221c;--red-900:#661814;--primary-50:#f5f9ff;--primary-100:#d0e1fd;--primary-200:#abc9fb;--primary-300:#85b2f9;--primary-400:#609af8;--primary-500:#3b82f6;--primary-600:#326fd1;--primary-700:#295bac;--primary-800:#204887;--primary-900:#183462}:root{--primary-color-dark: #326fd1}@font-face{font-family:Poppins;font-style:normal;font-weight:400;src:local(""),url("./media/poppins-v20-latin-regular-SFWTNBQB.woff2") format("woff2"),url("./media/poppins-v20-latin-regular-ZR5CB7OR.woff") format("woff")}@font-face{font-family:Poppins;font-style:normal;font-weight:500;src:local(""),url("./media/poppins-v20-latin-500-O53RGPUQ.woff2") format("woff2"),url("./media/poppins-v20-latin-500-YRYLPXD2.woff") format("woff")}@font-face{font-family:Poppins;font-style:normal;font-weight:600;src:local(""),url("./media/poppins-v20-latin-600-3BUSBBSI.woff2") format("woff2"),url("./media/poppins-v20-latin-600-XTELBDC5.woff") format("woff")}@font-face{font-family:Poppins;font-style:normal;font-weight:700;src:local(""),url("./media/poppins-v20-latin-700-TKEB4KWA.woff2") format("woff2"),url("./media/poppins-v20-latin-700-TPSPUBSN.woff") format("woff")}*{box-sizing:border-box}html{height:100%;font-size:16px}body{font-weight:400;padding:0;margin:0;min-height:100%;background:var(--surface-ground);color:var(--text-color);font-family:var(--font-family);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}h1,h2,h3,h4{margin:1.5rem 0 1rem;font-family:inherit;font-weight:600;line-height:1.2;color:var(--surface-900)}h1:first-child,h2:first-child,h3:first-child,h4:first-child{margin-top:0}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}p{margin:0 0 1rem;line-height:1.5}p:last-child{margin-bottom:0}.p-toast.p-toast-top-right{top:70px}.p-toast.p-toast-top-right{top:10px}.p-toast{left:0;margin:0 auto}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}} 61</style><link rel="stylesheet" href="styles-WNJ2VTMW.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-WNJ2VTMW.css"></noscript><style ng-app-id="ng">[_nghost-ng-c1303987019] p-table .p-datatable-thead>tr>th:last-child{text-align:right!important}@media(max-width:999px){[_nghost-ng-c1303987019] .p-dialog.small-dialog{padding:0!important;margin:0!important}}[_nghost-ng-c1303987019] .p-datatable .p-datatable-thead>tr>th{font-weight:400}[_nghost-ng-c1303987019] .p-dialog .p-dialog-header{padding:10px 1rem}[_nghost-ng-c1303987019] .p-dialog{width:60vw}@media(min-width:1000px){[_nghost-ng-c1303987019] .p-dialog.small-dialog{width:400px!important}[_nghost-ng-c1303987019] .p-dialog.medium-dialog{width:800px!important}}[_nghost-ng-c1303987019] .p-paginator-element{background:#fff;color:#007bff}.text-right[_ngcontent-ng-c1303987019]{text-align:right}.text-center[_ngcontent-ng-c1303987019]{text-align:center}.text-left[_ngcontent-ng-c1303987019]{text-align:left}
61.main-progress-bar[_ngcontent-ng-c1303987019]{position:fixed;top:0;left:0;width:100%;z-index:1101}</style><style type="text/css" data-primeng-style-id="primitive-variables">:root,:host{--p-stone-50:#fafaf9;--p-stone-100:#f5f5f4;--p-stone-200:#e7e5e4;--p-stone-300:#d6d3d1;--p-stone-400:#a8a29e;--p-stone-500:#78716c;--p-stone-600:#57534e;--p-stone-700:#44403c;--p-stone-800:#292524;--p-stone-900:#1c1917;--p-stone-950:#0c0a09;--p-neutral-50:#fafafa;--p-neutral-100:#f5f5f5;--p-neutral-200:#e5e5e5;--p-neutral-300:#d4d4d4;--p-neutral-400:#a3a3a3;--p-neutral-500:#737373;--p-neutral-600:#525252;--p-neutral-700:#404040;--p-neutral-800:#262626;--p-neutral-900:#171717;--p-neutral-950:#0a0a0a;--p-zinc-50:#fafafa;--p-zinc-100:#f4f4f5;--p-zinc-200:#e4e4e7;--p-zinc-300:#d4d4d8;--p-zinc-400:#a1a1aa;--p-zinc-500:#71717a;--p-zinc-600:#52525b;--p-zinc-700:#3f3f46;--p-zinc-800:#27272a;--p-zinc-900:#18181b;--p-zinc-950:#09090b;--p-gray-50:#f9fafb;--p-gray-100:#f3f4f6;--p-gray-200:#e5e7eb;--p-gray-300:#d1d5db;--p-gray-400:#9ca3af;--p-gray-500:#6b7280;--p-gray-600:#4b5563;--p-gray-700:#374151;--p-gray-800:#1f2937;--p-gray-900:#111827;--p-gray-950:#030712;--p-slate-50:#f8fafc;--p-slate-100:#f1f5f9;--p-slate-200:#e2e8f0;--p-slate-300:#cbd5e1;--p-slate-400:#94a3b8;--p-slate-500:#64748b;--p-slate-600:#475569;--p-slate-700:#334155;--p-slate-800:#1e293b;--p-slate-900:#0f172a;--p-slate-950:#020617;--p-rose-50:#fff1f2;--p-rose-100:#ffe4e6;--p-rose-200:#fecdd3;--p-rose-300:#fda4af;--p-rose-400:#fb7185;--p-rose-500:#f43f5e;--p-rose-600:#e11d48;--p-rose-700:#be123c;--p-rose-800:#9f1239;--p-rose-900:#881337;--p-rose-950:#4c0519;--p-pink-50:#fdf2f8;--p-pink-100:#fce7f3;--p-pink-200:#fbcfe8;--p-pink-300:#f9a8d4;--p-pink-400:#f472b6;--p-pink-500:#ec4899;--p-pink-600:#db2777;--p-pink-700:#be185d;--p-pink-800:#9d174d;--p-pink-900:#831843;--p-pink-950:#500724;--p-fuchsia-50:#fdf4ff;--p-fuchsia-100:#fae8ff;--p-fuchsia-200:#f5d0fe;--p-fuchsia-300:#f0abfc;--p-fuchsia-400:#e879f9;--p-fuchsia-500:#d946ef;--p-fuchsia-600:#c026d3;--p-fuchsia-700:#a21caf;--p-fuchsia-800:#86198f;--p-fuchsia-900:#701a75;--p-fuchsia-950:#4a044e;--p-purple-50:#faf5ff;--p-purple-100:#f3e8ff;--p-purple-200:#e9d5ff;--p-purple-300:#d8b4fe;--p-purple-400:#c084fc;--p-purple-500:#a855f7;--p-purple-600:#9333ea;--p-purple-700:#7e22ce;--p-purple-800:#6b21a8;--p-purple-900:#581c87;--p-purple-950:#3b0764;--p-violet-50:#f5f3ff;--p-violet-100:#ede9fe;--p-violet-200:#ddd6fe;--p-violet-300:#c4b5fd;--p-violet-400:#a78bfa;--p-violet-500:#8b5cf6;--p-violet-600:#7c3aed;--p-violet-700:#6d28d9;--p-violet-800:#5b21b6;--p-violet-900:#4c1d95;
61--p-violet-950:#2e1065;--p-indigo-50:#eef2ff;--p-indigo-100:#e0e7ff;--p-indigo-200:#c7d2fe;--p-indigo-300:#a5b4fc;--p-indigo-400:#818cf8;--p-indigo-500:#6366f1;--p-indigo-600:#4f46e5;--p-indigo-700:#4338ca;--p-indigo-800:#3730a3;--p-indigo-900:#312e81;--p-indigo-950:#1e1b4b;--p-blue-50:#eff6ff;--p-blue-100:#dbeafe;--p-blue-200:#bfdbfe;--p-blue-300:#93c5fd;--p-blue-400:#60a5fa;--p-blue-500:#3b82f6;--p-blue-600:#2563eb;--p-blue-700:#1d4ed8;--p-blue-800:#1e40af;--p-blue-900:#1e3a8a;--p-blue-950:#172554;--p-sky-50:#f0f9ff;--p-sky-100:#e0f2fe;--p-sky-200:#bae6fd;--p-sky-300:#7dd3fc;--p-sky-400:#38bdf8;--p-sky-500:#0ea5e9;--p-sky-600:#0284c7;--p-sky-700:#0369a1;--p-sky-800:#075985;--p-sky-900:#0c4a6e;--p-sky-950:#082f49;--p-cyan-50:#ecfeff;--p-cyan-100:#cffafe;--p-cyan-200:#a5f3fc;--p-cyan-300:#67e8f9;--p-cyan-400:#22d3ee;--p-cyan-500:#06b6d4;--p-cyan-600:#0891b2;--p-cyan-700:#0e7490;--p-cyan-800:#155e75;--p-cyan-900:#164e63;--p-cyan-950:#083344;--p-teal-50:#f0fdfa;--p-teal-100:#ccfbf1;--p-teal-200:#99f6e4;--p-teal-300:#5eead4;--p-teal-400:#2dd4bf;--p-teal-500:#14b8a6;--p-teal-600:#0d9488;--p-teal-700:#0f766e;--p-teal-800:#115e59;--p-teal-900:#134e4a;--p-teal-950:#042f2e;--p-yellow-50:#fefce8;--p-yellow-100:#fef9c3;--p-yellow-200:#fef08a;--p-yellow-300:#fde047;--p-yellow-400:#facc15;--p-yellow-500:#eab308;--p-yellow-600:#ca8a04;--p-yellow-700:#a16207;--p-yellow-800:#854d0e;--p-yellow-900:#713f12;--p-yellow-950:#422006;--p-amber-50:#fffbeb;--p-amber-100:#fef3c7;--p-amber-200:#fde68a;--p-amber-300:#fcd34d;--p-amber-400:#fbbf24;--p-amber-500:#f59e0b;--p-amber-600:#d97706;--p-amber-700:#b45309;--p-amber-800:#92400e;--p-amber-900:#78350f;--p-amber-950:#451a03;--p-orange-50:#fff7ed;--p-orange-100:#ffedd5;--p-orange-200:#fed7aa;--p-orange-300:#fdba74;--p-orange-400:#fb923c;--p-orange-500:#f97316;--p-orange-600:#ea580c;--p-orange-700:#c2410c;--p-orange-800:#9a3412;--p-orange-900:#7c2d12;--p-orange-950:#431407;--p-red-50:#fef2f2;--p-red-100:#fee2e2;--p-red-200:#fecaca;--p-red-300:#fca5a5;--p-red-400:#f87171;--p-red-500:#ef4444;--p-red-600:#dc2626;--p-red-700:#b91c1c;--p-red-800:#991b1b;--p-red-900:#7f1d1d;--p-red-950:#450a0a;--p-lime-50:#f7fee7;--p-lime-100:#ecfccb;--p-lime-200:#d9f99d;--p-lime-300:#bef264;--p-lime-400:#a3e635;--p-lime-500:#84cc16;--p-lime-600:#65a30d;--p-lime-700:#4d7c0f;--p-lime-800:#3f6212;--p-lime-900:#365314;--p-lime-950:#1a2e05;--p-green-50:#f0fdf4;--p-green-100:#dcfce7;--p-green-200:#bbf7d0;--p-green-300:#86efac;--p-green-400:#4ade80;--p-green-500:#22c55e;--p-green-600:#16a34a;--p-green-700:#15803d;--p-green-800:#166534;--p-green-900:#14532d;--p-green-950:#052e16;--p-emerald-50:#ecfdf5;--p-emerald-100:#d1fae5;--p-emerald-200:#a7f3d0;--p-emerald-300:#6ee7b7;--p-emerald-400:#34d399;--p-emerald-500:#10b981;--p-emerald-600:#059669;--p-emerald-700:#047857;--p-emerald-800:#065f46;--p-emerald-900:#064e3b;--p-emerald-950:#022c22;--p-border-radius-none:0;--p-border-radius-xs:2px;--p-border-radius-sm:4px;--p-border-radius-md:6px;--p-border-radius-lg:8px;--p-border-radius-xl:12px;}</style><style type="text/css" data-primeng-style-id="semantic-variables">:root,:host{--p-transition-duration:0.2s;--p-disabled-opacity:0.6;--p-icon-size:0.875rem;--p-anchor-gutter:2px;--p-text-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-text-hover-color:light-dark(var(--p-surface-800),var(--p-surface-0));--p-text-muted-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-text-hover-muted-color:light-dark(var(--p-surface-600),var(--p-surface-300));--p-highlight-background:light-dark(var(--p-primary-50),color-mix(in srgb,var(--p-primary-400),transparent 84%));--p-highlight-focus-background:light-dark(var(--p-primary-100),color-mix(in srgb,var(--p-primary-400),transparent 76%));--p-highlight-color:light-dark(var(--p-primary-700),rgba(255,255,255,.87));--p-highlight-focus-color:light-dark(var(--p-primary-800),rgba(255,255,255,.87));--p-surface-0:#ffffff;--p-surface-50:light-dark(var(--p-slate-50),var(--p-zinc-50));--p-surface-100:light-dark(var(--p-slate-100),var(--p-zinc-100));--p-surface-200:light-dark(var(--p-slate-200),var(--p-zinc-200));--p-surface-300:light-dark(var(--p-slate-300),var(--p-zinc-300));--p-surface-400:light-dark(var(--p-slate-400),var(--p-zinc-400));--p-surface-500:light-dark(var(--p-slate-500),var(--p-zinc-500));--p-surface-600:light-dark(var(--p-slate-600),var(--p-zinc-600));--p-surface-700:light-dark(var(--p-slate-700),var(--p-zinc-700));--p-surface-800:light-dark(var(--p-slate-800),var(--p-zinc-800));--p-surface-900:light-dark(var(--p-slate-900),var(--p-zinc-900));--p-surface-950:light-dark(var(--p-slate-950),var(--p-zinc-950));--p-overlay-navigation-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -2px rgba(0,0,0,0.1);--p-overlay-modal-border-radius:var(--p-border-radius-xl);--p-overlay-modal-padding:1.125rem;--p-overlay-modal-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 8px 10px -6px rgba(0,0,0,0.1);--p-overlay-modal-background:light-dark(var(--p-surface-0),var(--p-surface-900));--p-overlay-modal-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-overlay-modal-color:var(--p-text-color);--p-overlay-popover-border-radius:var(--p-border-radius-md);--p-overlay-popover-padding:0.625rem;--p-overlay-popover-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -2px rgba(0,0,0,0.1);--p-overlay-popover-background:light-dark(var(--p-surface-0),var(--p-surface-900));--p-overlay-popover-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-overlay-popover-color:var(--p-text-color);--p-overlay-select-border-radius:var(--p-border-radius-md);--p-overlay-select-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -2px rgba(0,0,0,0.1);--p-overlay-select-background:light-dark(var(--p-surface-0),var(--p-surface-900));--p-overlay-select-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-overlay-select-color:var(--p-text-color);--p-navigation-submenu-icon-size:0.75rem;--p-navigation-submenu-icon-color:light-dark(var(--p-surface-400),var(--p-surface-500));
61--p-navigation-submenu-icon-focus-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-navigation-submenu-icon-active-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-navigation-submenu-label-padding:0.25rem 0.625rem;--p-navigation-submenu-label-font-weight:600;--p-navigation-submenu-label-font-size:var(--p-typography-font-size);--p-navigation-submenu-label-background:transparent;--p-navigation-submenu-label-color:var(--p-text-muted-color);--p-navigation-item-padding:0.25rem 0.625rem;--p-navigation-item-border-radius:var(--p-border-radius-sm);--p-navigation-item-gap:0.5rem;--p-navigation-item-focus-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-navigation-item-active-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-navigation-item-color:var(--p-text-color);--p-navigation-item-focus-color:var(--p-text-hover-color);--p-navigation-item-active-color:var(--p-text-hover-color);--p-navigation-item-transition-duration:0s;--p-navigation-item-label-font-weight:var(--p-typography-font-weight);--p-navigation-item-label-font-size:var(--p-typography-font-size);--p-navigation-item-icon-size:var(--p-icon-size);--p-navigation-item-icon-color:light-dark(var(--p-surface-400),var(--p-surface-500));--p-navigation-item-icon-focus-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-navigation-item-icon-active-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-navigation-list-padding:0.25rem 0.25rem;--p-navigation-list-gap:2px;--p-mask-transition-duration:0.3s;--p-mask-background:light-dark(rgba(0,0,0,0.4),rgba(0,0,0,0.6));--p-mask-color:var(--p-surface-200);--p-content-border-radius:var(--p-border-radius-md);--p-content-background:light-dark(var(--p-surface-0),var(--p-surface-900));--p-content-hover-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-content-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-content-color:var(--p-text-color);--p-content-hover-color:var(--p-text-hover-color);--p-list-padding:0.25rem 0.25rem;--p-list-gap:2px;--p-list-option-group-padding:0.25rem 0.625rem;--p-list-option-group-font-weight:600;--p-list-option-group-font-size:var(--p-typography-font-size);--p-list-option-group-background:transparent;--p-list-option-group-color:var(--p-text-muted-color);--p-list-option-padding:0.25rem 0.625rem;--p-list-option-border-radius:var(--p-border-radius-sm);--p-list-option-font-weight:var(--p-typography-font-weight);--p-list-option-font-size:var(--p-typography-font-size);--p-list-option-transition-duration:0s;--p-list-option-focus-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-list-option-selected-background:var(--p-highlight-background);--p-list-option-selected-focus-background:var(--p-highlight-focus-background);--p-list-option-color:var(--p-text-color);--p-list-option-focus-color:var(--p-text-hover-color);--p-list-option-selected-color:var(--p-highlight-color);--p-list-option-selected-focus-color:var(--p-highlight-focus-color);--p-list-option-selected-font-weight:var(--p-typography-font-weight);--p-list-option-icon-color:light-dark(var(--p-surface-400),var(--p-surface-500));--p-list-option-icon-focus-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-list-header-padding:0.5rem 0.875rem 0.125rem 0.875rem;--p-form-field-font-weight:var(--p-typography-font-weight);--p-form-field-font-size:var(--p-typography-font-size);--p-form-field-padding-x:0.625rem;--p-form-field-padding-y:0.375rem;--p-form-field-border-radius:var(--p-border-radius-md);--p-form-field-transition-duration:var(--p-transition-duration);--p-form-field-background:light-dark(var(--p-surface-0),var(--p-surface-950));--p-form-field-disabled-background:light-dark(var(--p-surface-200),var(--p-surface-700));--p-form-field-filled-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-form-field-filled-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-form-field-filled-focus-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-form-field-border-color:light-dark(var(--p-surface-300),var(--p-surface-600));--p-form-field-hover-border-color:light-dark(var(--p-surface-400),var(--p-surface-500));
61--p-form-field-focus-border-color:var(--p-primary-color);--p-form-field-invalid-border-color:light-dark(var(--p-red-400),var(--p-red-300));--p-form-field-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-form-field-disabled-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-form-field-placeholder-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-form-field-invalid-placeholder-color:light-dark(var(--p-red-600),var(--p-red-400));--p-form-field-float-label-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-form-field-float-label-focus-color:light-dark(var(--p-primary-600),var(--p-primary-color));--p-form-field-float-label-active-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-form-field-float-label-invalid-color:var(--p-form-field-invalid-placeholder-color);--p-form-field-icon-color:var(--p-surface-400);--p-form-field-shadow:0 0 #0000,0 0 #0000,0 1px 2px 0 rgba(18,18,23,0.05);--p-form-field-focus-ring-width:0;--p-form-field-focus-ring-style:none;--p-form-field-focus-ring-color:transparent;--p-form-field-focus-ring-offset:0;--p-form-field-focus-ring-shadow:none;--p-form-field-lg-font-size:1rem;--p-form-field-lg-padding-x:0.75rem;--p-form-field-lg-padding-y:0.5rem;--p-form-field-sm-font-size:0.75rem;--p-form-field-sm-padding-x:0.5rem;--p-form-field-sm-padding-y:0.25rem;--p-primary-50:#f5f9ff;--p-primary-100:#d0e1fd;--p-primary-200:#abc9fb;--p-primary-300:#85b2f9;--p-primary-400:#609af8;--p-primary-500:#3b82f6;--p-primary-600:#326fd1;--p-primary-700:#295bac;--p-primary-800:#204887;--p-primary-900:#183462;--p-primary-950:#0f2547;--p-primary-color:light-dark(var(--p-primary-500),var(--p-primary-400));--p-primary-contrast-color:light-dark(#ffffff,var(--p-surface-900));--p-primary-hover-color:light-dark(var(--p-primary-600),var(--p-primary-300));--p-primary-active-color:light-dark(var(--p-primary-700),var(--p-primary-200));--p-focus-ring-width:1px;--p-focus-ring-style:solid;--p-focus-ring-color:var(--p-primary-color);--p-focus-ring-offset:2px;--p-focus-ring-shadow:none;--p-typography-line-height:1.5;--p-typography-font-family:inherit;--p-typography-font-weight:normal;--p-typography-font-size:0.875rem;}</style><style type="text/css" data-primeng-style-id="global-variables">:root,:host{color-scheme:light}.skyhub-force-dark{color-scheme:dark}</style><style type="text/css" data-primeng-style-id="global-style">*,::before,::after{box-sizing:border-box;}.p-component{font-family:var(--p-typography-font-family);font-feature-settings:inherit;line-height:var(--p-typography-line-height);}.p-collapsible-enter-active{animation:p-animate-collapsible-expand 0.2s ease-out;overflow:hidden;}.p-collapsible-leave-active{animation:p-animate-collapsible-collapse 0.2s ease-out;overflow:hidden;}@keyframes p-animate-collapsible-expand{from{grid-template-rows:0fr;}to{grid-template-rows:1fr;}} @keyframes p-animate-collapsible-collapse{from{grid-template-rows:1fr;}to{grid-template-rows:0fr;}} .p-disabled,.p-disabled *{cursor:default;pointer-events:none;user-select:none;}.p-disabled,.p-component:disabled{opacity:var(--p-disabled-opacity);}.pi{font-size:var(--p-icon-size);}.p-icon{width:var(--px-icon-size,var(--p-icon-size));height:var(--px-icon-size,var(--p-icon-size));flex-shrink:0;}.p-icon-spin{-webkit-animation:p-icon-spin 2s infinite linear;animation:p-icon-spin 2s infinite linear;}@-webkit-keyframes p-icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}} @keyframes p-icon-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg);}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg);}} .p-overlay-mask{background:var(--px-mask-background,var(--p-mask-background));color:var(--p-mask-color);position:fixed;top:0;left:0;width:100%;height:100%;}.p-overlay-mask-enter-active{animation:p-animate-overlay-mask-enter var(--p-mask-transition-duration) forwards;}.p-overlay-mask-leave-active{animation:p-animate-overlay-mask-leave var(--p-mask-transition-duration) forwards;}@keyframes p-animate-overlay-mask-enter{from{background:transparent;}to{background:var(--px-mask-background,var(--p-mask-background));}} @keyframes p-animate-overlay-mask-leave{from{background:var(--px-mask-background,var(--p-mask-background));}to{background:transparent;}} .p-anchored-overlay-enter-active{animation:p-animate-anchored-overlay-enter 300ms cubic-bezier(.19,1,.22,1);}.p-anchored-overlay-leave-active{animation:p-animate-anchored-overlay-leave 300ms cubic-bezier(.19,1,.22,1);}@keyframes p-animate-anchored-overlay-enter{from{opacity:0;transform:scale(0.93);}} @keyframes p-animate-anchored-overlay-leave{to{opacity:0;transform:scale(0.93);}}</style><style type="text/css" data-primeng-style-id="base">.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0);}.p-overflow-hidden{overflow:hidden;padding-right:var(--p-scrollbar-width);}</style><style type="text/css" data-primeng-style-id="toast-variables">:root,:host{--p-toast-contrast-background:light-dark(var(--p-surface-900),var(--p-surface-0));--p-toast-contrast-border-color:light-dark(var(--p-surface-950),var(--p-surface-100));--p-toast-contrast-color:light-dark(var(--p-surface-50),var(--p-surface-950));--p-toast-contrast-detail-color:light-dark(var(--p-surface-0),var(--p-surface-950));--p-toast-contrast-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-surface-950),transparent 96%);--p-toast-contrast-close-button-hover-background:light-dark(var(--p-surface-800),var(--p-surface-100));--p-toast-contrast-close-button-focus-ring-color:light-dark(var(--p-surface-50),var(--p-surface-950));--p-toast-contrast-close-button-focus-ring-shadow:none;--p-toast-secondary-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-toast-secondary-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-toast-secondary-color:light-dark(var(--p-surface-600),var(--p-surface-300));--p-toast-secondary-detail-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-toast-secondary-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-surface-500),transparent 96%);--p-toast-secondary-close-button-hover-background:light-dark(var(--p-surface-200),var(--p-surface-700));--p-toast-secondary-close-button-focus-ring-color:light-dark(var(--p-surface-600),var(--p-surface-300));--p-toast-secondary-close-button-focus-ring-shadow:none;--p-toast-error-background:light-dark(color-mix(in srgb,var(--p-red-50),transparent 5%),color-mix(in srgb,var(--p-red-500),transparent 84%));--p-toast-error-border-color:light-dark(var(--p-red-200),color-mix(in srgb,var(--p-red-700),transparent 64%));--p-toast-error-color:light-dark(var(--p-red-600),var(--p-red-500));--p-toast-error-detail-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-toast-error-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-red-500),transparent 96%);--p-toast-error-close-button-hover-background:light-dark(var(--p-red-100),rgba(255,255,255,0.05)
61);--p-toast-error-close-button-focus-ring-color:light-dark(var(--p-red-600),var(--p-red-500));--p-toast-error-close-button-focus-ring-shadow:none;--p-toast-warn-background:light-dark(color-mix(in srgb,var(--p-yellow-50),transparent 5%),color-mix(in srgb,var(--p-yellow-500),transparent 84%));--p-toast-warn-border-color:light-dark(var(--p-yellow-200),color-mix(in srgb,var(--p-yellow-700),transparent 64%));--p-toast-warn-color:light-dark(var(--p-yellow-600),var(--p-yellow-500));--p-toast-warn-detail-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-toast-warn-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-yellow-500),transparent 96%);--p-toast-warn-close-button-hover-background:light-dark(var(--p-yellow-100),rgba(255,255,255,0.05));--p-toast-warn-close-button-focus-ring-color:light-dark(var(--p-yellow-600),var(--p-yellow-500));--p-toast-warn-close-button-focus-ring-shadow:none;--p-toast-success-background:light-dark(color-mix(in srgb,var(--p-green-50),transparent 5%),color-mix(in srgb,var(--p-green-500),transparent 84%));--p-toast-success-border-color:light-dark(var(--p-green-200),color-mix(in srgb,var(--p-green-700),transparent 64%));--p-toast-success-color:light-dark(var(--p-green-600),var(--p-green-500));--p-toast-success-detail-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-toast-success-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-green-500),transparent 96%);--p-toast-success-close-button-hover-background:light-dark(var(--p-green-100),rgba(255,255,255,0.05));--p-toast-success-close-button-focus-ring-color:light-dark(var(--p-green-600),var(--p-green-500));--p-toast-success-close-button-focus-ring-shadow:none;--p-toast-info-background:light-dark(color-mix(in srgb,var(--p-blue-50),transparent 5%),color-mix(in srgb,var(--p-blue-500),transparent 84%));--p-toast-info-border-color:light-dark(var(--p-blue-200),color-mix(in srgb,var(--p-blue-700),transparent 64%));--p-toast-info-color:light-dark(var(--p-blue-600),var(--p-blue-500));--p-toast-info-detail-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-toast-info-shadow:0px 4px 8px 0px color-mix(in srgb,var(--p-blue-500),transparent 96%);--p-toast-info-close-button-hover-background:light-dark(var(--p-blue-100),rgba(255,255,255,0.05));--p-toast-info-close-button-focus-ring-color:light-dark(var(--p-blue-600),var(--p-blue-500));--p-toast-info-close-button-focus-ring-shadow:none;--p-toast-normal-background:var(--p-content-background);--p-toast-normal-border-color:var(--p-content-border-color);--p-toast-normal-color:var(--p-text-color);--p-toast-normal-detail-color:var(--p-text-muted-color);--p-toast-normal-shadow:var(--p-overlay-popover-shadow);--p-toast-normal-close-button-hover-background:var(--p-content-hover-background);--p-toast-normal-close-button-focus-ring-color:var(--p-focus-ring-color);--p-toast-normal-close-button-focus-ring-shadow:none;--p-toast-close-icon-size:0.875rem;--p-toast-close-button-width:1.5rem;--p-toast-close-button-height:1.5rem;--p-toast-close-button-border-radius:50%;--p-toast-close-button-focus-ring-width:var(--p-focus-ring-width);--p-toast-close-button-focus-ring-style:var(--p-focus-ring-style);--p-toast-close-button-focus-ring-offset:var(--p-focus-ring-offset);--p-toast-detail-font-weight:500;--p-toast-detail-font-size:0.75rem;--p-toast-summary-font-weight:500;--p-toast-summary-font-size:var(--p-typography-font-size);--p-toast-text-gap:0.25rem;--p-toast-content-padding:var(--p-overlay-popover-padding);--p-toast-content-gap:0.5rem;--p-toast-icon-size:1rem;--p-toast-icon-margin:1px 0 0 0;--p-toast-width:22rem;--p-toast-border-radius:var(--p-content-border-radius);--p-toast-border-width:1px;--p-toast-transition-duration:0.3s;--p-toast-blur:10px;--p-toast-focus-ring-width:var(--p-focus-ring-width);--p-toast-focus-ring-style:var(--p-focus-ring-style);--p-toast-focus-ring-color:var(--p-focus-ring-color);--p-toast-focus-ring-offset:var(--p-focus-ring-offset);--p-toast-focus-ring-shadow:var(--p-focus-ring-shadow);}</style><style type="text/css" data-primeng-style-id="toast-style">.p-toast{width:var(--p-toast-width);white-space:pre-line;word-break:break-word;}.p-toast-message{--px-offset-y:calc(var(--px-swipe-amount-y) + (var(--px-toast-offset) + var(--px-toast-index) * var(--px-gap)) * var(--px-raise-factor));--px-offset-x:var(--px-swipe-amount-x);width:100%;outline:none;position:absolute;touch-action:none;opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc(100% * var(--px-raise-factor) * -1));z-index:var(--px-toast-z-index);transition:transform var(--p-toast-transition-duration),opacity var(--p-toast-transition-duration),height var(--p-toast-transition-duration);}.p-toast-message:focus-visible{box-shadow:var(--p-toast-focus-ring-shadow);outline:var(--p-toast-focus-ring-width) var(--p-toast-focus-ring-style) var(--p-focus-ring-color);outline-offset:var(--p-toast-focus-ring-offset);}.p-toast-message[data-mounted]{opacity:1;transform:translateY(0);}
61.p-toast-message:not([data-expanded]):not([data-front]){overflow:hidden;height:var(--px-front-toast-height);transform:translateX(var(--px-offset-x)) translateY(calc(var(--px-raise-factor) * var(--px-toast-index) * var(--px-gap))) scale(calc(var(--px-toast-index) * -0.05 + 1));}.p-toast-message[data-mounted][data-expanded]{height:var(--px-initial-height);transform:translateX(var(--px-offset-x)) translateY(var(--px-offset-y));}.p-toast-message[data-expanded]::after{content:"";position:absolute;left:0;height:calc(var(--px-gap) + 1px);width:100%;bottom:100%;}.p-toast-message:not([data-visible]){opacity:0;pointer-events:none;user-select:none;}.p-toast-message[data-removed][data-front]:not([data-swipe-out]){opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc(var(--px-raise-factor) * -100%));}.p-toast-message[data-removed]:not([data-front]):not([data-swipe-out])[data-expanded]{opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc((var(--px-offset-y)) + (var(--px-raise-factor) * -100%)));}.p-toast-message[data-removed]:not([data-front]):not([data-swipe-out]):not([data-expanded]){opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc(var(--px-raise-factor) * 40% * -1));transition:transform 500ms,opacity 200ms;}.p-toast-message[data-swiping]{transition:none;transform:translateX(var(--px-offset-x)) translateY(var(--px-offset-y))!important;}.p-toast-message[data-swiped]{-webkit-user-select:none;user-select:none;}.p-toast-message[data-swipe-out][data-swipe-direction="up"]{opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc(var(--px-offset-y) - 100%))!important;}.p-toast-message[data-swipe-out][data-swipe-direction="down"]{opacity:0;transform:translateX(var(--px-offset-x)) translateY(calc(var(--px-offset-y) + 100%))!important;}.p-toast-message[data-swipe-out][data-swipe-direction="left"]{opacity:0;transform:translateX(calc(var(--px-offset-x) - 100%)) translateY(var(--px-offset-y))!important;}.p-toast-message[data-swipe-out][data-swipe-direction="right"]{opacity:0;transform:translateX(calc(var(--px-offset-x) + 100%)) translateY(var(--px-offset-y))!important;transition:transform 500ms,opacity 200ms;}.p-toast-message-icon,.p-toast-message-icon svg,.p-toast-message-icon i{flex-shrink:0;font-size:var(--p-toast-icon-size);width:var(--p-toast-icon-size);height:var(--p-toast-icon-size);margin:var(--p-toast-icon-margin);}.p-toast-message-content{display:flex;align-items:flex-start;padding:var(--p-toast-content-padding);gap:var(--p-toast-content-gap);min-height:0;overflow:hidden;transition:padding 250ms ease-in;}.p-toast-message-text{flex:1 1 auto;display:flex;flex-direction:column;gap:var(--p-toast-text-gap);}.p-toast-summary{font-weight:var(--p-toast-summary-font-weight);font-size:var(--p-toast-summary-font-size);}.p-toast-detail{font-weight:var(--p-toast-detail-font-weight);font-size:var(--p-toast-detail-font-size);}.p-toast-close-button{display:flex;align-items:center;justify-content:center;overflow:hidden;position:absolute;cursor:pointer;background:transparent;transition:background var(--p-toast-transition-duration),color var(--p-toast-transition-duration),outline-color var(--p-toast-transition-duration),box-shadow var(--p-toast-transition-duration);outline-color:transparent;color:inherit;width:var(--p-toast-close-button-width);height:var(--p-toast-close-button-height);border-radius:var(--p-toast-close-button-border-radius);margin:0;top:0.25rem;right:0.25rem;padding:0;border:none;user-select:none;}.p-toast-close-button:dir(rtl){left:0.25rem;right:auto;}.p-toast-message-normal,.p-toast-message-info,.p-toast-message-success,.p-toast-message-warn,.p-toast-message-error,.p-toast-message-secondary,.p-toast-message-contrast{border-width:var(--p-toast-border-width);border-style:solid;backdrop-filter:blur(var(--p-toast-blur));border-radius:var(--p-toast-border-radius);}.p-toast-close-icon,.p-toast-close-icon svg,.p-toast-close-icon i{font-size:var(--p-toast-close-icon-size);width:var(--p-toast-close-icon-size);height:var(--p-toast-close-icon-size);}.p-toast-close-button:focus-visible{outline-width:var(--p-focus-ring-width);outline-style:var(--p-focus-ring-style);outline-offset:var(--p-focus-ring-offset);}.p-toast-message-normal{background:var(--p-toast-normal-background);border-color:var(--p-toast-normal-border-color);color:var(--p-toast-normal-color);box-shadow:var(--p-toast-normal-shadow);}.p-toast-message-normal .p-toast-detail{color:var(--p-toast-normal-detail-color);}.p-toast-message-normal .p-toast-close-button:focus-visible{outline-color:var(--p-toast-normal-close-button-focus-ring-color);box-shadow:var(--p-toast-normal-close-button-focus-ring-shadow);}.p-toast-message-normal .p-toast-close-button:hover{background:var(--p-toast-normal-close-button-hover-background);}.p-toast-message-info{background:var(--p-toast-info-background);border-color:var(--p-toast-info-border-color);color:var(--p-toast-info-color);box-shadow:var(--p-toast-info-shadow);}.p-toast-message-info .p-toast-detail{color:var(--p-toast-info-detail-color);}.p-toast-message-info .p-toast-close-button:focus-visible{outline-color:var(--p-toast-info-close-button-focus-ring-color);box-shadow:var(--p-toast-info-close-button-focus-ring-shadow);}.p-toast-message-info .p-toast-close-button:hover{background:var(--p-toast-info-close-button-hover-background);}.p-toast-message-success{background:var(--p-toast-success-background);border-color:var(--p-toast-success-border-color);color:var(--p-toast-success-color);box-shadow:var(--p-toast-success-shadow);}.p-toast-message-success .p-toast-detail{color:var(--p-toast-success-detail-color);}.p-toast-message-success .p-toast-close-button:focus-visible{outline-color:var(--p-toast-success-close-button-focus-ring-color);box-shadow:var(--p-toast-success-close-button-focus-ring-shadow);}.p-toast-message-success .p-toast-close-button:hover{background:var(--p-toast-success-close-button-hover-background);}.p-toast-message-warn{background:var(--p-toast-warn-background);border-color:var(--p-toast-warn-border-color);color:var(--p-toast-warn-color);
61box-shadow:var(--p-toast-warn-shadow);}.p-toast-message-warn .p-toast-detail{color:var(--p-toast-warn-detail-color);}.p-toast-message-warn .p-toast-close-button:focus-visible{outline-color:var(--p-toast-warn-close-button-focus-ring-color);box-shadow:var(--p-toast-warn-close-button-focus-ring-shadow);}.p-toast-message-warn .p-toast-close-button:hover{background:var(--p-toast-warn-close-button-hover-background);}.p-toast-message-error{background:var(--p-toast-error-background);border-color:var(--p-toast-error-border-color);color:var(--p-toast-error-color);box-shadow:var(--p-toast-error-shadow);}.p-toast-message-error .p-toast-detail{color:var(--p-toast-error-detail-color);}.p-toast-message-error .p-toast-close-button:focus-visible{outline-color:var(--p-toast-error-close-button-focus-ring-color);box-shadow:var(--p-toast-error-close-button-focus-ring-shadow);}.p-toast-message-error .p-toast-close-button:hover{background:var(--p-toast-error-close-button-hover-background);}.p-toast-message-secondary{background:var(--p-toast-secondary-background);border-color:var(--p-toast-secondary-border-color);color:var(--p-toast-secondary-color);box-shadow:var(--p-toast-secondary-shadow);}.p-toast-message-secondary .p-toast-detail{color:var(--p-toast-secondary-detail-color);}.p-toast-message-secondary .p-toast-close-button:focus-visible{outline-color:var(--p-toast-secondary-close-button-focus-ring-color);box-shadow:var(--p-toast-secondary-close-button-focus-ring-shadow);}.p-toast-message-secondary .p-toast-close-button:hover{background:var(--p-toast-secondary-close-button-hover-background);}.p-toast-message-contrast{background:var(--p-toast-contrast-background);border-color:var(--p-toast-contrast-border-color);color:var(--p-toast-contrast-color);box-shadow:var(--p-toast-contrast-shadow);}.p-toast-message-contrast .p-toast-detail{color:var(--p-toast-contrast-detail-color);}.p-toast-message-contrast .p-toast-close-button:focus-visible{outline-color:var(--p-toast-contrast-close-button-focus-ring-color);box-shadow:var(--p-toast-contrast-close-button-focus-ring-shadow);}.p-toast-message-contrast .p-toast-close-button:hover{background:var(--p-toast-contrast-close-button-hover-background);}.p-toast{position:fixed;width:18.75rem;z-index:2000;}.p-toast-center{left:50%;transform:translateX(-50%) translateY(-50%);top:50%;}.p-toast-bottom-right{right:2rem;bottom:2rem;}.p-toast-bottom-center{bottom:2rem;left:50%;transform:translateX(-50%);}.p-toast-bottom-left{left:2rem;bottom:2rem;}.p-toast-top-right{right:2rem;top:2rem;}.p-toast-top-center{left:50%;transform:translateX(-50%);top:2rem;}.p-toast-top-left{left:2rem;top:2rem;}.p-toast-bottom-right .p-toast-message{ --px-raise-factor:-1;bottom:0;right:0;}.p-toast-bottom-center .p-toast-message{ --px-raise-factor:-1;bottom:0;}.p-toast[data-position="bottom-left"] .p-toast-message{ --px-raise-factor:-1;bottom:0;left:0;}.p-toast[data-position="top-right"] .p-toast-message{ --px-raise-factor:1;top:0;right:0;}.p-toast[data-position="top-center"] .p-toast-message{ --px-raise-factor:1;top:0;}.p-toast[data-position="top-left"] .p-toast-message{ --px-raise-factor:1;top:0;left:0;}.p-toast[data-position="center"] .p-toast-message{ --px-raise-factor:1;top:0;}</style><style type="text/css" data-primeng-style-id="confirmdialog-variables">:root,:host{--p-confirmdialog-message-color:var(--p-content-color);--p-confirmdialog-message-font-weight:var(--p-typography-font-weight);--p-confirmdialog-message-font-size:var(--p-typography-font-size);--p-confirmdialog-content-gap:0.875rem;--p-confirmdialog-icon-size:1.5rem;--p-confirmdialog-icon-color:var(--p-overlay-modal-color);}</style><style type="text/css" data-primeng-style-id="confirmdialog-style">.p-confirmdialog .p-dialog-content{display:flex;align-items:center;gap:var(--p-confirmdialog-content-gap);}.p-confirmdialog-icon{color:var(--p-confirmdialog-icon-color);font-size:var(--p-confirmdialog-icon-size);width:var(--p-confirmdialog-icon-size);height:var(--p-confirmdialog-icon-size);}.p-confirmdialog-message{color:var(--p-confirmdialog-message-color);
61font-weight:var(--p-confirmdialog-message-font-weight);font-size:var(--p-confirmdialog-message-font-size);}</style><style type="text/css" data-primeng-style-id="dialog-variables">:root,:host{--p-dialog-footer-padding:0 var(--p-overlay-modal-padding) var(--p-overlay-modal-padding) var(--p-overlay-modal-padding);--p-dialog-footer-gap:0.375rem;--p-dialog-content-padding:0 var(--p-overlay-modal-padding) var(--p-overlay-modal-padding) var(--p-overlay-modal-padding);--p-dialog-title-font-size:1.125rem;--p-dialog-title-font-weight:600;--p-dialog-header-padding:var(--p-overlay-modal-padding);--p-dialog-header-gap:0.5rem;--p-dialog-background:var(--p-overlay-modal-background);--p-dialog-border-color:var(--p-overlay-modal-border-color);--p-dialog-color:var(--p-overlay-modal-color);--p-dialog-border-radius:var(--p-overlay-modal-border-radius);--p-dialog-shadow:var(--p-overlay-modal-shadow);}</style><style type="text/css" data-primeng-style-id="dialog-style">.p-dialog{max-height:90%;transform:scale(1);border-radius:var(--p-dialog-border-radius);box-shadow:var(--p-dialog-shadow);background:var(--p-dialog-background);border:1px solid var(--p-dialog-border-color);color:var(--p-dialog-color);will-change:transform;}.p-dialog-content{overflow-y:auto;padding:var(--p-dialog-content-padding);flex-grow:1;}.p-dialog-header{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;padding:var(--p-dialog-header-padding);}.p-dialog-title{font-weight:var(--p-dialog-title-font-weight);font-size:var(--p-dialog-title-font-size);}.p-dialog-footer{flex-shrink:0;padding:var(--p-dialog-footer-padding);display:flex;justify-content:flex-end;gap:var(--p-dialog-footer-gap);}.p-dialog-header-actions{display:flex;align-items:center;gap:var(--p-dialog-header-gap);}.p-dialog-top .p-dialog,.p-dialog-bottom .p-dialog,.p-dialog-left .p-dialog,.p-dialog-right .p-dialog,.p-dialog-topleft .p-dialog,.p-dialog-topright .p-dialog,.p-dialog-bottomleft .p-dialog,.p-dialog-bottomright .p-dialog{margin:1rem;}.p-dialog-maximized{width:100vw!important;height:100vh!important;top:0px!important;left:0px!important;max-height:100%;height:100%;border-radius:0;}.p-dialog .p-resizable-handle{position:absolute;font-size:0.1px;display:block;cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px;}.p-dialog-enter-active{animation:p-animate-dialog-enter 300ms cubic-bezier(.19,1,.22,1);}.p-dialog-leave-active{animation:p-animate-dialog-leave 300ms cubic-bezier(.19,1,.22,1);}@keyframes p-animate-dialog-enter{from{opacity:0;transform:scale(0.93);}} @keyframes p-animate-dialog-leave{to{opacity:0;transform:scale(0.93);}}</style><style type="text/css" data-primeng-style-id="progressbar-variables">:root,:host{--p-progressbar-label-color:var(--p-primary-contrast-color);--p-progressbar-label-font-size:0.625rem;--p-progressbar-label-font-weight:600;--p-progressbar-value-background:var(--p-primary-color);--p-progressbar-background:var(--p-content-border-color);--p-progressbar-border-radius:var(--p-content-border-radius);--p-progressbar-height:1.125rem;}</style><style type="text/css" data-primeng-style-id="progressbar-style">.p-progressbar{display:block;position:relative;overflow:hidden;height:var(--p-progressbar-height);background:var(--p-progressbar-background);border-radius:var(--p-progressbar-border-radius);}.p-progressbar-value{margin:0;background:var(--p-progressbar-value-background);}.p-progressbar-label{color:var(--p-progressbar-label-color);font-size:var(--p-progressbar-label-font-size);font-weight:var(--p-progressbar-label-font-weight);}.p-progressbar-determinate .p-progressbar-value{height:100%;width:0%;position:absolute;display:none;display:flex;align-items:center;justify-content:center;overflow:hidden;transition:width 1s ease-in-out;}.p-progressbar-determinate .p-progressbar-label{display:inline-flex;}.p-progressbar-indeterminate .p-progressbar-value::before{content:'';position:absolute;background:inherit;inset-block-start:0;inset-inline-start:0;inset-block-end:0;will-change:inset-inline-start,inset-inline-end;animation:p-progressbar-indeterminate-anim 2.1s cubic-bezier(0.65,0.815,0.735,0.395) infinite;}
61.p-progressbar-indeterminate .p-progressbar-value::after{content:'';position:absolute;background:inherit;inset-block-start:0;inset-inline-start:0;inset-block-end:0;will-change:inset-inline-start,inset-inline-end;animation:p-progressbar-indeterminate-anim-short 2.1s cubic-bezier(0.165,0.84,0.44,1) infinite;animation-delay:1.15s;}@keyframes p-progressbar-indeterminate-anim{0%{inset-inline-start:-35%;inset-inline-end:100%;}60%{inset-inline-start:100%;inset-inline-end:-90%;}100%{inset-inline-start:100%;inset-inline-end:-90%;}} @-webkit-keyframes p-progressbar-indeterminate-anim{0%{inset-inline-start:-35%;inset-inline-end:100%;}60%{inset-inline-start:100%;inset-inline-end:-90%;}100%{inset-inline-start:100%;inset-inline-end:-90%;}} @keyframes p-progressbar-indeterminate-anim-short{0%{inset-inline-start:-200%;inset-inline-end:100%;}60%{inset-inline-start:107%;inset-inline-end:-8%;}100%{inset-inline-start:107%;inset-inline-end:-8%;}} @-webkit-keyframes p-progressbar-indeterminate-anim-short{0%{inset-inline-start:-200%;inset-inline-end:100%;}60%{inset-inline-start:107%;inset-inline-end:-8%;}100%{inset-inline-start:107%;inset-inline-end:-8%;}}</style><style ng-app-id="ng">@charset "UTF-8";@keyframes _ngcontent-ng-c1163080783_skyhub-dash-flow{to{stroke-dashoffset:-48}}@keyframes _ngcontent-ng-c1163080783_skyhub-ring-pulse{0%,to{stroke-opacity:.18}50%{stroke-opacity:.45}}[_nghost-ng-c1163080783]{display:block}.landing[_ngcontent-ng-c1163080783]{--accent: #3b82f6;--accent-light: #2563eb;--accent-hover: #2563eb;--bg: #ffffff;--surface: #ffffff;--text: #0f172a;--text-muted: #475569;--border: #e2e8f0;min-height:100vh;background:var(--bg);color:var(--text);font-family:Inter,Noto Sans,sans-serif}.landing[_ngcontent-ng-c1163080783] h1[_ngcontent-ng-c1163080783], .landing[_ngcontent-ng-c1163080783] h2[_ngcontent-ng-c1163080783], .landing[_ngcontent-ng-c1163080783] h3[_ngcontent-ng-c1163080783], .landing[_ngcontent-ng-c1163080783] h4[_ngcontent-ng-c1163080783]{color:var(--text)}.landing__main[_ngcontent-ng-c1163080783]{--measure: 1200px;--gutter: 1.5rem;--edge-pad: max(var(--gutter), calc((100% - var(--measure)) / 2 + var(--gutter)))}.landing__main[_ngcontent-ng-c1163080783] > section[_ngcontent-ng-c1163080783]{max-width:var(--measure);margin:0 auto;padding-inline:var(--gutter);padding-top:clamp(3.5rem,8vw,6rem);padding-bottom:0}.section-eyebrow[_ngcontent-ng-c1163080783]{margin:0 0 .75rem;font-size:.75rem;font-weight:700;letter-spacing:.08em;color:var(--accent)}.section-title[_ngcontent-ng-c1163080783]{font-size:clamp(1.7rem,3vw,2.4rem);font-weight:700;letter-spacing:-.01em;text-align:left;text-wrap:balance;max-width:22ch;margin:0 0 clamp(1.5rem,3vw,2.5rem)}.landing[_ngcontent-ng-c1163080783] .hero__title[_ngcontent-ng-c1163080783]{color:#fff}.landing__main[_ngcontent-ng-c1163080783] > .hero[_ngcontent-ng-c1163080783]{position:relative;background:radial-gradient(60% 50% at 50% 35%,rgba(59,130,246,.18),transparent 70%),linear-gradient(180deg,#080c14,#0e1626)}.landing__main[_ngcontent-ng-c1163080783] > .hero[_ngcontent-ng-c1163080783]:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 85%);mask-image:linear-gradient(180deg,#000 0%,transparent 85%);pointer-events:none}:where(.landing__main[_ngcontent-ng-c1163080783] > .hero[_ngcontent-ng-c1163080783]) > *[_ngcontent-ng-c1163080783]{position:relative}.landing__main[_ngcontent-ng-c1163080783] > .hero[_ngcontent-ng-c1163080783]{max-width:none;margin-top:-68px;padding-top:calc(68px + clamp(2rem,4vw,3rem));padding-bottom:4.5rem;padding-inline:var(--edge-pad);text-align:center;min-height:100svh;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box}.hero__title[_ngcontent-ng-c1163080783]{margin:0 auto 1rem;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;line-height:1.08;letter-spacing:-.02em;text-wrap:balance;max-width:18ch}.hero__sub[_ngcontent-ng-c1163080783]{margin:0 auto 1.25rem;max-width:58ch;color:#94a3b8;font-size:clamp(1.05rem,1.6vw,1.25rem);line-height:1.6;text-wrap:pretty}.hero__actions[_ngcontent-ng-c1163080783]{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.75rem}.hero__note[_ngcontent-ng-c1163080783]{margin:.9rem auto 0;max-width:52ch;color:#94a3b8;font-size:.9rem;line-height:1.5;text-wrap:pretty}.hero__telemetry[_ngcontent-ng-c1163080783]{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.hero__telemetry[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]{fill:none;stroke:#3b82f629;stroke-width:1.5;stroke-dasharray:8 12;animation:_ngcontent-ng-c1163080783_hero-telemetry-drift 10s linear infinite}.hero__telemetry[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]:nth-of-type(2){animation-duration:8s;stroke:#3b82f61f}.hero__telemetry[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]:nth-of-type(3){animation-duration:12s;stroke:#3b82f61a}
61.hero__telemetry-nodes[_ngcontent-ng-c1163080783] circle[_ngcontent-ng-c1163080783]{fill:#3b82f62e;stroke:#3b82f624;stroke-width:6}.hero__frame[_ngcontent-ng-c1163080783]{--frame-w: min(1136px, 100vw - 2 * var(--gutter));--frame-w: min( 1136px, 100vw - 2 * var(--gutter), max(720px, (100svh - 585px) * 2.3667) );position:relative;width:var(--frame-w);margin:clamp(1.5rem,2.5vw,2.25rem) calc((100% - var(--frame-w)) / 2) 0;border:1px solid rgba(255,255,255,.1);border-radius:16px 16px 0 0;border-bottom:0;overflow:hidden;box-shadow:0 40px 80px -20px #0009,0 0 0 1px #3b82f626;cursor:pointer}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen{width:100%;height:100%;margin:0;border:0;border-radius:0;box-shadow:none;background:#000;display:flex;align-items:center;justify-content:center}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__video[_ngcontent-ng-c1163080783]{width:100%;height:100%;object-fit:contain}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__controls[_ngcontent-ng-c1163080783]{--bar-h: 64px}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__bar[_ngcontent-ng-c1163080783]{gap:.5rem;height:calc(var(--bar-h) + env(safe-area-inset-bottom,0px));padding:0 max(1.25rem,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(1.25rem,env(safe-area-inset-left))}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__control[_ngcontent-ng-c1163080783]{width:48px;height:48px;font-size:1.25rem}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__time[_ngcontent-ng-c1163080783]{font-size:.9375rem}.hero__frame[_ngcontent-ng-c1163080783]:fullscreen .hero__big-play[_ngcontent-ng-c1163080783]{width:88px;height:88px;font-size:2rem}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783]{width:100%;height:100%;margin:0;border:0;border-radius:0;box-shadow:none;background:#000;display:flex;align-items:center;justify-content:center}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__video[_ngcontent-ng-c1163080783]{width:100%;height:100%;object-fit:contain}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__controls[_ngcontent-ng-c1163080783]{--bar-h: 64px}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__bar[_ngcontent-ng-c1163080783]{gap:.5rem;height:calc(var(--bar-h) + env(safe-area-inset-bottom,0px));padding:0 max(1.25rem,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(1.25rem,env(safe-area-inset-left))}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__control[_ngcontent-ng-c1163080783]{width:48px;height:48px;font-size:1.25rem}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__time[_ngcontent-ng-c1163080783]{font-size:.9375rem}.hero__frame.hero__frame--fullscreen[_ngcontent-ng-c1163080783] .hero__big-play[_ngcontent-ng-c1163080783]{width:88px;height:88px;font-size:2rem}.hero__frame.hero__frame--fullscreen.hero__frame--idle[_ngcontent-ng-c1163080783]{cursor:none}.hero__video[_ngcontent-ng-c1163080783]{width:100%;height:auto;display:block;background:#000}.hero__controls[_ngcontent-ng-c1163080783]{--bar-h: 48px;position:absolute;inset:0;pointer-events:none;transition:opacity .25s ease}.hero__controls--idle[_ngcontent-ng-c1163080783]{opacity:0}.hero__frame[_ngcontent-ng-c1163080783]:has(:focus-visible) .hero__controls[_ngcontent-ng-c1163080783]{opacity:1}.hero__controls--idle[_ngcontent-ng-c1163080783] .hero__bar[_ngcontent-ng-c1163080783]{pointer-events:none}.hero__frame[_ngcontent-ng-c1163080783]:has(:focus-visible) .hero__controls--idle[_ngcontent-ng-c1163080783] .hero__bar[_ngcontent-ng-c1163080783]{pointer-events:auto}.hero__big-play[_ngcontent-ng-c1163080783]{position:absolute;top:calc((100% - var(--bar-h)) / 2);left:50%;display:flex;align-items:center;justify-content:center;width:64px;height:64px;padding:0;border:1px solid rgba(255,255,255,.35);border-radius:50%;background:#080c148c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;font-size:1.4rem;cursor:pointer;pointer-events:auto;transform:translate(-50%,-50%);transition:background .18s ease,transform .18s ease}.hero__big-play[_ngcontent-ng-c1163080783] .pi[_ngcontent-ng-c1163080783]{margin-left:.15em}.hero__big-play[_ngcontent-ng-c1163080783]:hover{background:#080c14b8;transform:translate(-50%,-50%) scale(1.06)}.hero__bar[_ngcontent-ng-c1163080783]{position:absolute;
61left:0;right:0;bottom:0;display:flex;align-items:center;gap:.25rem;height:var(--bar-h);padding:0 .5rem;background:linear-gradient(to top,#000000bf,#0006 55%,#0000);color:#fff;cursor:default;pointer-events:auto}.hero__control[_ngcontent-ng-c1163080783]{flex:none;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;font-size:1rem;cursor:pointer;transition:background .18s ease}.hero__control[_ngcontent-ng-c1163080783] .pi[_ngcontent-ng-c1163080783]{filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}.hero__control[_ngcontent-ng-c1163080783]:hover{background:#ffffff29}.hero__control[_ngcontent-ng-c1163080783]:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:-2px}.hero__seek[_ngcontent-ng-c1163080783]{position:relative;flex:1 1 auto;min-width:48px;height:100%;margin:0 .4rem;cursor:pointer;touch-action:none;outline:none}.hero__seek[_ngcontent-ng-c1163080783]:hover .hero__seek-track[_ngcontent-ng-c1163080783], .hero__seek[_ngcontent-ng-c1163080783]:active .hero__seek-track[_ngcontent-ng-c1163080783]{height:6px}.hero__seek[_ngcontent-ng-c1163080783]:hover .hero__seek-thumb[_ngcontent-ng-c1163080783], .hero__seek[_ngcontent-ng-c1163080783]:active .hero__seek-thumb[_ngcontent-ng-c1163080783]{transform:translate(-50%,-50%) scale(1.2)}.hero__seek[_ngcontent-ng-c1163080783]:focus-visible .hero__seek-track[_ngcontent-ng-c1163080783]{outline:2px solid rgba(255,255,255,.85);outline-offset:3px}.hero__seek-track[_ngcontent-ng-c1163080783]{position:absolute;left:0;right:0;top:50%;height:4px;border-radius:999px;background:#ffffff4d;overflow:hidden;transform:translateY(-50%);transition:height .15s ease}.hero__seek-fill[_ngcontent-ng-c1163080783]{height:100%;background:#3b82f6}.hero__seek-thumb[_ngcontent-ng-c1163080783]{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000080;transform:translate(-50%,-50%);transition:transform .15s ease;pointer-events:none}.hero__time[_ngcontent-ng-c1163080783]{flex:none;padding:0 .25rem;font-size:.75rem;font-variant-numeric:tabular-nums;letter-spacing:.02em;text-shadow:0 1px 2px rgba(0,0,0,.6);white-space:nowrap;-webkit-user-select:none;user-select:none}@media(max-width:480px){.hero__controls[_ngcontent-ng-c1163080783]{--bar-h: 40px}.hero__bar[_ngcontent-ng-c1163080783]{gap:0;padding:0 .375rem}.hero__control[_ngcontent-ng-c1163080783]{width:36px;height:36px;font-size:.9rem}.hero__time[_ngcontent-ng-c1163080783]{font-size:.6875rem}.hero__big-play[_ngcontent-ng-c1163080783]{width:52px;height:52px;font-size:1.15rem}}.hero__scroll-cue[_ngcontent-ng-c1163080783]{position:absolute;left:50%;bottom:1.25rem;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem .75rem;border:0;border-radius:999px;background:none;color:#ffffff9e;font:inherit;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color .18s ease}.hero__scroll-cue[_ngcontent-ng-c1163080783]:hover, .hero__scroll-cue[_ngcontent-ng-c1163080783]:focus-visible{color:#fff}.hero__scroll-cue[_ngcontent-ng-c1163080783]:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:2px}.hero__scroll-cue[_ngcontent-ng-c1163080783] .pi[_ngcontent-ng-c1163080783]{font-size:1rem;animation:_ngcontent-ng-c1163080783_hero-scroll-nudge 1.8s ease-in-out infinite}@keyframes _ngcontent-ng-c1163080783_hero-scroll-nudge{0%,to{transform:translateY(0);opacity:.75}50%{transform:translateY(5px);opacity:1}}@media(prefers-reduced-motion:reduce){.hero__scroll-cue[_ngcontent-ng-c1163080783] .pi[_ngcontent-ng-c1163080783]{animation:none}}@keyframes _ngcontent-ng-c1163080783_hero-telemetry-drift{to{stroke-dashoffset:-40}}@media(prefers-reduced-motion:reduce){.hero__telemetry[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]{animation:none}}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__inner .site-header__nav .site-header__links a{color:#ffffffbf}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--trans
61parent .site-header__inner .site-header__nav .site-header__links a:hover{color:#fff}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__inner .site-header__burger{color:#fff}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__inner .site-header__logo{filter:brightness(0) invert(1)}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__signin{color:#ffffffd9}[_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__signin:enabled:hover, [_nghost-ng-c1163080783] app-site-header .site-header.site-header--transparent .site-header__signin:hover{color:#fff;background:#ffffff14}.audiences__grid[_ngcontent-ng-c1163080783]{counter-reset:audience;display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.audience-card[_ngcontent-ng-c1163080783]{counter-increment:audience;display:grid;grid-template-columns:1fr;grid-template-areas:"num" "art" "title" "text";align-items:start;border-top:2px solid rgba(59,130,246,.55);padding-top:1.5rem}.audience-card[_ngcontent-ng-c1163080783]:before{content:counter(audience,decimal-leading-zero);grid-area:num;font-size:2.5rem;font-weight:700;line-height:1;color:#3b82f6;font-variant-numeric:tabular-nums}.audience-card__art[_ngcontent-ng-c1163080783]{grid-area:art}.audience-card[_ngcontent-ng-c1163080783] h3[_ngcontent-ng-c1163080783]{grid-area:title;margin:1.1rem 0 .5rem;font-size:1.05rem;font-weight:600}.audience-card[_ngcontent-ng-c1163080783] p[_ngcontent-ng-c1163080783]{grid-area:text;margin:0;color:var(--text-muted);font-size:.94rem;line-height:1.5}.card-art[_ngcontent-ng-c1163080783]{height:150px;margin-top:1.25rem;border-radius:12px;background:#3b82f608;overflow:hidden}.card-art[_ngcontent-ng-c1163080783] svg[_ngcontent-ng-c1163080783]{display:block;width:100%;height:100%}.card-art[_ngcontent-ng-c1163080783] .art-flow[_ngcontent-ng-c1163080783]{animation:_ngcontent-ng-c1163080783_skyhub-dash-flow 2.4s linear infinite}.card-art[_ngcontent-ng-c1163080783] .art-pulse[_ngcontent-ng-c1163080783]{animation:_ngcontent-ng-c1163080783_skyhub-ring-pulse 3.6s ease-in-out infinite}.card-art[_ngcontent-ng-c1163080783] .art-blink[_ngcontent-ng-c1163080783]{animation:_ngcontent-ng-c1163080783_skyhub-art-blink 2.8s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.card-art[_ngcontent-ng-c1163080783] .art-flow[_ngcontent-ng-c1163080783], .card-art[_ngcontent-ng-c1163080783] .art-pulse[_ngcontent-ng-c1163080783], .card-art[_ngcontent-ng-c1163080783] .art-blink[_ngcontent-ng-c1163080783]{animation:none}}@keyframes _ngcontent-ng-c1163080783_skyhub-art-blink{0%,to{opacity:.25}50%{opacity:1}}.feature-card__icon[_ngcontent-ng-c1163080783]{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#3b82f624;color:var(--accent-light);font-size:1.25rem;margin-bottom:1rem}.features__grid[_ngcontent-ng-c1163080783]{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.feature-card[_ngcontent-ng-c1163080783]{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem;box-shadow:0 1px 2px #0f172a0d;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.feature-card[_ngcontent-ng-c1163080783]:hover{transform:translateY(-2px);border-color:#3b82f673;box-shadow:0 10px 24px -10px #0f172a29}.feature-card[_ngcontent-ng-c1163080783] h3[_ngcontent-ng-c1163080783]{margin:0 0 .5rem;font-size:1.05rem;font-weight:600}.feature-card[_ngcontent-ng-c1163080783] p[_ngcontent-ng-c1163080783]{margin:0;color:var(--text-muted);font-size:.94rem;line-height:1.5}.feature-card[_ngcontent-ng-c1163080783]:first-child{grid-column:span 2;grid-row:span 2;display:flex;flex-direction:column;justify-content:flex-end}.feature-card[_ngcontent-ng-c1163080783]:first-child .feature-card__icon[_ngcontent-ng-c1163080783]{width:3.25rem;height:3.25rem;font-size:1.4rem;margin-bottom:auto}.feature-card[_ngcontent-ng-c1163080783]:first-child h3[_ngcontent-ng-c1163080783]{font-size:1.35rem;margin-top:1rem}.feature-card[_ngcontent-ng-c1163080783]:first-child p[_ngcontent-ng-c1163080783]{font-size:1rem}.feature-card__diagram[_ngcontent-ng-c1163080783]{display:block;width:100%;margin:1.25rem 0 .25rem}.feature-card__diagram[_ngcontent-ng-c1163080783] svg[_ngcontent-ng-c1163080783]{display:block;width:100%;height:auto;max-height:280px}.feature-card__diagram[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783]{cursor:pointer}.feature-card__diagram[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783] .diagram-node--wire[_ngcontent-ng-c1163080783] rect[_ng
61content-ng-c1163080783]{transition:fill .15s ease,stroke .15s ease}.feature-card__diagram[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783]:hover .diagram-node--wire[_ngcontent-ng-c1163080783] rect[_ngcontent-ng-c1163080783], .feature-card__diagram[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783]:focus-visible .diagram-node--wire[_ngcontent-ng-c1163080783] rect[_ngcontent-ng-c1163080783]{fill:#dbeafe;stroke:var(--accent)}.feature-card__diagram[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-links[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]{fill:none;stroke:#3b82f68c;stroke-width:2;stroke-dasharray:5 7;animation:_ngcontent-ng-c1163080783_diagram-flow 2.4s linear infinite}.feature-card__diagram[_ngcontent-ng-c1163080783] marker[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]{fill:#3b82f6bf;stroke:none}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node[_ngcontent-ng-c1163080783] rect[_ngcontent-ng-c1163080783]{fill:#f8fafc;stroke:#cbd5e1;stroke-width:1}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node[_ngcontent-ng-c1163080783] text[_ngcontent-ng-c1163080783]{fill:var(--text);font-size:15px;font-weight:600}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node--hub[_ngcontent-ng-c1163080783] rect[_ngcontent-ng-c1163080783]{fill:var(--accent);stroke:var(--accent-light)}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node--hub[_ngcontent-ng-c1163080783] text[_ngcontent-ng-c1163080783]{fill:#fff;font-size:16px;font-weight:700}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node--wire[_ngcontent-ng-c1163080783] rect[_ngcontent-ng-c1163080783]{fill:#eff6ff;stroke:#3b82f673}.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-node--wire[_ngcontent-ng-c1163080783] text[_ngcontent-ng-c1163080783]{fill:var(--accent-light)}@keyframes _ngcontent-ng-c1163080783_diagram-flow{to{stroke-dashoffset:-12}}@media(prefers-reduced-motion:reduce){.feature-card__diagram[_ngcontent-ng-c1163080783] .diagram-links[_ngcontent-ng-c1163080783] path[_ngcontent-ng-c1163080783]{animation:none}}.landing__main[_ngcontent-ng-c1163080783] > .contact[_ngcontent-ng-c1163080783]{padding-bottom:clamp(3.5rem,8vw,6rem)}.contact[_ngcontent-ng-c1163080783]{text-align:center}.contact[_ngcontent-ng-c1163080783] .section-eyebrow[_ngcontent-ng-c1163080783], .contact[_ngcontent-ng-c1163080783] .section-title[_ngcontent-ng-c1163080783]{text-align:center;margin-inline:auto}.contact__lead[_ngcontent-ng-c1163080783]{max-width:54ch;margin:-.5rem auto clamp(1.5rem,3vw,2.5rem);color:var(--text-muted);font-size:1.05rem;line-height:1.7;text-wrap:pretty}.contact[_ngcontent-ng-c1163080783] app-contact-form[_ngcontent-ng-c1163080783]{margin-inline:auto;text-align:left}.problem__list[_ngcontent-ng-c1163080783]{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.problem__stakes[_ngcontent-ng-c1163080783]{max-width:60ch;margin:clamp(1.5rem,3vw,2.5rem) 0 0;font-size:1.05rem;line-height:1.7;font-weight:600;text-wrap:pretty}.problem-item[_ngcontent-ng-c1163080783]{border-top:2px solid rgba(59,130,246,.55);padding-top:1.5rem}.problem-item[_ngcontent-ng-c1163080783] h3[_ngcontent-ng-c1163080783]{margin:1.1rem 0 .5rem;font-size:1.05rem;font-weight:600}.problem-item[_ngcontent-ng-c1163080783] p[_ngcontent-ng-c1163080783]{margin:0;color:var(--text-muted);font-size:.94rem;line-height:1.5}.plan__steps[_ngcontent-ng-c1163080783]{counter-reset:plan-step;display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.plan__promise[_ngcontent-ng-c1163080783]{max-width:60ch;margin:clamp(1.5rem,3vw,2.5rem) 0 0;font-size:1.05rem;line-height:1.7;font-weight:600;text-wrap:pretty}.plan-step[_ngcontent-ng-c1163080783]{counter-increment:plan-step;border-top:2px solid rgba(59,130,246,.55);padding-top:1.5rem}.plan-step[_ngcontent-ng-c1163080783]:before{content:counter(plan-step,decimal-leading-zero);display:block;font-size:2.5rem;font-weight:700;line-height:1;color:#3b82f6;font-variant-numeric:tabular-nums}.plan-step[_ngcontent-ng-c1163080783] h3[_ngcontent-ng-c1163080783]{margin:1.1rem 0 .5rem;font-size:1.05rem;font-weight:600}.plan-step[_ngcontent-ng-c1163080783] p[_ngcontent-ng-c1163080783]{margin:0;color:var(--text-muted);font-size:.94rem;line-height:1.5}.landing__main[_ngcontent-ng-c1163080783] > .final-cta[_ngcontent-ng-c1163080783]{position:relative;background:radial-gradient(60% 50% at 50% 35%,rgba(59,130,246,.18),transparent 70%),linear-gradient(180deg,#080c14,#0e1626)}.landing__main[_ngcontent-ng-c1163080783] > .final-cta[_ngcontent-ng-c1163080783]:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:linear-gradient(0deg,#000 0%,transparent 85%);mask-image:linear-gradient(0deg,#000 0%,transparent 85%);pointer-events:none}:where(.landing__main[_ngcontent-ng-c1163080783] > .final-cta[_ngcontent-ng-c1163080783]) > *[_ngcontent-ng-c1163080783]{position:relative}.landing__main[_ngcontent-ng-c1163080783] > .final-cta[_ngcontent-ng-c1163080783]{max-width:none;padding-inline:var(--edge-pad);padding-block:clamp(4rem,9vw,6.5rem);text-align:center}.landing__main[_ngcontent-ng-c1163080783] > .final-cta[_ngcontent-ng-c1163080783] .section-title[_ngcontent-ng-c1163080783]{color:#fff;text-align:center;margin-inline:auto}.final-cta__actions[_ngcontent-ng-c1163080783]{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}[_nghost-ng-c1163080783] .hero__cta{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;border-radius:10px;padding:.75rem 1.6rem}[_nghost-ng-c1163080783] .hero__cta:enabled:hover, [_nghost-ng-c1163080783] .hero__cta:hover{background:var(--accent-hover);border-color:var(--accent-hover)}[_nghost-ng-c1163080783] .p-button-outlined{color:#ffffffd9;border-color:#ffffff47;border-radius:10px;padding:.75rem 1.6rem;font-weight:600;background:transparent}[_nghost-ng-c1163080783] .p-button-outlined:enabled:hover, [_nghost-ng-c1163080783] .p-button-outlined:hover{color:#fff;background:#ffffff0f;border-color:#ffffff8c}
61@media(max-width:900px){.features__grid[_ngcontent-ng-c1163080783]{grid-template-columns:repeat(2,1fr)}.feature-card[_ngcontent-ng-c1163080783]:first-child{grid-column:span 2;grid-row:auto}}@media(max-width:720px){.audiences__grid[_ngcontent-ng-c1163080783], .problem__list[_ngcontent-ng-c1163080783], .plan__steps[_ngcontent-ng-c1163080783]{grid-template-columns:1fr}.card-art[_ngcontent-ng-c1163080783]{height:120px}}@media(max-width:600px){.features__grid[_ngcontent-ng-c1163080783]{grid-template-columns:1fr}.feature-card[_ngcontent-ng-c1163080783]:first-child{grid-column:auto}.feature-card__diagram[_ngcontent-ng-c1163080783]{display:none}}@media(max-width:480px){.hero__actions[_ngcontent-ng-c1163080783], .final-cta__actions[_ngcontent-ng-c1163080783]{flex-direction:column;align-items:stretch}.hero__actions[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783], .final-cta__actions[_ngcontent-ng-c1163080783] a[_ngcontent-ng-c1163080783]{width:100%;justify-content:center}.landing__main[_ngcontent-ng-c1163080783] > .hero[_ngcontent-ng-c1163080783]{padding-top:calc(68px + 1rem);padding-bottom:3.25rem}.hero__title[_ngcontent-ng-c1163080783]{margin-bottom:.65rem}.hero__sub[_ngcontent-ng-c1163080783]{margin-bottom:.75rem}.hero__note[_ngcontent-ng-c1163080783]{margin-top:.6rem}.hero__frame[_ngcontent-ng-c1163080783]{margin-top:1.1rem}.hero__scroll-cue-text[_ngcontent-ng-c1163080783]{display:none}}</style><style ng-app-id="ng">[_nghost-ng-c3701912137]{--header-height: 68px;--accent: #3b82f6;--accent-hover: #2563eb;display:block;position:sticky;top:0;z-index:100}.site-header[_ngcontent-ng-c3701912137]{background:#ffffffd9;backdrop-filter:blur(12px);border-bottom:1px solid rgba(15,23,42,.08);font-family:Inter,Noto Sans,sans-serif;transition:background .2s ease,border-color .2s ease}.site-header--transparent[_ngcontent-ng-c3701912137]{background:transparent;backdrop-filter:none;border-bottom-color:transparent}.site-header__inner[_ngcontent-ng-c3701912137]{position:relative;max-width:1200px;margin:0 auto;height:var(--header-height);padding:0 1.5rem;display:flex;align-items:center;gap:2.75rem}.site-header--portal[_ngcontent-ng-c3701912137] .site-header__inner[_ngcontent-ng-c3701912137]{max-width:1600px}.site-header__brand[_ngcontent-ng-c3701912137]{display:inline-flex;align-items:center;flex-shrink:0}.site-header__logo[_ngcontent-ng-c3701912137]{height:26px;width:auto;display:block}.site-header__burger[_ngcontent-ng-c3701912137]{margin-left:auto;display:none;background:none;border:none;color:#0f172a;font-size:1.4rem;cursor:pointer;padding:.25rem .5rem}.site-header__nav[_ngcontent-ng-c3701912137]{display:flex;align-items:center;gap:2rem;flex:1;justify-content:flex-end}.site-header__links[_ngcontent-ng-c3701912137], .site-header__actions[_ngcontent-ng-c3701912137]{display:flex;align-items:center;gap:1.5rem}.site-header__links[_ngcontent-ng-c3701912137]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.site-header__actions[_ngcontent-ng-c3701912137]{gap:1.1rem}.site-header__links[_ngcontent-ng-c3701912137] a[_ngcontent-ng-c3701912137], .site-header__link[_ngcontent-ng-c3701912137]{color:#334155;text-decoration:none;font-size:.94rem;font-weight:500;cursor:pointer;transition:color .15s ease}.site-header__links[_ngcontent-ng-c3701912137] a[_ngcontent-ng-c3701912137]:hover, .site-header__link[_ngcontent-ng-c3701912137]:hover{color:#0f172a}[_nghost-ng-c3701912137] .site-header__signin{color:#334155;font-weight:600;border-radius:8px}[_nghost-ng-c3701912137] .site-header__signin:enabled:hover, [_nghost-ng-c3701912137] .site-header__signin:hover{color:#0f172a;background:#0f172a0d}[_nghost-ng-c3701912137] .site-header__cta{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;border-radius:8px}[_nghost-ng-c3701912137] .site-header__cta:enabled:hover, [_nghost-ng-c3701912137] .site-header__cta:hover{background:var(--accent-hover);border-color:var(--accent-hover)}@media(max-width:1150px){.site-header__burger[_ngcontent-ng-c3701912137]{display:inline-flex}.site-header__nav[_ngcontent-ng-c3701912137]{position:absolute;top:var(--header-height);left:0;right:0;flex-direction:column;align-items:flex-start;gap:1.1rem;padding:1.25rem 1.5rem 1.75rem;background:#fffffffa;border-bottom:1px solid rgba(15,23,42,.08);box-shadow:0 12px 24px #0f172a14;display:none}.site-header__nav.is-open[_ngcontent-ng-c3701912137]{display:flex}.site-header__links[_ngcontent-ng-c3701912137], .site-header__actions[_ngcontent-ng-c3701912137]{flex-direction:column;align-items:flex-start;gap:1.1rem;width:100%}.site-header__links[_ngcontent-ng-c3701912137]{position:static;transform:none}}</style><style ng-app-id="ng">[_nghost-ng-c3866343456]{display:block;max-width:46rem}.contact-form[_ngcontent-ng-c3866343456]{display:flex;flex-direction:column;gap:1.1rem}.contact-form__row[_ngcontent-ng-c3866343456]{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}@media(max-width:640px){.contact-form__row[_ngcontent-ng-c3866343456]{grid-template-columns:1fr}}.contact-form__field[_ngcontent-ng-c3866343456]{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;font-weight:600;color:var(--text, #0f172a)}.contact-form__field[_ngcontent-ng-c3866343456] em[_ngcontent-ng-c3866343456]{font-weight:400;font-style:normal;color:var(--text-muted, #475569)}.contact-form__field[_ngcontent-ng-c3866343456] input[_ngcontent-ng-c3866343456], .contact-form__field[_ngcontent-ng-c3866343456] textarea[_ngcontent-ng-c3866343456]{width:100%;font-weight:400;font-family:inherit}.contact-form__field[_ngcontent-ng-c3866343456] p-select[_ngcontent-ng-c3866343456]{width:100%}.contact-form__field[_ngcontent-ng-c3866343456] textarea[_ngcontent-ng-c3866343456]{resize:vertical;min-height:7rem}.contact-form__invalid[_ngcontent-ng-c3866343456]{border-color:#ef4444}.contact-form__error[_ngcontent-ng-c3866343456]{margin:0;color:#dc2626;font-weight:400;font-size:.85rem}
61.contact-form__trap[_ngcontent-ng-c3866343456]{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.contact-form__actions[_ngcontent-ng-c3866343456]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.contact-form__done[_ngcontent-ng-c3866343456]{display:flex;align-items:flex-start;gap:1rem;padding:1.5rem;border:1px solid #bbf7d0;border-radius:12px;background:#f0fdf4}.contact-form__done[_ngcontent-ng-c3866343456] .pi-check-circle[_ngcontent-ng-c3866343456]{font-size:1.5rem;color:#16a34a;line-height:1.2}.contact-form__done[_ngcontent-ng-c3866343456] p[_ngcontent-ng-c3866343456]{margin:0}.contact-form__done-title[_ngcontent-ng-c3866343456]{font-weight:700;color:var(--text, #0f172a)}.contact-form__done-body[_ngcontent-ng-c3866343456]{margin-top:.25rem!important;color:var(--text-muted, #475569);font-size:.94rem}</style><style ng-app-id="ng">[_nghost-ng-c788063136]{display:block}.site-footer[_ngcontent-ng-c788063136]{background:#f8fafc;border-top:1px solid rgba(15,23,42,.08);color:#475569;font-family:Inter,Noto Sans,sans-serif}.site-footer__inner[_ngcontent-ng-c788063136]{max-width:1200px;margin:0 auto;padding:3rem 1.5rem 2rem;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem}.site-footer__logo[_ngcontent-ng-c788063136]{height:28px;width:auto}.site-footer__tagline[_ngcontent-ng-c788063136]{margin:1rem 0 0;max-width:280px;font-size:.9rem;line-height:1.5}.site-footer__col[_ngcontent-ng-c788063136]{display:flex;flex-direction:column;gap:.6rem}.site-footer__col[_ngcontent-ng-c788063136] h4[_ngcontent-ng-c788063136]{margin:0 0 .4rem;color:#0f172a;font-size:.9rem;font-weight:600}.site-footer__col[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]{color:#475569;text-decoration:none;font-size:.9rem;transition:color .15s ease}.site-footer__col[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]:hover{color:#2563eb}.site-footer__bar[_ngcontent-ng-c788063136]{border-top:1px solid rgba(15,23,42,.08);padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.85rem;max-width:1200px;margin:0 auto}.site-footer__bar[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]{color:#475569;transition:color .15s ease}.site-footer__bar[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]:hover{color:#2563eb}.site-footer__funding[_ngcontent-ng-c788063136]{max-width:1200px;margin:0 auto;padding:2rem 1.5rem .5rem}.site-footer__funding-band[_ngcontent-ng-c788063136]{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:12px;padding:1.25rem 2rem;display:flex;align-items:center;justify-content:center;gap:3rem}.site-footer__funding-logo[_ngcontent-ng-c788063136]{height:52px;width:auto;max-width:100%}.site-footer__funding-logo--eu[_ngcontent-ng-c788063136]{height:40px}.site-footer__funding-text[_ngcontent-ng-c788063136]{margin:1rem auto 0;max-width:64rem;font-size:.75rem;line-height:1.6;color:#64748b;text-align:center}.site-footer__compact-bar[_ngcontent-ng-c788063136]{max-width:1200px;margin:0 auto;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.75rem 1.5rem;font-size:.85rem}.site-footer__compact-logo[_ngcontent-ng-c788063136]{height:20px;width:auto}.site-footer__compact-links[_ngcontent-ng-c788063136]{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem 1.5rem}.site-footer__compact-links[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]{color:#475569;text-decoration:none;transition:color .15s ease}.site-footer__compact-links[_ngcontent-ng-c788063136] a[_ngcontent-ng-c788063136]:hover{color:#2563eb}@media(max-width:720px){.site-footer__inner[_ngcontent-ng-c788063136]{grid-template-columns:1fr 1fr}.site-footer__bar[_ngcontent-ng-c788063136]{flex-direction:column;text-align:center}.site-footer__funding-band[_ngcontent-ng-c788063136]{flex-direction:column;gap:1.5rem;padding:1.5rem 1rem}}</style><meta name="keywords" content="drone fleet management, mission planner, drone telemetry, WebRTC drone video, ArduPilot, PX4, MAVLink, SkyHub, autonomous drones, fleet control"><link _ngcontent-ng-c1163080783 rel="canonical" href="https://skyhub.ai/">
61<script _ngcontent-ng-c1163080783 type="application/ld+json">[{"@context":"https://schema.org","@type":"SoftwareApplication","name":"SkyHub","applicationCategory":"BusinessApplication","operatingSystem":"Web","url":"https://skyhub.ai/","description":"Fleet management and mission control for autonomous drones. Live positions, sub-second video and multi-vehicle control for any ArduPilot, PX4 or MAVLink aircraft, in the cloud or on your own hardware.","publisher":{"@type":"Organization","name":"ID Robots","url":"https://idrobots.com/"}}]</script>
61<style type="text/css" data-primeng-style-id="ripple-variables">:root,:host{--p-ripple-background:light-dark(rgba(0,0,0,0.1),rgba(255,255,255,0.3));}</style><style type="text/css" data-primeng-style-id="ripple-style">.p-ink{display:block;position:absolute;background:var(--p-ripple-background);border-radius:100%;transform:scale(0);pointer-events:none;}.p-ink-active{animation:ripple 0.4s linear;}@keyframes ripple{100%{opacity:0;transform:scale(2.5);}} .p-ripple{overflow:hidden;position:relative;}.p-ripple-disabled .p-ink{display:none!important;}@keyframes ripple{100%{opacity:0;transform:scale(2.5);}}</style><style type="text/css" data-primeng-style-id="button-variables">:root,:host{--p-button-link-color:var(--p-primary-color);--p-button-link-hover-color:var(--p-primary-color);--p-button-link-active-color:var(--p-primary-color);--p-button-text-plain-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-button-text-plain-active-background:light-dark(var(--p-surface-100),var(--p-surface-700));--p-button-text-plain-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-button-text-contrast-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-button-text-contrast-active-background:light-dark(var(--p-surface-100),var(--p-surface-700));--p-button-text-contrast-color:light-dark(var(--p-surface-950),var(--p-surface-0));--p-button-text-danger-hover-background:light-dark(var(--p-red-50),color-mix(in srgb,var(--p-red-400),transparent 96%));--p-button-text-danger-active-background:light-dark(var(--p-red-100),color-mix(in srgb,var(--p-red-400),transparent 84%));--p-button-text-danger-color:light-dark(var(--p-red-500),var(--p-red-400));--p-button-text-help-hover-background:light-dark(var(--p-purple-50),color-mix(in srgb,var(--p-purple-400),transparent 96%));--p-button-text-help-active-background:light-dark(var(--p-purple-100),color-mix(in srgb,var(--p-purple-400),transparent 84%));--p-button-text-help-color:light-dark(var(--p-purple-500),var(--p-purple-400));--p-button-text-warn-hover-background:light-dark(var(--p-orange-50),color-mix(in srgb,var(--p-orange-400),transparent 96%));--p-button-text-warn-active-background:light-dark(var(--p-orange-100),color-mix(in srgb,var(--p-orange-400),transparent 84%));--p-button-text-warn-color:light-dark(var(--p-orange-500),var(--p-orange-400));--p-button-text-info-hover-background:light-dark(var(--p-sky-50),color-mix(in srgb,var(--p-sky-400),transparent 96%));--p-button-text-info-active-background:light-dark(var(--p-sky-100),color-mix(in srgb,var(--p-sky-400),transparent 84%));--p-button-text-info-color:light-dark(var(--p-sky-500),var(--p-sky-400));--p-button-text-success-hover-background:light-dark(var(--p-green-50),color-mix(in srgb,var(--p-green-400),transparent 96%));--p-button-text-success-active-background:light-dark(var(--p-green-100),color-mix(in srgb,var(--p-green-400),transparent 84%));--p-button-text-success-color:light-dark(var(--p-green-500),var(--p-green-400));--p-button-text-secondary-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-button-text-secondary-active-background:light-dark(var(--p-surface-100),var(--p-surface-700));--p-button-text-secondary-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-button-text-primary-hover-background:light-dark(var(--p-primary-50),color-mix(in srgb,var(--p-primary-color),transparent 96%));--p-button-text-primary-active-background:light-dark(var(--p-primary-100),color-mix(in srgb,var(--p-primary-color),transparent 84%));--p-button-text-primary-color:var(--p-primary-color);--p-button-outlined-plain-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-button-outlined-plain-active-background:light-dark(var(--p-surface-100),var(--p-surface-700));--p-button-outlined-plain-border-color:light-dark(var(--p-surface-200),var(--p-surface-600));--p-button-outlined-plain-color:light-dark(var(--p-surface-700),var(--p-surface-0));--p-button-outlined-contrast-hover-background:light-dark(var(--p-surface-50),var(--p-surface-800));--p-button-outlined-contrast-active-background:light-dark(var(--p-surface-100),var(--p-surface-700));--p-button-outlined-contrast-border-color:light-dark(var(--p-surface-700),var(--p-surface-500));
61--p-button-outlined-contrast-color:light-dark(var(--p-surface-950),var(--p-surface-0));--p-button-outlined-danger-hover-background:light-dark(var(--p-red-50),color-mix(in srgb,var(--p-red-400),transparent 96%));--p-button-outlined-danger-active-background:light-dark(var(--p-red-100),color-mix(in srgb,var(--p-red-400),transparent 84%));--p-button-outlined-danger-border-color:light-dark(var(--p-red-200),var(--p-red-700));--p-button-outlined-danger-color:light-dark(var(--p-red-500),var(--p-red-400));--p-button-outlined-help-hover-background:light-dark(var(--p-purple-50),color-mix(in srgb,var(--p-purple-400),transparent 96%));--p-button-outlined-help-active-background:light-dark(var(--p-purple-100),color-mix(in srgb,var(--p-purple-400),transparent 84%));--p-button-outlined-help-border-color:light-dark(var(--p-purple-200),var(--p-purple-700));--p-button-outlined-help-color:light-dark(var(--p-purple-500),var(--p-purple-400));--p-button-outlined-warn-hover-background:light-dark(var(--p-orange-50),color-mix(in srgb,var(--p-orange-400),transparent 96%));--p-button-outlined-warn-active-background:light-dark(var(--p-orange-100),color-mix(in srgb,var(--p-orange-400),transparent 84%));--p-button-outlined-warn-border-color:light-dark(var(--p-orange-200),var(--p-orange-700));--p-button-outlined-warn-color:light-dark(var(--p-orange-500),var(--p-orange-400));--p-button-outlined-info-hover-background:light-dark(var(--p-sky-50),color-mix(in srgb,var(--p-sky-400),transparent 96%));--p-button-outlined-info-active-background:light-dark(var(--p-sky-100),color-mix(in srgb,var(--p-sky-400),transparent 84%));--p-button-outlined-info-border-color:light-dark(var(--p-sky-200),var(--p-sky-700));--p-button-outlined-info-color:light-dark(var(--p-sky-500),var(--p-sky-400));--p-button-outlined-success-hover-background:light-dark(var(--p-green-50),color-mix(in srgb,var(--p-green-400),transparent 96%));--p-button-outlined-success-active-background:light-dark(var(--p-green-100),color-mix(in srgb,var(--p-green-400),transparent 84%));--p-button-outlined-success-border-color:light-dark(var(--p-green-200),var(--p-green-700));--p-button-outlined-success-color:light-dark(var(--p-green-500),var(--p-green-400));--p-button-outlined-secondary-hover-background:light-dark(var(--p-surface-50),rgba(255,255,255,0.04));--p-button-outlined-secondary-active-background:light-dark(var(--p-surface-100),rgba(255,255,255,0.16));--p-button-outlined-secondary-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-button-outlined-secondary-color:light-dark(var(--p-surface-500),var(--p-surface-400));--p-button-outlined-primary-hover-background:light-dark(var(--p-primary-50),color-mix(in srgb,var(--p-primary-color),transparent 96%));--p-button-outlined-primary-active-background:light-dark(var(--p-primary-100),color-mix(in srgb,var(--p-primary-color),transparent 84%));--p-button-outlined-primary-border-color:light-dark(var(--p-primary-200),var(--p-primary-700));--p-button-outlined-primary-color:var(--p-primary-color);--p-button-border-radius:var(--p-form-field-border-radius);--p-button-rounded-border-radius:2rem;--p-button-gap:0.5rem;--p-button-padding-x:var(--p-form-field-padding-x);--p-button-padding-y:var(--p-form-field-padding-y);--p-button-icon-only-width:2.25rem;--p-button-font-size:var(--p-form-field-font-size);--p-button-raised-shadow:0 3px 1px -2px rgba(0,0,0,0.2),0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12);--p-button-badge-size:1rem;--p-button-transition-duration:var(--p-form-field-transition-duration);--p-button-contrast-background:light-dark(var(--p-surface-950),var(--p-surface-0));--p-button-contrast-hover-background:light-dark(var(--p-surface-900),var(--p-surface-100));--p-button-contrast-active-background:light-dark(var(--p-surface-800),var(--p-surface-200));--p-button-contrast-border-color:light-dark(var(--p-surface-950),var(--p-surface-0));--p-button-contrast-hover-border-color:light-dark(var(--p-surface-900),var(--p-surface-100));--p-button-contrast-active-border-color:light-dark(var(--p-surface-800),var(--p-surface-200));--p-button-contrast-color:light-dark(var(--p-surface-0),var(--p-surface-950));--p-button-contrast-hover-color:light-dark(var(--p-surface-0),var(--p-surface-950));--p-button-contrast-active-color:light-dark(var(--p-surface-0),var(--p-surface-950));--p-button-contrast-focus-ring-color:light-dark(var(--p-surface-950),var(--p-surface-0));--p-button-contrast-focus-ring-shadow:none;--p-button-danger-background:light-dark(var(--p-red-500),var(--p-red-400));--p-button-danger-hover-background:light-dark(var(--p-red-600),var(--p-red-300));--p-button-danger-active-background:light-dark(var(--p-red-700),var(--p-red-200));--p-button-danger-border-color:light-dark(var(--p-red-500),var(--p-red-400));--p-button-danger-hover-border-color:light-dark(var(--p-red-600),var(--p-red-300));--p-button-danger-active-border-color:light-dark(var(--p-red-700),var(--p-red-200));--p-button-danger-color:light-dark(#ffffff,var(--p-red-950));--p-button-danger-hover-color:light-dark(#ffffff,var(--p-red-950));--p-button-danger-active-color:light-dark(#ffffff,var(--p-red-950));--p-button-danger-focus-ring-color:light-dark(var(--p-red-500),var(--p-red-400));--p-button-danger-focus-ring-shadow:none;--p-button-help-background:light-dark(var(--p-purple-500),var(--p-purple-400));--p-button-help-hover-background:light-dark(var(--p-purple-600),var(--p-purple-300));--p-button-help-active-background:light-dark(var(--p-purple-700),var(--p-purple-200));--p-button-help-border-color:light-dark(var(--p-purple-500),var(--p-purple-400));--p-button-help-hover-border-color:light-dark(var(--p-purple-600),var(--p-purple-300));--p-button-help-active-border-color:light-dark(var(--p-purple-700),var(--p-purple-200));--p-button-help-color:light-dark(#ffffff,var(--p-purple-950));--p-button-help-hover-color:light-dark(#ffffff,var(--p-purple-950));--p-button-help-active-color:light-dark(#ffffff,var(--p-purple-950));--p-button-help-focus-ring-color:light-dark(var(--p-purple-500),var(--p-purple-400));--p-button-help-focus-ring-shadow:none;--p-button-warn-background:light-dark(var(--p-orange-500),var(--p-orange-400));--p-button-warn-hover-background:light-dark(var(--p-orange-600),var(--p-orange-300));--p-button-warn-active-background:light-dark(var(--p-orange-700),var(--p-orange-200));--p-button-warn-border-color:light-dark(var(--p-orange-500),var(--p-orange-400));--p-button-warn-hover-border-color:light-dark(var(--p-orange-600),var(--p-orange-300));--p-button-warn-active-border-color:light-dark(var(--p-orange-700),var(--p-orange-200));--p-button-warn-color:light-dark(#ffffff,var(--p-orange-950));--p-button-warn-hover-color:light-dark(#ffffff,var(--p-orange-950));--p-button-warn-active-color:light-dark(#ffffff,var(--p-orange-950));--p-button-warn-focus-ring-color:light-dark(var(--p-orange-500),var(--p-orange-400));--p-button-warn-focus-ring-shadow:none;--p-button-success-background:light-dark(var(--p-green-500),var(--p-green-400));--p-button-success-hover-background:light-dark(var(--p-green-600),var(--p-green-300));--p-button-success-active-background:light-dark(var(--p-green-700),var(--p-green-200));--p-button-success-border-color:light-dark(var(--p-green-500),var(--p-green-400));--p-button-success-hover-border-color:light-dark(var(--p-green-600),var(--p-green-300));--p-button-success-active-border-color:light-dark(var(--p-green-700),var(--p-green-200));--p-button-success-color:light-dark(#ffffff,var(--p-green-950));--p-button-success-hover-color:light-dark(#ffffff,var(--p-green-950));--p-button-success-active-color:light-dark(#ffffff,var(--p-green-950));--p-button-success-focus-ring-color:light-dark(var(--p-green-500),var(--p-green-400));--p-button-success-focus-ring-shadow:none;--p-button-info-background:light-dark(var(--p-sky-500),var(--p-sky-400));--p-button-info-hover-background:light-dark(var(--p-sky-600),var(--p-sky-300));--p-button-info-active-background:light-dark(var(--p-sky-700),var(--p-sky-200));--p-button-info-border-color:light-dark(var(--p-sky-500),var(--p-sky-400));--p-button-info-hover-border-color:light-dark(var(--p-sky-600),var(--p-sky-300));--p-button-info-active-border-color:light-dark(var(--p-sky-700),var(--p-sky-200));--p-button-info-color:light-dark(#ffffff,var(--p-sky-950));--p-button-info-hover-color:light-dark(#ffffff,var(--p-sky-950));--p-button-info-active-color:light-dark(#ffffff,var(--p-sky-950));--p-button-info-focus-ring-color:light-dark(var(--p-sky-500),var(--p-sky-400));--p-button-info-focus-ring-shadow:none;--p-button-secondary-background:light-dark(var(--p-surface-100),var(--p-surface-800));--p-button-secondary-hover-background:light-dark(var(--p-surface-200),var(--p-surface-700));--p-button-secondary-active-background:light-dark(var(--p-surface-300),var(--p-surface-600));--p-button-secondary-border-color:light-dark(var(--p-surface-100),var(--p-surface-800));--p-button-secondary-hover-border-color:light-dark(var(--p-surface-200),var(--p-surface-700));--p-button-secondary-active-border-color:light-dark(var(--p-surface-300),var(--p-surface-600));--p-button-secondary-color:light-dark(var(--p-surface-600),var(--p-surface-300));--p-button-secondary-hover-color:light-dark(var(--p-surface-700),var(--p-surface-200));--p-button-secondary-active-color:light-dark(var(--p-surface-800),var(--p-surface-100));--p-button-secondary-focus-ring-color:light-dark(var(--p-surface-600),var(--p-surface-300));--p-button-secondary-focus-ring-shadow:none;--p-button-primary-background:var(--p-primary-color);--p-button-primary-hover-background:var(--p-primary-hover-color);--p-button-primary-active-background:var(--p-primary-active-color);--p-button-primary-border-color:var(--p-primary-color);--p-button-primary-hover-border-color:var(--p-primary-hover-color);--p-button-primary-active-border-color:var(--p-primary-active-color);--p-button-primary-color:var(--p-primary-contrast-color);--p-button-primary-hover-color:var(--p-primary-contrast-color);--p-button-primary-active-color:var(--p-primary-contrast-color);--p-button-primary-focus-ring-color:var(--p-primary-color);--p-button-primary-focus-ring-shadow:none;--p-button-focus-ring-width:var(--p-focus-ring-width);--p-button-focus-ring-style:var(--p-focus-ring-style);--p-button-focus-ring-offset:var(--p-focus-ring-offset);
61--p-button-label-font-weight:500;--p-button-lg-font-size:var(--p-form-field-lg-font-size);--p-button-lg-padding-x:var(--p-form-field-lg-padding-x);--p-button-lg-padding-y:var(--p-form-field-lg-padding-y);--p-button-lg-icon-only-width:2.625rem;--p-button-sm-font-size:var(--p-form-field-sm-font-size);--p-button-sm-padding-x:var(--p-form-field-sm-padding-x);--p-button-sm-padding-y:var(--p-form-field-sm-padding-y);--p-button-sm-icon-only-width:1.75rem;}</style><style type="text/css" data-primeng-style-id="button-style">.p-button{display:inline-flex;cursor:pointer;user-select:none;align-items:center;justify-content:center;overflow:hidden;position:relative;color:var(--p-button-primary-color);background:var(--p-button-primary-background);border:1px solid var(--p-button-primary-border-color);padding:var(--p-button-padding-y) var(--p-button-padding-x);font-size:var(--p-button-font-size);font-weight:var(--p-button-label-font-weight);transition:background var(--p-button-transition-duration),color var(--p-button-transition-duration),border-color var(--p-button-transition-duration),outline-color var(--p-button-transition-duration),box-shadow var(--p-button-transition-duration);border-radius:var(--p-button-border-radius);outline-color:transparent;gap:var(--p-button-gap);}.p-button:disabled{cursor:default;}.p-button-icon-right{order:1;}.p-button-icon-right:dir(rtl){order:-1;}.p-button:not(.p-button-vertical) .p-button-icon:not(.p-button-icon-right):dir(rtl){order:1;}.p-button-icon-bottom{order:2;}.p-button-icon-only{width:var(--p-button-icon-only-width);padding-inline-start:0;padding-inline-end:0;gap:0;}.p-button-icon-only.p-button-rounded{border-radius:50%;height:var(--p-button-icon-only-width);}.p-button-icon-only .p-button-label{visibility:hidden;width:0;}.p-button-icon-only::after{content:"Â ";visibility:hidden;width:0;}.p-button-sm{font-size:var(--p-button-sm-font-size);padding:var(--p-button-sm-padding-y) var(--p-button-sm-padding-x);}.p-button-sm .p-button-icon{font-size:var(--p-button-sm-font-size);}.p-button-sm.p-button-icon-only{width:var(--p-button-sm-icon-only-width);}.p-button-sm.p-button-icon-only.p-button-rounded{height:var(--p-button-sm-icon-only-width);}.p-button-lg{font-size:var(--p-button-lg-font-size);padding:var(--p-button-lg-padding-y) var(--p-button-lg-padding-x);}.p-button-lg .p-button-icon{font-size:var(--p-button-lg-font-size);}.p-button-lg.p-button-icon-only{width:var(--p-button-lg-icon-only-width);}.p-button-lg.p-button-icon-only.p-button-rounded{height:var(--p-button-lg-icon-only-width);}.p-button-vertical{flex-direction:column;}.p-button-label{font-weight:var(--p-button-label-font-weight);}.p-button-fluid{width:100%;}.p-button-fluid.p-button-icon-only{width:var(--p-button-icon-only-width);}.p-button:not(:disabled):hover{background:var(--p-button-primary-hover-background);border:1px solid var(--p-button-primary-hover-border-color);color:var(--p-button-primary-hover-color);}.p-button:not(:disabled):active{background:var(--p-button-primary-active-background);border:1px solid var(--p-button-primary-active-border-color);color:var(--p-button-primary-active-color);}.p-button:focus-visible{box-shadow:var(--p-button-primary-focus-ring-shadow);outline:var(--p-button-focus-ring-width) var(--p-button-focus-ring-style) var(--p-button-primary-focus-ring-color);outline-offset:var(--p-button-focus-ring-offset);}.p-button .p-badge{min-width:var(--p-button-badge-size);height:var(--p-button-badge-size);line-height:var(--p-button-badge-size);}.p-button-raised{box-shadow:var(--p-button-raised-shadow);}.p-button-rounded{border-radius:var(--p-button-rounded-border-radius);}.p-button-secondary{background:var(--p-button-secondary-background);border:1px solid var(--p-button-secondary-border-color);color:var(--p-button-secondary-color);}.p-button-secondary:not(:disabled):hover{background:var(--p-button-secondary-hover-background);border:1px solid var(--p-button-secondary-hover-border-color);color:var(--p-button-secondary-hover-color);}.p-button-secondary:not(:disabled):active{background:var(--p-button-secondary-active-background);border:1px solid var(--p-button-secondary-active-border-color);color:var(--p-button-secondary-active-color);}.p-button-secondary:focus-visible{outline-color:var(--p-button-secondary-focus-ring-color);box-shadow:var(--p-button-secondary-focus-ring-shadow);}.p-button-success{background:var(--p-button-success-background);border:1px solid var(--p-button-success-border-color);color:var(--p-button-success-color);}.p-button-success:not(:disabled):hover{background:var(--p-button-success-hover-background);border:1px solid var(--p-button-success-hover-border-color);color:var(--p-button-success-hover-color);}.p-button-success:not(:disabled):active{background:var(--p-button-success-active-background);border:1px solid var(--p-button-success-active-border-color);color:var(--p-button-success-active-color);}.p-button-success:focus-visible{outline-color:var(--p-button-success-focus-ring-color);box-shadow:var(--p-button-success-focus-ring-shadow);}.p-button-info{background:var(--p-button-info-background);border:1px solid var(--p-button-info-border-color);color:var(--p-button-info-color);}.p-button-info:not(:disabled):hover{background:var(--p-button-info-hover-background);border:1px solid var(--p-button-info-hover-border-color);color:var(--p-button-info-hover-color);}.p-button-info:not(:disabled):active{background:var(--p-button-info-active-background);border:1px solid var(--p-button-info-active-border-color);color:var(--p-button-info-active-color);}.p-button-info:focus-visible{outline-color:var(--p-button-info-focus-ring-color);box-shadow:var(--p-button-info-focus-ring-shadow);}.p-button-warn{background:var(--p-button-warn-background);border:1px solid var(--p-button-warn-border-color);color:var(--p-button-warn-color);}.p-button-warn:not(:disabled):hover{background:var(--p-button-warn-hover-background);border:1px solid var(--p-button-warn-hover-border-color);color:var(--p-button-warn-hover-color);}.p-button-warn:not(:disabled):active{background:var(--p-button-warn-active-background);border:1px solid var(--p-button-warn-active-border-color);color:var(--p-button-warn-active-color);}.p-button-warn:focus-visible{outline-color:var(--p-button-warn-focus-ring-color);box-shadow:var(--p-button-warn-focus-ring-shadow);}.p-button-help{background:var(--p-button-help-background);border:1px solid var(--p-button-help-border-color);color:var(--p-button-help-color);}.p-button-help:not(:disabled):hover{background:var(--p-button-help-hover-background);border:1px solid var(--p-button-help-hover-border-color);color:var(--p-button-help-hover-color);}.p-button-help:not(:disabled):active{background:var(--p-button-help-active-background);border:1px solid var(--p-button-help-active-border-color);color:var(--p-button-help-active-color);}.p-button-help:focus-visible{outline-color:var(--p-button-help-focus-ring-color);box-shadow:var(--p-button-help-focus-ring-shadow);}.p-button-danger{background:var(--p-button-danger-background);border:1px solid var(--p-button-danger-border-color);color:var(--p-button-danger-color);}.p-button-danger:not(:disabled):hover{background:var(--p-button-danger-hover-background);border:1px solid var(--p-button-danger-hover-border-color);color:var(--p-button-danger-hover-color);}.p-button-danger:not(:disabled):active{background:var(--p-button-danger-active-background);border:1px solid var(--p-button-danger-active-border-color);color:var(--p-button-danger-active-color);}.p-button-danger:focus-visible{outline-color:var(--p-button-danger-focus-ring-color);box-shadow:var(--p-button-danger-focus-ring-shadow);}.p-button-contrast{background:var(--p-button-contrast-background);border:1px solid var(--p-button-contrast-border-color);color:var(--p-button-contrast-color);}.p-button-contrast:not(:disabled):hover{background:var(--p-button-contrast-hover-background);border:1px solid var(--p-button-contrast-hover-border-color);color:var(--p-button-contrast-hover-color);}.p-button-contrast:not(:disabled):active{background:var(--p-button-contrast-active-background);border:1px solid var(--p-button-contrast-active-border-color);color:var(--p-button-contrast-active-color);}.p-button-contrast:focus-visible{outline-color:var(--p-button-contrast-focus-ring-color);box-shadow:var(--p-button-contrast-focus-ring-shadow);}.p-button-outlined{background:transparent;border-color:var(--p-button-outlined-primary-border-color);color:var(--p-button-outlined-primary-color);}.p-button-outlined:not(:disabled):hover{background:var(--p-button-outlined-primary-hover-background);border-color:var(--p-button-outlined-primary-border-color);color:var(--p-button-outlined-primary-color);}.p-button-outlined:not(:disabled):active{background:var(--p-button-outlined-primary-active-background);border-color:var(--p-button-outlined-primary-border-color);color:var(--p-button-outlined-primary-color);}.p-button-outlined.p-button-secondary{border-color:var(--p-button-outlined-secondary-border-color);color:var(--p-button-outlined-secondary-color);}.p-button-outlined.p-button-secondary:not(:disabled):hover{background:var(--p-button-outlined-secondary-hover-background);border-color:var(--p-button-outlined-secondary-border-color);color:var(--p-button-outlined-secondary-color);}.p-button-outlined.p-button-secondary:not(:disabled):active{background:var(--p-button-outlined-secondary-active-background);border-color:var(--p-button-outlined-secondary-border-color);color:var(--p-button-outlined-secondary-color);}.p-button-outlined.p-button-success{border-color:var(--p-button-outlined-success-border-color);color:var(--p-button-outlined-success-color);}.p-button-outlined.p-button-success:not(:disabled):hover{background:var(--p-button-outlined-success-hover-background);border-color:var(--p-button-outlined-success-border-color);color:var(--p-button-outlined-success-color);}.p-button-outlined.p-button-success:not(:disabled):active{background:var(--p-button-outlined-success-active-background);border-color:var(--p-button-outlined-success-border-color);color:var(--p-button-outlined-success-color);}.p-button-outlined.p-button-info{border-color:var(--p-button-outlined-info-border-color);color:var(--p-button-outlined-info-color);}.p-button-outlined.p-button-info:not(:disabled):hover{background:var(--p-button-outlined-info-hover-background);border-color:var(--p-button-outlined-info-border-color);color:var(--p-button-outlined-info-color);}.p-button-outlined.p-button-info:not(:disabled):active{background:var(--p-button-outlined-info-active-background);border-color:var(--p-button-outlined-info-border-color);color:var(--p-button-outlined-info-color);}.p-button-outlined.p-button-warn{border-color:var(--p-button-outlined-warn-border-color);color:var(--p-button-outlined-warn-color);}.p-button-outlined.p-button-warn:not(:disabled):hover{background:var(--p-button-outlined-warn-hover-background);border-color:var(--p-button-outlined-warn-border-color);color:var(--p-button-outlined-warn-color);}.p-button-outlined.p-button-warn:not(:disabled):active{background:var(--p-button-outlined-warn-active-background);border-color:var(--p-button-outlined-warn-border-color);color:var(--p-button-outlined-warn-color);}.p-button-outlined.p-button-help{border-color:var(--p-button-outlined-help-border-color);color:var(--p-button-outlined-help-color);}.p-button-outlined.p-button-help:not(:disabled):hover{background:var(--p-button-outlined-help-hover-background);border-color:var(--p-button-outlined-help-border-color);color:var(--p-button-outlined-help-color);}.p-button-outlined.p-button-help:not(:disabled):active{background:var(--p-button-outlined-help-active-background);border-color:var(--p-button-outlined-help-border-color);color:var(--p-button-outlined-help-color);}.p-button-outlined.p-button-danger{border-color:var(--p-button-outlined-danger-border-color);color:var(--p-button-outlined-danger-color);}.p-button-outlined.p-button-danger:not(:disabled):hover{background:var(--p-button-outlined-danger-hover-background);border-color:var(--p-button-outlined-danger-border-color);color:var(--p-button-outlined-danger-color);}.p-button-outlined.p-button-danger:not(:disabled):active{background:var(--p-button-outlined-danger-active-background);border-color:var(--p-button-outlined-danger-border-color);color:var(--p-button-outlined-danger-color);}.p-button-outlined.p-button-contrast{border-color:var(--p-button-outlined-contrast-border-color);color:var(--p-button-outlined-contrast-color);}.p-button-outlined.p-button-contrast:not(:disabled):hover{background:var(--p-button-outlined-contrast-hover-background);border-color:var(--p-button-outlined-contrast-border-color);color:var(--p-button-outlined-contrast-color);}.p-button-outlined.p-button-contrast:not(:disabled):active{background:var(--p-button-outlined-contrast-active-background);border-color:var(--p-button-outlined-contrast-border-color);color:var(--p-button-outlined-contrast-color);}.p-button-outlined.p-button-plain{border-color:var(--p-button-outlined-plain-border-color);color:var(--p-button-outlined-plain-color);}.p-button-outlined.p-button-plain:not(:disabled):hover{background:var(--p-button-outlined-plain-hover-background);border-color:var(--p-button-outlined-plain-border-color);color:var(--p-button-outlined-plain-color);}.p-button-outlined.p-button-plain:not(:disabled):active{background:var(--p-button-outlined-plain-active-background);border-color:var(--p-button-outlined-plain-border-color);color:var(--p-button-outlined-plain-color);}.p-button-text{background:transparent;border-color:transparent;color:var(--p-button-text-primary-color);}.p-button-text:not(:disabled):hover{background:var(--p-button-text-primary-hover-background);border-color:transparent;color:var(--p-button-text-primary-color);}.p-button-text:not(:disabled):active{background:var(--p-button-text-primary-active-background);border-color:transparent;color:var(--p-button-text-primary-color);}.p-button-text.p-button-secondary{background:transparent;border-color:transparent;color:var(--p-button-text-secondary-color);}.p-button-text.p-button-secondary:not(:disabled):hover{background:var(--p-button-text-secondary-hover-background);border-color:transparent;color:var(--p-button-text-secondary-color);}.p-button-text.p-button-secondary:not(:disabled):active{background:var(--p-button-text-secondary-active-background);border-color:transparent;color:var(--p-button-text-secondary-color);}.p-button-text.p-button-success{background:transparent;border-color:transparent;color:var(--p-button-text-success-color);}.p-button-text.p-button-success:not(:disabled):hover{background:var(--p-button-text-success-hover-background);border-color:transparent;color:var(--p-button-text-success-color);}.p-button-text.p-button-success:not(:disabled):active{background:var(--p-button-text-success-active-background);border-color:transparent;color:var(--p-button-text-success-color);}.p-button-text.p-button-info{background:transparent;border-color:transparent;color:var(--p-button-text-info-color);}.p-button-text.p-button-info:not(:disabled):hover{background:var(--p-button-text-info-hover-background);border-color:transparent;color:var(--p-button-text-info-color);}.p-button-text.p-button-info:not(:disabled):active{background:var(--p-button-text-info-active-background);border-color:transparent;color:var(--p-button-text-info-color);}.p-button-text.p-button-warn{background:transparent;border-color:transparent;color:var(--p-button-text-warn-color);}.p-button-text.p-button-warn:not(:disabled):hover{background:var(--p-button-text-warn-hover-background);border-color:transparent;color:var(--p-button-text-warn-color);}.p-button-text.p-button-warn:not(:disabled):active{background:var(--p-button-text-warn-active-background);border-color:transparent;color:var(--p-button-text-warn-color);}.p-button-text.p-button-help{background:transparent;border-color:transparent;color:var(--p-button-text-help-color);}.p-button-text.p-button-help:not(:disabled):hover{background:var(--p-button-text-help-hover-background);border-color:transparent;color:var(--p-button-text-help-color);}.p-button-text.p-button-help:not(:disabled):active{background:var(--p-button-text-help-active-background);border-color:transparent;color:var(--p-button-text-help-color);}.p-button-text.p-button-danger{background:transparent;border-color:transparent;color:var(--p-button-text-d
61anger-color);}.p-button-text.p-button-danger:not(:disabled):hover{background:var(--p-button-text-danger-hover-background);border-color:transparent;color:var(--p-button-text-danger-color);}.p-button-text.p-button-danger:not(:disabled):active{background:var(--p-button-text-danger-active-background);border-color:transparent;color:var(--p-button-text-danger-color);}.p-button-text.p-button-contrast{background:transparent;border-color:transparent;color:var(--p-button-text-contrast-color);}.p-button-text.p-button-contrast:not(:disabled):hover{background:var(--p-button-text-contrast-hover-background);border-color:transparent;color:var(--p-button-text-contrast-color);}.p-button-text.p-button-contrast:not(:disabled):active{background:var(--p-button-text-contrast-active-background);border-color:transparent;color:var(--p-button-text-contrast-color);}.p-button-text.p-button-plain{background:transparent;border-color:transparent;color:var(--p-button-text-plain-color);}.p-button-text.p-button-plain:not(:disabled):hover{background:var(--p-button-text-plain-hover-background);border-color:transparent;color:var(--p-button-text-plain-color);}.p-button-text.p-button-plain:not(:disabled):active{background:var(--p-button-text-plain-active-background);border-color:transparent;color:var(--p-button-text-plain-color);}.p-button-link{background:transparent;border-color:transparent;color:var(--p-button-link-color);}.p-button-link:not(:disabled):hover{background:transparent;border-color:transparent;color:var(--p-button-link-hover-color);}.p-button-link:not(:disabled):hover .p-button-label{text-decoration:underline;}.p-button-link:not(:disabled):active{background:transparent;border-color:transparent;color:var(--p-button-link-active-color);}</style><style type="text/css" data-primeng-style-id="inputtext-variables">:root,:host{--p-inputtext-font-size:var(--p-form-field-font-size);--p-inputtext-font-weight:var(--p-form-field-font-weight);--p-inputtext-background:var(--p-form-field-background);--p-inputtext-disabled-background:var(--p-form-field-disabled-background);--p-inputtext-filled-background:var(--p-form-field-filled-background);--p-inputtext-filled-hover-background:var(--p-form-field-filled-hover-background);--p-inputtext-filled-focus-background:var(--p-form-field-filled-focus-background);--p-inputtext-border-color:var(--p-form-field-border-color);--p-inputtext-hover-border-color:var(--p-form-field-hover-border-color);--p-inputtext-focus-border-color:var(--p-form-field-focus-border-color);--p-inputtext-invalid-border-color:var(--p-form-field-invalid-border-color);--p-inputtext-color:var(--p-form-field-color);--p-inputtext-disabled-color:var(--p-form-field-disabled-color);--p-inputtext-placeholder-color:var(--p-form-field-placeholder-color);--p-inputtext-invalid-placeholder-color:var(--p-form-field-invalid-placeholder-color);--p-inputtext-shadow:var(--p-form-field-shadow);--p-inputtext-padding-x:var(--p-form-field-padding-x);--p-inputtext-padding-y:var(--p-form-field-padding-y);--p-inputtext-border-radius:var(--p-form-field-border-radius);--p-inputtext-transition-duration:var(--p-form-field-transition-duration);--p-inputtext-lg-font-size:var(--p-form-field-lg-font-size);--p-inputtext-lg-padding-x:var(--p-form-field-lg-padding-x);--p-inputtext-lg-padding-y:var(--p-form-field-lg-padding-y);--p-inputtext-sm-font-size:var(--p-form-field-sm-font-size);--p-inputtext-sm-padding-x:var(--p-form-field-sm-padding-x);--p-inputtext-sm-padding-y:var(--p-form-field-sm-padding-y);--p-inputtext-focus-ring-width:var(--p-form-field-focus-ring-width);--p-inputtext-focus-ring-style:var(--p-form-field-focus-ring-style);--p-inputtext-focus-ring-color:var(--p-form-field-focus-ring-color);--p-inputtext-focus-ring-offset:var(--p-form-field-focus-ring-offset);--p-inputtext-focus-ring-shadow:var(--p-form-field-focus-ring-shadow);}</style><style type="text/css" data-primeng-style-id="inputtext-style">.p-inputtext{font-weight:var(--p-inputtext-font-weight);font-size:var(--p-inputtext-font-size);color:var(--p-inputtext-color);background:var(--p-inputtext-background);padding-block:var(--p-inputtext-padding-y);padding-inline:var(--p-inputtext-padding-x);border:1px solid var(--p-inputtext-border-color);transition:background var(--p-inputtext-transition-duration),color var(--p-inputtext-transition-duration),border-color var(--p-inputtext-transition-duration),outline-color var(--p-inputtext-transition-duration),box-shadow var(--p-inputtext-transition-duration);appearance:none;border-radius:var(--p-inputtext-border-radius);outline-color:transparent;box-shadow:var(--p-inputtext-shadow);}.p-inputtext:enabled:hover{border-color:var(--p-inputtext-hover-border-color);}.p-inputtext:enabled:focus{border-color:var(--p-inputtext-focus-border-color);box-shadow:var(--p-inputtext-focus-ring-shadow);outline:var(--p-inputtext-focus-ring-width) var(--p-inputtext-focus-ring-style) var(--p-inputtext-focus-ring-color);outline-offset:var(--p-inputtext-focus-ring-offset);}.p-inputtext.p-invalid{border-color:var(--p-inputtext-invalid-border-color);}.p-inputtext.p-variant-filled{background:var(--p-inputtext-filled-background);}.p-inputtext.p-variant-filled:enabled:hover{background:var(--p-inputtext-filled-hover-background);}.p-inputtext.p-variant-filled:enabled:focus{background:var(--p-inputtext-filled-focus-background);}.p-inputtext:disabled{opacity:1;background:var(--p-inputtext-disabled-background);color:var(--p-inputtext-disabled-color);}.p-inputtext::placeholder{color:var(--p-inputtext-placeholder-color);}.p-inputtext.p-invalid::placeholder{color:var(--p-inputtext-invalid-placeholder-color);}.p-inputtext-sm{font-size:var(--p-inputtext-sm-font-size);padding-block:var(--p-inputtext-sm-padding-y);padding-inline:var(--p-inputtext-sm-padding-x);}.p-inputtext-lg{font-size:var(--p-inputtext-lg-font-size);padding-block:var(--p-inputtext-lg-padding-y);padding-inline:var(--p-inputtext-lg-padding-x);}.p-inputtext-fluid{width:100%;}</style><style type="text/css" data-primeng-style-id="select-variables">:root,:host{--p-select-empty-message-padding:var(--p-list-option-padding);--p-select-checkmark-color:var(--p-list-option-color);--p-select-checkmark-gutter-start:-0.25rem;--p-select-checkmark-gutter-end:0.25rem;--p-select-clear-icon-color:var(--p-form-field-icon-color);--p-select-option-group-background:var(--p-list-option-group-background);--p-select-option-group-color:var(--p-list-option-group-color);--p-select-option-group-font-weight:var(--p-list-option-group-font-weight);--p-select-option-group-font-size:var(--p-list-option-group-font-size);--p-select-option-group-padding:var(--p-list-option-group-padding);--p-select-option-font-size:var(--p-list-option-font-size);--p-select-option-font-weight:var(--p-list-option-font-weight);--p-select-option-focus-background:var(--p-list-option-focus-background);--p-select-option-selected-background:var(--p-list-option-selected-background);--p-select-option-selected-focus-background:var(--p-list-option-selected-focus-background);--p-select-option-color:var(--p-list-option-color);--p-select-option-focus-color:var(--p-list-option-focus-color);--p-select-option-selected-color:var(--p-list-option-selected-color);--p-select-option-selected-focus-color:var(--p-list-option-selected-focus-color);--p-select-option-selected-font-weight:var(--p-list-option-selected-font-weight);--p-select-option-padding:var(--p-list-option-padding);--p-select-option-border-radius:var(--p-list-option-border-radius);--p-select-list-padding:var(--p-list-padding);--p-select-list-gap:var(--p-list-gap);--p-select-list-header-padding:var(--p-list-header-padding);--p-select-overlay-background:var(--p-overlay-select-background);--p-select-overlay-border-color:var(--p-overlay-select-border-color);--p-select-overlay-border-radius:var(--p-overlay-select-border-radius);--p-select-overlay-color:var(--p-overlay-select-color);--p-select-overlay-shadow:var(--p-overlay-select-shadow);--p-select-dropdown-width:2.25rem;--p-select-dropdown-color:var(--p-form-field-icon-color);--p-select-font-size:var(--p-form-field-font-size);
61--p-select-font-weight:var(--p-form-field-font-weight);--p-select-background:var(--p-form-field-background);--p-select-disabled-background:var(--p-form-field-disabled-background);--p-select-filled-background:var(--p-form-field-filled-background);--p-select-filled-hover-background:var(--p-form-field-filled-hover-background);--p-select-filled-focus-background:var(--p-form-field-filled-focus-background);--p-select-border-color:var(--p-form-field-border-color);--p-select-hover-border-color:var(--p-form-field-hover-border-color);--p-select-focus-border-color:var(--p-form-field-focus-border-color);--p-select-invalid-border-color:var(--p-form-field-invalid-border-color);--p-select-color:var(--p-form-field-color);--p-select-disabled-color:var(--p-form-field-disabled-color);--p-select-placeholder-color:var(--p-form-field-placeholder-color);--p-select-invalid-placeholder-color:var(--p-form-field-invalid-placeholder-color);--p-select-shadow:var(--p-form-field-shadow);--p-select-padding-x:var(--p-form-field-padding-x);--p-select-padding-y:var(--p-form-field-padding-y);--p-select-border-radius:var(--p-form-field-border-radius);--p-select-transition-duration:var(--p-form-field-transition-duration);--p-select-lg-font-size:var(--p-form-field-lg-font-size);--p-select-lg-padding-x:var(--p-form-field-lg-padding-x);--p-select-lg-padding-y:var(--p-form-field-lg-padding-y);--p-select-sm-font-size:var(--p-form-field-sm-font-size);--p-select-sm-padding-x:var(--p-form-field-sm-padding-x);--p-select-sm-padding-y:var(--p-form-field-sm-padding-y);--p-select-focus-ring-width:var(--p-form-field-focus-ring-width);--p-select-focus-ring-style:var(--p-form-field-focus-ring-style);--p-select-focus-ring-color:var(--p-form-field-focus-ring-color);--p-select-focus-ring-offset:var(--p-form-field-focus-ring-offset);--p-select-focus-ring-shadow:var(--p-form-field-focus-ring-shadow);}</style><style type="text/css" data-primeng-style-id="select-style">.p-select{display:inline-flex;cursor:pointer;position:relative;user-select:none;background:var(--p-select-background);border:1px solid var(--p-select-border-color);transition:background var(--p-select-transition-duration),color var(--p-select-transition-duration),border-color var(--p-select-transition-duration),outline-color var(--p-select-transition-duration),box-shadow var(--p-select-transition-duration);border-radius:var(--p-select-border-radius);outline-color:transparent;box-shadow:var(--p-select-shadow);}.p-select:not(.p-disabled):hover{border-color:var(--p-select-hover-border-color);}.p-select:not(.p-disabled).p-focus{border-color:var(--p-select-focus-border-color);box-shadow:var(--p-select-focus-ring-shadow);outline:var(--p-select-focus-ring-width) var(--p-select-focus-ring-style) var(--p-select-focus-ring-color);outline-offset:var(--p-select-focus-ring-offset);}.p-select.p-variant-filled{background:var(--p-select-filled-background);}.p-select.p-variant-filled:not(.p-disabled):hover{background:var(--p-select-filled-hover-background);}.p-select.p-variant-filled:not(.p-disabled).p-focus{background:var(--p-select-filled-focus-background);}.p-select.p-invalid{border-color:var(--p-select-invalid-border-color);}.p-select.p-disabled{opacity:1;background:var(--p-select-disabled-background);}.p-select-clear-icon{align-self:center;color:var(--p-select-clear-icon-color);inset-inline-end:var(--p-select-dropdown-width);}.p-select-dropdown{display:flex;align-items:center;justify-content:center;flex-shrink:0;background:transparent;color:var(--p-select-dropdown-color);width:var(--p-select-dropdown-width);border-start-end-radius:var(--p-select-border-radius);border-end-end-radius:var(--p-select-border-radius);}.p-select-label{display:block;white-space:nowrap;overflow:hidden;flex:1 1 auto;width:1%;padding:var(--p-select-padding-y) var(--p-select-padding-x);text-overflow:ellipsis;cursor:pointer;color:var(--p-select-color);background:transparent;border:0 none;outline:0 none;font-weight:var(--p-select-font-weight);font-size:var(--p-select-font-size);}.p-select-label.p-placeholder{color:var(--p-select-placeholder-color);}.p-select.p-invalid .p-select-label.p-placeholder{color:var(--p-select-invalid-placeholder-color);}.p-select.p-disabled .p-select-label{color:var(--p-select-disabled-color);}.p-select-label-empty{overflow:hidden;opacity:0;}input.p-select-label{cursor:default;}.p-select-overlay{position:absolute;top:0;left:0;background:var(--p-select-overlay-background);color:var(--p-select-overlay-color);border:1px solid var(--p-select-overlay-border-color);border-radius:var(--p-select-overlay-border-radius);box-shadow:var(--p-select-overlay-shadow);min-width:100%;transform-origin:inherit;will-change:transform;}.p-select-header{padding:var(--p-select-list-header-padding);}.p-select-filter{width:100%;}.p-select-list-container{overflow:auto;}.p-select-option-group{cursor:auto;margin:0;padding:var(--p-select-option-group-padding);background:var(--p-select-option-group-background);color:var(--p-select-option-group-color);font-weight:var(--p-select-option-group-font-weight);font-size:var(--p-select-option-group-font-size);}.p-select-list{margin:0;padding:0;list-style-type:none;padding:var(--p-select-list-padding);gap:var(--p-select-list-gap);display:flex;flex-direction:column;}.p-select-option{cursor:pointer;font-weight:var(--p-select-option-font-weight);font-size:var(--p-select-option-font-size);white-space:nowrap;position:relative;overflow:hidden;display:flex;align-items:center;padding:var(--p-select-option-padding);border:0 none;color:var(--p-select-option-color);background:transparent;transition:background var(--p-list-option-transition-duration),color var(--p-list-option-transition-duration),border-color var(--p-list-option-transition-duration),box-shadow var(--p-list-option-transition-duration),outline-color var(--p-list-option-transition-duration);border-radius:var(--p-list-option-border-radius);}.p-select-option:not(.p-select-option-selected):not(.p-disabled).p-focus{background:var(--p-select-option-focus-background);color:var(--p-select-option-focus-color);}.p-select-option:not(.p-select-option-selected):not(.p-disabled):hover{background:var(--p-select-option-focus-background);color:var(--p-select-option-focus-color);}.p-select-option.p-select-option-selected{background:var(--p-select-option-selected-background);color:var(--p-select-option-selected-color);font-weight:var(--p-select-option-selected-font-weight);}.p-select-option.p-select-option-selected.p-focus{background:var(--p-select-option-selected-focus-background);color:var(--p-select-option-selected-focus-color);}.p-select-option-blank-icon{flex-shrink:0;}.p-select-option-check-icon{position:relative;flex-shrink:0;margin-inline-start:var(--p-select-checkmark-gutter-start);margin-inline-end:var(--p-select-checkmark-gutter-end);color:var(--p-select-checkmark-color);}.p-select-empty-message{padding:var(--p-select-empty-message-padding);font-weight:var(--p-select-option-font-weight);font-size:var(--p-select-option-font-size);}.p-select-fluid{display:flex;width:100%;}.p-select-sm .p-select-label{font-size:var(--p-select-sm-font-size);padding-block:var(--p-select-sm-padding-y);padding-inline:var(--p-select-sm-padding-x);}.p-select-sm .p-select-dropdown .p-icon{font-size:var(--p-select-sm-font-size);width:var(--p-select-sm-font-size);height:var(--p-select-sm-font-size);}.p-select-lg .p-select-label{font-size:var(--p-select-lg-font-size);padding-block:var(--p-select-lg-padding-y);padding-inline:var(--p-select-lg-padding-x);}.p-select-lg .p-select-dropdown .p-icon{font-size:var(--p-select-lg-font-size);width:var(--p-select-lg-font-size);height:var(--p-select-lg-font-size);}.p-floatlabel-in .p-select-filter{padding-block-start:var(--p-select-padding-y);padding-block-end:var(--p-select-padding-y);}</style><style type="text/css" data-primeng-style-id="textarea-variables">:root,:host{--p-textarea-font-size:var(--p-form-field-font-size);--p-textarea-font-weight:var(--p-form-field-font-weight);--p-textarea-background:var(--p-form-field-background);--p-textarea-disabled-background:var(--p-form-field-disabled-background);--p-textarea-filled-background:var(--p-form-field-filled-background);--p-textarea-filled-hover-background:var(--p-form-field-filled-hover-background);--p-textarea-filled-focus-background:var(--p-form-field-filled-focus-background);--p-textarea-border-color:var(--p-form-field-border-color);--p-textarea-hover-border-color:var(--p-form-field-hover-border-color);--p-textarea-focus-border-color:var(--p-form-field-focus-border-color);--p-textarea-invalid-border-color:var(--p-form-field-invalid-border-color);--p-textarea-color:var(--p-form-field-color);--p-textarea-disabled-color:var(--p-form-field-disabled-color);--p-textarea-placeholder-color:var(--p-form-field-placeholder-color);--p-textarea-invalid-placeholder-color:var(--p-form-field-invalid-placeholder-color);--p-textarea-shadow:var(--p-form-field-shadow);--p-textarea-padding-x:var(--p-form-field-padding-x);--p-textarea-padding-y:var(--p-form-field-padding-y);--p-textarea-border-radius:var(--p-form-field-border-radius);--p-textarea-transition-duration:var(--p-form-field-transition-duration);--p-textarea-lg-font-size:var(--p-form-field-lg-font-size);--p-textarea-lg-padding-x:var(--p-form-field-lg-padding-x);--p-textarea-lg-padding-y:var(--p-form-field-lg-padding-y);--p-textarea-sm-font-size:var(--p-form-field-sm-font-size);--p-textarea-sm-padding-x:var(--p-form-field-sm-padding-x);--p-textarea-sm-padding-y:var(--p-form-field-sm-padding-y);--p-textarea-focus-ring-width:var(--p-form-field-focus-ring-width);--p-textarea-focus-ring-style:var(--p-form-field-focus-ring-style);--p-textarea-focus-ring-color:var(--p-form-field-focus-ring-color);--p-textarea-focus-ring-offset:var(--p-form-field-focus-ring-offset);--p-textarea-focus-ring-shadow:var(--p-form-field-focus-ring-shadow);}</style><style type="text/css" data-primeng-style-id="textarea-style">.p-textarea{font-weight:var(--p-textarea-font-weight);font-size:var(--p-textarea-font-size);color:var(--p-textarea-color);background:var(--p-textarea-background);padding-block:var(--p-textarea-padding-y);padding-inline:var(--p-textarea-padding-x);border:1px solid var(--p-textarea-border-color);transition:background var(--p-textarea-transition-duration),color var(--p-textarea-transition-duration),border-color var(--p-textarea-transition-duration),outline-color var(--p-textarea-transition-duration),box-shadow var(--p-textarea-transition-duration);appearance:none;border-radius:var(--p-textarea-border-radius);outline-color:transparent;box-shadow:var(--p-textarea-shadow);}.p-textarea:enabled:hover{border-color:var(--p-textarea-hover-border-color);}.p-textarea:enabled:focus{border-color:var(--p-textarea-focus-border-color);box-shadow:var(--p-textarea-focus-ring-shadow);outline:var(--p-textarea-focus-ring-width) var(--p-textarea-focus-ring-style) var(--p-textarea-focus-ring-color);outline-offset:var(--p-textarea-focus-ring-offset);}.p-textarea.p-invalid{border-color:var(--p-textarea-invalid-border-color);}.p-textarea.p-variant-filled{background:var(--p-textarea-filled-background);}.p-textarea.p-variant-filled:enabled:hover{background:var(--p-textarea-filled-hover-background);}.p-textarea.p-variant-filled:enabled:focus{background:var(--p-textarea-filled-focus-background);}.p-textarea:disabled{opacity:1;background:var(--p-textarea-disabled-background);color:var(--p-textarea-disabled-color);}.p-textarea::placeholder{color:var(--p-textarea-placeholder-color);}.p-textarea.p-invalid::placeholder{color:var(--p-textarea-invalid-placeholder-color);}.p-textarea-fluid{width:100%;}.p-textarea-resizable{overflow:hidden;resize:none;}.p-textarea-sm{font-size:var(--p-textarea-sm-font-size);padding-block:var(--p-textarea-sm-padding-y);padding-inline:var(--p-textarea-sm-padding-x);}.p-textarea-lg{font-size:var(--p-textarea-lg-font-size);padding-block:var(--p-textarea-lg-padding-y);padding-inline:var(--p-textarea-lg-padding-x);}</style><style type="text/css" data-primeng-style-id="overlay-style">.p-overlay-modal{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;}.p-overlay-content{transform-origin:inherit;will-change:transform;}.p-component-overlay.p-component{position:relative;}.p-overlay-modal > .p-overlay-content{z-index:1;width:90%;}.p-overlay-top{align-items:flex-start;}.p-overlay-top-start{align-items:flex-start;justify-content:flex-start;}.p-overlay-top-end{align-items:flex-start;justify-content:flex-end;}.p-overlay-bottom{align-items:flex-end;}.p-overlay-bottom-start{align-items:flex-end;justify-content:flex-start;}.p-overlay-bottom-end{align-items:flex-end;justify-content:flex-end;}.p-overlay-left{justify-content:flex-start;}.p-overlay-left-start{justify-content:flex-start;align-items:flex-start;}.p-overlay-left-end{justify-content:flex-start;align-items:flex-end;}.p-overlay-right{justify-content:flex-end;}.p-overlay-right-start{justify-content:flex-end;align-items:flex-start;}.p-overlay-right-end{justify-content:flex-end;align-items:flex-end;}.p-overlay-content ~ .p-overlay-content{display:none;}</style><style type="text/css" data-primeng-style-id="tooltip-variables">:root,:host{--p-tooltip-max-width:12.5rem;--p-tooltip-gutter:0.25rem;--p-tooltip-shadow:var(--p-overlay-popover-shadow);--p-tooltip-padding:0.375rem 0.625rem;--p-tooltip-border-radius:var(--p-overlay-popover-border-radius);--p-tooltip-font-weight:var(--p-typography-font-weight);--p-tooltip-font-size:0.75rem;--p-tooltip-background:var(--p-surface-700);--p-tooltip-color:var(--p-surface-0);}</style><style type="text/css" data-primeng-style-id="tooltip-style">.p-tooltip{position:absolute;display:none;max-width:var(--p-tooltip-max-width);}.p-tooltip-right,.p-tooltip-left{padding:0 var(--p-tooltip-gutter);}.p-tooltip-top,.p-tooltip-bottom{padding:var(--p-tooltip-gutter) 0;}.p-tooltip-text{white-space:pre-line;word-break:break-word;background:var(--p-tooltip-background);color:var(--p-tooltip-color);padding:var(--p-tooltip-padding);box-shadow:var(--p-tooltip-shadow);border-radius:var(--p-tooltip-border-radius);font-weight:var(--p-tooltip-font-weight);font-size:var(--p-tooltip-font-size);}.p-tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}.p-tooltip-right .p-tooltip-arrow{margin-top:calc(-1 * var(--p-tooltip-gutter));border-width:var(--p-tooltip-gutter) var(--p-tooltip-gutter) var(--p-tooltip-gutter) 0;border-right-color:var(--p-tooltip-background);}.p-tooltip-left .p-tooltip-arrow{margin-top:calc(-1 * var(--p-tooltip-gutter));border-width:var(--p-tooltip-gutter) 0 var(--p-tooltip-gutter) var(--p-tooltip-gutter);border-left-color:var(--p-tooltip-background);}.p-tooltip-top .p-tooltip-arrow{margin-left:calc(-1 * var(--p-tooltip-gutter));border-width:var(--p-tooltip-gutter) var(--p-tooltip-gutter) 0 var(--p-tooltip-gutter);border-top-color:var(--p-tooltip-background);border-bottom-color:var(--p-tooltip-background);}.p-tooltip-bottom .p-tooltip-arrow{margin-left:calc(-1 * var(--p-tooltip-gutter));border-width:0 var(--p-tooltip-gutter) var(--p-tooltip-gutter) var(--p-tooltip-gutter);border-top-color:var(--p-tooltip-background);border-bottom-color:var(--p-tooltip-background);}</style></head> 62 <body style="height: auto; overflow: visible; background: #ffffff;"> 63 <style> 64 body, 65 html { 66 margin: 0; 67 padding: 0; 68 width: 100%; 69 height: 100%; 70 position: relative; 71 font-family: 'Noto Sans', sans-serif; 72 background-color: #14181f; 73 } 74 .joystick-container { 75 position: absolute; 76 z-index: 9999999; 77 } 78 /* Pre-bootstrap splash: replaced by Angular on bootstrap; swapped to an error 79 message by main.ts if bootstrap fails. Keeps the first paint from ever being 80 a blank white page (TASK-127). */ 81 #skyhub-splash { 82 position: fixed; 83 inset: 0; 84 display: flex; 85 flex-direction: column; 86 align-items: center; 87 justify-content: center; 88 gap: 1.5rem; 89 background-color: #14181f; 90 color: #e8eaed; 91 text-align: center; 92 } 93 #skyhub-splash .splash-title { 94 font-size: 1.5rem; 95 font-weight: 700; 96 letter-spacing: 0.35em; 97 margin-right: -0.35em; 98 } 99 #skyhub-splash .splash-spinner { 100 width: 42px;
100 101 height: 42px; 102 border: 3px solid rgba(232, 234, 237, 0.2); 103 border-top-color: #e8eaed; 104 border-radius: 50%; 105 animation: skyhub-splash-spin 0.9s linear infinite; 106 } 107 #skyhub-splash button { 108 background: #e8eaed; 109 color: #14181f; 110 border: none; 111 border-radius: 4px; 112 padding: 0.6rem 1.4rem; 113 font: inherit; 114 font-weight: 700; 115 cursor: pointer; 116 } 117 @keyframes skyhub-splash-spin { 118 to { 119 transform: rotate(360deg); 120 } 121 } 122 </style> 123 <app-root ng-version="22.0.6" _nghost-ng-c1303987019 ng-server-context="ssg"><p-toast _ngcontent-ng-c1303987019 data-p="top-right" data-position="top-right" style="bottom: false; position: fixed; right: 20px; top: 20px; --px-gap: 8px; --px-front-toast-height: 0px; --px-raise-factor: 1;" class="p-component p-toast p-toast-top-right" pc64 data-pc-section="root" data-pc-name="toast"><!----></p-toast><p-confirmdialog _ngcontent-ng-c1303987019 pc65 data-pc-section="host"><p-dialog role="alertdialog" pc66 data-pc-section="host"><!----></p-dialog></p-confirmdialog><router-outlet _ngcontent-ng-c1303987019></router-outlet><app-landing-page _nghost-ng-c1163080783><div _ngcontent-ng-c1163080783 class="landing"><app-site-header _ngcontent-ng-c1163080783 _nghost-ng-c3701912137><header _ngcontent-ng-c3701912137 class="site-header site-header--transparent"><div _ngcontent-ng-c3701912137 class="site-header__inner"><a _ngcontent-ng-c3701912137 routerlink="/" aria-label="SkyHub home" class="site-header__brand" href="/"><img _ngcontent-ng-c3701912137 src="/assets/logo/logo-landing-page-light.png" alt="SkyHub" class="site-header__logo"></a><button _ngcontent-ng-c3701912137 type="button" aria-label="Toggle navigation" class="site-header__burger" aria-expanded="false"><i _ngcontent-ng-c3701912137 class="pi pi-bars"></i></button><!----><nav _ngcontent-ng-c3701912137 aria-label="Primary" class="site-header__nav"><div _ngcontent-ng-c3701912137 class="site-header__links"><a _ngcontent-ng-c3701912137 routerlink="/" fragment="features" href="/#features">Features</a><a _ngcontent-ng-c3701912137 href="https://docs.skyhub.ai/" target="_blank" rel="noopener"> Docs </a><a _ngcontent-ng-c3701912137 target="_blank" rel="noopener" href="https://discord.gg/cehaEQHbP6"> Community </a></div><!----><div _ngcontent-ng-c3701912137 class="site-header__actions"><!----><a _ngcontent-ng-c3701912137 pbutton routerlink="/login" class="p-ripple p-button-text site-header__signin p-button p-component" href="/login" pc80 pc81 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c3701912137 pbuttonlabel class="p-button-label" pc82 data-pc-section="root" data-pc-name="buttonlabel">Sign in</span></a><a _ngcontent-ng-c3701912137 pbutton routerlink="/register" class="p-ripple site-header__cta p-button p-component" href="/register" pc83 pc84 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c3701912137 pbuttonlabel class="p-button-label" pc85 data-pc-section="root" data-pc-name="buttonlabel">Sign up</span></a><!----></div></nav></div></header></app-site-header><main _ngcontent-ng-c1163080783 class="landing__main"><section _ngcontent-ng-c1163080783 aria-labelledby="hero-title" class="hero"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 1440 900" preserveAspectRatio="xMidYMid slice" aria-hidden="true" focusable="false" class="hero__telemetry"><g _ngcontent-ng-c1163080783="" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" d="M -80 720 Q 320 520 720 660 T 1520 560"/><path _ngcontent-ng-c1163080783="" d="M -80 220 Q 360 380 760 240 T 1520 320"/><path _ngcontent-ng-c1163080783="" d="M 140 960 Q 560 720 940 830 T 1540 730"/></g><g _ngcontent-ng-c1163080783="" class="hero__telemetry-nodes"><circle _ngcontent-ng-c1163080783="" cx="320" cy="605" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="720" cy="660" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="1120" cy="705" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="350" cy="305" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="760" cy="240" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="1150" cy="190" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="550" cy="808" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="940" cy="830" r="4.5"/><circle _ngcontent-ng-c1163080783="" cx="1280" cy="860" r="4.5"/></g></svg><h1 _ngcontent-ng-c1163080783 id="hero-title" class="hero__title">Fly your entire fleet from one screen.</h1><p _ngcontent-ng-c1163080783 class="hero__sub"> Most fleets are flown one aircraft at a time, on software that only speaks to one brand. SkyHub puts all of them in one place â whoever made them. </p><div _ngcontent-ng-c1163080783 class="hero__actions"><a _ngcontent-ng-c1163080783 pbutton routerlink="/register" class="p-ripple hero__cta p-button p-component" href="/register" pc68 pc69 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c1163080783 pbuttonlabel class="p-button-label" pc70 data-
123pc-section="root" data-pc-name="buttonlabel">Start your 30-day evaluation</span></a><button _ngcontent-ng-c1163080783 type="button" pbutton data-cy="hero-contact" class="p-ripple p-button-outlined hero__secondary p-button p-component" pc71 pc72 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c1163080783 pbuttonlabel class="p-button-label" pc73 data-pc-section="root" data-pc-name="buttonlabel">Request a consultation</span></button></div><p _ngcontent-ng-c1163080783 class="hero__note"> The full platform for 30 days. No credit card, no hardware, no procurement cycle. </p><div _ngcontent-ng-c1163080783 class="hero__frame"><video _ngcontent-ng-c1163080783 src="/videos/skyhub-demo.mp4" poster="/images/skyhub-poster.webp" autoplay muted loop playsinline width="1136" height="480" aria-label="A minute of SkyHub commanding a fleet" class="hero__video"></video><div _ngcontent-ng-c1163080783 class="hero__controls"><button _ngcontent-ng-c1163080783 type="button" tabindex="-1" aria-hidden="true" class="hero__big-play"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-play"></i></button><!----><div _ngcontent-ng-c1163080783 class="hero__bar"><button _ngcontent-ng-c1163080783 type="button" class="hero__control hero__control--play" aria-label="Play video"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-play"></i></button><div _ngcontent-ng-c1163080783 role="slider" tabindex="0" aria-label="Seek" aria-valuemin="0" class="hero__seek" aria-valuemax="0" aria-valuenow="0" aria-valuetext="0:00 of 0:00"><div _ngcontent-ng-c1163080783 class="hero__seek-track"><div _ngcontent-ng-c1163080783 class="hero__seek-fill" style="width: 0%;"></div></div><div _ngcontent-ng-c1163080783 class="hero__seek-thumb" style="left: 0%;"></div></div><!----><button _ngcontent-ng-c1163080783 type="button" class="hero__control" aria-label="Unmute video"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-volume-off"></i></button><button _ngcontent-ng-c1163080783 type="button" class="hero__control" aria-label="Play fullscreen"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-expand"></i></button></div></div></div><button _ngcontent-ng-c1163080783 type="button" aria-label="Scroll to what SkyHub does" data-cy="hero-scroll-cue" class="hero__scroll-cue"><span _ngcontent-ng-c1163080783 class="hero__scroll-cue-text">Scroll</span><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-chevron-down"></i></button></section><section _ngcontent-ng-c1163080783 id="the-problem" aria-labelledby="problem-title" class="problem"><p _ngcontent-ng-c1163080783 class="section-eyebrow">THE PROBLEM</p><h2 _ngcontent-ng-c1163080783 id="problem-title" class="section-title">You answer for the fleet. Can you see it?</h2><div _ngcontent-ng-c1163080783 class="problem__list"><article _ngcontent-ng-c1163080783 class="problem-item"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="pr1-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/><circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g><g _ngcontent-ng-c1163080783="" id="pr1-op"><rect _ngcontent-ng-c1163080783="" x="-13" y="-9" width="26" height="17" rx="3"/><path _ngcontent-ng-c1163080783="" d="M -18 8 H 18"/></g></defs><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.55)" stroke-width="1.5" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 6" d="M 60 62 V 96" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 6" d="M 180 62 V 96" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 6" d="M 300 62 V 96" class="art-flow"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#pr1-ac" x="60" y="48"/><use _ngcontent-ng-c1163080783="" href="#pr1-ac" x="180" y="48"/><use _ngcontent-ng-c1163080783="" href="#pr1-ac" x="300" y="48"/></g><g _ngcontent-ng-c1163080783="" fill="#ffffff" stroke="rgba(59, 130, 246, 0.7)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#pr1-op" x="60" y="106"/><use _ngcontent-ng-c1163080783="" href="#pr1-op" x="180" y="106"/><use _ngcontent-ng-c1163080783="" href="#pr1-op" x="300" y="106"/></g></svg></div><h3 _ngcontent-ng-c1163080783>One aircraft, one operator</h3><p _ngcontent-ng-c1163080783> Every drone you add is another person in a field with a laptop. The fleet grows and the payroll grows with it, at exactly the same rate. </p></article><article _ngcontent-ng-c1163080783 class="problem-item"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="pr2-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/>
123<circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><g _ngcontent-ng-c1163080783="" fill="rgba(59, 130, 246, 0.05)" stroke="rgba(59, 130, 246, 0.6)" stroke-width="1.5"><rect _ngcontent-ng-c1163080783="" x="16" y="44" width="86" height="62" rx="12"/><rect _ngcontent-ng-c1163080783="" x="137" y="44" width="86" height="62" rx="12"/><rect _ngcontent-ng-c1163080783="" x="258" y="44" width="86" height="62" rx="12"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#pr2-ac" x="59" y="75"/><use _ngcontent-ng-c1163080783="" href="#pr2-ac" x="180" y="75"/><use _ngcontent-ng-c1163080783="" href="#pr2-ac" x="301" y="75"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5" stroke-linecap="round" class="art-blink"><path _ngcontent-ng-c1163080783="" d="M 104 75 H 114 M 125 75 H 135"/><path _ngcontent-ng-c1163080783="" d="M 225 75 H 235 M 246 75 H 256"/></g></svg></div><h3 _ngcontent-ng-c1163080783>Every brand its own software</h3><p _ngcontent-ng-c1163080783> The aircraft you bought this year does not talk to the one you bought last year. Nobody can tell you where everything is, because nothing is in one place. </p></article><article _ngcontent-ng-c1163080783 class="problem-item"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.62)" stroke-width="1.5" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" d="M 24 96 Q 60 60 96 74 T 150 66"/><path _ngcontent-ng-c1163080783="" d="M 232 62 Q 268 84 300 62 T 344 70"/></g><g _ngcontent-ng-c1163080783="" fill="rgba(59, 130, 246, 0.8)" stroke="none"><circle _ngcontent-ng-c1163080783="" cx="24" cy="96" r="3.2"/><circle _ngcontent-ng-c1163080783="" cx="150" cy="66" r="3.2"/><circle _ngcontent-ng-c1163080783="" cx="232" cy="62" r="3.2"/><circle _ngcontent-ng-c1163080783="" cx="344" cy="70" r="3.2"/></g><g _ngcontent-ng-c1163080783="" class="art-blink"><path _ngcontent-ng-c1163080783="" d="M 160 64 H 222" fill="none" stroke="rgba(59, 130, 246, 0.5)" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="2 9"/><text _ngcontent-ng-c1163080783="" x="191" y="50" text-anchor="middle" font-size="19" font-weight="700" fill="rgba(59, 130, 246, 0.85)">?</text></g><g _ngcontent-ng-c1163080783="" fill="#ffffff" stroke="rgba(59, 130, 246, 0.7)" stroke-width="1.5" stroke-linejoin="round"><path _ngcontent-ng-c1163080783="" d="M 168 100 h 34 a 4 4 0 0 1 4 4 v 26 a 4 4 0 0 1 -4 4 h -34 a 4 4 0 0 1 -4 -4 v -20 z"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.55)" stroke-width="1.5" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" d="M 174 106 V 114 M 182 106 V 114 M 190 106 V 114"/></g></svg></div><h3 _ngcontent-ng-c1163080783>No record when it counts</h3><p _ngcontent-ng-c1163080783> Somebody asks what the drone saw and when. The answer is on a memory card, in a vehicle, somewhere â and finding it takes a week. </p></article></div><p _ngcontent-ng-c1163080783 class="problem__stakes"> None of this is a flying problem. It is a visibility problem, and it gets more expensive with every aircraft you buy. </p></section><section _ngcontent-ng-c1163080783 id="who-its-for" aria-labelledby="audiences-title" class="audiences"><p _ngcontent-ng-c1163080783 class="section-eyebrow">WHO IT'S FOR</p><h2 _ngcontent-ng-c1163080783 id="audiences-title" class="section-title">Teams already flying every day</h2><div _ngcontent-ng-c1163080783 class="audiences__grid"><article _ngcontent-ng-c1163080783 class="audience-card"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="audience-card__art card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="fleet-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/>
123<circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.62)" stroke-width="1.5" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 8" d="M 64 40 L 180 75" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 8" d="M 88 116 L 180 75" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 8" d="M 296 38 L 180 75" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 8" d="M 272 114 L 180 75" class="art-flow"/></g><rect _ngcontent-ng-c1163080783="" x="163" y="58" width="34" height="34" rx="9" fill="#ffffff" stroke="rgba(59, 130, 246, 0.7)" stroke-width="1.5"/><circle _ngcontent-ng-c1163080783="" cx="180" cy="75" r="4" fill="none" stroke="rgba(59, 130, 246, 0.8)" stroke-width="1.5"/><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.8)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#fleet-ac" x="64" y="40"/><use _ngcontent-ng-c1163080783="" href="#fleet-ac" x="88" y="116"/><use _ngcontent-ng-c1163080783="" href="#fleet-ac" x="296" y="38"/><use _ngcontent-ng-c1163080783="" href="#fleet-ac" x="272" y="114"/></g></svg></div><h3 _ngcontent-ng-c1163080783>Robotics companies</h3><p _ngcontent-ng-c1163080783> You are building the robot, not the control room. Ship a finished operator interface, a video pipeline and an API with your aircraft â instead of spending a year of your engineers on the part your customers never buy you for. </p></article><article _ngcontent-ng-c1163080783 class="audience-card"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="audience-card__art card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="ps-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/><circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><path _ngcontent-ng-c1163080783="" d="M 60 0 V 150 M 120 0 V 150 M 180 0 V 150 M 240 0 V 150 M 300 0 V 150 M 0 37.5 H 360 M 0 75 H 360 M 0 112.5 H 360" fill="none" stroke="rgba(59, 130, 246, 0.28)" stroke-width="1"/><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.62)" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="3 5"><path _ngcontent-ng-c1163080783="" d="M 118 46 L 180 100"/><path _ngcontent-ng-c1163080783="" d="M 242 46 L 180 100"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgb(59, 130, 246)" stroke-opacity="0.3" stroke-width="1.5" class="art-pulse"><circle _ngcontent-ng-c1163080783="" cx="180" cy="100" r="22"/><circle _ngcontent-ng-c1163080783="" cx="180" cy="100" r="40"/><circle _ngcontent-ng-c1163080783="" cx="180" cy="100" r="58"/></g><circle _ngcontent-ng-c1163080783="" cx="180" cy="100" r="4.5" fill="rgba(59, 130, 246, 0.85)"/><path _ngcontent-ng-c1163080783="" d="M 180 88 V 92 M 180 108 V 112 M 168 100 H 172 M 188 100 H 192" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"/><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.8)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#ps-ac" x="118" y="46"/><use _ngcontent-ng-c1163080783="" href="#ps-ac" x="242" y="46"/></g></svg></div><h3 _ngcontent-ng-c1163080783>Government and public safety</h3><p _ngcontent-ng-c1163080783> One person runs several aircraft over a live scene and sees every camera and position at once. Runs on your own network, or entirely on hardware you own, when the footage cannot leave the building. </p></article><article _ngcontent-ng-c1163080783 class="audience-card"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="audience-card__art card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><linearGradient _ngcontent-ng-c1163080783="" id="ops-cone" x1="0" y1="0" x2="0" y2="1"><stop _ngcontent-ng-c1163080783="" offset="0" stop-color="rgb(59, 130, 246)" stop-opacity="0.18"/><stop _ngcontent-ng-c1163080783="" offset="1" stop-color="rgb(59, 130, 246)" stop-opacity="0"/></linearGradient><g _ngcontent-ng-c1163080783="" id="ops-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/>
123<circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><rect _ngcontent-ng-c1163080783="" x="28" y="18" width="212" height="114" rx="14" fill="rgba(59, 130, 246, 0.06)" stroke="rgba(59, 130, 246, 0.68)" stroke-width="1.5"/><path _ngcontent-ng-c1163080783="" d="M 122 64 L 96 106 L 148 106 Z" fill="url(#ops-cone)"/><path _ngcontent-ng-c1163080783="" d="M 46 34 H 222 V 50 H 46 V 66 H 222 V 82 H 46 V 98 H 222 V 114 H 46" fill="none" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="5 7" class="art-flow"/><use _ngcontent-ng-c1163080783="" href="#ops-ac" x="122" y="64" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"/><g _ngcontent-ng-c1163080783="" fill="#ffffff" stroke="rgba(59, 130, 246, 0.62)" stroke-width="1.5"><rect _ngcontent-ng-c1163080783="" x="258" y="30" width="46" height="36" rx="8"/><rect _ngcontent-ng-c1163080783="" x="276" y="54" width="46" height="36" rx="8"/></g><circle _ngcontent-ng-c1163080783="" cx="299" cy="72" r="7" fill="none" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5"/><circle _ngcontent-ng-c1163080783="" cx="299" cy="72" r="1.8" fill="rgba(59, 130, 246, 0.75)"/></svg></div><h3 _ngcontent-ng-c1163080783>Survey and inspection operators</h3><p _ngcontent-ng-c1163080783> Plan the flights, fly them, and keep every image, flight record and report together afterwards â so the job can be invoiced the day it lands instead of the week somebody finds the files. </p></article></div></section><section _ngcontent-ng-c1163080783 id="features" aria-labelledby="features-title" class="features"><p _ngcontent-ng-c1163080783 class="section-eyebrow">WHAT YOU GET</p><h2 _ngcontent-ng-c1163080783 id="features-title" class="section-title">What changes the day you switch</h2><div _ngcontent-ng-c1163080783 class="features__grid"><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-server"></i></div><div _ngcontent-ng-c1163080783 class="feature-card__diagram"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 620 260" preserveAspectRatio="xMidYMid meet" focusable="false" role="img" aria-label="Any MAVLink autopilot connects to SkyHub, which serves REST, WebSocket and MCP"><defs _ngcontent-ng-c1163080783="">
123<marker _ngcontent-ng-c1163080783="" id="dgm-arrow" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="5" markerHeight="5" orient="auto-start-reverse"><path _ngcontent-ng-c1163080783="" d="M 0 0 L 8 4 L 0 8 Z"/></marker></defs><g _ngcontent-ng-c1163080783="" stroke-linecap="round" marker-end="url(#dgm-arrow)" class="diagram-links"><path _ngcontent-ng-c1163080783="" d="M 132 60 C 160 60 160 130 186 130"/><path _ngcontent-ng-c1163080783="" d="M 132 130 H 186"/><path _ngcontent-ng-c1163080783="" d="M 132 200 C 160 200 160 130 186 130"/><path _ngcontent-ng-c1163080783="" d="M 316 130 C 344 130 344 60 372 60"/><path _ngcontent-ng-c1163080783="" d="M 316 130 H 372"/><path _ngcontent-ng-c1163080783="" d="M 316 130 C 344 130 344 200 372 200"/></g><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node"><rect _ngcontent-ng-c1163080783="" x="6" y="41" width="126" height="38" rx="12"/><text _ngcontent-ng-c1163080783="" x="69" y="66">ArduPilot</text></g><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node"><rect _ngcontent-ng-c1163080783="" x="6" y="111" width="126" height="38" rx="12"/><text _ngcontent-ng-c1163080783="" x="69" y="136">PX4</text></g><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node"><rect _ngcontent-ng-c1163080783="" x="6" y="181" width="126" height="38" rx="12"/><text _ngcontent-ng-c1163080783="" x="69" y="206">Auterion</text></g><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node diagram-node--hub"><rect _ngcontent-ng-c1163080783="" x="190" y="107" width="126" height="46" rx="14"/><text _ngcontent-ng-c1163080783="" x="253" y="137">SkyHub</text></g><a _ngcontent-ng-c1163080783="" href="https://docs.skyhub.ai/reference/api" target="_blank" rel="noopener"><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node diagram-node--wire"><rect _ngcontent-ng-c1163080783="" x="372" y="42" width="132" height="36" rx="18"/><text _ngcontent-ng-c1163080783="" x="438" y="66">REST</text></g></a><a _ngcontent-ng-c1163080783="" href="https://docs.skyhub.ai/reference/api" target="_blank" rel="noopener"><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node diagram-node--wire"><rect _ngcontent-ng-c1163080783="" x="372" y="112" width="132" height="36" rx="18"/><text _ngcontent-ng-c1163080783="" x="438" y="136">WebSocket</text></g></a><a _ngcontent-ng-c1163080783="" href="https://docs.skyhub.ai/" target="_blank" rel="noopener"><g _ngcontent-ng-c1163080783="" text-anchor="middle" class="diagram-node diagram-node--wire"><rect _ngcontent-ng-c1163080783="" x="372" y="182" width="132" height="36" rx="18"/><text _ngcontent-ng-c1163080783="" x="438" y="206">MCP</text></g></a></svg></div><!----><h3 _ngcontent-ng-c1163080783>Works with the aircraft you already own</h3><p _ngcontent-ng-c1163080783>ArduPilot, PX4, Auterion â if it speaks MAVLink, it connects. And everything SkyHub sees is available to your own software, your own dashboards or your AI agents, over REST, WebSocket and MCP.</p></article><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-send"></i></div><!----><h3 _ngcontent-ng-c1163080783>The whole fleet on one screen</h3><p _ngcontent-ng-c1163080783>Every aircraft, where it is and what it is doing, live. One person can send a dozen vehicles on their way without changing windows.</p></article><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-video"></i></div><!----><h3 _ngcontent-ng-c1163080783>See what the aircraft sees</h3><p _ngcontent-ng-c1163080783>Sub-second video from any vehicle to any browser â so the people who need to watch can, wherever they are, with nothing to install.</p></article><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-bolt"></i></div><!----><h3 _ngcontent-ng-c1163080783>Decisions made in the air</h3><p _ngcontent-ng-c1163080783>With an NVIDIA Jetson on board, detection and tracking happen during the flight instead of in an office afterwards.<
123/p></article><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-lock"></i></div><!----><h3 _ngcontent-ng-c1163080783>Your data stays yours</h3><p _ngcontent-ng-c1163080783>Encrypted end to end across a private network, with a SOC 2 path â and the option to run the entire platform on hardware you own.</p></article><article _ngcontent-ng-c1163080783 class="feature-card"><div _ngcontent-ng-c1163080783 class="feature-card__icon"><i _ngcontent-ng-c1163080783 aria-hidden="true" class="pi pi-code"></i></div><!----><h3 _ngcontent-ng-c1163080783>Build your own on top of it</h3><p _ngcontent-ng-c1163080783>A documented API your engineers can put behind your own interface, so SkyHub can be the plumbing and your product stays your product.</p></article><!----></div></section><section _ngcontent-ng-c1163080783 id="how-it-works" aria-labelledby="plan-title" class="plan"><p _ngcontent-ng-c1163080783 class="section-eyebrow">HOW IT WORKS</p><h2 _ngcontent-ng-c1163080783 id="plan-title" class="section-title">Flying in three steps</h2><div _ngcontent-ng-c1163080783 class="plan__steps"><article _ngcontent-ng-c1163080783 class="plan-step"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="pl1-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/><circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g>
123<marker _ngcontent-ng-c1163080783="" id="pl-arrow" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="5" markerHeight="5" orient="auto-start-reverse"><path _ngcontent-ng-c1163080783="" d="M 0 0 L 8 4 L 0 8 Z" fill="rgba(59, 130, 246, 0.75)"/></marker></defs><use _ngcontent-ng-c1163080783="" href="#pl1-ac" x="74" y="75" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"/><path _ngcontent-ng-c1163080783="" d="M 96 75 H 210" fill="none" stroke="rgba(59, 130, 246, 0.7)" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="5 7" marker-end="url(#pl-arrow)" class="art-flow"/><rect _ngcontent-ng-c1163080783="" x="222" y="56" width="74" height="38" rx="12" fill="#ffffff" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5"/><circle _ngcontent-ng-c1163080783="" cx="259" cy="75" r="4.5" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5"/></svg></div><h3 _ngcontent-ng-c1163080783>Connect</h3><p _ngcontent-ng-c1163080783> Point an aircraft at SkyHub. If it speaks MAVLink it appears in your fleet, and most do â there is nothing to install on the drone. </p></article><article _ngcontent-ng-c1163080783 class="plan-step"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="pl2-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/><circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><rect _ngcontent-ng-c1163080783="" x="52" y="26" width="256" height="100" rx="12" fill="#ffffff" stroke="rgba(59, 130, 246, 0.68)" stroke-width="1.5"/><path _ngcontent-ng-c1163080783="" d="M 52 48 H 308" fill="none" stroke="rgba(59, 130, 246, 0.45)" stroke-width="1.5"/><g _ngcontent-ng-c1163080783="" fill="rgba(59, 130, 246, 0.55)"><circle _ngcontent-ng-c1163080783="" cx="66" cy="37" r="2.6"/><circle _ngcontent-ng-c1163080783="" cx="76" cy="37" r="2.6"/><circle _ngcontent-ng-c1163080783="" cx="86" cy="37" r="2.6"/></g><path _ngcontent-ng-c1163080783="" d="M 104 48 V 126 M 156 48 V 126 M 208 48 V 126 M 260 48 V 126 M 52 74 H 308 M 52 100 H 308" fill="none" stroke="rgba(59, 130, 246, 0.22)" stroke-width="1"/><path _ngcontent-ng-c1163080783="" d="M 78 112 Q 130 70 178 92 T 286 66" fill="none" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5" stroke-linecap="round" stroke-dasharray="5 7" class="art-flow"/><use _ngcontent-ng-c1163080783="" href="#pl2-ac" x="178" y="92" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"/></svg></div><h3 _ngcontent-ng-c1163080783>Fly</h3><p _ngcontent-ng-c1163080783> Plan the mission, watch the video and command every vehicle from a browser. Your team needs an account, not a training course. </p></article><article _ngcontent-ng-c1163080783 class="plan-step"><div _ngcontent-ng-c1163080783 aria-hidden="true" class="card-art"><svg _ngcontent-ng-c1163080783="" viewBox="0 0 360 150" preserveAspectRatio="xMidYMid meet" focusable="false"><defs _ngcontent-ng-c1163080783=""><g _ngcontent-ng-c1163080783="" id="pl3-ac"><circle _ngcontent-ng-c1163080783="" cx="-6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="-6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="-6" cy="6" r="2.8"/><circle _ngcontent-ng-c1163080783="" cx="6" cy="6" r="2.8"/><path _ngcontent-ng-c1163080783="" d="M -4 -4 L 4 4 M 4 -4 L -4 4"/><circle _ngcontent-ng-c1163080783="" cx="0" cy="0" r="2.2"/></g></defs><rect _ngcontent-ng-c1163080783="" x="34" y="56" width="60" height="38" rx="12" fill="#ffffff" stroke="rgba(59, 130, 246, 0.75)" stroke-width="1.5"/><circle _ngcontent-ng-c1163080783="" cx="64" cy="75" r="4.5" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5"/><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.6)" stroke-width="1.5" stroke-linecap="round"><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 7" d="M 96 75 C 150 75 170 26 244 26" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 7" d="M 96 75 C 150 75 170 58 244 58" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 7" d="M 96 75 C 150 75 170 92 244 92" class="art-flow"/><path _ngcontent-ng-c1163080783="" stroke-dasharray="4 7" d="M 96 75 C 150 75 170 124 244
123124" class="art-flow"/></g><g _ngcontent-ng-c1163080783="" fill="none" stroke="rgba(59, 130, 246, 0.85)" stroke-width="1.5" stroke-linecap="round"><use _ngcontent-ng-c1163080783="" href="#pl3-ac" x="262" y="26"/><use _ngcontent-ng-c1163080783="" href="#pl3-ac" x="262" y="58"/><use _ngcontent-ng-c1163080783="" href="#pl3-ac" x="262" y="92"/><use _ngcontent-ng-c1163080783="" href="#pl3-ac" x="262" y="124"/></g></svg></div><h3 _ngcontent-ng-c1163080783>Scale</h3><p _ngcontent-ng-c1163080783> Add aircraft, sites and people as the operation grows. Move onto your own hardware whenever you want to â the software is the same either way. </p></article></div><p _ngcontent-ng-c1163080783 class="plan__promise"> You can walk all three steps today without buying anything. Start with a simulated aircraft, fly it in the browser, and connect a real one when you are satisfied. </p></section><section _ngcontent-ng-c1163080783 id="contact" aria-labelledby="contact-title" class="contact"><p _ngcontent-ng-c1163080783 class="section-eyebrow">CONTACT</p><h2 _ngcontent-ng-c1163080783 id="contact-title" class="section-title">Request a consultation</h2><p _ngcontent-ng-c1163080783 class="contact__lead"> Tell us what you fly and what you are trying to do with it, and we will tell you whether SkyHub fits â including when it does not. A person answers these, usually the same day. </p><app-contact-form _ngcontent-ng-c1163080783 _nghost-ng-c3866343456><!----><form _ngcontent-ng-c3866343456 novalidate class="contact-form ng-untouched ng-pristine ng-invalid"><div _ngcontent-ng-c3866343456 class="contact-form__row"><label _ngcontent-ng-c3866343456 class="contact-form__field"><span _ngcontent-ng-c3866343456>Name</span><input _ngcontent-ng-c3866343456 pinputtext type="text" formcontrolname="name" autocomplete="name" data-cy="contact-name" class="ng-untouched ng-pristine ng-invalid p-component p-inputtext" value data-p pc86 data-pc-name="inputtext" data-pc-section="root"><!----></label><label _ngcontent-ng-c3866343456 class="contact-form__field"><span _ngcontent-ng-c3866343456>Email</span><input _ngcontent-ng-c3866343456 pinputtext type="email" formcontrolname="email" autocomplete="email" data-cy="contact-email" class="ng-untouched ng-pristine ng-invalid p-component p-inputtext" value data-p pc87 data-pc-name="inputtext" data-pc-section="root"><!----></label></div><div _ngcontent-ng-c3866343456 class="contact-form__row"><label _ngcontent-ng-c3866343456 class="contact-form__field"><span _ngcontent-ng-c3866343456>Company <em _ngcontent-ng-c3866343456>(optional)</em></span><input _ngcontent-ng-c3866343456 pinputtext type="text" formcontrolname="company" autocomplete="organization" data-cy="contact-company" value class="ng-untouched ng-pristine ng-valid p-component p-inputtext" data-p pc88 data-pc-name="inputtext" data-pc-section="root"></label><label _ngcontent-ng-c3866343456 class="contact-form__field"><span _ngcontent-ng-c3866343456>Phone <em _ngcontent-ng-c3866343456>(optional)</em></span><input _ngcontent-ng-c3866343456 pinputtext type="tel" formcontrolname="phone" autocomplete="tel" data-cy="contact-phone" value class="ng-untouched ng-pristine ng-valid p-component p-inputtext" data-p pc89 data-pc-name="inputtext" data-pc-section="root"></label></div><div _ngcontent-ng-c3866343456 class="contact-form__field"><label _ngcontent-ng-c3866343456 for="contactOrgType">What kind of organisation are you?</label><p-select _ngcontent-ng-c3866343456 inputid="contactOrgType" formcontrolname="org_type" optionlabel="label" optionvalue="value" placeholder="Choose one" data-cy="contact-org-type" class="w-full p-component p-inputwrapper p-select ng-untouched ng-pristine ng-invalid" id="pn_id_19" data-p pc90 data-pc-section="root" data-pc-name="select"><span role="combobox" class="p-placeholder p-select-label" aria-disabled="false" id="contactOrgType" aria-label="Choose one" aria-haspopup="listbox" aria-expanded="false" tabindex="0" data-p="placeholder" data-pc-section="label" pc100 pc101> Choose one <!----><!----></span><!----><!----><!----><!----><div role="button" aria-label="dropdown trigger" aria-haspopup="listbox" class="p-select-dropdown" aria-expanded="false" data-pc-section="dropdown"><!----><!----><svg data-p-icon="chevron-down" class="p-select-dropdown-icon p-icon p-icon-chevron-down" data-pc-section="dropdownicon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M14.4697 6.96973C14.7626 6.67684 15.2374 6.67684 15.5303 6.96973C15.8232 7.26262 15.8232 7.73738 15.5303 8.03028L10.5303 13.0303C10.2374 13.3232 9.76262 13.3232 9.46972 13.0303L4.46972 8.03028C4.17683 7.73738 4.17683 7.26262 4.46972 6.96973C4.76262 6.67684 5.23738 6.67684 5.53027 6.96973L10 11.4395L14.4697 6.96973Z" fill="currentColor"/><!----><!----><!----><!----><!----><!----><!----><!----></svg><!----><!----><!----><!----></div><p-overlay pc97 data-pc-section="host"><!----><!----><!----></p-overlay></p-select><!----></div><div _ngcontent-ng-c3866343456 class="contact-form__row"><div _ngcontent-ng-c3866343456 class="contact-form__field"><label _ngcontent-ng-c3866343456 for="contactFleetSize">How many vehicles? <em _ngcontent-ng-c3866343456>(optional)</em></label><p-select _ngcontent-ng-c3866343456 inputid="contactFleetSize" formcontrolname="fleet_size" optionlabel="label" optionvalue="value" placeholder="Choose one" data-cy="contact-fleet-size" class="w-full p-component p-inputwrapper p-select ng-untouched ng-pristine ng-valid" id="pn_id_20" data-p pc91 data-pc-section="root" data-pc-name="select"><span role="combobox" class="p-placeholder p-select-label" aria-disabled="false" id="contactFleetSize" aria-label="Cho
123ose one" aria-haspopup="listbox" aria-expanded="false" tabindex="0" data-p="placeholder" data-pc-section="label" pc102 pc103> Choose one <!----><!----></span><!----><!----><!----><!----><div role="button" aria-label="dropdown trigger" aria-haspopup="listbox" class="p-select-dropdown" aria-expanded="false" data-pc-section="dropdown"><!----><!----><svg data-p-icon="chevron-down" class="p-select-dropdown-icon p-icon p-icon-chevron-down" data-pc-section="dropdownicon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M14.4697 6.96973C14.7626 6.67684 15.2374 6.67684 15.5303 6.96973C15.8232 7.26262 15.8232 7.73738 15.5303 8.03028L10.5303 13.0303C10.2374 13.3232 9.76262 13.3232 9.46972 13.0303L4.46972 8.03028C4.17683 7.73738 4.17683 7.26262 4.46972 6.96973C4.76262 6.67684 5.23738 6.67684 5.53027 6.96973L10 11.4395L14.4697 6.96973Z" fill="currentColor"/><!----><!----><!----><!----><!----><!----><!----><!----></svg><!----><!----><!----><!----></div><p-overlay pc98 data-pc-section="host"><!----><!----><!----></p-overlay></p-select></div><div _ngcontent-ng-c3866343456 class="contact-form__field"><label _ngcontent-ng-c3866343456 for="contactDeployment">Where would it run? <em _ngcontent-ng-c3866343456>(optional)</em></label><p-select _ngcontent-ng-c3866343456 inputid="contactDeployment" formcontrolname="deployment" optionlabel="label" optionvalue="value" placeholder="Choose one" data-cy="contact-deployment" class="w-full p-component p-inputwrapper p-select ng-untouched ng-pristine ng-valid" id="pn_id_21" data-p pc92 data-pc-section="root" data-pc-name="select"><span role="combobox" class="p-placeholder p-select-label" aria-disabled="false" id="contactDeployment" aria-label="Choose one" aria-haspopup="listbox" aria-expanded="false" tabindex="0" data-p="placeholder" data-pc-section="label" pc104 pc105> Choose one <!----><!----></span><!----><!----><!----><!----><div role="button" aria-label="dropdown trigger" aria-haspopup="listbox" class="p-select-dropdown" aria-expanded="false" data-pc-section="dropdown"><!----><!----><svg data-p-icon="chevron-down" class="p-select-dropdown-icon p-icon p-icon-chevron-down" data-pc-section="dropdownicon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M14.4697 6.96973C14.7626 6.67684 15.2374 6.67684 15.5303 6.96973C15.8232 7.26262 15.8232 7.73738 15.5303 8.03028L10.5303 13.0303C10.2374 13.3232 9.76262 13.3232 9.46972 13.0303L4.46972 8.03028C4.17683 7.73738 4.17683 7.26262 4.46972 6.96973C4.76262 6.67684 5.23738 6.67684 5.53027 6.96973L10 11.4395L14.4697 6.96973Z" fill="currentColor"/><!----><!----><!----><!----><!----><!----><!----><!----></svg><!----><!----><!----><!----></div><p-overlay pc99 data-pc-section="host"><!----><!----><!----></p-overlay></p-select></div></div><label _ngcontent-ng-c3866343456 class="contact-form__field"><span _ngcontent-ng-c3866343456>What are you flying, and what do you want it to do?</span><textarea _ngcontent-ng-c3866343456 ptextarea rows="5" formcontrolname="message" data-cy="contact-message" class="ng-untouched ng-pristine ng-invalid p-component p-textarea" pc93 data-pc-section="root" data-pc-name="textarea"></textarea><!----></label><div _ngcontent-ng-c3866343456 aria-hidden="true" class="contact-form__trap"><label _ngcontent-ng-c3866343456> Website <input _ngcontent-ng-c3866343456 type="text" formcontrolname="website" tabindex="-1" autocomplete="off" value class="ng-untouched ng-pristine ng-valid"></label></div><div _ngcontent-ng-c3866343456 class="contact-form__actions"><button _ngcontent-ng-c3866343456 type="submit" pbutton data-cy="contact-send" class="p-ripple p-button p-component" pc94 pc95 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c3866343456 pbuttonlabel class="p-button-label" pc96 data-pc-section="root" data-pc-name="buttonlabel">Send message</span></button><!----></div></form><!----></app-contact-form></section><section _ngcontent-ng-c1163080783 aria-labelledby="final-cta-title" class="final-cta"><h2 _ngcontent-ng-c1163080783 id="final-cta-title" class="section-title">See your whole fleet by this time tomorrow.</h2><div _ngcontent-ng-c1163080783 class="final-cta__actions"><a _ngcontent-ng-c1163080783 pbutton routerlink="/register" class="p-ripple hero__cta p-button p-component" href="/register" pc74 pc75 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c1163080783 pbuttonlabel class="p-button-label" pc76 data-
123pc-section="root" data-pc-name="buttonlabel">Start your 30-day evaluation</span></a><button _ngcontent-ng-c1163080783 type="button" pbutton data-cy="final-contact" class="p-ripple p-button-outlined p-button p-component" pc77 pc78 data-pc-name="button" data-pc-section="root"><span _ngcontent-ng-c1163080783 pbuttonlabel class="p-button-label" pc79 data-pc-section="root" data-pc-name="buttonlabel">Request a consultation</span></button></div></section></main><app-site-footer _ngcontent-ng-c1163080783 _nghost-ng-c788063136><!----><footer _ngcontent-ng-c788063136 class="site-footer"><div _ngcontent-ng-c788063136 class="site-footer__inner"><div _ngcontent-ng-c788063136 class="site-footer__brand"><img _ngcontent-ng-c788063136 src="/assets/logo/logo-landing-page-light.png" alt="SkyHub" class="site-footer__logo"><p _ngcontent-ng-c788063136 class="site-footer__tagline">The cloud fleet control system for autonomous drone operations.</p></div><nav _ngcontent-ng-c788063136 aria-label="Product" class="site-footer__col"><h4 _ngcontent-ng-c788063136>Product</h4><a _ngcontent-ng-c788063136 routerlink="/" fragment="features" href="/#features">Features</a><a _ngcontent-ng-c788063136 routerlink="/login" href="/login">Sign in</a></nav><nav _ngcontent-ng-c788063136 aria-label="Developers" class="site-footer__col"><h4 _ngcontent-ng-c788063136>Developers</h4><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://docs.skyhub.ai/drone-os/guides/getting-started">Documentation</a><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://docs.skyhub.ai/reference/api">API Reference</a><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://github.com/ID-Robots">GitHub</a></nav><nav _ngcontent-ng-c788063136 aria-label="Company" class="site-footer__col"><h4 _ngcontent-ng-c788063136>Company</h4><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://idrobots.com/about">About</a><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://idrobots.com/contact">Contact</a><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" href="https://discord.gg/cehaEQHbP6">Discord</a></nav></div><div _ngcontent-ng-c788063136 class="site-footer__funding"><div _ngcontent-ng-c788063136 class="site-footer__funding-band"><img _ngcontent-ng-c788063136 src="/images/funding/opic-innovations-competitiveness.jpg" alt="Operational Programme Innovations and Competitiveness" width="1280" height="524" loading="lazy" class="site-footer__funding-logo"><img _ngcontent-ng-c788063136 src="/images/funding/fund-of-funds-fmfib.jpg" alt="Fund of Funds â Fun
123d Manager of Financial Instruments in Bulgaria" width="1280" height="534" loading="lazy" class="site-footer__funding-logo"><img _ngcontent-ng-c788063136 src="/images/funding/eu-cofunded.jpg" alt="Co-funded by the European Union" width="1280" height="285" loading="lazy" class="site-footer__funding-logo site-footer__funding-logo--eu"></div><p _ngcontent-ng-c788063136 class="site-footer__funding-text">This company is backed by Vitosha Ventures â Fund 2 LP, whose operations are co-financed by the European Regional Development Fund under the Operational Programme 'Competitiveness and Innovation in Enterprises' 2021-2027, structured and mandated by the Fund Manager of Financial Instruments in Bulgaria (FMFIB).</p></div><div _ngcontent-ng-c788063136 class="site-footer__bar"><span _ngcontent-ng-c788063136>© 2026 ID Robots Ltd. All rights reserved.</span><a _ngcontent-ng-c788063136 target="_blank" rel="noopener" aria-label="GitHub" href="https://github.com/ID-Robots"><i _ngcontent-ng-c788063136 class="pi pi-github"></i></a></div></footer><!----></app-site-footer></div></app-landing-page><!----><!----></app-root> 124 125 <!-- 126 Everything a crawler gets without running JavaScript. 127 128 The landing page sets its title, description, Open Graph tags and JSON-LD from 129 TypeScript, which means anything that does not execute the bundle â most crawlers, 130 link unfurlers and the retrieval side of an LLM â saw a spinner, the word SKYHUB, 131 and "please enable JavaScript". The meta tags in <head> above are static and were 132 already indexable; the body was not. 133 134 This is a fallback, not a second copy of the site: it exists so the page says what 135 the product is when the app cannot run. Keep it short, keep it true, and when the 136 marketing copy changes materially, change it here too â a stale fallback is worse 137 than none, because it is the version that gets quoted. The real fix is prerendering 138 this route (Angular supports it for a static route like this one), at which point 139 this block should be deleted rather than left to rot. 140 --> 141 <noscript> 142 <!-- 143 The splash is plain markup with position: fixed and inset: 0, so without 144 JavaScript it never gets replaced and sits on top of everything below. A <style> 145 inside <noscript> applies only when scripting is off, which is exactly the case 146 that needs it. 147 --> 148 <style> 149 #skyhub-splash { display: none !important; } 150 .noscript-fallback { 151 position: relative; 152 z-index: 1; 153 max-width: 46rem; 154 margin: 0 auto; 155 padding: 2.5rem 1.5rem 4rem; 156 color: #e8eaed; 157 font-family: 'Noto Sans', system-ui, sans-serif; 158 line-height: 1.6; 159 } 160 .noscript-fallback h1 { font-size: 1.75rem; line-height: 1.25; } 161 .noscript-fallback h2 { font-size: 1.15rem; margin-top: 2rem; } 162 .noscript-fallback a { color: #85b2f9; } 163 .noscript-fallback li { margin-bottom: 0.4rem; } 164 </style> 165 <div class="noscript-fallback"> 166 <h1>SkyHub â cloud fleet control for autonomous drones</h1> 167 <p> 168 Plan missions, fly a whole fleet, and watch live telemetry and sub-second video on one 169 screen â with any MAVLink autopilot. Runs in the browser: no installs, no vendor lock-in. 170 Built by <a href="https://idrobots.com/about">ID Robots</a>, who fly the same fleets it 171 commands. 172 </p> 173 174 <h2>Take command in three steps</h2> 175 <ol> 176 <li><strong>Connect</strong> â link any ArduPilot or PX4 vehicle, or start free with a simulated one.</li> 177 <li><strong>Plan</strong>
177 â draw missions, waypoints and geofences in the browser.</li> 178 <li><strong>Command</strong> â fly the fleet with live telemetry and video, from anywhere.</li> 179 </ol> 180 181 <h2>What it does</h2> 182 <ul> 183 <li><strong>Hardware-agnostic</strong> â any MAVLink autopilot: ArduPilot, PX4, Auterion.</li> 184 <li><strong>Real-time fleet control</strong> â live telemetry and mission coordination for unlimited vehicles at once.</li> 185 <li><strong>WebRTC video</strong> â sub-second video from any vehicle.</li> 186 <li><strong>Edge AI (Jetson)</strong> â NVIDIA Jetson integration for on-device inference.</li> 187 <li><strong>Enterprise security</strong> â WireGuard VPN and AES-256, with a SOC 2 path and on-premise deployment.</li> 188 <li><strong>Precision landing</strong> â e-ArUco marker detection for centimetre-accurate autonomous landing and docking.</li> 189 <li><strong>Open REST API</strong> â full API access for custom integrations.</li> 190 <li><strong>RTK GPS precision</strong> â centimetre-level positioning with RTK/PPK.</li> 191 <li><strong>SITL simulation</strong> â test against unlimited simulated vehicles before flying hardware.</li> 192 </ul> 193 194 <h2>More</h2> 195 <ul> 196 <li><a href="https://docs.skyhub.ai/">Documentation</a></li> 197 <li><a href="https://docs.skyhub.ai/reference/api">API reference</a></li> 198 <li><a href="https://docs.skyhub.ai/drone-os/guides/getting-started">Getting started on a vehicle</a></li> 199 <li><a href="https://github.com/ID-Robots">GitHub</a></li> 200 <li><a href="https://discord.gg/cehaEQHbP6">Community</a></li> 201 <!-- The page's contact form is a dialog, which is exactly the thing that does 202 not work in here. mailto is the honest fallback with scripting off. --> 203 <li><a href="mailto:[email protected]">Email us</a></li> 204 </ul> 205 206 <p><strong>SkyHub itself needs JavaScript to run.</strong> Enable it, or read the 207 <a href="https://docs.skyhub.ai/">documentation</a>, which is fully server-rendered.</p> 208 </div> 209 </noscript> 210 <link rel="modulepreload" href="chunk-4PBU4NYM.js"><link rel="modulepreload" href="chunk-JFMHMFTW.js"><link rel="modulepreload" href="chunk-6J3IYE3F.js"><link rel="modulepreload" href="chunk-LH7AH7ZB.js"><link rel="modulepreload" href="chunk-B6ZVE2WN.js"><link rel="modulepreload" href="chunk-FBARXP3G.js"><link rel="modulepreload" href="chunk-YWUQURBB.js"><link rel="modulepreload" href="chunk-2GQVOHQJ.js"><link rel="modulepreload" href="chunk-7GGPVKTS.js"><link rel="modulepreload" href="chunk-ZWZ44MLW.js">
210<script src="polyfills-5FDKUQTZ.js" type="module"></script>
210<script src="scripts-M23T66S7.js" defer></script>
210<script src="main-RHMMX4HP.js" type="module"></script>
210 211 212</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.