Framework

The CubiFlow design and build system for Webflow. Use it as the reference for every page you design: start from these styles, combine the patterns below, and only add something new when nothing here fits.

Developer
Build every page in a MAST project. Use row and col for layout, the MAST components (Section, Button, Card, Accordion, Tabs, Modal, Slider) and u- utilities for small tweaks. The chips on this page show the real MAST class and variable names; the previews are drawn with page-only classes, so copy names, not elements.
Designer
Design at 1440, 768 and 375 with the 12-column grid, the eleven text styles and the spacing tokens below. Every number here is the number the build will use, so if a value is not on this page, it does not exist in the build. Use Size in the nav to read exact px for each frame.

Typography

One family, eleven text styles. Every size is fluid between a 320px and a 1440px viewport, so design at the three frame sizes below and the build fills in everything in between.

ShowingFluid · 320–1440Switch Size in the nav to see exact px at 1440, 768 and 375.

Fonts

Aa
_typography/fonts/primary-font
General Sans
Primary font for everything: headings, body, buttons and inputs. Fallback Arial, sans-serif. Load from Fontshare or upload the files to Webflow.
Regular 400Medium 500
400500
Two weights only
400 Regular for body, paragraphs, buttons and inputs. 500 Medium for headings, eyebrow, input labels and nav. No bold, no italic styles in the system.

Headings

Heading 1
h1.h1
44.8–88px
2.8 → 5.5rem · line-height 1 · weight 500 · tracking −0.02em · margin-bottom 0.2em
Heading 2
h2.h2
32–60.8px
2 → 3.8rem · line-height 1.1 · weight 500 · tracking −0.02em · margin-bottom 0.2em
Heading 3
h3.h3
24–36.8px
1.5 → 2.3rem · line-height 1.2 · weight 500 · tracking 0 · margin-bottom 0.3em
Heading 4
h4.h4
20.8–24px
1.3 → 1.5rem · line-height 1.4 · weight 500 · tracking 0 · margin-bottom 0.4em
Heading 5
h5.h5
16–19.2px
1.1 → 1.2rem · 1rem ≤ 767 · line-height 1.4 · weight 500 · tracking 0 · margin-bottom 0.5em
Heading 6
h6.h6
12.8–16px
0.9 → 1rem · 0.8rem ≤ 767 · line-height 1.4 · weight 500 · tracking 0 · margin-bottom 0.6em

Use the tag for meaning (one h1 per page, no skipped levels) and the class for looks. A section title that must look small stays an h2 with class .h4, never an h4 tag.

Paragraphs

Paragraph XL. Short intros under a hero title.

.paragraph-xl
19.2–24px
1.2 → 1.5rem · line-height 1.4 · weight 400 · margin-bottom 1em

Paragraph LG. Lead text under a section title, quotes and highlights.

.paragraph-lg
17.6–20px
1.1 → 1.25rem · line-height 1.5 · weight 400 · margin-bottom 1em

Body. The default for all running text, lists and rich text. Keep paragraphs short and give them room.

body · p
14.4–16px
0.9 → 1rem · line-height 1.6 · weight 400 · margin-bottom 1em

Paragraph SM. Captions, meta, legal text and helper text under inputs.

.paragraph-sm
12.8–14.4px
0.8 → 0.9rem · line-height 1.5 · weight 400 · margin-bottom 1em
Eyebrow label
.eyebrow
11.2–12.8px
0.7 → 0.8rem · line-height 1.2 · weight 500 · UPPERCASE · tracking 0.1em · margin-bottom 1.5em

Links

a
Inline link
Text color, underline 0.1em thick, offset 0.1em, under the baseline. Hover removes the underline.
Focused link
focus-visible
Focus
2px solid accent outline, 2px offset, on every link, button and input. Never remove it.
Home / Work / Project
.eyebrow.cc-breadcrumb
Eyebrow link
Breadcrumbs use .eyebrow.cc-breadcrumb: no underline, underline on hover, current page at 50% opacity.

Rich text

Rich text heading

Body copy inside a Rich Text element follows the body style. Headings inside rich text get 1em top margin.

Blockquote: 2px left rule, 0.75em × 1em padding, 1.3em size, line-height 1.5em, 2em margin top and bottom.

Figure: 8px radius, 3em margin. Caption 0.8em, 1em margin. Inline code: border color background, 4px radius, 0.4em side padding, 0.9em size.

