TTKQ · Interface Standards Design tokens, components and screen layout rules

Version
v1.0
Evidence date
2026-09-05
Desktop capture
1440 × 1000
Mobile capture
390 × 844
Companion
Functional PRD

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:

TierWhat it assertsWhat 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

TokenValueEvidenceUse
brand.primary#FFC927Measured C01 H06Navigation, active buttons, icons
text.primary#181818Measured C01Headings, navigation, primary labels
text.body#2C3E50Measured DOMDesktop body default
text.secondary#4F5A70Measured H5 searchSupporting labels
text.muted#999999Measured C01"See all", secondary information
surface.base#FFFFFFMeasuredCards, tables, forms
surface.mobileNav#F3F3F5Measured H06Mobile bottom bar
surface.search#F6F6F6Measured H06Mobile search field ground
match.gradient#FDD81D → #FFEA7DMeasured C02Featured match card header
score.live#FF0000Screenshot & style clueLive score on the source site — converge on the semantic colors below
semantic.danger#D9363EProposedErrors, destructive actions, optional score emphasis
semantic.success#237A3BProposedSuccess, healthy connection
semantic.warning#9A6700ProposedStale data, incomplete state
semantic.info#245DA8ProposedExplanatory links, status information
border.default#E8E8E8ProposedCard and table separation
surface.canvas#F6F6F8ProposedGeneral light page ground
overlay.maskrgba(0,0,0,0.65)ProposedModal scrim
radius.card8pxMeasured C02Featured match card
radius.modal10pxMeasured C01Sign-in dialog
radius.search17pxMeasured H0635px mobile search field
shadow.card0 1px 6px rgba(0,0,0,0.1)Measured C02Match card
spacing.scale4 8 12 16 20 24 32 40 48 64pxProposedOne 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

RoleSize / weightLine heightNotes
Desktop body14px / 400 measured21px measuredMicrosoft YaHei first; system CJK fallback
Desktop section title24px / 700 measured32px proposedPairs with the main column rule
Desktop "see all"16px measured24px proposedGrey on the source site — raise until it is legible
Mobile search helper13px measured20px proposedField is 35px tall
Mobile league, active18px measured26px proposedRegular leagues may sit at 16px
Mobile tab bar label11px measured16px proposedIcon plus text; target is 12px
Article body16px proposed1.7 proposedNever set long-form in score-table small text
Primary score24–36px proposed1.15 proposedDigits use tabular-nums so they do not jitter
Table numerals12–14px proposed18–22px proposedBelow 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

ContextMeasured / observed on sourceTarget requirement
Desktop generalFixed 1200px container, 65px header, 42px logoFull layout at ≥1280px; below that, a stated adaptation
Desktop homeInner width 68.44%, min 729px, max 1324pxHome media area may be fluid — do not apply this to score tables
Desktop live cardFive columns, each 20% with 10px side paddingConsistent cover ratio; footer information never overlaps
Desktop live room≈900px media plus 291px chatWhen width is short, chat moves below — never squeezed to unreadable
Mobile header50px; search 35px tall, 17px radius12px side padding proposed; respect the safe area
Mobile bottom bar57px, five equal items, ground #F3F3F5Add the safe area on top; the keyboard must not cover the input bar
Mobile cardsTwo-column live, single-column fixturesVerify 360–430px; 12px side margin and 12px gutter proposed
TabletNo dedicated source styling was measuredNew 768–1199px: three-column live, statistics tables scroll horizontally
Ultra-wideHome has a maximum widthDo 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.

