Why we will not let you write custom CSS on your product page
Consumer product pages are themed with typed tokens rather than a stylesheet. The reason is the allergen block, and it is the one product decision we are not willing to negotiate.
The ask, and the answer
Most brands ask for a stylesheet within a week of seeing their first consumer product page, and the answer is no. Here is why, since a policy line on its own would be irritating.
Product pages are themed with a fixed set of typed tokens: colours, a type scale and a space
scale. There is no <style> you can reach and no class you can target.
Why a stylesheet is different from a token
A token has a type and a range. A stylesheet has neither.
The type scale and the space scale carry enforced floors, so a token set cannot shrink text below a legible size or collapse the space around a block, however it is filled in. A stylesheet can do both, in one line, by accident, on a page nobody re-reads before it goes live.
The block this protects is the allergen and safety information, which on some products is the reason the page exists at all. A theme that can make it small, faint or crowded is a theme that can make it invisible while the page still looks fine to whoever approved it.
What you can still change
More than most people expect: the palette, the type scale within its floors, the space scale within its floors, your logo and your product photography. It is a real theme, and two brands’ pages do not look alike.
What you cannot do is reach past it, and you are finding that out here rather than three weeks into a build.
The other half of the reason
Consumer pages make zero third-party requests. No analytics, no font CDN, no embedded media — third-party media renders as a link-out card instead. A custom stylesheet is an arbitrary URL away from breaking that, and it is enforced by a content security policy rather than by asking nicely.
A page that answers a scan is infrastructure. Infrastructure with an extension point is a page that can be broken by someone who was only trying to move a heading.
Run one of your own products through it
The fastest way to understand any of this is to put one of your own SKUs through it and look at the print files.
Read next
Our GS1 resolver conformance run
A dated run of GS1's public resolver conformance test suite against a live packagepage resolver — the result, the raw output, the one warning it returned, and the thing the suite does not test.
GS1-Conformant Resolver Standard 1.2.0
The resolver standard release packagepage is built and tested against, ratified in January 2026 — what it governs, and why it changes nothing about artwork already at a printer.