Design now provides mobile designs (Vyndr Mobile.dc.html, 5 screens at 390×844). Captured as specs/design-reference/MOBILE-SPEC.md — the buildable distillation (the raw dc-runtime HTML needs React to render; the design project holds the verbatim source). I'm now IMPLEMENTING Design's mobile, not inferring it. RECONCILE of the already-shipped M1a against Design's mobile: - EKG hidden <768px — Design AGREES (mobile app bar carries no EKG). KEPT. - .vbtn 44px tap target — Design AGREES (buttons are 44/46px). KEPT. - .m-hero generic clamp — CONFLICT. Design uses CONTEXT-SPECIFIC hero sizes (74px grade tier / 40px live tier / 24px /u stats), not one clamp, and nothing consumed the class. REMOVED; the specific sizes land per-surface in M1b. - Mobile HEADER shape — Design OVERRIDES: mobile is an app bar (logo + sync clock) + a breadth strip + a bottom wire, NOT the collapsed heartbeat bar. The EKG-drop is a compatible interim step; the full app-bar recomposition is M1b (the board/shell surface). Flagged in the CSS + MOBILE-SPEC. Built to Design's mobile spec, VISUALLY UNVERIFIED at 390px (Chrome audit is eyes). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
7.5 KiB
VYNDR MOBILE — Design's authoritative 390×844 spec
Distilled from Vyndr Mobile.dc.html (claude.ai/design project 370ba6df, "Vyndr Mobile.dc.html"). Design DREW mobile — build to THIS, don't infer from principles. The raw dc-runtime HTML lives in the design project (it needs React/support.js to render, so this faithful distillation is the buildable reference). Tokens unchanged (green #00D4A0, miss #FF4757, amber #FFB347, text #F0F0F0/#B8BCC8/#707080/#4a4a58, bg #06060B/#0A0A10/#0E0E14/#14141E).
Design's one line: "Same tokens, same ranked density, same earned motion — recomposed for thumbs. Tab bar owns navigation; one hero per screen survives the shrink."
GLOBAL MOBILE HEADER — an APP BAR, not the desktop header stack
The desktop Nav + Ticker + HeartbeatBar does NOT carry to mobile. Design replaces it with a compact app bar (one row):
- Left: 24px logo mark +
VYND⟨R green⟩wordmark (mono, 14px, .26em, glitch 6.5s). - Right: a small green sync dot (pulse) + sync clock
HH:MM:SS(mono, 10px, #B8BCC8). - 10px vertical padding,
border-bottom:1px solid #14141E. NO EKG, NO ticker, NO "SIGNAL LIVE · N graded · SYNC" here. The live "wire"/ticker is moved to the BOTTOM of the board (above the tab bar), and the market breadth is its own strip below the app bar. So the header is genuinely one clean line.
GLOBAL — BOTTOM TAB BAR (5 tabs)
Design's tabs: BOARD · STREAKS · BUILD · LEDGER · /u. Icons 20px, labels mono 7.5px .12em, active = green (#00D4A0), inactive = #707080. NOTE the delta vs the live app (Slate/Explore/Scan/Ledger/More): Design has no separate Scan tab or raised FAB — "BUILD" is the slip. This is a nav-structure decision to confirm with Kev before changing (Scan-5 is monetization-critical) — flagged, not auto-applied.
SCREEN 01 · TERMINAL (the board / dashboard-slate) — the anchor surface
Stack, top→bottom, full 390 width:
- App bar (above).
- Breadth strip:
EDGES 14 · AVG CLV +2.8% · 47 GAMES— mono 9.5px labels (#707080), values bold (edges #F0F0F0, CLV green), GAMES pushed right (margin-left:auto). border-bottom. - EDGE BOARD header row:
EDGE BOARD(mono 10px .24em bold) + sort chipEDGE ▼(mono 8.5px #707080). - Ranked rows — THE core mobile grammar. Each row:
[rank] [name + prop | sport·matchup] [grade chip] [edge%],padding:11px 16px,border-top:1px solid #101018:- rank: mono 10px, 16px wide; #1 is green, rest #707080.
- identity: name 13px 700 +
o27.5 PTSin #B8BCC8 500; sub-line mono 8px .1em #707080 =NBA · DEN @ MIN(green if LIVE, with a live-dot before the name). - grade chip: mono 10px 800, 17px tall,
padding:0 6px, tier-colored (A+/A green tint+green border, B#14141E/#F0F0F0, D red tint+red border). - edge%: mono 12px 700, 48px right-aligned, green if +, #FF4757 if − (the one hero figure per row).
- RANKING VISIBLE VIA OPACITY: rows fade down the list — 01/02 full, 03 (live), 04
.85, 05.7, 06.55. Top edges carry a green left inset border (box-shadow:inset 2px 0 0 rgba(0,212,160,.55)for #1,.4for #3).
- WIRE (the ticker, relocated to bottom):
WIRElabel (green 8px .22em 800) + one scrolling line (mono 9.5px #B8BCC8, ellipsis), on#08080D, border-top. Cycles STEAM/LIVE/FLAG/FADE every 6s. - Tab bar (above).
SCREEN 02 · GRADE REVEAL
Header: ◂ BOARD (11px #B8BCC8) + CLV-VERIFIED (9px .2em green). Body padding:22px 18px:
DECLASSIFIED · TOP GRADE(mono 9.5px .26em #707080).- Hero row: giant
A+(mono 74px, .82 line, green,text-shadow:0 0 30px rgba(0,212,160,.5)) +TIERlabel under it; beside it the identity block — team monogram chip (34px, team-gradient),Nikola Jokić14.5px 700,C · DEN · CONFIRMED(mono 9px, CONFIRMED in #B8BCC8),Over 27.5 Points14px, thenDK -114 ▲ opened 25.5(mono 10px, ▲ green). - Line-movement sparkline: full-width SVG polyline (green, area fill), with
OPEN 25.5 · STEAM ▲ · NOW 27.5under it (8px, STEAM green). - 3-col stat grid (1px gaps on #1E1E2A, radius 10):
EDGE +8.4%(green),L10 HIT 8/10,PROJ 30.8— labels mono 8.5px .16em #707080, values mono 17px 800. - VYNDR INTELLIGENCE box (
#0A0A10, border #14141E): dot + label (mono 8.5px .22em #B8BCC8), then a prose sentence 12px #B8BCC8 with mono/green emphasis on the numbers + archetype name. - Buttons:
SHARE THE READ(green fill, 46px, mono 11.5px 800) +ADD TO SLIP(outline #2A2A38, 44px).
SCREEN 03 · BUILD (parlay slip)
Header PARLAY SLIP + 2 LEGS. Body padding:14px 16px:
- Leg rows: green check chip (20px) +
Jokić o27.5 PTS13.5px +NBA · DEN @ MINmono 8.5px + grade chip + american odds (+105). Cardrgba(0,212,160,.05), border #1E1E2A, green left inset border, radius 12. - SAME-GAME CORRELATION warning (amber): triangle icon +
SAME-GAME CORRELATION(8.5px amber 700) + explanation (mono 9.5px #B8BCC8) onrgba(255,179,71,.08)border amber. - 3-col:
COMBINED +371(#F0F0F0) ·GRADE A-(amber) ·STAKE 0.4u(amber). - ADD FROM TONIGHT'S A/B READS: empty-checkbox rows (Skenes/Judge, #B8BCC8, odds).
- Footer button
TRACK SLIP · 0.4u(green fill 46px).
SCREEN 04 · LOCK SCREEN · LIVE ACTIVITY (iOS-native concept — ASPIRATIONAL)
An iOS lock screen: dynamic-island pill (Edwards A ●), 76px clock, a Live Activity card (VYNDR + LIVE · Q3 4:12, 40px live A, Edwards o5.5 AST, 4 AST · pacing ▲ · usage +6%, a 6-seg progress bar 4 OF 6 · NEEDS 2 · 16 MIN LEFT), + a STEAM ALERT notification. Closing line THE TERMINAL WATCHES WHILE YOU DON'T. This is a native iOS Live Activity / push concept, NOT a web surface — treat as product-vision, not an M1b web build. The web analog is the in-app live tracker (already exists, StatStrip.LiveTracker); flag the Live Activity as a native/PWA-push future.
SCREEN 05 · /u RECORD (the shareable profile)
Body padding:18px:
- Identity: 54px green-gradient monogram
EH+@edgehunter17px 800 +CLV-VERIFIEDbadge (green, dot) +412 graded(mono 9px #707080). - 2×2 stat grid (1px gaps #14141E, radius 12, cells #0C0C12):
HIT RATE 64.2%(green) ·UNITS +38.6u(green) ·ROI +11.4%(#F0F0F0) ·AVG CLV +3.1%(#F0F0F0). Labels mono 8.5px .16em; values mono 24px 800 .9 line. - GRADE HISTORY · L18 with HIT/MISS legend (green/red squares); a 6-col grid of grade cells (aspect-1, tinted by hit/miss, grade letter colored by tier).
- ARCHETYPE FINGERPRINT: labeled bars —
TORCH 32%(#FF6B4A),BOMBER 24%(#FF9F45),ALPHA 18%(#7C5CFF) — name+% row over a 5px track with a colored fill. - Footer
SHARE MY RECORD(green fill 46px).
MOTION (mobile) — unchanged discipline
sync-dot pulse (1.4s), live-dot (1.5s) only on genuinely-live rows, wire cycles 6s, data-react values flash green-up/red-down on change (3s demo cadence). Glitch ONLY on the wordmark. Data never glitches.
RECONCILE NOTES vs M1a (2026-07-16)
- EKG hidden <768px → Design AGREES (no EKG on mobile). KEEP.
.vbtn44–46px tap target → Design AGREES (buttons are 44/46px). KEEP.- M1a kept a collapsed heartbeat BAR on mobile → Design OVERRIDES: mobile has an app bar (logo + sync clock) + a separate breadth strip + a bottom wire, NOT the heartbeat bar. The full mobile-header recomposition is an M1b task (the board/shell surface).
.m-herogeneric clamp(28–56px) → Design uses CONTEXT-SPECIFIC hero sizes (74px grade tier, 40px live tier, 24px /u stats). The generic clamp doesn't match and nothing consumed it → REMOVE.m-hero; apply Design's specific sizes per surface in M1b.