# Canvas layout recipe
The canonical SAP BTP examples use a **1169 × 827** landscape canvas, and this remains the safest default for new L2 diagrams. Architecture Center also contains larger landscape and portrait variants; when you start from one of those templates, preserve its canvas size instead of forcing it back to 1169 × 827.
## Coordinate grid
All placements below are snapped to the **10-px grid**. If you need to nudge something off-grid to make connector centers align, prefer moving by 10 at a time and keep the numbers integer.
```
┌──────────────────────────────────────────────────────────────────────────┐
│ Title (24pt bold #002A86, left-anchored) y=30..60 │
│ Subtitle (14pt #475E75) y=70..95 │
├─────────────┬────────────────────────────────────┬───────────────────────┤
│ User zone │ SAP BTP zone │ On-Premise zone │
│ x≈40..250 │ x≈270..880 │ x≈910..1140 │
│ w=210 │ w=610 │ w=230 │
│ stroke │ stroke #0070F2 fill #EBF8FF │ stroke #475E75 │
│ #475E75 │ │ fill #F5F6F7 │
│ fill white │ │ │
│ │ │ │
│ │ │ │
│ (y≈130..700 working area) │
└──────────────────────────────────────────────────────────────────────────┘
network bar
solid 4 px
at x=890..895
```
The network bar is a **single solid 4-px vertical line** between BTP and On-Prem (`strokeColor=#475E75;strokeWidth=4;endArrow=none`) — not a dashed rectangle. Next to it, a rotated text label `"Network"` (`rotation=-90;fontSize=12;fontStyle=1`) on white background.
## Zone-specific rules
### User / MCP Client zone (left column)
- `x=40, y=120, width=210, height≈580`
- Inline label `"MCP Client"` top-left, 16 pt bold `#475E75`
- Contains: optional user avatar (icon 64×80) + stacked client cards (VS Code, Claude Desktop, Copilot Studio, …) at 180×50 each, 20-px vertical gap
### SAP BTP zone (center column)
- `x=270, y=120, width=610, height≈580`
- Inline label `"SAP BTP"` top-left, 16 pt bold `#00185A`
- SAP logo (`image=img/lib/sap/SAP_Logo.svg`) top-right of the zone at `x=zone.right-90, y=zone.top+15, w=60, h=23` (or top-left at `x=zone.left+10, y=zone.top+10`)
- Inside: an inner white `Subaccount` frame at `x=300, y=170, width=560, height≈450`, stroke `#475E75`, fill `#FFFFFF`. Inside the Subaccount, stack the focus app card + bound services.
- **Bound services** always go in a separate white frame inside the BTP zone, stacked vertically as light-blue tiles (`#EBF8FF` fill, `#0070F2` stroke). Use the bundled service icons for visual grammar.
### On-Premise zone (right column)
- `x=910, y=120, width=230, height≈580`
- Inline label `"On-Premise"` top-left, 16 pt bold `#475E75`
- Typical content: `Cloud Connector` card + one or more backend system cards (S/4HANA, BW/4HANA, ECC)
## Pills on edges
Pills sit at the **midpoint of each edge**, floating above both zones. They share `parent="1"` with the zones (not a zone as parent) — this is why the validator exempts them from sibling-overlap checks.
Short imperative labels:
- `SIGN-IN` (green) — user auth
- `TRUST` (magenta, uppercase) — trust anchor
- `MCP TOOL CALL` (teal) — MCP JSON-RPC over HTTPS
- `mTLS · PP` (green) — Cloud Connector mutual TLS with Principal Propagation
- `OAUTH · JWT` (green) — XSUAA OAuth bearer
One pill per semantic step. Don't stack two pills on the same edge; break the edge into two steps if needed.
## Title band
```xml
```
Keep the title under ~60 chars and the subtitle under ~100. Longer strings need wrapping which throws the coordinate math off.
## Legend
**Do not draw a legend inside the canvas.** The SAP ref-arch convention is:
- Edge pills are self-explanatory via color + label
- The flow narration below the embedded PNG (in Markdown / Confluence) spells out what each color means
When a selected SAP Architecture Center template already uses inline pills and no separate legend block, preserve that design. This matters for templates such as `ac_RA0029_AgenticAI_root.drawio`, where adding a large bottom legend forces the diagram away from the SAP reference layout and usually lowers the corpus score. If the user asks for a legend in that case, keep the inline pill labels and provide the legend explanation in the flow narration outside the canvas.
If the user explicitly asks for an inside-canvas legend, put it at `y≈730`, full-width, a single neutral frame with two rows (lines + blocks).
## Aspect ratio & margins
The 1169 × 827 canvas has a ~1.41 aspect ratio (A4 landscape). Leave:
- **40-px margin** on left and right (content lives at 40..1140)
- **120-px top margin** for title + subtitle
- **~100-px bottom margin** for the legend / whitespace
Zones fill the middle band evenly. Three zones → widths roughly `210 | 610 | 230` adding to 1050 with three 20-px gutters.