UI Reference

CSS Variables ​

The browser package theme is primarily configured through --formie-* custom properties on .formie-form.

Use these root-level CSS variables to adjust the shipped theme. Set overrides on .formie-form so they apply to the form you are styling.

Use these variables to restyle the shipped UI without changing browser behaviour or replacing Formie's rendered markup.

Variable Categories ​

The shipped root variable surface covers:

  • typography, spacing, radius, and border foundations
  • palette scales and semantic colour aliases
  • form, message, button, navigation, progress, and loading layout
  • field-level sizing and specialized field surfaces such as summary, signature, repeater, and table

Foundations ​

VariableDefaultPurpose
--formie-font-family-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serifBase typeface
--formie-font-size-xs0.75remExtra-small text size
--formie-font-size-sm0.875remSmall text size
--formie-font-size-base1remDefault text size
--formie-font-size-lg1.125remLarge text size
--formie-font-size-xl1.375remExtra-large text size
--formie-font-size-2xl1.75remDisplay text size
--formie-font-weight-normal400Normal font weight
--formie-font-weight-medium500Medium font weight
--formie-font-weight-semibold600Semibold font weight
--formie-font-weight-bold700Bold font weight
--formie-line-height-tight1.25Tight line height
--formie-line-height-base1.5Default line height
--formie-line-height-relaxed1.4Relaxed meta/message line height
--formie-letter-spacing-tight-0.02emTight heading letter spacing
--formie-space-10.25remSpacing scale step
--formie-space-1-50.375remSpacing scale step
--formie-space-20.5remSpacing scale step
--formie-space-2-50.625remSpacing scale step
--formie-space-30.75remSpacing scale step
--formie-space-3-50.875remSpacing scale step
--formie-space-41remSpacing scale step
--formie-space-4-51.125remSpacing scale step
--formie-space-51.25remSpacing scale step
--formie-space-5-51.375remSpacing scale step
--formie-space-61.5remSpacing scale step
--formie-space-71.75remSpacing scale step
--formie-space-82remSpacing scale step
--formie-space-92.25remSpacing scale step
--formie-space-102.5remSpacing scale step
--formie-space-112.75remSpacing scale step
--formie-space-123remSpacing scale step
--formie-radius-sm0.25remSmall radius
--formie-radius-md0.375remMedium radius
--formie-radius-lg0.5remLarge radius
--formie-radius-full999pxFully rounded radius
--formie-border-width1pxDefault border width

Palette ​

VariableDefaultPurpose
--formie-black#000000Absolute black
--formie-white#ffffffAbsolute white
--formie-neutral-50#f8fafcNeutral scale 50
--formie-neutral-100#f1f5f9Neutral scale 100
--formie-neutral-200#e2e8f0Neutral scale 200
--formie-neutral-300#cbd5e1Neutral scale 300
--formie-neutral-400#94a3b8Neutral scale 400
--formie-neutral-500#64748bNeutral scale 500
--formie-neutral-600#475569Neutral scale 600
--formie-neutral-700#334155Neutral scale 700
--formie-neutral-800#1e293bNeutral scale 800
--formie-neutral-900#0f172aNeutral scale 900
--formie-neutral-950#020617Neutral scale 950
--formie-primary-50#e8ecfcPrimary scale 50
--formie-primary-100#d2d9f9Primary scale 100
--formie-primary-200#a4b3f4Primary scale 200
--formie-primary-300#778deePrimary scale 300
--formie-primary-400#4967e9Primary scale 400
--formie-primary-500#1c41e3Primary scale 500
--formie-primary-600#1634b6Primary scale 600
--formie-primary-700#112788Primary scale 700
--formie-primary-800#0b1a5bPrimary scale 800
--formie-primary-900#060d2dPrimary scale 900
--formie-primary-950#040920Primary scale 950
--formie-danger-50#fff1f2Danger scale 50
--formie-danger-100#ffe4e6Danger scale 100
--formie-danger-200#fecdd3Danger scale 200
--formie-danger-300#fda4afDanger scale 300
--formie-danger-400#fb7185Danger scale 400
--formie-danger-500#f43f5eDanger scale 500
--formie-danger-600#e11d48Danger scale 600
--formie-danger-700#be123cDanger scale 700
--formie-danger-800#9f1239Danger scale 800
--formie-danger-900#881337Danger scale 900
--formie-danger-950#4c0519Danger scale 950
--formie-success-50#ecfdf5Success scale 50
--formie-success-100#d1fae5Success scale 100
--formie-success-200#a7f3d0Success scale 200
--formie-success-300#6ee7b7Success scale 300
--formie-success-400#34d399Success scale 400
--formie-success-500#10b981Success scale 500
--formie-success-600#059669Success scale 600
--formie-success-700#047857Success scale 700
--formie-success-800#065f46Success scale 800
--formie-success-900#064e3bSuccess scale 900
--formie-success-950#022c22Success scale 950