.rich-textsmlgxl
Sizes
Rich text has four variants: base (body), sm, lg and xl. They switch the whole block to that paragraph style. Use lg for articles, base for everything else.

Type rules

11 styles
Only these styles
Six headings, four paragraphs and the eyebrow. If a design needs another size, use the nearest style instead.
sentence case
Case and tracking
Sentence case everywhere. Uppercase only for the eyebrow and nav labels. Negative tracking only on h1 and h2.
em margins
Margins come with the style
Each style already carries its bottom margin in em. Do not add extra space under text in Figma; use the spacing tokens between blocks.

Color

MAST color structure with CubiFlow values. Seven swatches feed five theme tokens; components only ever use the theme tokens, so a section can switch light or dark without restyling anything inside it.

Palette

Aa
_color/neutral/white
#FFFFFF
Default background. Text on dark sections.
Aa
_color/neutral/light-gray
#F4F5F6
Alternate light section background.
Aa
_color/neutral/mid-gray-1 · mid-gray-2
#838384
Borders, dividers, placeholder text. Not for body text.
Aa
_color/neutral/black
#111111
Text. Default dark section background.
Aa
_color/neutral/dark-gray
#000000
Alternate dark section background.
Aa
_color/primary/accent
#FF5C00
Buttons, focus ring, active states, small highlights.
Aa
_color/primary/accent-dark
#CC4A00
Button hover. Derived from #FF5C00 (80% brightness).

MAST also ships secondary/yellow and secondary/blue. CubiFlow has no secondary colors, so they are not used. Do not add new colors in a design without updating this palette first.

Theme tokens

Token
Light
Dark
Use
primary/background
#FFFFFF
#111111
Section and page background
primary/text
#111111
#FFFFFF
All text and icons
primary/border
#838384
#838384
Card, input and divider lines
primary/accent
#FF5C00
#FF5C00
Button fill, focus ring, active tab
primary/accent-dark
#CC4A00
#CC4A00
Button hover

Section themes

Default
Section title

#FFFFFF bg · #111111 text

ButtonSecondary
Alternate
Section title

#F4F5F6 bg · #111111 text

ButtonSecondary
Dark
Section title

#111111 bg · #FFFFFF text

ButtonSecondary
Dark alternate
Section title

#000000 bg · #FFFFFF text

ButtonSecondary

In Webflow the theme is a variant on the Section component (and on Nav and Footer). Pick the variant; never set colors on elements inside a section.

Contrast

Pair
Ratio
Result
Rule
#111111 on #FFFFFF
18.9 : 1
Pass AAA
Body text
#111111 on #F4F5F6
17.3 : 1
Pass AAA
Body text on alternate sections
#111111 on #FF5C00
6.1 : 1
Pass AA
Button text on accent
#FFFFFF on #FF5C00
3.1 : 1
Fail for text under 24px
Do not use white text on the accent
#FFFFFF on #CC4A00
4.6 : 1
Pass AA
Allowed on hover
#838384 on #FFFFFF
3.8 : 1
Large text only
Borders and placeholders only

MAST puts white text on its orange button. With CubiFlow orange that fails contrast, so the button label uses #111111. This is the only change from MAST, and it is a color change.

Spacing

Three kinds of space: margins in em that scale with the text they sit on, fixed grid gaps in px, and fluid section and card padding. Use only these values.

ShowingFluid · 320–1440Switch Size in the nav to see exact px at 1440, 768 and 375.

Margin tokens

0.5em
_layout/spacing/margin-xsu-mt-xs · u-mb-xs
0.5em · 7.2–8px
Label to text, icon to text
1em
_layout/spacing/margin-smu-mt-sm · u-mb-sm
1em · 14.4–16px
Paragraph to paragraph, text to button
2em
_layout/spacing/margin-mdu-mt-md · u-mb-md
2em · 28.8–32px
Text block to button row, title to content
3em
_layout/spacing/margin-lgu-mt-lg · u-mb-lg
3em · 43.2–48px
Group to group inside a section

Values in px are for body text. On an element with a bigger font the same token is bigger, which is the point: space follows type.

Grid gaps

_layout/grid/gap-main.row
40px
Default column gutter and row gap. Each col has 20px padding left and right.
_layout/grid/gap-md.row-gap-md
24px
Denser card grids.
_layout/grid/gap-button.row-gap-button
16px
Buttons and tags in a row.
_layout/grid/gap-sm.row-gap-sm
8px
Tight lists, icon rows.

