Taipei Metro DESIGN.md
DESIGN.md
Design System Inspiration of Taipei Metro
Overview
Visual Theme & Atmosphere
Taipei Metro is the urban rail service operated by 臺北大眾捷運股份有限公司. Its company history records the company's establishment on 27 July 1994 and the Muzha line's opening on 28 March 1996. The same history records QR single-journey tickets and an accompanying Taipei Metro Go app purchase function in March 2026: the service continues to develop its digital journey tools.
The identity pairs blue and green with open, flowing shapes. The official identity account describes simplified corners, balanced space between the symbol's two halves, and colours adjusted for use against different backgrounds. The company dates that identity refinement to late 2020. On the measured website, this becomes a light service portal: white panels, coloured section accents, illustrated service links, and compact rounded actions.
The requested entry URL (web.metro.taipei/pages/index.asp) rendered the Traditional Chinese homepage at www.metro.taipei/, with HTML lang="zh-Hant-TW"; all live measurements below describe that destination.
Primary tasks visible on this homepage are route and fare lookup, station information, service shortcuts, and news.
Brand Narrative
The company's mission connects safe, reliable, friendly transport with sustainable development and services grounded in its transport business. Its station-redesign announcement carries that approach into Zhongshan station, describing subtraction, systematic organisation and consistency from the traveller's perspective. These are company statements about service and physical space; the website measurements describe their own evidence domain.
Principles
The current vision page names smart technology, resilience and sustainability, alongside integrity, teamwork, innovation and openness. For this web reference, the observed implementation suggests clear task labels, differentiated service accents and conspicuous keyboard focus. Those implementation lessons are an interpretation of the measured page.
Personas
Personas were not researched.
Colors
These are observed website values, named here by their measured roles; they are not a published corporate token dictionary.
| Role | Value | Evidence |
|---|---|---|
| Primary blue | #0069a2 | Census border colour; route-map item's decorative underline in its measured ancestor |
| Section green | #49a123 | Census border colour; blue/green section detailing also appears in the live site stylesheet |
| Query amber | #f3b544 | Route-query link's rest background |
| Secondary sky | #9be1fb | More-news link's rest background |
| Surface | #ffffff | Most frequent nontransparent background, 44 elements |
| Muted surface | #f5f5f5 | Census background, 5 elements; header search icon's rest fill |
| Inactive tab | #ededed | Inactive station-information tab in the survey; census background, 5 elements |
| Foreground | #505050 | One of the two paragraph-ink samples; the other is link blue #0070a8 |
| Label | #1a1a1a | Navigation, station select and service-card caption at rest |
| Input line | #cccccc | Origin select's 1px bottom border |
| Interaction ink | #004d79 | Navigation foreground and service-card caption on hover |
| Utility hover | #99c047 | Header search icon's hover background |
| Focus coral | #e76454 | Authored dashed focus outline |
| Query label | #000000 | Route-query link's visible label |
The census contains just one custom property, --font-color: white. Its declaration is in the delivered hamalightGallery.css, where it colours gallery tools and descriptions. It is excluded from the Metro palette. No brand custom-property namespace was verified; the values above come from rendered styles.
Typography
The evidence classes remain separate:
- Official product use: the identity page documents redesigned standard lettering, with smoother strokes and attention to readability and image/text balance. It does not name an interface font family. A wordmark is not evidence of a reusable UI face.
- Live-loaded: the census reports
document.fontsloaded faces as[]. No family is admitted to the typography tokens and no font specimen is supplied. - Official distributed assets: no text-font binary or text-font licence was opened. The delivered CSS declares local font aliases and an
icomoonicon face; those declarations do not establish a distributed brand text face. - Declared-only: body computes to
sans-serif; h1 declaresArial, 微軟正黑體修正, 微軟正黑體, "Helvetica Neue", Helvetica, sans-serif, 新細明體. Text controls declareArial. The微軟正黑體修正face points to local fonts; the icon face names relative TTF/WOFF resources. None appears in the census's loaded list. Roboto and Material Icons are linked in the original Angular shell, outside the rendered homepage's font evidence. - Unresolved: actual system-rendered Han and Latin faces, downloadable text-face availability and licensing. Substitute: none chosen.
Keep the measured metrics: main navigation 20px/400 with 30px line height; its hover/focus weight is 700. The origin select is 18px/400 with 30.6px line height. The route-map caption is 18px/400; its anchor reports 16px/400 with 24px line height. The query link is 18px/700 with 18px line height. The more-news link is 16px/400 with 16px line height. These metrics do not identify the rendered font.
Layout
The observed desktop page stacks a utility row, a logo/navigation row, a broad promotional carousel, a centred two-tab journey panel, and eight illustrated service shortcuts. News, business links, app promotion and a multi-column footer follow. This hierarchy keeps travel tasks near the top while allowing substantial civic and commercial information below. That is a layout observation from the survey screenshots, not a documented grid specification.
Use the measured control padding where applicable; no general spacing scale or container-width token was verified.
Responsive Behavior
Only 1440×1000 desktop was measured; mobile behaviour and breakpoints are unverified.
Elevation & Depth
All six sampled controls have computed box-shadow: none; surrounding panel shadows were not measured as reusable values.
Motion & Easing
All six sampled controls report the exact computed transition all 0.15s ease 0s: 150ms with ease and no delay. No custom cubic-bezier curve was computed. The navigation arrow's measured hover transform is recorded in §14.
Separately, the corporate identity page says its motion identity draws on train movement and arrival. It supplies no interface timing specification here.
Components
Measurements use a 1440×1000 desktop viewport. Four controls have clean reusable state evidence:
| Control | Measured identity | Rest appearance |
|---|---|---|
rider-nav — 乘車指南 | Link with button role; 180×46px; radius 10px; padding 8px 30px 8px 5px; 20px/400 | Transparent on white; label #1a1a1a; border and shadow none |
origin-select — 出發 | Native select#departureStation; 350×41.6px; radius 0px; padding 5px 8px; 18px/400 | White #ffffff, label #1a1a1a; bottom border 1px solid #cccccc; shadow none |
route-card — 路網圖 | Link; 175×148px; radius 0px; padding 0px 16px 16px; visible caption 18px/400 | Transparent on white; anchor and caption #1a1a1a; border and shadow none |
header-search — 搜尋 | Link with button role; 36×36px; radius 18px; padding 0px | Background #f5f5f5; hidden text transparent at 0px/400; visible icon comes from a background image; border and shadow none |
The search icon's visible image ink was not measured, so its component has no foreground token.
Two additional actions retain their measured geometry as reference observations: 查詢 is a 100×38px link, radius 30px, padding 10px 0px, 18px/700, amber #f3b544 with black #000000; 更多 新聞稿 is a 140.5×40px link, radius 20px, padding 12px 28px, 16px/400, sky #9be1fb with #1a1a1a. Both have no border or shadow. Their pointer states remain unmeasured, and their after-blur snapshots collapse to 0×0. They are therefore kept out of the component tokens.
The header keyword field was hidden in the survey; no keyword-input component was harvested. The origin select is a separate route-planning control.
States
| Control | Hover | Pressed | Keyboard focus |
|---|---|---|---|
rider-nav | Foreground #004d79, weight 700; arrow transform changes from matrix(0, 1, -1, 0, 0, 0) to matrix(0, -1, 1, 0, 0, 0) | Hover appearance plus 3px dashed #e76454 outline, offset 0px | Foreground/weight change plus that outline, offset 1px; arrow transform did not change in this capture |
origin-select | UNMEASURED | UNMEASURED | 3px dashed #e76454 outline, offset 0px; clean after-blur comparison |
route-card | Caption #1a1a1a → #004d79; anchor colour unchanged | Caption change plus 3px dashed #e76454 outline, offset 0px | Caption change plus that outline, offset 1px |
header-search | Background #f5f5f5 → #99c047 | Hover fill plus 3px dashed #e76454 outline, offset 0px | Hover fill plus that outline, offset 1px |
route-query — raw observation only | UNMEASURED | UNMEASURED | Background #f3b544 → #f1a61e, black underline, coral dashed outline at 1px offset; after-blur geometry caveat |
news-more — raw observation only | UNMEASURED | UNMEASURED | Background #9be1fb → #82dafa, coral dashed outline at 1px offset; after-blur geometry caveat |
The first pointer pass reported coverage by the header layer for query, more-news and origin select. The second call requested hideOverlays: true; the probe still reported them covered. No third call was made. A covered pointer state is UNMEASURED, not unchanged.
All accepted hover snapshots matched :hover; pressed snapshots matched :active; keyboard snapshots matched :focus and :focus-visible. Comparisons include each control, its pseudo-elements, up to three ancestor levels and descendants. The route card includes four descendants and one image; the select includes 144 descendants. External image internals, iframe contents and pixel-only changes are outside that scope. Disabled variants were not measured.
Do's and Don'ts
- Keep the blue/green section accents, white service surfaces and distinct amber query action.
- Preserve the measured caption size on service cards and the navigation's weight change.
- Retain the coral dashed keyboard outline, including its measured offset.
- Do not turn the CSS family declarations into verified font specimens.
- Do not assign a transparent icon label's colour to its visible background-image glyph.
- Do not fill in the unmeasured query, news-link or select pointer states.
Voice & Tone
Visible labels are direct service names and actions: 乘車指南, 路線及票價查詢, 路網圖 and 查詢. No authored editorial voice guide was verified.
Agent Prompt Guide
“Create a 175×148px service-card link with square corners and 0px 16px 16px padding on a white list item. Its caption is 18px/400 and #1a1a1a; hover changes the caption to #004d79. Keyboard focus adds a 3px dashed #e76454 outline at 1px offset. Keep the font family unspecified.”
“Create a 36px square search-icon link with an 18px radius and #f5f5f5 fill. Hover uses #99c047; keyboard focus keeps that fill and adds the same coral outline at 1px offset. Use only a verified icon asset.”
색상
브랜드
면과 글자
그 밖의 색
타이포그래피
타입 스케일
- navigationMain rider-guide link at rest; measured weight becomes 700 on hover and focus.20px, 행간 30px, 굵기 400
- controlOrigin-station select and visible route-map card caption; their line heights differ.18px, 굵기 400
- queryRoute-query link at rest; family unresolved.18px, 행간 18px, 굵기 700
- secondaryMore-news link at rest; family unresolved.16px, 행간 16px, 굵기 400
여백과 모양
모서리 반경
- square0px
- navigation10px
- utility18px
- secondary20px
- query30px
컴포넌트
- origin-select채움 #ffffff · 글자 #1a1a1a · 반경 0px · 높이 41.6px · 안쪽 여백 5px 8px · 글자 크기·굵기 18px / 400
- 포커스 3px dashed #e76454 outline with 0px offset.
비슷한 디자인 시스템
컨슈머 테크KLMKLM Royal Dutch Airlines "was founded on 7 October 1919 and is the oldest airline in the world still operating under its original name", in its newsroom's words.
컨슈머 테크trivagotrivago's mission: "When travelers are searching for a hotel, we want the obvious choice to be trivago."
컨슈머 테크Financial TimesThe Financial Times is a London business newspaper whose colour is its name in the street — the pink newspaper — and on ft.com that pink becomes the page itself.
컨슈머 테크dodadoda is a Japanese career-change service combining job listings, recruitment advisers and scouting.
컨슈머 테크中華航空China Airlines is Taiwan’s international carrier, founded in 1959, whose public passenger site connects ticketing and travel-service tasks with a broader corporate story of safe, reliable global connection.
컨슈머 테크FeverFever calls itself "the leading global live-entertainment discovery tech platform", helping millions of people each week find experiences in their cities, "with a mission to democratize access to culture and entertainment in real life".