Shopify POD personalization

Design Studio Custom CSS

Selectors, CSS variables, and copy-paste examples for the CHAOBROStudio Design block on product pages.

Last updated: June 17, 2026

CSS

Paste CSS into the **Custom CSS** field at the bottom of the CHAOBROStudio Design block in the theme editor. Changes apply to that block instance (or use .pod-design-studio to target all instances).

Quick start

  1. Online Store → Themes → Customize → open a **product** template.
  2. Select the **CHAOBROStudio Design** block → scroll to **Advanced styling → Custom CSS**.
  3. Use selectors from the tables below. Prefer CSS variables (e.g. --pds-confirm-bg) for colors and buttons.
  4. Save the theme and refresh the product page to preview.

Scoping your CSS

Each block root has id chaobro-pds-{blockId} (inspect the element in your browser). Prefix selectors with that id to style one block only. Use .pod-design-studio to style every Design Studio block on the store. All classes use the pod-design-studio__* BEM prefix to avoid clashes with your theme.

/* One block only */
#chaobro-pds-abc123 .pod-design-studio__btn--confirm {
  border-radius: 999px;
}

/* Every Design Studio on the store */
.pod-design-studio {
  --pds-accent: #0f766e;
}

CSS variables (recommended)

Set these on .pod-design-studio for theme-wide tweaks inside the component. They respect theme-aware mode and block size settings.

SelectorTargetsNotesCommon properties
--pds-accentPrimary accent colorConfirm button, success status, active accentscolor, background, border-color
--pds-accent-textText on accent surfacesUsually white or theme button textcolor
--pds-foregroundMain text colorInherited from theme when theme-awarecolor
--pds-mutedSecondary / hint textLabels, hints, status defaultcolor
--pds-backgroundPanel backgroundRoot card and inputsbackground, background-color
--pds-borderBordersCards, tabs, inputs, patternsborder-color
--pds-radius / --pds-radius-lgCorner radiusButtons, inputs, outer cardborder-radius
--pds-font-body / --pds-font-headingFontsSynced from theme or custom font listfont-family
--pds-confirm-bg / --pds-confirm-colorConfirm buttonOverride without changing global accentbackground, color, border-color
--pds-confirm-radiusConfirm button shapeFalls back to theme button radiusborder-radius
--pds-ui-text-scalePanel text scaleSet by ui_text_size block settingRead-only; use modifier classes instead
--pds-ui-button-scaleButton scaleSet by ui_button_size block settingRead-only; use modifier classes instead
--pds-print-overlay-opacityPrint area guideSet by print_area_opacity block setting (0–100)opacity (on overlay pseudo-element)

Class & selector reference

Stable hooks for layout, preview, tabs, fields, patterns, and actions. State classes (.is-active, .is-error) are toggled by JavaScript.

Root container

SelectorTargetsNotesCommon properties
.pod-design-studioEntire Design Studio cardOuter padding, border, shadow, base fontpadding, border, border-radius, background, box-shadow, font-size
#chaobro-pds-{blockId}Single block instance (recommended scope)Each block has id chaobro-pds- plus Shopify block id. Scope CSS to one product template block.#chaobro-pds-xxx .pod-design-studio__btn--confirm { ... }
.pod-design-studio.pod-design-studio--theme-awareTheme-aware modeAlways present on the root elementUse with CSS variables for theme sync
.pod-design-studio.is-confirmedAfter design confirmedAdded by JavaScript after successful savebox-shadow, outline

Header & intro

SelectorTargetsNotesCommon properties
.pod-design-studio__title-rowHeading rowFlex row with title and badgegap, align-items
.pod-design-studio__headingBlock heading (h3)From block setting「Heading」font-size, font-weight, color
.pod-design-studio__studio-badge「Design Studio」badgeSmall pill next to headingbackground, color, border-radius, font-size
.pod-design-studio__requiredRequired asteriskShown when required setting is oncolor
.pod-design-studio__introIntroduction textFrom block setting「Introduction」font-size, color, margin

Layout

SelectorTargetsNotesCommon properties
.pod-design-studio__layoutPreview + panel gridTwo columns on desktop; stacks on mobilegrid-template-columns, gap
.pod-design-studio__preview-wrapLive preview columnContains canvas shellpadding, background
.pod-design-studio__panelControls columnTabs and form fieldspadding, background, border-radius

Live preview & canvas

SelectorTargetsNotesCommon properties
.pod-design-studio__preview-headPreview header rowLabel + print area badgedisplay, justify-content
.pod-design-studio__preview-label「Live preview」 labelTranslated via localefont-size, font-weight
.pod-design-studio__preview-badge「Print area」 badgeIndicates customizable regionbackground, color, font-size
.pod-design-studio__canvas-shellCanvas wrapperSquare aspect area for mockupaspect-ratio, background, border-radius
.pod-design-studio__canvas<canvas> elementRenders mockup, text, image, patternwidth, height, cursor
.pod-design-studio__canvas.is-draggableDrag mode enabledWhen layer can be movedcursor: grab
.pod-design-studio__canvas.is-draggingWhile draggingActive drag statecursor: grabbing
.pod-design-studio__canvas-hintDrag hint below canvasHidden when not applicablefont-size, color

Tabs

SelectorTargetsNotesCommon properties
.pod-design-studio__tabsTab list containerText / Image / Patterndisplay, gap, flex-wrap
.pod-design-studio__tabEach tab buttonrole=tabpadding, border, background, font-size
.pod-design-studio__tab.is-activeSelected tabApplied to active panel tabbackground, border-color, color
.pod-design-studio__tab-iconTab icon (icon tab style)SVG icon wrapperwidth, height
.pod-design-studio__tab-labelTab text labelHidden in icon-only tab stylefont-size
.pod-design-studio__tab-panelTab content panelOne per tab; hidden attribute when inactivepadding, display
.pod-design-studio--tabs-buttonSolid button tab styleBlock setting「Tab style」Modifier on root
.pod-design-studio--tabs-squareSquare outline tabsBlock setting「Tab style」Modifier on root
.pod-design-studio--tabs-roundedRounded outline tabs (default)Block setting「Tab style」Modifier on root
.pod-design-studio--tabs-iconIcon-only tabsBlock setting「Tab style」Modifier on root

