Avionics Design System

Design Philosophy

The ASDLC.io design system abandons the generic, ephemeral aesthetic of modern tech startups in favor of a "Timeless Industrial" vision. Inspired by the high-precision engineering of Dieter Rams' Braun designs, classic Kodak packaging, and aerospace flight manuals, the interface is built to feel authoritative, tactile, and meticulously engineered. We treat Agentic SDLC not as a fleeting trend, but as an established, rigorous discipline. This maturity is reflected through a brutalist, specification-sheet aesthetic that values structural clarity and utilitarian purpose, framing the site not as a blog, but as a definitive "Flight Manual" for machine intelligence.

To execute this "Avionics" aesthetic, the system is rooted in a highly deliberate, constrained set of typographic and color choices. The typography pairs the commanding, wide-stanced Archivo sans-serif with B612 Mono—a monospace font originally engineered for Airbus cockpits—ensuring that every code block and data table feels like a critical manifest entry. The "International Safety" color palette rejects harsh digital whites and clinical blues, opting instead for a warm, physical paper background (#F4F4F0) and a soft, toner-like black (#111111). Punctuated by a single, high-visibility Safety Orange (#F04E30), these elements work together to transform standard web documentation into a robust, heavy-industry control panel.

Color Palette

The Avionics palette is built around International Safety colors—high-contrast, immediately recognizable, and functional.

Background & Structure

--c-bg-page#f4f4f0
--c-bg-surface#ebebe6
--c-border#d1d1c7

Text

--c-text-primary#111111
--c-text-secondary#585855

Brand

--c-brand#f04e30
--c-brand-hover#d13a1e

Status Indicators

Success
--c-success#00703c
Warning
--c-warning#ffb400
Error
--c-error#cc0000

Background Colors

--c-bg-page: #f4f4f0;    /* Warm, off-white concrete/paper */
--c-bg-surface: #ebebe6; /* Slightly darker, for cards or headers */
--c-border: #d1d1c7;     /* Visible, structural grey */

Usage: --c-bg-page for main page background, --c-bg-surface for cards and headers, --c-border for borders and dividers.

Text Colors

--c-text-primary: #111111;   /* Soft black, like high-quality toner */
--c-text-secondary: #585855; /* Muted grey for secondary information */

Brand Colors

--c-brand: #f04e30;       /* Safety Orange */
--c-brand-hover: #d13a1e; /* Darker orange for hover states */

Status Indicators

/* Success (DIN Standard Green) */
--c-success: #00703c;

/* Warning (Signal Yellow) */
--c-warning: #ffb400;

/* Error (Switch Red) */
--c-error: #cc0000;

Typography

The Avionics typography system uses two carefully selected typefaces to create a technical, authoritative feel.

Font Families

--f-sans: "Archivo", sans-serif;  /* Variable font with industrial character */
--f-mono: "B612 Mono", monospace; /* Aviation-grade monospace */

Archivo is a variable font designed for industrial and technical applications. B612 Mono was designed by Airbus for cockpit displays.

Heading Styles

All headings use uppercase transformation and expanded width for maximum impact:

h1, h2, h3 {
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  font-variation-settings: "wdth" 110; /* Expanded width */
}
Element Size Usage
h1 2.5rem (40px) Page titles, main headings (one per page)
h2 1.5rem (24px) Major sections, chapter headings
h3 1.125rem (18px) Subsections, technical labels (uses monospace)

Layout System

The Avionics layout system uses a sophisticated CSS Grid approach for responsive, content-focused layouts. Every page shares the same .grid-layout applied to <main> in BaseLayout.astro.

Prose Contexts

We distinguish between generic prose and article content:

  • .prose: Generic typography styles for any text block. Uses display: contents so children participate directly in the parent grid.
  • .content-prose: Enhanced styles for long-form articles, including specific spacing for headings and lists.

Spacing Tokens

--s-grid-unit: 0.5em;          /* Fundamental grid unit */
--s-gutter-min: var(--s-grid-unit); /* Minimum gutter width */
--s-gutter-max: 9.7ch;         /* Maximum gutter width */
--s-content-max: 67ch;         /* Optimal reading width */
--s-grid: 24px;                /* Base grid unit (components) */
--s-gap: 1.5rem;               /* Standard gap between elements */

Content Grid

The .grid-layout class defines a 6-column symmetric grid with three named content zones. This is the backbone of every page.

.grid-layout {
  display: grid;
  grid-template-columns:
    [full-start]     minmax(var(--s-gutter-min), 1fr)
    [breakout-start] minmax(var(--s-gutter-min), var(--s-gutter-max))
    [content-start]  min(100% - 4 * var(--s-grid-unit), var(--s-content-max))
    [content-end]
                     minmax(var(--s-gutter-min), var(--s-gutter-max)) [breakout-end]
                     minmax(var(--s-gutter-min), 1fr)                 [full-end];
}

Column Map

full gutter content (67ch) gutter full
grid-column: full
grid-column: breakout
grid-column: content

Zone Widths

Zone Named lines Width Use case
content content-start / content-end max 67ch Body text, headings, lists — optimal reading measure
breakout breakout-start / breakout-end content + 2 × 9.7ch gutters Tables, figures, code blocks, diagrams
full full-start / full-end 100% viewport Hero sections, full-bleed backgrounds

Default Placement

All direct children of .grid-layout default to the content column. Opt in to wider zones with utility classes:

.grid-layout > *          { grid-column: content;  }  /* default */
.grid-layout > .breakout  { grid-column: breakout; }
.grid-layout > .full      { grid-column: full; width: 100%; }

Live Demo

The bars below are placed inside the page's .grid-layout to show real column boundaries:

content Default zone — body text lives here (67ch max)
breakout Tables, figures, and code blocks expand into gutters
full Edge-to-edge — hero sections, full-bleed backgrounds

Automatic Breakout

Some elements break out automatically via CSS rules in prose.css and grid.css — no class needed:

  • table inside .prosebreakout
  • figure inside .prosebreakout

Prose & Grid Integration

The .prose class uses display: contents, which makes its children direct grid participants. This is what allows markdown-rendered content (headings, paragraphs, tables) to align to named grid columns without extra wrapper markup:

.grid-layout > .prose { display: contents; }
.prose > *             { grid-column: content; }
.prose > table          { grid-column: breakout !important; }

Spec Grid

A responsive grid for card collections (Concepts, Patterns, Practices):

.spec-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--s-gap);
}

