$ErrorActionPreference = 'Stop' $root = Split-Path -Parent $PSScriptRoot $g11 = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g11-genealogy-settings.vue') -Raw -Encoding utf8 $g12 = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g12-generation-poems.vue') -Raw -Encoding utf8 foreach ($rule in @( '(?s)\.settings-form__copy,\s*\.settings-result__copy\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);', '(?s)\.settings-field-error\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);[^}]*line-height:\s*max\(1.35em, clamp\(19px, 34rpx, 24px\)\);', '(?s)\.visibility-block__hint\s*\{[^}]*font-size:\s*clamp\(14px, 22rpx, 17px\);', '(?s)\.visibility-option text\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);' )) { if ($g11 -notmatch $rule) { throw "G11 readable visual rule missing: $rule" } } foreach ($rule in @( '(?s)\.poem-list__copy\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);', '(?s)\.poem-row__number\s*\{[^}]*font-size:\s*clamp\(14px, 23rpx, 17px\);', '(?s)\.poem-row__status\s*\{[^}]*font-size:\s*clamp\(14px, 22rpx, 17px\);', '(?s)\.poem-field-error\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);[^}]*line-height:\s*max\(1.35em, clamp\(19px, 34rpx, 24px\)\);', '(?s)\.poem-policy > text\s*\{[^}]*font-size:\s*clamp\(15px, 24rpx, 18px\);', '(?s)\.poem-preview\s*\{[^}]*font-size:\s*clamp\(14px, 23rpx, 17px\);' )) { if ($g12 -notmatch $rule) { throw "G12 readable visual rule missing: $rule" } } Write-Output 'G11-G12-ALL-STATES-VISUAL-CONTRACT PASS'