Quick answer: Add each USS in UXML via <Style src="..." /> or in C# via root.styleSheets.Add(stylesheet). Don’t rely on @import chaining at runtime. For app-wide styling, set Theme Style Sheet on the Panel Settings asset.

UI Builder preview shows your buttons styled correctly. Build runs — default unstyled. The USS used @import to chain in a theme; runtime ignored it.

The Symptom

UI Toolkit Document renders unstyled (white text, default fonts) at runtime even though UI Builder preview is styled. Or part of the styling applies and part doesn’t.

The Fix

Pattern 1: Explicit Style elements in UXML.

<UXML xmlns:ui="UnityEngine.UIElements">
  <Style src="theme.uss" />
  <Style src="buttons.uss" />
  <Style src="layout.uss" />
  <ui:VisualElement class="root"> ... </ui:VisualElement>
</UXML>

Each Style element loads its USS into the document. Order matters — later sheets override earlier ones.

Pattern 2: C# for runtime configuration.

public class UI : MonoBehaviour
{
    public UIDocument doc;
    public StyleSheet themeUss;
    public StyleSheet layoutUss;

    void Awake()
    {
        doc.rootVisualElement.styleSheets.Add(themeUss);
        doc.rootVisualElement.styleSheets.Add(layoutUss);
    }
}

Drag the USS assets into the inspector slots; load explicitly.

Pattern 3: Theme Style Sheet. For app-wide styling, edit the Panel Settings asset (UI Toolkit → Settings) and assign a TSS that includes all your USS via @import. The Theme system follows imports correctly.

Verifying

Build and run. Run the same scene in the Editor. Compare to UI Builder preview. If runtime is unstyled but Builder is styled, the imports aren’t resolving — switch to explicit Style elements.

“Style elements per UXML. Or styleSheets.Add in C#. Or TSS for app-wide. Skip @import at runtime.”

Related Issues

For Canvas Scaler blur, see Canvas blur. For TMP emoji, see TMP emoji.

Explicit USS list. Theme TSS. Runtime styled.