Spaces:
Running
name: CitationEdge
description: Parallel multi-agent research analysis with graph intelligence.
colors:
obsidian: '#000000'
graphite: '#050505'
basalt: '#0a0a0a'
quartz-white: '#FFFFFF'
ghost-silver: rgba(255, 255, 255, 0.5)
moon-grey: rgba(255, 255, 255, 0.3)
glass-white: rgba(255, 255, 255, 0.02)
border-faint: rgba(255, 255, 255, 0.06)
ice-blue: '#4DFFEF'
verify-green: '#10B981'
alert-red: '#EF4444'
typography:
display:
fontFamily: Instrument Serif, Georgia, serif
fontSize: clamp(2.5rem, 6vw, 4.5rem)
fontWeight: 400
lineHeight: 1
letterSpacing: '-0.04em'
headline:
fontFamily: Satoshi, Inter, system-ui, sans-serif
fontSize: clamp(1.5rem, 3vw, 2.5rem)
fontWeight: 600
letterSpacing: '-0.03em'
title:
fontFamily: Satoshi, Inter, system-ui, sans-serif
fontWeight: 600
letterSpacing: '-0.02em'
body:
fontFamily: Satoshi, Inter, system-ui, sans-serif
fontSize: 1rem
fontWeight: 400
lineHeight: 1.6
label:
fontFamily: DM Mono, JetBrains Mono, monospace
fontSize: 0.7rem
fontWeight: 500
letterSpacing: 0.08em
textTransform: uppercase
rounded:
sm: 6px
md: 10px
lg: 14px
xl: 20px
pill: 99px
spacing:
xs: 8px
sm: 12px
md: 16px
lg: 24px
xl: 32px
components:
button-primary:
backgroundColor: '{colors.quartz-white}'
textColor: '{colors.obsidian}'
rounded: '{rounded.md}'
padding: 10px 24px
button-primary-hover:
backgroundColor: '{colors.quartz-white}'
textColor: '{colors.obsidian}'
rounded: '{rounded.md}'
padding: 10px 24px
button-secondary:
backgroundColor: rgba(255, 255, 255, 0.05)
textColor: '{colors.quartz-white}'
rounded: '{rounded.md}'
padding: 10px 24px
glass-card:
backgroundColor: '{colors.glass-white}'
textColor: '{colors.quartz-white}'
rounded: '{rounded.lg}'
glass-card-hover:
backgroundColor: rgba(255, 255, 255, 0.04)
textColor: '{colors.quartz-white}'
rounded: '{rounded.lg}'
Design System: CitationEdge
Overview
Creative North Star: "The Obsidian Observatory"
CitationEdge is a night observatory: absolute black surfaces, instruments of quiet precision, and one live signal glowing in the dark. The interface is built like a control room for the scientific literature β deep field backgrounds, glass panels that float over the darkness, and serif headlines that read like engraved instrument plates. The atmosphere is vast and contemplative: the user is not clicking through a dashboard, they are looking through a telescope at the citation landscape of their field.
The system is deliberately nearly monochrome. Almost everything is a shade of obsidian with white as the operative contrast; the single exception is the icy electric-blue signal accent (#4DFFEF), reserved for the moments the product is alive: the brand mark, the brand tag, and live indicators. Restraint is the identity β this is what separates it from the saturated-gradient pattern of typical AI-era SaaS.
Depth is conveyed through glass, not shadows: translucent panels, a film grain overlay across the whole app, and blurred backdrop surfaces that let the black breathe through. Components behave like engineered instruments β crisp, minimal, exact.
Key Characteristics:
- Pure-obsidian background field (
#000000) with a fixed film-grain overlay at 3% opacity. - Glass panels (
rgba(255,255,255,0.02)+ 14px radius + blur) instead of shadowed cards. - One signal accent: icy electric blue, used rarely and deliberately.
- Serif display voice (Instrument Serif) over a Satoshi sans body; DM Mono for all identifiers.
- Mono uppercase labels, 8β32px spacing rhythm, 1200px container.
Colors
A cold mineral palette on absolute black: carbon blacks, one bright white, one signal cyan, and two status colors. The white/cyan pair is the entire expressive range; everything else is neutral scaffolding.
Primary
- Obsidian (
#000000): the background field. The app's base, the navbar's base, the glass behind the glass. All surfaces rest on it. - Quartz White (
#FFFFFF): primary text, the primary button fill, headings. The operative contrast of the system; nothing is darker than the field.
Secondary
- Ice Blue (
#4DFFEF): the signal accent. Used on the brand icon, the brand tag, and live/active signals. Never used as a fill or gradient; it is a point-light, not a surface.
Neutral
- Graphite (
#050505): secondary surface, one step off pure black. - Basalt (
#0a0a0a): tertiary surface, dropdown menus, deeper panels. - Ghost Silver (
rgba(255,255,255,0.5)): secondary text, paragraphs. - Moon Grey (
rgba(255,255,255,0.3)): muted text, timestamps, breadcrumbs. - Glass White (
rgba(255,255,255,0.02)): resting card/panel fill. - Border Faint (
rgba(255,255,255,0.06)): the standard 1px hairline; brightens torgba(255,255,255,0.12)on hover/active.
Status
- Verify Green (
#10B981): success, job completion, health OK. Glows softly viabox-shadowon the indicator dot. - Alert Red (
#EF4444): errors, failures, logout. Never used decoratively.
Named Rules
The Signal Rule. Ice Blue appears on β€5% of any screen, and only on the brand mark, the brand tag, and live signals. Its rarity is the point; the moment it becomes a fill or gradient, the system reads as generic SaaS.
Typography
Display Font: Instrument Serif (with Georgia, serif) Body Font: Satoshi (with Inter, system-ui) Label/Mono Font: DM Mono (with JetBrains Mono)
Character: An engraved-instrument pairing β a delicate serif for the headlines that feels like letterpress on obsidian, a quietly confident grotesque for the body, and a technical monospace for everything machine-derived. The serif is the observatory's voice; the mono is its readout.
Hierarchy
- Display (400,
clamp(2.5rem, 6vw, 4.5rem), 1.0,-0.04em): page-defining headlines β hero, page titles. Serif, weight 400, tight tracking. - Headline (600,
clamp(1.5rem, 3vw, 2.5rem),-0.03em): section headers. - Title (600,
-0.02em): cards, panel headers, sub-sections. - Body (400,
1rem, 1.6): paragraphs and default text, Ghost Silver by default. - Label (500,
0.7rem,0.08em, uppercase): form labels, field captions, metadata β always DM Mono, always uppercase. - Identifier (400,
0.7β0.85rem, mono): job IDs, breadcrumb IDs, timestamps, status readouts β DM Mono at a smaller size, Moon Grey.
Named Rules
The One Display Serif Rule. Instrument Serif is the single display voice. The incumbent Playfair Display (navbar wordmark) and Fraunces (graph page) are consolidation targets: new work must use Instrument Serif, and drift should be migrated as surfaces are touched.
Layout
A single centered column on a 1200px container with 24px gutters; .page sections start at 100px top padding to clear the fixed 64px navbar. The spacing rhythm is 8 / 12 / 16 / 24 / 32px, driven by gap and margin β never by padding hacks. The navbar is fixed, full-width, translucent, and centers its links absolutely; on screens below 768px the nav links and health indicator hide, and the right-side controls remain. Cards and panels sit within the column; the landing surface breaks out of the container for full-bleed hero moments.
Elevation & Depth
The system is flat-by-default with glass depth: there are no elevation shadows on resting surfaces. Depth comes from three layers of translucency β the black field, the film grain at 3% opacity over everything, and glass panels (10px blur) that let the field shimmer through. Shadows exist only for floating, transient surfaces: toasts and dropdowns use a single deep drop shadow (0 10px 30px rgba(0,0,0,0.5)).
Named Rules
The Glass-Not-Shadow Rule. Panels are translucent, not elevated. If a surface needs to separate from the field, blur it and brighten its hairline β do not cast a shadow. Shadows are reserved for floating transient chrome (toasts, menus).
Shapes
A soft-instrument radius language: 6px for fine details (nav links, brand tag), 10px for controls (buttons, inputs), 14px for glass panels, 20px for large surfaces. Pills (99px) are reserved for identity and status elements β the health indicator, avatar button β never for content surfaces. The scrollbar is a 4px monochrome hairline. All radii are uniform per element class; no hybrid corners.
Components
Buttons
- Shape: gently curved (10px radius), 10px 24px padding, 600 weight.
- Primary: Quartz White fill, black text β the single high-contrast action. Hover: opacity 0.9 with a 1px lift (
translateY(-1px)); transition0.3s cubic-bezier(0.16, 1, 0.3, 1). - Secondary: glass fill (
rgba(255,255,255,0.05)) with a faint hairline; hover brightens fill to 0.1 and border to 0.12. - Submission buttons (full-width forms): white fill, 14px padding, 700 weight, with a sheen sweep animation on the top edge.
Chips / Indicators
- Health indicator: pill (99px), 0.75rem, Ghost-Silver text, glass fill with faint border. State variants:
.ok(Verify Green text + border, glowing dot),.error(Alert Red). - Brand tag: 3px radius, 0.55rem uppercase, Ice Blue text on transparent with an Ice Blue hairline; positioned as a superscript.
Cards / Containers
- Corner Style: gently curved (14px radius).
- Background: Glass White (
rgba(255,255,255,0.02)) with a 1px Border Faint hairline and 10px backdrop blur. - Shadow Strategy: none β see Elevation & Depth.
- Internal Padding: 24px standard.
- Hover: fill brightens to 0.04, hairline to 0.12.
Inputs / Fields
- Style: 1px hairline, 10px radius, 13px 16px padding, 14px text,
#0F0F12fill (one step off the field). - Labels: DM Mono, 0.7rem, uppercase, 0.08em tracking, 6px above the field.
- Focus: no outline β the hairline shifts to Ice Blue and a 3px Ice Blue glow (
0 0 0 3px rgba(77,255,239,0.12)) blooms around the field. - Placeholder: Moon Grey at 50% (15% white).
- Error / Disabled: Alert Red hairline for errors; disabled dims to 30% white text.
Navigation
- Structure: fixed 64px bar,
rgba(0,0,0,0.4)fill with 12px backdrop blur, 1px faint bottom hairline, 24px side padding. - Wordmark: serif brand name (Playfair Display, 1.45rem, 600) next to a light sans companion (Inter, 1.25rem, 400) and the Ice Blue brand tag. Consolidation target per The One Display Serif Rule.
- Links: centered, 0.85rem, Ghost Silver at rest; hover brightens to white on a 5% glass fill; active is white on 10% glass.
- Avatar: pill button with hairline; dropdown panel is Basalt with 12px radius and the floating-shadow treatment.
Signature Component: the Global Grain
A fixed, full-viewport film-grain overlay (feTurbulence noise at 3% opacity, pointer-events none, z-index above everything) sits over the entire app. It is the material signature of the observatory: without it, the black is flat video; with it, the black is film.
Do's and Don'ts
Do:
- Do keep the grain. The global-grain overlay is the material signature β new surfaces must not strip it.
- Do use DM Mono uppercase labels for every form label, field caption, and job identifier.
- Do use Instrument Serif for display headlines; migrate Playfair/Fraunces drift when touching those surfaces.
- Do use 10px radius for controls, 14px for glass panels, pills only for status/identity elements.
- Do keep the spacing rhythm on the 8/12/16/24/32 scale.
- Do render depth with blur and hairlines, not shadows β except floating chrome (toasts, dropdowns).
Don't:
- Don't use a second blue.
#4D9EFFin Auth.css focus rings is drift: focus treatment should use the Ice Blue signal. Audit test: grep for#4D9EFFβ it must not exist. - Don't color the Ice Blue as a gradient, a button fill, or a card background. It is a point-light.
- Don't use gray text on glass/colored surfaces β Ghost Silver and Moon Grey belong on the black field only.
- Don't introduce pure-white flat panels: surfaces are translucent glass, never opaque cards.
- Don't invent
--accent-2-style orphan tokens β DocsPage.css references one that is undefined; every color must resolve to the token file. - Don't use Arial, default system serif, or saturated purple/blue gradients anywhere.
- Don't wrap cards in cards; the glass panel is the deepest nesting level.