*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;background:#f5f7fa}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#00000059}.page-enter{opacity:0;transform:translateY(8px)}.page-enter-active{opacity:1;transform:translateY(0);transition:opacity .25s ease,transform .25s ease}.stat-card-blue{background:linear-gradient(135deg,#1e5aef,#00c2ff)}.stat-card-green{background:linear-gradient(135deg,#52c41a,#95de64)}.stat-card-orange{background:linear-gradient(135deg,#fa8c16,#ffd591)}.stat-card-red{background:linear-gradient(135deg,#f5222d,#ff7875)}.logo-text{font-size:16px;font-weight:700;color:#fff;letter-spacing:1px;white-space:nowrap;overflow:hidden}.logo-sub{font-size:11px;color:#ffffff80;letter-spacing:2px;margin-top:2px}.app-card{cursor:pointer;transition:all .25s ease;border:1px solid #f0f0f0}.app-card:hover{transform:translateY(-4px);box-shadow:0 12px 32px #1e5aef1f;border-color:#1e5aef}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.online{background:#52c41a;box-shadow:0 0 6px #52c41a80}.status-dot.offline{background:#ff4d4f}.status-dot.warning{background:#faad14;box-shadow:0 0 6px #faad1480}.ant-menu-dark.ant-menu-inline>.ant-menu-item{height:42px!important;line-height:42px!important;font-size:13px!important;font-weight:600!important;color:#ffffffe0!important;margin:2px 8px!important;width:calc(100% - 16px)!important;border-radius:6px!important}.ant-menu-dark.ant-menu-inline>.ant-menu-item:hover{background:#ffffff14!important;color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-item.ant-menu-item-selected{background:#1e5aefbf!important;color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-item .anticon{font-size:15px!important;color:#5b9cf6!important}.ant-menu-dark.ant-menu-inline>.ant-menu-item.ant-menu-item-selected .anticon{color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu{margin-top:4px!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu:first-child{margin-top:0!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title{height:42px!important;line-height:42px!important;font-size:13px!important;font-weight:600!important;color:#ffffffe0!important;background:#ffffff0a!important;margin:2px 8px!important;width:calc(100% - 16px)!important;border-radius:6px!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover{background:#ffffff17!important;color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title .anticon:not(.ant-menu-submenu-arrow){font-size:15px!important;color:#5b9cf6!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu>.ant-menu-submenu-title:hover .anticon:not(.ant-menu-submenu-arrow){color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu-open>.ant-menu-submenu-title{background:#1e5aef26!important;color:#fff!important}.ant-menu-dark.ant-menu-inline>.ant-menu-submenu-open>.ant-menu-submenu-title .anticon:not(.ant-menu-submenu-arrow){color:#7bb3ff!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item{height:36px!important;line-height:36px!important;font-size:12.5px!important;font-weight:400!important;color:#ffffff80!important;margin:1px 0!important;border-radius:0!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item:hover{color:#ffffffd1!important;background:#ffffff0f!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item .anticon{font-size:13px!important;color:#ffffff52!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item:hover .anticon{color:#ffffffa6!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item.ant-menu-item-selected{background:#1e5aef8c!important;color:#fff!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item.ant-menu-item-selected .anticon{color:#ffffffe6!important}.ant-menu-dark .ant-menu-sub.ant-menu-inline .ant-menu-item.ant-menu-item-selected:after{border-right-color:#5b9cf6!important;border-right-width:3px!important;opacity:1!important}