Grid gaps are the same at every breakpoint.

Section and card padding

content
_components/section/padding
Section · 48–96px
Top and bottom padding of every .section. 3 → 6rem fluid. Footer uses 64px top and 32px bottom.
content
_components/card/padding
Card body · 16–24px
Padding inside .card-body on all sides. 1 → 1.5rem fluid.
_components/input/bottom-margin
Input group · 16px
Space under each form field (input/bottom-margin 1rem). Labels sit inside the field.

Container

.container_components/container/max-width
Max width · 1440px
The container is 100% minus a gutter on each side, capped at 90rem.
_components/container/gutter
Gutter · 6vw · 19–86px
Space between the screen edge and the content on each side.
min(100% − 12vw, 90rem)
Content width · 282–1267px
What is left for content at each frame. Columns live inside this.

Specs

Every number in one place, in px at the three design frames. Root size is 16px. Fluid values are linear between a 320px and a 1440px viewport.

Breakpoints

Name
Range
Design frame
Grid classes
Notes
Desktop
≥ 992px
1440px
col-lg-*
Base styles. Max content 1440px.
Tablet
768–991px
768px
col-md-*
Nav becomes a full-screen menu.
Mobile landscape
480–767px
check at 767px
col-sm-*
h5 drops to 16px, h6 to 12.8px.
Mobile portrait
≤ 479px
375px
col-xs-*
Smallest fluid value at 320px.

Type scale

Style
rem (min → max)
1440
768
375
Line height
Weight · tracking
h1
2.8 → 5.5
88
62.1
46.9
1
500 · −0.02em
h2
2 → 3.8
60.8
43.5
33.4
1.1
500 · −0.02em
h3
1.5 → 2.3
36.8
29.1
24.6
1.2
500 · 0
h4
1.3 → 1.5
24
22.1
21
1.4
500 · 0
h5
1.1 → 1.2
19.2
18.2
16
1.4
500 · 0
h6
0.9 → 1
16
15
12.8
1.4
500 · 0
paragraph-xl
1.2 → 1.5
24
21.1
19.4
1.4
400 · 0
paragraph-lg
1.1 → 1.25
20
18.6
17.7
1.5
400 · 0
body
0.9 → 1
16
15
14.5
1.6
400 · 0
paragraph-sm
0.8 → 0.9
14.4
13.4
12.9
1.5
400 · 0
eyebrow
0.7 → 0.8
12.8
11.8
11.3
1.2
500 · 0.1em · upper

Layout

Metric
1440
768
375
Token
Container gutter (each side)
86.4
46.1
22.5
6vw
Content width
1267.2
675.8
330
max 1440
Section padding (top, bottom)
96
67.2
50.4
3 → 6rem
Card body padding
24
19.2
16.4
1 → 1.5rem
Column gutter
40
40
40
gap-main
Columns
12
12
12
col-*-1 … 12
Nav height (with 10px padding)
≈ 65
≈ 65
≈ 65
nav padding 10px
Footer padding
64 / 32
64 / 32
64 / 32
4rem / 2rem

Components

Class
Height
Padding
Font
Radius
Border · fill
Motion
.button
≈ 45px
11.2 × 16px (0.7em 1em)
16px · lh 1.3em
8px
1px transparent · accent fill
0.3s
.button secondary
≈ 45px
11.2 × 16px
16px
8px
1px accent · no fill · hover 10% accent
0.3s
.card
auto
body 16–24px
body
8px
1px border
0.3s hover
.input
min 64px
32 / 16 / 8px
16px · lh 1.5em
8px
1px mid-gray · hover/focus accent
0.3s
.input-label
—
12px top, 16px left
14.4px · 500
—
sits inside the input
—
textarea group
min 144px
same as input
16px
8px
same as input
0.3s
checkbox · radio
20 × 20px
—
—
2px · round
1px mid-gray · checked accent
—
.nav
≈ 65px
10px top and bottom
—
—
1px bottom border · sticky
—
.nav-link
—
11.2 × 16px · gap 0.3em
body
—
hover accent text
0.3s
.tabs-link
—
11.2 × 16px
body
—
2px bottom border · inactive 40% text
0.3s · pane fade 0.5s
.accordion
—
24px (20px ≤ 767)
body
8px
1px border · icon 2em
0.4s
.modal
—
24px (20px ≤ 767)
body
8px
90% wide · max 800px · close 32px
0.3s
.slider
—
gap 24px
—
—
3 / 2 / 1 / 1 per view · dots 16px
Swiper
.theme-toggle
24px
—
—
pill
48 × 24px switch
0.3s
.icon
1em
—
—
—
sizes 1em, 1.5rem, 2rem
—

