Skip to content

Crunchyroll Design System

Orange #ff5e00 on the free-trial pill, a near-black hero over white plan pages, Crunchyroll Atyp and 48px capsules. Crunchyroll for React and AI tools.

Primary color
#ff5e00
Typeface
DMSans
Shape
Soft
Base radius
0px
Colors
18
Type tokens
9
Components
18
Spacing values
10

About Crunchyroll DESIGN.md

Curated by Dov Azencot, updated May 13, 2026. Source crunchyroll.com (opens in a new tab).

Crunchyroll's homepage runs a two-canvas page rather than a single dark theme. The hero band sits on near-black "#151515" so the "World's largest dedicated Anime collection on demand" headline reads at maximum contrast against the poster-grid wallpaper behind it, but every section below — the plan-picker section, the "Be the First to Watch" simulcast rail, the "Get More with Crunchyroll" benefits row, the FAQ accordion, the legal footer — flips to a "#ffffff" background with black text. Crunchyroll Orange ("#ff5e00") appears in exactly three places out of 9 extracted brand tones: the "Start free trial" CTA pill, the "Mega Fan" plan-card outline, and the FAQ row chevron. Where most streaming homepages run one continuous dark theme, Crunchyroll inverts the canvas at the fold — the hero is for atmosphere, the funnel below is for conversion.

This page packages the homepage chrome into a single DESIGN.md file built on the Google Labs spec. Inside: 18 colors tokens grouped into brand, ink, surface, and hairline roles built from 9 extracted hex values; 9 typography levels spanning a "10px"–"80px" range with the Atyp display and DMSans body stacks; 5 corner radii anchored on the "48px" capsule (8 occurrences) and a "100px" full-pill (5 occurrences) for the FAQ rows; a 10-step spacing scale running on the "10px"/"12px" double-base unit that drove 97 of 220 measurements; and 18 components recipes covering the orange pill CTA, the "Fan / Mega Fan" plan-card pair, the simulcast tile grid, the chevron-rotating FAQ row, and the limited-time promo banner. The extraction registered only 4 CSS variables on ":root" — every other value here is a render-time measurement.

Feed the file to Claude, Cursor, or GitHub Copilot and the agent writes funnel components that match Crunchyroll's vocabulary — the two-canvas hero/body inversion, the single-orange CTA discipline, the "48px" capsule shape — rather than a generic streaming template. Or reference the tokens directly: every hex, font stack, radius, and spacing value is a quoted DESIGN.md value ready for Tailwind config, CSS variables, or your own component library. The system is worth studying as a counter-example to the dark-theme orthodoxy — most anime and gaming streaming sites stay on charcoal end-to-end; Crunchyroll runs a dark hero on top of a light marketing page, treating the canvas switch as a section break rather than a mode.

What makes it distinct

5 highlights

  1. Single orange voltageCrunchyroll Orange ('#ff5e00') restricted to the 'Start free trial' pill, the FAQ chevron, and the 'Mega Fan' plan-card outline; never as hairline or body text
  2. Near-black hero, white funnel'#151515' on the 1440x900 hero band only, then '#ffffff' takes over for plans, watchlist tiles, FAQ, and footer — a two-canvas page, not one dark theme
  3. Capsule geometry at '48px'Buttons, plan-card frames, and the promo banner all share the same long-pill rounding (8 of 16 measured corners); '100px' carries the FAQ accordion rows
  4. Two-typeface splitDisplay sits in Crunchyroll Atyp ('80px' hero, '54px' h2, weight '700'); body and nav run DMSans 14–18px / weight '400', no shared family
  5. Negative-margin overlap rail'-12px' appears 4 times as the row-stack offset that pulls the FAQ chevron rows into one continuous bar with no visible gap

Live at crunchyroll.com

Crunchyroll in production, as captured. Scroll the window to see the whole page.

Crunchyroll's website at crunchyroll.com

18 colors

Crunchyroll's system runs on #ff5e00 as its primary voltage, used in 5 of 18 components. Type is set in DMSans across 9 tokens from 10px to 80px, weights 400–700. Shape language is soft — components average 52px corner radius, with no sharp interactive edges.

Brand & Accent

Sparing, CTA-only voltage · 4

Surface

Page and card backgrounds · 5

Text

Headlines, body, captions · 6

Borders & Hairlines

Dividers, outlines, rules · 3

