DESIGN.md · Analysis

Fishbone Cast

game.fishbonecast.com · 31 Jul 2026 · 47 colors · Noto Sans Thai

Fishbone Cast

A playful, web-based fishing MMO with a warm, approachable aesthetic. Fishbone Cast combines casual gaming with social connectivity, using a soft, earthy color palette and organic shapes to evoke the relaxation of fishing.

Colors

surface#f7e7c5
surface-dim#e2c48f
surface-bright#fffaf0
surface-container-lowest#fffaf0
surface-container-low#f4e3c2
surface-container#ecd9b4
surface-container-high#e2d6bb
surface-container-highest#d3ad74
on-surface#4a3222
on-surface-variant#5b4632
inverse-surface#3b2a1c
inverse-on-surface#fffaf0
outline#8b7355
outline-variant#d3bd93
surface-tint#f29d3f
primary#06c755
on-primary#ffffff
primary-container#8ed065
on-primary-container#2e5a3a
inverse-primary#04a548
secondary#f29d3f
on-secondary#3b2a1c
secondary-container#f4e3c2
on-secondary-container#5b3a1e
tertiary#f59e0b
on-tertiary#ffffff
tertiary-container#fef3c6
on-tertiary-container#78350f
error#e40014
on-error#ffffff
error-container#ffa3a3
on-error-container#5f0008
primary-fixed#8ed065
primary-fixed-dim#06c755
on-primary-fixed#ffffff
on-primary-fixed-variant#2e5a3a
secondary-fixed#f4e3c2
secondary-fixed-dim#f29d3f
on-secondary-fixed#3b2a1c
on-secondary-fixed-variant#5b3a1e
tertiary-fixed#fef3c6
tertiary-fixed-dim#f59e0b
on-tertiary-fixed#78350f
on-tertiary-fixed-variant#92400e
background#f7e7c5
on-background#4a3222
surface-variant#d3bd93

Typography

display
fontFamily: Noto Sans Thai · fontSize: 60px · fontWeight: 900 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Noto Sans Thai · fontSize: 40px · fontWeight: 900 · lineHeight: 48px · letterSpacing: -0.02em
headline-md
fontFamily: Noto Sans Thai · fontSize: 28px · fontWeight: 700 · lineHeight: 36px · letterSpacing: -0.01em
title-lg
fontFamily: Noto Sans Thai · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: Noto Sans Thai · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Noto Sans Thai · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Noto Sans Thai · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Noto Sans Thai · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

