Skip to main content

Documentation Index

Fetch the complete documentation index at: https://voyage-theme.fasil.in/llms.txt

Use this file to discover all available pages before exploring further.

Voyager defines its design tokens as CSS custom properties on the :root selector. Two files publish them:
  1. layout/theme.liquid — emits tokens driven by settings_schema.json, so the merchant’s Theme Editor choices become CSS variables at render time.
  2. assets/styles.css — emits the literal fallback tokens that ship with the theme, used when a setting hasn’t been customized.
Every section, snippet, and inline style consumes tokens via var(--token). Editing a setting in the Theme Editor recompiles theme.liquid and updates the variable globally — no other file needs to change.

From theme.liquid (merchant-driven)

These tokens are emitted dynamically based on the merchant’s settings.

Brand palette

TokenSettings sourceDefault
--color-primarysettings.color_primary#002F5B
--color-secondarysettings.color_secondary#F6F4EF
--color-accentsettings.color_accent#C39738
--color-mutedsettings.color_muted#6B7280

Color schemes

TokenSettings sourceDefault
--scheme-1-bgsettings.scheme_1_bg#F6F4EF
--scheme-1-fgsettings.scheme_1_fg#002F5B
--scheme-2-bgsettings.scheme_2_bg#002F5B
--scheme-2-fgsettings.scheme_2_fg#F6F4EF
--scheme-3-bgsettings.scheme_3_bg#EFE9DC
--scheme-3-fgsettings.scheme_3_fg#0A0F18
--scheme-4-bgsettings.scheme_4_bg#0A0F18
--scheme-4-fgsettings.scheme_4_fg#F6F4EF

Functional colors

TokenSettings sourceDefault
--color-successsettings.color_success#2E7D32
--color-errorsettings.color_error#B00020
--color-rulesettings.color_rule#E5E2DA

Legacy aliases

These are aliases retained so older component CSS continues to work while the codebase migrates to the new scheme system.
TokenAliased toDefault
--inksettings.color_primary#002F5B
--papersettings.color_secondary#F6F4EF
--navysettings.color_primary#002F5B
--mutedsettings.color_muted#565E6B
--surfacesettings.scheme_1_bg#F6F4EF
--hairline-lightsettings.color_rule#E5E2DA

Typography

TokenSourceDefault
--f-sansResolved body family + fallbacksTajawal, Inter, system-ui, sans-serif
--f-serifResolved heading family + fallbacksTajawal, Inter, system-ui, sans-serif
--f-scriptResolved accent family + fallbacksconsideredno, cursive
--font-body-scalesettings.font_body_scale / 1001.0
--font-heading-scalesettings.font_heading_scale / 1001.1

Buttons

TokenSourceDefault
--btn-radiussettings.button_corner_radius0px
--btn-letterspacingsettings.button_letterspacing0.22em (extra)

Layout

TokenSourceDefault
--container-wsettings.container_width1280px
--section-ysettings.section_spacing80px (comfortable)
--rule-wsettings.rule_style1px (thin)

From styles.css (literal fallback)

These tokens are emitted unconditionally in the stylesheet. They serve as the floor — what every component falls back to when a settings-driven token is undefined.

Brand palette (legacy)

TokenValue
--navy#002F5B
--navy-deep#001E3C
--navy-soft#1B3F65
--band#002F5B
--grey#D9DAD9
--grey-deep#B6B8B7
--paper#F6F4EF
--paper-warm#EFEBE2
--surface#F6F4EF
--surface-warm#EFEBE2
--ink#002F5B
--muted#565E6B

Hairlines

TokenValueNotes
--hairlinergba(0,47,91,0.18)Default divider — navy with 18% opacity
--hairline-lightrgba(0,47,91,0.09)Subtle divider — navy with 9% opacity
--hairline-darkrgba(255,255,255,0.18)Inverse divider — for use on dark surfaces

Layout (literal)

TokenValue
--nav-h70px
--pad-xclamp(28px, 4vw, 80px)
--section-yclamp(36px, 4.5vw, 72px)

Typography (literal)

TokenValue
--f-script"consideredno", cursive
--f-sans"Tajawal", "Inter", system-ui, sans-serif

Motion

TokenValueNotes
--easecubic-bezier(.2, .6, .2, 1)The single easing curve used across every transition

Image-slot component

The image-slot component (used for inline placeholders) defines its own token set:
TokenValue
--is-bgvar(--grey)
--is-colorvar(--muted)
--is-borderrgba(0,47,91,0.18)
--is-fontvar(--f-sans)

Grid utility

TokenValueNotes
--cols2 (responsive override)Set by the view-mode picker on the PLP grid

Token resolution order

When a component reads var(--ink), the browser walks the cascade in this order:
  1. Inline style — any element with style="--ink: ..." overrides everything below.
  2. <style> in theme.liquid:root { --ink: {{ settings.color_primary | default: '#002F5B' }}; } emitted on every request.
  3. assets/styles.css:root { --ink: #002F5B; } shipped with the theme.
This means a merchant changing color_primary in the Theme Editor instantly updates every component on the storefront, while styles.css keeps shipping a literal default for any token the schema doesn’t bind.

Dark mode

Voyager’s dark mode is opt-in via the data-theme="dark" attribute on <html>. When set, the --surface and --ink tokens flip:
TokenLight modeDark mode
--surface#F6F4EF (paper)#0A0F18 (charcoal)
--ink#002F5B (navy)#F6F4EF (paper)
--paper#F6F4EF#F6F4EF (always stays paper — used as a literal accent)
--band#002F5B#002F5B (always stays navy — the dark-band aesthetic is invariant)
The dark-mode toggle is hidden by default in theme.liquid. Merchants can expose it by adding a toggle button to the header.

What’s next

Theme settings

The merchant-facing settings that drive these tokens.

JavaScript API

The data-attribute hooks and global functions.