19 KiB
RECON.md — OpenCD Research Report
Agent: Face (Templeton Peck) — Recon & Procurement
Mission: Research Open Props, CD physical specs, ASW patterns, trentuna.com aesthetic, CD packaging references
Date: 2026-05-25
Context: Parent task [t_2c57546a] — DESIGN.md architecture plan calls for this recon before implementation
Q1: Open Props v2 Token Audit
Source verified: open-props.style + github.com/argyleink/open-props (main branch source files)
Import Paths (Current)
| Method | Code |
|---|---|
| CDN (CSS) | @import "https://unpkg.com/open-props"; |
| CDN (HTML link) | <link rel="stylesheet" href="https://unpkg.com/open-props"/> |
| npm | npm install open-props then @import "open-props/style"; |
| PostCSS JIT | postcss-jit-props plugin — only ships used props |
| Design Tokens | JSON at https://unpkg.com/open-props/open-props.tokens.json |
Recommendation: Use @import "https://unpkg.com/open-props" for the CDN path (already in DESIGN.md). For npm builds, use @import "open-props/style".
Token Values Verified from Source
Sizes (props.sizes.js)
| Token | Value | Used For |
|---|---|---|
--size-1 |
.25rem | Micro spacing |
--size-2 |
.5rem | Tight spacing |
--size-3 |
1rem | Base spacing |
--size-4 |
1.25rem | (gap between OP sizes) |
--size-5 |
1.5rem | Regular spacing |
--size-7 |
2rem | Large spacing |
--size-9 |
4rem | Section spacing |
--size-12 |
10rem | Sidebar widths |
--size-fluid-1 |
clamp(.5rem, 1vw, 1rem) | Responsive padding |
--size-fluid-2 |
clamp(1rem, 2vw, 1.5rem) | Responsive padding |
--size-fluid-3 |
clamp(1.5rem, 3vw, 2rem) | Responsive padding |
Font Sizes (props.fonts.js)
| Token | Value |
|---|---|
--font-size-00 |
.5rem |
--font-size-0 |
.75rem |
--font-size-1 |
1rem |
--font-size-2 |
1.1rem |
--font-size-3 |
1.25rem |
--font-size-4 |
1.5rem |
--font-size-5 |
2rem |
--font-size-6 |
2.5rem |
--font-size-7 |
3rem |
--font-size-8 |
3.5rem |
--font-size-fluid-0 |
clamp(.75rem, 2vw, 1rem) |
--font-size-fluid-1 |
clamp(1rem, 4vw, 1.5rem) |
--font-size-fluid-2 |
clamp(1.5rem, 6vw, 2.5rem) |
--font-size-fluid-3 |
clamp(2rem, 9vw, 3.5rem) |
Font Stacks (props.fonts.js)
| Token | Stack |
|---|---|
--font-system-ui |
system-ui, sans-serif |
--font-neo-grotesque |
Inter, Roboto, Helvetica Neue, Arial Nova, Nimbus Sans, Arial, sans-serif |
--font-monospace-code |
Dank Mono, Operator Mono, Inconsolata, Fira Mono, ui-monospace, SF Mono, Monaco, Droid Sans Mono, Source Code Pro, Cascadia Code, Menlo, Consolas, DejaVu Sans Mono, monospace |
--font-serif |
ui-serif, serif |
--font-sans |
var(--font-system-ui) |
--font-mono |
var(--font-monospace-code) |
Important for OpenCD: --font-sans resolves to system-ui, sans-serif — a readable sans. For the CD spine label font, consider --font-neo-grotesque (Inter/Roboto) for a cleaner look.
Borders (props.borders.js)
| Token | Value |
|---|---|
--border-size-1 |
1px |
--border-size-2 |
2px |
--radius-1 |
2px |
--radius-2 |
5px |
--radius-3 |
1rem |
--radius-round |
1e5px |
Shadows (props.shadows.js)
| Token | Description |
|---|---|
--shadow-1 |
Subtle: 0 1px 2px -1px |
--shadow-2 |
Medium: 3px + 7px layers |
--shadow-3 |
Raised: composite multi-layer |
--shadow-4 |
Modal: 5-layer deep shadow |
Colors (19 scales × 13 shades each)
All verified: --gray-0 through --gray-15, --red-0 through --red-12, --blue-0 through --blue-12, --green-0 through --green-12, --yellow-0 through --yellow-12, plus stone, pink, purple, violet, indigo, cyan, teal, lime, orange, choco, brown, sand, camo, jungle.
Critical Findings for the README → DESIGN.md Mapping Table
| README Claim | Actual Open Props Status | Action Needed |
|---|---|---|
--surface-1 through --surface-4 |
NOT in Open Props. These are ASW custom tokens. Open Props provides --color-1 through --color-16 (palette-hue driven oklch scale) and individual gray shades. |
Use ASW-style semantic aliases or define --cd-surface-* directly |
--grid-... |
NOT in Open Props. No grid-related tokens exist. | Must be custom — use repeating-linear-gradient following trentuna.com's pattern |
--red-6 / --red-7 |
Confirmed. --red-6 and --red-7 exist in the red scale. |
Good to use as-is |
--shadow-2 / --shadow-3 |
Confirmed. Exact values verified above. | Good to use |
--font-size-fluid-1 through --font-size-fluid-3 |
Confirmed. Values verified. | Good |
--size-fluid-1 through --size-fluid-3 |
Confirmed. Values verified. | Good |
--font-sans |
var(--font-system-ui) = system-ui, sans-serif |
Consider --font-neo-grotesque for better label aesthetics |
--font-serif |
ui-serif, serif |
Good for leaflet body |
New/Notable Open Props Tokens Since README Was Written
- Easings:
--ease-elastic-*,--ease-spring-1..5,--ease-bounce-1..5, Robert Penner equations (--ease-circ-*,--ease-cubic-*) - Animations (21):
--animation-fade-in/out,--animation-slide-*,--animation-shake-*,--animation-spin,--animation-ping,--animation-blink,--animation-float,--animation-bounce,--animation-pulse - Aspect ratios:
--ratio-square,--ratio-landscape,--ratio-golden,--ratio-widescreen - Font line heights:
--font-lineheight-00(.95) through--font-lineheight-5(2) - Letter spacing:
--font-letterspacing-0(-.05em) through--font-letterspacing-7(1em) - Design Tokens export: JSON, Figma, Style Dictionary formats available via unpkg
Q2: CD Jewel Case Physical Dimensions
Standard Dimensions (ISO 15727)
| Component | Metric | Imperial | Notes |
|---|---|---|---|
| Jewel case (external) | 142 × 125 × 10 mm | 5.59" × 4.92" × 0.39" | ±0.5mm tolerance |
| Front insert (visible) | 120 × 120 mm | 4.724" × 4.724" | With 3mm bleed: 126 × 126 mm canvas |
| Back insert (tray paper) | 151 × 118 mm | 5.94" × 4.65" | Includes folded spines on both sides (~15mm each) |
| CD disc | Ø 120 mm | Ø 4.724" | Standard CD diameter |
| CD center hole | Ø 15 mm | Ø 0.59" | Spindle hole |
| CD disc thickness | 1.2 mm | 0.047" | |
| Spine width (single) | ~7 mm | ~0.28" | For a single CD jewel case |
| Jewel case open width | 284 mm | 11.18" | Two facing panels + spine gap |
Web Scaling Analysis
The README uses 2× scale (142mm → 280px, 125mm → 245px). At 96 DPI standard web resolution:
- 1mm ≈ 3.78px
- So 142mm × 3.78 ≈ 537px would be exact 1:1 scale
- 2× of 142mm = 284px, which is a 0.53× scale at 96 DPI
- The rationale: 280×245px is a compact, usable web component size that preserves the aspect ratio
Recommendation: The 2× multiplier is fine for the default scale, but implement --cd-scale as a multiplier variable (default: 1 for 2× web scale). This lets users adjust without recalculating every dimension.
Formula:
--cd-scale: 1; /* 1 = 2× of physical mm → px */
--cd-jewel-width: calc(142px * var(--cd-scale));
--cd-jewel-height: calc(125px * var(--cd-scale));
--cd-disc-diameter: calc(120px * var(--cd-scale));
--cd-leaflet-size: calc(120px * var(--cd-scale));
--cd-spine-width: calc(7px * var(--cd-scale));
Region Variations
| Standard | Body | Notes |
|---|---|---|
| ISO 15727:1998 | Global | Original jewel case standard |
| IEC 60908 | Global | CD-DA (Red Book) physical spec |
| Regional | None significant | Jewel case dimensions are globally standardized — CDs fit worldwide |
No significant regional variations. The 142×125×10mm form factor is universal.
Tray Paper & Leaflet Physical Layout
The back tray paper (151×118mm) folds into three panels:
- Left spine: ~7mm (visible from front/back)
- Center: 120×118mm (back insert surface)
- Right spine: ~7mm + 7mm fold at edge
The leaflet/booklet is usually:
- Single sheet: 240×120mm folded in half → two 120×120mm pages
- Multi-page: 480×120mm folded into 4 panels of 120×120mm each
- Stapled booklet: 120×120mm pages bound at center fold
Q3: ASW Design Patterns (~/releases/asw/)
Architecture Overview
ASW (Agentic Semantic Web) is a zero-class CSS framework built on Open Props. Source verified at ~/releases/asw/src/.
Layer order (11 layers):
| # | File | Purpose |
|---|---|---|
| 00 | 00-reset.css |
Box-sizing, margin reset |
| 01 | 01-tokens.css |
Semantic aliases on Open Props (~300 tokens) |
| 02 | 02-typography.css |
Heading, body, code, table, link styles |
| 03 | 03-landmarks.css |
body > nav, article, section, footer, hgroup, dt/dd |
| 04 | 04-forms.css |
Input, button, select, textarea, validation states |
| 05 | 05-components.css |
Tables, progress, meter, accordion, dialog |
| 06 | 06-navigation.css |
Sub-navigation, sidebar, pagination |
| 07 | 07-data-attrs.css |
Agentic data-* extensions (~15 attributes) |
| 08 | 08-utilities.css |
Container, grid helpers |
| 09 | 09-charts.css |
Chart CSS (Charts.css integration) |
| 10 | 10-chroma.css |
Hugo syntax highlighting theme |
| 11 | 11-layout.css |
Responsive grid layout system |
| 12 | 12-landing.css |
Landing page specific |
Key Semantic HTML Patterns
Navigation:
<body>
<nav>
<strong>Brand</strong>
<ul>
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
Articles with container queries:
<article>
<header>
<h3>Title</h3>
</header>
<p>Content adapts to parent width via container queries.</p>
</article>
Data-Attribute Vocabulary (for OpenCD consideration)
| Attribute | Purpose |
|---|---|
data-role |
Command-box, timeline, status-card, diff, log-entry |
data-wikilink |
Wiki-style internal links [[Note Name]] |
data-task |
Task list states: todo / done / blocked |
data-status |
Status indicators: awake / sleeping / blocked |
data-callout |
Callout boxes: note / warning / error / tip |
data-session |
Session metadata display |
data-tag |
Tag display with # prefix |
data-tooltip |
CSS-only tooltips (no JS) |
data-subnav |
Sub-navigation with / separators |
data-diff |
Diff viewer with +/- lines |
data-redacted |
Privacy redaction (bar / reveal / label variants) |
data-theme |
Light/dark theme toggle |
data-nav-links |
Nav link container for Flexbox push-right |
data-nav-toggle |
Mobile hamburger toggle |
Token System (ASW → Open Props Mapping)
ASW's token layer (01-tokens.css) uses Open Props as a foundation and adds:
- Surface tokens:
--surface,--surface-1,--surface-2,--surface-3,--surface-card,--surface-hover— alloklch()with--palette-huetinting - Text tokens:
--text,--text-2,--text-3,--text-dim - Accent tokens:
--accent,--accent-hover,--on-accent,--accent-subtle - Fixed-hue accents:
--accent-blue(250°),--accent-red(25°),--accent-orange(80°) - State colors:
--ok(green 145°),--warn(amber 80°),--error(red 25°),--info(blue 250°) - Gap fills:
--space-3(0.75rem),--space-5a(1.25rem) — values missing from Open Props - Text scale gap:
--text-sm(0.875rem) — missing from Open Props (--font-size-0is 0.75rem,--font-size-1is 1rem) - Radius gap:
--radius-md(4px) — between OP--radius-1(2px) and--radius-2(5px) - Layout widths:
--width-sm(510px) through--width-2xl(1450px) - Content widths:
--width-prose(65ch),--width-report(72ch) - Fonts:
--font-heading=var(--font-neo-grotesque),--font-ui=var(--font-neo-grotesque)
Key insight for OpenCD: The ASW approach of using Open Props for the backbone + semantic aliases for the project-specific tokens is exactly the right pattern. OpenCD should define --cd-* tokens as semantic aliases on top of Open Props, with fallback values.
Q4: CD Packaging Design References
Parental Advisory Label (Source for Human Advisory Badge)
Verified from: Wikimedia Commons SVG + Wikipedia
| Specification | Value |
|---|---|
| Aspect ratio | 523×327px ≈ 1.6:1 |
| Typography | Impact / Arial Black (heavy sans-serif, tightly tracked) |
| Layout | 3 rows: "PARENTAL ADVISORY" / "EXPLICIT CONTENT" (on black), white text, all-caps |
| Designer | Deborah Norcross (Warner Bros) — 1990 |
| Current text | "PARENTAL ADVISORY: EXPLICIT CONTENT" (since 1996) |
| Construction | Two black bars (top 40%, bottom 40%), white text centered |
Human Advisory Badge (Local Implementation)
Files at: ~/releases/human-advisory/ and ~/releases/parental-advisory/
The existing .human-advisory implementation uses:
- Container:
300px × var(--ha-size)wide,border: 3px solid #000,background: #000 - Font:
Impact, 'Arial Black', 'Helvetica Neue', sans-serif - Three rows: "HUMAN" (white on black), "ADVISORY" (black on white), "EXPLICIT AI CODE" (white on black)
- Scalable via
--ha-sizeCSS custom property
For OpenCD's .human-advisory module: The DESIGN.md already specifies --cd-advisory-red from --red-6, which is the correct approach. Consider supporting both:
- Classic PA-style: black/white bars
- OpenCD variant: red/black with white text
Visible Grid Aesthetic — Key References
1. trentuna.com paper-card grid:
.paper-card {
background-image: repeating-linear-gradient(
0deg,
transparent 0 31px,
oklch(40% .02 55/.025) 31px 32px
), var(--grain);
}
Uses 31px spacing between horizontal lines, 1px rule. Very subtle.
2. CD tray paper (physical):
- Typical grid: fine dots or thin parallel lines at ~1mm spacing (≈4px at web scale with grid repeat)
- Texture: matte-finish paper, slight grain
- Color: silver/gray or clear translucent
3. Recommended grid for OpenCD:
/* Default: fine horizontal lines (tray paper aesthetic) */
--cd-grid-color: var(--gray-3);
--cd-grid-size: 8px; /* line interval */
background-image: repeating-linear-gradient(
0deg,
transparent 0 calc(var(--cd-grid-size) * 1 - 1px),
var(--cd-grid-color) calc(var(--cd-grid-size) * 1 - 1px) var(--cd-grid-size)
);
5 Distinctive CD Packaging Examples (for Visual Direction)
- Aphex Twin — Selected Ambient Works 85-92 (R&S): Minimal jewel case, black on white, solid sans-serif typography. The CD itself has a subtle reflective design.
- Boards of Canada — Music Has The Right To Children (Warp/Wax): Dark jewel case with visible disc through transparent front, minimal tracklist layout on back.
- Radiohead — Kid A (Parlophone): Special edition with clear plastic case, hidden booklet art, minimalist typography.
- Depeche Mode — Violator (Mute): Iconic red rose on black. Simple, bold, high contrast.
- The Postal Service — Give Up (Sub Pop): Transparent jewel case, dual-layer art (front insert + back tray paper visible through clear case).
Q5: trentuna.com Design Aesthetic
Url: https://trentuna.com — Live catalog page
Stylesheet verified: Custom Tailwind CSS v4 build, warm vintage aesthetic
Typefaces
| Role | Font | Stack |
|---|---|---|
| Display / Headings | Fraunces | "Fraunces", "EB Garamond", Georgia, serif |
| Body | EB Garamond | "EB Garamond", "Iowan Old Style", Georgia, serif |
| Monospace | JetBrains Mono | "JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace |
Color Palette (Oklch)
| Token | Value | Purpose |
|---|---|---|
--paper |
oklch(95.5% .018 85) | Warm cream background |
--paper-deep |
oklch(92% .025 80) | Slightly darker paper |
--ink |
oklch(18% .015 50) | Dark warm text |
--ink-soft |
oklch(36% .018 55) | Secondary text |
--ink-faint |
oklch(55% .02 60) | Subtle text |
--rule |
oklch(32% .02 55) | Border/rule color |
--accent |
oklch(55% .18 32) | Warm red accent |
--stamp |
oklch(45% .16 28) | Darker stamp color |
Grid Approach
trentuna.com uses a visible paper-lined grid — the structure IS the decoration:
repeating-linear-gradient(0deg, transparent 0 31px, rule-color 31px 32px)for horizontal notebook linesradial-gradientgrain texture (8 layers, varying dot sizes from 7px to 31px)radial-gradientvignette effect
This directly inspires OpenCD's CD tray paper grid.
Content Structure (from live page)
trentuna / catalog
TNT-000 · MMXXV
"IMPRINT FOR OPEN AI SYSTEMS"
"We release software, notes, traces, and unfinished but useful machinery."
[Human Advisory — Explicit AI Code badge]
Key Lessons for OpenCD
- Warm paper tones work for backgrounds — consider
--cd-tray-bgwith slight warm tint - Serif body + sans navigation is a readable combination
- Visible grid-as-decoration creates tactile feel with minimal CSS
- Monospace for metadata (catalog numbers, labels, timestamps)
- Bold accent color for interactive elements (the red accent against warm paper)
- Grain texture adds depth without images
Cross-Reference: DIRECT.md Mapping Corrections
What's Right
- Most Open Props token mappings are correct
- CD physical dimensions are accurate (ISO 15727)
- The 2× scale is a reasonable default
What Needs Corrections
-
--surface-1through--surface-4are NOT Open Props out-of-the-box. They need to be defined as custom variables. The DESIGN.md already does this correctly (--cd-tray-bg: var(--surface-1)) but assumes--surface-1exists from Open Props. Define them explicitly in_variables.css. -
--grid-*tokens don't exist in Open Props. The--grid-1/--grid-2references in DESIGN.md need to be custom--cd-grid-color/--cd-grid-color-altdefinitions using gray-3/gray-2 shades from Open Props. -
ASW's
--space-3(0.75rem) and--text-sm(0.875rem) fill gaps in Open Props that OpenCD should also define if needed. -
Font selection: The DESIGN.md uses
var(--font-sans)for CD spine labels. Considervar(--font-neo-grotesque)which has a cleaner, more label-appropriate appearance (Inter/Roboto).
Intelligence Summary
| Area | Confidence | Risk | Notes |
|---|---|---|---|
| Open Props tokens | ✅ Verified | Low | All source-confirmed |
| CD dimensions | ✅ Verified (ISO) | Low | Global standard, no region variance |
| ASW patterns | ✅ Local source | Low | Full source access at ~/releases/asw/ |
| Human Advisory | ✅ Local source | Low | Working implementation exists |
| trentuna.com | ✅ Live site + stylesheet | Low | Tailwind v4 custom build, warm paper aesthetic |
| Surface/Grid tokens | ⚠️ Correction needed | Medium | DESIGN.md assumes OP has surface/grid tokens |
| CD scale factor | ⚠️ Recommendation | Low | Implement --cd-scale; keep 2× as default=1 |
Bottom line: Green light for implementation. Surface and grid tokens need custom definitions (noted above), everything else maps correctly. The ASW token pattern (oklch with palette-hue) is a proven approach that OpenCD should adopt for its CD tray paper colors.
"I've never left a room without what I came for. Sometimes I leave with more."
— Lieutenant Templeton Peck