Tokens

.5rem
Radius
8px (0.5rem) on buttons, cards, inputs, accordion, modal, dropdown. 3–4px on small chips and code. Pills only on switches and slider dots.
1px
Border
1px in primary/border for structure. 2px only for tab underline, blockquote rule and section label.
0.3s
Motion
0.3s cubic-bezier(0.165, 0.84, 0.44, 1) for hover and color changes. Accordion 0.4s. Tab pane fade 0.5s. Respect reduced motion.
focus-visible
Focus
2px solid accent outline, 2px offset. Inset (−2px) when the element fills its container, like tabs.
z-index
Z-index
Nav 999. Dropdown 2. Skip link 9998. Modals use the browser top layer (dialog).
none
Shadow
None. MAST separates surfaces with borders and section themes, not shadows.

Figma setup

frame 1440
Desktop · 1440
12 columns · margin 86px · gutter 40px · column ≈ 69px. One column = col-lg-1.
frame 768
Tablet · 768
6 columns · margin 46px · gutter 40px · column ≈ 79px. One column = col-md-2.
frame 375
Mobile · 375
4 columns · margin 22px · gutter 40px · column ≈ 53px. One column = col-xs-3.

Name Figma text styles and color variables exactly like the tokens above (h1 … eyebrow, primary/background …). Export images at 2× as WebP, icons as SVG with currentColor.

Utilities

Single-purpose classes for small adjustments. Stack them after a component class instead of creating a one-off combo, and keep it to four utility classes per element.

Margin

Top

u-mt-0
margin-top: 0
Element
u-mt-xs
margin-top: 0.5em · _layout/spacing/margin-xs
Element
u-mt-sm
margin-top: 1em · _layout/spacing/margin-sm
Element
u-mt-md
margin-top: 2em · _layout/spacing/margin-md
Element
u-mt-lg
margin-top: 3em · _layout/spacing/margin-lg
Element

Bottom

u-mb-0
margin-bottom: 0
Element
u-mb-xs
margin-bottom: 0.5em · _layout/spacing/margin-xs
Element
u-mb-sm
margin-bottom: 1em · _layout/spacing/margin-sm
Element
u-mb-md
margin-bottom: 2em · _layout/spacing/margin-md
Element
u-mb-lg
margin-bottom: 3em · _layout/spacing/margin-lg
Element

Other

u-m-0
margin: 0
Element
u-mlr-auto
margin-left and right: auto (centers element)
Element
u-mt-auto
margin-top: auto (push to bottom of a flex column)
Element
u-mb-auto
margin-bottom: auto (push to top of a flex column)
Element

Padding

u-pt-0
padding-top: 0
Element
u-pb-0
padding-bottom: 0
Element
u-p-0
padding: 0
Element

Text

Alignment

u-text-center
text-align: center
Clean, fast websites.
u-text-right
text-align: right
Clean, fast websites.
u-text-left
text-align: left
Clean, fast websites.

Clamping

u-text-clamp-1
Cuts text after 1 line
CubiFlow designs and builds Webflow websites focused on clarity and simplicity, from branding and UI/UX design to development and launch.
u-text-clamp-2
Cuts text after 2 lines
CubiFlow designs and builds Webflow websites focused on clarity and simplicity, from branding and UI/UX design to development and launch.
u-text-clamp-3
Cuts text after 3 lines
CubiFlow designs and builds Webflow websites focused on clarity and simplicity, from branding and UI/UX design to development and launch, for Vietnamese and international clients.

Wrapping

u-text-balance
text-wrap: balance · headings
Clean, fast websites that make every brand easier to understand.
u-text-pretty
text-wrap: pretty · paragraphs
Clean, fast websites that make every brand easier to understand.

Color

u-bg-primary
background: primary/accent · #FF5C00
Aa
u-bg-black
background: neutral/black · #111111
Aa
u-bg-darkgray
background: neutral/dark-gray · #000000
Aa
u-bg-midgray-1
background: neutral/mid-gray-1 · #838384
Aa
u-bg-lightgray
background: neutral/light-gray · #F4F5F6
Aa
u-bg-white
background: neutral/white · #FFFFFF
Aa
u-text-primary
color: primary/accent · large text and icons only
Aa
u-text-black
color: neutral/black
Aa
u-text-midgray-1
color: neutral/mid-gray-1 · large text only
Aa
u-text-white
color: neutral/white · on dark backgrounds
Aa