Semantic Colours and Focus ​

VariableDefaultPurpose
--formie-color-backgroundvar(--formie-white)Form background
--formie-color-surfacevar(--formie-white)Main component surface
--formie-color-surface-subtlevar(--formie-neutral-50)Subtle surface fill
--formie-color-surface-mutedvar(--formie-neutral-100)Muted surface fill
--formie-color-textvar(--formie-neutral-700)Default text colour
--formie-color-text-mutedvar(--formie-neutral-600)Muted text colour
--formie-color-headingvar(--formie-neutral-900)Heading/high-emphasis colour
--formie-color-bordervar(--formie-neutral-300)Default border colour
--formie-color-border-softvar(--formie-neutral-200)Soft border colour
--formie-color-primaryvar(--formie-primary-400)Primary action colour
--formie-color-primary-hovervar(--formie-primary-500)Hover primary colour
--formie-color-primary-bordervar(--formie-primary-500)Primary border colour
--formie-color-primary-softvar(--formie-primary-100)Soft primary tint
--formie-color-focus-ringvar(--formie-primary-300)Focus-ring colour
--formie-color-dangervar(--formie-danger-600)Error/danger colour
--formie-color-danger-bordervar(--formie-danger-200)Error-message border colour
--formie-color-danger-softvar(--formie-danger-50)Soft danger tint
--formie-color-danger-darkvar(--formie-danger-900)Dark danger text/accent
--formie-color-successvar(--formie-success-500)Success colour
--formie-color-success-bordervar(--formie-success-200)Success-message border colour
--formie-color-success-softvar(--formie-success-50)Soft success tint
--formie-color-success-darkvar(--formie-success-900)Dark success text/accent
--formie-color-button-textvar(--formie-color-surface)High-contrast button text alias
--formie-focus-ring-border-colorvar(--formie-color-focus-ring)Focus border alias
--formie-shadow-focus0 0 0 3px rgba(119, 141, 238, 0.45)Default focus ring shadow
--formie-shadow-danger-focus0 0 0 3px rgba(253, 164, 175, 0.45)Error focus ring shadow

Form and Messages ​

VariableDefaultPurpose
--formie-title-form-size1.4remForm title size
--formie-body-size0.9375remBase form body size
--formie-gap-form0Gap between top-level form regions
--formie-gap-form-headervar(--formie-space-4)Header spacing
--formie-gap-form-messagesvar(--formie-space-4)Message stack spacing
--formie-gap-form-navigationvar(--formie-space-4)Navigation spacing
--formie-gap-form-body0Body spacing
--formie-gap-form-footervar(--formie-space-4)Footer spacing
--formie-message-paddingvar(--formie-space-4)Message padding
--formie-message-margin-bottomvar(--formie-space-4)Message bottom margin
--formie-message-sizevar(--formie-font-size-sm)Message text size
--formie-message-line-heightvar(--formie-line-height-relaxed)Message line height

Buttons and Icons ​

