click a card to isolate its arrows · click again or click empty space to clearThe Southerly · mini program navigation map21 screens · one designed overlay (sign-in sheet) · CONTACT uses the WeChat native sheet · build 0.6.3 · generated 2026-11-10 · every edge is a real handler in the page JSnormal flowstate / edge caseback / dismissoverlaySEASON GATE (server)/product → quota_left · sold_outevery entry routes on these fields · click to cycle
01 HOME
Design
Hero video / image, ENTER, bottom nav
02 MENU
Design
4 big items; CONTACT opens WeChat's own sheet
06 STORY
Design
Long read, CTA at the end
07 INGREDIENT
Design
pages/content/content?slug=ingredient
menu item #4
08 FLAVOURS
Design
pages/content/content?slug=flavours
menu item #3
09 SIGN IN
Fallback only
No longer routed; app.goSignIn() fallback
LOGIN SHEET
Overlay
Global overlay — opens on menu
account
orders
checkout
join
I agree to Terms / Privacy
04 MEMBERS CLUB
Design
Stock line fixed at 2,500
05 BECOME A MEMBER
Design
Anon OK; sheet on submit / phone tap
03 PRODUCT
Design
Pack of 5, quantity stepper
14 CHECKOUT
Wireframe
Address, payment, 15-min hold
15 THANK YOU
Design
Order id, view order, back home
18 ALREADY ORDERED
Built
quota_left = 0 this season
16 SOLD OUT
Built
Season sold out / registration closed
17 MY ADDRESSES
Wireframe
Max 3, delete keeps one default
19 ADDRESS EDIT
App screenshot
?id= edit
no id = new
SAVE + CANCEL
13 ORDER DETAIL
Wireframe
Status, items, address, BACK HOME
10 MY ACCOUNT
Wireframe
Sheet if no token; CONTACT opens WeChat
11 MY DETAILS
Wireframe
SAVE pinned to the 148rpx baseline
12 MY ORDERS
Wireframe
List → detail
20 TERMS
App screenshot
WP page 21
menu footer + sign-in sheet
21 PRIVACY
App screenshot
WP page 22
same entries
Rules in force (build 0.6.3)· Identity: openid is the account key. onLaunch does no silent login — the sheet opens on SIGN IN, /auth/probe is read-only and creates no account.· Season gate: /product returns quota_left + sold_out; every entry (04, 05, 03, 14) routes to 18 / 16 from those fields, never re-computes on the client.· Quota is counted live from pending / on-hold / processing / completed orders — cancelling or deleting restores it, no hooks needed.· One title spec everywhere: 70.6rpx / 64.9rpx / -5.65rpx, uppercase, natural wrapping, no scale stretch.· One button spec: black fill default in app.wxss (.btn, .cta), only the HOME ENTER is transparent; label weight 400.· Primary CTA baseline: bottom = 148rpx + safe area (nav 108 + 40); pages without the bottom nav use 40rpx + safe.· Primary/secondary pair = the sign-in sheet shape: full-width black button plus an underlined link 26rpx below.· Menu is static one screen (disableScroll); on screens shorter than 730px the secondary links become two columns.· Contact = a real button[open-type=contact] (menu link and account row); the old transparent overlay broke on the second tap.· Legal pages live in WP (posts 21 / 22) and are reachable from the menu footer and from the sign-in sheet.