9 type tokens

Set in DMSans across 9 tokens, from 10px to 80px, weights 400–700. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • hero-display80px · weight 700 · lh 80px · tracking -2.24pxThe quick brown fox jumps over the lazy dog
  • display-xl54px · weight 700 · lh 64px · tracking -0.5008pxThe quick brown fox jumps over the lazy dog
  • display-lg44px · weight 700 · lh 48px · tracking -1.02pxThe quick brown fox jumps over the lazy dog
  • display-md34px · weight 700 · lh 40px · tracking -1.02pxThe quick brown fox jumps over the lazy dog
  • heading-sm24px · weight 700 · lh 32px · tracking -0.72pxThe quick brown fox jumps over the lazy dog
  • body-lg18px · weight 400 · lh 22px · tracking normalThe quick brown fox jumps over the lazy dog
  • body-md16px · weight 700 · lh 24px · tracking -0.72pxThe quick brown fox jumps over the lazy dog
  • body-base14px · weight 400 · lh 20px · tracking normalThe quick brown fox jumps over the lazy dog
  • caption-uppercase10px · weight 500 · lh 16px · tracking normalThe quick brown fox jumps over the lazy dog

Radii and spacing

5 corner radii and 10 spacing values. Shape language: soft, on a 0px base radius.

Radii5

  • none0px
  • badge8px
  • chip16px
  • capsule48px
  • pill100px

Spacing10

  • xs4px
  • sm10px
  • base12px
  • md16px
  • lg20px
  • xl24px
  • 2xl32px
  • 3xl56px
  • 4xl96px
  • cta-pad0px 32px

18 components

Each rendered from its tokens (color, type, radius, padding) on Crunchyroll's own canvas.

  • Button Cta Orange
    Button Cta Orangebutton-cta-orange
  • Button Cta Orange Hover
    Button Cta Orange Hoverbutton-cta-orange-hover
  • Button Secondary
    Button Secondarybutton-secondary
  • Hero Band
    Hero Bandhero-band
  • Section Header
    Section Headersection-header
  • Plan Card Base
    Plan Card Baseplan-card-base
  • Plan Card Featured
    Plan Card Featuredplan-card-featured
  • Plan Badge Popular
    Plan Badge Popularplan-badge-popular
  • Plan Feature Chip
    Plan Feature Chipplan-feature-chip
  • Poster Tile
    Poster Tileposter-tile
  • Poster Tag
    Poster Tagposter-tag
  • Benefit Icon Row
    Benefit Icon Rowbenefit-icon-row
  • Promo Banner
    Promo Bannerpromo-banner
  • Faq Row
    Faq Rowfaq-row
  • Faq Row Expanded
    Faq Row Expandedfaq-row-expanded
  • Faq Chevron
    Faq Chevronfaq-chevron
  • Top Nav
    Top Navtop-nav
  • Footer Band
    Footer Bandfooter-band

The system, in use

Crunchyroll's tokens on the kind of product it builds.

Marketing heroThe homepage: its nav, a headline and the main call to action.
Crunchyroll
Sign up

Everything you love to watch and hear

Millions of songs, shows and podcasts, ready on every screen you own.

Start listeningView plans
CrunchyrollJ
AllHomeBrowseLibraryPremium
Made for youSee all
Daily MixDaily MixMade for youLate Night JazzLate Night JazzPlaylistMorning RunMorning Run128 BPMNew FindsNew FindsUpdated weeklyDeep FocusDeep FocusPlaylist

Crunchyroll design system FAQ

Crunchyroll's tokens, its components and how to use this DESIGN.md in your project.

What are the color tokens in the Crunchyroll DESIGN.md?

Crunchyroll's DESIGN.md has 18 color tokens: brand-orange (#ff5e00), brand-orange-fill (#ff5e00), brand-orange-border (#ff5e00), accent-teal (#2abdbb), canvas-light (#ffffff), canvas-dark (#151515) and 12 more. Every value is a quoted hex you can copy.

What is Crunchyroll's primary color hex code?

The color token `brand-orange` is #ff5e00, used by 5 components. The surface behind it is `canvas-light` (#ffffff).

How do I use Crunchyroll's colors in Tailwind CSS?

