본문으로 건너뛰기
oh-my-design

Nan Shan Life DESIGN.md

DESIGN.md

Design System Inspiration of Nan Shan Life

Overview

Visual Theme & Atmosphere

Nan Shan Life (南山人壽) is a Taiwanese insurer founded in July 1963. Its company introduction pairs the vision of building a better future with the brand promise 「未來 有備而來」: preparing people for the changes and risks ahead. The homepage makes that practical through insurance categories, policy service shortcuts, a member club and help search. Company introduction

Its identity combines a blue mountain mark with yellow and green. The chairman's statement describes adding the colors of sunshine and green land to bring warmth, vitality and a connection to sustainability. It also connects the renewed identity to customer service center renovations beginning in 2023 and to inclusive service design. On the measured homepage, blue action pills, yellow and green service tiles, rounded white panels and illustrated people express that warmer direction. The screen observations describe this website; the service center statement concerns physical spaces and service processes. Chairman's statement

The May 2026 policyholder newsletter develops the future-facing promise through longevity: a forum about longer lives and a brand film showing real people taking up new pursuits later in life. This gives the site's insurance and health content a context of continuing possibility and preparation. May 2026 newsletter

The measured homepage is the Traditional Chinese edition at www.nanshanlife.com.tw/nanshanlife/, with HTML lang="zh-TW"; the requested root URL redirects there.

Brand Narrative

The story connects an insurer founded in 1963 to an expanded idea of preparation: practical insurance service, health information and the opportunities of a longer life. The chairman's account of a warmer, more vital identity and the 2026 newsletter's real-life stories provide that continuity. The website translates it visually through blue actions, sun-yellow and green destinations, and illustrated people alongside service information. Company, identity context, 2026 development

Principles

The company's stated values include integrity and service, altruistic intent, warm professionalism and the courage to pioneer. The following building guidance is inferred from the captured surface: give everyday policy tasks prominent entry points, distinguish destinations with color, and keep interaction feedback local to the control. The chairman explicitly discusses inclusive design for customer service spaces and processes; no claim of website-wide accessibility conformance is made here.

Personas

No independently researched personas or behavioral profiles were verified.

Colors

These reference role names map to measured homepage colors. No first-party custom property palette was found: the census's two root variables and five distinct declared variables all belong to Swiper and are excluded.

RoleValueObserved use
Primary#006fbcPainted faces of 網路投保 and 更多消息
Primary deep#003b64CTA active layers and dark endpoint of their hover gradients
Secondary#2e8aca常見問題 at rest; search focus border
Foreground#333333Paragraph ink: 16 of the 17 paragraphs counted
Utility#4d4d4d公平待客 utility link at rest
Canvas#ffffffWhite action labels, search field and panels
Service yellow#f3af00南山聚樂部 card link at rest
Service green#7fbe26Homepage background census, two occurrences; green service tiles visible in the capture
Border#e3e3e6Search field's 1px rest border
Border hover#89bfe5Search field's 1px hover border
Utility pressed#f3f3f3公平待客 pressed background

The small help link uses a translucent fill, rgba(202, 220, 233, 0.2), raised to rgba(202, 220, 233, 0.5) on hover and press. Keep its white supporting panel when reproducing that appearance.

Typography

Official product use: no opened brand document identifies an official product typeface.

Live-loaded: the census reports Lexend Deca and Noto Sans TC, each at normal 400, 500 and 700. Body, the sampled h1 and the sampled button declare the same stack, beginning with Lexend Deca and Noto Sans TC. These two loaded families are the only families in the machine tokens. This is evidence of use on the captured homepage, without a claim about other Nan Shan applications or individual glyph selection.

Both are served through first-party @font-face WOFF2 URLs under /nanshanlife/assets/font/. Lexend Deca's filenames are lexend-deca-latin-400-normal.woff2, lexend-deca-latin-500-normal.woff2 and lexend-deca-latin-700-normal.woff2. Noto Sans TC uses the three hashed WOFF2 sources transcribed in the verification notes.

Official distributed assets: no separate font kit or distribution/license document was verified. The serving URLs above were observed in CSS and were not separately downloaded.

Declared-only: the remaining named fallbacks are Microsoft JhengHei, 微软雅黑, メイリオ and 맑은 고딕, followed by generic sans-serif. None appears in the census's loaded faces. They receive no specimen and are excluded from the family tokens. The declared Swiper icon face is also absent from the loaded list and is excluded as a library asset.

Unresolved: official type ownership, licensing, any custom brand face and exact per-script glyph rendering. Substitute: none chosen.

Measured elementSize / weightOther measured metrics
網路投保 visible label16px / 700Outer link is 16px / 400
更多消息 visible label18px / 700Outer link is 16px / 400
常見問題 visible label14px / 500Outer link is 16px / 400
公平待客14px / 50022.4px line height; 0.28px tracking
Main search input18px / 50028.8px line height; 0.36px tracking
南山聚樂部 card title18px / 700Subtitle opacity 0.7; outer link is 16px / 400

