Skip to content
oh-my-design

Kakuyomu DESIGN.md

DESIGN.md

Design System Inspiration of Kakuyomu

Overview

Visual Theme & Atmosphere

Kakuyomu (カクヨム) is a web-fiction service built around writing, reading and sharing stories. It opened on 29 February 2016: Hatena's launch announcement identifies KADOKAWA as operator and Hatena as the service-planning and system-development partner. The current guide describes a place where anyone can write in their own style, read stories and recommend favourites. Launch announcement, Kakuyomu guide.

The measured homepage gives this proposition a blue hero, a horizontal strip of illustrated announcements, and compact text-led discovery lists. The line “書ける、読める、伝えられる” introduces a pale-blue #e9f5fb area and a blue #4baae0 registration action. Below it, white #ffffff reading areas, dark #222222 titles and grey #666666 metadata support editorial picks and a weekly ranking. Individual story catchphrases use additional colours; these content colours are not treated as the interface palette. These are observations of the live homepage and its screenshots, rather than published brand principles.

The product has widened its reading model. The March 2024 UI notice describes adding Kakuyomu Next showcases to the homepage, rankings and search while excluding Next works from ranking totals. The January 2026 greeting records the 2025 merger with 魔法のiらんど and the service's tenth anniversary in 2026. UI update, 2026 greeting.

The measured surface is the Japanese desktop homepage at kakuyomu.jp/, HTML lang="ja", captured at 1440×1000; it did not redirect to another edition.

Brand Narrative

The 2019 Hatena Design Group article documents a reading-focused redesign of the iOS/Android Kakuyomu Viewer. It describes improving discovery and bringing app backgrounds, text, typography and icons closer to the web version where possible. This is historical product-design context; its app interactions and styling are not used as current web tokens. Design article.

The 2024 Next integration and the official 2026 account of the 魔法のiらんど merger extend the service's mix of writing and reading communities. The measured homepage's genre discovery, editorial selections and prominent Next area are the current surface observations supporting that broader product context. UI update, 2026 greeting.

Principles

The guide explicitly supports both reading and writing. The 2024 UI notice says it will take care not to substantially affect user-submitted works' exposure when adding Next showcases. Translate those documented product priorities into clear paths for both audiences and a visible distinction between ranked works and promoted Next works. No separate official web-design principles document was verified. Guide, UI update.

Personas

No research-backed personas were verified; the official guide addresses readers and writers.

Colors

The live census contains 283 computed root custom properties and 349 unique stylesheet-declared property names. The following roles retain values from that extraction and from the measured controls; the names on the left are reference roles, with the site's raw names shown alongside them.

Reference roleValueFirst-party token or measured use
Primary#4baae0--color-light-primary, --color-blue-40; signup face and navigation indicator
Primary hover#0990cc--color-blue-50, --background-mediumBlue; signup hover fill and focus glow
Link#0081c2--linkColor-blue, --color-blue-60; work-title hover ink
Background#ffffff--color-light-surface; reading surface and carousel button
Surface#f2f1f0--color-light-surface-container; search and genre-card rest fill
Surface hover#eae9e8--color-light-surface-container-high; search and genre-card hover fill
Hero surface#e9f5fbHero ancestor's computed background; also --background-paleBlue
Foreground#222222--color-light-on-surface; measured work title and nav label
Muted#666666--color-light-on-surface-variant; genre-count descendant and metadata
Border#dddddd--borderColor-default; carousel-button border
Input foreground#000000Header search's computed text colour

The paragraph-ink census is blue #0081c2 ×7, grey #666666 ×6 and dark #222222 ×5. The foreground role follows the named on-surface token and the dark measured titles; the most frequent paragraph colour is not promoted to the universal body colour. The separate text census is led by #666666 ×278 and #222222 ×139. Among opaque backgrounds, #f2f1f0 appears 43 times, white 5 times and primary blue 3 times.

Typography

Font evidence is separated by what it establishes:

Evidence classVerified result
Official product useNo product font-family statement was verified in the official pages opened for this reference.
Live-loadeddocument.fonts reports only dcsymbols normal normal. Its CSS source is /font/dcsymbols-regular.woff, with /font/dcsymbols-regular.otf also declared, on the product origin.
Official distributed assetsThe live first-party @font-face lists those WOFF and OTF asset paths. The files, glyph coverage and licence were not inspected. No separate distribution or licensing document was verified.
Declared-onlyAfter dcsymbols, body, h1 and button CSS name Helvetica Neue, Helvetica, Arial, ヒラギノ角ゴ Pr6N / Hiragino Kaku Gothic Pr6N, ヒラギノ角ゴ ProN / Hiragino Kaku Gothic ProN, ヒラギノ角ゴ StdN / Hiragino Kaku Gothic StdN, Segoe UI, Verdana, メイリオ / Meiryo, and a generic sans-serif fallback. These names are declarations, not loaded-face evidence.
UnresolvedThe census does not establish which installed face supplied the rendered Japanese text or whether dcsymbols covers that text. No body-family token or font specimen is emitted. Substitute: none chosen.

