Files
sap-architecture/references/palette-and-typography.md
T
2026-07-24 20:47:16 +00:00

193 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SAP Horizon palette & typography
Every value in this file is sourced from the **official SAP BTP Solution Diagram Guidelines** at https://github.com/SAP/btp-solution-diagrams/tree/main/guideline. Quotes are verbatim. Hex values are normalised to uppercase (autofix.py will normalise any surviving lowercase).
## The atomic design system
Quoted from `guideline/docs/btp_guideline/atomic.md`:
> "Atoms are the smallest elements in this case the basic elements such as colors, line styles, icons, and text"
>
> "Molecules are elements that consist of atoms. A Molecule refers to any element that uses the basic colors and lines, for example, an arrow that is red and dashed."
>
> "Organisms are groups of Molecules. This could be grouped elements such as a typical shape with text and connectors, or even a whole diagram."
This skill emits at the organism level — composed zones with cards, connectors, and pills — but every value below is at the atom level so that nothing improvises.
## Color philosophy
> "Horizon is the default visual style for SAP Products. Its color balance helps to draw the user's attention to the essential information and functions. It also promotes a distinct and consistent look throughout all products. **This also applies to diagrams.**"
`foundation.md`
The skill never invents palette values. The `validate.py` check warns on any hex outside this file.
## Primary palette — the everyday colors
| Role | Border | Fill | Source |
|------|--------|------|--------|
| **SAP / BTP area** | `#0070F2` | `#EBF8FF` | `foundation.md` |
| **Non-SAP area** | `#475E75` | `#F5F6F7` | `foundation.md` |
| **Title text** | — | — | `#1D2D3E` (`foundation.md`) |
| **Body text** | — | — | `#556B82` (`foundation.md`) |
> "Blue is the standard, grey for non-sap elements and the Accent colors are for highlighting certain areas."
>
> "It is not recommended to use the colors too heavily, they can overpower the diagram."
`diagr_comp/areas.md`
## Semantic palette — status / meaning
> "Semantic colors can be used to represent a negative, critical, positive, neutral, or information status."
`foundation.md`
| Role | Border | Fill |
|------|--------|------|
| **Positive** (authentication, mTLS, success) | `#188918` | `#F5FAE5` |
| **Critical** (warnings, partial outage) | `#C35500` | `#FFF8D6` |
| **Negative** (errors, blocked) | `#D20A0A` | `#FFEAF4` |
## Accent palette — sparingly, for emphasis
> "Secondary colors can be applied to accentuate important elements. They make a vivid contribution to the overall UI and **should be used sparingly.**"
`foundation.md`
| Role | Border | Fill |
|------|--------|------|
| **Teal** (MCP, custom emphasis) | `#07838F` | `#DAFDF5` |
| **Indigo** (authorization flows, focus app) | `#5D36FF` | `#F1ECFF` |
| **Pink** (trust flows) | `#CC00DC` | `#FFF0FA` |
The semantic mapping for connectors is fixed (see `shapes-and-edges.md`):
> "To harmonize certain reoccurring flows a use of the following standards is recommended:
> - Trust Flows are usually pink
> - Authentication flows are usually green
> - Authorization flows are usually indigo
> - Firewalls and Network barriers are thick grey lines"
`lines_connectors.md`
## Observed Architecture Center variants
The 2026 corpus profile in `corpus-findings.md` found these additional SAP-authored variants in real `.drawio` files. Treat them as accepted inherited values, not as colors to introduce casually:
| Family | Observed variants |
|---|---|
| SAP blue | `#00185A`, `#002A86`, `#0057D2`, `#2395FF` |
| SAP light blue fills | `#D1EFFF`, `#CCDDFF`, `#EAF8FF`, `#EDF8FF`, `#ECF8FF` |
| Neutral greys | `#475E74`, `#475F75`, `#5B738B`, `#D5DADD`, `#EDEDED`, `#EDEFF0` |
| Positive green | `#266F3A` |
| Indigo | `#470BED`, `#7F00FF` |
Generated diagrams should still prefer the guideline palette above. The validator accepts these variants because SAP's own Architecture Center files use them.
## Color proportion — the area-color rule
> "It is not recommended to use the colors too heavily, they can overpower the diagram."
The published SAP examples observe roughly:
- **~70%** primary blue (SAP / BTP zones, service cards) and neutral grey (non-SAP)
- **~20%** white inner frames (subaccount, runtime container, focus app)
- **~10%** accent (one or two colored zones / pills max)
Don't paint two zones in different accent colors competing for attention. If two flows need to be highlighted, use one accent and keep the rest neutral.
## Alternating fill by nesting level
> "When nesting different areas inside each other, you should alternate between using a fill and not using a fill to provide sufficient contrast between the areas. **The parent layer is usually the BTP layer.**"
`diagr_comp/areas.md`
Resulting pattern (alternation, parent = BTP):
| Nest level | Fill |
|------------|------|
| L0 outer (BTP) | `#EBF8FF` |
| L1 inner | `#FFFFFF` (no fill) |
| L2 inner | `#EBF8FF` |
| L3 inner | `#FFFFFF` |
Stacked layers (e.g. multi-tenant subaccounts) keep the same style:
> "Areas can be shown as stacked to display multiple grouped layers or items. **The style should not be changed in order to keep diagrams consistent.**"
`diagr_comp/areas.md`
## Typography — Helvetica everywhere
The guideline document mentions Arial and Arial Black as font choices:
> "To add the system fonts Arial and ArialBlack to your local draw.io installation you can add the following to the configuration: `{ "customFonts": ["Arial", "Arial Black"] }`"
`solution_diagr_intro/intro.md`
The current public corpus mixes `Helvetica`, `Arial`, and a small amount of `72 Brand`. The skill emits **Helvetica** and `autofix.py` normalises generated content to Helvetica because it is the dominant value in both the canonical BTP examples and Architecture Center diagrams. If a copied SAP template already contains `Arial` or `72 Brand` in rich-text labels, preserve it unless you are rewriting that label.
### Hierarchy
> "**To create hierarchies four text styles were derived from Fiori Horizon.**"
`diagr_comp/text.md`
The doc commits the four styles only via a graphic (`text_styles.png`); concrete pt sizes derived from observation of the shipped templates:
| Role | Size (pt) | Weight (`fontStyle`) | Color |
|------|-----------|----------------------|-------|
| Diagram title | 24 | bold (`1`) | `#1D2D3E` |
| Subtitle | 14 | regular (`0`) | `#475E75` |
| Zone / container label | 16 | bold (`1`) | `#475E75` (non-SAP) or `#1D2D3E` / `#00185A` (BTP) |
| Feature-group heading inside a card | 18 | bold (`1`) | `#1D2D3E` |
| Sub-section label | 14 / 11 | bold (`1`) | accent or `#1D2D3E` |
| Service card title | 1214 | bold (`1`) | `#1D2D3E` |
| Service card caption / inline helper | 11 | regular (`0`) | `#556B82` |
| Pill label | 10 | bold (`1`) — uppercase for TRUST | pill text color |
| Edge label | 10 | regular (`0`) | `#475E75` or zone color |
Never use pure black. `#1D2D3E` reads as "black" but harmonises with the blue zone fills.
### Scaling rule
> "Texts defined in this document may need to be scaled up to fit the specifications of the target medium."
>
> "When scaling elements up or down, take care to ensure text sizes remain consistent."
`text.md` and `solution_diagr_intro/big_picture.md`
If the user asks for a poster-sized canvas, scale the **whole** diagram including text — don't tweak font sizes individually.
## Spacing — the SAP-logo heuristic
> "**Spacing around objects should be even and roughly the height of the SAP Logo.**"
`foundation.md`
The SAP logo (the standard 60 × 23 px draw.io shape) is roughly **23 px tall**, snapped to the 10-px grid that's **20 px** of breathing room. Use 20 px between sibling cards, 30 px between zones.
## Banned palettes
Not in the SAP Horizon family — the validator flags these as warnings:
- draw.io defaults: `#dae8fc`, `#d5e8d4`, `#f8cecc`, `#6c8ebf`, `#fff2cc`
- Material / Tailwind generic pastels
- Pure `#000000` for text (use `#1D2D3E` instead)
- Any hex not listed in `validate.py:SAP_PALETTE`
## Don't
> "It is not recommended to use too many SAP logos in the same diagram. Use text only elements instead."
`diagr_comp/product_names.md`
> "**SAP product names must be paired with the SAP logo.**" *(but only one logo per zone, not one per service card)*
`diagr_comp/product_names.md`
> "Avoid creating your own arrows; use the ones available in the library instead as they adhere to the correct styling guidelines."
`solution_diagr_intro/big_picture.md`