Replicant FX / Arroway Ltd
Site Standards
Living reference for both brands — design tokens, components, and editorial conventions. Each section shows a live example, the code to use it, and where to edit the source.
Design Tokens
Brand Accents
#C4621D--arroway-accent
#d97f42--arroway-accent-light
#9e4e17--arroway-accent-dim
#faf0e8--arroway-accent-pale
#f5dcc8--arroway-accent-pale2
#4682B4--rfx-accent
#6fa3cc--rfx-accent-light
#2d5f8a--rfx-accent-dim
#e8f1f8--rfx-accent-pale
#d0e4f2--rfx-accent-pale2
Neutrals
#ffffff--bg
#f7f6f3--bg-2
#f0eeea--bg-3
#1a1916--text-primary
#5a5855--text-secondary
#9a9894--text-tertiary
Typography Tokens
--font-display'DM Serif Display', Georgia, serif--font-body'DM Sans', system-ui, sans-serif--max-w860px — max page content width--page-pad24px (16px mobile)Brand Switching
Set data-brand="arroway" or data-brand="rfx" on <html> via
BaseLayout.astro. CSS selects tokens automatically.
---
import BaseLayout from '../layouts/BaseLayout.astro';
---
<BaseLayout brand="rfx"> <!-- or brand="arroway" -->
...
</BaseLayout> Callouts
Live Examples
Note
This is a note. Use it for helpful context, tips, or background information
that the reader should know but that isn't blocking.
Caution
This is a caution. Use it when the reader should slow down — a common
mistake, a non-obvious prerequisite, or something that could cause confusion.
Warning
This is a warning. Use it when skipping a step or doing something wrong
could cause real damage — data loss, hardware damage, safety hazards.
Tip
The
title prop overrides the heading label.
<Callout type="note" title="Tip"> Usage in MDX (.mdx files)
---
# your frontmatter
---
import Callout from '../../components/shared/Callout.astro';
<Callout type="note">Content here.</Callout>
<Callout type="caution">Content here.</Callout>
<Callout type="warning">Content here.</Callout>
{/* Custom label */}
<Callout type="note" title="Pro Tip">Content here.</Callout> Usage in plain Markdown (.md files)
Use the CSS class directly on an HTML element. The heading appears automatically via CSS ::before.
<div class="note">
This is a note inside a plain .md file.
</div>
<div class="caution">Double-check your wiring before powering on.</div>
<div class="warning">High voltage — disconnect mains before opening.</div> Astro page (no MDX)
---
import Callout from '../components/shared/Callout.astro';
---
<Callout type="warning">
Never run this command in production.
</Callout> Typography
Eyebrow label
Heading 1
Heading 2
Heading 3
Body text — DM Sans 400. Links look like this.
Secondary / tertiary color text
/* global.css */
h1 { font-size: clamp(2rem, 5vw, 3rem); }
h2 { font-size: clamp(1.4rem, 3vw, 1.9rem); }
h3 { font-size: 1.2rem; }
/* Eyebrow */
.eyebrow {
font-size: 0.7rem;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--text-tertiary);
} # H1 heading
## H2 heading
### H3 heading
<p class="eyebrow">Eyebrow label</p> Buttons
<!-- In any .astro / .mdx / HTML -->
<a href="/contact" class="btn btn-arroway">Get in touch</a>
<a href="/rfx/blog" class="btn btn-rfx">Build log</a>
<a href="/about" class="btn btn-ghost">Learn more</a>
<!-- With icon (SVG inline before text) -->
<a href="..." class="btn btn-rfx">
<svg ...></svg> GitHub
</a> Tags / Pills
Arroway Replicant FX Neutral
<span class="tag tag-arroway">Consulting</span>
<span class="tag tag-rfx">3D Printing</span>
<span class="tag tag-neutral">General</span> Tables
| Item | Description | Qty |
|---|---|---|
| Arduino Mega | Microcontroller for GRBL Mega-5X | 1 |
| DM542T Stepper Driver | 24–50VDC, up to 4.5A, DIP-configurable | 5 |
| GT2 Timing Belt, 6mm | 5-metre roll | 1 |
<!-- Markdown pipe table (in .md or .mdx) -->
| Item | Description | Qty |
|------|-------------|-----|
| Arduino Mega | Microcontroller for GRBL | 1 |
| DM542T Driver | 24–50VDC, DIP-configurable | 5 |
<!-- With thumbnail image column (first col is image link) -->
| | Item | Qty |
|---|---|---|
| [](https://amazon.com/dp/B01H4ZLZLQ?tag=arroway-20) | [Arduino Mega](https://amazon.com/dp/B01H4ZLZLQ?tag=arroway-20) | 1 | Code Blocks
Live rendered examples — this is exactly how code blocks appear in posts:
const greeting = 'Hello, world';
console.log(greeting); def greet(name):
return f"Hello, {name}" #define N_AXIS_LINEAR 4 // Number of linear axes
uint16_t spindle_compute_pwm_value(float rpm) {
return (uint16_t)(0.0309f * rpm + 85.606f);
} Markdown syntax — add the language name after the opening fences:
```javascript
const greeting = 'Hello, world';
console.log(greeting);
```
```python
def greet(name):
return f"Hello, {name}"
```
```c
#define N_AXIS_LINEAR 4
``` Inline code: wrap in single backticks — `like this`
Images
<!-- Markdown -->

<!-- In .astro with width control -->
<img src="/images/2019/10/..." alt="CNC router" style="width:100%;max-width:600px" />
<!-- Folder structure -->
public/
images/
2019/10/ ← WordPress migration by year/month
2020/06/
... Prose Layout
<!-- PostLayout.astro wraps all blog content in: -->
<article class="prose">
<slot /> <!-- your .md / .mdx content renders here -->
</article>
<!-- To use prose styling on a custom .astro page: -->
<div class="container section">
<div class="prose">
<h1>Title</h1>
<p>Content...</p>
</div>
</div> Content Collections (blog posts)
# Arroway blog (src/content/blog/)
title: "Post Title"
date: "2024-06-01"
description: "Short description for meta and cards."
category: writing # maps to label via src/utils/categories.ts
draft: false # true = excluded from builds
ogImage: /images/... # optional; falls back to site default # RFX blog (src/content/rfxBlog/)
title: "Build Log Post"
date: "2024-06-01"
description: "..."
category: cnc # cnc | 3d-printing | electronics | props | code | tools
tags: ["grbl", "cnc"] # optional keyword array
githubUrl: "https://github.com/..." # optional; adds GitHub button
draft: false File Locations Cheat Sheet
| What | Where |
|---|---|
| Global CSS / tokens | src/styles/global.css |
| Brand switching logic | src/layouts/BaseLayout.astro |
| Post chrome (header, footer, TOC) | src/layouts/PostLayout.astro |
| Arroway nav | src/components/arroway/Nav.astro |
| RFX nav | src/components/rfx/Nav.astro |
| Footer (both brands) | src/components/shared/Footer.astro |
| Callout component | src/components/shared/Callout.astro |
| Affiliate disclosure | src/components/rfx/AffiliateDisclosure.astro |
| Category label map | src/utils/categories.ts |
| Content schemas | src/content/config.ts |
| Arroway blog posts | src/content/blog/*.md |
| RFX blog posts | src/content/rfxBlog/*.md |
| RFX project pages | src/content/rfxProjects/*.md |
| Press mentions | src/content/press/*.md |
| Gear / affiliate data | src/data/gear.ts |
| Static images | public/images/ |
| Netlify redirects | netlify.toml |
| Site URL / integrations | astro.config.mjs |