Overflow

u-overflow-hidden
overflow: hidden
Content wider than its box
u-overflow-visible
overflow: visible
Content wider than its box

Display + position

u-d-none
display: none
Hidden
u-d-block
display: block
Element
u-d-flex · cc-align-center
display: flex · add cc-align-center to center items
A
B
u-d-inline-flex
display: inline-flex
Element
u-position-relative
position: relative
Element
u-position-sticky
position: sticky · set top in the component class
Element

Responsive

u-md-d-none
display: none on Tablet and below
Desktop only
u-sm-d-none
display: none on Mobile L and below
Hidden on phones
u-xs-d-none
display: none on Mobile only
Hidden at 479px
u-md-d-block
display: block on Tablet and below
Element
u-sm-d-block
display: block on Mobile L and below
Element
u-xs-d-block
display: block on Mobile only
Element

Size

u-w-100
width: 100%
Element
u-h-100
height: 100%
Element
u-minh-100vh
min-height: 100vh (shown cropped)
Element

Aspect ratio

u-aspect-1x1
aspect-ratio: 1 · avatars, logos
u-aspect-16x9
aspect-ratio: 16/9 · covers, video
u-aspect-4x3
aspect-ratio: 4/3 · project cards

Helpers

u-img-cover
Image fills its aspect box (object-fit: cover)
u-link-cover
Invisible link that makes a whole card clickable
Card
u-z-index-1
position: relative · z-index: 1
Element
u-sr-only
Visible to screen readers only
Icon button Open menu
u-border
1px primary/border line · 40px (gap-main) above and below · variants sm, md, section, none

Components

The MAST component set with CubiFlow colors. Interactive demos run on the same scripts MAST loads (accordion, tabs, modal, slider) plus the marquee pattern, so what you click here is how it behaves on a live build. Custom code only runs on the published page.

ShowingFluid · 320–1440Switch Size in the nav to see exact px at 1440, 768 and 375.

Buttons

Button.buttonvariant: secondary.btn-icon
Button
Padding 0.7em 1em (11.2 × 16px), 16px text, line-height 1.3em, 8px radius, ≈ 45px tall. Icon gap 0.4em, icon max 1.2em. Hover: accent-dark fill with white text. Secondary: 1px accent border, no fill, hover 10% accent.
DefaultHoverFocusFull width · .cc-full
.button.cc-fullfocus-visible
States
Default, hover, focus-visible (2px accent outline, 2px offset). Use .cc-full for a 100% wide button in forms and on mobile cards. Buttons in a row sit on row-gap-button (16px).

Card

4:3 · u-aspect-4x3
Eyebrow
Card title

Short supporting text, two or three lines at most.

Read more
Card.card.card-body.u-link-cover
Card
1px border, 8px radius, overflow hidden. Image on top with an aspect utility (1x1, 4x3, 16x9) and .u-img-cover. Body padding 16–24px fluid. Whole card clickable with .u-link-cover. Hover variant fills with the border color.
col-lg-4 col-md-6 col-sm-12
Card grid
Cards sit in row/col: 3 per row on desktop (col-lg-4), 2 on tablet (col-md-6), 1 on mobile (col-sm-12). Use .row for 40px gaps or .row-gap-md for 24px.

Form

Name
Jane Doe
Email
you@company.com
Message
Tell us about the project
Checkbox · 20 × 20pxRadio
Send message
Input.input-group.input.input-label
Input with label inside
Input min-height 64px (4rem), padding 32px top, 16px sides, 8px bottom; label sits inside at 12px from the top, 16px from the left, 14.4px medium. 1px mid-gray border, 8px radius, accent border on hover and focus. 16px between fields. Textarea group min 144px.
.form-success.form-error.form_required-note
Form states
Success message: centered in the form area, min-height 320px. Error: red text with a 1px top rule, 16px above. Required note: 12.8px at the bottom right. Use one column of fields on every breakpoint.

Navigation and footer