VariableDefaultPurpose
--formie-button-bordervar(--formie-border-width) solid var(--formie-color-border)Base button border
--formie-button-border-hovervar(--formie-button-secondary-border-hover)Base button hover border
--formie-button-border-radiusvar(--formie-radius-sm)Button radius
--formie-button-backgroundvar(--formie-neutral-100)Base button background
--formie-button-background-hovervar(--formie-neutral-200)Base button hover background
--formie-button-text-colorvar(--formie-color-heading)Base button text colour
--formie-button-colorvar(--formie-button-text-color)Shared button current colour
--formie-button-line-heightvar(--formie-line-height-tight)Button line height
--formie-button-font-weightvar(--formie-font-weight-medium)Button font weight
--formie-button-min-heightvar(--formie-space-10)Minimum button height
--formie-button-padding-yvar(--formie-space-2)Vertical button padding
--formie-button-padding-xvar(--formie-space-4)Horizontal button padding
--formie-button-font-sizevar(--formie-font-size-sm)Button font size
--formie-button-gapvar(--formie-space-2)Button content gap
--formie-button-icon-size0.9375remButton icon size
--formie-button-icon-button-size1.875remIcon-only button size
--formie-button-icon-border-radiusvar(--formie-radius-full)Icon button radius
--formie-button-icon-backgroundvar(--formie-neutral-100)Icon button background
--formie-button-icon-background-hovervar(--formie-neutral-200)Icon button hover background
--formie-button-icon-bordervar(--formie-border-width) solid var(--formie-neutral-300)Icon button border
--formie-button-icon-border-hovervar(--formie-border-width) solid var(--formie-neutral-400)Icon button hover border
--formie-button-icon-colorvar(--formie-neutral-950)Icon button colour
--formie-button-opacity-disabled0.7Disabled button opacity
--formie-button-shadow-focus0 0 0 3px var(--formie-color-border-soft)Button focus shadow
--formie-icon-mask-plusurl(...)Add/plus icon mask
--formie-icon-mask-arrow-lefturl(...)Back arrow icon mask
--formie-icon-mask-arrow-righturl(...)Forward arrow icon mask
--formie-icon-mask-closeurl(...)Close/remove icon mask
--formie-button-primary-backgroundvar(--formie-color-primary)Primary button background
--formie-button-primary-background-hovervar(--formie-color-primary-hover)Primary button hover background
--formie-button-primary-text-colorvar(--formie-white)Primary button text colour
--formie-button-primary-bordervar(--formie-border-width) solid transparentPrimary button border
--formie-button-primary-border-hovervar(--formie-border-width) solid var(--formie-color-primary-hover)Primary button hover border
--formie-button-primary-shadow-focus0 0 0 3px var(--formie-primary-300)Primary button focus shadow
--formie-button-secondary-bordervar(--formie-border-width) solid var(--formie-color-border)Secondary button border
--formie-button-secondary-border-hovervar(--formie-button-secondary-border)Secondary button hover border
--formie-button-secondary-backgroundvar(--formie-color-surface)Secondary button background
--formie-button-secondary-background-hovervar(--formie-neutral-100)Secondary button hover background
--formie-button-secondary-text-colorvar(--formie-color-heading)Secondary button text colour
--formie-button-ghost-bordervar(--formie-border-width) solid transparentGhost button border
--formie-button-ghost-border-hovervar(--formie-button-ghost-border)Ghost button hover border
--formie-button-ghost-backgroundtransparentGhost button background
--formie-button-ghost-background-hovervar(--formie-neutral-100)Ghost button hover background
--formie-button-ghost-text-colorvar(--formie-color-heading)Ghost button text colour
--formie-button-ghost-shadow-focusvar(--formie-button-shadow-focus)Ghost button focus shadow
--formie-button-link-text-colorvar(--formie-color-primary)Link-style button colour
--formie-button-link-text-color-hovervar(--formie-color-primary-hover)Link-style button hover colour
VariableDefaultPurpose
--formie-tab-padding-yvar(--formie-space-2)Page tab vertical padding
--formie-tab-padding-xvar(--formie-space-4)Page tab horizontal padding
--formie-tab-font-sizevar(--formie-font-size-sm)Page tab font size
--formie-gap-tabsvar(--formie-space-4)Gap below tab row
--formie-progress-height1.2remProgress bar height
--formie-progress-paddingvar(--formie-space-4)Progress wrapper padding
--formie-progress-size0.8remProgress text size
--formie-loading-sizevar(--formie-space-4)Spinner size
--formie-loading-margin-topcalc(var(--formie-loading-size) * -0.5)Spinner top offset
--formie-loading-margin-leftcalc(var(--formie-loading-size) * -0.5)Spinner left offset
--formie-loading-border-width2pxSpinner stroke width
--formie-loading-animationloading 0.5s infinite linearSpinner animation
--formie-loading-left50%Spinner horizontal anchor
--formie-loading-top50%Spinner vertical anchor
--formie-loading-z-index1Spinner stacking order
--formie-gap-pages0Gap between pages
--formie-gap-pagevar(--formie-space-4)Gap inside page wrapper
--formie-gap-page-container0Gap inside page container
--formie-gap-page-headervar(--formie-space-4)Page header gap
--formie-gap-page-bodyvar(--formie-space-4)Page body gap
--formie-gap-page-footervar(--formie-space-4)Page footer gap
--formie-gap-page-buttonsvar(--formie-space-4)Button group gap
--formie-title-page-sizevar(--formie-font-size-lg)Page title size

