$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $profile = Get-Content -LiteralPath (Join-Path $root 'pages/tree/t03-member-profile.vue') -Raw -Encoding utf8 $form = Get-Content -LiteralPath (Join-Path $root 'components/tree/TreeMemberForm.vue') -Raw -Encoding utf8 foreach ($rule in @( '(?s)\.member-heading > view:last-child text:last-child\s*\{[^}]*font-size:\s*23rpx;', '(?s)\.member-section-title\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.member-info-row text\s*\{[^}]*font-size:\s*23rpx;', '(?s)\.member-relatives\s*\{[^}]*font-size:\s*23rpx;', '(?s)\.member-error > text:nth-child\(2\)\s*\{[^}]*font-size:\s*24rpx;' )) { if ($profile -notmatch $rule) { throw "T03 readable visual rule missing: $rule" } } foreach ($rule in @( '(?s)\.member-form__copy\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.member-field > text\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.member-field input\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.member-form__note\s*\{[^}]*font-size:\s*22rpx;' )) { if ($form -notmatch $rule) { throw "T04-T06 readable visual rule missing: $rule" } } Write-Output 'T03-T06-ALL-STATES-VISUAL-CONTRACT PASS'