| Variant | Logo | Wordmark |
|---|---|---|
| default | ![]() |
|
| download | svg, png | svg, png |
| black | ![]() |
|
| download | svg, png | svg, png |
| white | ![]() |
|
| download | svg, png | svg, png |
- The square mark follows a Swiss-graphic-design intent: the
ospolettermark is set in the lower-right of the square, the finalois deliberately cropped by the right edge, and thepdescender sits flush to the bottom border. It is intended as a large, expressive brand mark — for very small or corner-masked contexts (favicons, app icons) prefer the wordmark or add clear space. --black/--whitedenote the ink (foreground) colour, not the background. So--blackis a black mark (on a white field for the square form) and--whiteis a white mark (on a black field). The mono SVGs usefill="currentColor", so when inlined they can be re-coloured with the CSScolorproperty; the standalone files and PNGs render with the colour shown above.- Clear space & minimum size. The wordmark assets are tightly cropped with no built-in padding, so the consumer controls spacing — keep clear space of at least the height of the
oon all sides of the wordmark, and the width of oneoaround the square mark. Don't render the wordmark below ~120px wide or the square below ~24px; at smaller sizes use theomonogram. - Use the vector (SVG) as the master. PNGs are provided for convenience at a single size; scale from the SVG for any larger or high-DPI use.
Wordmark previews above are shown on a checkerboard so the black and white variants stay visible in both light and dark themes; the assets themselves have transparent backgrounds.
Favicon, app and PWA icons live in icons/. They are built from the o monogram rather than the full square mark, which is illegible at icon sizes.
| Asset | File | Use |
|---|---|---|
| Favicon (SVG) | favicon.svg | Modern browser tab icon |
| Favicon (ICO) | favicon.ico | Legacy tab icon (16 / 32 / 48) |
| Apple touch | apple-touch-icon.png | iOS home screen (180) |
| PWA | icon-192.png, icon-512.png | Android / PWA |
| Maskable | maskable-512.png | Adaptive / maskable icon (safe-zone aware) |
| Manifest | site.webmanifest | PWA manifest |
social/og-image.png (1200×630) is the Open Graph / social share image — the white wordmark on the brand-red field. SVG source: og-image.svg.
The palette is defined once in tokens/tokens.json (W3C DTCG format) and compiled to tokens.css, tokens.scss and tokens.js (with tokens.d.ts types). Regenerate the outputs, the colour tables below, and the manifest theme colour with:
node tokens/build.mjsLogo SVGs and PNGs carry literal hex (you don't template artwork at runtime); if the brand colour changes, update tokens.json and re-export the affected marks.
color.red.500 is the primary brand colour. The scale provides tints for backgrounds and accessible shades for text.
Aliases that map intent to a colour in the scale — prefer these in product code.
Contrast ratios are WCAG 2.1 against white.
color.red.500meets AA for large text and UI components (≥3:1) but not body text — usecolor.text-link(red 700) for red text on white.
This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
- The ospo.ch logo mark and logo type are designed by Dimitri Kandassamy














