Parch

Design tokens

Tokens are named design decisions. Components and mock apps consume tokens only, never raw hex values, so a theme change propagates everywhere at once. The portal's own stylesheet is the canonical token file; applications map these semantics onto their toolkit equivalent (GTK @accent_color, Qt palette roles).

Brand colors

The Parch identity is a teal→blue gradient with a purple secondary accent, drawn from the parchlinux.com brand.

Brand teal

--color-brand-teal

Brand blue

--color-brand-blue

Brand purple

--color-brand-purple

Brand colors are for identity moments: the logo, hero surfaces, active accents. They are not the default button color everywhere, semantic roles below keep interfaces calm.

Semantic colors

Semantic tokens adapt to light and dark automatically. Never use a semantic token for the wrong role (for example, --danger is only for destructive actions and errors).

TokenLightDarkRole
--background#fbfcfd#020917Page and window background
--surface#ffffff#0b1526Cards, dialogs, raised areas
--surface-2#f3f6f8#101d31Header bars, subtle fills
--surface-3#e9eef2#18273dHover states, tracks
--border / --border-strong#e2e8ed / #c7d2da#1c2b40 / #2b3d55Hairlines and input borders
--text / --text-muted / --text-subtleInk scaleLight ink scalePrimary, secondary, tertiary text
--accentParch tealBrighter tealPrimary actions, selection, focus
--linkBrand blueLighter blueInline links
--info / --success / --warning / --dangerBlue / green / amber / redLighter variantsStatus and callouts

Typography

Parch uses Saira for Latin UI text, Estedad for Persian (RTL) text, and JetBrains Mono for code and identifiers. All three are open fonts.

StyleSize / weightUsage
Display36–40px, bold, -1.2% trackingLanding heroes only
Title 134px, semiboldArticle page titles
Title 224px, semiboldSection headings
Title 319px, semiboldSubsections, card titles
Body16px, regular, 1.75 line-heightArticle text
Body small14pxDescriptions, captions
Mono13.7px (0.855rem)Code, paths, package names

Persian text uses Estedad at the same sizes with 1.05× line-height for the taller Arabic-script letterforms; see RTL and Persian typography.

Spacing, radii, elevation

Spacing follows a 4px base grid. Corner radii and elevation are intentionally limited to a small set:

TokenValueUsage
--radius-sm6pxChips, small controls
--radius-md10pxCards, inputs, images
--radius-lg14pxDialogs, popovers
--radius-window16pxApplication windows
--shadow-card1px + 24px softResting cards
--shadow-raised2px + 40px softHovered cards, dialogs, toasts

Motion

Motion is feedback, not decoration. Durations: 150ms for hovers and state changes, 250ms for enters/exits, both on the soft-out curve cubic-bezier(0.2, 0.8, 0.2, 1). Everything respects prefers-reduced-motion.

Focus and accessibility

Focus is always visible: a 2px --accent ring with 2px offset. Contrast ratios for text and interactive states meet WCAG 2.1 AA in both themes. See Accessibility for the full rules.