# M46 MVP UI Consistency — Baseline Inventory ## Evidence identity - M46 activation source: `a10b3d2b52ecc12415d32ff0cd4cecf6e9a7c41c` - Runtime comparison source: `b40e5dd12b2470d3ee47102d2a9c95804684ade7` - Scope: normal `100%` landscape at `760x360`, `844x390` and `1280x720`, `zh_CN` and `en`; `130%` is supplemental and non-blocking. - Existing runtime references: M31 MVP normal-render audit, M41 Market View audit, M43 Guild View audit, M44 Company View audit and M45 Contract Return audit. No product/runtime code changed for this baseline. ## Current component inventory | Area | Current implementation | Baseline finding | | --- | --- | --- | | Page boundary | 14 MVP `PageView` classes inherit `ABGPageView` | Shared ownership boundary is present | | Command buttons | Eight Views use `make_company_button()` / `ABGEntryChrome`; six Views construct local `Button` + `StyleBoxFlat` controls | Semantic variants exist, but visual implementation is split | | Frames | `initial_company_scene_frame`, `content_scene_frame`, Guild rails, Market/Risk static masters and Battle HUD | Page-family composition is intentionally different; frame primitives are not fully shared | | Typography | Base `make_label()` uses `NotoSansSC`; Market, Guild, Party, Readiness and Risk each add local size helpers | Font family is shared, scale/spacing tokens can drift | | Icons | `ABGEntryChrome` draws owned icons; Market/Risk and some legacy paths still use Unicode glyphs or local textures | Icon family is mixed | | Shared foundation | `ABGUI_Tokens`, `ABGSharedButton`, `P91Widgets` exist | `ABGSharedButton`/tokens are not yet the runtime source for most MVP controls; `P91Widgets` is historical | | Legacy entry pages | Title, Initial Company, Settings, Dismissal and Equipment retain EntryShell builders | They share some helpers but are not on the same passive-View factory path | ## Page-family review - **Company / Result / Recovery family**: strongest consistency. Angular navy/gold/ivory command chrome, shared back/primary/secondary semantics and matching framed composition. - **Guild family**: approved illustrated desk, top/bottom rails and circular destination medallions. The composition is intentionally unique but should reuse the same semantic icon and state language. - **Market / Recruit family**: accepted static masters and field-attached controls. The master is correct, but rounded custom buttons, tiny local text scales and Unicode badges diverge from the shared command chrome. - **Party / Readiness family**: shared field/line grammar and palette, with local command styles and local text-size helpers. - **Risk family**: parchment/card composition is intentional; command and status styling still needs to align with the global focus, disabled and icon grammar. - **Battle family**: field HUD is intentionally specialized. Result, Knockout, Reward and Recovery should remain aligned with the Company command family rather than inherit the live HUD geometry. ## Baseline verdict The MVP currently has a coherent visual identity but not one reusable UI skin. The earliest repair boundary is **cross-page command/icon/type consistency**, not gameplay, routing, Save/Receipt behavior or page composition. M46-B may therefore add shared presentation primitives; M46-C must migrate only the repeated controls and preserve all frozen hit rectangles, node names and explicit intents. ## Frozen invariants - No gameplay, economy, content, localization semantics, Save/Receipt or route changes. - No static-master repaint, asset generation or pixel-art treatment. - No mass `entry_shell.gd` rewrite or full Router extraction. - Normal `100%` remains the blocking scope; `130%` remains supplemental. - `.uid`, `.import` and `prototype_incremental/` remain untouched.