Components

Border Box

Isolate →

A utility class for bordered containers:

.border-box {
  border: 1px solid var(--c-border);
  padding: var(--s-gap);
}

Status Badge

Isolate →

Monospace badges for status indicators:

Draft Proposed Live Deprecated Experimental
<StatusBadge status="Live" />

Spec Card (Article Card)

Isolate →

Card component for index pages representing a single article item. Includes an optional description snippet.

<SpecCard 
  title="Context Engineering" 
  description="A set of practices designed to optimize what an AI agent 'sees'..."
  url="/concepts/context-engineering"
  meta="Oct 12, 2026"
  status="Live"
  tags={["context", "agentic-sdlc"]}
/>

Spec List Item

Isolate →

Dense row component for directory listings. Designed for use in status-grouped lists where items need to be scanned quickly by title.

Each row renders as a single semantic <a> tag with a title and optional description. Status, tags, and dates are intentionally omitted — status is communicated by the parent grouping; everything else lives on the detail page.

  • Root element: Semantic <a> tag — the entire row is clickable.
  • Context: Must be placed inside a <li> within a <ul class="spec-list"> for correct list semantics.
  • Description: Optional secondary text for disambiguation when titles are similar.
<ul class="spec-list">
  <li>
    <SpecListItem
      title="Living Specs"
      url="/practices/living-specs"
      description="A practice for maintaining specifications..."
    />
  </li>
</ul>

Spec Header

Isolate →

Standardized header for specification pages (Concepts, Patterns, Practices). Supports data-driven metadata rendering.

Example Specification

Description
A standardized header component for specification pages.
Status
Live
Last Updated
Tags
example, demo
<SpecHeader
  data={articleSchema.parse({
    title: "Example Specification",
    description: "A standardized header component...",
    status: "Live",
    lastUpdated: new Date(),
    tags: ["example"]
  })}
/>

Warning Banner

Isolate →

Used for critical system-wide alerts (e.g., Alpha Release warning).

<div class="banner-warning">
  SYSTEM ALERT: EXAMPLE WARNING BANNER