Preserve the verified metrics independently of that unresolved family. The work-title link is 14px/700 with 18.2px line height; navigation is 12.6px/400 with 22.68px line height; header search is 11.9px/400 with 13.685px line height. The signup's visible span is 14px/700, 14px line height and 0.5px letter spacing. The genre card has a 14px/400 base and a 14px/700 visible genre label.

The stylesheet declares --fontSize-3s 10px, -2s 11.5px, -1s 12.6px, -m 14px, -1l 18px, -2l 20px, -3l 24px and -4l 35px on the product's Root classes. These are declared scale values; they do not establish the size of every heading on the page.

Layout

At the measured desktop width, a fixed 50px header carries navigation and search. The hero carousel and registration action precede a main editorial area with a weekly-ranking column to its right. Featured works begin two across. Lower on the page, the genre-search links form three columns; a measured card is 256.3px wide. These arrangements are visible in the survey screenshots and interactive-element coordinates.

The stylesheet's Root classes declare a 135px column unit and 30px column space. Root width tokens include --width-sidebar: 300px and --width-1l: 800px; these declarations are not a measurement of every rendered container.

The declared margin scale is --margin-5s 2px, -4s 4px, -3s 6px, -2s 8px, -1s 10px, -m 16px, -1l 20px, -2l 24px, -3l 28px, -4l 32px, -5l 40px, -6l 45px and -7l 64px. These names are retained in the spacing tokens. The measured genre card uses 16px padding; the signup face uses 10px.

Responsive Behavior

Mobile layout and responsive transitions were not measured; the live evidence here is desktop 1440×1000 only.

Elevation & Depth

All six controls have box-shadow: none at rest, including the signup face. Keyboard focus adds a blue 0px 0px 5px 0px #0990cc shadow to that face. Treat it as focus feedback rather than a permanent raised-button shadow. White, pale blue and warm grey distinguish the observed surfaces.

Motion & Easing

The signup face's raw computed transition is all 0.1s linear 0s; the header search's is background 0.1s linear 0s. Their measured transitions are 100ms and linear. The interactive signup anchor, carousel next, nav link, work-title link and genre card each report all 0s ease 0s on the target itself. These zero-duration target values do not describe carousel slide motion or every descendant.

The probe waited at least 900ms for each measured state, beyond the 100ms transitions. No carousel slide duration, reduced-motion behaviour or animated illustration behaviour was measured.


Live source: Kakuyomu homepage, captured 2026-11-03. Company identification: 特定商取引法に基づく表示 names “株式会社KADOKAWA” at “〒102-8177 東京都千代田区富士見2-13-3”; company profile independently lists the Tokyo registered location. The measurement paths, raw values, controls and narrative excerpts are recorded in report.md and verification.md beside this draft.

Components

All six product controls below have measured hover, pointer-pressed and real Tab-focus states. The painted signup face was additionally targeted to resolve its geometry; it is part of the same link.

ControlMeasured rest identityHover and pressedKeyboard focus
Hero signup linkVisual span 380×36px, radius 3px, padding 10px, 14px/700; #4baae0 fill, #ffffff ink, 1px #0990cc borderFill #0990cc, border #0081c2Same fill/border plus 0px 0px 5px 0px #0990cc glow; anchor has a 1px dotted #222222 outline at -1px offset
Carousel next button50×50px, radius 50%, padding 0, 14px/400; #ffffff fill, #222222 arrow, 1px #dddddd borderDescendant arrow colour and stroke become #4baae0Blue arrow plus 1px dotted #222222 outline at 0px offset
小説を探す nav link75.6×50px, radius 0, left padding 12.6px, 12.6px/400; transparent on white, #222222 inkChild label's transparent 4px top border becomes #4baae0Same top indicator plus 1px dotted #222222 outline at -1px offset
Header search269.9×32px, radius 0, padding 1px 2px 1px 0, 11.9px/400; #f2f1f0 fill and #000000 textHover fill #eae9e8; pressed also paints top/right/bottom 2px #4baae0 bordersTop/right/bottom 2px #4baae0 borders; left remains none; fill remains #f2f1f0
Featured work title link373.1×35.2px in the captured wrapping, radius 0, padding 0, 14px/700; transparent on white, #222222 ink#0081c2 ink and solid underlineSame ink/underline plus 1px dotted #0081c2 outline at -1px offset
異世界ファンタジー genre card link256.3×75.6px, radius 4px, padding 16px; 14px/400 base, 14px/700 label; #f2f1f0 fill/border, #222222 labelFill and 1px border become #eae9e8Same fill/border plus 1px dotted #222222 outline at -1px offset

The signup anchor itself is an inline 380×16px box with radius 0, padding 0, transparent background and computed 14px/400. Its child supplies the 36px painted face and bold white label. Keep that distinction when recreating its appearance or checking the measurements. The inner span is not reached by Tab; its independent focus is UNMEASURED. The link's focus is measured.