Layout

At the measured 1440 × 1000 desktop viewport, the hero carousel's visible card is 1200px wide with its left edge at x=120. It combines a text area and an image area. A wide service panel below it places policy task shortcuts beside the yellow, green and blue destination cards.

The full-page capture continues through a two-column insurance category panel, a life-stage planning strip, illustrated dementia-care entry cards, and a news panel beside help search. A broad blue footer gathers navigation and legal information. These are observations of the captured desktop composition, rather than a prescribed grid for other viewports.

Responsive Behavior

Only the 1440 × 1000 desktop surface was measured; mobile layout, touch states and responsive transitions were not measured.

Elevation & Depth

White panels sit on a pale neutral field, with large soft shadows providing separation. The measured ancestor .common-function-diversion has rgba(172, 172, 172, 0.24) 8px 20px 96px 24px. The 更多消息 painted face has rgba(62, 114, 151, 0.12) 8px 8px 32px 0px at rest.

Search focus is a distinct small treatment: rgba(5, 94, 156, 0.05) 0px 0px 0px 4px, paired with its blue border. Its outline style remains none; this authored shadow is the measured focus indicator.

Motion & Easing

The observed motion uses short lateral arrow travel: 12px on 更多消息 and 3px on the yellow club card. Their link shells report all 0s ease 0s; that string does not describe the duration of their animated children.

The help input's raw computed transition is border-color, box-shadow 0.3s, 0.3s ease-out, ease-out 0s, 0s. The utility link's is color, background-color 0.3s, 0.3s ease-out, ease-out 0s, 0s. These unusual serializations are retained exactly; no global duration or easing token is inferred.


First-party sources: live homepage, company introduction, chairman's identity and service statement, May 2026 policyholder newsletter, website terms, statutory disclosure. Captured 2026-11-06. Detailed measurements, font serving declarations, controls, source quotes and the two nonsense-path results are in the accompanying verification notes.

Components

All five actions below are links; the search field is an input. For the first three links, a transparent, square anchor wraps the painted face. The computed anchor has 0px radius and 0px padding. Colors, visible label metrics, heights and states below are computed measurements across that anchor and its descendants. Painted-face radii and padding for those three are CSS declarations from the opened live homepage HTML, recorded separately from computed geometry.

ControlPainted appearance and geometryState behavior
網路投保, header118 × 44px; #006fbc / #ffffff; face radius 36px, padding 10px 20px 11px declared in CSSHover reveals a gradient layer; pressing replaces it with #003b64
更多消息196 × 56px; #006fbc / #ffffff; face radius 36px, padding 16px 24px declared in CSSHover reveals the gradient and translates the arrow 12px right; press retains the arrow position and reveals the dark active layer
常見問題97.1 × 34.4px; translucent blue-grey fill and #2e8aca label; face radius 17px, padding 7px 20px 5px declared in CSSHover and press raise fill alpha from 0.2 to 0.5 and change label to #006fbc
公平待客81.1 × 22.4px; 12px radius; padding 0px 12px; transparent rest fill and #4d4d4d labelHover label #333333; pressed fill #f3f3f3 and same dark label
Main help search418 × 72px; white fill; #333333 text; computed radius 999px; padding 20.5px 99px 20.5px 31pxHover border #89bfe5; press and keyboard focus border #2e8aca plus a 4px translucent shadow
南山聚樂部 card256 × 101.9px; #f3af00 / #ffffff; 0px radius; 24px paddingHover and press reveal the ::before gradient and move its arrow 3px right

The two blue action hover layers contain the computed gradient linear-gradient(235.59deg, rgb(0, 111, 188) 5.89%, rgb(0, 59, 100) 93.09%). Hover opacity changes from 0 to 1. Press returns that layer to opacity 0 and sets the solid dark layer to opacity 1.

The card's live CSS declares linear-gradient(98.78deg, #f3af00, #f8dc94 100.06%); the state probe confirms the pseudo-element opacity change, while its serialized gradient string is shortened. Its full endpoint is therefore CSS-source evidence, not a reconstructed computed string.

States

ControlHoverPressedKeyboard focus
網路投保Gradient layer becomes opaqueDark active layer replaces gradientNo computed style change within the compared scope
更多消息Gradient layer becomes opaque; arrow +12pxDark active layer; arrow remains +12pxNo computed style change within the compared scope
常見問題Fill alpha 0.5; label primary blueSame painted appearance as hoverNo computed style change within the compared scope
公平待客Darker labelDarker label with light neutral fillNo computed style change within the compared scope
Main help searchLighter blue borderStronger blue border and 4px shadowSame border and shadow; both disappear after blur
南山聚樂部Gradient pseudo-layer becomes opaque; arrow +3pxSame appearance as hoverNo computed style change within the compared scope