Contact
Nav.nav.nav-link.nav-menu_btn
Nav
Sticky at the top, z-index 999, 10px padding top and bottom, 1px bottom border. Logo 80px wide. Links use button padding (11.2 × 16px), hover turns accent. At ≤ 991px the links move into a full-screen menu opened by the menu button; links grow to paragraph-xl. Include the skip link.
Footer.section.cc-footer.footer-link
Footer
Section variant cc-footer: 64px top, 32px bottom padding, 1px top border. Links at 80% opacity, underline on hover. Social icons 24px with 16px gap. Year fills itself with data-footer-year.

Interactive

What is included in a build?+

Design files, the Webflow build on MAST, CMS setup and a handover call.

How long does a site take?+

Most marketing sites take four to six weeks from kickoff to launch.

Can my team edit the site?+

Yes. Every page uses components and CMS fields your team can edit.

Accordiondetails[data-accordion-start-open][data-accordion="content"]
Accordion
Native details and summary. 1px border, 8px radius, trigger padding 24px (20px ≤ 767), icon 2em turns 45°. Opens and closes in 0.4s. Same name attribute = only one open at a time.

Design: Wireframes and visual design at 1440, 768 and 375.

Build: Webflow build on MAST with components and CMS.

Launch: QA on every breakpoint, SEO setup, then publish.

Tabs[data-tabs-component][data-tabs-link][data-tabs-pane]
Tabs
Links have a 2px bottom border; inactive text at 40%. Panes fade in over 0.5s. Arrow keys move between tabs. Optional autoplay with a progress bar and a mobile dropdown.
Modal title

Native dialog: Esc and a click on the backdrop close it, focus returns to the button.

Modaldialog + button[data-modal="close"]
Modal
Native dialog placed right before its open button. 90% wide, max 800px, 24px padding, 8px radius, close button 32px in the corner. Optional data-modal-open-on-load with data-modal-cooldown-days.
Slide 1
Slide 2
Slide 3
Slide 4
Slide 5
Slider[data-slider="component"][data-slider="slider"]
Slider
Swiper. Slides per view 3 / 2 / 1 / 1 (desktop, tablet, mobile L, mobile) with a 24px gap, set by --lg --md --sm --xs and --gap. Arrows and 16px dots. Options: data-loop, data-autoplay (ms), data-centered, data-effect="fade", data-speed.
StrategyBrandingUI/UXWebflowCMSSEO
Marquee[data-marquee-reverse][data-marquee-pause-on-hover][data-marquee-fade-edges]
Marquee
Logo or text strip that scrolls forever. Speed in px per second, direction, pause on hover and faded edges are attributes. Stops when the visitor prefers reduced motion.
Home/Work/Project
Theme toggle · 48 × 24px
★★★
BreadcrumbTheme toggleIcon
Breadcrumb, theme toggle, icons
Breadcrumb uses eyebrow links with an 8px gap. Theme toggle is a 48 × 24px switch. Icons inherit text color; sizes 1em, 1.5rem, 2rem.

Attribute API

Component
Attribute
Values
Notes
Accordion
data-accordion-start-open
true · false
On the details element
Accordion
data-accordion="content"
—
Wrapper that animates height
Accordion
name
any string
Same name on several details = one open at a time
Tabs
data-tabs-component · data-tabs-menu · data-tabs-menu-wrapper · data-tabs-menu-dropdown-menu
—
All four are required
Tabs
data-tabs-link · data-tabs-link-button · data-tabs-pane
—
Links and panes match by order
Tabs
data-tabs-autoplay · data-tabs-autoplay-duration · data-tabs-autoplay-hover-pause
true · seconds · true
On data-tabs-menu
Tabs
data-tab-mobile-dropdown
true
Menu becomes a dropdown ≤ 767px
Modal
dialog + button
—
The open button must directly follow the dialog
Modal
data-modal="close"
—
On the close button inside the dialog
Modal
data-modal-open-on-load · data-modal-cooldown-days
true · number
Parent needs an id for the cooldown
Slider
data-slider
component · slider · previous · next · pagination
Roles inside the component
Slider
data-loop · data-autoplay · data-centered · data-effect · data-speed · data-grab-cursor
true · ms · true · fade · ms · false
On the slider element
Slider
--lg --md --sm --xs --gap
3 · 2 · 1 · 1 · 24px
CSS variables on the component
Marquee
data-marquee-reverse · data-marquee-pause-on-hover · data-marquee-fade-edges
true · false
On the marquee component
Marquee
--marquee-gap · --marquee-duration
px · seconds
Gap between items and loop time
Theme toggle
data-theme-toggle
checkbox · dark-label · light-label
Saves the choice and follows the OS
Footer
data-footer-year
—
Filled with the current year