Form fields

SelectorTargetsNotesCommon properties
.pod-design-studio__fieldField wrapperLabel + control spacingmargin, gap
.pod-design-studio__field-gridMulti-column field rowe.g. color + sizegrid-template-columns, gap
.pod-design-studio__labelField labelsAll <label> and span labelsfont-size, font-weight, color
.pod-design-studio__hintHelper hint textPattern tab hintfont-size, color
.pod-design-studio__inputText inputCustom text fieldpadding, border, border-radius, font-size
.pod-design-studio__textareaLong text inputPrompt input for suggestionsmin-height, padding, border
.pod-design-studio__selectDropdown selectsFont, rotation, etc.padding, border, appearance
.pod-design-studio__colorColor picker inputNative color inputwidth, height, border
.pod-design-studio__rangeRange sliderText size, image scaleaccent-color, height
.pod-design-studio__range-valueSlider value displaye.g. 36 or 70%font-size, min-width

Image upload

SelectorTargetsNotesCommon properties
.pod-design-studio__uploadUpload areaImage tab file pickerdisplay, gap
.pod-design-studio__upload-btnUpload button labelStyled <label> for file inputpadding, border, background
.pod-design-studio__upload-nameSelected file nameGets .is-selected when file chosenfont-size, color
.pod-design-studio__file-inputHidden file inputVisually hidden; avoid display overridesposition, opacity

Background patterns

SelectorTargetsNotesCommon properties
.pod-design-studio__pattern-gridPattern button gridFrom pattern_options settinggrid-template-columns, gap
.pod-design-studio__patternPattern swatch buttondata-pattern-id attribute on eachwidth, height, border, border-radius
.pod-design-studio__pattern.is-activeSelected patternOutline highlightborder-color, box-shadow
.pod-design-studio__pattern[data-pattern-id="dots"]Built-in dots swatchUses ::before preview/* use data-pattern-id */
.pod-design-studio__pattern--imagePhoto pattern swatchWhen pattern has image URLbackground-image on ::before

Footer & buttons

SelectorTargetsNotesCommon properties
.pod-design-studio__footerFooter areaConfirm, reset, statusmargin-top, padding-top, border-top
.pod-design-studio__actionsButton rowConfirm + Resetdisplay, gap, flex-wrap
.pod-design-studio__btnBase buttonAll buttons inherit from thispadding, border, font-size, min-height
.pod-design-studio__btn--confirm「Confirm design」Primary storefront actionbackground, color, border-radius, min-height
.pod-design-studio__btn--ghost「Reset」 buttonSecondary outline stylebackground, border-color
.pod-design-studio__statusStatus messagerole=status live regionfont-size, color, min-height
.pod-design-studio__status.is-errorError statusSave / API errorscolor
.pod-design-studio__status.is-successSuccess statusDesign confirmedcolor

Size modifiers (block settings)

SelectorTargetsNotesCommon properties
.pod-design-studio--ui-text-smallSmall panel textui_text_size = small--pds-ui-text-scale
.pod-design-studio--ui-text-mediumMedium panel text (default)ui_text_size = medium--pds-ui-text-scale
.pod-design-studio--ui-text-largeLarge panel textui_text_size = large--pds-ui-text-scale
.pod-design-studio--ui-btn-small … --ui-btn-xlargeButton size presetsui_button_size block setting--pds-ui-button-scale

Data attributes (reference)

SelectorTargetsNotesCommon properties
[data-pod-design-studio]Root markerJavaScript bootstraps on this attributeDo not remove
[data-studio-canvas]Canvas elementPreview rendering target
[data-confirm-design]Confirm buttonTriggers save to CHAOBROStudio API
[data-reset-design]Reset buttonClears layers and line item properties
[data-studio-status]Status text nodeSame as .pod-design-studio__status
[data-pattern-id]Pattern swatch idMatches pattern_options id
[data-tab] / [data-tab-panel]Tab idstext | image | pattern

Example snippets

Copy into the Custom CSS field and adjust values.

Round confirm button only

.pod-design-studio {
  --pds-confirm-radius: 999px;
  --pds-confirm-bg: #111827;
  --pds-confirm-color: #ffffff;
}

Compact panel on mobile

@media (max-width: 749px) {
  .pod-design-studio {
    padding: 0.75rem;
  }
  .pod-design-studio__layout {
    gap: 0.75rem;
  }
}

Scope to one block instance

/* Replace BLOCK_ID with your Shopify block id (inspect element) */
#chaobro-pds-BLOCK_ID .pod-design-studio__heading {
  font-size: 1.5rem;
  letter-spacing: -0.02em;
}

Accent color for entire studio

.pod-design-studio {
  --pds-accent: #2563eb;
  --pds-accent-text: #ffffff;
  --pds-confirm-bg: #2563eb;
  --pds-confirm-color: #ffffff;
}

Tips

  • Use CSS variables before overriding individual classes — upgrades are less likely to break your theme.
  • Avoid !important unless necessary; the component uses considered specificity.
  • Do not hide [data-confirm-design] or remove required ARIA roles.
  • Custom CSS is storefront-only; it does not change the Shopify admin app.
  • For password-protected dev stores, confirm design uses the CHAOBROStudio API — styling is unaffected.

Need help with setup?

See the tutorial for block placement and print area options.