This document turns the public TTKQ desktop and mobile sites into a functional baseline that product, design, engineering and QA can work from together. It is a structured analysis of the reference site plus the target requirements for building it — not a system audit performed with admin access, and not a pixel-level design hand-off.
Evidence was captured on 5 September 2026 from a logged-out desktop
browser at 1440 × 1000 and a mobile browser at 390 × 844. Live content and scores were
dynamic samples used only to confirm structure; they are not sports facts. The source
site routes to www or m by User-Agent — a command-line request
landing on the mobile site does not mean the desktop version is absent.
The four evidence tiers
Every screen section below is labelled with one of these. They are used consistently and they mean different things:
| Tier | What it asserts | What it does not assert |
|---|---|---|
| Verified | Actually rendered or actually operated during capture. | That the same path works while signed in, or on other roles. |
| Code-evidenced | The public front-end route, component, validation rule or string exists. | That the account works, or that the back office is finished. |
| Access anomaly | What this particular capture observed — an empty shell, a failed load. | A persistent defect. It needs stable reproduction before it is a bug. |
| Proposed | Target behaviour added so the module is buildable and testable. | Anything about the source site. Proposed field names are not its API contract. |
On completeness. "Nothing omitted" is checked against the public routes and module closure found in this capture: the full route list maps item by item to modules, and logged-out or error pages are kept as re-verification items rather than deleted. The native app internals, the operations back office, hidden rollouts and other permission levels were not reached — no claim of zero omissions is made for those areas. No account was registered; no SMS, message or comment was sent; no installer was downloaded.
Section 01
Design direction and evidence boundary
The source site runs a bright yellow brand navigation, dark text, light grey page ground and white content panels. The home page leads with sports imagery and anchor cover cards; the score and data pages are dense tables built for scanning. Mobile uses two-column live cards, single-column match cards and a five-item bottom navigation.
Values marked measured below come from public CSS or computed styles. Values marked proposed are implementable, consistent design decisions. Sampling colors is not the same as recovering a complete design system: third-party components, campaign artwork and chart legends may still deviate locally. Source-site assets are analysis reference only — the shipped product must use its own marks, artwork and copy.
Section 02
Color and base variables
| Token | Value | Evidence | Use |
|---|---|---|---|
| brand.primary | #FFC927 | Measured C01 H06 | Navigation, active buttons, icons |
| text.primary | #181818 | Measured C01 | Headings, navigation, primary labels |
| text.body | #2C3E50 | Measured DOM | Desktop body default |
| text.secondary | #4F5A70 | Measured H5 search | Supporting labels |
| text.muted | #999999 | Measured C01 | "See all", secondary information |
| surface.base | #FFFFFF | Measured | Cards, tables, forms |
| surface.mobileNav | #F3F3F5 | Measured H06 | Mobile bottom bar |
| surface.search | #F6F6F6 | Measured H06 | Mobile search field ground |
| match.gradient | #FDD81D → #FFEA7D | Measured C02 | Featured match card header |
| score.live | #FF0000 | Screenshot & style clue | Live score on the source site — converge on the semantic colors below |
| semantic.danger | #D9363E | Proposed | Errors, destructive actions, optional score emphasis |
| semantic.success | #237A3B | Proposed | Success, healthy connection |
| semantic.warning | #9A6700 | Proposed | Stale data, incomplete state |
| semantic.info | #245DA8 | Proposed | Explanatory links, status information |
| border.default | #E8E8E8 | Proposed | Card and table separation |
| surface.canvas | #F6F6F8 | Proposed | General light page ground |
| overlay.mask | rgba(0,0,0,0.65) | Proposed | Modal scrim |
| radius.card | 8px | Measured C02 | Featured match card |
| radius.modal | 10px | Measured C01 | Sign-in dialog |
| radius.search | 17px | Measured H06 | 35px mobile search field |
| shadow.card | 0 1px 6px rgba(0,0,0,0.1) | Measured C02 | Match card |
| spacing.scale | 4 8 12 16 20 24 32 40 48 64px | Proposed | One spacing scale everywhere |
Use dark text on brand yellow — do not default yellow buttons to white text. Body text against its ground should meet 4.5:1, large text 3:1, and focus rings and meaningful icons 3:1. That is the target accessibility requirement; it does not assert the source site passes today.
Odds movement, errors, scores, cards and live status must each carry text or shape as well as color. Nothing may be distinguished by red-versus-green alone.
Section 03
Type, numerals and text rules
| Role | Size / weight | Line height | Notes |
|---|---|---|---|
| Desktop body | 14px / 400 measured | 21px measured | Microsoft YaHei first; system CJK fallback |
| Desktop section title | 24px / 700 measured | 32px proposed | Pairs with the main column rule |
| Desktop "see all" | 16px measured | 24px proposed | Grey on the source site — raise until it is legible |
| Mobile search helper | 13px measured | 20px proposed | Field is 35px tall |
| Mobile league, active | 18px measured | 26px proposed | Regular leagues may sit at 16px |
| Mobile tab bar label | 11px measured | 16px proposed | Icon plus text; target is 12px |
| Article body | 16px proposed | 1.7 proposed | Never set long-form in score-table small text |
| Primary score | 24–36px proposed | 1.15 proposed | Digits use tabular-nums so they do not jitter |
| Table numerals | 12–14px proposed | 18–22px proposed | Below 12px only for non-critical support; scroll horizontally if needed |
Names, truncation and units
Team names and anchor names must support Chinese, Latin script and emoji. Desktop tables may truncate a team name and reveal the full name on hover; mobile must keep the full name reachable through expansion or the detail page, because hover does not exist there. Cover titles wrap to two lines at most, one line in compact home rows. Dates, scores and status are never truncated.
Heat figures — 1w style and raw counts — must be formatted consistently within one
platform, and must be labelled as heat, not as a real concurrent-viewer count.
Times render as HH:mm or MM-DD HH:mm; across a year boundary use
YYYY-MM-DD. Label the data-update time and the kick-off time separately.
Unknown values show an em dash; no results shows an empty state.
A real zero must never be replaced by a placeholder.
Section 04
Layout grid and cross-platform rules
| Context | Measured / observed on source | Target requirement |
|---|---|---|
| Desktop general | Fixed 1200px container, 65px header, 42px logo | Full layout at ≥1280px; below that, a stated adaptation |
| Desktop home | Inner width 68.44%, min 729px, max 1324px | Home media area may be fluid — do not apply this to score tables |
| Desktop live card | Five columns, each 20% with 10px side padding | Consistent cover ratio; footer information never overlaps |
| Desktop live room | ≈900px media plus 291px chat | When width is short, chat moves below — never squeezed to unreadable |
| Mobile header | 50px; search 35px tall, 17px radius | 12px side padding proposed; respect the safe area |
| Mobile bottom bar | 57px, five equal items, ground #F3F3F5 | Add the safe area on top; the keyboard must not cover the input bar |
| Mobile cards | Two-column live, single-column fixtures | Verify 360–430px; 12px side margin and 12px gutter proposed |
| Tablet | No dedicated source styling was measured | New 768–1199px: three-column live, statistics tables scroll horizontally |
| Ultra-wide | Home has a maximum width | Do not stretch article measure without limit; tables may add columns but type does not grow with the screen |
Proposed breakpoints: below 768px mobile, 768–1199px tablet, 1200px and up desktop. This is the target strategy; the source site mainly redirects by device UA. The list region and any overlay scroll independently, and only one primary vertical scroll is allowed at a time. Where a table genuinely must scroll sideways, show a scroll affordance and pin the identity column.
Section 05
Component library
Twenty-four components carry every screen in the product. Each entry lists the size baseline, the states a variant set must include, the interaction rules that are easy to get wrong, and the modules that consume it.
| ID | Component | Size baseline | States | Interaction rules | Modules |
|---|---|---|---|---|---|
| C01 | Desktop header | 65px tall, 1200px inner | Default, active, dropdown, hover, signed-in | Sticky on scroll; 42px brand mark; the score dropdown must open by click and keyboard | M01 |
| C02 | Mobile top bar | 50px tall, 35px search | Home, detail, search, back | Side icons must not squeeze the input; long queries truncate | M01 M20 |
| C03 | Mobile tab bar | 57px plus safe area | Five items selected, unread, HOT | Five equal widths; icon plus text; pages reserve equal bottom space | M01 M27 |
| C04 | Live cover card | 5-col desktop, 2-col mobile, ≈16:9 | Live, ended, image error, hover | Title, anchor and heat never overlap; heat format consistent per platform | M02 M03 M17 |
| C05 | Featured match card | 8px radius, 46px header on desktop | Pre-match, in play, finished | League and time in the header; one row per side; crest and score hold fixed positions | M02 |
| C06 | Anchor card & avatar | 40px in lists, 64px large | Following, not following, live, offline | Avatar clipped to a circle; names support emoji; the account ID never truncates | M06 M21 M25 |
| C07 | Tabs and categories | ≈50px desktop row, ≥40px mobile target | Active, default, disabled, overflow | Never distinguish by color alone; long lists scroll sideways; category selection persists | M03 M10 M15 |
| C08 | Football score row | ≈54px desktop row | Pre-match, half time, stoppage, finished, cancelled | Scores align; cards sit beside the team name; icons carry a text hint | M10 |
| C09 | Basketball score group | Two team rows plus period columns | By period, overtime, pre-match | Both sides share column widths; the differential keeps its sign; overtime can extend | M11 |
| C10 | Competition filter overlay | 640–800px wide, ≤70vh | Select all, invert, draft, applied | Actions pinned to the bottom; body scrolls inside; cancel restores the previous selection | M12 |
| C11 | Settings drawer | Mobile bottom sheet, ≤80vh | Radio, switch, disabled | Every setting is named; either offer cancel and confirm, or state that it applies immediately | M12 |
| C12 | Date strip | 5 days desktop, more either side on mobile | Today, selected, no fixtures | Show date and weekday together; localise across month and year boundaries; never hard-code dates | M10 M14 |
| C13 | Statistics & standings table | Pinned identity column, numbers right or centre | No data, sorted, points deduction, tie | Decimal places configured per metric; unknown is an em dash; the header stays visible while scrolling | M06 M09 M15 |
| C14 | Odds table | Bookmaker column plus opening/current pairs | Up, down, suspended, empty | Compare within one bookmaker row; color plus arrow; timestamps explicit | M07 |
| C15 | Player status layer | Desktop media area, full width on mobile | Loading, buffering, blocked, error, offline | The status layer stays operable; failures offer retry; never obstruct exiting full screen | M04 M17 |
| C16 | Message bubble & row | 14–16px body | Sending, unread, read, failed, recalled | Links are recognisable; system messages use a distinct ground; long text wraps | M05 M29 M31 |
| C17 | Message composer | 44px min, 120px max | Default, keyboard, emoji, attachment, muted | Send is its own control; drafts persist; the soft keyboard never covers the input | M05 M29 M33 |
| C18 | Account form | 424px desktop dialog, single column mobile | Error, focus, countdown, submitting | Labels must not live only in the placeholder; password reveal is optional but available | M22 M24 |
| C19 | Image uploader | ≤2MB desktop, ≤3 images mobile feedback | Uploading, success, failed, over limit | Filename, progress or thumbnail feedback; delete stays reachable; client and server validation match | M19 M23 M26 |
| C20 | Confirmation dialog | 400–480px desktop, viewport minus 32px mobile | Normal, destructive, permission change | Name the object and the consequence; cancel is de-emphasised; never pre-select the destructive action | M24 M31 M32 |
| C21 | QR card & scanner frame | Code ≥200px with quiet zone | Valid, expired, invalid, unauthorised | Never crop the code; show its type and target; saving gives feedback | M23 M30 M37 |
| C22 | Empty & error states | 14–16px primary text | Loading, empty, offline, permission, no more | Distinguish "no content" from "load failed"; every error offers a real next step | All |
| C23 | Article & comments | 16px body, 1.7 line height | Normal, unavailable, no comments, in review | Control the reading measure; replies indent one level; time, author and source are clear | M19 M35 |
| C24 | Download bar & promo layer | Desktop banner, mobile floating bar | Shown, dismissed, QR, platform variant | Never covers the tab bar or the player; frequency-capped per session after dismissal | M02 M34 |
Section 06
Per-screen layout requirements
One content-hierarchy rule applies to every module, so it is stated once here rather than repeated 37 times: lead with the information the primary task needs; carry secondary fields through grouping, labels or progressive disclosure. For the exact field list of any module, read the matching section of the Functional PRD.
Global navigation and site frame
Verified- Layout
- Desktop header fixed at 65px with a 1200px container. Mobile header 50px, tab bar 57px plus safe area. Navigation items share one height; the five mobile items are equal width.
- Scope
- Desktop header and footer, mobile primary navigation, cross-platform hand-off and global back.
- Required states
- default
- active
- hover
- expanded
- signed in
- signed out
- dead route
Home recommendations and promotional slots
Verified- Layout
- Desktop inner width 68.44% (min 729px, max 1324px); live cards in five columns with 20px gutters. Mobile cards in two columns, cover ≈16:9, live status top-right, anchor and heat along the bottom.
- Scope
- Live discovery and routing into other modules.
- Required states
- has recommendations
- none
- image loading
- image failed
- anchor offline
- match ended
- promo dismissed
All live streams and today's picks
Verified- Layout
- Desktop reuses the five-column live card; mobile uses two. Categories run horizontally with the selected item in brand yellow. Long titles truncate to one line while keeping the full accessible name.
- Scope
- The full and per-category live directory.
- Required states
- loading
- has streams
- empty category
- ended
- paging failed
- no more
Live room and playback
Interface verified · playback unverified- Layout
- Desktop media and chat at roughly 900px plus 290px inside 1200px. Mobile puts media at the top with horizontally scrollable tabs; the composer moves clear of the keyboard. The player ground is dark and status copy never sits on top of the score.
- Scope
- The match-and-anchor room container, the player, and everything attached to it.
- Required states
- not started
- connecting
- playing
- paused
- buffering
- ended
- no source
- expired source
- network failure
- format unsupported
Room chat and the anchor DM entry point
Partly verified · sending unverified- Layout
- A ≈291px desktop side panel that scrolls on its own; full-width message area on mobile. Nickname and body are visually distinct, system notices are de-emphasised, and the composer with its emoji and send controls is pinned to the bottom of the container.
- Scope
- Public room chat, system notices, join notifications and the route into direct messages.
- Required states
- guest
- can post
- muted
- connecting
- reconnecting
- sending
- failed
- recalled
- unsupported type
Live match data and text commentary
Verified & code-evidenced- Layout
- Football uses symmetrical home-versus-away comparison bars with events on a timeline. Basketball uses a fixed team column and a period table with monospaced alignment. The score is large in red or a dark tone — status is never carried by color alone.
- Scope
- Football statistics, basketball period statistics, and the event feed.
- Required states
- pre-match
- in play
- half time
- finished
- stale data
- no statistics
- abnormal termination
Odds and movement history
Verified & code-evidenced- Layout
- Dense desktop table with grouped headers. Mobile uses three market tabs with opening and current values grouped per row and the bookmaker name pinned. Movement uses its own semantics so it cannot be confused with the red used for scores.
- Scope
- Odds display only. No betting transactions.
- Required states
- has data
- no bookmakers
- suspended
- changed
- stale
- history failed
Pre-match analysis and head-to-head
Tabs verified · detail code-evidenced- Layout
- Mirrored home and away panels. Filters live in a bottom drawer and the history table may scroll sideways. Every percentage states its sample range beside it.
- Scope
- Standings, recent form, head-to-head, absences and upcoming fixtures.
- Required states
- has sample
- insufficient sample
- no meetings
- no absence data
- filter empty
- load failed
Football line-ups and basketball player stats
Code-evidenced- Layout
- Football uses a pitch formation diagram with a list fallback; basketball uses a pinned name column plus statistic columns. Position colors match the home/away identity.
- Scope
- Match line-up detail and the player statistics sub-page.
- Required states
- unannounced
- starting XI published
- in play
- statistics final
- partially missing
Football score centre
Verified- Layout
- Desktop puts white surfaces on a light grey ground with the score and time status prominent. Mobile uses a two-team score card, a horizontally scrolling date strip, and treats half-time and corners as secondary information inside the card.
- Scope
- Live scores, finished results, upcoming fixtures, and favourites.
- Required states
- live
- finished
- upcoming
- favourite
- pinned
- no stream
- cancelled
- no fixtures
Basketball score centre
Verified- Layout
- Two team rows per game with narrow, centred period columns. The full-time total is bold and the differential keeps its sign. Mobile leads with the total and pushes detail into the match page.
- Scope
- Periods, differential, totals and the basketball score directory.
- Required states
- pre-match
- each period
- between periods
- overtime
- finished
- interrupted
- data missing
Score filters and display settings
Verified & code-evidenced- Layout
- Desktop uses an overlay anchored to its trigger, with the body scrolling inside and actions pinned at the bottom. Mobile uses a bottom drawer with touch targets of at least 44px.
- Scope
- Competition scope, name-display mode, and which information columns show.
- Required states
- default
- changed, unconfirmed
- applied
- all selected
- none selected
- cancelled
Match favourites and pinning
Partly verified · rules proposed- Layout
- The star (favourite) and the up-arrow (pin) are separate icons, filled when active. Both carry a text explanation for hover and for screen readers.
- Scope
- Favouriting a match, and pinning it within the current list.
- Required states
- not favourited
- favourited
- pinned
- removing
- empty favourites
- match invalid
Fixtures and match reminders
Verified · reminder submission unverified- Layout
- Desktop runs dates horizontally above grouped tables. On mobile the date group heading shares its row with the collapse control and anchors wrap fluidly. The time zone in use must always be stated.
- Scope
- Finding matches and anchors by sport category and date.
- Required states
- upcoming
- in play
- finished
- rescheduled
- reminder set
- no reminder
- no anchors
- date collapsed
League data and standings
Mobile verified · desktop load anomaly- Layout
- Mobile has a league scroller on top, season and table switches below it, then the table itself. Desktop is proposed as league selection on the left with the main table on the right. Club crests stay small and never crowd the team name.
- Scope
- Football and basketball leagues, seasons, standings and player rankings.
- Required states
- loading
- season has no data
- complete table
- points deduction
- tie
- component load failed
Tournament specials such as the World Cup
Code exists · desktop entry falls back- Layout
- The special may carry its own configurable visual identity while inheriting the base type and navigation. Desktop shows a two-sided bracket; mobile scrolls rounds horizontally or stacks them vertically.
- Scope
- Tournament specials, opened by configuration.
- Required states
- closed
- build-up
- group stage
- knockout
- slot TBD
- finished
Short video and video detail
Mobile list verified · detail unverified- Layout
- Mobile stacks vertical video cards with a single metadata line; desktop is proposed as a grid. On the detail page the media area holds its ratio and body copy never overlaps the player controls.
- Scope
- Short-video categories, cards and playback detail.
- Required states
- list loading
- empty category
- has results
- video unavailable
- playback failed
- completed
Replays, highlights and external sources
Desktop verified · mobile partly visible- Layout
- Desktop lists a match information row plus a replay button. The detail page leads with a result block above a source list. Mobile uses a single column of source buttons so long links cannot overflow.
- Scope
- The replay directory for finished matches, and links to their sources.
- Required states
- has replay
- not yet uploaded
- multiple segments
- source dead
- external page restricted
News list, article detail and comments
Mobile list verified · detail failed to load- Layout
- Mobile article body at 16px / 1.7 with 20–24px headings. Comments sit after the body and replies indent one level. Desktop is proposed as a reading column with a related-news sidebar.
- Scope
- Sports news categories, recommendations, articles and comments.
- Required states
- list
- loading
- article unavailable
- detail error
- no comments
- comments closed
- submitting
- in review
Site-wide search
Mobile verified- Layout
- Full-width mobile search bar with a cancel control and a keyboard search action. Result cards reuse the anchor and match components — search must not invent a different score format of its own.
- Scope
- Searching teams, anchors, live streams and fixtures.
- Required states
- initial
- typing
- searching
- results
- no results
- failed
Anchor directory and profile
Verified & code-evidenced- Layout
- Circular avatar with the display name and account ID at different levels. The profile card carries live and schedule tabs below it, and the follow button state matches the directory exactly.
- Scope
- Featured anchors, following, broadcast schedule and the DM entry point.
- Required states
- live
- offline
- following
- not following
- no schedule
- profile unavailable
Sign in, register and password recovery
Forms verified · submission not executed- Layout
- Desktop uses a centred 424px dialog with a 10px radius, a brand header image and a custom close control. Mobile uses standalone form pages: passwords masked, errors adjacent to their field, primary button full width.
- Scope
- Password sign-in, SMS sign-in, registration, recovery and the result screens.
- Required states
- empty
- format error
- captcha challenge
- sending
- countdown
- verification failed
- signed in
- registered
- reset
Profile, avatar, bio and personal QR
Code-evidenced · needs signed-in re-verification- Layout
- Desktop pairs a left account menu with a right-hand form. Mobile uses a settings list that opens dedicated edit pages with save in the top right. The QR card is centred and the account ID stays readable.
- Scope
- Editing the profile: avatar, nickname, bio and personal code.
- Required states
- viewing
- editing
- cooldown, locked
- uploading
- failed
- saved
- sign-out confirm
Account security: phone and password changes
Code-evidenced- Layout
- A dedicated security sub-page with sensitive fields grouped. The success state names the credential to use next time, and destructive operations go through a confirmation dialog.
- Scope
- Changing the bound phone number, changing the password, and re-authentication.
- Required states
- bound
- verifying
- wrong code
- number taken
- changed
- session invalidated
My follows and my reminders
Code-evidenced- Layout
- Desktop reuses the anchor card and fixture row inside the account content area. Mobile puts the follow button on the avatar row. Empty states route to discovering anchors or to the fixture list.
- Scope
- Managing personal relationships and reminders.
- Required states
- empty
- has follows
- live
- offline
- has reminders
- cancelled
- finished
- load failed
Feedback and feedback history
Code-evidenced- Layout
- Desktop places labels left and the form right; mobile stacks fields with three thumbnails. Image delete buttons need a real touch target, and the contact field must be explicitly marked optional.
- Scope
- Collecting feedback, image upload, contact details and history.
- Required states
- editing
- uploading
- over limit
- empty
- submitting
- success
- history empty
- failed
Message list and contacts
Code-evidenced · sign-in entry verified- Layout
- Mobile conversations in a single column: avatar, name, time and preview, with the unread badge on the right. The messages/contacts switch is pinned to the top and the chat tab is active in the bottom bar.
- Scope
- The mobile chat entry point and contact organisation.
- Required states
- signed out
- connecting
- online
- reconnecting
- no conversations
- unread
- muted
Finding friends, requests and profiles
Code-evidenced- Layout
- The search page focuses the input immediately. The request page is one message field plus send. On the profile card, "add friend" and "send message" are mutually exclusive depending on the relationship.
- Scope
- Adding friends, reviewing requests, remarks and relationship management.
- Required states
- not friends
- request sent
- pending
- declined
- added
- no results
Direct messages and message actions
Code-evidenced- Layout
- Own and other bubbles separate left and right with clear avatars and timestamps. The long-press menu carries quote and recall. The mobile composer grows with its content up to a ceiling.
- Scope
- Friend DMs, quoting, recall and media messages.
- Required states
- sending
- delivered
- read
- failed
- quoted
- recalled
- attachment unsupported
Group discovery, creation and joining
Code-evidenced- Layout
- The friend picker supports search and shows the selected count. QR codes keep high contrast and a quiet zone, with the group name and ID placed outside the code.
- Scope
- The group list, creation, invite codes and joining.
- Required states
- no permission
- selecting members
- creating
- created
- pending review
- joined
- code expired
Group messages and role management
Code-evidenced- Layout
- Role badges sit immediately beside the nickname. Management actions split into normal and destructive, with destructive ones requiring a second confirmation. The mention list is searchable and shows its target.
- Scope
- Group chat, mentions, announcements and member role actions.
- Required states
- member
- admin
- owner
- muted
- removed
- group dissolved
- permission changed
Group profile, notifications, leaving and dissolving
Code-evidenced- Layout
- A mobile settings-style list with members in a grid or horizontal preview. Leave and dissolve sit at the very end, styled distinctly from ordinary save actions.
- Scope
- Group information, membership changes, notifications and lifecycle.
- Required states
- editing
- insufficient permission
- saving
- all muted
- leave confirm
- dissolve confirm
- dissolved
Contact tags and broadcast history
Code-evidenced- Layout
- The tag list shows a member count and supports multi-select in management mode. The compose page pins the recipient count and preview to the top; history detail separates the content from the recipients.
- Scope
- Tag management, member organisation, sending and history.
- Required states
- no tags
- editing
- selecting friends
- awaiting confirmation
- sending
- partial success
- complete
App download and install guidance
Entry verified · not downloaded or installed- Layout
- Desktop offers both platform entries plus a QR code; mobile has one primary button with step illustrations. The download bar and the tab bar must never cover each other, and the dismiss control stays visible at all times.
- Scope
- The download page, QR codes, platform routing, add-to-home-screen and install help.
- Required states
- iOS
- Android
- desktop QR
- restricted browser
- link dead
- copy succeeded / failed
About, terms, privacy and generic content pages
Partly verified & code-evidenced- Layout
- Long-form reading pages use a clear heading hierarchy and real paragraphs, with a back control at the top on mobile. The document header carries its version. Never ship a legal document as an unsearchable image.
- Scope
- About, terms of service, privacy, generic web content and error pages.
- Required states
- normal
- version updated
- load failed
- document withdrawn
- external link restricted
Platform operations and supporting capability
Proposed · source back office not accessed- Layout
- The operations console may use its own admin styling. Do not force the front-of-house yellow-and-black sports identity onto dense management tables.
- Scope
- The operations and back-office boundary needed to make the front end real.
- Required states
- draft
- pending publish
- published
- withdrawn
- rolled back
- data anomaly
Scan and QR recognition
Public route code-evidenced- Layout
- A centred scan frame, a back control, a permission explanation, and a result panel at the bottom. Personal and group codes share one quiet-zone treatment, and decoration never covers the finder patterns.
- Scope
- Personal codes, group codes and the general scan entry point.
- Required states
- awaiting permission
- scanning
- recognised
- invalid
- expired
- permission denied
- unsupported
Section 07
Key page structure
These are structural sketches. They are not source-site screenshots and not pixel-level designs.
DESKTOP — HOME ┌ Brand │ Home Scores Live Fixtures Data Video News App │ Account ┐ │ Hero carousel · Enter live room │ Thumbnails │ ├ Featured matches · horizontal cards ┤ ├ Now streaming See all → ┤ │ Live card Live card Live card Live card Live card │ ├ Popular anchors → Football → Basketball → Other ┤ └ About · Terms Download banner · dismissible ┘ DESKTOP — LIVE ROOM ┌ Both teams · Time · Score │ Anchor identity and follow ┐ │ Media area │ Chat │ DM │ │ Status layer and retry │ Message list │ │ │ Composer │ ├ Live data · 1X2 · Handicap · Over/Under │ Upcoming fixtures ┤ ├ Recommended streams and source disclosure ┤ MOBILE — LIVE ROOM ┌ Back Home Match information Add to home screen ┐ │ Media area │ ├ Chat │ Data │ Anchor │ Odds │ Analysis │ Streams │ DM ← scrolls ┤ │ Active tab content │ ├ Composer / actions + safe area ┤
Section 08
Motion, touch and accessibility
- Motion. Ordinary hover and state changes 150–200ms; drawers 200–250ms. A score change highlights briefly, never longer than one second. Respect the system reduce-motion setting.
- Touch targets. Every mobile tap target should be at least 44 × 44px. A close icon that is visually 16px still needs an expanded transparent hit area — do not take the icon size from a screenshot and use it as the touch target.
- Focus. Tab order follows reading order. Opening a dialog moves focus to its title or first field; closing returns focus to the trigger. Escape closes non-destructive transient layers.
- Semantics. Tabs use the tab role and declare selection; inputs have real labels; icon buttons have names. Loading and errors announce through appropriate status regions — do not announce every score tick.
- Carousels. Auto-advance must be pausable, and must stop on hover or when keyboard focus enters. The player must be exitable from every mode and must never trap the system back gesture.
- Tables and chat. Cells associate with their column headers. A chat bubble reads in the order sender, time, content, status. A QR code exposes its target as alternative text.
Section 09
Global states and copy
| State | Proposed copy | Interaction |
|---|---|---|
| Loading | Loading matches… | The skeleton matches the real structure — never show fake data |
| No fixtures | No matches on this date | Change date, or see all |
| No favourites | You haven't saved any matches yet | Go to scores |
| No follows | You aren't following any anchors yet | Discover anchors |
| Disconnected | Connection lost — reconnecting | Keep the last content and its update time |
| No stream | This stream can't be played right now | Retry, or pick another anchor |
| Session expired | Your session has expired. Please sign in again | Keep the current public page and any draft |
| Stale data | Updates are slow. Last updated at… | The timestamp comes from the data source |
| Message failed | Message not sent | Retry in the original bubble — never duplicate it |
| No permission | This account can't perform that action | Keep a way back — don't just surface a request error |
| Article error | This article can't be loaded right now | Retry, or back to news |
| Success | Following · Reminder set · Saved | The message must match what the server actually did |
| Destructive confirm | Once dissolved, members will stop receiving messages from this group | Name the group; separate cancel from confirm |
These are target strings, not a transcription of the source site. Some of its prompts are terse or ambiguous and should be normalised during implementation — particularly the "Crown" alias mode, the suspended-odds marker, profile character limits, and the wording around group actions.
Section 10
Design delivery and acceptance
Organise design files as Foundations, Components, Desktop, Mobile, States and Flows. Every module needs at minimum a default, empty, loading, error, signed-out and signed-in state plus its own specific states. Component variants must cover size, state, permission and content length — duplicated artboards are not a substitute for defined component states.
The hand-off to engineering includes:
- Color, type and spacing variables
- Grid and breakpoints
- Component variants
- Media aspect ratios
- Table column-width strategy
- Exception states
- Permission notes and interaction return paths
Role-specific group management screens must be annotated separately from the ordinary member screens.
Acceptance coverage
Verify at 360, 390, 430, 768, 1024, 1440 and 1920px, and against: long team names, two-digit stoppage time, overtime periods, emoji nicknames, three feedback images, very long messages, mixed Chinese and English, and masked phone numbers. A defect in the source site is not a correct acceptance result for a rebuild.
This delivery is the specification and the PRD. It does not include an editable high-fidelity Figma file. Any subsequent artboards must work through the module and state list item by item — not just the home page and the live room.
Section 11
Evidence sources
Captured screens show the real structure of the source interface. Matches, artwork and copy in them are dynamic reference content. Images that failed to load, and content hidden behind an overlay, cannot be reconstructed from these captures.
| ID | Source | What it evidences |
|---|---|---|
| D01 | Desktop home | Carousel, featured matches, anchors, sections, download overlay |
| D04 | Desktop football scores | Table, filters, display settings, legend |
| D05 | Desktop basketball scores | Period table and odds |
| D06 | Desktop fixtures | Categories, dates, anchors, reminder entry |
| D11 | Desktop account dialog | Sign-in, SMS, registration and recovery fields |
| H01 | Mobile home | Mobile UA, search, recommendations, five-item tab bar |
| H06 | Mobile data | Leagues, seasons, football and basketball rankings |
| H10 | Mobile search | Hot terms, search tabs, no-results state |
| S03 | Mobile public routes and chunk index | 65 public page chunks with their paths |
| C01 | Desktop shared stylesheet | Brand color, container, navigation, dialog |
| C02 | Desktop home stylesheet | Home flex container, cards and spacing |