Scripts

jsDelivrfooter
Site settings · Footer code
accordion.min.js · modal.min.js · tabs.min.js · slider.min.js (with swiper@11 bundle + CSS) · theme-toggle.min.js · inline-video.min.js, all from cdn.jsdelivr.net/gh/nocodesupplyco/mast. Each script exits early when its component is not on the page.
guide only
Page code on this guide
This page also loads the role gate, the Size switch and the marquee setup. Those three are for the guide only; do not copy them to client sites.

Layout

Every CubiFlow page is assembled from the same structure, the same grid and a small set of section patterns. Design new pages by combining patterns, not by inventing new layouts.

Page structure

page-wrapper
Navbar · component
page-main · scroll container
section
container
page-padding
content
Bottom · component

Design grid

Desktop · 1440
12 columns · 86px margin · 40px gutter
Tablet · 768
6 columns · 46px margin · 40px gutter
Mobile · 375
4 columns · 22px margin · 40px gutter

Grid · row & col

Build every layout in Webflow with row and col. A row is a wrapping flex container with negative gutters; a col takes an equal share unless it gets a span. Spans count 12 columns per breakpoint: col-lg for Desktop, col-md for Tablet (≤ 991), col-sm for Mobile L (≤ 767) and col-xs for Mobile (≤ 479). Smaller breakpoints override larger ones. The grid is the only place where more than four classes on one element is fine.

Equal columns

col
col
col
col
col
col
col
col
col
col

Desktop · col-lg

col-lg-1
col-lg-11
col-lg-2
col-lg-10
col-lg-3
col-lg-9
col-lg-4
col-lg-8
col-lg-5
col-lg-7
col-lg-6
col-lg-6
col-lg-12

Tablet · col-md

col-md-1
col-md-11
col-md-2
col-md-10
col-md-3
col-md-9
col-md-4
col-md-8
col-md-5
col-md-7
col-md-6
col-md-6
col-md-12

Mobile L · col-sm

col-sm-1
col-sm-11
col-sm-2
col-sm-10
col-sm-3
col-sm-9
col-sm-4
col-sm-8
col-sm-5
col-sm-7
col-sm-6
col-sm-6
col-sm-12

Mobile · col-xs

col-xs-1
col-xs-11
col-xs-2
col-xs-10
col-xs-3
col-xs-9
col-xs-4
col-xs-8
col-xs-5
col-xs-7
col-xs-6
col-xs-6
col-xs-12

Align columns

row-align-center
col
col
row-align-end
col
col
row-content-center
col
col
row-content-end
col
col
row-content-between
col
col

Justify columns

row-justify-end
col
row-justify-center
col
row-justify-around
col
row-justify-between
col

Offset columns

col-lg-offset-1
col-lg-offset-2
col-lg-offset-3
col-lg-offset-4
col-lg-offset-5
col-lg-offset-6
col-md-offset-0
col-md-offset-1
col-md-offset-2
col-md-offset-3
col-md-offset-4
col-md-offset-5
col-md-offset-6
col-sm-offset-0
col-sm-offset-1
col-sm-offset-2
col-sm-offset-3
col-sm-offset-4
col-sm-offset-5
col-sm-offset-6
col-xs-offset-0
col-xs-offset-1
col-xs-offset-2
col-xs-offset-3
col-xs-offset-4
col-xs-offset-5
col-xs-offset-6

Reorder columns

col
col-lg-first
col
col-md-first
col
col-sm-first
col
col-xs-first
col-lg-last
col
col-md-last
col
col-sm-last
col
col-xs-last
col

Gap modifiers

row-gap-md · _layout/grid/gap-md · 24px
col
col
col
col
col
col
row-gap-sm · _layout/grid/gap-sm · 8px
col
col
col
col
col
col
row-gap-button · _layout/grid/gap-button · 16px
row-gap-0 · no gap
col
col
col
col
col
col

Other column modifiers

col
col-shrink
col
col-lg-contain-left
col
col
col-lg-contain-right

Breakpoints

Desktop · base
≥ 992px. Base styles. Design at 1440; content stops at 1440px and the side gutter grows past that.
Tablet · ≤ 991
768–991px. Nav switches to the menu button. Use col-md-* to halve or stack columns.
Mobile L · ≤ 767
480–767px. h5 and h6 step down. Most columns go full width with col-sm-12.
Mobile · ≤ 479
≤ 479px. Check at 375 and 320: no horizontal scroll, buttons full width (cc-full) when they wrap.

