body is outside the [data-theme] scope, so var(--text-primary) on body always resolved to the dark :root value (#e8edf5, near-white). Elements inside [data-theme] inherited this white color in light mode, causing white-on-white text. Fix by moving background/color to .app-shell which is inside the theme scope.