1d0fdcc013
Root cause: PageLayout's flex-direction: column + gap was not counted in flex: 1 height calculations, causing children to overflow and trigger scroll. Solution: Convert PageLayout from flexbox to CSS Grid with explicit grid-template-rows. Grid automatically accounts for gaps in row sizing. Changes: - PageLayout.vue: display: flex → display: grid - grid-template-rows: auto auto auto auto 1fr auto auto - .ks-page__content/.ks-page__aside: height: 100% → flex: 1 - .ks-page__workspace: removed flex: 1 (grid cell, not flex) Impact: - models-master fits viewport without page-level scroll ✓ - All screen-types layouts auto-fit with correct height propagation - Fix applies to all pages using PageLayout AGENTS.md v16.0: Added Layout Rule #7 (PageLayout grid requirement) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>