.hub-embed-wrap {
  position: relative;
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.hub-frame-wrap { position: relative; flex: 1; min-height: 0; }
.hub-frame { position: absolute; inset: 0; width: 100%; height: 100%; }
.hub-loading { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; gap: 10px; background: #f3f5f6; color: #425661; }
.hub-unavailable { width: 100%; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.hub-spinner { width: 28px; height: 28px; border: 3px solid #cfdddf; border-top-color: #16827e; border-radius: 50%; animation: hub-spin .75s linear infinite; }
.hub-message { font-size: 13px; }
.hub-unavailable .btn.hub-retry.btn-primary { display: block; min-width: 76px; margin: 0 auto; background-color: rgb(25, 85, 88) !important; border-color: rgb(25, 85, 88) !important; }
.hub-unavailable .btn.hub-retry.btn-primary:hover, .hub-unavailable .btn.hub-retry.btn-primary:focus, .hub-unavailable .btn.hub-retry.btn-primary:active { background-color: rgb(21, 72, 75) !important; border-color: rgb(21, 72, 75) !important; }
.hub-retry .fa { margin-right: 5px; }
@keyframes hub-spin { to { transform: rotate(360deg); } }