The work-title example is “私、蜘蛛なモンスターをテイムしたので、スパイダーシルクで裁縫を頑張ります!” at /works/16817330657705436671. Its captured line wrapping is content-dependent. The genre card links to /search?genre_name=FANTASY; its count is content, not a token.

States

All six measured controls change on hover, pressed and keyboard focus. For signup, carousel next, nav exploration, work title and genre card, pressed adds no further computed change beyond the measured hover appearance. Header search adds the blue three-sided border while pressed; that pointer state also has focus, so the result does not isolate an :active-only style.

Keyboard focus was reached at Tab #3 for nav, #6 for search, #17 for carousel next, #18 for signup, #20 for the featured title and #212 for the genre card in this capture. The five dotted outlines are measured with outline-style: dotted, not auto; the search uses a border change. Every control's focus-only changes disappeared after blur. No disabled or validation-error state was measured.

The comparison covers each target, its descendants, their ::before/::after, and three ancestor levels. Descendant counts are 1 for signup, 2 for carousel next (SVG and path), 1 for nav, 0 for search, 0 for the work title and 6 for the genre card. A claim of no further pressed change is limited to that computed-style and DOM scope, which excludes siblings and cross-origin iframe contents.

Do's and Don'ts

These are build recommendations derived from the measurements:

  • Use the darker #0081c2 for the measured work-link interaction, while keeping #4baae0 for the signup face and nav indicator.
  • Keep featured work titles bold and compact, with quieter metadata below them.
  • Preserve the nav's top indicator and the search input's three measured focus borders.
  • Keep the 3px signup corners, 4px genre-card corners and circular carousel control distinct.
  • Do not turn colourful story catchphrases into global semantic tokens, fix title-link wrapping as a universal card height, or assign a declared-only font as the product face.

Voice & Tone

The product leads with the three parallel verbs “書ける、読める、伝えられる”. The guide explains concrete reader and writer actions; the measured signup says “無料で新規ユーザー登録” and the navigation says “小説を探す”. For similar flows, use direct Japanese task labels and state the free-registration offer explicitly where that offer applies. Guide, live homepage.

Agent Prompt Guide

“Build a Kakuyomu-style discovery area with white reading surfaces, #222222 work titles at 14px/700 and #666666 metadata. A work-title link becomes #0081c2 with an underline on hover and press, and adds a 1px dotted outline at -1px on keyboard focus. Leave the font family unresolved.”

“Build the measured hero signup appearance: a 380×36px face, 3px corners, 10px padding, 14px/700 label, #4baae0 fill, white ink and 1px #0990cc border. Hover and press darken the fill to #0990cc and border to #0081c2; keyboard focus also adds the 5px blue glow and the link's inset dotted outline.”

Governance

Known Gaps

  • Contrast, signup. Text #ffffff on #4baae0 measures 2.58:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.

Colors

Brand

Surface & text

Other colors

Typography

Type scale

  1. bodyMeasured genre-card base; --fontSize-m is declared as 14px. Family unresolved.14px, weight 400
  2. work-titleMeasured featured work title link.14px, line height 18.2px, weight 700
  3. ctaMeasured visual span inside the hero signup link.14px, line height 14px, weight 700, letter spacing 0.5px
  4. navigationMeasured header exploration link.12.6px, line height 22.68px, weight 400
  5. searchMeasured header search input.11.9px, line height 13.685px, weight 400

Spacing & shape

Spacing

  • margin-5s2px
  • margin-4s4px
  • margin-3s6px
  • margin-2s8px
  • margin-1s10px
  • margin-m16px
  • margin-1l20px
  • margin-2l24px
  • margin-3l28px
  • margin-4l32px
  • margin-5l40px
  • margin-6l45px
  • margin-7l64px

Corner radius

  • square0px
  • m3px
  • 1l4px

Components

  • signup
    signupFill #4baae0 · Text #ffffff · Border 1px solid #0990cc · Radius 3px · Height 36px · Padding 10px · Type 14px / 700
    • Hover Visual span: bg #0990cc; border 1px solid #0081c2.
    • Pressed Visual span: bg #0990cc; border 1px solid #0081c2; no further measured change from hover.
    • Focus Link: 1px dotted #222222 outline, offset -1px. Visual span: bg #0990cc; border 1px solid #0081c2; shadow 0px 0px 5px 0px #0990cc.
  • header-searchFill #f2f1f0 · Text #000000 · Radius 0px · Height 32px · Padding 1px 2px 1px 0px · Type 11.9px / 400
    • Hover Background becomes #eae9e8.
    • Pressed Background #eae9e8; top, right and bottom borders 2px solid #4baae0; left border none. This pointer state also has focus.
    • Focus Top, right and bottom borders 2px solid #4baae0; left border none; background remains #f2f1f0.
  • genre-cardFill #f2f1f0 · Text #222222 · Border 1px solid #f2f1f0 · Radius 4px · Height 75.6px · Padding 16px · Type 14px / 400
    • Hover Background and 1px border become #eae9e8.
    • Pressed Background and 1px border become #eae9e8; no further measured change from hover.
    • Focus Background and 1px border become #eae9e8; 1px dotted #222222 outline, offset -1px.