Section patterns

Hero
h1, a paragraph-lg lead and one or two buttons. Optional u-minh-100vh. One per page.
Statement
A single paragraph-xl or h2 sentence. Use between heavy sections to give the page air.
Feature grid
h2 plus 3 columns (col-lg-4 col-md-6 col-sm-12) of h3 and body text. Services, process steps, benefits.
Project grid
project-grid, 2 columns of 4:3 images with name and tags. CMS driven.
Logo marquee
Marquee component with single-color client logos at equal height.
FAQ
Accordion component: bordered rows with 8px radius and 8px between them. Question in the h4 style, answer in body text.
CTA
Centered column (u-text-center) with h2 and the Button component. Last section before the footer.
Blog list
blog-grid with image, tag, title and date. Paginated from the CMS.
Contact form
MAST Input with the label inside the field, 8px radius, 1px border, 16px between fields, one full-width submit button.

Page templates

Navbar
Hero
Statement
Feature grid
Project grid
Logo marquee
CTA
Bottom
Home
Shows the studio in one scroll: who, what, proof, next step.
Navbar
Hero
Feature grid
Project grid · filtered
FAQ
CTA
Bottom
Service
One service, its process, matching projects and objections answered.
Navbar
Hero · cover 16:9
Overview · tags
Gallery
Results
Next project
Bottom
Project detail
CMS template. Images lead, text supports.
Navbar
Title · tag · date
Cover 16:9
rich-text
Related posts
CTA
Bottom
Blog post
CMS template. Reading width for the body, nothing beside it.
Navbar
Hero
Logo marquee
Feature grid
Statement
FAQ
Contact form
Bottom
Landing page
One goal, one form. Keep the Navbar minimal.
Navbar
Title block
rich-text
Bottom
Legal · utility
Privacy, terms, 404, sitemap. No hero image, no marquee.

Imagery & icons

Ratios
16:9 covers and video · 4:3 project cards · 1:1 logos and avatars.
Treatment
8px radius on images inside cards and rich text, u-img-cover inside an aspect box, no shadows. Export WebP or AVIF under 300KB. Every meaningful image gets alt text.
Icons
Icon component: 1em by default, 1.5rem and 2rem variants, color from currentColor. One icon set per site, no emoji.

Rules

How a CubiFlow design becomes a clean Webflow build. Class names are the documentation: anyone opening the project should understand an element from its class alone.

Class naming

block_element
Hyphens inside a name, one underscore between the block and the element.
nav-logo_link · form-success_flex · nav-menu_btn-bar
cc-modifier
Combo classes start with cc- and change one thing on the base class.
section cc-footer · button cc-full · u-d-flex cc-align-center
variants
Themes and styles of a component are Webflow component variants, not new classes.
Section: alternate · Button: secondary · Card: hover
global
Shared classes have no underscore and work anywhere.
h1 to h6 · paragraph-sm / lg / xl · eyebrow · button · card · rich-text
u-
Utilities. Stack them after a component class, four at most per element.
u-mt-md · u-text-center · u-aspect-16x9
row · col
Every multi-column layout uses the grid. Spans and modifiers stack on col and row.
row row-gap-md · col col-lg-6 col-sm-12
data-
Behaviour lives in data attributes, never in class names. Never style an attribute.
data-accordion · data-tabs-link · data-slider · data-modal
variables
Every value lives in a variable group. Change the variable, never the class.
_color/… · _typography/… · _layout/… · _components/…
fs-
Reserved for Finsweet attributes. Do not rename.
fs-list-element · fs-list-field

Do · Don't

Do
home-intro_section
section cc-footerrow + col for every layout
accent for one highlight
max 4 utility classes per element
Don't
Div Block 20
page-main 2
link item-3
margin 37px
#ff6a1a typed into a class

Handoff checklist

No default or auto-numbered class names.
Every color, size and gap uses a variable.
Page built only from listed section patterns, or the new pattern is added here.
One H1 tag per page, headings in order.
Orange for highlights only; button text on orange is #111111.
Checked at 1440, 991, 767, 479 and 375px.
Alt text on images, focus outlines visible.
SEO title, description and Open Graph image set.
No unlinked components, unused classes cleaned up.
Columns built with row and col, spacing tweaks with u- utilities, no one-off grids.