The probe confirmed actual :hover, :active and keyboard focus matches. Its comparison covers each control and its pseudo-elements, 0–9 descendants including empty layers and their pseudo-elements, and three ancestor levels; the property list and exact counts are in the verification notes. These “no change” results concern that computed-style/DOM scope. Disabled product states were not exercised and are absent from the component tokens.

Do's and Don'ts

  • Use the measured blue faces, white labels and dark active layer for the primary action pattern.
  • Pair the compact translucent help link with a white panel and retain its separate label color.
  • Use the loaded families and measured label weights; keep large action labels at 700.
  • Preserve the distinction between a link's interaction shell and its painted child when implementing the pill.
  • Do not promote Swiper defaults into the palette, the unpainted anchor's browser blue/red into label tokens, or unverified fonts into the type system.

Voice & Tone

The company introduction speaks of preparation, mutual support and a better future. The May 2026 newsletter's later-life stories frame new pursuits as possible at any age. Homepage labels are concrete tasks and destinations: policy claims, policy payments, help, online insurance and member services. This supports a reassuring, practical writing direction; it is an interpretation of those opened texts, not a published voice manual.

Agent Prompt Guide

“Build a Nan Shan Life homepage-style service panel using white surfaces, blue action links and adjacent yellow and green destination cards. Use the live-loaded Lexend Deca and Noto Sans TC families. A primary action has a 56px painted face, white 18px/700 label, a blue-to-deep-blue hover layer and a 12px arrow translation; its 36px face radius and 16px 24px padding come from the live CSS declarations.”

"Use the measured help input: 72px high, white, 1px neutral border and 18px/500 text. On keyboard focus, use the measured blue border and 4px shadow from §6. Reserve the field's right-hand space for the search action; submission behavior was not exercised."

Governance

Known Gaps

  • Contrast, help-link. Text #2e8aca on #cadce933 measures 2.66:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.
  • Contrast, club-card. Text #ffffff on #f3af00 measures 1.92:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.

색상

브랜드

면과 글자

그 밖의 색

타이포그래피

타입 스케일

  1. actionVisible label of the 更多消息 link; live measurement18px, 굵기 700
  2. searchMain help search input; live measurement18px, 굵기 500
  3. utility公平待客 utility navigation link; live measurement14px, 굵기 500

여백과 모양

여백

  • utility-inline12px
  • card-inset24px

모서리 반경

  • none0px
  • utility12px
  • compact17px
  • action36px

컴포넌트

  • online-cta
    online-cta채움 #006fbc · 글자 #ffffff · 반경 36px · 높이 44px · 안쪽 여백 10px 20px 11px · 글자 크기·굵기 16px / 700
    • 호버 An inner layer becomes opaque: linear-gradient(235.59deg, rgb(0, 111, 188) 5.89%, rgb(0, 59, 100) 93.09%)
    • 누름 Hover layer opacity returns to 0; #003b64 active layer opacity becomes 1
  • news-cta
    news-cta채움 #006fbc · 글자 #ffffff · 반경 36px · 높이 56px · 안쪽 여백 16px 24px · 글자 크기·굵기 18px / 700
    • 호버 Gradient layer opacity 0 to 1; arrow transform matrix(1, 0, 0, 1, 12, 0)
    • 누름 #003b64 active layer replaces the hover layer; arrow remains translated 12px
  • help-link
    help-link채움 rgba(202, 220, 233, 0.2) · 글자 #2e8aca · 반경 17px · 높이 34.4px · 안쪽 여백 7px 20px 5px · 글자 크기·굵기 14px / 500
    • 호버 bg rgba(202, 220, 233, 0.5); fg #006fbc
    • 누름 bg rgba(202, 220, 233, 0.5); fg #006fbc
  • help-search채움 #ffffff · 글자 #333333 · 반경 999px · 높이 72px · 안쪽 여백 20.5px 99px 20.5px 31px · 글자 크기·굵기 18px / 500
    • 호버 border 1px solid #89bfe5
    • 누름 border 1px solid #2e8aca; box-shadow rgba(5, 94, 156, 0.05) 0px 0px 0px 4px
    • 포커스 border 1px solid #2e8aca; box-shadow rgba(5, 94, 156, 0.05) 0px 0px 0px 4px
  • club-card채움 #f3af00 · 글자 #ffffff · 반경 0px · 높이 101.9px · 안쪽 여백 24px · 글자 크기·굵기 18px / 700
    • 호버 Gradient before layer opacity 0 to 1; arrow transform matrix(1, 0, 0, 1, 3, 0)
    • 누름 Same gradient layer opacity and 3px arrow translation as hover