Design Specification — Cosmos
| Field | Value |
| Site / Project | https://www.cosmos.so |
| Analyzed on | 2026-08-25 |
| Analysis mode | Automated code extraction (no AI) |
Overview
This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#881337). All type is set in cosmosOracle. Detected font weights: 300, 350, 400, 500, 700. Detected style signatures: gradient-rich / aurora; rounded / pill-heavy; technical / mono accents.
Logo asset(s): https://www.cosmos.so/apple-icon.png?apple-icon.2e21fxh1087ib.png
Color System
Detected palette (by frequency)
| Hex | RGB | HSL | Count |
#000000 | 0, 0, 0 | 0° 0% 0% | 132 |
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 24 |
#191919 | 25, 25, 25 | 0° 0% 10% | 6 |
#F7F5F3 | 247, 245, 243 | 30° 20% 96% | 6 |
#FDE68A | 253, 230, 138 | 48° 97% 77% | 6 |
#FECDD3 | 254, 205, 211 | 353° 96% 90% | 6 |
#0D0D0D | 13, 13, 13 | 0° 0% 5% | 6 |
#78350F | 120, 53, 15 | 22° 78% 26% | 6 |
#881337 | 136, 19, 55 | 342° 75% 30% | 6 |
#E8E6E4 | 232, 230, 228 | 30° 8% 90% | 5 |
#5C5754 | 92, 87, 84 | 23° 5% 35% | 5 |
#242424 | 36, 36, 36 | 0° 0% 14% | 4 |
#1D1717 | 29, 23, 23 | 0° 12% 10% | 4 |
#F8F5F2 | 248, 245, 242 | 30° 30% 96% | 3 |
#232323 | 35, 35, 35 | 0° 0% 14% | 3 |
#F59E0B | 245, 158, 11 | 38° 92% 50% | 2 |
#E0E0E0 | 224, 224, 224 | 0° 0% 88% | 2 |
#3982F7 | 57, 130, 247 | 217° 92% 60% | 2 |
#190306 | 25, 3, 6 | 352° 79% 5% | 2 |
#383838 | 56, 56, 56 | 0° 0% 22% | 2 |
Assigned roles
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
--color-primary | #78350F | 120, 53, 15 | 22° 78% 26% |
--color-accent | #881337 | 136, 19, 55 | 342° 75% 30% |
--color-background | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-surface | #F7F5F3 | 247, 245, 243 | 30° 20% 96% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #FDE68A | 253, 230, 138 | 48° 97% 77% |
--color-border | #FECDD3 | 254, 205, 211 | 353° 96% 90% |
--color-on-primary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
Surface ramp (derived from detected light neutrals)
| Token | Hex |
--color-surface-container-lowest | #FFFFFF |
--color-surface-container-low | #F8F5F2 |
--color-surface-container | #F7F5F3 |
--color-surface-container-high | #F5F5F5 |
--color-surface-container-highest | #F5F4F2 |
Gradients
linear-gradient(in lab, red, red))
linear-gradient(#0000 18.815%,#00000038 100%)
linear-gradient(#0000 18.815%,#00000078 100%)
linear-gradient(90deg,red,#ff0,#0f0,#0ff,#00f,#f0f,red)
linear-gradient(135deg,#666 0%,#242424 100%)
linear-gradient(#0000 0%,#0000004d 100%),linear-gradient(#0000 45%,#0000004d 90%),linear-gradient(#0000 0%,#0000004d 100%),linear-gradient(#0000 45%,#0000004d 90%)
linear-gradient(#0000 0%,#0000004d 100%),linear-gradient(#0000 45%,#0000004d 90%)
linear-gradient(#00000026 0%,#00000073 100%)
linear-gradient(#00000078 0%,#0000 81.185%)
linear-gradient(#0000 0%,#0000004d 100%),linear-gradient(90deg,#414141 0% 100%)
> 10 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.
Typography
Primary typeface: cosmosOracle — stack: cosmosOracle
Font stacks (most used first)
cosmosOracle
basisMono
var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji")
var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace)
var(--font-basis-mono)
var(--font-cosmos-oracle)
basisMono Fallback
cosmosOracle Fallback
Derived type scale
| Token | Size |
| display | 74px |
| headline-lg | 38px |
| headline-md | 31px |
| body-lg | 18px |
| body-md | 16px |
| label-md | 14.8px |
| label-sm | 12px |
Font sizes (by frequency)
| Size | Count |
| 18px | 2 |
| 1em | 1 |
| .875rem | 1 |
| .925rem | 1 |
| 10px | 1 |
| 11px | 1 |
| 12px | 1 |
| 13px | 1 |
| 14px | 1 |
| 15px | 1 |
| 24px | 1 |
| 31px | 1 |
| 32px | 1 |
| 33px | 1 |
| 36px | 1 |
| 38px | 1 |
| 48px | 1 |
| 54px | 1 |
| 58px | 1 |
| 74px | 1 |
Weights in use: 300, 350, 400, 500, 700
Line heights (by frequency)
| Value | Count |
| 1.15 | 5 |
| 1 | 3 |
| 1.1 | 3 |
| 1.4 | 2 |
| 1.17 | 2 |
| 1.5 | 2 |
| 1.125rem | 2 |
| 16px | 2 |
| 1.43 | 1 |
| 1.375rem | 1 |
Letter spacing (by frequency)
| Value | Count |
| -.02em | 7 |
| -.01em | 3 |
| -.01875em | 1 |
| -.04em | 1 |
| -.05em | 1 |
| -.18px | 1 |
| -.28px | 1 |
| -.72px | 1 |
Spacing
Derived spacing scale
| Token | Value |
| xs | 2px |
| sm | 8px |
| md | 17px |
| lg | 35px |
Raw values (by frequency)
| Value | Count |
| 2px | 4 |
| 30px | 2 |
| 3px | 1 |
| 7px | 1 |
| 17px | 1 |
| 20px | 1 |
| 40px | 1 |
| 1px | 1 |
| 10px | 1 |
| 3.5px | 1 |
| 8px | 1 |
| 11px | 1 |
| 35px | 1 |
Borders & Radius
Derived radius tokens
| Token | Value |
| sm | 2px |
| lg | 40px |
| pill | 9999px |
Raw values (resolved, by frequency)
| Radius | Count |
0 | 5 |
1rem | 2 |
40px | 2 |
999px | 2 |
inherit | 2 |
3.40282e38px | 2 |
.375rem | 2 |
.25rem | 1 |
1.5rem | 1 |
2rem | 1 |
1.25rem | 1 |
2px | 1 |
Layout
Container max-width: 768px
Grid columns (largest detected grid): 12
Breakpoints
- 40rem
- 48rem
- 64rem
- 80rem
- 96rem
Animation & Motion
Easing curves
cubic-bezier(0, 0, .2, 1)
cubic-bezier(.4, 0, .2, 1)
cubic-bezier(.4, 0, .6, 1)
cubic-bezier(.4, 0, .2, 1)
cubic-bezier(.16, 1, .3, 1)
cubic-bezier(.22, 1, .36, 1)
var(--tw-ease,var(--default-transition-timing-function))
var(--ease-in-out)
Keyframes
@keyframes sequence-card-image-reveal { 0%{opacity:0;filter:blur(18px);transform:scale(1.035)}to{opacity:1;filter:blur();transform:scale(1.015)} }
@keyframes sequence-hero-strip-shape-swap { 0%{filter:blur();transform:scale(1)}50%{filter:blur(18px);transform:scale(1.055)}to{filter:blur();transform:scale(1)} }
@keyframes sequence-hero-strip-image-out { 0%,25%{opacity:1}75%,to{opacity:0} }
@keyframes sequence-hero-strip-image-in { 0%,25%{opacity:0}75%,to{opacity:1} }
@keyframes dot-wave-1 { 0%,10%{opacity:0}20%,80%{opacity:1}90%,to{opacity:0} }
@keyframes dot-wave-2 { 0%,20%{opacity:0}40%,60%{opacity:1}80%,to{opacity:0} }
@keyframes dot-wave-3 { 0%,40%{opacity:0}50%,55%{opacity:1}65%,to{opacity:0} }
@keyframes fade-in { 0%{opacity:0}to{opacity:1} }
@keyframes hover-sentinel { 0%{--hover-sentinel:0}to{--hover-sentinel:1} }
@keyframes enter { 0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:blur()} }
@keyframes scale-in { 0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)} }
@keyframes scroll-left { 0%{transform:translate(0)}to{transform:translate(-505px)} }
@keyframes snake-border { 0%{stroke-dashoffset:0}to{stroke-dashoffset:-16px} }
@keyframes see-similar-button { 0%{opacity:0;filter:blur(4px);transform:scale(.8)translateY(40px)}to{opacity:1;filter:blur();transform:scale(1)translateY(0)} }
@keyframes similar-elements-enter { 0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)} }
@keyframes canvas-enter { 0%{opacity:0;filter:blur(20px);transform:scale(.8)}to{opacity:1;filter:blur();transform:scale(1)} }
@keyframes ext-border-glow-spin { 0%{--ext-border-glow:35deg}15%{--ext-border-glow:79deg}19%{--ext-border-glow:101deg}69%{--ext-border-glow:259deg}73%{--ext-border-glow:281deg}to{--ext-border-glow:395deg} }
@keyframes ext-border-glow-fade { 0%,80%{opacity:1}to{opacity:0} }
Animations
.3s ease-out .4s both fade-in
var(--animate-canvas-enter)
var(--animate-dot-1)
var(--animate-dot-2)
var(--animate-dot-3)
var(--animate-element-view)
var(--animate-enter)
var(--animate-fade-in)
var(--animate-fade-in-quick)
none
Components
Extracted from the page's own interactive elements (classes → resolved CSS values).
button-primary — sample text: “MenuOpen”
| Property | Value |
| fontWeight | 500 |
| backgroundColor | transparent |
| transition | color, background-color, border-color 200ms cubic-bezier(0.4, 0, 0.2, 1) |
| backgroundColor (hover) | transparent |
button-secondary — sample text: “Log in”
| Property | Value |
| rounded | 9999px |
| fontWeight | 500 |
| padding | 16px 24px |
| border | 1px solid currentColor |
| transition | all 150ms cubic-bezier(0.4, 0, 0.2, 1) |
| backgroundColor (hover) | transparent |
navigation-link
| Property | Value |
| transition | color, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) |
badge
| Property | Value |
| rounded | 9999px |
| fontWeight | 500 |
| padding | 16px 24px |
| border | 1px solid currentColor |
| transition | all 150ms cubic-bezier(0.4, 0, 0.2, 1) |
| backgroundColor (hover) | transparent |
CTA labels found on page
- Sign up
- Get the app
- Download the app
- Sign up for Cosmos
Source Design Tokens (CSS custom properties)
:root {
--spacing: .25rem;
--container-xs: 20rem;
--container-sm: 24rem;
--container-md: 28rem;
--container-lg: 32rem;
--container-xl: 36rem;
--container-2xl: 42rem;
--container-3xl: 48rem;
--container-4xl: 56rem;
--font-weight-light: 300;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--font-weight-extrabold: 800;
--tracking-tight: -.025em;
--tracking-wide: .025em;
--leading-tight: 1.25;
--leading-snug: 1.375;
--leading-normal: 1.5;
--radius-xs: .125rem;
--radius-sm: .25rem;
--radius-md: .375rem;
--radius-lg: .5rem;
--radius-xl: .75rem;
--radius-2xl: 1rem;
--radius-3xl: 1.5rem;
--radius-4xl: 2rem;
--drop-shadow-lg: 0 4px 4px #00000026;
--ease-out: cubic-bezier(0, 0, .2, 1);
--ease-in-out: cubic-bezier(.4, 0, .2, 1);
--animate-spin: spin 1s linear infinite;
--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;
--blur-xs: 4px;
--blur-sm: 8px;
--blur-md: 12px;
--blur-lg: 16px;
--blur-xl: 24px;
--blur-2xl: 40px;
--aspect-video: 16 / 9;
--default-transition-duration: .15s;
--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
--radius-element: .1875rem;
--color-white: var(--color-white);
--color-black: var(--color-black);
--text-color-primary: var(--color-text-primary);
--text-color-secondary: var(--color-text-secondary);
--text-color-tertiary: var(--color-text-tertiary);
--text-color-quaternary: var(--color-text-quaternary);
--text-color-inverted: var(--color-text-inverted);
--text-color-onmedia: var(--color-text-onmedia);
--text-color-critical: var(--color-text-critical);
--text-color-success: var(--color-text-success);
--text-color-alert: var(--color-text-alert);
--text-color-link: var(--color-text-link);
--text-color-disabled: var(--color-text-disabled);
--background-color-button-primary: var(--color-button-primary);
--background-color-button-onmedia: var(--color-button-onmedia);
--background-color-button-inverted: var(--color-background-primary);
--background-color-hover-primary: var(--color-hover-primary);
}
Do's and Don'ts
Do
- Do reserve the accent
#881337 for interactive highlights and key moments — it is used sparingly on the source page.
- Do keep the canvas at
#FFFFFF; surfaces should stay within the detected neutral ramp.
- Do stick to the detected font weight(s): 300, 350, 400, 500, 700.
Don't
- Don't introduce colors outside the detected palette — every hue above was found in the source.
- Don't add drop shadows; the source page relies on borders and surface shifts for depth, not elevation.
Design Tokens (copy-paste)
:root {
--color-primary: #78350F;
--color-accent: #881337;
--color-background: #FFFFFF;
--color-surface: #F7F5F3;
--color-text-primary: #000000;
--color-secondary: #000000;
--color-text-secondary: #FDE68A;
--color-border: #FECDD3;
--color-on-primary: #FFFFFF;
--color-on-secondary: #FFFFFF;
--color-on-accent: #FFFFFF;
--color-surface-container-lowest: #FFFFFF;
--color-surface-container-low: #F8F5F2;
--color-surface-container: #F7F5F3;
--color-surface-container-high: #F5F5F5;
--color-surface-container-highest: #F5F4F2;
--font-sans: cosmosOracle;
--font-size-display: 74px;
--font-size-headline-lg: 38px;
--font-size-headline-md: 31px;
--font-size-body-lg: 18px;
--font-size-body-md: 16px;
--font-size-label-md: 14.8px;
--font-size-label-sm: 12px;
--radius-sm: 2px;
--radius-lg: 40px;
--radius-pill: 9999px;
--space-xs: 2px;
--space-sm: 8px;
--space-md: 17px;
--space-lg: 35px;
--tracking-display: -.02em;
--container-max: 768px;
}