Rows, Fields, and Shared Field Surfaces ​

VariableDefaultPurpose
--formie-gap-rowsvar(--formie-space-4)Gap between row groups
--formie-gap-rowvar(--formie-space-4)Gap inside a row
--formie-gap-subfield-rowsvar(--formie-space-2)Gap between subfield rows
--formie-gap-subfield-rowvar(--formie-space-2)Gap inside a subfield row
--formie-gap-nested-field-rowsvar(--formie-space-2)Gap between nested field rows
--formie-gap-nested-field-rowvar(--formie-space-2)Gap inside a nested field row
--formie-subfield-row-column-min-width12remMinimum subfield column width
--formie-nested-field-row-column-min-width16remMinimum nested field column width
--formie-gap-errorsvar(--formie-space-2)Gap between form/page errors
--formie-gap-field-errorsvar(--formie-space-2)Gap between field errors
--formie-label-sizevar(--formie-font-size-sm)Field label size
--formie-meta-sizevar(--formie-font-size-sm)Meta/instructions size
--formie-control-height2.375remStandard control height
--formie-control-padding-yvar(--formie-space-2)Control vertical padding
--formie-control-padding-xvar(--formie-space-3)Control horizontal padding
--formie-control-font-sizevar(--formie-font-size-sm)Control font size
--formie-textarea-min-height9remTextarea minimum height
--formie-select-indicator-size1.4remSelect indicator size
--formie-list-indentvar(--formie-space-5)Indented list spacing
--formie-link-underline-offset0.15emLink underline offset
--formie-gap-fieldvar(--formie-space-2)Field wrapper gap
--formie-gap-field-layoutvar(--formie-space-2)Field layout gap
--formie-gap-field-contentvar(--formie-space-2)Field content gap
--formie-gap-field-controlvar(--formie-space-2)Field control gap
--formie-gap-optionsvar(--formie-space-2)Option list gap

Field-Specific Variables ​

