// Three Meridian brand foundation directions
// Each: wordmark, monogram, colors (light+dark), type, semantic, patterns, specimen
const DIRECTIONS = {
A: {
name: 'A · Clinical White',
subtitle: 'NEJM/JAMA modernized — authoritative, medical',
paper: '#fbfaf7',
paperDim: '#f3efe8',
ink: '#14120f',
text: '#2a2723',
muted: '#6b655c',
rule: '#e2ddd2',
accent: '#8a1f2b', // oxblood
accentDim: 'rgba(138,31,43,0.08)',
serif: '"Source Serif 4", "Source Serif Pro", Georgia, serif',
sans: '"Inter", -apple-system, system-ui, sans-serif',
mono: '"JetBrains Mono", ui-monospace, monospace',
semantic: { success: '#3f7a4f', warning: '#b27100', error: '#a33030', info: '#2a5b8f' },
darkBg: '#141210',
darkSurface: '#1c1a17',
darkRule: '#2a2623',
darkText: '#ebe6dd',
darkMuted: '#8a8378',
},
B: {
name: 'B · Instrument',
subtitle: 'Lancet meets scientific catalog — precise, cartographic',
paper: '#f4f1e8',
paperDim: '#ebe7dc',
ink: '#0e1522',
text: '#1e2738',
muted: '#5c6577',
rule: '#d4cfc1',
accent: '#1f3a68', // ink navy
accentDim: 'rgba(31,58,104,0.08)',
serif: '"Spectral", "Source Serif 4", Georgia, serif',
sans: '"IBM Plex Sans", "Inter", system-ui, sans-serif',
mono: '"IBM Plex Mono", "JetBrains Mono", monospace',
semantic: { success: '#2f6a4d', warning: '#96640a', error: '#8e2a2a', info: '#1f3a68' },
darkBg: '#0e1522',
darkSurface: '#161e2d',
darkRule: '#24304a',
darkText: '#e5e0d0',
darkMuted: '#8995ac',
},
C: {
name: 'C · Editorial',
subtitle: 'eLife × Works in Progress — warm, long-form, readable',
paper: '#f7f3ea',
paperDim: '#ede7d8',
ink: '#1b1f1a',
text: '#2d322c',
muted: '#6a6d63',
rule: '#dcd5c2',
accent: '#2e4a33', // forest
accentDim: 'rgba(46,74,51,0.08)',
serif: '"Newsreader", "Source Serif 4", Georgia, serif',
sans: '"Inter", -apple-system, system-ui, sans-serif',
mono: '"JetBrains Mono", ui-monospace, monospace',
semantic: { success: '#2e4a33', warning: '#a66a00', error: '#8c3020', info: '#385a7a' },
darkBg: '#141612',
darkSurface: '#1d201a',
darkRule: '#2c2f26',
darkText: '#ece6d7',
darkMuted: '#8a8b7c',
},
};
// ───────────────────────────── Wordmark ─────────────────────────────
function Wordmark({ d, size = 56, inverse = false }) {
const ink = inverse ? d.darkText : d.ink;
const accent = d.accent;
return (
Meridian
);
}
function WordmarkWithMark({ d, size = 56, inverse = false, variant = 'arc' }) {
const ink = inverse ? d.darkText : d.ink;
const stroke = inverse ? d.darkText : d.ink;
const m = size * 1.05;
return (
{variant === 'arc' && (
)}
{variant === 'tick' && (
)}
{variant === 'leaf' && (
)}
Meridian
);
}
// ───────────────────────────── Monogram ─────────────────────────────
function Monogram({ d, size = 64, inverse = false, variant = 'arc' }) {
const bg = inverse ? d.darkSurface : d.paper;
const ink = inverse ? d.darkText : d.ink;
return (
{variant === 'arc' && (<>
>)}
{variant === 'tick' && (<>
>)}
{variant === 'leaf' && (<>
>)}
);
}
// ───────────────────────────── Pattern ─────────────────────────────
function Pattern({ d, kind, inverse = false }) {
const bg = inverse ? d.darkBg : d.paperDim;
const stroke = inverse ? d.darkMuted : d.muted;
const style = { width: '100%', height: 120, background: bg, overflow: 'hidden', position: 'relative' };
if (kind === 'rules') {
return (
{Array.from({ length: 12 }).map((_, i) => (
))}
);
}
if (kind === 'grid') {
return (
);
}
if (kind === 'ticks') {
return (
{Array.from({ length: 40 }).map((_, i) => (
))}
);
}
if (kind === 'meridian') {
return (
{Array.from({ length: 7 }).map((_, i) => (
))}
);
}
if (kind === 'columns') {
return (
{Array.from({ length: 12 }).map((_, i) => (
))}
);
}
if (kind === 'data') {
// small histogram-like data lines
const bars = [0.3, 0.5, 0.7, 0.9, 0.8, 0.55, 0.4, 0.62, 0.78, 0.5, 0.35, 0.22, 0.45, 0.6, 0.75, 0.65, 0.5, 0.4, 0.3, 0.48];
return (
{bars.map((b, i) => (
))}
`${(i / bars.length) * 100 + 2.5}%,${100 - b * 80}`).join(' ')} fill="none" stroke={d.accent} strokeWidth="1.2" />
);
}
return
;
}
// ───────────────────────────── Panels ─────────────────────────────
function Panel({ title, children, d, flex = 1, minWidth = 320 }) {
return (
);
}
function Swatch({ label, hex, d, big = false, textColor }) {
return (
{label}
{hex.toUpperCase()}
);
}
// ───────────────────────────── Direction board ─────────────────────────────
function DirectionBoard({ k, d, markVariant }) {
const width = 1440;
return (
{/* Masthead */}
Meridian · Brand Foundation — Direction {k}
ISSN 0000·0000 · Vol. 01
Meridian
{d.subtitle}. An open-access journal of biomedical and healthcare research. Transparent peer review, paid reviewers, fair access.
ESTABLISHED 2026
OPEN ACCESS · CC-BY 4.0
PEER REVIEWED · SIGNED
{/* Wordmark + Monogram row */}
Works at 16px favicon scale. Single accent dot fades before the stroke at small sizes.
{/* Color system */}
{[
['Ink', d.darkBg], ['Surface', d.darkSurface], ['Rule', d.darkRule], ['Accent', d.accent],
['Text', d.darkText], ['Muted', d.darkMuted], ['Paper', d.paper], ['Ink inv', d.ink],
].map(([l, h]) => (
))}
{/* Semantic */}
{Object.entries(d.semantic).map(([k, v]) => (
{v.toUpperCase()}
{k === 'success' && 'PEER REVIEWED'}
{k === 'warning' && 'PREPRINT'}
{k === 'error' && 'RETRACTED'}
{k === 'info' && 'DATA AVAILABLE'}
))}
{/* Type */}
EDITORIAL · {d.serif.split(',')[0].replace(/"/g, '')}
Display 56
Article title 32
Section header 22
Body serif at 16 px with generous leading for long-form reading. The transitional letterforms remain legible at text sizes while holding editorial weight at display.
UI · {d.sans.split(',')[0].replace(/"/g, '')}
UI heading 28
UI label 16
Body sans for product chrome and interface copy. Used for buttons, navigation, form labels, and any non-editorial surface.
MONO · {d.mono.split(',')[0].replace(/"/g, '')}
DOI · 10.xxxx/meridian.2026.0001
VOL 01 · ISS 01 · APR 2026
RECEIVED 14 Mar · ACCEPTED 02 Apr
{/* Patterns */}
{(k === 'A' ? ['rules', 'data', 'columns'] :
k === 'B' ? ['meridian', 'ticks', 'grid'] :
['rules', 'meridian', 'columns']).map((p) => (
))}
{/* Specimen: article row */}
RESEARCH
14 Apr 2026
Vol 01 · 003
A cell-free assay for quantifying amyloid-β aggregation kinetics in pre-symptomatic Alzheimer cohorts
Sarah Chen¹ · Miguel Ortega¹ · Priya Raman² · Hannes Vogel³
We report a microfluidic cell-free assay that resolves amyloid-β aggregation within 42 minutes, enabling longitudinal monitoring in pre-symptomatic cohorts without tissue sampling…
{['PEER REVIEWED', 'OPEN DATA', 'SIGNED REVIEW'].map((t, i) => (
{t}
))}
1,284
reads
3
reviewers · signed
doi/10.xxxx/mer.0003 →
{/* Specimen: submission dashboard snippet (the rewire moment) */}
{/* topbar */}
MS-2026-003 · RCVD 14 APR
{/* pipeline */}
{[
['01', 'Intake', 'pass', '42s'],
['02', 'Desk review', 'pass', '3h'],
['03', 'Peer review', 'active', '14d'],
['04', 'Revisions', 'pending', '—'],
['05', 'Decision', 'pending', '—'],
['06', 'Published', 'pending', '—'],
].map(([n, l, s, t], i) => {
const color = s === 'pass' ? d.semantic.success : s === 'active' ? d.accent : d.muted;
return (
{n}
{l}
{s.toUpperCase()} · {t}
);
})}
{/* body split */}
MANUSCRIPT
A cell-free assay for quantifying amyloid-β aggregation kinetics in pre-symptomatic Alzheimer cohorts
Chen · Ortega · Raman · Vogel · 4 authors · 8,421 words · 6 figures
REVIEW 2 OF 3 COMPLETE ETA 03 MAY
{[
['Completeness', '10/10', d.semantic.success],
['References verified', '47/47', d.semantic.success],
['ORCID linked', '4/4', d.semantic.success],
['APC estimate', '$175', d.ink],
['Time to decision', '~21d', d.accent],
].map(([k, v, c]) => (
{k}
{v}
))}
{/* Specimen: article card + email header */}
MERIDIAN · RESEARCH
01 · 003
Amyloid-β aggregation kinetics, resolved in 42 minutes
Chen, Ortega, Raman, Vogel · 14 Apr 2026
REVIEWED
OPEN DATA
Meridian
WEEKLY DISPATCH
ISSUE 14 · APR 2026
IN THIS ISSUE
Three studies on early-stage neurodegenerative detection
Plus: new signed-review data, our April cohort of named reviewers.
);
}
Object.assign(window, { DIRECTIONS, DirectionBoard, Wordmark, Monogram, Pattern });