Workfile Store

Page Builder Styling

Control spacing, sizing, typography, backgrounds, borders, effects, and responsive design in Workfile Canvas.

Every widget in Workfile Canvas has a Style tab that gives you full control over its appearance — spacing, sizing, colors, typography, borders, shadows, and more. This guide covers the complete styling system.

The Style tab controls the visual appearance of a widget via CSS. The Content tab controls what the widget displays (text, images, settings). Both work together — Content defines what, Style defines how it looks.

How styling works

When you select a widget and open the Style tab, you'll see sections for different style categories. Each change generates scoped CSS that only affects that specific widget.

Key concepts:

  • Responsive — every style value can be different on desktop, tablet, and mobile
  • States — colors and effects can change on hover, focus, and active states
  • Inheritance — tablet inherits from desktop, mobile inherits from tablet (unless overridden)
  • Units — numeric values support px, %, em, rem, vw, vh

Responsive breakpoints

Use the device toggle at the top of the Style tab to switch between breakpoints:

BreakpointScreen widthIcon
Desktop1024px and above🖥️
Tablet768px – 1023px📱
MobileBelow 768px📱

Values cascade downward:

  • Set a value on Desktop → it applies to all devices
  • Override on Tablet → applies to tablet and mobile (desktop keeps its value)
  • Override on Mobile → applies only to mobile

Design desktop-first, then check tablet and mobile. Most layouts only need 1-2 mobile overrides (like reducing padding or switching to single-column).

Spacing

Control the space around and inside a widget.

PropertyWhat it doesExample
Margin topSpace above the widget32px
Margin bottomSpace below the widget32px
Margin leftSpace to the left0px
Margin rightSpace to the right0px
Padding topInner space at the top24px
Padding bottomInner space at the bottom24px
Padding leftInner space on the left16px
Padding rightInner space on the right16px

Each value supports units: px, %, em, rem, vw, vh.

Use % for padding on sections to create proportional spacing that scales with screen size. Use px for precise control on smaller elements.

Sizing

Control the dimensions of a widget.

PropertyWhat it doesExample
WidthWidget width100%, 400px, auto
HeightWidget heightauto, 300px, 50vh
Min widthMinimum width200px
Min heightMinimum height100px
Max widthMaximum width1200px
Max heightMaximum height500px

Most widgets default to width: 100% and height: auto. Only override these when you need a specific size — like a fixed-width card or a hero section with a set height.

Typography

Control text appearance. These settings apply to all text within the widget.

PropertyOptionsExample
Font familySystem fonts + Google FontsInter, Playfair Display
Font sizeAny size with units16px, 1.2rem
Font weight100–900400 (normal), 700 (bold)
Font styleNormal, italic, obliqueItalic
Line heightSpacing between lines1.5, 24px
Letter spacingSpace between characters0.5px, 0.1em
Text alignLeft, center, right, justifyCenter
Text transformNone, uppercase, lowercase, capitalizeUppercase
Text decorationNone, underline, line-throughUnderline
ColorAny color (supports hover state)#1a1a1a

Hover states for text

Text color supports hover state — set a different color that appears when the customer hovers over the widget. This is especially useful for links and buttons.

Background

Control the widget's background. Multiple background types are available:

TypeDescription
NoneTransparent background
ColorSolid color (supports hover state)
GradientLinear, radial, or conic gradient
ImageBackground image with positioning and sizing
PatternDecorative pattern presets
VideoBackground video (with fallback image)

Background image options

SettingOptions
PositionCenter, top, bottom, left, right, custom
SizeCover, contain, auto, custom
RepeatNo repeat, repeat, repeat-x, repeat-y
AttachmentScroll, fixed (parallax effect)
FiltersBlur, brightness, contrast, saturate, grayscale, sepia

Background overlay

Add a color or gradient overlay on top of background images to improve text readability:

SettingDescription
ColorOverlay color (e.g., black at 50% opacity)
OpacityHow transparent the overlay is (0–100%)
Blend modeHow the overlay blends with the image