Map the tokens to your CSS variables: `brand-orange` (#ff5e00) to `--primary`, `canvas-light` (#ffffff) to `--background`, `ink-base` (#000000) to `--foreground`. shadcn/ui's Tailwind setup maps them to classes such as `bg-primary` and `text-foreground`, so they then use Crunchyroll's palette.

What is Crunchyroll's primary brand color?

Crunchyroll Orange is '#ff5e00', extracted 19 times across the homepage — 6 as background fill, 8 as border, 5 as text. The fill instances sit on the 'Start free trial' CTA pill and the 'Most Popular' badge above the 'Mega Fan' plan card; the border instances trace the 'Mega Fan' plan-card outline and the FAQ row hover state; the text instances appear in the orange wordmark inside the plan-picker section. The brand voltage was clustered from two near-duplicate sources, '#ff5e00' and '#ff640a' — both collapse to one perceptual token. It is the only saturated hue on the page; everything else is achromatic plus a single teal-leaning gray '#2abdbb'.

Does Crunchyroll have a dark mode, or is the whole homepage dark?

Neither. The homepage runs a two-canvas split — the top hero band is '#151515' near-black for atmosphere behind the poster-grid wallpaper, then every section below the fold inverts to '#ffffff' with black ink. The plan-picker section, simulcast tile rail, benefits row, FAQ accordion, and footer all sit on white. There is no theme toggle. The authenticated app at app.crunchyroll.com runs a separate dark-canvas chrome that is out of scope for this DESIGN.md.

Use Crunchyroll in your project

One machine-readable file. Drop it into Claude Code, Cursor, VS Code or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of Crunchyroll.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match Crunchyroll's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md overview, rationale, do’s and don’ts

Overview

Crunchyroll's homepage is a two-canvas funnel rather than a single dark theme. The 900px hero band sits on near-black {colors.canvas-dark} ("#151515") so the "World's largest dedicated Anime collection" headline reads at maximum contrast against the poster-grid wallpaper behind it; every section below the fold inverts to {colors.canvas-light} ("#ffffff") with {colors.ink-base} ("#000000") body text. Canvas-switch as fold marker: where streaming peers run one continuous charcoal page top-to-bottom, Crunchyroll uses the light/dark inversion at the hero boundary as the visual cue that you have moved from atmosphere to conversion. The plan-picker section, simulcast rail, benefits row, FAQ accordion, and footer all live on white — only the top hero and the bottom "Limited Time Member Park" promo touch the dark tone.

Type splits across two families. Display runs Crunchyroll Atyp — a proprietary geometric sans — at "80px" / weight 700 / "-2.24px" letter-spacing for the hero (the system's only "80px" token, 1 occurrence), then steps through "54px" / "44px" / "34px" for section heads. Body and navigation run DMSans at 14–18px / weight 400 with a 'Helvetica Neue', helvetica, sans-serif fallback. There is no shared family across display and body — the typeface boundary tracks the canvas boundary. Two-typeface-as-section-marker: where Netflix and Spotify run a single proprietary family across every weight tier, Crunchyroll uses the family swap itself as the hierarchy signal. A reader can identify a "Crunchyroll heading" without seeing color or size — only by the Atyp glyph shapes versus the DMSans body.

The shape language is capsule-and-pill. "48px" appears on 8 of 16 measured corners — the dominant radius — and unifies the "Start free trial" CTA, the "Mega Fan" plan-card outline, and the "Limited Time Member Park" promo banner. The longer "100px" (5 occurrences) is scoped to the FAQ accordion rows, where a track-segment pill reads more clearly as a row affordance than a "48px" capsule would. The remaining radii are scoped: "16px" (2 occurrences) for the small plan-feature chips, "8px" (1 occurrence) for the inline "Most Popular" badge above the Mega Fan card. There is no square corner on any interactive surface, but there is also no full circle — the geometry refuses both extremes.

Key Characteristics:

  • Two-canvas split: {colors.canvas-dark} ("#151515") on the hero band only, {colors.canvas-light} ("#ffffff") for every section below — a section-break by inversion, not a theme.
  • Single-shot orange voltage: {colors.brand-orange} ("#ff5e00") used only in three roles — the {component.button-cta-orange} CTA pill, the {component.plan-card-featured} "Mega Fan" outline, and the {component.faq-chevron} expand glyph. Never on hairlines, never on body text.
  • Two-family type split: Crunchyroll Atyp ("80px"–"34px") for display, DMSans (14–18px) for body. No shared family, no shared weight ladder.
  • Capsule geometry at "48px" (8 corners) for buttons and plan cards; "100px" (5) for FAQ accordion rows; "16px" (2) for feature chips; "8px" (1) for the popular badge.
  • Negative-margin stacked FAQ: "-12px" appears 4 times as the row-stack offset that pulls accordion rows into one continuous bar.
  • Compact "10px"/"12px" double-base spacing: 81 + 16 = 97 of 220 measurements use one of these two values, with "96px" (8 occurrences) reserved as the major section gutter.

Colors

Brand & Accent

  • Crunchyroll Orange ({colors.brand-orange} — "#ff5e00") — frequency 19. Used as background (6), border (8), text (5). The single voltage color, clustered from #ff5e00 and #ff640a. Appears on the "Start free trial" CTA pill, the "Mega Fan" plan-card outline, the "Most Popular" badge, and the FAQ expand chevron. Never on hairlines, never on body running text.
  • Accent Teal ({colors.accent-teal} — "#2abdbb") — frequency 380. Used as text (190), border (190). Despite the high count, this tone is scoped to link rails and hover-underline states inside DMSans body copy — a structural accent that masquerades as a brand color in the extraction but never carries a CTA or a fill.

Surface

  • Canvas Light ({colors.canvas-light} — "#ffffff") — frequency 618. Used as text (311), border (307). The dominant page surface — every section below the hero, every plan card, every FAQ row, the footer. White is structural here; it is the page, not an accent.
  • Canvas Dark ({colors.canvas-dark} — "#151515") — frequency 28. Used as background (24), text (2), border (2). The hero band fill and the "Limited Time Member Park" promo banner. The only dark surface on the page.
  • Surface Muted ({colors.surface-muted} — "#f2f2f2") — frequency 110. Used as text (55), border (55). The plan-feature chip fill and the divider tone between FAQ rows when collapsed. Reads as a "card-on-card" tone against the "#ffffff" canvas.
  • Surface Sand ({colors.surface-sand} — "#ece1c2") — frequency 5. Used as background (1), text (2), border (2). A warm cream stop scoped to the "Limited Time Member Park" promo card frame — the single warm tone on the entire page, balancing the orange voltage.

Text & Ink

  • Ink Base ({colors.ink-base} — "#000000") — frequency 32. Used as text (13), background (6), border (13). The default body text color on the white funnel — every plan-card label, every FAQ row title, every benefit-row caption. The "background (6)" instances are the orange CTA text glyph color.
  • Ink Muted ({colors.ink-muted} — "#8c8c8c") — frequency 468. Used as text (234), border (234). The dominant secondary text — footer legal copy, plan-card supporting copy, poster-tag captions. The single most-used color in the page after white.
  • Ink Subtle ({colors.ink-subtle} — "#bbbbbb") — frequency 34. Used as text (16), border (16), shadow (2). The tertiary text color — used for disabled states and the "or" separator inside the email-capture row.

Hairlines

  • Hairline Soft ({colors.hairline-soft} — "#f2f2f2") — same hex as Surface Muted, applied as a 1px rule between collapsed FAQ rows and as the top edge of the footer band.
  • Hairline Mid ({colors.hairline-mid} — "#bbbbbb") — same hex as Ink Subtle, used for the plan-feature divider lines inside the "Fan" and "Mega Fan" plan cards.

Typography

Font Families

The system runs Crunchyroll Atyp for every display tier, with fallback to arial, helvetica, sans-serif. Atyp is a proprietary geometric sans licensed only to Crunchyroll. Body, navigation, and form labels run DMSans with fallback to 'Helvetica Neue', helvetica, sans-serif — DMSans is the open-source Google Fonts release of DM Sans by Colophon Foundry. There is no shared family across display and body; the typeface boundary is the hierarchy signal.

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
{typography.hero-display}80px70080px-2.24pxThe single hero headline "The world's largest dedicated Anime collection on demand"
{typography.display-xl}54px70064px-0.5008pxThe plan-picker section header (3 occurrences)
{typography.display-lg}44px70048px-1.02pxThe "Limited Time Member Park" promo banner headline (1 occurrence)
{typography.display-md}34px70040px-1.02px"Be the First to Watch" and the benefits-row section heads (3 occurrences)
{typography.heading-sm}24px70032px-0.72pxPlan-card titles "Fan" / "Mega Fan" and "Already a Member?" prompt (8 occurrences)
{typography.body-lg}18px40022pxnormalPlan-card supporting copy and the legal phishing notice (8 occurrences)
{typography.body-md}16px70024px-0.72pxCard titles inside the simulcast rail and the FAQ row titles (7 occurrences)
{typography.body-base}14px40020pxnormalThe dominant body running text — 142 occurrences across navigation, footer, and card copy
{typography.caption-uppercase}10px50016pxnormalPoster-tile episode tags and "Most Popular" badge label (2 occurrences)

Principles

Two-family hierarchy: every display token runs Crunchyroll Atyp at weight 700, every body token runs DMSans at weight 400. Hierarchy is encoded by family and size, never by weight inside one family. The only weight-700 DMSans appearance is {typography.body-md} — used 7 times, scoped to simulcast-tile titles and FAQ row headlines.

Where most marketing systems run a four- or five-step weight ladder inside one family (300 → 400 → 500 → 600 → 700), Crunchyroll uses two families at a binary weight. Reading the page, a viewer can identify display versus body without measuring size — the glyph shapes do the work.

The full size range is 10px–80px — the widest gap of any streaming homepage in the directory. The hero at "80px" is twice as large as the next-largest token (display-xl at "54px"), and the smallest token (the "10px" caption-uppercase) is one-eighth that size. The compression in the 10–18px band is where 95% of the page's text actually lives.

Note on Font Substitutes

If Crunchyroll Atyp is unavailable, Inter at weight 700 with -0.025em letter-spacing is the closest open-source option for the display tier. For the body tier, DMSans is already open-source under the OFL — install the Google Fonts release directly. The key move is preserving the family gap — pick a geometric-sans display and a humanist-sans body and refuse to share weights between them, rather than running one family across all sizes.

Layout

Spacing System

  • Base unit: "10px" / "12px" double-base (the two most frequent tokens at 81 + 16 = 97 of 220 measurements).
  • Tokens: {spacing.xs} "4px" · {spacing.sm} "10px" · {spacing.base} "12px" · {spacing.md} "16px" · {spacing.lg} "20px" · {spacing.xl} "24px" · {spacing.2xl} "32px" · {spacing.3xl} "56px" · {spacing.4xl} "96px" · {spacing.cta-pad} "0px 32px" (CTA pill).
  • Card internal padding: "32px 24px" for plan cards, "20px 24px" for FAQ accordion rows, "24px 16px" for the four-icon benefits row.
  • Section gutters: {spacing.4xl} ("96px") between major sections — the largest measured gap, appearing 8 times. {spacing.3xl} ("56px") at the hero-to-funnel boundary.
  • Negative spacing: "-12px" appears 4 times as the row-stack offset between FAQ accordion rows, pulling them into one continuous bar with no visible vertical gap.

Grid & Container

  • Hero band: full-bleed "#151515" surface 900px tall, headline left-aligned, "Start free trial" CTA inline below, poster-grid wallpaper covering the right two-thirds.
  • Plan picker: two cards side-by-side at desktop — "Fan" (left, no border) and "Mega Fan" (right, orange-outlined with "Most Popular" badge overlapping the top edge).
  • Simulcast rail: five horizontal poster tiles in a single row, 2:3 portrait aspect ratio, no carousel chrome.
  • Benefits row: four-icon grid horizontal at desktop, stacking to 2×2 on tablet.
  • FAQ accordion: six pill-rounded rows stacked vertically with "-12px" row overlap.
  • Footer: single-row link strip at "24px 40px" padding, ink-muted text on white.

Whitespace Philosophy

The page favors dense scanning over editorial breathing room — "10px" and "12px" together drive nearly half of all spacing measurements. Cards sit close to each other, the FAQ rows literally overlap by "-12px", and the "96px" major-section gutter is the only generous vertical break. The horizontal page gutter is "40px" ("0px 40px" appears 10 times) — narrower than the "148px" Netflix uses at the same 1440 width. The page reads as efficient and packed, not as a magazine spread.

Elevation

LevelTreatmentUse
Base (Level 0)Flat {colors.canvas-light} ("#ffffff")Page background for every section below the hero
Dark Band (Level 0)Flat {colors.canvas-dark} ("#151515")Hero band and "Limited Time Member Park" promo
Surface (Level 1)Flat {colors.surface-muted} ("#f2f2f2")Plan-feature chips
Outlined (Level 1){colors.brand-orange} ("#ff5e00") 2px border on {colors.canvas-light}"Mega Fan" plan-card frame
Sand (Level 1)Flat {colors.surface-sand} ("#ece1c2")Promo-card warm frame

Shadow Philosophy: the extracted page carries effectively zero box-shadow declarations across measured surfaces — only "#bbbbbb" registers a 2-instance shadow, scoped to the inline "or" separator inside the email-capture row. Depth is signaled by border (the "#ff5e00" outline on the "Mega Fan" card) or by surface tone (the "#f2f2f2" plan-feature chips against the "#ffffff" card surface). Where Netflix relies on tone steps and Spotify uses heavy opacity-0.5 shadows on dark, Crunchyroll uses outline-as-elevation — the upsell plan is elevated by being the only card with a colored border, not by being lifted off the page.

Components

Buttons

button-cta-orange — {colors.brand-orange} ("#ff5e00") fill, {colors.on-orange} ("#000000") text, "48px" capsule ({rounded.capsule}), "0px 32px" padding, "40px" tall. The signature "Start free trial" pill. Carries {typography.body-md} at "16px" / weight 700. The single orange-fill button on the page.

button-cta-orange-hover — Same fill, same shape, "0.92" opacity drop on hover. No fill shift, no border addition — just a small dim.

button-secondary — {colors.canvas-light} ("#ffffff") fill, {colors.ink-base} ("#000000") text, "48px" capsule radius, "6px 15px" padding, no visible border. Used for the "Already a Member? Sign In" affordance and other tertiary actions on the white funnel.

Hero & Sections

hero-band — {colors.canvas-dark} ("#151515") fill, white text in {typography.hero-display} ("80px" / 700), "96px 40px" padding. Houses the headline, CTA pill, and the poster-grid wallpaper.

section-header — {colors.canvas-light} fill, {colors.ink-base} text in {typography.display-md} ("34px" / 700), "56px 0px 24px" top-heavy padding. The header pattern for "Be the First to Watch", the benefits row, and the FAQ section.

Plan Picker

plan-card-base — {colors.canvas-light} fill, "48px" capsule radius, "32px 24px" padding, no visible border. The "Fan" card, the entry-level plan. The lack of border is what makes the "Mega Fan" card's orange outline read as upsell.

plan-card-featured — {colors.canvas-light} fill, "48px" capsule radius, "32px 24px" padding, {colors.brand-orange-border} ("#ff5e00") 2px border. The "Mega Fan" upsell card — same fill as the base card, with the orange outline as the single visual distinction. Outline-as-elevation.

plan-badge-popular — {colors.brand-orange} fill, black text in {typography.caption-uppercase} ("10px" / 500), "8px" radius ({rounded.badge}), "4px 12px" padding. The "Most Popular" pill that overlaps the top edge of the Mega Fan card. The only "8px" radius on the page.

plan-feature-chip — {colors.surface-muted} ("#f2f2f2") fill, black text in {typography.body-base}, "16px" radius ({rounded.chip}), "6px 15px" padding. Used inside both plan cards to list "Ad-free streaming", "Offline viewing", etc.

Simulcast & Benefits

poster-tile — {colors.canvas-light} fill, "8px" radius ({rounded.badge}) on the clipped artwork, no visible border. The five-tile horizontal rail row. Title beneath the artwork in DMSans "14px" / weight 400.

poster-tag — {colors.canvas-light} fill, {colors.ink-muted} text in {typography.caption-uppercase} ("10px" / 500 uppercase). The "Episode 12" / "New Season" tag below each poster title.

benefit-icon-row — {colors.canvas-light} fill, black text in {typography.body-base}, "24px 16px" padding per cell. The four-icon horizontal benefits row ("Ad-free", "Simulcasts", "Offline", "Exclusive").

Promo Banner

promo-banner — {colors.canvas-dark} ("#151515") fill, white text in {typography.display-md} ("34px" / 700), "48px" capsule radius, "32px 40px" padding. The "Limited Time Member Park" cross-promo at the bottom of the funnel — the only other dark surface besides the hero.

FAQ

faq-row — {colors.canvas-light} fill, black text in {typography.body-md} ("16px" / 700), "100px" pill radius ({rounded.pill}), "20px 24px" padding, {colors.hairline-soft} ("#f2f2f2") 1px border. One of six accordion rows. Title left, chevron right.

faq-row-expanded — Same fill, same shape, {colors.brand-orange} ("#ff5e00") 2px border on expand. The orange border is the only state change.

faq-chevron — {colors.brand-orange} fill, black icon glyph, "100px" pill radius, "10px" padding. The expand/collapse affordance at the right edge of each FAQ row — the only orange-fill element on the white funnel other than the CTA pill.

Navigation & Footer

top-nav — {colors.canvas-dark} fill, white text in {typography.body-base}, "0px 40px" padding, "64px" tall (from the --cr-header-height: 4rem CSS variable). Houses the Crunchyroll logo, primary nav links, and the Sign In affordance.

footer-band — {colors.canvas-light} fill, {colors.ink-muted} ("#8c8c8c") text in {typography.body-base}, "24px 40px" padding. The single-row link strip — Terms / Privacy / Cookies / About Us — that closes the page.

Responsive Behavior

NameWidthKey Changes
Mobile Small< 425pxHero scales from "80px" to "40px"; CTA stacks below the headline; plan cards stack 1-column
Mobile425–576pxHero scales to "44px"; simulcast rail becomes 1-poster swipe; benefits row stacks to 2×2
Tablet576–768pxHero at "54px"; plan cards stack 1-column; simulcast rail shows 2 posters
Tablet Large768–1024pxHero at "64px"; plan cards return to 2-column; simulcast rail shows 3 posters
Desktop Small1024–1280pxHero at "72px"; full 2-column plan picker; simulcast rail shows 4 posters
Desktop1280–1440pxStandard layout — "80px" hero, 2-column plan cards, 5-poster simulcast rail, 4-icon benefits row
Large Desktop> 1440pxPage max-width caps at 1440 with the "40px" horizontal gutter growing proportionally

Touch Targets

  • The "Start free trial" CTA sits at "40px" tall by "0px 32px" padding — borderline AAA at "40px", compensated by the "48px" capsule that visually enlarges the hit area.
  • FAQ accordion rows are full-row tap targets at "56px+" tall (16px text + 20×2 padding).
  • Plan cards are full-card tap targets, comfortably above 48px.
  • Top-nav links are "64px" tall thanks to the header-height variable.

Collapsing Strategy

  • Hero headline: "80px" → "64px" → "54px" → "44px" → "40px" across breakpoints; Atyp at weight 700 holds at every size.
  • Plan picker: 2-column → 1-column at < 768px; the orange-outlined card stays first to preserve the upsell signal.
  • Simulcast rail: 5 posters → 4 → 3 → 2 → 1 horizontal-scroll at every breakpoint.
  • Benefits row: 4-column → 2×2 → 1-column.
  • FAQ accordion: vertical stack preserved at every breakpoint; only the row padding compresses.

Do's and Don'ts

Do

  • Reserve {colors.brand-orange} ("#ff5e00") for the three sanctioned uses — the {component.button-cta-orange} CTA pill, the {component.plan-card-featured} outline, and the {component.faq-chevron} glyph. A fourth orange surface (an orange hairline, an orange link, an orange badge fill outside the popular pill) breaks the single-voltage discipline.
  • Run the hero band at {colors.canvas-dark} ("#151515") and every section below at {colors.canvas-light} ("#ffffff"). The canvas-switch is the fold marker.
  • Use {rounded.capsule} ("48px") on every primary surface — buttons, plan cards, the promo banner. One-radius continuity is the system's shape signature.
  • Split display and body across two families — Crunchyroll Atyp at weight 700 for display, DMSans at weight 400 for body. Family-as-hierarchy is the typographic identity.
  • Use {colors.accent-teal} ("#2abdbb") for link rails and hover-underline states inside body copy. It looks like a brand color in the extraction but is structural here.

Don't

  • Don't use {colors.accent-teal} ("#2abdbb") as a button fill, plan-card border, or CTA color. It is a text-and-border-only token (380 occurrences, 0 as background) used for link affordances. A teal button reads as a different brand entirely.
  • Don't use {colors.surface-sand} ("#ece1c2") for body text or surface panels outside the promo card. It is a single-component warm frame (5 occurrences total) and the only warm tone on the page — using it elsewhere collapses the orange-vs-achromatic discipline.
  • Don't use "100px" radius ({rounded.pill}) on the CTA pill or plan cards. The longer pill is scoped to FAQ accordion rows where it reads as a track segment; a "100px" CTA reads as an over-rounded marketing pill that does not belong to the plan-card family.
  • Don't apply {colors.brand-orange} as a fill on the FAQ row body — only on the chevron and the expanded row's border. An orange-fill FAQ row reads as a CTA, not as an expand affordance.
  • Don't share a font family across display and body. Running Crunchyroll Atyp at "16px" or DMSans at "80px" collapses the two-typeface hierarchy signal that lets readers identify a section header without measuring size.
  • Don't add a shadow under the plan cards or FAQ rows. The page carries effectively zero shadow declarations; depth is signaled by the orange outline on the upsell card, not by a lift.

Known Gaps

  • Motion and transitions: the FAQ accordion expands with a slide-down reveal and the chevron rotates from + to ×, but exact easing curves and durations are not captured in this DESIGN.md.
  • Hover states beyond opacity: the "Start free trial" CTA dims from "1.0" to roughly "0.92" opacity on hover, and the plan cards lift very slightly, but the precise interpolated values are not extracted.
  • Authenticated product UI: this spec covers only the signed-out homepage. The actual streaming product — the catalog browse, the player chrome, the watchlist, the simulcast queue — uses a parallel dark-canvas token set with a different surface treatment and lives at app.crunchyroll.com.
  • Locale-specific hero variants: the hero copy ("The world's largest dedicated Anime collection on demand") changes per locale, and some markets carry a different CTA pill copy ("Watch Now", "Sign Up Free"); the localization framework is not part of this DESIGN.md.
  • Poster-grid hero wallpaper: the artwork mosaic behind the hero headline is a CMS-driven asset that rotates with featured titles — the file documents the dark band but not the per-title artwork composition.
  • Cookie consent and legal overlays: these live as separate components outside the homepage chrome and are not part of the captured surface.

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Page sections in 56 categories, from heroes and pricing tables to dashboards and settings, on every framework and UI library, in your theme.Blocks: All 6,181 blocks
  • Complete Next.js sites for startups, SaaS, agencies and portfolios, every page designed, ready to ship.Templates: All 14 templates
  • Your AI agent searches, previews and installs any component, block, icon or DESIGN.md from a prompt: 22 tools in Claude Code, Cursor, VS Code and 35 more clients.MCP server: 38 AI clients
  • Buttons with motion and states of their own, from an arrow that slides in to a burst of confetti.Animated buttons: All 35 buttons
  • Typewriters, scrambles, counters and more, for headlines, labels and numbers.Text effects: All 97 effects
  • Animated backgrounds for heroes, sections and cards, from a soft aurora to a flock that flees the cursor. Most are pure CSS.Backgrounds: All 100 backgrounds
  • WebGPU shaders, from a slow aurora to a black hole, each drawing only while it's on screen.Shaders: All 100 shaders
  • One design and one theme on all four: the components, blocks and effects are built for each framework.Frameworks: React, Vue, Svelte, Solid
  • React on Base UI, Radix UI, React Aria or Ark UI: install the version for the library your project already uses. Vue, Svelte and Solid run on Ark UI.UI libraries: Base UI, Radix, Aria, Ark
  • From a button to a date picker, a color picker or a guided tour: accessible, typed in TypeScript, each with live demos.Components: All 174 components
  • Real-world patterns built from the components, in 53 galleries: forms, tables, menus, dialogs and more.Examples: All 1,103 examples
  • Area, bar, line, pie, radar and radial charts on TanStack Charts, on every framework. React also gets the Recharts originals.Charts: All 70 charts
  • Debounce, local storage, media queries and more: each hook is one typed file you own.React hooks: All 35 hooks
  • From 222 libraries, Lucide, Heroicons, Tabler and Material Symbols among them, as SVG or a React component in one command.Icons: 294k+ icons
  • Stripe, Linear, Apple and 497 more: a brand's colors, typography and components in one file your AI agent builds from.DESIGN.md files: All 500 brands
  • Restyle every component and block at once: 8 styles, 7 grays, 18 colors and 5 radii, shared as a shadcn preset code.Theme builder: 8 styles × 18 colors
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

4.9 out of 5 from 150+ developers

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro
  • Cancel anytime
  • Keep what you've shipped