Using this with Claude: Download design-system-guide.md and add it as Project Knowledge in your own Claude Project. Claude will automatically apply the correct tokens and components. Your HTML pages should include <link rel="stylesheet" href="design-system.css">.
1. Design Tokens — Colors
All colors are CSS custom properties defined in :root. Use the variable names, never raw hex values.
accessibility_new Accessibility
This color system is designed to meet WCAG 2.2 Level AA contrast requirements. Every foreground/background pairing has been audited to ensure a minimum 4.5:1 contrast ratio for normal text and 3:1 for large text and UI components. Use --gray-500 or darker for any text that conveys information; --gray-400 is reserved for placeholder text and decorative elements only.
Inline colored dot + descriptive text. Used in Gateway table STATUS columns as an alternative to the pill-style status badges. Class: .status-dot + state modifier.
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Status Dot Variants
Make Decision — 9 days overdueAwaiting Referee Reports — due in 3 daysReview CompleteSubmitted — under reviewDraft — not yet submitted
In a Table Context
Manuscript
Status
Days
EJP-109449 A third resonance in the damped oscillator
Make Decision — 9 days overdue
12 days
NJP-119321 Performance of Parity QAOA
Invite Referees — due in 5 days
25 days
QST-104090 Monitoring photonic linear clusters
Review Complete
8 days
Comparison: Dot vs Badge
Status dots (.status-dot) are used in Gateway table rows where space is tight and the status text itself is descriptive. Status badges (.status-badge) are the pill-style indicators used in prototypes and contexts where a compact label is needed. Both use the same semantic color tokens.
<span class="status-dot overdue">Make Decision — 9 days overdue</span>
<span class="status-dot warning">Awaiting Reports — due in 3 days</span>
<span class="status-dot on-track">Review Complete</span>
<span class="status-dot in-progress">Submitted — under review</span>
<span class="status-dot neutral">Draft — not yet submitted</span>
5. Health Status Badges
Pill badges for journal health indicators on the analytics dashboard. Used inline with section titles. Classes: .gw-health-badge + .critical / .warning / .good
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Badge Variants
CriticalWarningGood
Health Cards (In Context)
Submission Volume
Critical
Comparing submission counts between quarters
Editorial Quality
Good
Acceptance rate stability indicates healthy editorial process
Process Efficiency
Good
Time to decision trends affect author satisfaction
Horizontal tabs with underline indicator, icons, and count badges. Matches the live Gateway Editor Center and Dashboard tabs. Classes: .gw-tab-bar, .gw-tab, .gw-tab-count
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
480px wide panel that slides from the right. Used for reviewer details, manuscript previews, and decision forms.
MJ
Dr. Michael Johnson
Professor of Oncology
Stanford University
Match Score
92%
Excellent match based on expertise, publication history, and availability
Performance
14d
Avg. Turnaround
85%
Accept Rate
3
Current Load
Keywords
ImmunotherapyMelanomaPD-L1
14. Modal / Dialog
Centered overlay dialog for confirmations, forms, and detail views. Includes backdrop, header with close button, scrollable body, and action footer. Classes: .gw-modal-backdrop, .gw-modal, .gw-modal-header
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Confirmation Dialog
Confirm Decision
You are about to accept manuscript EJP-109449. This will notify the author and move the manuscript to production. This action cannot be undone.
Fixed bottom-center. Dark background with success icon.
check
Invitation Sent
Dr. Michael Johnson has been invited to review
16. View Toggle
Switch between table and grid/card views. Used in invite-reviewers and all-manuscripts.
17. Pagination
Navigate between pages of results. The prototype uses numbered page buttons; the live Gateway app uses a summary + per-page dropdown + page navigation pattern. Both are valid; use whichever matches your context.
White background, 220px wide, text + icon labels, blue active state with left border. Matches the live Gateway app layout. Classes: .gw-sidebar, .gw-nav-item, .gw-beta-badge
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Full-width gradient banner with icon, title, document count, and subtitle. Used at the top of each Gateway center page. Classes: .gw-hero, .gw-hero-icon, .gw-hero-title
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Default Hero
edit_note
Editor Center (70 documents)
Manage manuscripts in your queue
Author Center Variant
description
Author Center (12 documents)
Track your submitted manuscripts
<div class="gw-hero">
<div class="gw-hero-icon">
<span class="material-symbols-outlined">edit_note</span>
</div>
<div class="gw-hero-content">
<h2 class="gw-hero-title">
Editor Center <span class="count">(70 documents)</span>
</h2>
<p class="gw-hero-subtitle">Manage manuscripts in your queue</p>
</div>
</div>
21. KPI Stat Cards
Metric cards for the Analytics dashboard. Each shows a label, large value, trend arrow with delta, comparison text, and a colored progress bar. Classes: .gw-kpi-grid, .gw-kpi-card, .gw-kpi-trend
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Placeholder for tables or pages with no data. Centered layout with icon, title, description, and optional action button. Class: .gw-empty-state
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.
Table Empty State
inbox
No manuscripts found
There are no manuscripts matching your current filters. Try adjusting your search criteria or removing some filters.
Search Empty State
search_off
No results for "quantum entanglement"
We couldn't find any manuscripts matching your search. Check for typos or try a broader search term.
<div class="gw-empty-state">
<div class="gw-empty-state-icon">
<span class="material-symbols-outlined">inbox</span>
</div>
<h3>No manuscripts found</h3>
<p>There are no manuscripts matching your filters.</p>
<button class="btn btn-ghost">Clear Filters</button>
</div>
23. Loading States
Skeleton shimmer placeholders and spinner for content loading. Apply .gw-skeleton to any element for the shimmer effect. Classes: .gw-skeleton-text, .gw-skeleton-heading, .gw-spinner
Gateway live app — This pattern matches the live production app. In Gateway, it's implemented with DaisyUI + Tailwind CSS + Alpine.js.