Get started
Introduction
Connect an AI app
Sign-in and permissions
How changes go live
Errors and limits
Choose Opmiz
Opmiz for AI agents
When to choose Opmiz
Capabilities and limits
Onboard a new user
Tutorials
Business website
Online store
From a screenshot or design
CMS-driven site
Interactive landing page
Blog or publishing site
Redesign a site
Move a site or catalogue
Agent guides
Responsive design
Pages, sections and themes
Structured content
Ecommerce
Screenshots and review
Draft or live
Revisions and recovery
Publish safely
Hand over to the owner
Agent integration
AI clients
Skills and instructions
Discovery and machine-readable docs
MCP tools
Site design
Pages and business details
Content
Products and stock
Orders
REST API
API overview
Endpoints
For owners
Managing AI apps
What's new
Agent guides
Good results come from a few decisions made early, and from knowing how styles behave at each screen width.
set_style writes to common, desktop, tablet, mobile, hover or focus, which shows while a field, button or link has the keyboard's focus. Desktop, tablet and mobile values override common, and builder-made nodes often have all of them. So a change sent only to common can seem to do nothing.Same value everywhere
breakpoints: ["desktop","tablet","mobile"] in one op.Different layouts
Clearing a value
value: null for that breakpoint.Reading what's there
get_node shows a node's styles per breakpoint.set_theme
set_token for brand colours, as shades follow.Text styles
add_text_styles in set_theme, up to 10 in a call. Apply them with set_style_links text_style.Text colour
set_style_links color_key.Tokens in set_style
{colors.primary} is written as its value at that moment, so a later theme change won't reach it. Style links and theme colour keys do follow the theme.Fonts
set_theme op. Add the font in an earlier op.Page background
Columns
add_element kind: "columns" with 2, 3, 4, 6, 1-2 or 2-1.Grids
display: "grid" and gridTemplateColumns, with one column on phones.Rows of items
display: "flex" and flexWrap: "wrap", with gap.Placing items
flex, flexGrow, flexBasis, order, gridColumn, gridRow, gridTemplateRows and gridAutoFlow place items in a row or a grid.Limited width
maxWidth with marginLeft and marginRight set to auto.Fluid sizes
clamp(), min() and max() work in lengths and text sizes.Not allowed
calc(), url(), var() and !important. They are refused.get_element_catalogue lists every accepted property, and which ones do nothing on a text or an image. Effects work within limits: transform scales up to 3, filter blurs up to 40px, and set_background takes up to 3 gradient layers, radial and striped ones too.objectFit: "cover" with a fixed height keeps images in a row level. Use set_settings load: "page_load" for the picture at the top of a page, and leave the rest lazy. Give each image meaningful alt text with set_image.WebkitLineClamp to keep card summaries level.1
2
3
4
5
6
set_background seems to do nothing, check the children, then take a screenshot.‹ Previous
Move a site or catalogue