VariableDefaultPurpose
--formie-summary-paddingvar(--formie-space-4)Summary block padding
--formie-gap-summaryvar(--formie-space-4)Gap inside summary blocks
--formie-file-summary-paddingvar(--formie-space-4)File summary padding
--formie-gap-file-summaryvar(--formie-space-3)Gap inside file summary
--formie-rich-text-min-height12remRich text editor minimum height
--formie-signature-width100%Signature canvas width
--formie-signature-height8remSignature canvas height
--formie-signature-backgroundvar(--formie-color-surface-subtle)Signature canvas background
--formie-signature-border1px solid var(--formie-color-border)Signature canvas border
--formie-signature-border-radiusvar(--formie-radius-sm)Signature canvas radius
--formie-signature-remove-button-top0Signature remove button top offset
--formie-signature-remove-button-right-14pxSignature remove button right offset
--formie-signature-remove-button-transformtranslate(0, -50%)Signature remove button transform
--formie-check-font-sizevar(--formie-font-size-sm)Checkbox/radio text size
--formie-check-line-heightvar(--formie-line-height-base)Checkbox/radio line height
--formie-check-margin-bottomvar(--formie-space-2)Checkbox/radio bottom margin
--formie-check-margin-rightvar(--formie-space-4)Checkbox/radio right margin
--formie-check-background-colorvar(--formie-color-surface-muted)Checkbox/radio control background
--formie-check-sizevar(--formie-space-4)Checkbox/radio control size
--formie-check-label-padding-leftvar(--formie-space-6)Checkbox/radio label left padding
--formie-check-label-line-heightvar(--formie-space-6)Checkbox/radio label line height
--formie-check-label-top0.3125remCheckbox/radio label top offset
--formie-check-label-transitionall 0.15s cubic-bezier(0.4, 0, 0.2, 1)Checkbox/radio label transition
--formie-check-label-background-colorvar(--formie-color-surface)Checkbox/radio label background
--formie-check-check-border-radius2pxCheckbox check radius
--formie-check-check-background-imageurl(...)Checkbox check icon
--formie-check-check-background-size8px autoCheckbox check icon size
--formie-check-radio-border-radius50%Radio indicator radius
--formie-check-radio-background-imageurl(...)Radio selected icon
--formie-check-radio-background-size8px autoRadio selected icon size
--formie-group-border1px solid var(--formie-color-border)Group field border
--formie-group-border-radiusvar(--formie-radius-sm)Group field radius
--formie-group-paddingvar(--formie-space-4)Group field padding
--formie-repeater-add-button-padding-leftvar(--formie-space-8)Repeater add button left padding
--formie-repeater-add-button-icon-maskvar(--formie-icon-mask-plus)Repeater add icon mask
--formie-repeater-add-button-height14pxRepeater add icon height
--formie-repeater-add-button-width14pxRepeater add icon width
--formie-repeater-add-button-leftvar(--formie-space-3)Repeater add icon left offset
--formie-repeater-remove-button-top0Repeater remove button top offset
--formie-repeater-remove-button-right-14pxRepeater remove button right offset
--formie-repeater-remove-button-transformtranslate(0, -50%)Repeater remove button transform
--formie-table-width100%Table width
--formie-table-margin-bottom1remTable bottom margin
--formie-table-border-collapsecollapseTable border-collapse mode
--formie-table-row-padding0.2remTable row cell padding
--formie-table-th-text-aligninheritTable heading alignment
--formie-table-th-font-size0.75remTable heading font size
--formie-table-th-font-weight600Table heading font weight
--formie-table-add-button-padding-leftvar(--formie-space-8)Table add button left padding
--formie-table-add-button-icon-maskvar(--formie-icon-mask-plus)Table add icon mask
--formie-table-add-button-height14pxTable add icon height
--formie-table-add-button-width14pxTable add icon width
--formie-table-add-button-leftvar(--formie-space-3)Table add icon left offset
--formie-table-remove-button-top0Table remove button top offset
--formie-table-remove-button-right-14pxTable remove button right offset
--formie-table-remove-button-transformtranslate(0, -50%)Table remove button transform

Override Example ​

css
.marketing-signup .formie-form {
  --formie-color-primary: #0f766e;
  --formie-color-primary-hover: #115e59;
  --formie-color-heading: #0f172a;
  --formie-color-border: #cbd5e1;
  --formie-button-border-radius: 999px;
  --formie-loading-size: 1.25rem;
  --formie-textarea-min-height: 12rem;
}

Override Guidance ​

  • Prefer CSS variable overrides before replacing component classes.
  • Scope overrides to a wrapper when only one form family needs a different treatment.
  • Keep semantic variables aligned with interaction state, especially focus, error, and success colours.
  • Use this page as the root variable reference; component-local variables that are introduced inside specific selectors are documented on their component pages when relevant.
Last updated: Oct 8, 2026, 10:08 PM