$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*24rpx;', '(?s)\.settings-field-error\s*\{[^}]*font-size:\s*24rpx;[^}]*line-height:\s*34rpx;', '(?s)\.visibility-block__hint\s*\{[^}]*font-size:\s*22rpx;', '(?s)\.visibility-option text\s*\{[^}]*font-size:\s*24rpx;' )) { if ($g11 -notmatch $rule) { throw "G11 readable visual rule missing: $rule" } } foreach ($rule in @( '(?s)\.poem-list__copy\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.poem-row__number\s*\{[^}]*font-size:\s*23rpx;', '(?s)\.poem-row__status\s*\{[^}]*font-size:\s*22rpx;', '(?s)\.poem-field-error\s*\{[^}]*font-size:\s*24rpx;[^}]*line-height:\s*34rpx;', '(?s)\.poem-policy > text\s*\{[^}]*font-size:\s*24rpx;', '(?s)\.poem-preview\s*\{[^}]*font-size:\s*23rpx;' )) { if ($g12 -notmatch $rule) { throw "G12 readable visual rule missing: $rule" } } Write-Output 'G11-G12-ALL-STATES-VISUAL-CONTRACT PASS'