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.