IDComponentSize baselineStatesInteraction rulesModules
C01Desktop header65px tall, 1200px innerDefault, active, dropdown, hover, signed-inSticky on scroll; 42px brand mark; the score dropdown must open by click and keyboardM01
C02Mobile top bar50px tall, 35px searchHome, detail, search, backSide icons must not squeeze the input; long queries truncateM01 M20
C03Mobile tab bar57px plus safe areaFive items selected, unread, HOTFive equal widths; icon plus text; pages reserve equal bottom spaceM01 M27
C04Live cover card5-col desktop, 2-col mobile, ≈16:9Live, ended, image error, hoverTitle, anchor and heat never overlap; heat format consistent per platformM02 M03 M17
C05Featured match card8px radius, 46px header on desktopPre-match, in play, finishedLeague and time in the header; one row per side; crest and score hold fixed positionsM02
C06Anchor card & avatar40px in lists, 64px largeFollowing, not following, live, offlineAvatar clipped to a circle; names support emoji; the account ID never truncatesM06 M21 M25
C07Tabs and categories≈50px desktop row, ≥40px mobile targetActive, default, disabled, overflowNever distinguish by color alone; long lists scroll sideways; category selection persistsM03 M10 M15
C08Football score row≈54px desktop rowPre-match, half time, stoppage, finished, cancelledScores align; cards sit beside the team name; icons carry a text hintM10
C09Basketball score groupTwo team rows plus period columnsBy period, overtime, pre-matchBoth sides share column widths; the differential keeps its sign; overtime can extendM11
C10Competition filter overlay640–800px wide, ≤70vhSelect all, invert, draft, appliedActions pinned to the bottom; body scrolls inside; cancel restores the previous selectionM12
C11Settings drawerMobile bottom sheet, ≤80vhRadio, switch, disabledEvery setting is named; either offer cancel and confirm, or state that it applies immediatelyM12
C12Date strip5 days desktop, more either side on mobileToday, selected, no fixturesShow date and weekday together; localise across month and year boundaries; never hard-code datesM10 M14
C13Statistics & standings tablePinned identity column, numbers right or centreNo data, sorted, points deduction, tieDecimal places configured per metric; unknown is an em dash; the header stays visible while scrollingM06 M09 M15
C14Odds tableBookmaker column plus opening/current pairsUp, down, suspended, emptyCompare within one bookmaker row; color plus arrow; timestamps explicitM07
C15Player status layerDesktop media area, full width on mobileLoading, buffering, blocked, error, offlineThe status layer stays operable; failures offer retry; never obstruct exiting full screenM04 M17
C16Message bubble & row14–16px bodySending, unread, read, failed, recalledLinks are recognisable; system messages use a distinct ground; long text wrapsM05 M29 M31
C17Message composer44px min, 120px maxDefault, keyboard, emoji, attachment, mutedSend is its own control; drafts persist; the soft keyboard never covers the inputM05 M29 M33
C18Account form424px desktop dialog, single column mobileError, focus, countdown, submittingLabels must not live only in the placeholder; password reveal is optional but availableM22 M24
C19Image uploader≤2MB desktop, ≤3 images mobile feedbackUploading, success, failed, over limitFilename, progress or thumbnail feedback; delete stays reachable; client and server validation matchM19 M23 M26
C20Confirmation dialog400–480px desktop, viewport minus 32px mobileNormal, destructive, permission changeName the object and the consequence; cancel is de-emphasised; never pre-select the destructive actionM24 M31 M32
C21QR card & scanner frameCode ≥200px with quiet zoneValid, expired, invalid, unauthorisedNever crop the code; show its type and target; saving gives feedbackM23 M30 M37
C22Empty & error states14–16px primary textLoading, empty, offline, permission, no moreDistinguish "no content" from "load failed"; every error offers a real next stepAll
C23Article & comments16px body, 1.7 line heightNormal, unavailable, no comments, in reviewControl the reading measure; replies indent one level; time, author and source are clearM19 M35
C24Download bar & promo layerDesktop banner, mobile floating barShown, dismissed, QR, platform variantNever covers the tab bar or the player; frequency-capped per session after dismissalM02 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.

M01

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
M02

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
M03

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
M04

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
M05

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
M06

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
M07

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
M08

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
M09

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
M10

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
M11

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
M12

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
M13

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
M14

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
M15

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
M16

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
M17

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
M18

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
M19

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
M20

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
M21

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
M22

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
M23

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
M24

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
M25

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
M26

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
M27

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
M28

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
M29

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
M30

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
M31

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
M32

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
M33

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
M34

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
M35

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
M36

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
M37

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

StateProposed copyInteraction
LoadingLoading matches…The skeleton matches the real structure — never show fake data
No fixturesNo matches on this dateChange date, or see all
No favouritesYou haven't saved any matches yetGo to scores
No followsYou aren't following any anchors yetDiscover anchors
DisconnectedConnection lost — reconnectingKeep the last content and its update time
No streamThis stream can't be played right nowRetry, or pick another anchor
Session expiredYour session has expired. Please sign in againKeep the current public page and any draft
Stale dataUpdates are slow. Last updated at…The timestamp comes from the data source
Message failedMessage not sentRetry in the original bubble — never duplicate it
No permissionThis account can't perform that actionKeep a way back — don't just surface a request error
Article errorThis article can't be loaded right nowRetry, or back to news
SuccessFollowing · Reminder set · SavedThe message must match what the server actually did
Destructive confirmOnce dissolved, members will stop receiving messages from this groupName 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.

IDSourceWhat it evidences
D01Desktop homeCarousel, featured matches, anchors, sections, download overlay
D04Desktop football scoresTable, filters, display settings, legend
D05Desktop basketball scoresPeriod table and odds
D06Desktop fixturesCategories, dates, anchors, reminder entry
D11Desktop account dialogSign-in, SMS, registration and recovery fields
H01Mobile homeMobile UA, search, recommendations, five-item tab bar
H06Mobile dataLeagues, seasons, football and basketball rankings
H10Mobile searchHot terms, search tabs, no-results state
S03Mobile public routes and chunk index65 public page chunks with their paths
C01Desktop shared stylesheetBrand color, container, navigation, dialog
C02Desktop home stylesheetHome flex container, cards and spacing