diff --git a/packages/html-manager/src/libembed.ts b/packages/html-manager/src/libembed.ts
index d82167b57b..68ee63ecae 100644
--- a/packages/html-manager/src/libembed.ts
+++ b/packages/html-manager/src/libembed.ts
@@ -6,7 +6,16 @@ __webpack_public_path__ = (window as any).__jupyter_widgets_assets_path__ || __w
import 'font-awesome/css/font-awesome.css';
import '@lumino/widgets/style/index.css';
-import '@jupyter-widgets/controls/css/widgets.css';
+import '@jupyter-widgets/controls/css/widgets-base.css';
+
+// If lab variables are not found, we set them (we don't want to reset the variables if they are already defined)
+if (
+ getComputedStyle(document.documentElement).getPropertyValue(
+ '--jp-layout-color0'
+ ) === ''
+) {
+ require('@jupyter-widgets/controls/css/labvariables.css');
+}
// Used just for the typing. We must not import the javascript because we don't
// want to include it in the require embedding.