</div>

Article References

Isolate →

Structured reference component for citing external sources in APA-inspired format. Supports 7 reference types: website, paper, book, podcast, video, repository, and standard.

References

  1. OpenAI (2024). OpenAI Best Practices for Prompt Engineering . Accessed January 8, 2026.

    Foundational guidance on structuring prompts for LLMs, covering prompt engineering techniques and best practices.

  2. Yuntao Bai, Saurav Kadavath, Sandipan Kundu, & Amanda Askell (2022). Constitutional AI: Harmlessness from AI Feedback .

    Introduces the constitutional training methodology underpinning Claude's behavior and safety constraints.

  3. Eric Evans (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software . ISBN: 978-0321125217.

    Seminal work on modeling complex domains in software through strategic design patterns.

<ArticleReferences references={[
  {
    type: "website",
    title: "OpenAI Best Practices for Prompt Engineering",
    url: "https://platform.openai.com/docs/guides/prompt-engineering",
    author: "OpenAI",
    published: new Date("2024-01-15"),
    accessed: new Date("2026-01-08"),
    annotation: "Foundational guidance on structuring prompts..."
  },
  // ... more references
]} />

Features:

  • APA-inspired citation format: Author (Year). Title. Metadata.
  • Semantic HTML with <cite>, <ol>, and proper accessibility
  • Automatic handling of missing optional fields
  • External links with rel="external noopener"
  • Required accessed date for website references (validated in schema)

Accessibility

The Avionics design system is built with accessibility as a core principle:

Color Contrast

All text colors meet WCAG AA standards:

  • Primary text on page background: 14.5:1 (AAA)
  • Secondary text on page background: 6.8:1 (AA)
  • Brand color on page background: 4.7:1 (AA for large text)

Semantic HTML

  • Proper heading hierarchy (H1 → H2 → H3)
  • Semantic elements (<article>, <nav>, <main>)
  • ARIA labels where appropriate

Best Practices

Do's

  • ✅ Use CSS custom properties for all colors and spacing
  • ✅ Follow the grid layout system for consistent spacing
  • ✅ Use semantic HTML elements
  • ✅ Maintain heading hierarchy (one H1 per page)
  • ✅ Use monospace font for technical/metadata content

Don't's

  • ❌ Don't use arbitrary color values—use design tokens
  • ❌ Don't skip heading levels (H1 → H3)
  • ❌ Don't use multiple H1s on a single page
  • ❌ Don't override font families without good reason
  • ❌ Don't create layouts outside the grid system

Diagrams

Mermaid diagrams use the Avionics palette for visual consistency. Diagrams are authored in markdown and generated to SVG.

Theme Variables

Key mermaid theme variables mapped to design tokens:

primaryColor: #f04e30    /* --c-brand (nodes) */
clusterBkg: #ebebe6      /* --c-bg-surface (subgraphs) */
clusterBorder: #d1d1c7   /* --c-border */
textColor: #111111       /* --c-text-primary */
fontFamily: "B612 Mono"  /* --f-mono */

Generation Workflow

  1. Write ```mermaid block in markdown article
  2. Run pnpm diagrams to generate SVG
  3. Script outputs to public/mermaid/{slug}-fig-{n}.svg
  4. Script adds <figure> reference after mermaid block

Example Flowchart

```mermaid
flowchart LR
    subgraph "Input Layer"
        A["Source"]
    end
    
    subgraph "Processing"
        B["Transform"]
        C["Validate"]
        B --> C
    end
    
    A --> B
    C --> D["Output"]
```

Result: Nodes use Safety Orange (#f04e30), subgraphs use warm grey (#ebebe6), text uses primary black (#111111).


File References

The design system is implemented across these files:

  • ds/index.css - Design System entrypoint
  • ds/tokens.css - Design tokens
  • ds/base.css - Base styles
  • ds/pre-flight.css - Modern reset
  • ds/typography.css - Typography rules
  • ds/prose.css - Generic prose styles
  • ds/content-prose.css - Article-specific prose styles
  • ds/layouts/grid.css - Main grid layout
  • ds/layouts/spec-grid.css - Card grid layout
  • ds/components/*.css - Component styles
  • mermaid.json - Mermaid diagram theme configuration