6.9 – theme option breakpoint override emits `max-width:-1px` when base breakpoint isn't the largest

I noticed the new breakpoint values for theme options in 6.9, so I started updating my design system plugin to build off of them, and ran into this. Since it’s not in the documentation yet, I’m not sure whether it’s a legitimate bug or whether I’ve just stumbled onto something as yet unfinished.

What I’m trying to do is run the design system mobile-first — base breakpoint at the smallest size with overrides going up — since that’s how the rest of my type scale works.

Repro (Pro 6.9.0, Cornerstone 7.9.0):

  1. Theme Options → Layout & Design → Breakpoints → click the smallest (phone) icon to make it the base.
  2. In Layout, click the Site Width label to open its breakpoint popover, and set an override on any band above the base — say the 4th slot, 70% .
  3. Save and view the front end.

What I get:

@media screen and (max-width:-1px){ :root{ --x-layout-site-width:90%; } }

The media query is max-width:-1px , so it can never match and the override never applies. No error — it just silently doesn’t work.

What I expected: the override to come through as a min-width query, the way element-level breakpoints already do. Calling DeclarationReducer::resolveMediaQuery() with the same base and slot gives me @media screen and (min-width: 480px) , which is right.

Where I think it’s coming from: Breakpoints::generateBreakpointCSS() looks like it only handles overrides below the base. There’s no min-width -only branch, and the upward walk starts at $max = $base , only reassigning when it finds a populated slot or the base above the current one. With the base underneath, $max stays at the base and $maxw computes as $ranges[0] - 1 , hence -1 . The element path has explicit min-only, max-only and bounded branches plus a direction, and handles it fine — looks like the newer theme-options generator didn’t inherit that logic.

With the base left at the default (largest), everything works exactly as expected — I’ve got per-breakpoint theme options rendering correctly and it’s a big improvement for what I’m building. It’s only the non-default base that breaks.

I can definitely get that fixed. Can you send me a screenshot of your theme options setup so I can test a little more? Have a great day.