Fishbone Cast is a casual, browser-based fishing MMO that prioritizes accessibility and social connection over complexity. The design language—termed 'Warm Minimalism'—combines soft, earthy tones (warm cream #fffaf0, sand #f7e7c5, and rich brown #4a3222) with playful, rounded geometry to create an inviting, low-stress gaming environment. The aesthetic evokes the quiet contentment of sitting by a peaceful river, with gentle animations (bubble rises, swimming cursors) and organic wave patterns reinforcing the aquatic theme. The brand personality is cheerful yet grounded: approachable, never condescending, with a tone that celebrates small victories and community. Example voice: 'ตกปลากับเพื่อนแบบเรียลไทม์ — เก็บตัวละคร เหรียญ และเพื่อนไว้ไม่ให้หาย' (Fish with friends in real-time — keep your characters, coins, and friends safe).

Colors

The color system is anchored in a warm, earthy palette that reflects the natural fishing environment. Primary (#06c755, a vibrant green) is reserved exclusively for call-to-action buttons and success states, creating immediate visual hierarchy and encouraging engagement. Secondary (#f29d3f, a warm orange) serves as an accent for highlights, badges, and secondary interactive elements, adding warmth without competing with primary. The surface stack progresses from the brightest cream (#fffaf0) for card backgrounds through progressively warmer tones (#f4e3c2, #ecd9b4, #e2d6bb) to establish depth without darkness. On-surface text (#4a3222, a deep brown) maintains 7:1 contrast on all light surfaces. The outline-variant (#d3bd93, a muted tan) is used for subtle borders and dividers, creating vis

Typography

The type system uses Noto Sans Thai exclusively, honoring the Thai-language user base while maintaining a modern, friendly voice. Display and headline weights (900 and 700) are reserved for hero content and section titles, set at 60px and 40px respectively with tight letter-spacing (-0.04em, -0.02em) to create visual impact and personality. Body text (400 weight, 16px–18px) is set at 1.5 line-height (24px–28px) for comfortable reading on mobile and desktop. Labels and buttons use 600 weight at 14px with 0.01em letter-spacing to convey action and hierarchy. All text over busy backgrounds (e.g., hero section with gradient) applies a subtle text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) to ensure legibility. The type pairing communicates approachability: heavy weights (900) for brand moments, regu

Layout

The page layout uses a centered, single-column design with a max-width of 820px, optimized for mobile-first viewing and touch interaction. The hero card (login container) sits at the center of a full-viewport flex container, with 24px horizontal padding (gutter) on mobile and 40px (lg spacing) on tablet+. The background uses a radial gradient (120% 90% at 50% -10%, transitioning from #fff6e2 to #f7e7c5 to #dcd0ae) to create depth without introducing new colors. Animated bubble elements (positioned absolutely, bottom: -12%, with 13s–16s animation cycles) float upward, adding motion without distraction. The wave SVG footer (16vh height) uses two overlapping paths with opacity (0.55 and 0.5) to suggest water. Vertical spacing between sections uses md (24px) for card padding and lg (40px) for

Elevation & Depth

Depth is conveyed through layered shadows and subtle borders rather than dark overlays. Level 1 (Base): the radial gradient background with animated bubbles creates the foundation. Level 2 (Card): the login card uses a 2px border (#e3cfa4, a light tan) with a large, soft shadow (0 26px 60px -18px rgba(74, 50, 34, 0.45)) to lift it off the background. An inset highlight (inset 0 2px 6px rgba(255, 255, 255, 0.9)) at the top edge of the card reinforces the frosted-glass aesthetic. Level 3 (Buttons): primary buttons use a 5px solid drop-shadow (0 5px 0 #04a548, a darker green) that shifts on hover

Shapes

The shape philosophy is termed 'Soft-Technical Warmth': rounded corners are generous and consistent, avoiding sharp edges while maintaining clarity. Buttons and cards use 24px border-radius (1.5rem, {rounded.xl}), creating a friendly, approachable feel that invites interaction. Input fields and smaller interactive elements use 8px (1rem, {rounded.lg}) or 6px (0.75rem, {rounded.md}) for subtle hierarchy. The logo container uses a full circle (border-radius: 50%, {rounded.full}) to emphasize the brand mark. Wave SVG paths use organic curves (quadratic Bézier paths) to evoke water without literal

Components

Action Elements Buttons are the primary interactive element and use a distinctive 3D-press aesthetic. Primary buttons (bg: #06c755, text: white, 48px height, 16px 24px padding, 24px border-radius) display a 5px solid drop-shadow (#04a548) in the resting state. On hover, the button translates up 2px (transform: translateY(-2px)) and the shadow extends to 7px, creating a 'lifting' effect. On active/click, the button translates down 2px and the shadow compresses to 2px, simulating a press. The transition duration is 150ms cubic-bezier(0.2, 0.8, 0.3, 1) for snappy feedback. Secondary buttons (white bg, 2px tan border #e2d6bb, same shadow logic) follow the same press pattern but with a border to differentiate. Icon buttons are 48px squares with transparent backgrounds; on hover, they gain a

Do's and Don'ts

**Do**

  • Do use primary green (#06c755) exclusively for CTAs and success states — it is the only color users should click on without hesitation.
  • Do apply the 3D press shadow effect (5px drop-shadow, hover lift, active compress) to all buttons to reinforce the playful, tactile brand.
  • Do maintain the warm color palette (cream, sand, brown, orange) in all new components — never introduce cool grays or pure blacks.
  • Do use Noto Sans Thai at 900 weight for headlines and 400 weight for body to create the friendly-yet-clear hierarchy.
  • Do apply the inset highlight (inset 0 2px 6px rgba(255, 255, 255, 0.9)) to card tops to reinforce the frosted-glass aesthetic.
  • Do use 24px border-radius on buttons and cards, 8px on inputs, and 50% on circular elements — no sharp corners.

**Don't**

  • Don't use dark overlays, pure black shadows, or cool-toned grays — they break the warm, approachable aesthetic.
  • Don't apply primary green to non-interactive elements or backgrounds — reserve it for CTAs only.
  • Don't use system fonts or sans-serif fallbacks; always specify Noto Sans Thai to honor the Thai-language user base.
  • Don't reduce border-radius below 6px or use sharp corners anywhere — the brand relies on soft, rounded geometry.
  • Don't animate elements faster than 150ms or slower than 420ms without explicit design rationale — maintain the snappy, responsive feel.
  • Don't add drop-shadows using pure black (rgba(0, 0, 0, ...)) — always use the warm brown rgba(74, 50, 34, ...) to preserve the palette.