$ErrorActionPreference = 'Stop'
$root = Split-Path -Parent $PSScriptRoot
$page = Get-Content -LiteralPath (Join-Path $root 'pages/genealogy/g08-join-application.vue') -Raw -Encoding utf8
$style = [regex]::Match($page, '(?s)').Groups[1].Value
$positions = [regex]::Matches([regex]::Replace($style, '(?s)/\*.*?\*/', ''), '(?m)\bposition\s*:\s*([^;]+);')
if ($positions.Count -ne 0) { throw "G08 join flow must use document flow; found $($positions.Count) position declarations" }
foreach ($required in @(
'@include adaptive.adaptive-genealogy-state-panel;',
'@include adaptive.adaptive-genealogy-form-field;',
'background: url("/static/assets/foundation/transparent/a01-scroll-primary-v3.png")'
)) { if ($page -notmatch [regex]::Escape($required)) { throw "G08 is missing real asset background: $required" } }
if ($page -match 'class="join-panel__skin"') { throw 'G08 must not retain the decorative panel image layer' }
if ($page -notmatch '(?s)