A dark overlay (black at 40-60% opacity) on a background image makes white text readable on any photo. This is the standard pattern for hero sections.

Border

Control the widget's border and corner rounding.

PropertyOptionsExample
WidthPer-side or uniform1px, 2px
StyleSolid, dashed, dotted, noneSolid
ColorAny color (supports hover state)#e5e7eb
RadiusPer-corner or uniform8px, 50% (circle)

Use border-radius: 50% on a square widget to make it circular. Use large values like 24px for pill-shaped buttons.

Effects

Visual effects that add depth and interactivity.

PropertyDescriptionExample
OpacityWidget transparency (supports hover)100% default, 80% on hover
Box shadowDrop shadow (supports hover)0 4px 12px rgba(0,0,0,0.1)
Text shadowShadow behind text0 2px 4px rgba(0,0,0,0.3)
Backdrop blurBlur content behind the widget8px (frosted glass effect)
Mix blend modeHow the widget blends with content belowMultiply, overlay, screen

Hover effects

Box shadow and opacity support hover states — create interactive cards that lift on hover:

  • Default: box-shadow: 0 1px 3px rgba(0,0,0,0.1)
  • Hover: box-shadow: 0 8px 24px rgba(0,0,0,0.15)

Combined with a transition (see below), this creates a smooth lift effect.

Transform

Move, rotate, scale, or skew a widget.

PropertyDescriptionExample
Translate XMove horizontally10px, -50%
Translate YMove vertically-20px
RotateRotation in degrees45deg
ScaleSize multiplier1.1 (10% larger)
Skew X/YSlant the widget5deg

Transforms support hover states — create effects like "scale up on hover" for interactive cards.

Transitions

Smooth animations between states (default → hover).

SettingDescriptionExample
PropertyWhat to animateAll, opacity, transform, box-shadow
DurationHow long the animation takes200ms, 300ms
EasingAnimation curveEase, ease-in-out, cubic-bezier
DelayWait before starting0ms, 100ms

Add transition: all 200ms ease to any widget with hover effects. This makes color changes, shadows, and transforms animate smoothly instead of snapping instantly.

Layout

Control how the widget positions itself and its children.

PropertyOptions
DisplayBlock, flex, grid, inline-flex, none
PositionStatic, relative, absolute, fixed, sticky
Z-indexStacking order (higher = on top)
OverflowVisible, hidden, scroll, auto

Flexbox (when display = flex)

PropertyOptions
DirectionRow, column, row-reverse, column-reverse
Justify contentStart, center, end, space-between, space-around
Align itemsStart, center, end, stretch, baseline
WrapNo wrap, wrap, wrap-reverse
GapSpace between flex items

Grid (when display = grid)

PropertyOptions
Template columnsColumn definitions (e.g., 1fr 1fr 1fr)
Template rowsRow definitions
GapSpace between grid items
Justify itemsHorizontal alignment of items
Align contentVertical alignment of content

Visibility

Control when a widget is visible:

SettingDescription
Hide on desktopWidget hidden on screens ≥1024px
Hide on tabletWidget hidden on 768–1023px screens
Hide on mobileWidget hidden on screens <768px

Use visibility to show different content per device. For example, show a detailed table on desktop but hide it on mobile and show a simplified card layout instead.

Entrance animations

Add animations that play when a widget scrolls into view:

AnimationEffect
FadeFades in from transparent
Slide upSlides up from below
Slide downSlides down from above
Slide leftSlides in from the left
Slide rightSlides in from the right
ScaleGrows from smaller size
RotateRotates into position
BlurUnblurs from blurry

Each animation has:

  • Duration — how long it takes (200ms–2000ms)
  • Delay — wait before starting
  • Easing — animation curve
  • Distance/Scale/Rotation — how far it moves

Entrance animations only play once — when the widget first scrolls into the viewport. They don't repeat on subsequent scrolls.

On this page