@webability/core 1.16.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -382,7 +382,7 @@ See: https://github.com/dequelabs/axe-core/blob/master/doc/context.md`));}functi
382
382
  `).join(`
383
383
  `);return ce}}},incompleteFallbackMessage:"axe couldn't tell the reason. Time to break out the element inspector!"},rules:[{id:"accesskeys",impact:"serious",selector:"[accesskey]",excludeHidden:false,tags:["cat.keyboard","best-practice"],all:[],any:[],none:["accesskeys"]},{id:"area-alt",impact:"critical",selector:"map area[href]",excludeHidden:false,tags:["cat.text-alternatives","wcag2a","wcag244","wcag412","section508","section508.22.a","TTv5","TT6.a","EN-301-549","EN-9.2.4.4","EN-9.4.1.2","ACT","RGAAv4","RGAA-1.1.2"],actIds:["c487ae"],all:[],any:[{options:{attribute:"alt"},id:"non-empty-alt"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-allowed-attr",impact:"critical",matches:"aria-allowed-attr-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["5c01ea"],all:[{options:{validTreeRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]},id:"aria-allowed-attr"},"aria-allowed-attr-elm"],any:[],none:["aria-unsupported-attr"]},{id:"aria-allowed-role",impact:"minor",excludeHidden:false,selector:"[role]",matches:"aria-allowed-role-matches",tags:["cat.aria","best-practice"],all:[],any:[{options:{allowImplicit:true,ignoredTags:[]},id:"aria-allowed-role"}],none:[]},{id:"aria-braille-equivalent",reviewOnFail:true,impact:"serious",selector:"[aria-brailleroledescription], [aria-braillelabel]",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2"],all:["braille-roledescription-equivalent","braille-label-equivalent"],any:[],none:[]},{id:"aria-command-name",impact:"serious",selector:'[role="link"], [role="button"], [role="menuitem"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","TTv5","TT6.a","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.9.1"],actIds:["97a4e1"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-conditional-attr",impact:"serious",matches:"aria-allowed-attr-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["5c01ea"],all:[{options:{invalidTableRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]},id:"aria-conditional-attr"}],any:[],none:[]},{id:"aria-deprecated-role",impact:"minor",selector:"[role]",matches:"no-empty-role-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["674b10"],all:[],any:[],none:["deprecatedrole"]},{id:"aria-dialog-name",impact:"serious",selector:'[role="dialog"], [role="alertdialog"]',matches:"no-naming-method-matches",tags:["cat.aria","best-practice"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-hidden-body",impact:"critical",selector:"body",excludeHidden:false,matches:"is-initiator-matches",tags:["cat.aria","wcag2a","wcag131","wcag412","EN-301-549","EN-9.1.3.1","EN-9.4.1.2","RGAAv4","RGAA-10.8.1"],all:[],any:["aria-hidden-body"],none:[]},{id:"aria-hidden-focus",impact:"serious",selector:'[aria-hidden="true"]',matches:"aria-hidden-focus-matches",excludeHidden:false,tags:["cat.name-role-value","wcag2a","wcag412","TTv5","TT6.a","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-10.8.1"],actIds:["6cfa84"],all:["focusable-modal-open","focusable-disabled","focusable-not-tabbable"],any:[],none:[]},{id:"aria-input-field-name",impact:"serious",selector:'[role="combobox"], [role="listbox"], [role="searchbox"], [role="slider"], [role="spinbutton"], [role="textbox"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","TTv5","TT5.c","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.1.1"],actIds:["e086e5"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["no-implicit-explicit-label"]},{id:"aria-meter-name",impact:"serious",selector:'[role="meter"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag111","EN-301-549","EN-9.1.1.1","RGAAv4","RGAA-11.1.1"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-progressbar-name",impact:"serious",selector:'[role="progressbar"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag111","EN-301-549","EN-9.1.1.1","RGAAv4","RGAA-11.1.1"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-prohibited-attr",impact:"serious",matches:"aria-allowed-attr-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["5c01ea"],all:[],any:[],none:[{options:{elementsAllowedAriaLabel:["applet","input"]},id:"aria-prohibited-attr"}]},{id:"aria-required-attr",impact:"critical",selector:"[role]",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["4e8ab6"],all:[],any:["aria-required-attr"],none:[]},{id:"aria-required-children",impact:"critical",selector:"[role]",matches:"aria-required-children-matches",tags:["cat.aria","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.1"],actIds:["bc4a75","ff89c9"],all:[],any:[{options:{reviewEmpty:["doc-bibliography","doc-endnotes","grid","list","listbox","menu","menubar","table","tablist","tree","treegrid","rowgroup"]},id:"aria-required-children"}],none:[]},{id:"aria-required-parent",impact:"critical",selector:"[role]",matches:"aria-required-parent-matches",tags:["cat.aria","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.1"],actIds:["ff89c9"],all:[],any:[{options:{ownGroupRoles:["listitem","treeitem"]},id:"aria-required-parent"}],none:[]},{id:"aria-roledescription",impact:"serious",selector:"[aria-roledescription]",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","deprecated"],enabled:false,all:[],any:[{options:{supportedRoles:["button","img","checkbox","radio","combobox","menuitemcheckbox","menuitemradio"]},id:"aria-roledescription"}],none:[]},{id:"aria-roles",impact:"critical",selector:"[role]",matches:"no-empty-role-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["674b10"],all:[],any:[],none:["invalidrole","abstractrole","unsupportedrole"]},{id:"aria-text",impact:"serious",selector:"[role=text]",tags:["cat.aria","best-practice"],all:[],any:["no-focusable-content"],none:[]},{id:"aria-toggle-field-name",impact:"serious",selector:'[role="checkbox"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="radio"], [role="switch"], [role="option"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","TTv5","TT5.c","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-7.1.1"],actIds:["e086e5"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["no-implicit-explicit-label"]},{id:"aria-tooltip-name",impact:"serious",selector:'[role="tooltip"]',matches:"no-naming-method-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-treeitem-name",impact:"serious",selector:'[role="treeitem"]',matches:"no-naming-method-matches",tags:["cat.aria","best-practice"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"aria-valid-attr-value",impact:"critical",matches:"aria-has-attr-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["6a7281"],all:[{options:[],id:"aria-valid-attr-value"},"aria-errormessage","aria-level"],any:[],none:[]},{id:"aria-valid-attr",impact:"critical",matches:"aria-has-attr-matches",tags:["cat.aria","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["5f99a7"],all:[],any:[{options:[],id:"aria-valid-attr"}],none:[]},{id:"audio-caption",impact:"critical",selector:"audio",enabled:false,excludeHidden:false,tags:["cat.time-and-media","wcag2a","wcag121","EN-301-549","EN-9.1.2.1","section508","section508.22.a","deprecated"],actIds:["2eb176","afb423"],all:[],any:[],none:["caption"]},{id:"autocomplete-valid",impact:"serious",matches:"autocomplete-matches",tags:["cat.forms","wcag21aa","wcag135","EN-301-549","EN-9.1.3.5","ACT","RGAAv4","RGAA-11.13.1"],actIds:["73f2c2"],all:[{options:{stateTerms:["none","false","true","disabled","enabled","undefined","null","xoff","xon"],ignoredValues:["text","pronouns","gender","message","content"]},id:"autocomplete-valid"}],any:[],none:[]},{id:"avoid-inline-spacing",impact:"serious",selector:"[style]",matches:"is-visible-on-screen-matches",tags:["cat.structure","wcag21aa","wcag1412","EN-301-549","EN-9.1.4.12","ACT"],actIds:["24afc2","9e45ec","78fd32"],all:[{options:{cssProperty:"letter-spacing",minValue:.12},id:"important-letter-spacing"},{options:{cssProperty:"word-spacing",minValue:.16},id:"important-word-spacing"},{options:{multiLineOnly:true,cssProperty:"line-height",minValue:1.5,normalValue:1},id:"important-line-height"}],any:[],none:[]},{id:"blink",impact:"serious",selector:"blink",excludeHidden:false,tags:["cat.time-and-media","wcag2a","wcag222","section508","section508.22.j","TTv5","TT2.b","EN-301-549","EN-9.2.2.2","RGAAv4","RGAA-13.8.1"],all:[],any:[],none:["is-on-screen"]},{id:"button-name",impact:"critical",selector:"button",matches:"no-explicit-name-required-matches",tags:["cat.name-role-value","wcag2a","wcag412","section508","section508.22.a","TTv5","TT6.a","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.9.1"],actIds:["97a4e1","m6b1q3"],all:[],any:["button-has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"implicit-label","explicit-label","presentational-role"],none:[]},{id:"bypass",impact:"serious",selector:"html:not(html *)",pageLevel:true,matches:"bypass-matches",reviewOnFail:true,tags:["cat.keyboard","wcag2a","wcag241","section508","section508.22.o","TTv5","TT9.a","EN-301-549","EN-9.2.4.1","RGAAv4","RGAA-12.7.1"],actIds:["cf77f2","047fe0","b40fd1","3e12e1","ye5d6e"],all:[],any:["internal-link-present",{options:{selector:":is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]"},id:"header-present"},{options:{selector:"main, [role=main]"},id:"landmark"}],none:[]},{id:"color-contrast-enhanced",impact:"serious",matches:"color-contrast-matches",excludeHidden:false,enabled:false,tags:["cat.color","wcag2aaa","wcag146","ACT"],actIds:["09o5cg"],all:[],any:[{options:{ignoreUnicode:true,ignoreLength:false,ignorePseudo:false,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:7,minThreshold:4.5},large:{expected:4.5,minThreshold:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.1,textStrokeEmMin:.03},id:"color-contrast-enhanced"}],none:[]},{id:"color-contrast",impact:"serious",matches:"color-contrast-matches",excludeHidden:false,tags:["cat.color","wcag2aa","wcag143","TTv5","TT13.c","EN-301-549","EN-9.1.4.3","ACT","RGAAv4","RGAA-3.2.1"],actIds:["afw4f7","09o5cg"],all:[],any:[{options:{ignoreUnicode:true,ignoreLength:false,ignorePseudo:false,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:4.5},large:{expected:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.2,textStrokeEmMin:.03},id:"color-contrast"}],none:[]},{id:"css-orientation-lock",impact:"serious",selector:"html:not(html *)",tags:["cat.structure","wcag134","wcag21aa","EN-301-549","EN-9.1.3.4","RGAAv4","RGAA-13.9.1","experimental"],actIds:["b33eff"],all:[{options:{degreeThreshold:2},id:"css-orientation-lock"}],any:[],none:[],preload:true},{id:"definition-list",impact:"serious",selector:"dl",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.3"],all:[],any:[],none:["structured-dlitems",{options:{validRoles:["definition","term","listitem"],validNodeNames:["dt","dd"],divGroups:true},id:"only-dlitems"}]},{id:"dlitem",impact:"serious",selector:"dd, dt",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.3"],all:[],any:["dlitem"],none:[]},{id:"document-title",impact:"serious",selector:"html:not(html *)",matches:"is-initiator-matches",tags:["cat.text-alternatives","wcag2a","wcag242","TTv5","TT12.a","EN-301-549","EN-9.2.4.2","ACT","RGAAv4","RGAA-8.5.1"],actIds:["2779a5"],all:[],any:["doc-has-title"],none:[]},{id:"duplicate-id-active",impact:"serious",selector:"[id]",matches:"duplicate-id-active-matches",excludeHidden:false,tags:["cat.parsing","wcag2a-obsolete","wcag411","deprecated"],enabled:false,actIds:["3ea0c8"],all:[],any:["duplicate-id-active"],none:[]},{id:"duplicate-id-aria",impact:"critical",selector:"[id]",matches:"duplicate-id-aria-matches",excludeHidden:false,tags:["cat.parsing","wcag2a","wcag412","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-8.2.1"],reviewOnFail:true,actIds:["3ea0c8"],all:[],any:["duplicate-id-aria"],none:[]},{id:"duplicate-id",impact:"minor",selector:"[id]",matches:"duplicate-id-misc-matches",excludeHidden:false,tags:["cat.parsing","wcag2a-obsolete","wcag411","deprecated"],enabled:false,actIds:["3ea0c8"],all:[],any:["duplicate-id"],none:[]},{id:"empty-heading",impact:"minor",selector:'h1, h2, h3, h4, h5, h6, [role="heading"]',matches:"heading-matches",tags:["cat.name-role-value","best-practice"],actIds:["ffd0e9"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"empty-table-header",impact:"minor",selector:'th:not([role]), [role="rowheader"], [role="columnheader"]',tags:["cat.name-role-value","best-practice"],all:[],any:["has-visible-text"],none:[]},{id:"focus-order-semantics",impact:"minor",selector:"div, h1, h2, h3, h4, h5, h6, [role=heading], p, span",matches:"inserted-into-focus-order-matches",tags:["cat.keyboard","best-practice","RGAAv4","RGAA-12.8.1","experimental"],all:[],any:[{options:[],id:"has-widget-role"},{options:{roles:["tooltip"]},id:"valid-scrollable-semantics"}],none:[]},{id:"form-field-multiple-labels",impact:"moderate",selector:"input, select, textarea",matches:"label-matches",tags:["cat.forms","wcag2a","wcag332","TTv5","TT5.c","EN-301-549","EN-9.3.3.2","RGAAv4","RGAA-11.2.1"],all:[],any:[],none:["multiple-label"]},{id:"frame-focusable-content",impact:"serious",selector:"html:not(html *)",matches:"frame-focusable-content-matches",tags:["cat.keyboard","wcag2a","wcag211","TTv5","TT4.a","EN-301-549","EN-9.2.1.1","RGAAv4","RGAA-7.3.2"],actIds:["akn7bn"],all:[],any:["frame-focusable-content"],none:[]},{id:"frame-tested",impact:"critical",selector:"html:not(html *), frame, iframe",tags:["cat.structure","best-practice","review-item"],all:[{options:{isViolation:false},id:"frame-tested"}],any:[],none:[]},{id:"frame-title-unique",impact:"serious",selector:"frame[title], iframe[title]",matches:"frame-title-has-text-matches",tags:["cat.text-alternatives","wcag2a","wcag412","TTv5","TT12.d","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-2.2.1"],actIds:["4b1c6c"],all:[],any:[],none:["unique-frame-title"],reviewOnFail:true},{id:"frame-title",impact:"serious",selector:"frame, iframe",matches:"no-negative-tabindex-matches",tags:["cat.text-alternatives","wcag2a","wcag412","section508","section508.22.i","TTv5","TT12.d","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-2.1.1"],actIds:["cae760"],all:[],any:[{options:{attribute:"title"},id:"non-empty-title"},"aria-label","aria-labelledby","presentational-role"],none:[]},{id:"heading-order",impact:"moderate",selector:"h1, h2, h3, h4, h5, h6, [role=heading]",matches:"heading-matches",tags:["cat.semantics","best-practice"],all:[],any:["heading-order"],none:[]},{id:"hidden-content",impact:"minor",selector:"*",excludeHidden:false,tags:["cat.structure","best-practice","experimental","review-item"],all:[],any:["hidden-content"],none:[]},{id:"html-has-lang",impact:"serious",selector:"html:not(html *)",matches:"is-initiator-matches",tags:["cat.language","wcag2a","wcag311","TTv5","TT11.a","EN-301-549","EN-9.3.1.1","ACT","RGAAv4","RGAA-8.3.1"],actIds:["b5c3f8"],all:[],any:[{options:{attributes:["lang","xml:lang"]},id:"has-lang"}],none:[]},{id:"html-lang-valid",impact:"serious",selector:'html[lang]:not([lang=""]):not(html *), html[xml\\:lang]:not([xml\\:lang=""]):not(html *)',tags:["cat.language","wcag2a","wcag311","TTv5","TT11.a","EN-301-549","EN-9.3.1.1","ACT","RGAAv4","RGAA-8.4.1"],actIds:["bf051a"],all:[],any:[],none:[{options:{attributes:["lang","xml:lang"]},id:"valid-lang"}]},{id:"html-xml-lang-mismatch",impact:"moderate",selector:"html[lang][xml\\:lang]:not(html *)",matches:"xml-lang-mismatch-matches",tags:["cat.language","wcag2a","wcag311","EN-301-549","EN-9.3.1.1","ACT","RGAAv4","RGAA-8.3.1"],actIds:["5b7ae0"],all:["xml-lang-mismatch"],any:[],none:[]},{id:"identical-links-same-purpose",impact:"minor",selector:'a[href], area[href], [role="link"]',excludeHidden:false,enabled:false,matches:"identical-links-same-purpose-matches",tags:["cat.semantics","wcag2aaa","wcag249"],actIds:["b20e66"],all:["identical-links-same-purpose"],any:[],none:[]},{id:"image-alt",impact:"critical",selector:"img",matches:"no-explicit-name-required-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","TTv5","TT7.a","TT7.b","EN-301-549","EN-9.1.1.1","ACT","RGAAv4","RGAA-1.1.1"],actIds:["23a2a8"],all:[],any:["has-alt","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:["alt-space-value"]},{id:"image-redundant-alt",impact:"minor",selector:"img",tags:["cat.text-alternatives","best-practice"],all:[],any:[],none:[{options:{parentSelector:"button, [role=button], a[href], p, li, td, th"},id:"duplicate-img-label"}]},{id:"input-button-name",impact:"critical",selector:'input[type="button"], input[type="submit"], input[type="reset"]',matches:"no-explicit-name-required-matches",tags:["cat.name-role-value","wcag2a","wcag412","section508","section508.22.a","TTv5","TT5.c","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.9.1"],actIds:["97a4e1"],all:[],any:["non-empty-if-present",{options:{attribute:"value"},id:"non-empty-value"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"implicit-label","explicit-label","presentational-role"],none:[]},{id:"input-image-alt",impact:"critical",selector:'input[type="image"]',matches:"no-explicit-name-required-matches",tags:["cat.text-alternatives","wcag2a","wcag111","wcag412","section508","section508.22.a","TTv5","TT7.a","EN-301-549","EN-9.1.1.1","EN-9.4.1.2","ACT","RGAAv4","RGAA-1.1.3"],actIds:["59796f"],all:[],any:[{options:{attribute:"alt"},id:"non-empty-alt"},"aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"implicit-label","explicit-label"],none:[]},{id:"label-content-name-mismatch",impact:"serious",matches:"label-content-name-mismatch-matches",tags:["cat.semantics","wcag21a","wcag253","EN-301-549","EN-9.2.5.3","RGAAv4","RGAA-6.1.5","experimental"],actIds:["2ee8b8"],all:[],any:[{options:{pixelThreshold:.1,occurrenceThreshold:3},id:"label-content-name-mismatch"}],none:[]},{id:"label-title-only",impact:"serious",selector:"input, select, textarea",matches:"label-matches",tags:["cat.forms","best-practice"],all:[],any:[],none:["title-only"]},{id:"label",impact:"critical",selector:"input, textarea",matches:"label-matches",tags:["cat.forms","wcag2a","wcag412","section508","section508.22.n","TTv5","TT5.c","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.1.1"],actIds:["e086e5"],all:[],any:["implicit-label","explicit-label","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},{options:{attribute:"placeholder"},id:"non-empty-placeholder"},"presentational-role"],none:["hidden-explicit-label"]},{id:"landmark-banner-is-top-level",impact:"moderate",selector:"header:not([role]), [role=banner]",matches:"landmark-has-body-context-matches",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-complementary-is-top-level",impact:"moderate",selector:"aside:not([role]), [role=complementary]",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-contentinfo-is-top-level",impact:"moderate",selector:"footer:not([role]), [role=contentinfo]",matches:"landmark-has-body-context-matches",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-main-is-top-level",impact:"moderate",selector:"main:not([role]), [role=main]",tags:["cat.semantics","best-practice"],all:[],any:["landmark-is-top-level"],none:[]},{id:"landmark-no-duplicate-banner",impact:"moderate",selector:"header:not([role]), [role=banner]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"header:not([role]), [role=banner]",role:"banner"},id:"page-no-duplicate-banner"}],none:[]},{id:"landmark-no-duplicate-contentinfo",impact:"moderate",selector:"footer:not([role]), [role=contentinfo]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"footer:not([role]), [role=contentinfo]",role:"contentinfo"},id:"page-no-duplicate-contentinfo"}],none:[]},{id:"landmark-no-duplicate-main",impact:"moderate",selector:"main:not([role]), [role=main]",tags:["cat.semantics","best-practice"],all:[],any:[{options:{selector:"main:not([role]), [role='main']"},id:"page-no-duplicate-main"}],none:[]},{id:"landmark-one-main",impact:"moderate",selector:"html:not(html *)",tags:["cat.semantics","best-practice"],all:[{options:{selector:"main:not([role]), [role='main']",passForModal:true},id:"page-has-main"}],any:[],none:[]},{id:"landmark-unique",impact:"moderate",selector:"[role=banner], [role=complementary], [role=contentinfo], [role=main], [role=navigation], [role=region], [role=search], [role=form], form, footer, header, aside, main, nav, section",tags:["cat.semantics","best-practice"],matches:"landmark-unique-matches",all:[],any:["landmark-is-unique"],none:[]},{id:"link-in-text-block",impact:"serious",selector:"a[href], [role=link]",matches:"link-in-text-block-matches",excludeHidden:false,tags:["cat.color","wcag2a","wcag141","TTv5","TT13.a","EN-301-549","EN-9.1.4.1","RGAAv4","RGAA-10.6.1"],all:[],any:[{options:{requiredContrastRatio:3,allowSameColor:true},id:"link-in-text-block"},"link-in-text-block-style"],none:[]},{id:"link-name",impact:"serious",selector:"a[href]",tags:["cat.name-role-value","wcag2a","wcag244","wcag412","section508","section508.22.a","TTv5","TT6.a","EN-301-549","EN-9.2.4.4","EN-9.4.1.2","ACT","RGAAv4","RGAA-6.2.1"],actIds:["c487ae"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:["focusable-no-name"]},{id:"list",impact:"serious",selector:"ul, ol",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.1"],all:[],any:[],none:[{options:{validRoles:["listitem"],validNodeNames:["li"]},id:"only-listitems"}]},{id:"listitem",impact:"serious",selector:"li",matches:"no-role-matches",tags:["cat.structure","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.3.1"],all:[],any:["listitem"],none:[]},{id:"marquee",impact:"serious",selector:"marquee",excludeHidden:false,tags:["cat.parsing","wcag2a","wcag222","TTv5","TT2.b","EN-301-549","EN-9.2.2.2","RGAAv4","RGAA-13.8.1"],all:[],any:[],none:["is-on-screen"]},{id:"meta-refresh-no-exceptions",impact:"minor",selector:'meta[http-equiv="refresh"][content]',excludeHidden:false,enabled:false,tags:["cat.time-and-media","wcag2aaa","wcag224","wcag325"],actIds:["bisz58"],all:[],any:[{options:{minDelay:72e3,maxDelay:false},id:"meta-refresh-no-exceptions"}],none:[]},{id:"meta-refresh",impact:"critical",selector:'meta[http-equiv="refresh"][content]',excludeHidden:false,tags:["cat.time-and-media","wcag2a","wcag221","TTv5","TT8.a","EN-301-549","EN-9.2.2.1","RGAAv4","RGAA-13.1.2"],actIds:["bc659a","bisz58"],all:[],any:[{options:{minDelay:0,maxDelay:72e3},id:"meta-refresh"}],none:[]},{id:"meta-viewport-large",impact:"minor",selector:'meta[name="viewport"]',matches:"is-initiator-matches",excludeHidden:false,tags:["cat.sensory-and-visual-cues","best-practice"],all:[],any:[{options:{scaleMinimum:5,lowerBound:2},id:"meta-viewport-large"}],none:[]},{id:"meta-viewport",impact:"moderate",selector:'meta[name="viewport"]',matches:"is-initiator-matches",excludeHidden:false,tags:["cat.sensory-and-visual-cues","wcag2aa","wcag144","EN-301-549","EN-9.1.4.4","ACT","RGAAv4","RGAA-10.4.2"],actIds:["b4f0c3"],all:[],any:[{options:{scaleMinimum:2},id:"meta-viewport"}],none:[]},{id:"nested-interactive",impact:"serious",matches:"nested-interactive-matches",tags:["cat.keyboard","wcag2a","wcag412","TTv5","TT6.a","EN-301-549","EN-9.4.1.2","RGAAv4","RGAA-7.1.1"],actIds:["307n5z"],all:[],any:["no-focusable-content"],none:[]},{id:"no-autoplay-audio",impact:"moderate",excludeHidden:false,selector:"audio[autoplay], video[autoplay]",matches:"no-autoplay-audio-matches",reviewOnFail:true,tags:["cat.time-and-media","wcag2a","wcag142","TTv5","TT2.a","EN-301-549","EN-9.1.4.2","ACT","RGAAv4","RGAA-4.10.1"],actIds:["80f0bf"],preload:true,all:[{options:{allowedDuration:3},id:"no-autoplay-audio"}],any:[],none:[]},{id:"object-alt",impact:"serious",selector:"object[data]",matches:"object-is-loaded-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","EN-301-549","EN-9.1.1.1","RGAAv4","RGAA-1.1.6"],actIds:["8fc3b6"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:[]},{id:"p-as-heading",impact:"serious",selector:"p",matches:"p-as-heading-matches",tags:["cat.semantics","wcag2a","wcag131","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-9.1.3","experimental"],all:[{options:{margins:[{weight:150,italic:true},{weight:150,size:1.15},{italic:true,size:1.15},{size:1.4}],passLength:1,failLength:.5},id:"p-as-heading"}],any:[],none:[]},{id:"page-has-heading-one",impact:"moderate",selector:"html:not(html *)",tags:["cat.semantics","best-practice"],all:[{options:{selector:"h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]",passForModal:true},id:"page-has-heading-one"}],any:[],none:[]},{id:"presentation-role-conflict",impact:"minor",selector:`img[alt=''], [role="none"], [role="presentation"]`,matches:"has-implicit-chromium-role-matches",tags:["cat.aria","best-practice","ACT"],actIds:["46ca7f"],all:[],any:[],none:["is-element-focusable","has-global-aria-attribute"]},{id:"region",impact:"moderate",selector:"body *",tags:["cat.keyboard","best-practice","RGAAv4","RGAA-9.2.1"],all:[],any:[{options:{regionMatcher:"dialog, [role=dialog], [role=alertdialog], svg"},id:"region"}],none:[]},{id:"role-img-alt",impact:"serious",selector:"[role='img']:not(img, area, input, object)",matches:"html-namespace-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","TTv5","TT7.a","EN-301-549","EN-9.1.1.1","ACT","RGAAv4","RGAA-1.1.1"],actIds:["23a2a8"],all:[],any:["aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"scope-attr-valid",impact:"moderate",selector:"td[scope], th[scope]",tags:["cat.tables","best-practice"],all:["html5-scope",{options:{values:["row","col","rowgroup","colgroup"]},id:"scope-value"}],any:[],none:[]},{id:"scrollable-region-focusable",impact:"serious",selector:"*:not(select,textarea)",matches:"scrollable-region-focusable-matches",tags:["cat.keyboard","wcag2a","wcag211","wcag213","TTv5","TT4.a","EN-301-549","EN-9.2.1.1","EN-9.2.1.3","RGAAv4","RGAA-7.3.2"],actIds:["0ssw9k"],all:[],any:["focusable-content","focusable-element"],none:[]},{id:"select-name",impact:"critical",selector:"select",tags:["cat.forms","wcag2a","wcag412","section508","section508.22.n","TTv5","TT5.c","EN-301-549","EN-9.4.1.2","ACT","RGAAv4","RGAA-11.1.1"],actIds:["e086e5"],all:[],any:["implicit-label","explicit-label","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"},"presentational-role"],none:["hidden-explicit-label"]},{id:"server-side-image-map",impact:"minor",selector:"img[ismap]",tags:["cat.text-alternatives","wcag2a","wcag211","section508","section508.22.f","TTv5","TT4.a","EN-301-549","EN-9.2.1.1","RGAAv4","RGAA-1.1.4"],all:[],any:[],none:["exists"]},{id:"skip-link",impact:"moderate",selector:'a[href^="#"], a[href^="/#"]',matches:"skip-link-matches",tags:["cat.keyboard","best-practice","RGAAv4","RGAA-12.7.1"],all:[],any:["skip-link"],none:[]},{id:"summary-name",impact:"serious",selector:"summary",matches:"summary-interactive-matches",tags:["cat.name-role-value","wcag2a","wcag412","section508","section508.22.a","TTv5","TT6.a","EN-301-549","EN-9.4.1.2"],all:[],any:["has-visible-text","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"svg-img-alt",impact:"serious",selector:'[role="img"], [role="graphics-symbol"], svg[role="graphics-document"]',matches:"svg-namespace-matches",tags:["cat.text-alternatives","wcag2a","wcag111","section508","section508.22.a","TTv5","TT7.a","EN-301-549","EN-9.1.1.1","ACT","RGAAv4","RGAA-1.1.5"],actIds:["7d6734"],all:[],any:["svg-non-empty-title","aria-label","aria-labelledby",{options:{attribute:"title"},id:"non-empty-title"}],none:[]},{id:"tabindex",impact:"serious",selector:"[tabindex]",tags:["cat.keyboard","best-practice"],all:[],any:["tabindex"],none:[]},{id:"table-duplicate-name",impact:"minor",selector:"table",tags:["cat.tables","best-practice","RGAAv4","RGAA-5.2.1"],all:[],any:[],none:["same-caption-summary"]},{id:"table-fake-caption",impact:"serious",selector:"table",matches:"data-table-matches",tags:["cat.tables","experimental","wcag2a","wcag131","section508","section508.22.g","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-5.4.1"],all:["caption-faked"],any:[],none:[]},{id:"target-size",impact:"serious",selector:"*",enabled:false,matches:"widget-not-inline-matches",tags:["cat.sensory-and-visual-cues","wcag22aa","wcag258"],all:[],any:[{options:{minSize:24},id:"target-size"},{options:{minOffset:24},id:"target-offset"}],none:[]},{id:"td-has-header",impact:"critical",selector:"table",matches:"data-table-large-matches",tags:["cat.tables","experimental","wcag2a","wcag131","section508","section508.22.g","TTv5","TT14.b","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-5.7.4"],all:["td-has-header"],any:[],none:[]},{id:"td-headers-attr",impact:"serious",selector:"table",matches:"table-or-grid-role-matches",tags:["cat.tables","wcag2a","wcag131","section508","section508.22.g","TTv5","TT14.b","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-5.7.4"],actIds:["a25f45"],all:["td-headers-attr"],any:[],none:[]},{id:"th-has-data-cells",impact:"serious",selector:"table",matches:"data-table-matches",tags:["cat.tables","wcag2a","wcag131","section508","section508.22.g","TTv5","TT14.b","EN-301-549","EN-9.1.3.1","RGAAv4","RGAA-5.7.1"],actIds:["d0f69e"],all:["th-has-data-cells"],any:[],none:[]},{id:"valid-lang",impact:"serious",selector:"[lang]:not(html), [xml\\:lang]:not(html)",tags:["cat.language","wcag2aa","wcag312","TTv5","TT11.b","EN-301-549","EN-9.3.1.2","ACT","RGAAv4","RGAA-8.8.1"],actIds:["de46e4"],all:[],any:[],none:[{options:{attributes:["lang","xml:lang"]},id:"valid-lang"}]},{id:"video-caption",impact:"critical",selector:"video",tags:["cat.text-alternatives","wcag2a","wcag122","section508","section508.22.a","TTv5","TT17.a","EN-301-549","EN-9.1.2.2","RGAAv4","RGAA-4.3.1"],actIds:["eac66b"],all:[],any:[],none:["caption"]}],checks:[{id:"abstractrole",evaluate:"abstractrole-evaluate"},{id:"aria-allowed-attr-elm",evaluate:"aria-allowed-attr-elm-evaluate"},{id:"aria-allowed-attr",evaluate:"aria-allowed-attr-evaluate",options:{validTreeRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]}},{id:"aria-allowed-role",evaluate:"aria-allowed-role-evaluate",options:{allowImplicit:true,ignoredTags:[]}},{id:"aria-busy",evaluate:"aria-busy-evaluate",deprecated:true},{id:"aria-conditional-attr",evaluate:"aria-conditional-attr-evaluate",options:{invalidTableRowAttrs:["aria-posinset","aria-setsize","aria-expanded","aria-level"]}},{id:"aria-errormessage",evaluate:"aria-errormessage-evaluate"},{id:"aria-hidden-body",evaluate:"aria-hidden-body-evaluate"},{id:"aria-level",evaluate:"aria-level-evaluate"},{id:"aria-prohibited-attr",evaluate:"aria-prohibited-attr-evaluate",options:{elementsAllowedAriaLabel:["applet","input"]}},{id:"aria-required-attr",evaluate:"aria-required-attr-evaluate"},{id:"aria-required-children",evaluate:"aria-required-children-evaluate",options:{reviewEmpty:["doc-bibliography","doc-endnotes","grid","list","listbox","menu","menubar","table","tablist","tree","treegrid","rowgroup"]}},{id:"aria-required-parent",evaluate:"aria-required-parent-evaluate",options:{ownGroupRoles:["listitem","treeitem"]}},{id:"aria-roledescription",evaluate:"aria-roledescription-evaluate",options:{supportedRoles:["button","img","checkbox","radio","combobox","menuitemcheckbox","menuitemradio"]}},{id:"aria-unsupported-attr",evaluate:"aria-unsupported-attr-evaluate"},{id:"aria-valid-attr-value",evaluate:"aria-valid-attr-value-evaluate",options:[]},{id:"aria-valid-attr",evaluate:"aria-valid-attr-evaluate",options:[]},{id:"braille-label-equivalent",evaluate:"braille-label-equivalent-evaluate"},{id:"braille-roledescription-equivalent",evaluate:"braille-roledescription-equivalent-evaluate"},{id:"deprecatedrole",evaluate:"deprecatedrole-evaluate"},{id:"fallbackrole",evaluate:"fallbackrole-evaluate"},{id:"has-global-aria-attribute",evaluate:"has-global-aria-attribute-evaluate"},{id:"has-widget-role",evaluate:"has-widget-role-evaluate",options:[]},{id:"invalidrole",evaluate:"invalidrole-evaluate"},{id:"is-element-focusable",evaluate:"is-element-focusable-evaluate"},{id:"no-implicit-explicit-label",evaluate:"no-implicit-explicit-label-evaluate"},{id:"unsupportedrole",evaluate:"unsupportedrole-evaluate"},{id:"valid-scrollable-semantics",evaluate:"valid-scrollable-semantics-evaluate",options:{roles:["tooltip"]}},{id:"color-contrast-enhanced",evaluate:"color-contrast-evaluate",options:{ignoreUnicode:true,ignoreLength:false,ignorePseudo:false,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:7,minThreshold:4.5},large:{expected:4.5,minThreshold:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.1,textStrokeEmMin:.03}},{id:"color-contrast",evaluate:"color-contrast-evaluate",options:{ignoreUnicode:true,ignoreLength:false,ignorePseudo:false,boldValue:700,boldTextPt:14,largeTextPt:18,contrastRatio:{normal:{expected:4.5},large:{expected:3}},pseudoSizeThreshold:.25,shadowOutlineEmMax:.2,textStrokeEmMin:.03}},{id:"link-in-text-block-style",evaluate:"link-in-text-block-style-evaluate"},{id:"link-in-text-block",evaluate:"link-in-text-block-evaluate",options:{requiredContrastRatio:3,allowSameColor:true}},{id:"autocomplete-appropriate",evaluate:"autocomplete-appropriate-evaluate",deprecated:true},{id:"autocomplete-valid",evaluate:"autocomplete-valid-evaluate",options:{stateTerms:["none","false","true","disabled","enabled","undefined","null","xoff","xon"],ignoredValues:["text","pronouns","gender","message","content"]}},{id:"accesskeys",evaluate:"accesskeys-evaluate",after:"accesskeys-after"},{id:"focusable-content",evaluate:"focusable-content-evaluate"},{id:"focusable-disabled",evaluate:"focusable-disabled-evaluate"},{id:"focusable-element",evaluate:"focusable-element-evaluate"},{id:"focusable-modal-open",evaluate:"focusable-modal-open-evaluate"},{id:"focusable-no-name",evaluate:"focusable-no-name-evaluate"},{id:"focusable-not-tabbable",evaluate:"focusable-not-tabbable-evaluate"},{id:"frame-focusable-content",evaluate:"frame-focusable-content-evaluate"},{id:"landmark-is-top-level",evaluate:"landmark-is-top-level-evaluate"},{id:"no-focusable-content",evaluate:"no-focusable-content-evaluate"},{id:"page-has-heading-one",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:"h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]",passForModal:true}},{id:"page-has-main",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:"main:not([role]), [role='main']",passForModal:true}},{id:"page-no-duplicate-banner",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"header:not([role]), [role=banner]",role:"banner"}},{id:"page-no-duplicate-contentinfo",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"footer:not([role]), [role=contentinfo]",role:"contentinfo"}},{id:"page-no-duplicate-main",evaluate:"page-no-duplicate-evaluate",after:"page-no-duplicate-after",options:{selector:"main:not([role]), [role='main']"}},{id:"tabindex",evaluate:"tabindex-evaluate"},{id:"alt-space-value",evaluate:"alt-space-value-evaluate"},{id:"duplicate-img-label",evaluate:"duplicate-img-label-evaluate",options:{parentSelector:"button, [role=button], a[href], p, li, td, th"}},{id:"explicit-label",evaluate:"explicit-evaluate"},{id:"help-same-as-label",evaluate:"help-same-as-label-evaluate"},{id:"hidden-explicit-label",evaluate:"hidden-explicit-label-evaluate"},{id:"implicit-label",evaluate:"implicit-evaluate"},{id:"label-content-name-mismatch",evaluate:"label-content-name-mismatch-evaluate",options:{pixelThreshold:.1,occurrenceThreshold:3}},{id:"multiple-label",evaluate:"multiple-label-evaluate"},{id:"title-only",evaluate:"title-only-evaluate"},{id:"landmark-is-unique",evaluate:"landmark-is-unique-evaluate",after:"landmark-is-unique-after"},{id:"has-lang",evaluate:"has-lang-evaluate",options:{attributes:["lang","xml:lang"]}},{id:"valid-lang",evaluate:"valid-lang-evaluate",options:{attributes:["lang","xml:lang"]}},{id:"xml-lang-mismatch",evaluate:"xml-lang-mismatch-evaluate"},{id:"dlitem",evaluate:"dlitem-evaluate"},{id:"listitem",evaluate:"listitem-evaluate"},{id:"only-dlitems",evaluate:"invalid-children-evaluate",options:{validRoles:["definition","term","listitem"],validNodeNames:["dt","dd"],divGroups:true}},{id:"only-listitems",evaluate:"invalid-children-evaluate",options:{validRoles:["listitem"],validNodeNames:["li"]}},{id:"structured-dlitems",evaluate:"structured-dlitems-evaluate"},{id:"caption",evaluate:"caption-evaluate"},{id:"frame-tested",evaluate:"frame-tested-evaluate",after:"frame-tested-after",options:{isViolation:false}},{id:"no-autoplay-audio",evaluate:"no-autoplay-audio-evaluate",options:{allowedDuration:3}},{id:"css-orientation-lock",evaluate:"css-orientation-lock-evaluate",options:{degreeThreshold:2}},{id:"meta-viewport-large",evaluate:"meta-viewport-scale-evaluate",options:{scaleMinimum:5,lowerBound:2}},{id:"meta-viewport",evaluate:"meta-viewport-scale-evaluate",options:{scaleMinimum:2}},{id:"target-offset",evaluate:"target-offset-evaluate",options:{minOffset:24}},{id:"target-size",evaluate:"target-size-evaluate",options:{minSize:24}},{id:"header-present",evaluate:"has-descendant-evaluate",after:"has-descendant-after",options:{selector:":is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]"}},{id:"heading-order",evaluate:"heading-order-evaluate",after:"heading-order-after"},{id:"identical-links-same-purpose",evaluate:"identical-links-same-purpose-evaluate",after:"identical-links-same-purpose-after"},{id:"internal-link-present",evaluate:"internal-link-present-evaluate"},{id:"landmark",evaluate:"has-descendant-evaluate",options:{selector:"main, [role=main]"}},{id:"meta-refresh-no-exceptions",evaluate:"meta-refresh-evaluate",options:{minDelay:72e3,maxDelay:false}},{id:"meta-refresh",evaluate:"meta-refresh-evaluate",options:{minDelay:0,maxDelay:72e3}},{id:"p-as-heading",evaluate:"p-as-heading-evaluate",options:{margins:[{weight:150,italic:true},{weight:150,size:1.15},{italic:true,size:1.15},{size:1.4}],passLength:1,failLength:.5}},{id:"region",evaluate:"region-evaluate",after:"region-after",options:{regionMatcher:"dialog, [role=dialog], [role=alertdialog], svg"}},{id:"skip-link",evaluate:"skip-link-evaluate"},{id:"unique-frame-title",evaluate:"unique-frame-title-evaluate",after:"unique-frame-title-after"},{id:"duplicate-id-active",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"duplicate-id-aria",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"duplicate-id",evaluate:"duplicate-id-evaluate",after:"duplicate-id-after"},{id:"aria-label",evaluate:"aria-label-evaluate"},{id:"aria-labelledby",evaluate:"aria-labelledby-evaluate"},{id:"avoid-inline-spacing",evaluate:"avoid-inline-spacing-evaluate",options:{cssProperties:["line-height","letter-spacing","word-spacing"]}},{id:"button-has-visible-text",evaluate:"has-text-content-evaluate"},{id:"doc-has-title",evaluate:"doc-has-title-evaluate"},{id:"error-occurred",evaluate:"exists-evaluate"},{id:"exists",evaluate:"exists-evaluate"},{id:"has-alt",evaluate:"has-alt-evaluate"},{id:"has-visible-text",evaluate:"has-text-content-evaluate"},{id:"important-letter-spacing",evaluate:"inline-style-property-evaluate",options:{cssProperty:"letter-spacing",minValue:.12}},{id:"important-line-height",evaluate:"inline-style-property-evaluate",options:{multiLineOnly:true,cssProperty:"line-height",minValue:1.5,normalValue:1}},{id:"important-word-spacing",evaluate:"inline-style-property-evaluate",options:{cssProperty:"word-spacing",minValue:.16}},{id:"is-on-screen",evaluate:"is-on-screen-evaluate"},{id:"non-empty-alt",evaluate:"attr-non-space-content-evaluate",options:{attribute:"alt"}},{id:"non-empty-if-present",evaluate:"non-empty-if-present-evaluate"},{id:"non-empty-placeholder",evaluate:"attr-non-space-content-evaluate",options:{attribute:"placeholder"}},{id:"non-empty-title",evaluate:"attr-non-space-content-evaluate",options:{attribute:"title"}},{id:"non-empty-value",evaluate:"attr-non-space-content-evaluate",options:{attribute:"value"}},{id:"presentational-role",evaluate:"presentational-role-evaluate"},{id:"role-none",evaluate:"matches-definition-evaluate",deprecated:true,options:{matcher:{attributes:{role:"none"}}}},{id:"role-presentation",evaluate:"matches-definition-evaluate",deprecated:true,options:{matcher:{attributes:{role:"presentation"}}}},{id:"svg-non-empty-title",evaluate:"svg-non-empty-title-evaluate"},{id:"caption-faked",evaluate:"caption-faked-evaluate"},{id:"html5-scope",evaluate:"html5-scope-evaluate"},{id:"same-caption-summary",evaluate:"same-caption-summary-evaluate"},{id:"scope-value",evaluate:"scope-value-evaluate",options:{values:["row","col","rowgroup","colgroup"]}},{id:"td-has-header",evaluate:"td-has-header-evaluate"},{id:"td-headers-attr",evaluate:"td-headers-attr-evaluate"},{id:"th-has-data-cells",evaluate:"th-has-data-cells-evaluate"},{id:"hidden-content",evaluate:"hidden-content-evaluate"}]});})(typeof window=="object"?window:Ag);});var Kg={};kr(Kg,{dismissModals:()=>bL});async function bL(f){await f.evaluate(d=>{for(let g of d){let h=document.querySelectorAll(g);for(let p of h)if(p.offsetParent!==null){p.click();return}}},vL),await new Promise(d=>setTimeout(d,500));}var vL,Jg=Sr(()=>{vL=['[class*="cookie"] button[class*="accept"]','[class*="cookie"] button[class*="agree"]','[class*="consent"] button[class*="accept"]','[class*="consent"] button[class*="agree"]','[id*="cookie"] button','[id*="consent"] button',".cc-dismiss",".cc-allow",".cc-btn",'[class*="gdpr"] button[class*="accept"]','[aria-label*="cookie" i] button','[aria-label*="consent" i] button','button[class*="close-banner"]','[class*="popup"] [class*="close"]','[class*="overlay"] [class*="close"]','[class*="modal"] [class*="close"]','[class*="notification"] [class*="close"]','button[aria-label="Close"]','button[aria-label="Dismiss"]'];});var zo={};kr(zo,{pruneHiddenIframeIssues:()=>DL,pruneInvisibleContrast:()=>xL,waitForRenderSettle:()=>yL});async function yL(f,d=4e3){let g=Date.now()+d;try{await f.waitForLoadState?.("load",{timeout:Math.min(d/2,2e3)});}catch{}let h="";for(;Date.now()<g;){let p;try{p=await f.evaluate(()=>{let y=typeof document.getAnimations=="function"?document.getAnimations():[],A=0;for(let _ of y){if(_.playState!=="running")continue;let x;try{x=_.effect?.getComputedTiming?.().iterations;}catch{x=void 0;}x!==1/0&&A++;}let w="",F=document.body?document.body.querySelectorAll('[style*="opacity"]'):[],R=Math.min(F.length,50);for(let _=0;_<R;_++)w+=getComputedStyle(F[_]).opacity+",";return A+"|"+w});}catch{return}if(p.indexOf("0|")===0&&p===h)return;h=p,await new Promise(y=>setTimeout(y,150));}}function Zg(f){return wL.has(f.wcag)||/contrast/i.test(f.type||"")}async function xL(f,d){let g=Array.from(new Set(d.filter(A=>Zg(A)&&A.selector).map(A=>A.selector))).slice(0,100);if(g.length===0)return d;let h;try{h=await f.evaluate(A=>{let w=[],F={},R=Math.max(document.documentElement.scrollWidth,window.innerWidth),_=Math.max(document.documentElement.scrollHeight,window.innerHeight),x=S=>{let E=S.match(/rgba?\(([^)]+)\)/);if(!E)return !1;let M=E[1].split(/[ ,/]+/).filter(Boolean);return M.length<4||parseFloat(M[3])>=.95};for(let S of A){let E=null;try{E=document.querySelector(S);}catch{continue}if(!E)continue;let M=getComputedStyle(E),L=E.getBoundingClientRect(),N=M.clipPath&&M.clipPath!=="none"&&/inset\(\s*(?:50|100)%/.test(M.clipPath)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(M.clip||""),q=L.width<=1||L.height<=1,H=window.scrollX,j=window.scrollY,U=L.right+H<=0||L.bottom+j<=0||L.left+H>=R||L.top+j>=_,J=!1;if(U)for(let z=E.parentElement;z&&z!==document.body&&z!==document.documentElement;z=z.parentElement){let X=getComputedStyle(z);if(X.overflowX!=="visible"||X.overflowY!=="visible"||X.transform&&X.transform!=="none"){J=!0;break}}if(N||q||L.right+H<=0||L.bottom+j<=0||U&&!J){w.push(S);continue}let k=E,v=!1;for(;k&&k!==document.documentElement;){if(parseFloat(getComputedStyle(k).opacity)===0){v=!0;break}k=k.parentElement;}if(v){F[S]="text is inside an opacity:0 element (hidden slide or pre-animation state) \u2014 check contrast in the state where it is shown";continue}let D=L.left+L.width/2,T=L.top+L.height/2,P=E,B=!1;for(let z=0;P&&P!==document.body&&z<8;z++){let X=getComputedStyle(P);if(x(X.backgroundColor)||X.backgroundImage&&X.backgroundImage!=="none")break;let te=P.querySelectorAll("video, canvas, img, picture");for(let ee=0;ee<te.length;ee++){let Z=te[ee];if(Z.contains(E)||E.contains(Z))continue;let ie=Z.getBoundingClientRect();if(ie.width>0&&ie.height>0&&D>=ie.left&&D<=ie.right&&T>=ie.top&&T<=ie.bottom){B=!0;break}}if(B)break;P=P.parentElement;}B&&(F[S]="text sits over a video or image \u2014 the background behind the glyphs cannot be measured from CSS");}return {hidden:w,review:F}},g);}catch{return d}let p=new Set(h.hidden),y=[];for(let A of d){if(!Zg(A)){y.push(A);continue}if(p.has(A.selector))continue;let w=h.review[A.selector];y.push(w&&A.confidence!=="needs_review"?{...A,confidence:"needs_review",reviewReason:w,...A.fix?{fix:{...A.fix,needsManualReview:true}}:{}}:A);}return y}async function DL(f,d){let g=Array.from(new Set(d.filter(y=>y.selector).map(y=>y.selector))).slice(0,200);if(g.length===0)return d;let h;try{h=await f.evaluate(y=>{let A=[];for(let w of y){let F=null;try{F=document.querySelector(w);}catch{continue}if(!F||F.tagName!=="IFRAME")continue;let R=getComputedStyle(F),_=F.getClientRects().length===0||R.visibility==="hidden"||R.visibility==="collapse",x=(F.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0;(_||x)&&A.push(w);}return A},g);}catch{return d}if(h.length===0)return d;let p=new Set(h);return d.filter(y=>!p.has(y.selector))}var wL,Go=Sr(()=>{wL=new Set(["1.4.3","1.4.6","1.4.11"]);});var Uo={};kr(Uo,{focusOnlyObscuredIndexes:()=>SL,resetInteractionState:()=>AL,restoreInteractionState:()=>EL,snapshotInteractionState:()=>_L});async function AL(f){try{await f.evaluate(()=>{try{document.activeElement?.blur?.();}catch{}try{window.scrollTo({left:0,top:0,behavior:"instant"});}catch{}});}catch{}}async function _L(f){try{await f.evaluate(()=>{let d=window;d.__waCallerState={el:document.activeElement,x:window.scrollX,y:window.scrollY};});}catch{}}async function EL(f){try{await f.evaluate(()=>{let d=window,g=d.__waCallerState;if(delete d.__waCallerState,!g)return;let h=g.el;if(h&&h!==document.body&&h!==document.documentElement&&h.isConnected)try{h.focus({preventScroll:!0});}catch{}try{window.scrollTo({left:g.x,top:g.y,behavior:"instant"});}catch{}});}catch{}}function CL(f){if(typeof f=="string")return f;if(!Array.isArray(f))return null;let d=f.flat(1/0).filter(g=>typeof g=="string");return d.length===1?d[0]:null}async function SL(f,d){let g=d.map(A=>{let F=[...A.any??[],...A.none??[]].flatMap(_=>_.relatedNodes??[]);if(!F.length)return null;let R=F.map(_=>CL(_.target));return R.every(_=>!!_)?R:null}),h=Array.from(new Set(g.flatMap(A=>A??[])));if(!h.length)return new Set;let p={};try{p=await f.evaluate(({sels:A,own:w})=>{let F=_=>{let x=_.getBoundingClientRect(),S=getComputedStyle(_);return !!((x.width<=1||x.height<=1)&&(S.overflow==="hidden"||S.position==="absolute"||S.position==="fixed")||/^rect\(\s*0(px)?[\s,]+0(px)?[\s,]+0(px)?[\s,]+0(px)?\s*\)$/.test(S.clip||"")||/inset\(\s*50%/.test(S.clipPath||""))},R={};for(let _ of A){let x=null;try{x=document.querySelector(_);}catch{x=null;}if(!x){R[_]=!1;continue}let S=x.closest(w);if(S&&S!==document.body&&S!==document.documentElement){R[_]=!0;continue}if(x===document.activeElement){try{x.blur();}catch{}R[_]=F(x);continue}R[_]=F(x);}return R},{sels:h,own:Ho});}catch{return new Set}let y=new Set;return g.forEach((A,w)=>{A&&A.length&&A.every(F=>p[F]===true)&&y.add(w);}),y}var Wo=Sr(()=>{Hr();});var oa={};kr(oa,{dedupeByElementIdentity:()=>IL,deduplicateIssues:()=>kL});function kL(f){let d=new Map,g=[...f].sort((h,p)=>{let y={webability:0,"axe-core":1,"deep-analysis":2},A=y[h.source]??3,w=y[p.source]??3;return A-w});for(let h of g){let p=TL(h);d.has(p)?!d.get(p).fix?.suggestedValue&&h.fix?.suggestedValue&&d.set(p,h):d.set(p,h);}return Array.from(d.values())}function TL(f){let d=f.selector.replace(/:focus-visible$/,"").replace(/:focus$/,"").replace(/\[data-[^\]]+\]/g,"").trim(),g=f.wcag||"";return d&&g?`${d}::${g}`:`${f.type}::${d||f.id}`}async function IL(f,d){if(d.length<2)return d;let g=Array.from(new Set(d.map(_=>_.selector).filter(Boolean))),h;try{h=await f.evaluate(_=>{let x=Array.from(document.querySelectorAll("*")),S=new Map;x.forEach((M,L)=>S.set(M,L));let E={};for(let M of _){let L=null;try{L=document.querySelector(M);}catch{}if(!L){let N=M.replace(/:(?:focus-visible|focus-within|focus|hover|active)$/,"");if(N!==M)try{L=document.querySelector(N);}catch{}}if(L){let N=L.closest("table");E[M]={el:S.get(L),table:N?S.get(N):-1,doc:L===document.documentElement||L===document.body};}}return E},g);}catch{return d}let p={webability:0,"axe-core":1,"deep-analysis":2},y=_=>{let x=h[_.selector];if(!x)return null;let S=_.wcag||_.type;return x.doc?{key:FL.has(_.wcag||"")?`doc::${S}`:`doc::${S}::${_.type}`,owner:true}:x.table>=0&&RL.test(_.type)?{key:`${x.table}::${S}::table-headers`,owner:x.el===x.table}:{key:`${x.el}::${S}`,owner:true}},A=[...d].sort((_,x)=>{let S=y(_),E=y(x),M=S?.owner?0:1,L=E?.owner?0:1;return M-L||(p[_.source]??3)-(p[x.source]??3)}),w=new Map,F=[];for(let _ of A){let x=y(_);if(!x){F.push(_);continue}let S=w.get(x.key);S?!S.fix?.suggestedValue&&_.fix?.suggestedValue&&(y(S)?.owner??true)===x.owner&&w.set(x.key,_):w.set(x.key,_);}let R=new Set([...w.values(),...F]);return d.filter(_=>R.has(_))}var RL,FL,sa=Sr(()=>{RL=/^missing_table_header$|^td-has-header$|^th-has-data-cells$|^h43|^h63/,FL=new Set(["2.4.1","3.1.1","2.4.2"]);});var tv={};kr(tv,{parseGif:()=>Qg,playsOverFiveSeconds:()=>ev,verifyAnimatedGifs:()=>ML});function Qg(f){if(String.fromCharCode(f[0]??0,f[1]??0,f[2]??0)!=="GIF")return null;let g=13,h=f[10]??0;h&128&&(g+=3*(1<<(h&7)+1));let p=0,y=0,A=0,w=null,F=()=>{for(;g<f.length;){let R=f[g++];if(R===0)return;g+=R;}};for(;g<f.length;){let R=f[g++];if(R===59)break;if(R===33){let _=f[g++];if(_===249)A=(f[g+2]??0)|(f[g+3]??0)<<8,g+=1+(f[g]??4),F();else if(_===255){let x=f[g]??0,S=String.fromCharCode(...Array.from(f.subarray(g+1,g+1+x)));g+=1+x,(S==="NETSCAPE2.0"||S==="ANIMEXTS1.0")&&f[g]===3&&f[g+1]===1&&(w=(f[g+2]??0)|(f[g+3]??0)<<8),F();}else F();}else if(R===44){let _=f[g+8]??0;g+=9,_&128&&(g+=3*(1<<(_&7)+1)),g+=1,F(),p++,y+=A<2?10:A,A=0;}else break}return {frames:p,seconds:y/100,loops:w}}function ev(f){if(f.frames<2)return false;if(f.loops===0)return true;let d=f.loops===null?1:f.loops+1;return f.seconds*d>5}async function ML(f,d){let g=d.filter(y=>y.type==="animated_gif_no_pause");if(!g.length)return d;let h=Array.from(new Set(g.map(y=>y.selector))),p={};try{p=await f.evaluate(async({sels:y,parserSrc:A})=>{let w=new Function("var __name = function (f) { return f }; return ("+A+")")(),F={};return await Promise.all(y.map(async R=>{F[R]=null;try{let _=document.querySelector(R),x=_&&(_.currentSrc||_.src);if(!x)return;let S=new AbortController,E=setTimeout(()=>S.abort(),5e3);try{let M=await fetch(x,{signal:S.signal,credentials:"same-origin"});if(!M.ok||Number(M.headers.get("content-length")||"0")>2e7)return;F[R]=w(new Uint8Array(await M.arrayBuffer()));}finally{clearTimeout(E);}}catch{}})),F},{sels:h,parserSrc:Qg.toString()});}catch{p={};}return d.flatMap(y=>{if(y.type!=="animated_gif_no_pause")return [y];let A=p[y.selector];if(!A)return [{...y,message:`${y.message} \u2014 the GIF file could not be read from the page (cross-origin or blocked), so its frame count and duration were not measured`}];if(!ev(A))return [];let w=A.loops===0?"loops forever":`plays for ${(A.seconds*(A.loops===null?1:A.loops+1)).toFixed(1)}s`;return [{...y,message:`animated GIF (${A.frames} frames, ${w}) starts automatically with no pause control \u2014 replace it with a video that has controls or a static image, or add a pause button (WCAG 2.2.2)`}]})}var rv=Sr(()=>{});var Vu={};kr(Vu,{scopeIssuesToRoot:()=>LL});async function LL(f,d,g){let h=Array.from(new Set(d.map(y=>y.selector).filter(Boolean))),p;try{p=await f.evaluate(({rootSel:y,sels:A})=>{let w=_=>{try{let S=document.querySelector(_);if(S)return S}catch{}let x=_.replace(/:(?:focus-visible|focus-within|focus|hover|active)$/,"");if(x!==_)try{return document.querySelector(x)}catch{return null}return null},F=null;try{F=document.querySelector(y);}catch{return {invalid:!0,matched:!1,within:{}}}if(!F)return {invalid:!1,matched:!1,within:{}};let R={};for(let _ of A){let x=w(_);R[_]=x?x===F||F.contains(x):!0;}return {invalid:!1,matched:!0,within:R}},{rootSel:g,sels:h});}catch{return {issues:d,warning:`scope:evaluate-failed (${g}) \u2014 results unfiltered`}}return p.invalid?{issues:d,warning:`scope:invalid-selector (${g}) \u2014 results unfiltered`}:p.matched?{issues:d.filter(y=>y.selector?p.within[y.selector]===true:true)}:{issues:[],warning:`scope:root-miss (${g} matched nothing \u2014 empty result)`}}var ju=Sr(()=>{});var qo={mobile:{width:375,height:667},tablet:{width:768,height:1024},desktop:{width:1280,height:720}};function uh(f,d){let g=f??"";if(g.trimStart().startsWith("{"))try{let h=JSON.parse(g);if(h&&typeof h=="object"&&!Array.isArray(h))return JSON.stringify({...h,platform:d})}catch{}return (g?g+" | ":"")+"platform: "+d}var Q3=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",g=[],h=new Set;function p(w){let F=(w.textContent||"").trim().replace(/\s+/g,""),R=w.querySelector("img, svg, picture")!==null,_=w.querySelector("i[class], span[class]")!==null;if(F.length>0&&!R&&!_)return false;if(R){let x=w.querySelectorAll("img"),S="";x.forEach(L=>{S+=(L.getAttribute("alt")||"").trim();});let E=F.replace(/\s+/g,""),M=S.replace(/\s+/g,"");return E===""||E===M}return false}function y(w){let F=w.nextElementSibling;for(;F;){if(isVisible(F))return F;F=F.nextElementSibling;}return null}return document.querySelectorAll("a[href]").forEach(w=>{if(g.length>=50||w.closest(f)||!isVisible(w)||h.has(w))return;let F=w.getAttribute("href");if(!F||F==="#")return;let R=y(w);if(!R||R.tagName!=="A"||R.getAttribute("href")!==F||h.has(R)||w.getAttribute("aria-hidden")==="true"||R.getAttribute("aria-hidden")==="true")return;let x=p(w),S=p(R);if(!x&&!S)return;let E=x?w:R,M=x?R:w;h.add(E),h.add(M);let L=uniqueSel(E),N=E.outerHTML.slice(0,300),q=(M.textContent||"").trim().slice(0,80);g.push({selector:L,attribute:"aria-hidden",currentValue:"",issueType:"adjacent_redundant_link",wcag:"2.4.4",context:JSON.stringify({href:F,imageLink:true,adjacentLinkText:q,suggestion:'Add aria-hidden="true" and tabindex="-1" to the image-only link'}),needsAI:false,fixValue:"true",outerHtml:N}),g.push({selector:L,attribute:"tabindex",currentValue:"",issueType:"adjacent_redundant_link",wcag:"2.4.4",context:JSON.stringify({supplementary:"Remove from tab order alongside aria-hidden",href:F}),needsAI:false,fixValue:"-1",outerHtml:N});}),g},ch={name:"adjacentLinks",cap:50,async detect(f){return f.evaluate(Q3)}};var eI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",d='.slick-cloned,.slick-clone,.swiper-slide-duplicate,.owl-item.cloned,[data-slick-index^="-"],[data-swiper-slide-index]:not([data-swiper-slide-index=""])',g=["[aria-expanded]",'[class*="dropdown" i]','[class*="submenu" i]','[class*="sub-menu" i]','[class*="collapse" i]','[class*="accordion" i]','[class*="megamenu" i]','[class*="mega-menu" i]','[class*="flyout" i]','[class*="fsNav" i]','[role="menu"]','[role="menubar"]','[role="tablist"]','[role="tab"]',"nav"].join(","),h=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA"]),p=50,y=[],A=new Set;function w(_){let x=_,S=0;for(;x&&x.nodeType===1&&x!==document.body&&S<20;){try{let E=getComputedStyle(x);if(E.display==="none"||E.visibility==="hidden"||E.visibility==="collapse")return !0}catch{}x=x.parentElement,S++;}return false}function F(_){let x=_.tagName,S=_.getAttribute("tabindex");if(S!==null){let E=parseInt(S,10);if(!isNaN(E)&&E>=0)return true;if(!isNaN(E)&&E<0)return false}return h.has(x)?!(x==="A"&&!_.hasAttribute("href")||_.hasAttribute("disabled")):false}return document.querySelectorAll('[aria-hidden="true"]').forEach(_=>{if(y.length>=p||_.closest(f)||_.closest(d)||_.closest(g)||_.matches(g))return;let x=[];if(F(_)&&x.push(_),_.querySelectorAll("a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]").forEach(E=>{F(E)&&x.push(E);}),x.length!==0)for(let E of x){if(y.length>=p)return;let M=uniqueSel(E),L=M+"\0tabindex";if(A.has(L))continue;A.add(L);let N=w(E),q=!N;y.push({selector:M,attribute:"tabindex",currentValue:E.getAttribute("tabindex")||"",issueType:"aria_hidden_focusable",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),parentHidden:_.tagName.toLowerCase(),collapsed:N,suggestion:N?"Focusable control inside an aria-hidden region that is currently display:none/visibility:hidden \u2014 likely a closed modal/dialog/dropdown. Confirm the control is permanently hidden before removing it from the tab order.":'This control is rendered and operable inside an aria-hidden region. Remove aria-hidden from the region if the control is meant to be used, or hide the region (display:none / hidden / inert) when it is not. Do not set tabindex="-1" on a visible control: keyboard users lose it.'}),needsAI:false,fixValue:"-1",...N?{needsReview:true,reviewReason:'this focusable control is inside an aria-hidden region that is currently hidden by layout (display:none/visibility:hidden) \u2014 the signature of a closed modal/dialog/dropdown/tab-panel whose controls are meant to become focusable when it opens. A static tabindex="-1" would permanently remove it from the tab order and create a keyboard trap once the widget is shown. Confirm the control is permanently hidden before applying.'}:{},...q?{manualFix:true,reviewReason:'the control is rendered inside an aria-hidden region: tabindex="-1" would leave a visible, clickable control unreachable by keyboard (2.1.1). The right fix is on the region (remove aria-hidden, or hide it for everyone), which needs a person.'}:{},outerHtml:(E.outerHTML||"").slice(0,300)});}}),y},dh={name:"ariaHiddenFocusable",cap:50,async detect(f){return f.evaluate(eI)}};var tI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=new Set,p=[/\btoast\b/i,/\bsnackbar\b/i,/error[-_]message|error[-_]msg|form[-_]error|validation[-_]error/i,/success[-_]message|success[-_]msg/i,/alert[-_]message|alert[-_]banner/i,/flash[-_]message|flash[-_]notice/i,/cart[-_]count|cart[-_]badge|cart[-_]quantity/i,/loading[-_]spinner|loading[-_]indicator/i,/search[-_]results?[-_]count/i,/\blive[-_]region\b/i,/notification[-_](bar|area|container|popup|wrapper)/i,/status[-_]message/i];function y(A){if((A.textContent||"").trim())return false;if(typeof A.checkVisibility=="function")return A.checkVisibility({visibilityProperty:true});for(let w=A;w&&w.nodeType===1;w=w.parentElement)if(getComputedStyle(w).display==="none")return false;return getComputedStyle(A).visibility!=="hidden"}for(let A of p){if(g.length>=50)break;let w=document.querySelectorAll("*");for(let F of w){if(g.length>=50)break;if(h.has(F)||F.closest(f))continue;let R=F.className&&typeof F.className=="string"?F.className:"",_=F.getAttribute("id")||"";if(!A.test(R)&&!A.test(_)||F.getAttribute("aria-live"))continue;let x=F.getAttribute("role")||"";if(["alert","status","log","timer","marquee"].includes(x)||!y(F))continue;h.add(F);let S=uniqueSel(F),E=A.test(R)?"class":"id",M=E==="class"?R.slice(0,60):_;g.push({selector:S,attribute:"aria-live",currentValue:"",issueType:"aria_live",wcag:"4.1.3",context:E+": "+M+" | pattern: "+A.source,needsAI:false,fixValue:"polite"});}}return g},fh={name:"ariaLive",cap:50,async detect(f){return f.evaluate(tI)}};var rI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",g=[],h=new Set,p=["aria-labelledby","aria-describedby"];return document.querySelectorAll("[aria-labelledby],[aria-describedby]").forEach(w=>{if(!(g.length>=50)&&!w.closest(f)&&isVisible(w)&&!isHiddenFromAT(w)&&!w.getAttribute("aria-live")&&!w.closest("[aria-live]")&&!w.closest("template"))for(let F of p){let R=w.getAttribute(F);if(!R||!R.trim())continue;let _=R.trim().split(/\s+/).filter(j=>j.length>0);if(_.length===0||!_.every(j=>!document.getElementById(j)))continue;let S=w.getAttribute("aria-label");if(S&&S.trim())continue;let E=getAccessibleName(w);if(E&&E.trim())continue;let M=uniqueSel(w),L=M+"\0"+F;if(h.has(L))continue;h.add(L);let{nearbyHeading:N,parentTag:q,parentRole:H}=getNearbyContext(w);g.push({selector:M,attribute:"aria-label",currentValue:"",issueType:"broken_aria_reference",wcag:"4.1.2",context:JSON.stringify({tag:w.tagName.toLowerCase(),brokenAttr:F,brokenIds:_,nearbyHeading:N,parentTag:q,parentRole:H,suggestion:`All IDs in ${F}="${R}" are missing from the DOM. Element has no accessible name. Generate an aria-label.`}),needsAI:true,outerHtml:(w.outerHTML||"").slice(0,300)});}}),g},ph={name:"brokenAriaReferences",cap:50,async detect(f){return f.evaluate(rI)}};var nI=()=>{let d=[],g=["submit","send","login","log in","sign in","sign up","register","subscribe","save","order","purchase","checkout","pay","book","apply","enroll","confirm","join","create account","get started","schedule","place order","buy","donate","search","find","go"],h=document.querySelectorAll("button");for(let p of h){if(d.length>=50)break;let y=p;if(isWidget(y)||y.hasAttribute("type")||!y.closest("form"))continue;let A=(y.textContent||"").trim().slice(0,60),w=(y.getAttribute("aria-label")||"").trim().slice(0,60),F=A||w||"(no label)",R=F.toLowerCase();g.some(x=>R.includes(x))||d.push({selector:uniqueSel(y),attribute:"type",currentValue:"",issueType:"missing_button_type",wcag:"3.2.2",context:"button inside <form> missing type attribute \u2014 defaults to submit | label: "+F,needsAI:false,fixValue:"button",outerHtml:(y.outerHTML||"").slice(0,300)});}return d},mh={name:"buttonType",cap:50,async detect(f){return f.evaluate(nI)}};var aI=()=>{let d=[],g=document.querySelectorAll("video, audio");for(let h of Array.from(g)){if(d.length>=20)break;if(isWidget(h)||typeof isVisible=="function"&&!isVisible(h)||h.error)continue;let p=h.tagName==="VIDEO";if(p){let L=h.hasAttribute("muted")||h.muted,N=h.hasAttribute("controls"),q=h.hasAttribute("loop")||h.loop,H=/mute|unmute|sound|volume|audio|play|pause/i,j=!!h.parentElement?.querySelector('button, [role="button"]')||!!h.getAttribute("id")&&!!document.querySelector('[aria-controls~="'+(h.getAttribute("id")||"").replace(/"/g,"")+'"]');for(let U=h.parentElement?.parentElement||null,J=0;U&&!j&&J<3;U=U.parentElement,J++)j=Array.from(U.querySelectorAll('button, [role="button"]')).some(k=>H.test((k.getAttribute("aria-label")||"")+" "+(k.getAttribute("title")||"")+" "+(k.textContent||"")));if(L&&q&&!N&&!j)continue}let y=h.querySelectorAll("track"),A=false;for(let L of Array.from(y)){let N=(L.getAttribute("kind")||"").toLowerCase();if(N==="captions"||N==="subtitles"){A=true;break}}if(A)continue;let w=h.currentSrc||h.getAttribute("src")||"";if(w||(w=h.querySelector("source")?.getAttribute("src")||""),!w)continue;let F=w.toLowerCase();if(F.startsWith("blob:")||F.startsWith("data:")||F.startsWith("about:")||F.startsWith("javascript:")||F.endsWith(".m3u8")||F.includes(".m3u8?")||F.endsWith(".mpd")||F.includes(".mpd?"))continue;let R=w;try{R=new URL(w,location.href).toString();}catch{continue}let _=typeof uniqueSel=="function"?uniqueSel(h):"",x=h.getAttribute("title")||h.getAttribute("aria-label")||"",S=typeof getNearbyContext=="function"?getNearbyContext(h):{parentTag:h.tagName.toLowerCase(),nearbyHeading:""},E=[];E.push("media: "+h.tagName.toLowerCase()),E.push("src: "+R.slice(0,200)),x&&E.push("title: "+x.slice(0,80)),S.nearbyHeading&&E.push("heading: "+S.nearbyHeading),E.push("parent: "+S.parentTag);let M=p;d.push({selector:_,attribute:"data-needs-captions",currentValue:"",issueType:"missing_captions",wcag:"1.2.2",context:E.join(" | "),needsAI:true,...M?{needsReview:true,reviewReason:"cannot verify an audio track in-page \u2014 confirm the video has speech content before transcribing (silent videos need no captions)"}:{},imageSrc:R,outerHtml:(h.outerHTML||"").slice(0,300)});}return d},hh={name:"captions",cap:20,async detect(f){return f.evaluate(aI)}};var iI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h="p, li, blockquote, article, section, main, div",p=document.querySelectorAll("a[href]"),y=new Map;for(let A of Array.from(p)){if(g.length>=40)break;if(A.closest(f)||A.closest('nav, header, footer, aside, [role="navigation"], [role="banner"], [role="contentinfo"]')||typeof isVisible=="function"&&!isVisible(A))continue;let w=A.closest(h);if(!w)continue;let F=(A.textContent||"").trim();if(!F)continue;let R=y.get(w);if(R===void 0){R=0;let U=document.createTreeWalker(w,NodeFilter.SHOW_TEXT),J;for(;J=U.nextNode();){let k=J.parentElement;!k||k.closest("a")||k.closest(h)===w&&(typeof isVisible=="function"&&!isVisible(k)||(R+=(J.textContent||"").trim().length));}y.set(w,R);}if(R<20||A.querySelector("img, svg, [class*=icon], [class*=arrow]"))continue;let _=getComputedStyle(A),x=getComputedStyle(w);if((_.textDecorationLine||_.textDecoration||"").includes("underline")||(()=>{let U=document.createTreeWalker(A,NodeFilter.SHOW_TEXT),J,k=false;for(;J=U.nextNode();){if(!/[\p{L}\p{N}]/u.test(J.textContent||""))continue;k=true;let v=false;for(let D=J.parentElement;D&&D!==A;D=D.parentElement){let T=getComputedStyle(D),P=(T.textDecorationColor||"").replace(/\s/g,"");if((T.textDecorationLine||"").includes("underline")&&P!=="transparent"&&!/^rgba\([^)]*,0(?:\.0+)?\)$/.test(P)){v=true;break}let B=(T.borderBottomColor||"").replace(/\s/g,""),z=B==="transparent"||/^rgba\([^)]*,0(?:\.0+)?\)$/.test(B);if((T.borderBottomStyle||"none")!=="none"&&parseFloat(T.borderBottomWidth||"0")>0&&!z){v=true;break}}if(!v)return false}return k})())continue;let M=parseInt(_.fontWeight||"400",10),L=parseInt(x.fontWeight||"400",10);if(Number.isFinite(M)&&Number.isFinite(L)&&M-L>=300||(_.borderBottomStyle||"none")!=="none"&&(_.borderBottomWidth||"0px")!=="0px"||_.color===x.color)continue;let q=typeof uniqueSel=="function"?uniqueSel(A):"",H=typeof getNearbyContext=="function"?getNearbyContext(A):{parentTag:A.tagName.toLowerCase(),nearbyHeading:""},j=[];j.push("link: "+F.slice(0,40)),j.push("color: "+_.color),j.push("parent-color: "+x.color),H.nearbyHeading&&j.push("heading: "+H.nearbyHeading),j.push("parent: "+H.parentTag),g.push({selector:q,attribute:"style",currentValue:_.textDecoration||"",issueType:"color_only_link",wcag:"1.4.1",context:j.join(" | "),needsAI:false,fixValue:"text-decoration: underline !important;",outerHtml:(A.outerHTML||"").slice(0,300)});}return g},gh={name:"colorOnly",cap:40,async detect(f){return f.evaluate(iI)}};var oI=()=>{let f=[],d=v=>typeof parseCssColor=="function"?parseCssColor(v):null,g=(v,D,T)=>typeof relLuminance=="function"?relLuminance(v,D,T):0,h=(v,D)=>typeof contrastRatio=="function"?contrastRatio(v,D):1;function p(v){let D=String(v.backgroundImage||"none");if(D==="none")return false;if(/gradient\(/i.test(D))return true;if(!/url\(/i.test(D))return false;let T=String(v.backgroundRepeat||"").toLowerCase(),P=String(v.backgroundSize||"").toLowerCase(),B=T.split(",").map(X=>X.trim()).some(X=>X!==""&&X!=="no-repeat"),z=/cover|contain|100%/.test(P);return B||z}let y=new Map;function A(v){let D=[],T=false;for(let P=v;P&&P.nodeType===1;P=P.parentElement){let B=y.get(P);if(B!==void 0){T=B;break}if(D.push(P),parseFloat(getComputedStyle(P).opacity||"1")<1){T=true;break}}for(let P of D)y.set(P,T);return T}let w=new Map;function F(v){let D=w.get(v);if(D)return D;D=[];let T=Array.from(v.children);for(let P=0;P<T.length;P++){let B=getComputedStyle(T[P]);B.position==="static"||B.display==="none"||B.visibility!=="visible"||parseFloat(B.opacity||"1")<=0||D.push({el:T[P],z:B.zIndex==="auto"?0:parseInt(B.zIndex,10)||0,i:P});}return w.set(v,D),D}function R(v){if(v===document.documentElement)return true;let D=getComputedStyle(v);return !!(D.position==="fixed"||D.position==="sticky"||D.zIndex!=="auto"&&D.position!=="static"||D.zIndex!=="auto"&&v.parentElement&&/flex|grid/.test(getComputedStyle(v.parentElement).display||"")||parseFloat(D.opacity||"1")<1||D.transform&&D.transform!=="none"||D.filter&&D.filter!=="none"||D.isolation==="isolate"||D.mixBlendMode&&D.mixBlendMode!=="normal"||/paint|strict|content/.test(D.contain||""))}function _(v,D,T,P){let B=F(v);if(!B.length||B.length===1&&B[0].el===D)return [];let z=-1/0;for(let ee=T;ee&&ee!==v;ee=ee.parentElement){let Z=getComputedStyle(ee);if(Z.position==="static")continue;let ie=Z.zIndex==="auto"?0:parseInt(Z.zIndex,10)||0;ie>z&&(z=ie);}let X=Array.prototype.indexOf.call(v.children,D),te=[];for(let ee of B){if(ee.el===D||!(ee.z<0?R(v):z>ee.z||z===ee.z&&ee.i<X))continue;let ie=ee.el.getBoundingClientRect();ie.left>P.left+1||ie.top>P.top+1||ie.right<P.right-1||ie.bottom<P.bottom-1||te.push(ee);}return te.sort((ee,Z)=>Z.z-ee.z||Z.i-ee.i),te.map(ee=>ee.el)}function x(v){try{let T=document.createRange(),P=null;for(let B of Array.from(v.childNodes)){if(B.nodeType!==3||!(B.textContent||"").trim())continue;T.selectNodeContents(B);let z=T.getBoundingClientRect();z.width<=0||z.height<=0||(P=P?{left:Math.min(P.left,z.left),top:Math.min(P.top,z.top),right:Math.max(P.right,z.right),bottom:Math.max(P.bottom,z.bottom)}:{left:z.left,top:z.top,right:z.right,bottom:z.bottom});}if(P)return P}catch{}let D=v.getBoundingClientRect();return {left:D.left,top:D.top,right:D.right,bottom:D.bottom}}function S(v,D){let T=document.documentElement,P=null,B=[{acc:[0,0,0],cover:0},{acc:[0,0,0],cover:0},{acc:[0,0,0],cover:0}],z=Math.max(0,Math.min(1,D[3]));B[0].acc=[D[0]*z,D[1]*z,D[2]*z],B[0].cover=z,B[2].cover=1;let X=1,te=()=>B.some(De=>De.cover<1-1e-9),ee=(De,Be=1)=>{if(!te())return true;let _e=d(De.backgroundColor||""),Ee=p(De);for(let bt of B){if(bt.cover>=1-1e-9)continue;if(Ee)return false;if(!_e)continue;let kt=Math.max(0,Math.min(1,_e[3]))*Be;if(kt<=0)continue;let He=kt*(1-bt.cover);bt.acc[0]+=_e[0]*He,bt.acc[1]+=_e[1]*He,bt.acc[2]+=_e[2]*He,bt.cover+=He;}return true},Z=De=>{let Be=Math.max(0,Math.min(1,parseFloat(De.opacity||"1")));if(!(Be>=1)){for(let _e of B)_e.acc=_e.acc.map(Ee=>Ee*Be),_e.cover*=Be;X*=Be;}},ie=v,be=null;for(;ie&&ie!==T&&!(!te()&&!A(ie));){let De=getComputedStyle(ie);if(be&&F(ie).length){P||(P=x(v));for(let Be of _(ie,be,v,P)){let _e=getComputedStyle(Be);if(!ee(_e,Math.max(0,Math.min(1,parseFloat(_e.opacity||"1")))))return null}}if(!ee(De))return null;Z(De),be=ie,ie=ie.parentElement;}if(ie===T){let De=getComputedStyle(T);if(!ee(De))return null;Z(De);}for(let De of B){let Be=1-De.cover;Be>0&&(De.acc=De.acc.map(_e=>_e+255*Be),De.cover=1);}let de=De=>[Math.round(Math.min(255,De.acc[0])),Math.round(Math.min(255,De.acc[1])),Math.round(Math.min(255,De.acc[2]))],ke=B[2].acc.map(De=>Math.min(255,De));return {fg:de(B[0]),bg:de(B[1]),k:X,rest:ke}}function E(v,D,T){return "#"+[v,D,T].map(P=>{let B=Math.max(0,Math.min(255,Math.round(P))).toString(16);return B.length===1?"0"+B:B}).join("")}let M=.1;function L(v,D,T,P=1,B=[0,0,0]){let z=g(D[0],D[1],D[2])>.5;for(let X of [T+M,T]){let te=N(v,D,X,z,P,B)||N(v,D,X,!z,P,B);if(te)return te}return null}function N(v,D,T,P,B,z){let X=0,te=1,ee=null;for(let Z=0;Z<20;Z++){let ie=(X+te)/2,be=P?[v[0]*(1-ie),v[1]*(1-ie),v[2]*(1-ie)]:[v[0]+(255-v[0])*ie,v[1]+(255-v[1])*ie,v[2]+(255-v[2])*ie],de=[Math.round(be[0]),Math.round(be[1]),Math.round(be[2])],ke=[de[0]*B+z[0],de[1]*B+z[1],de[2]*B+z[2]];h(ke,D)>=T?(ee=de,te=ie):X=ie;}return ee}let q=new Set(["application","button","checkbox","columnheader","combobox","grid","gridcell","group","link","listbox","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","option","radio","radiogroup","row","rowheader","scrollbar","searchbox","separator","slider","spinbutton","switch","tab","tablist","textbox","toolbar","tree","treegrid","treeitem"]);function H(v){if(v.closest("button:disabled, input:disabled, select:disabled, textarea:disabled, optgroup:disabled, option:disabled"))return true;for(let T=v;T&&T.nodeType===1;T=T.parentElement){if(T.getAttribute("aria-disabled")!=="true")continue;let P=(T.getAttribute("role")||"").trim().toLowerCase().split(/\s+/)[0];if(P&&q.has(P))return true}let D=v.closest("label");if(D){let T=D.control;if(T&&(T.disabled||T.getAttribute("aria-disabled")==="true"))return true}return false}let j=document.createTreeWalker(document.body,4),U=new Set,J=[],k=j.nextNode();for(;k;){let v=(k.textContent||"").trim();if(v.length>=2||/[\p{L}\p{N}]/u.test(v)){let D=k.parentElement;D&&!U.has(D)&&(U.add(D),J.push(D));}k=j.nextNode();}for(let v of J){if(isWidget(v)||isHiddenFromAT(v)||!isVisible(v)||H(v))continue;let D=getComputedStyle(v),T=d(D.webkitTextFillColor||D.color||"");if(!T)continue;if(T[3]<.5){let He=D.webkitBackgroundClip||D.backgroundClip||"",Mt=D.backgroundImage||"";if(String(He).includes("text")&&/gradient\(/i.test(Mt)){let br=Array.from(v.childNodes).filter(Bt=>Bt.nodeType===3).map(Bt=>(Bt.textContent||"").trim()).join("");br&&f.push({selector:uniqueSel(v),attribute:"style",currentValue:"gradient-clipped text",message:"contrast: gradient-clipped text \u2014 the glyph colour varies across the gradient, so the ratio cannot be computed; check the lightest stop meets 4.5:1",issueType:"contrast_insufficient",wcag:"1.4.3",context:"background-clip:text gradient text \u2014 glyph color varies across the gradient; contrast cannot be computed from CSS. text="+JSON.stringify(br.slice(0,40)),needsAI:true,needsReview:true,reviewReason:"gradient-clipped text \u2014 verify the lightest gradient stop still meets 4.5:1 against the surrounding background",outerHtml:v.outerHTML.slice(0,200)});}continue}let P=parseFloat(D.fontSize||"16"),B=parseInt(D.fontWeight||"400",10),X=P>=24||P>=18.66&&B>=700?3:4.5,te=Array.from(v.childNodes).filter(He=>He.nodeType===3).map(He=>(He.textContent||"").trim()).join("");if(!te)continue;let ee=E(T[0],T[1],T[2]),Z=uniqueSel(v),ie=S(v,T),be=ie?ie.bg:null;if(be===null){f.push({selector:Z,attribute:"style",currentValue:ee,message:"contrast: text "+ee+" on a gradient or image background \u2014 the ratio cannot be computed from CSS; check it meets "+X+":1 where the background is lightest/darkest",issueType:"contrast_insufficient",wcag:"1.4.3",context:"fg="+ee+" bg=<gradient-or-image> needs="+X+" text="+JSON.stringify(te.slice(0,40)),needsAI:true,needsReview:true,reviewReason:"background uses gradient or image \u2014 contrast cannot be reliably computed",outerHtml:v.outerHTML.slice(0,200)});continue}let de=ie,ke=h(de.fg,be);if(ke>=X)continue;let De=L([T[0],T[1],T[2]],be,X,de.k,de.rest);if(!De)continue;let Be=E(De[0],De[1],De[2]),_e=E(be[0],be[1],be[2]),Ee=E(de.fg[0],de.fg[1],de.fg[2]),bt=Ee===ee?"":" (shown as "+Ee+" after opacity/alpha)",kt="color:"+Be+" !important;";f.push({selector:Z,attribute:"style",currentValue:ee,message:"contrast: "+ee+bt+" on "+_e+" is "+ke.toFixed(2)+":1, needs "+X+":1 \u2014 e.g. color "+Be,issueType:"contrast_insufficient",wcag:"1.4.3",context:"fg="+Ee+" bg="+_e+" ratio="+ke.toFixed(2)+" needs="+X+" text="+JSON.stringify(te.slice(0,40)),needsAI:false,fixValue:kt,outerHtml:v.outerHTML.slice(0,200)});}return f},vh={name:"contrast",async detect(f){return f.evaluate(oI)}};var sI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",g=[],h=document.querySelectorAll("marquee, blink");for(let F of Array.from(h)){if(g.length>=30)break;if(F.closest(f))continue;let R=typeof uniqueSel=="function"?uniqueSel(F):F.tagName.toLowerCase();g.push({selector:R,attribute:"aria-hidden",currentValue:F.getAttribute("aria-hidden")||"",issueType:"motion_uncontrollable",wcag:"2.2.2",context:`deprecated ${F.tagName.toLowerCase()} element \u2014 uncontrollable motion`,needsAI:false,manualFix:true,fixValue:"true",outerHtml:(F.outerHTML||"").slice(0,300)});}let p=document.querySelectorAll('img[src*=".gif" i], img[src$=".gif" i]');for(let F of Array.from(p)){if(g.length>=30)break;if(F.closest(f))continue;let R=F.getAttribute("src")||"";if(!/\.gif(\?|#|$)/i.test(R)||typeof isVisible=="function"&&!isVisible(F))continue;let _=F.getBoundingClientRect();if(_.width<=40&&_.height<=40)continue;let x=typeof uniqueSel=="function"?uniqueSel(F):"img";g.push({selector:x,attribute:"data-asw-motion-review",currentValue:"",issueType:"animated_gif_no_pause",wcag:"2.2.2",context:`animated GIF without pause control: ${R.split("/").pop()?.slice(0,60)||R.slice(-60)}`,needsAI:true,outerHtml:(F.outerHTML||"").slice(0,300)});}let y=document.querySelectorAll('meta[http-equiv="refresh"], meta[http-equiv="Refresh"], meta[http-equiv="REFRESH"]');for(let F of Array.from(y)){if(g.length>=30)break;let R=(F.getAttribute("content")||"").trim(),_=parseInt((R.split(/[;,]/)[0]||"").trim(),10);!Number.isFinite(_)||_<=0||g.push({selector:`meta[http-equiv="refresh"][content*="${R.slice(0,20)}"]`,attribute:"data-auto-refresh",currentValue:R,issueType:"auto_refresh",wcag:"2.2.1",context:`auto-refresh every ${_}s \u2014 interrupts screen reader users mid-sentence (WCAG 2.2.1)`,needsAI:false,manualFix:true,outerHtml:(F.outerHTML||"").slice(0,200)});}try{let F=!1,R=!1;for(let _ of Array.from(document.styleSheets)){let x=null;try{x=_.cssRules;}catch{continue}if(x)for(let S of Array.from(x)){let E=S.cssText||"";if(/animation[^;]*\binfinite\b/i.test(E)&&/(keyframes|animation-name)/i.test(E+" "+(S.name||""))&&(F=!0),/prefers-reduced-motion[^{]*\(\s*reduce\s*\)/i.test(E)&&(R=!0),S.cssRules)for(let M of Array.from(S.cssRules)){let L=M.cssText||"";/animation[^;]*\binfinite\b/i.test(L)&&(F=!0);}}}F&&!R&&g.push({selector:"html",attribute:"data-asw-motion-review",currentValue:"",issueType:"motion_without_reduced_motion",wcag:"2.3.3",context:"infinite CSS animation detected without @media (prefers-reduced-motion: reduce) override",needsAI:!0,outerHtml:""});}catch{}let A=/\b(flash(ing)?|blink(ing)?|strobe)\b/i,w=document.querySelectorAll('[class*="flash" i], [class*="blink" i], [class*="strobe" i]');for(let F of Array.from(w)){if(g.length>=30)break;if(F.closest(f)||F.tagName==="BODY"||F.tagName==="HTML")continue;let R=F.className&&typeof F.className=="string"?F.className:"";if(!A.test(R)||typeof isVisible=="function"&&!isVisible(F))continue;let x=getComputedStyle(F).animationDuration,S=9999;if(x){let M=parseFloat(x);Number.isFinite(M)&&(S=/ms/i.test(x)?M:M*1e3);}if(S>333)continue;let E=typeof uniqueSel=="function"?uniqueSel(F):"";g.push({selector:E,attribute:"data-flashing-review",currentValue:"",issueType:"flashing_content",wcag:"2.3.1",context:`class matches flash/blink/strobe with ${S}ms animation-duration \u2014 seizure risk`,needsAI:false,needsReview:true,reviewReason:"WCAG 2.3.1 is met by stopping or slowing the flashing below 3 per second (remove the animation, slow it past 333ms, or add a pause control). aria-hidden does not stop flashing and hides content from assistive tech \u2014 do not apply it.",outerHtml:(F.outerHTML||"").slice(0,300)});}return g},bh={name:"cssAnimations",cap:30,async detect(f){return f.evaluate(sI)}};var lI=()=>{let d=[];function g(A){let w=(A.getAttribute("role")||"").toLowerCase();return w==="presentation"||w==="none"||(A.getAttribute("class")||"").toLowerCase().indexOf("layout")!==-1}function h(A){if(!A)return 0;let w=A.querySelectorAll("th, td"),F=0;for(let R=0;R<w.length;R++){let _=parseInt(w[R].getAttribute("colspan")||"1",10);F+=isNaN(_)||_<1?1:_;}return F}function p(A){let w=A.querySelectorAll("tr"),F=[];for(let R=0;R<w.length;R++){let _=w[R];_.closest("table")===A&&F.push(_);}return F}let y=document.querySelectorAll("table");for(let A=0;A<y.length&&!(d.length>=30);A++){let w=y[A];if(isWidget(w)||!isVisible(w)||g(w))continue;let F=p(w);if(F.length<=1)continue;let R=F[0],_=h(R);if(_<=1)continue;let x=uniqueSel(w),S=getNearbyContext(w),E=w.querySelectorAll("img, svg, picture").length>=2;if(E&&!(w.textContent||"").trim()){if(w.querySelector("input, select, textarea, button")&&(E=false),E&&w.querySelector("th, thead, caption, [scope], [headers]")&&(E=false),E){let v=Array.from(w.querySelectorAll("img")).map(D=>(D.getAttribute("alt")||"").trim().toLowerCase()).filter(Boolean);new Set(v).size<v.length&&(E=false);}}else if(E){let v=w.querySelectorAll("td, th"),D=0;for(let T=0;T<v.length&&E;T++){let P=v[T];if(P.closest("table")!==w)continue;let B=(P.textContent||"").trim(),z=!!P.querySelector("img, svg, picture");if(!B&&!z)continue;D++;let X=P.querySelectorAll("a[href]");E=P.tagName==="TD"&&X.length===1&&z&&(X[0].textContent||"").trim()===B;}D<2&&(E=false);}if(E){d.push({selector:x,attribute:"role",currentValue:w.getAttribute("role")||"",issueType:"missing_table_header",wcag:"1.3.1",context:JSON.stringify({reason:"table lays out images / image links only \u2014 likely a layout table",rows:F.length,cols:_,nearbyHeading:S.nearbyHeading}),needsAI:false,fixValue:"presentation",needsReview:true,reviewReason:'table of images or single image-links is likely layout \u2014 confirm, then mark it role="presentation" (do not add headers)',outerHtml:(w.outerHTML||"").slice(0,300)});continue}let M=null,L=w.querySelectorAll("thead");for(let v=0;v<L.length;v++)if(L[v].closest("table")===w){M=L[v];break}let N=M&&M.querySelector("tr")!==null,q=false;for(let v=0;v<F.length&&!q;v++){let D=F[v].children;for(let T=0;T<D.length&&!q;T++){let P=D[T],B=(P.tagName||"").toLowerCase();if(B!=="td"&&B!=="th")continue;if(B==="th"){q=true;break}let z=(P.getAttribute("headers")||"").trim();if(!z)continue;let X=z.split(/\s+/);for(let te=0;te<X.length;te++){let ee=document.getElementById(X[te]);if(ee&&(ee.tagName||"").toLowerCase()==="th"&&ee.closest("table")===w){q=true;break}}}}if(!N&&!q&&d.length<30&&d.push({selector:x,attribute:"thead",currentValue:M?"empty":"",issueType:"missing_table_header",wcag:"1.3.1",context:JSON.stringify({reason:M?"<thead> has no <tr>":"no <thead> element",rows:F.length,cols:_,nearbyHeading:S.nearbyHeading}),needsAI:false,fixValue:"wrap-first-row",outerHtml:(w.outerHTML||"").slice(0,300)}),_>2){let v=R.querySelectorAll("th, td"),D=v.length>0;for(let T=0;T<v.length;T++)if((v[T].tagName||"").toLowerCase()!=="td"){D=false;break}if(D)for(let T=0;T<v.length&&!(d.length>=30);T++){let P=v[T],B=uniqueSel(P),z=(P.textContent||"").trim().slice(0,60);d.push({selector:B,attribute:"role",currentValue:P.getAttribute("role")||"",issueType:"missing_table_header",wcag:"1.3.1",context:JSON.stringify({reason:"first-row <td> in data table \u2014 should be <th>",cellText:z,colIndex:T,nearbyHeading:S.nearbyHeading}),needsAI:false,fixValue:"columnheader",outerHtml:(P.outerHTML||"").slice(0,300)});}}let H=[],j=[],U=new Map;for(let v=0;v<F.length;v++){let D=F[v],T=0;for(let P=0;P<D.children.length;P++){let B=D.children[P],z=(B.tagName||"").toLowerCase();if(z!=="td"&&z!=="th")continue;for(;H.some(Z=>Z.lane===T&&Z.untilRow>v);)T++;let X=parseInt(B.getAttribute("colspan")||"1",10);(isNaN(X)||X<1)&&(X=1);let te={rowIdx:v,lane:T,span:X,headers:(B.getAttribute("headers")||"").trim()};z==="td"?j.push(te):U.set(B,te);let ee=parseInt(B.getAttribute("rowspan")||"1",10)||1;if(ee>1)for(let Z=0;Z<X;Z++)H.push({lane:T+Z,untilRow:v+ee});T+=X;}}let J=(v,D)=>D.lane<v.lane+v.span&&D.lane+D.span>v.lane,k=w.querySelectorAll("th");for(let v=0;v<k.length&&!(d.length>=30);v++){let D=k[v];if(D.closest("table")!==w)continue;let T=(D.getAttribute("scope")||"").trim().toLowerCase();if(T==="col"||T==="row"||T==="colgroup"||T==="rowgroup")continue;let P=false;if((D.getAttribute("headers")||"").trim())P=true;else {let de=(D.getAttribute("id")||"").trim();if(de)for(let ke=0;ke<j.length;ke++){let De=j[ke].headers;if(De&&De.split(/\s+/).indexOf(de)!==-1){P=true;break}}}if(P)continue;let B=D.closest("tr"),z=D.closest("thead")!==null,X=false;B&&F.length>0&&F[0]===B&&(X=true);let te=false;if(B){let de=B.querySelectorAll("th, td");de.length>0&&de[0]===D&&(te=true);}let ee="col";z||X?ee="col":te&&(ee="row");let Z=U.get(D);if(!P&&Z){if(ee==="row")P=j.some(de=>de.rowIdx===Z.rowIdx&&!de.headers&&de.lane>=Z.lane+Z.span);else if(P=j.some(de=>de.rowIdx>Z.rowIdx&&!de.headers&&J(Z,de)),!P)for(let de=0;de<k.length;de++){let ke=U.get(k[de]);if(!ke||ke.rowIdx<=Z.rowIdx||!J(Z,ke))continue;let De=F[ke.rowIdx],Be=De?De.children:[];if(Be.length>0&&Be[0]===k[de]&&k[de].closest("table")===w){P=true;break}}}if(P)continue;let ie=uniqueSel(D),be=(D.textContent||"").trim().slice(0,60);d.push({selector:ie,attribute:"scope",currentValue:T,issueType:"missing_table_scope",wcag:"1.3.1",context:JSON.stringify({reason:"<th> missing scope attribute",inferred:ee,inThead:z,firstRow:X,firstCol:te,headerText:be}),needsAI:false,fixValue:ee,outerHtml:(D.outerHTML||"").slice(0,300)});}}return d},yh={name:"dataTables",cap:30,async detect(f){return f.evaluate(lI)}};var uI=()=>{let d=[];for(let g of document.querySelectorAll("img[alt]")){if(d.length>=30)break;let h=g;if((h.getAttribute("alt")||"").trim()!=="")continue;let p=(h.getAttribute("title")||"").trim().replace(/\s+/g," ");if(!p||isWidget(h))continue;let y=(h.getAttribute("role")||"").toLowerCase();y==="presentation"||y==="none"||h.getAttribute("aria-hidden")==="true"||h.closest('[aria-hidden="true"]')||(h.getAttribute("aria-label")||"").trim()||(h.getAttribute("aria-labelledby")||"").trim()||isVisible(h)&&d.push({selector:uniqueSel(h),attribute:"data-asw-decorative-title",currentValue:"",issueType:"decorative_image_with_title",wcag:"1.1.1",context:'image with alt="" also has title="'+p.slice(0,80)+'"',needsAI:true,needsReview:true,reviewReason:'WCAG 1.1.1 Non-text Content: this image has an empty alt (declared decorative) but also a title of "'+p.slice(0,80)+'". Violation when the picture conveys information the title names (a logo, a chart, a labelled icon), so the empty alt hides it. Pass when the picture is purely decorative and the title only repeats nearby text or adds nothing.',outerHtml:(h.outerHTML||"").slice(0,300)});}return d},wh={name:"decorativeImageTitle",cap:30,async detect(f){return f.evaluate(uI)}};var cI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",d=/^[^\p{L}\p{N}\s]*$/u,g=/^[\s\u00A0\u2000-\u200F\u2028-\u202F]*$/,p=[],y=["link","button","menuitem","menuitemcheckbox","menuitemradio","tab","checkbox","radio","switch","option","treeitem","gridcell","combobox","textbox","searchbox","slider","spinbutton","img","heading","listitem","none","presentation","generic","navigation","region","group","dialog"],A=R=>{let _=R.computedRole;if(typeof _=="string")return _.toLowerCase();let x=(R.getAttribute("role")||"").trim().toLowerCase().split(/\s+/);for(let S of x)if(y.indexOf(S)>=0)return S;return R.hasAttribute("href")?"link":"generic"},w=R=>{let _=A(R);if(_==="link"||R.hasAttribute("href"))return true;if(_&&_!=="generic")return false;let x=R.getAttribute("tabindex");if(x===null)return false;let S=parseInt(x,10);return !isNaN(S)&&S>=0},F=document.querySelectorAll("a");for(let R of F){if(p.length>=50)break;if(!w(R)||R.closest(f)||R.getAttribute("aria-hidden")==="true"||R.getAttribute("role")==="presentation"||R.closest('[aria-hidden="true"]')||!isVisible(R))continue;let _=getAccessibleName(R);if(_&&_.length>0&&!g.test(_)&&!d.test(_))continue;let x=R.querySelectorAll("img[alt]"),S="";for(let k of x){let v=(k.getAttribute("alt")||"").trim();v&&(S+=v+" ");}if(S.trim())continue;let E=R.getAttribute("aria-labelledby");if(E&&typeof __resolveIdRefs=="function"&&__resolveIdRefs(E))continue;let M=uniqueSel(R),L=R.getAttribute("href")||"",N=(R.textContent||"").trim(),q=getNearbyContext(R),H="";N&&g.test(N)?H="[whitespace only]":N&&d.test(N)&&(H=N);let j=(document.documentElement.getAttribute("lang")||"").trim(),U=[];R.closest("nav")&&U.push("inside nav"),q.nearbyHeading&&U.push("heading: "+q.nearbyHeading),L&&U.push("href: "+L.slice(0,120)),U.push("parent: "+q.parentTag),j&&U.push("page language: "+j);let J={selector:M,attribute:"aria-label",currentValue:H,issueType:"empty_link",wcag:"2.4.4",context:U.join(" | "),needsAI:true,outerHtml:R.outerHTML.slice(0,300)};p.push(J);}return p},xh={name:"emptyLinks",cap:50,async detect(f){return f.evaluate(cI)}};var dI=()=>{let d=[],g=new Set;function h(_){return (_||"").trim()}function p(_){let x=h(_.getAttribute("aria-label")||"");if(x)return x;let S=_.getAttribute("aria-labelledby");if(S){let M=S.split(/\s+/),L="";for(let N=0;N<M.length;N++){let q=document.getElementById(M[N]);q&&(L+=" "+(q.textContent||""));}if(h(L))return h(L)}let E=h(_.getAttribute("title")||"");return E||""}let y=document.querySelectorAll("fieldset");for(let _=0;_<y.length&&!(d.length>=30);_++){let x=y[_];if(isWidget(x)||!isVisible(x)||isHiddenFromAT(x))continue;if(p(x)){g.add(x);continue}let S=null,E=x.querySelectorAll("legend");for(let j=0;j<E.length;j++)if(E[j].closest("fieldset")===x){S=E[j];break}let M=S!==null,L=S?h(S.textContent||""):"";if(M&&L){g.add(x);continue}let N=getNearbyContext(x),q=x.querySelectorAll("input, select, textarea"),H=uniqueSel(x);d.push({selector:H,attribute:"aria-label",currentValue:"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:M?"fieldset has empty <legend>":"fieldset missing <legend>",controlCount:q.length,nearbyHeading:N.nearbyHeading,parentTag:N.parentTag}),needsAI:true,outerHtml:(x.outerHTML||"").slice(0,300)}),g.add(x);}let A=document.querySelectorAll('[role="group"], [role="radiogroup"]');for(let _=0;_<A.length&&!(d.length>=30);_++){let x=A[_];if(isWidget(x)||!isVisible(x)||isHiddenFromAT(x)||g.has(x))continue;if(p(x)){g.add(x);continue}let S=x.getAttribute("role")||"",E=getNearbyContext(x),M=x.querySelectorAll("input, select, textarea");if(S==="group"&&x.querySelectorAll('input:not([type="hidden"]), select, textarea, [role="radio"], [role="checkbox"], [role="switch"], [role="textbox"], [role="combobox"], [role="spinbutton"], [role="slider"]').length===0)continue;let L=uniqueSel(x);d.push({selector:L,attribute:"aria-label",currentValue:"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:'role="'+S+'" container without accessible name',role:S,controlCount:M.length,nearbyHeading:E.nearbyHeading,parentTag:E.parentTag}),needsAI:true,outerHtml:(x.outerHTML||"").slice(0,300)}),g.add(x);}let w={},F=document.querySelectorAll('input[type="radio"], input[type="checkbox"]');for(let _=0;_<F.length;_++){let x=F[_];if(isWidget(x)||!isVisible(x)||isHiddenFromAT(x))continue;let S=x.getAttribute("name")||"";if(!S)continue;let E=x.closest("form"),M=E?E.getAttribute("id")||E.getAttribute("action")||E.tagName:"no-form",L=(x.getAttribute("type")||"").toLowerCase(),N=M+"::"+L+"::"+S;w[N]||(w[N]=[]),w[N].push(x);}let R=Object.keys(w);for(let _=0;_<R.length&&!(d.length>=30);_++){let x=w[R[_]];if(x.length<3)continue;let S=x[0],E=S.closest('fieldset, [role="group"], [role="radiogroup"]'),M=false;if(E){M=true;for(let U=1;U<x.length;U++)if(!E.contains(x[U])){M=false;break}}if(M&&E)continue;let L=S.parentElement;for(;L&&L!==document.body;){let U=true;for(let J=1;J<x.length;J++)if(!L.contains(x[J])){U=false;break}if(U)break;L=L.parentElement;}if(!L||L===document.body||g.has(L))continue;let N=(S.getAttribute("type")||"").toLowerCase(),q=S.getAttribute("name")||"",H=getNearbyContext(S),j=uniqueSel(L);d.push({selector:j,attribute:"role",currentValue:L.getAttribute("role")||"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:"unwrapped "+N+" group ("+x.length+' inputs share name="'+q+'")',inputType:N,inputCount:x.length,name:q,nearbyHeading:H.nearbyHeading,parentTag:H.parentTag}),needsAI:false,fixValue:N==="radio"?"radiogroup":"group",outerHtml:(L.outerHTML||"").slice(0,300)}),g.add(L);}return d},Dh={name:"fieldsetLegend",cap:30,async detect(f){return f.evaluate(dI)}};var fI=()=>{let f=[],d=document.querySelectorAll('header, nav, div, [class*="header"], [class*="navbar"], [class*="sticky"], [role="banner"]'),g=0;for(let h of Array.from(d)){let p=getComputedStyle(h);if(p.display==="none"||p.visibility==="hidden"||p.position!=="sticky"&&p.position!=="fixed")continue;let y=h.getBoundingClientRect();if(y.top>50||y.bottom<=0)continue;let A=Math.round(y.height);A<40||A>240||A>g&&(g=A);}if(g>0){let h=window.scrollX,p=window.scrollY,y=0,A=0;try{let F=[],R=new Set;document.querySelectorAll('a[href^="#"]').forEach(_=>{let x=_.getAttribute("href").slice(1);if(!x)return;let S=document.getElementById(x);S&&!R.has(S)&&(R.add(S),F.push(S));});for(let _ of F){if(A>=8)break;let x=getComputedStyle(_);if(x.display==="none"||x.visibility==="hidden")continue;A++,_.scrollIntoView({block:"start"});let S=_.getBoundingClientRect(),E=Math.max(S.height,1);Math.max(0,Math.min(S.bottom,g)-Math.max(S.top,0))/Math.min(E,g)>=.5&&y++;}}catch{}try{window.scrollTo(h,p);}catch{}let w=`scroll-margin-top: ${g+8}px; scroll-padding-top: ${g+8}px;`;A>0&&y>0?f.push({selector:"html",attribute:"style",currentValue:"",issueType:"focus_obscured_by_sticky",wcag:"2.4.11",context:`sticky header height: ${g}px \u2014 ${y}/${A} in-page anchor targets land under it on jump`,needsAI:false,fixValue:w}):A===0&&f.push({selector:"html",attribute:"style",currentValue:"",issueType:"focus_obscured_by_sticky",wcag:"2.4.11",context:`sticky header height: ${g}px \u2014 no in-page anchor targets available to verify obscuring behaviorally`,needsAI:false,needsReview:true,reviewReason:"sticky top bar present; could not verify focus/jump obscuring automatically \u2014 check skip-link and anchor landing positions, or set scroll-padding-top preventively",fixValue:w});}return f},Ah={name:"focusObscured",async detect(f){return f.evaluate(fI)}};var _h={name:"focusVisible",cap:40,async detect(f){let d=typeof f.keyboard?.press=="function";try{await f.evaluate(()=>{let g=document.activeElement;window[Symbol.for("wa.prevFocus")]=g&&g!==document.body&&g!==document.documentElement?g:null,window[Symbol.for("wa.prevScroll")]=[window.scrollX,window.scrollY];let h=getSelection();window[Symbol.for("wa.prevSelection")]=h?Array.from({length:h.rangeCount},(p,y)=>h.getRangeAt(y).cloneRange()):[];});}catch{}if(d)try{await f.keyboard.press("Tab");}catch{}return f.evaluate(async g=>{let p=[],y=["a[href]","button",'input:not([type="hidden"])',"select","textarea",'[role="button"]','[role="link"]','[role="menuitem"]','[role="tab"]','[tabindex]:not([tabindex="-1"])'].join(",");try{document.activeElement?.blur?.();}catch{}let A=document.querySelectorAll(y),w=Symbol.for("wa.prevFocus"),F=window[w]??null;try{delete window[w];}catch{}for(let R of A){if(p.length>=40)break;if(typeof isWidget=="function"&&isWidget(R)||typeof isHiddenFromAT=="function"&&isHiddenFromAT(R)||typeof isVisible=="function"&&!isVisible(R)||!R.offsetParent&&R.tagName!=="BODY")continue;let _=R.hasAttribute("style"),x=R.getAttribute("style"),S=["transition-property","transition-duration","transition-timing-function","transition-delay","transition-behavior"],E=R.style?S.map(P=>[P,R.style.getPropertyValue(P),R.style.getPropertyPriority(P)]):[];R.style&&(R.style.transition="none");let M=()=>{if(R.style){R.style.removeProperty("transition");for(let[P,B,z]of E)B&&R.style.setProperty(P,B,z);!_&&!R.getAttribute("style")?R.removeAttribute("style"):_&&x!==null&&x.trim()===""&&R.getAttribute("style")===""&&R.setAttribute("style",x);}},L=getComputedStyle(R),N=L.outline,q=L.outlineWidth,H=L.outlineStyle,j=L.boxShadow,U=L.border,J=L.backgroundColor;try{R.focus({preventScroll:!0});}catch{M();continue}if(document.activeElement!==R){M();continue}let k=()=>{let P=getComputedStyle(R),B=(P.outlineStyle||"").toLowerCase(),z=parseFloat(P.outlineWidth||"0"),X=P.outline!==N,te=B!=="none"&&B!=="hidden"&&z>0,ee=P.boxShadow!==j&&P.boxShadow!=="none"&&P.boxShadow!=="",Z=P.border!==U,ie=P.backgroundColor!==J;return X&&te||ee||Z||ie},v=k(),D=typeof R.getAnimations=="function"&&R.getAnimations().some(P=>P.playState==="running"&&!("transitionProperty"in P));if(!v&&!D){let P=B=>typeof requestAnimationFrame=="function"?requestAnimationFrame(B):setTimeout(B,16);if(await new Promise(B=>setTimeout(()=>P(()=>B()),20)),document.activeElement!==R){M();continue}v=k();}if(M(),v||parseFloat(q)>0&&H!=="none")continue;let T=typeof uniqueSel=="function"?uniqueSel(R):R.tagName.toLowerCase();p.push({selector:T,pseudo:":focus-visible",attribute:"style",currentValue:H+" "+q,issueType:"focus_not_visible",wcag:"2.4.7",context:`${R.tagName.toLowerCase()} has no visible focus indicator \u2014 outline, box-shadow, border, and background all unchanged on focus (apply the style under :focus-visible)`,needsAI:false,fixValue:"outline: 2px solid #2563eb !important;outline-offset: 2px !important;",outerHtml:R.outerHTML.slice(0,200),...g?{}:{needsReview:true,reviewReason:"Focus indicator could not be verified with a real keyboard event; may use a keyboard-only (:focus-visible) pattern \u2014 verify by tabbing to it."}});}try{document.activeElement?.blur?.();}catch{}try{F&&F.isConnected&&F.focus({preventScroll:!0});}catch{}try{let R=Symbol.for("wa.prevScroll"),_=window[R];delete window[R],_&&window.scrollTo({left:_[0],top:_[1],behavior:"instant"});}catch{}try{let R=Symbol.for("wa.prevSelection"),_=window[R];delete window[R];let x=getSelection();if(x&&_){x.removeAllRanges();for(let S of _)x.addRange(S);}}catch{}return p},d)}};var pI=()=>{let d=[],g=["new","register","signup","sign-up","sign_up","create","change","reset"],h=["confirm","verify","retype","re-type","repeat","again"];function p(x){if(!x)return false;let S=" "+((x.getAttribute("id")||"")+" "+(x.getAttribute("class")||"")+" "+(x.getAttribute("name")||"")+" "+(x.getAttribute("action")||"")).toLowerCase()+" ";for(let E=0;E<g.length;E++)if(S.indexOf(g[E])!==-1)return true;return false}function y(x){let S=((x.getAttribute("name")||"")+" "+(x.getAttribute("id")||"")+" "+(x.getAttribute("placeholder")||"")+" "+(x.getAttribute("aria-label")||"")).toLowerCase();for(let E=0;E<h.length;E++)if(S.indexOf(h[E])!==-1)return true;return false}let A=document.querySelectorAll('input[type="password"], input[type="Password"]');for(let x of A){if(d.length>=30)break;let S=x;if(isWidget(S)||isHiddenFromAT(S)||!isVisible(S))continue;let E=(S.getAttribute("autocomplete")||"").trim().toLowerCase();if(y(S)){if(E==="new-password")continue;let H=uniqueSel(S);d.push({selector:H,attribute:"autocomplete",currentValue:E,issueType:"missing_autocomplete",wcag:"1.3.5",context:"confirm password field | name: "+(S.getAttribute("name")||"")+" | id: "+(S.getAttribute("id")||""),needsAI:false,fixValue:"new-password",outerHtml:(S.outerHTML||"").slice(0,300)});continue}if(E)continue;let L=S.form||S.closest("form"),N=p(L),q=uniqueSel(S);d.push({selector:q,attribute:"autocomplete",currentValue:"",issueType:"missing_autocomplete",wcag:"1.3.5",context:(N?"new/signup/change password form":"login form")+" | name: "+(S.getAttribute("name")||"")+" | id: "+(S.getAttribute("id")||""),needsAI:false,fixValue:N?"new-password":"current-password",outerHtml:(S.outerHTML||"").slice(0,300)});}let w=document.querySelectorAll("form"),F=/\*|\brequired\b|\bmandatory\b/i;for(let x of w){if(d.length>=30)break;let S=x;if(isWidget(S)||!isVisible(S))continue;let E=S.querySelectorAll("input[required], select[required], textarea[required]");if(!E.length)continue;let M=0;for(let j of E)isVisible(j)&&M++;if(M===0)continue;let L=S.querySelectorAll('input:not([type="hidden"]):not([type="submit"]):not([type="button"]), select, textarea'),N=0;for(let j of L)isVisible(j)&&N++;if(M>=N||(S.getAttribute("data-asw-required-hint")||"").trim())continue;let q=(S.textContent||"").trim();if(F.test(q))continue;let H=uniqueSel(S);d.push({selector:H,attribute:"data-asw-required-hint",currentValue:"",issueType:"missing_required_indicator",wcag:"3.3.2",context:`form has ${M} required input(s) but no visible "*" / "required" / "mandatory" marker`,needsAI:true,outerHtml:(S.outerHTML||"").slice(0,300)});}let R='input[type="submit" i], input[type="image" i], button:not([type]), button[type="submit" i], button[type=""]',_='input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), select, textarea';for(let x of w){if(d.length>=30)break;let S=x;if(isWidget(S)||!isVisible(S)||isHiddenFromAT(S))continue;let E=[];for(let j of S.querySelectorAll(_))isVisible(j)&&E.push(j);if(E.length===0||S.querySelector(R))continue;let M=S.getAttribute("id");if(M){let j=false;for(let U of document.querySelectorAll(R))if(U.getAttribute("form")===M){j=true;break}if(j)continue}if(((S.getAttribute("role")||"").toLowerCase()==="search"||!!S.closest('[role="search"]'))&&E.length===1)continue;let N=E.slice(0,4).map(j=>j.tagName.toLowerCase()+(j.tagName==="INPUT"?"["+(j.getAttribute("type")||"text")+"]":"")).join(", "),q=[];for(let j of S.querySelectorAll('button:not([type="reset" i]), input[type="button" i], [role="button"]')){if(q.length>=3)break;let U=j;if(!isVisible(U))continue;let J=((U.tagName==="INPUT"?U.getAttribute("value"):U.textContent)||U.getAttribute("aria-label")||"").trim().replace(/\s+/g," ").slice(0,30);q.push('"'+J+'"');}if(q.length&&!(S.getAttribute("action")||"").trim())continue;let H=q.length?" Buttons present that are not a submit control (type=button or role=button): "+q.join(", ")+".":"";d.push({selector:uniqueSel(S),attribute:"data-asw-submit-control",currentValue:"",issueType:"form_missing_submit",wcag:"3.2.2",context:`form with ${E.length} visible field(s) (${N}) and no submit control`,needsAI:true,needsReview:true,reviewReason:"WCAG 3.2.2 On Input: this form has "+E.length+" visible field(s) ("+N+") and no submit control (no submit button, input[type=submit|image], or outside button via form=). Violation only when changing a field or pressing Enter causes an unexpected change of context (navigation, submission, reload) with no button to ask for it. Pass when it is a script-driven or search-style form with no such surprise."+H,outerHtml:(S.outerHTML||"").slice(0,300)});}return d},Eh={name:"formAttributes",cap:30,async detect(f){return f.evaluate(pI)}};var Sh={en:"the and of to is in that for with on are this you it be as at by from or your our we not have has was will can an all more about which their they",de:"der die das und ist nicht mit sich des den dem ein eine einen einer auf f\xFCr von zu im in auch sie wir ihr bei oder wird sind werden \xFCber nach aus wie noch nur unsere ihre sowie k\xF6nnen zum zur",nl:"de het een en van is dat op te in zijn voor met niet aan er ook als bij door wordt om uit worden naar onze uw jouw maar dan nog deze kunt wij u ons of wat die kan was",fr:"le la les et des est une du que pour dans qui pas sur au avec ce plus sont vous nous par ou leur cette mais \xEAtre aux votre vos notre nos",es:"el la los las y es una del que por para con se en no su sus m\xE1s al como pero este esta son nuestro nuestra nuestros usted tambi\xE9n de",it:"il lo la gli le e \xE8 di che per in una un del della con non sono pi\xF9 dei delle nel alla come anche questo questa nostro nostra nostri ti",pt:"o a os as e \xE9 de do da dos das que para com n\xE3o uma um em no na por mais seu sua nosso nossa voc\xEA tamb\xE9m s\xE3o",da:"og er det en at til af p\xE5 med for ikke den som de har vi kan vil fra jeres vores ogs\xE5 eller jer hvis efter",sv:"och \xE4r det en att till av p\xE5 med f\xF6r inte den som har vi kan ska fr\xE5n ocks\xE5 eller v\xE5ra v\xE5r din dina",nb:"og er det en at til av p\xE5 med for ikke den som har vi kan skal fra ogs\xE5 eller v\xE5re v\xE5r deg dine",pl:"i w na z do \u017Ce si\u0119 jest nie to o od jak dla po przez s\u0105 lub oraz nasz nasze mo\u017Ce tak\u017Ce jego",cs:"a v na se je \u017Ee s z do o to jako pro by nen\xED jsou nebo tak\xE9 ale jeho na\u0161e",ca:"el la els les i \xE9s de del dels que per amb en un una no es al als com m\xE9s per\xF2 aquest aquesta aquests s\xF3n seu seva nostre nostra hi ho ja tamb\xE9 o",gl:"o a os as e \xE9 de do da dos das que para con non unha un en no na nos nas por m\xE1is seu s\xFAa cando tam\xE9n pero este esta moi",af:"die en van is in dat op te vir nie met om wat sy hy hulle ons jy u was het aan as by ook maar of kan sal hierdie n ek julle deur baie"},Bo=new Map(Object.entries(Sh).map(([f,d])=>[f,new Set(d.split(" "))])),Ch=(()=>{let f=new Map;for(let[g,h]of Object.entries(Sh))for(let p of new Set(h.split(" "))){let y=f.get(p)||[];y.push(g),f.set(p,y);}let d=new Map;for(let[g,h]of f)d.set(g,h.map(p=>[p,1/h.length]));return d})(),mI=[["ko",/\p{Script=Hangul}/gu],["el",/\p{Script=Greek}/gu],["he",/\p{Script=Hebrew}/gu],["th",/\p{Script=Thai}/gu],["ja",/[\p{Script=Hiragana}\p{Script=Katakana}]/gu],["zh",/\p{Script=Han}/gu]],ti;function hI(f){if(!/^[a-z]{2,3}$/.test(f))return false;if(ti===void 0)try{ti=new Intl.DisplayNames(["en"],{type:"language",fallback:"none"});}catch{ti=null;}if(!ti)return f.length===2;try{let d=ti.of(f);return !!d&&d.toLowerCase()!==f}catch{return false}}function Au(f){let d=String(f||"").trim().toLowerCase().match(/^([a-z]{2,3})(?:[-_][a-z0-9]{2,8})*$/);return !d||d[1]==="und"||d[1]==="mul"||d[1]==="zxx"?"":hI(d[1])?d[1]:""}function gI(f){if(!f)return "";let d;try{d=new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(f)?f:`https://${f}`);}catch{return ""}let g=/^([a-z]{2})(?:[-_][a-z]{2,4})?$/i,h=d.hostname.toLowerCase().split(".");if(h.length>=3&&g.test(h[0])){let y=Au(h[0]);if(y)return y}let p=d.pathname.split("/").filter(Boolean)[0]||"";return g.test(p)?Au(p):""}function vI(f){let d=String(f||"").slice(0,2e4),g={lean:null,confident:false,ruledOut:new Set};if(!d.trim())return g;let h=(d.match(/\p{L}/gu)||[]).length;if(h>=40){let U=mI.map(([T,P])=>[T,(d.match(P)||[]).length]),J=U.find(([T])=>T==="ja")[1],k=U.find(([T])=>T==="zh")[1],v=J>=Math.max(5,(J+k)*.05)?[["ja",J+k]]:[["zh",k]],D=[...U.filter(([T])=>T!=="ja"&&T!=="zh"),...v].sort((T,P)=>P[1]-T[1]);if(D[0][1]/h>=.6)return {lean:D[0][0],confident:true,ruledOut:new Set(Bo.keys())}}let p=d.toLowerCase().match(/\p{L}+/gu)||[];if(!p.length)return g;let y={};for(let U of p){let J=Ch.get(U);if(J)for(let[k,v]of J)y[k]=(y[k]||0)+v;}let A=new Map;for(let U of p)Ch.has(U)&&A.set(U,(A.get(U)||0)+1);let w=new Map,F=new Map;for(let[U,J]of Bo){let k=0,v=0;for(let[D,T]of A)J.has(D)&&(k+=T,v++);w.set(U,k/p.length),F.set(U,v);}let R=p.length>=30,_=new Set(R?[...w].filter(([,U])=>U<.12).map(([U])=>U):[]),x=(U,J)=>{let k=Bo.get(U),v=Bo.get(J),D=0;for(let[T,P]of A)k.has(T)&&!v.has(T)&&(D+=P);return D},S=Object.entries(y).sort((U,J)=>J[1]-U[1]);if(!S.length)return {...g,ruledOut:_};let[E,M]=S[0],L=S[1]?.[1]||0,q=(R?[...w].filter(([U,J])=>U!==E&&J>=.12).map(([U])=>U):[]).every(U=>{let J=x(E,U);return J>=5&&J>=x(U,E)*2}),H=R&&M>=5&&(w.get(E)||0)>=.12&&(F.get(E)||0)>=6&&q,j=M>=2&&(H||M>=L*1.5)?E:null;return {lean:j,confident:!!j&&H,ruledOut:_}}function kh(f){let d=[...new Set((f.declared||[]).map(Au).filter(Boolean))],g=gI(f.url),h=vI(f.text);if(h.confident&&h.lean)return d.some(p=>p!==h.lean)||g&&g!==h.lean?null:{lang:h.lean,source:"text"};if(d.length===1){let p=d[0];return h.lean&&h.lean!==p||h.ruledOut.has(p)||g&&g!==p?null:{lang:p,source:"declared"}}return d.length>1?null:g&&h.lean===g&&!h.ruledOut.has(g)?{lang:g,source:"url"}:null}function bI(){let f=document.documentElement;if(!f||(f.getAttribute("lang")||"").trim())return null;let d=String(typeof location<"u"&&location.href||""),g=y=>y.replace(/[#?].*$/,"").replace(/\/+$/,""),h=null;try{let y=document.querySelectorAll('link[rel="alternate"][hreflang]');for(let A=0;A<y.length;A++){let w=y[A],F=w.getAttribute("hreflang")||"";if(F&&F.toLowerCase()!=="x-default"&&w.href&&g(w.href)===g(d)){h=F;break}}}catch{}return {url:d,text:(()=>{let y=document.body;if(!y)return "";if(typeof y.innerText=="string")return y.innerText.slice(0,2e4);let A=y.cloneNode(true);return A.querySelectorAll('script, style, noscript, template, [hidden], [aria-hidden="true"]').forEach(w=>w.remove()),String(A.textContent||"").replace(/\s+/g," ").slice(0,2e4)})(),declared:[f.getAttribute("xml:lang"),document.querySelector('meta[http-equiv="content-language" i]')?.getAttribute("content")??null,document.querySelector('meta[name="language" i]')?.getAttribute("content")??null,document.querySelector('meta[property="og:locale"]')?.getAttribute("content")??null,document.body?.getAttribute("lang")??null,h]}}function yI(f){if(!f)return [];let d=kh(f),g={selector:"html",attribute:"lang",currentValue:"",issueType:"missing_document_language",wcag:"3.1.1",needsAI:false};return d?[{...g,context:`Document language not declared; detected "${d.lang}" from page ${d.source}`,fixValue:d.lang}]:[{...g,context:"Document language not declared, and the page text does not settle which language it is (short, mixed, conflicting, or a language without a detector list) \u2014 set <html lang> by hand",manualFix:true}]}var Th={name:"htmlLang",async detect(f){let d=await f.evaluate(bI);return yI(d)}};var wI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=document.querySelectorAll("iframe");for(let p of h){if(g.length>=50)break;if(p.closest(f))continue;let y=false;for(let H=p;H;H=H.parentElement)if((H.getAttribute("aria-hidden")||"").trim()==="true"){y=true;break}let A=(p.getAttribute("role")||"").trim().toLowerCase();if(y||A==="presentation"||A==="none"||p.closest("[inert]"))continue;let w=/^[\t\n\f\r ]*([-+]?\d+)/.exec(p.getAttribute("tabindex")||"");if(w&&parseInt(w[1],10)<0)continue;let F=getComputedStyle(p);if(p.getClientRects().length===0||F.visibility==="hidden"||F.visibility==="collapse"||(p.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0)continue;let R="",_=(p.getAttribute("aria-labelledby")||"").trim();if(_){let H=_.split(/\s+/);for(let j=0;j<H.length;j++){let U=document.getElementById(H[j]);U&&(R+=" "+(U.textContent||""));}R=R.trim();}if(R||(R=(p.getAttribute("aria-label")||"").trim()),R)continue;let x=(p.getAttribute("title")||"").trim(),S=x.length===0;if(!S)continue;let E=(p.getAttribute("src")||"").toLowerCase(),M=uniqueSel(p),L=getNearbyContext(p),N=(document.documentElement.getAttribute("lang")||"").trim(),q="src: "+E.slice(0,120)+(L.nearbyHeading?" | heading: "+L.nearbyHeading:"")+(L.cardText?" | nearby text: "+L.cardText:"")+(N?" | page language: "+N:"");S&&g.push({selector:M,attribute:"title",currentValue:x,issueType:"missing_label",wcag:"4.1.2",context:q,needsAI:true,outerHtml:p.outerHTML.slice(0,300)});}return g},Rh={name:"iframeTitle",cap:50,async detect(f){return f.evaluate(wI)}};var xI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",d=["hidden","submit","button","reset","image","checkbox","radio","file","range","color"],h=[],p={email:"email",tel:"tel",password:"current-password"},y=[{pattern:"organization",autocomplete:"organization"},{pattern:"telephone",autocomplete:"tel"},{pattern:"first-name",autocomplete:"given-name"},{pattern:"first_name",autocomplete:"given-name"},{pattern:"last-name",autocomplete:"family-name"},{pattern:"last_name",autocomplete:"family-name"},{pattern:"firstname",autocomplete:"given-name"},{pattern:"postcode",autocomplete:"postal-code"},{pattern:"birthday",autocomplete:"bday"},{pattern:"lastname",autocomplete:"family-name"},{pattern:"province",autocomplete:"address-level1"},{pattern:"username",autocomplete:"username"},{pattern:"website",autocomplete:"url"},{pattern:"address",autocomplete:"street-address"},{pattern:"company",autocomplete:"organization"},{pattern:"country",autocomplete:"country"},{pattern:"mobile",autocomplete:"tel"},{pattern:"postal",autocomplete:"postal-code"},{pattern:"street",autocomplete:"street-address"},{pattern:"e-mail",autocomplete:"email"},{pattern:"email",autocomplete:"email"},{pattern:"phone",autocomplete:"tel"},{pattern:"state",autocomplete:"address-level1"},{pattern:"fname",autocomplete:"given-name"},{pattern:"lname",autocomplete:"family-name"},{pattern:"city",autocomplete:"address-level2"},{pattern:"bday",autocomplete:"bday"},{pattern:"name",autocomplete:"name"},{pattern:"zip",autocomplete:"postal-code"},{pattern:"url",autocomplete:"url"}],A=document.querySelectorAll("input, select, textarea");for(let w of A){if(h.length>=50)break;if(w.closest(f))continue;let F=w,R=(F.getAttribute("type")||"text").toLowerCase();if(d.includes(R)||F.getAttribute("autocomplete")||!isVisible(F))continue;let _="";if(p[R]&&(_=p[R]),!_){let S=(F.getAttribute("name")||"").toLowerCase(),E=(F.getAttribute("id")||"").toLowerCase(),M=(F.getAttribute("placeholder")||"").toLowerCase(),L=S+" "+E+" "+M;for(let N of y)if(L.includes(N.pattern)){_=N.autocomplete;break}}if(!_)continue;if(_==="country"){let S=false;if(F.tagName==="SELECT"){let E=Array.from(F.options).map(M=>(M.value||"").trim()).filter(Boolean);S=E.length>0&&E.every(M=>/^[A-Za-z]{2}$/.test(M));}S||(_="country-name");}let x=uniqueSel(F);h.push({selector:x,attribute:"autocomplete",currentValue:"",issueType:"identify_input_purpose",wcag:"1.3.5",context:"type: "+R+" | name: "+(F.getAttribute("name")||"")+" | id: "+(F.getAttribute("id")||""),needsAI:false,fixValue:_});}return h},Fh={name:"inputPurpose",cap:50,async detect(f){return f.evaluate(xI)}};var DI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=['a[href]:not([href=""])',"button:not([disabled])",'input:not([type="hidden"]):not([disabled])',"select:not([disabled])","textarea:not([disabled])",'[role="button"]:not([aria-disabled="true"])','[role="link"]:not([aria-disabled="true"])','[role="menuitem"]:not([aria-disabled="true"])','[role="tab"]:not([aria-disabled="true"])','[role="checkbox"]:not([aria-disabled="true"])','[role="radio"]:not([aria-disabled="true"])'].join(",");function p(S){let E=S.getBoundingClientRect();if(E.width===0&&E.height===0)return false;let M=-window.scrollX,L=-window.scrollY,N=document.documentElement,q=getComputedStyle(S).position;if(q==="fixed")return false;let H=q==="absolute";for(let j=S.parentElement;j&&j!==document.body&&j!==N;j=j.parentElement){let U=getComputedStyle(j);if(H){if(U.position==="static")continue;H=false;}if(/auto|scroll/.test(U.overflowX+" "+U.overflowY))return false;let J=U.overflowX==="hidden"||U.overflowX==="clip",k=U.overflowY==="hidden"||U.overflowY==="clip";if(!J&&!k)continue;let v=j.getBoundingClientRect();if(J&&(E.right<=v.left||E.left>=v.right)||k&&(E.bottom<=v.top||E.top>=v.bottom))return true;if(q=U.position,q==="fixed")return false;q==="absolute"&&(H=true);}return E.right<=M||E.bottom<=L||E.left>=M+N.scrollWidth||E.top>=L+N.scrollHeight}let y='[role="tablist"],[aria-roledescription="carousel" i],[aria-roledescription="slide" i],[class*="slick"],[class*="swiper"],[class*="owl"],[class*="splide"],[class*="flickity"]',A='nav,section,article,aside,main,header,footer,form,ul,ol,dl,[role="navigation"],[role="region"],[role="main"],[role="complementary"],[role="banner"],[role="contentinfo"],[role="list"],[role="form"],[role="search"]',w='a[href],area[href],button,input:not([type="hidden"]),select,textarea,summary,iframe';function F(S){if(S.tagName==="A"){let M=S.href;if(M){for(let L of document.querySelectorAll("a[href]"))if(!(L===S||L.href!==M||L.tabIndex<0)&&!L.closest('[aria-hidden="true"],[hidden],[inert]')&&!(typeof isVisible=="function"&&!isVisible(L)))return "another focusable link to the same href exists"}}if(S.closest(y))return "inside a slider / carousel / tablist that manages its own tab order";if(S.hasAttribute("aria-controls")||S.hasAttribute("aria-selected"))return "carries aria-controls / aria-selected (a widget manages its state)";if(S.closest('[inert],[aria-hidden="true"]'))return "inside an inert or aria-hidden container";let E=S.parentElement?.closest(A);if(E){let M=0;for(let L of E.querySelectorAll(w))L!==S&&L.getAttribute("tabindex")?.trim()==="-1"&&M++;if(M>=2)return `${M} other controls in the same <${E.tagName.toLowerCase()}> also carry tabindex="-1" (inert by design)`}for(let M=S.parentElement;M&&M!==document.body&&!M.matches(w);M=M.parentElement){let L=parseInt(M.getAttribute("tabindex")||"",10);if(!Number.isFinite(L)||L<0)continue;let N=[...M.querySelectorAll(w)];if(N.length>=2&&N.every(q=>q.getAttribute("tabindex")?.trim()==="-1"))return 'a focusable ancestor owns focus and every control inside it carries tabindex="-1"';break}return ""}let R=document.querySelectorAll(h);for(let S of R){if(g.length>=30)break;if(S.closest(f)||!S.hasAttribute("tabindex"))continue;let E=S.getAttribute("tabindex")||"",M=parseInt(E,10);if(!Number.isFinite(M)||M===0||S.getAttribute("aria-disabled")==="true"||S.getAttribute("aria-hidden")==="true"||S.closest('[aria-hidden="true"]')||S.closest("[hidden]"))continue;let L=S.closest('[role="dialog"],[role="alertdialog"],dialog,[role="menu"],[role="listbox"]');if(L&&!(L.hasAttribute("open")||L.getAttribute("aria-modal")==="true"||L.getAttribute("aria-hidden")!=="true")||typeof isVisible=="function"&&!isVisible(S)||M<0&&p(S))continue;let N=(S.getAttribute("role")||"").toLowerCase();if(M<0&&S.closest('[role="tablist"],[role="menu"],[role="menubar"],[role="listbox"],[role="tree"],[role="treegrid"],[role="grid"],[role="radiogroup"],[role="toolbar"]'))continue;if(M<0&&S.tagName==="A"){if((S.getAttribute("aria-current")||"").trim().toLowerCase()==="page")continue;let D=(S.getAttribute("href")||"").trim();if(D&&!D.includes("#"))try{let T=new URL(D,document.baseURI),P=new URL(location.href);if(T.hash="",P.hash="",T.href===P.href)continue}catch{}}let H=typeof uniqueSel=="function"?uniqueSel(S):"",j=typeof getNearbyContext=="function"?getNearbyContext(S):{parentTag:S.tagName.toLowerCase(),nearbyHeading:""},U,J,k=M<0?F(S):"";M<0?(U="keyboard_trap",J="2.1.1"):(U="focus_order_disruption",J="2.4.3");let v=[];v.push("tabindex: "+M),v.push("tag: "+S.tagName.toLowerCase()),N&&v.push("role: "+N),j.nearbyHeading&&v.push("heading: "+j.nearbyHeading),v.push("parent: "+j.parentTag),k&&v.push('author tabindex="-1" looks intentional: '+k),g.push({selector:H,attribute:"tabindex",currentValue:String(M),issueType:U,wcag:J,context:v.join(" | "),needsAI:false,fixValue:"0",...k?{manualFix:true,reviewReason:`the author's tabindex="-1" looks intentional (${k}); tabindex="0" could add a duplicate or out-of-sync tab stop. Confirm the control must be reachable on its own before applying.`}:{},outerHtml:(S.outerHTML||"").slice(0,300)});}let _=/\b(?:this|(?:event|evt|e)\.(?:target|currentTarget))\.focus\s*\(\s*\)/,x=/\b(?:if|else|switch|while|for)\b|&&|\|\||\?/;for(let S of document.querySelectorAll("[onblur]")){if(g.length>=30)break;if(S.closest(f))continue;let E=S.getAttribute("onblur")||"";!_.test(E)||x.test(E)||S.matches('[disabled], [aria-disabled="true"]')||S.closest('[aria-hidden="true"], [hidden]')||typeof isVisible=="function"&&!isVisible(S)||g.push({selector:typeof uniqueSel=="function"?uniqueSel(S):S.tagName.toLowerCase(),attribute:"onblur",currentValue:E.slice(0,100),issueType:"keyboard_trap_self_focus",wcag:"2.1.2",context:"tag: "+S.tagName.toLowerCase()+" | onblur returns focus to the same element, so keyboard focus cannot leave it",needsAI:false,outerHtml:(S.outerHTML||"").slice(0,300)});}return g},Ih={name:"keyboardTrap",cap:30,async detect(f){return f.evaluate(DI)}};var AI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",d=[],h=document.querySelectorAll('button, a[href], [role="button"], [role="link"], input[type="submit"], input[type="button"]');for(let p of Array.from(h)){if(p.closest(f)||typeof isVisible=="function"&&!isVisible(p))continue;let y="",A=[],w=[];try{let J=/(?:^|[\s_-])(?:icon|material-icons|material-symbols(?:-\w+)?|fa|fas|far|fab|fal|glyphicon|dashicons)(?:[\s_-]|$)/i,k=/icon|awesome|glyph|material symbols|dashicons/i,v=!1;try{v=k.test(getComputedStyle(p).fontFamily||"");}catch{}let D=Oe=>parseFloat(Oe||"0")||0,T=Oe=>{if(Oe.hasAttribute("hidden"))return !0;let Ie=(Oe.getAttribute("style")||"").toLowerCase().replace(/\s+/g,"");if(/clip:rect\(0/.test(Ie)||/clip-path:inset\((50|100)%/.test(Ie))return !0;if(/position:(absolute|fixed)/.test(Ie)){if(/(width|height):[01](px)?(;|!|$)/.test(Ie))return !0;let nt=Ie.match(/(?:left|top):(-\d+)/);if(nt&&parseInt(nt[1],10)<=-999)return !0}return !1},P=(Oe,Ie)=>{if(Oe.hasAttribute("hidden")||D(Ie.fontSize)===0)return !0;let nt=(Ie.clip||"").replace(/\s+/g,"");if(/^rect\(0(px)?,?0(px)?,?0(px)?,?0(px)?\)$/.test(nt)||/inset\((50|100)%\)/.test(Ie.clipPath||""))return !0;let _t=Oe.getBoundingClientRect();return !!(/hidden|clip/.test(Ie.overflow||Ie.overflowX+" "+Ie.overflowY)&&(_t.width<=1||_t.height<=1)||(Ie.position==="absolute"||Ie.position==="fixed")&&(D(Ie.left)<=-999||D(Ie.top)<=-999||_t.right<=0||_t.bottom<=-window.scrollY))},B=!1,z='h1, h2, h3, h4, h5, h6, [role="heading"]',X=0;try{X=D(getComputedStyle(p).fontSize);}catch{}let te=Oe=>{try{let Ie=getComputedStyle(Oe);return {size:D(Ie.fontSize),weight:parseInt(Ie.fontWeight||"400",10)||400}}catch{return {size:0,weight:400}}},ee=Oe=>{let Ie=Oe.closest(z);return !!Ie&&p.contains(Ie)},Z=Oe=>{for(let Ie=Oe;Ie&&Ie!==p;Ie=Ie.parentElement)try{let nt=getComputedStyle(Ie).display||"";if(nt&&!/^inline(?!-block)|^contents$/.test(nt))return Ie}catch{return p}return p},ie=Oe=>Oe.split(/\s+/).filter(Ie=>/[\p{L}\p{N}]/u.test(Ie)).length,be=document.createTreeWalker(p,NodeFilter.SHOW_TEXT),de;for(;de=be.nextNode();){let Oe=de.parentElement;if(!Oe)continue;let Ie=(de.textContent||"").trim();if(!Ie||Oe===p&&v)continue;let nt=!1,_t=!1;for(let st=Oe;st&&st!==p;st=st.parentElement){if(st.tagName==="KBD"&&(_t=!0),st.tagName==="NOSCRIPT"||st.tagName==="SCRIPT"||st.tagName==="STYLE"||st.tagName==="TEMPLATE"){nt=!0;break}if(st.getAttribute("aria-hidden")==="true"){nt=!0;break}if(J.test(st.getAttribute("class")||"")||J.test(st.getAttribute("id")||"")){nt=!0;break}try{let lt=getComputedStyle(st);if(lt.display==="none"||lt.visibility==="hidden"){nt=!0;break}if(parseFloat(lt.opacity||"1")===0){nt=!0;break}if(k.test(lt.fontFamily||"")){nt=!0;break}if(P(st,lt)){nt=!0;break}}catch{if(T(st)){nt=!0;break}st.tagName==="SPAN"&&(B=!0);}}!nt&&/[\p{L}\p{N}]/u.test(Ie)&&w.push({text:Ie,kbd:_t,p:Oe});}let ke=0,De=w.length;for(;ke<De&&w[ke].kbd;)ke++;for(;De>ke&&w[De-1].kbd;)De--;let Be=ke<De?w.slice(ke,De):w,_e=Be.map(Oe=>te(Oe.p)),Ee=Be.map(Oe=>ee(Oe.p)),bt=_e.map(Oe=>Oe.size).filter(Oe=>Oe>0),kt=bt.length?Math.min(...bt):0,He=bt.length?Math.max(...bt):0,Mt=Math.min(..._e.map(Oe=>Oe.weight)),br=0;_e.forEach((Oe,Ie)=>{!Ee[Ie]&&Oe.weight<600&&Oe.size>br&&(br=Oe.size);});let Bt=Be.map(Oe=>Z(Oe.p)),Gt=Oe=>Be.some((Ie,nt)=>Bt[nt]===Bt[Oe]&&_e[nt].weight<600&&!Ee[nt]),Tt=Be.map((Oe,Ie)=>Ee[Ie]||He>kt&&_e[Ie].size>=He||_e[Ie].weight>=600&&Mt<600&&_e[Ie].size>=br&&!Gt(Ie)),tr=Be.filter((Oe,Ie)=>Tt[Ie]),Ae=Be;if(tr.length&&tr.length<Be.length){let Oe=ie(tr.map(st=>st.text).join(" ")),Ie=(st,lt)=>{for(let Jt=st.p;Jt&&Jt!==p;Jt=Jt.parentElement)if(Jt.tagName==="TIME"||Jt.tagName==="SMALL")return !0;return X>0&&_e[lt].size>0&&_e[lt].size<X},nt=st=>{let lt=Bt[st];if(tr.some(Vr=>lt.contains(Vr.p)))return !1;let Jt=ie(Be.filter((Vr,it)=>!Tt[it]&&Bt[it]===lt).map(Vr=>Vr.text).join(" "));return Jt>=5&&Jt>Oe},_t=Be.filter((st,lt)=>Tt[lt]||!Ie(st,lt)&&!nt(lt));_t.length&&(Ae=_t);}for(let Oe of Ae)A.push(Oe.text);y=B?"":A.join(" ").trim().toLowerCase();}catch{y=((p.innerText!=null?p.innerText:p.textContent)||"").trim().toLowerCase();}if(!y||!/[\p{L}\p{N}]/u.test(y)||/^\p{L}$/u.test(y))continue;let R=/[\p{L}\p{N}\p{M}]/u,_=(p.getAttribute("aria-label")||"").trim().toLowerCase();if(!_){let J=p.getAttribute("aria-labelledby");J&&(_=(typeof __resolveIdRefs=="function"?__resolveIdRefs(J):"").toLowerCase());}if(!_)continue;let x=J=>{let k=J.toLowerCase().replace(/\([^)]*\)/g," ");return (/[\p{L}\p{N}]/u.test(k)?k:J.toLowerCase()).replace(/[\p{S}\u2026*]/gu," ").replace(/\s+/g," ").trim().normalize("NFC")},S=x(_),E=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Thai}\p{Script=Lao}\p{Script=Khmer}\p{Script=Myanmar}]/u,M=(J,k)=>!J||!R.test(J)||E.test(J)||E.test(k),L=(J,k)=>{if(k<=0)return "";let v=J.charCodeAt(k-1);return v>=56320&&v<=57343&&k>=2?J.slice(k-2,k):J.charAt(k-1)},N=(J,k)=>{let v=J.codePointAt(k);return v===void 0?"":String.fromCodePoint(v)},q=J=>{let k=J.substring(0,40);if(!k)return true;let v=J.length>=40,D=N(k,0),T=L(k,k.length);for(let P=0;;){let B=S.indexOf(k,P);if(B<0)return false;if(M(L(S,B),D)&&(v||M(N(S,B+k.length),T)))return true;P=B+1;}};if(q(x(y))||A.length>1&&q(x(A.join(""))))continue;if(A.length>1){let J=true,k=0;for(let v of A){let D=x(v.toLowerCase());if(!D)continue;let T=D.slice(0,40),P=-1;for(let B=k;;){let z=S.indexOf(T,B);if(z<0)break;let X=M(L(S,z),N(T,0)),te=T.length>=40||M(N(S,z+T.length),L(T,T.length));if(X&&te){P=z;break}B=z+1;}if(P<0){J=false;break}k=P+T.length;}if(J)continue}let H=typeof uniqueSel=="function"?uniqueSel(p):"",j=typeof getNearbyContext=="function"?getNearbyContext(p):{parentTag:p.tagName.toLowerCase(),nearbyHeading:""},U=[];U.push("visible: "+y.slice(0,40)),U.push("aria-label: "+_.slice(0,60)),j.nearbyHeading&&U.push("heading: "+j.nearbyHeading),U.push("parent: "+j.parentTag),d.push({selector:H,attribute:"aria-label",currentValue:_,issueType:"label_in_name",wcag:"2.5.3",context:U.join(" | "),needsAI:true,outerHtml:(p.outerHTML||"").slice(0,300)});}return d},Mh={name:"labelInName",cap:40,async detect(f){return f.evaluate(AI)}};var _I=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI]",g=["click here","click","here","read more","more","link","this","go","info","details","learn more","see more","view","open","tap"],h=[];function p(_){if(!_)return "";let x=_.split("#")[0];return x.length>1&&x.charAt(x.length-1)==="/"&&(x=x.substring(0,x.length-1)),x}function y(_){let x=(_.getAttribute("aria-label")||"").trim();return x||(_.textContent||"").trim().replace(/\s+/g," ")}function A(_){return !!_.closest('nav, [role="navigation"], [role="menubar"], [class*=breadcrumb], [aria-label*="breadcrumb" i]')}let w={},F=document.querySelectorAll("a[href]");for(let _=0;_<F.length;_++){let x=F[_];if(x.closest(f)||x.getAttribute("aria-hidden")==="true"||!isVisible(x))continue;let S=x.getAttribute("href")||"";if(!S)continue;let E=S.toLowerCase();if(E.charAt(0)==="#"||E.indexOf("javascript:")===0||E.indexOf("mailto:")===0||E.indexOf("tel:")===0)continue;let M=x.href||S,L=p(M);if(!L||A(x))continue;let N=(x.textContent||"").trim(),q=!!x.querySelector("img, svg, picture");if(!N&&q)continue;let H=y(x);if(!H)continue;let j=H.toLowerCase();j===E||j===M.toLowerCase()||(w[L]||(w[L]=[]),w[L].push(x));}let R=Object.keys(w);for(let _=0;_<R.length&&!(h.length>=30);_++){let x=w[R[_]];if(!x||x.length<2)continue;let S={},E="";for(let q=0;q<x.length;q++){let H=y(x[q]),j=H.toLowerCase();S[j]=true,H.length>E.length&&(E=H);}if(Object.keys(S).length<2)continue;let L=E.toLowerCase().trim();if(L.length<5)continue;let N=false;for(let q=0;q<g.length;q++)if(L===g[q]){N=true;break}if(!N)for(let q=0;q<x.length&&!(h.length>=30);q++){let H=x[q],j=y(H);if(j.toLowerCase()===L)continue;let U=uniqueSel(H);h.push({selector:U,attribute:"aria-label",currentValue:j,issueType:"link_consistency",wcag:"3.2.4",context:"Same href as "+x.length+' link(s) on this page with different text (e.g. "'+E.slice(0,80)+'"). If these labels also differ across pages, unify the VISIBLE text \u2014 do not mask it with aria-label.',needsAI:false,needsReview:true,reviewReason:"WCAG 3.2.4 is a cross-page criterion; same-page label variation may be intentional and cannot be auto-verified from one page",outerHtml:H.outerHTML.slice(0,300)});}}return h},Lh={name:"linkConsistency",cap:30,async detect(f){return f.evaluate(_I)}};var EI=()=>{let d=[],g=[".pdf",".doc",".docx",".xls",".xlsx",".zip",".csv",".ppt",".pptx",".txt",".rtf",".epub"],h="";try{h=window.location&&window.location.hostname||"";}catch{h="";}h=(h||"").toLowerCase();function p(M,L){if(!M||!L)return false;if(M===L||M.endsWith("."+L)||L.endsWith("."+M))return true;let N=q=>{let H=q.split(".");if(H.length<=2)return q;let j=H[H.length-1],U=H[H.length-2],J=["co","com","net","org","ac","gov","edu"],k=j.length===2&&J.indexOf(U)>=0?3:2;return H.slice(-k).join(".")};return N(M)===N(L)}function y(M){return M.indexOf("www.")===0?M.slice(4):M}function A(M){if(!M)return "";let L=M.toLowerCase();if(L.charAt(0)==="#"||L.charAt(0)==="/"||L.charAt(0)==="?"||L.indexOf("javascript:")===0||L.indexOf("mailto:")===0||L.indexOf("tel:")===0)return "";try{return (new window.URL(M,window.location.href).hostname||"").toLowerCase()}catch{return ""}}function w(M){if(!M)return "";let L=M,N=L.indexOf("?");N>=0&&(L=L.slice(0,N));let q=L.indexOf("#");q>=0&&(L=L.slice(0,q)),L=L.toLowerCase();for(let H=0;H<g.length;H++){let j=g[H];if(L.length>=j.length&&L.slice(L.length-j.length)===j)return j}return ""}function F(M){let L=[],N=(M.getAttribute("aria-label")||"").trim();N&&L.push(N);let q=(M.getAttribute("title")||"").trim();q&&L.push(q);let H=M.getAttribute("aria-labelledby");if(H)try{let j=typeof __resolveIdRefs=="function"?__resolveIdRefs(H):"";j&&L.push(j);}catch{}return L.push((M.textContent||"").trim()),L.join(" ").toLowerCase()}function R(M,L,N){let q="";try{typeof getAccessibleName=="function"&&(q=(getAccessibleName(M)||"").trim());}catch{}let H=(L||N||q||M.textContent||"").replace(/\s+/g," ").trim();return H||(M.getAttribute("href")||"").trim().replace(/^https?:\/\//i,"").replace(/\/+$/,"")}let _=(document.documentElement.getAttribute("lang")||"").trim();function x(M){return "current name: "+M.slice(0,200)+(_?" | page language: "+_:"")+" | keep the current name and add the notice, in the page language"}let S=document.querySelectorAll("a"),E=S.length;for(let M=0;M<E&&!(d.length>=50);M++){let L=S[M];if(!L||isWidget(L)||L.getAttribute("aria-hidden")==="true")continue;try{if(L.closest&&L.closest('[aria-hidden="true"]'))continue}catch{}if(!isVisible(L))continue;let N=L.getAttribute("href");if(N==null)continue;let q=String(N).trim();if(!q)continue;let H=q.toLowerCase(),j=F(L),U=(L.getAttribute("rel")||"").toLowerCase(),J=uniqueSel(L),k=(L.getAttribute("target")||"").toLowerCase(),v=(L.outerHTML||"").slice(0,300);if(q==="#"||H.indexOf("javascript:")===0||q.charAt(0)==="#"&&q.length>1)continue;let D=w(H);if(D){let z=L.hasAttribute&&L.hasAttribute("download"),X=j.indexOf(D)>=0||new RegExp("\\b"+D.slice(1)+"\\b").test(j)||j.indexOf("download")>=0;if(!z&&!X){let te=R(L,(L.getAttribute("aria-label")||"").trim(),"");d.push({selector:J,attribute:"aria-label",currentValue:(L.getAttribute("aria-label")||"").trim(),issueType:"download_link_warning",wcag:"3.2.5",context:"download link \u2014 file type "+D+" | href: "+q.slice(0,120)+" | "+x(te),needsAI:true,outerHtml:v});continue}}let T=A(q),P=H.indexOf("http://")===0||H.indexOf("https://")===0||H.indexOf("//")===0,B=!!T&&!!h&&!p(y(T),y(h));if(k==="_blank"){let z=U.indexOf("noopener")>=0||U.indexOf("noreferrer")>=0,X=j.indexOf("new window")>=0||j.indexOf("new tab")>=0||j.indexOf("opens in")>=0;if(!X){let te=(L.getAttribute("aria-label")||"").trim(),ee="",Z=L.getAttribute("aria-labelledby")||"";if(!te&&Z)try{typeof __resolveIdRefs=="function"&&(ee=(__resolveIdRefs(Z)||"").trim());}catch{}let ie=R(L,te,ee),be=[];z||be.push("missing rel=noopener"),X||be.push('missing "new window" hint'),be.push("href: "+q.slice(0,120)),d.push({selector:J,attribute:"aria-label",currentValue:(L.getAttribute("aria-label")||"").trim(),issueType:"new_window_link",wcag:"3.2.5",context:be.join(" | ")+" | opens in a new window | "+x(ie),needsAI:true,outerHtml:v});continue}}if(B&&P){let z=U.indexOf("external")>=0,X=j.indexOf("external")>=0||j.indexOf("opens in")>=0||j.indexOf("new window")>=0||j.indexOf("new tab")>=0;if(!z&&!X){let te=(L.getAttribute("aria-label")||"").trim(),ee="",Z=L.getAttribute("aria-labelledby")||"";if(!te&&Z)try{typeof __resolveIdRefs=="function"&&(ee=(__resolveIdRefs(Z)||"").trim());}catch{}let ie=R(L,te,ee);d.push({selector:J,attribute:"aria-label",currentValue:(L.getAttribute("aria-label")||"").trim(),issueType:"external_link_warning",wcag:"3.2.5",context:"external: "+T+" (page: "+h+") | href: "+q.slice(0,120)+" | "+x(ie),needsAI:true,outerHtml:v});}}}return d},Ph={name:"linkWarnings",cap:50,async detect(f){return f.evaluate(EI)}};var CI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",g=[],h=new Set,p=document.querySelectorAll('main, [role="main"]'),y=[];return p.forEach(A=>{let w=getComputedStyle(A);w.display!=="none"&&w.visibility!=="hidden"&&y.push(A);}),p.forEach(A=>{if(g.length>=10||A.closest(f)||A.getAttribute("aria-hidden")!=="true")return;let w=getComputedStyle(A);if(w.display==="none"||w.visibility==="hidden"||A.closest('[role="dialog"]')||A.closest('[role="alertdialog"]')||A.closest("dialog")||y.some(x=>x!==A&&x.getAttribute("aria-hidden")!=="true"))return;let R=A.parentElement;for(;R&&R!==document.body&&R!==document.documentElement;){if(R.getAttribute("aria-hidden")==="true")return;R=R.parentElement;}let _=uniqueSel(A);h.has(_)||(h.add(_),g.push({selector:_,attribute:"aria-hidden",currentValue:"true",issueType:"main_content_hidden",wcag:"4.1.2",context:JSON.stringify({tag:A.tagName.toLowerCase(),role:A.getAttribute("role")||"",suggestion:'Main content container has aria-hidden="true", hiding the entire page from assistive technology. Set aria-hidden="false" to restore visibility.'}),needsAI:false,fixValue:"false",outerHtml:(A.outerHTML||"").slice(0,300)}));}),g},Oh={name:"mainContentHidden",cap:10,async detect(f){return f.evaluate(CI)}};var SI=()=>{let d=[];function g(A){return !!(!A||isWidget(A)||(A.getAttribute("aria-hidden")||"").trim().toLowerCase()==="true")}function h(A){return (A.outerHTML||"").slice(0,300)}let p=document.querySelectorAll("video");for(let A of p){if(d.length>=10)break;let w=A;if(g(w))continue;let F=w.hasAttribute("controls"),R=w.hasAttribute("autoplay"),_=w.hasAttribute("muted"),x=R||!w.paused&&!w.ended,S=typeof isVisible=="function"?isVisible(w):true;if(!F&&x&&S&&(d.push({selector:uniqueSel(w),attribute:"controls",currentValue:"",issueType:"missing_media_controls",wcag:"2.2.2",context:"video element missing player controls",needsAI:false,fixValue:"",outerHtml:h(w)}),d.length>=10))break;R&&!_&&d.push({selector:uniqueSel(w),attribute:"muted",currentValue:"",issueType:"unsafe_autoplay",wcag:"1.4.2",context:"video autoplays with sound \u2014 add muted",needsAI:false,fixValue:"",outerHtml:h(w)});}let y=document.querySelectorAll("audio");for(let A of y){if(d.length>=10)break;let w=A;if(g(w))continue;let F=w.hasAttribute("controls"),R=w.hasAttribute("autoplay"),_=R||!w.paused&&!w.ended;if(!F&&_&&(d.push({selector:uniqueSel(w),attribute:"controls",currentValue:"",issueType:"missing_media_controls",wcag:"2.2.2",context:"audio element missing player controls",needsAI:false,fixValue:"",outerHtml:h(w)}),d.length>=10))break;R&&d.push({selector:uniqueSel(w),attribute:"remove_attribute",currentValue:"autoplay",issueType:"unsafe_autoplay",wcag:"1.4.2",context:"audio element autoplays \u2014 remove autoplay attribute",needsAI:false,fixValue:"autoplay",outerHtml:h(w)});}return d},Nh={name:"mediaControls",cap:10,async detect(f){return f.evaluate(SI)}};var kI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=[],p=/^(image|photo|img|picture|pic|untitled|banner|hero|\d{1,2})$/i,y=/^(IMG[-_]?\d|DSC[-_]?\d|DSCN?\d|(?:screenshot|Screen\s*Shot|Bildschirmfoto|capture(?:\s+d['’]\s?[ée]cran)?)(?:$|\s+(?:from|at)\s+\d|[\s_-]*[\d(])|image\s*\d|foto|photo[-_]?\d|P\d{4,}|GOPR\d|DJI[-_]\d)/i,A=/pixel|track|beacon|doubleclick|facebook\.com\/tr\b/i,w=(x,S)=>{let E=x.getAttribute(S);if(E===null)return false;let M=parseFloat(E);return !isNaN(M)&&M<=1},F=document.querySelectorAll("img");for(let x of F){if(g.length>=50)break;if(x.closest(f)||x.closest("template, noscript, script"))continue;let S=x.getAttribute("src")||"",E=x.getAttribute("alt");if(S.startsWith("data:")||w(x,"width")||w(x,"height"))continue;let M=x.naturalWidth||0,L=x.naturalHeight||0;if(M>0&&L>0&&M<=3&&L<=3||x.getAttribute("role")==="presentation"||x.getAttribute("role")==="none"||x.getAttribute("aria-hidden")==="true")continue;let N=M||x.width,q=L||x.height,H=x.getBoundingClientRect(),j=!isVisible(x)||N<=2&&q<=2||H.width<=2&&H.height<=2||!!x.closest('[aria-hidden="true"]');if(j&&(E!==null||h.length>=50||A.test(S)))continue;let U=(x.getAttribute("aria-label")||"").trim(),J=(x.getAttribute("aria-labelledby")||"").trim();if(U||J)continue;if(E===null){let P=uniqueSel(x),B=getNearbyContext(x),z=[],X=x.closest("figure");if(X){let ie=X.querySelector("figcaption");ie&&z.push("figcaption: "+(ie.textContent||"").trim().slice(0,80));}B.nearbyHeading&&z.push("heading: "+B.nearbyHeading);let te=x.closest("a");if(te){let ie=te.getAttribute("href")||"",be=(te.textContent||"").trim().replace(/\s+/g," ");be&&z.push("link text: "+be.slice(0,60)),ie&&z.push("link href: "+ie.slice(0,80));}S&&z.push("src: "+S.slice(0,120)),z.push("parent: "+B.parentTag);let ee=S;try{ee=new URL(S,document.baseURI).href;}catch{}(j?h:g).push({selector:P,attribute:"alt",currentValue:"",issueType:"missing_alt",wcag:"1.1.1",context:z.join(" | "),needsAI:true,imageSrc:ee,outerHtml:x.outerHTML.slice(0,300)});continue}let k=(E||"").trim();if(k==="")continue;let v=/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$/i.test(k),D=p.test(k),T=y.test(k);if(v||D||T){let P=uniqueSel(x),B=getNearbyContext(x),z=[];B.nearbyHeading&&z.push("heading: "+B.nearbyHeading),S&&z.push("src: "+S.slice(0,120)),z.push("parent: "+B.parentTag);let X=S;try{X=new URL(S,document.baseURI).href;}catch{}g.push({selector:P,attribute:"alt",currentValue:k,issueType:"missing_alt",wcag:"1.1.1",context:z.join(" | "),needsAI:true,imageSrc:X,outerHtml:x.outerHTML.slice(0,300)});}}let R=globalThis;for(let x of Array.from(document.querySelectorAll("object"))){if(g.length>=50)break;if(x.closest(f)||x.closest('[aria-hidden="true"]')||x.getAttribute("aria-hidden")==="true")continue;let S=(x.getAttribute("role")||"").trim().toLowerCase();if(S==="presentation"||S==="none"||!R.isVisible(x))continue;let E=x.getAttribute("data")||"",M=(x.getAttribute("type")||"").trim().toLowerCase(),L=M.startsWith("image/"),N=/\.(png|jpe?g|gif|webp|bmp|svg)(\?[^#]*)?(#.*)?$/i.test(E);if(!E||!(L||!M&&N)||(x.getAttribute("aria-label")||"").trim()||(x.getAttribute("title")||"").trim())continue;let q=(x.getAttribute("aria-labelledby")||"").trim();q&&q.split(/\s+/).some(H=>(document.getElementById(H)?.textContent||"").trim())||x.closest('a, button, [role="button"], [role="link"]')||g.push({selector:R.uniqueSel(x),attribute:"aria-label",currentValue:"",issueType:"missing_alt",wcag:"1.1.1",context:"object image has no accessible name (fallback content does not name an object) | data: "+E.slice(0,120),needsAI:false,outerHtml:x.outerHTML.slice(0,300)});}let _=Array.from(document.querySelectorAll("script:not([src])")).map(x=>x.textContent||"");for(let x of Array.from(document.querySelectorAll("canvas"))){if(g.length>=50)break;if(x.closest(f)||x.closest('[aria-hidden="true"]')||x.getAttribute("aria-hidden")==="true")continue;let S=(x.getAttribute("role")||"").trim().toLowerCase();if(S==="presentation"||S==="none"||!R.isVisible(x)||(x.getAttribute("aria-label")||"").trim()||(x.getAttribute("aria-labelledby")||"").trim()||(x.getAttribute("title")||"").trim()||(x.textContent||"").trim()||x.children.length||x.closest('a, button, label, figure, [role="img"], [role="button"], [role="link"], [aria-label], [aria-labelledby], [aria-describedby]'))continue;let E=x.getBoundingClientRect();if(E.width<=30||E.height<=30)continue;let M=x.getAttribute("id");if(!M)continue;let L=new RegExp("#"+M.replace(/[^\w-]/g,"")+`\\b|getElementById\\(\\s*['"]`+M.replace(/[^\w-]/g,"")+`['"]`);_.some(q=>L.test(q)&&/\b(fillText|strokeText)\s*\(/.test(q))&&g.push({selector:R.uniqueSel(x),attribute:"aria-label",currentValue:"",issueType:"missing_alt",wcag:"1.1.1",context:"canvas draws text via script but has no accessible name or fallback content",needsAI:false,outerHtml:x.outerHTML.slice(0,300)});}for(let x of h){if(g.length>=50)break;g.push(x);}return g},qh={name:"missingAlt",cap:50,async detect(f){return f.evaluate(kI)}};var TI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude]",d='a[href], button, input:not([type="hidden"]), select, textarea, summary, [contenteditable]:not([contenteditable="false" i]), [role="button"], [role="link"], [role="checkbox"], [role="menuitem"], [role="tab"], [role="switch"], [role="option"], [role="radio"], [role="combobox"], [role="slider"], [role="textbox"]',g=["onclick","data-action","ng-click","@click","v-on:click"],h=E=>{if(getComputedStyle(E).visibility==="hidden")return false;for(let M=E;M&&M.nodeType===1;M=M.parentElement)if(getComputedStyle(M).display==="none")return false;return true},p=E=>Array.prototype.some.call(E.querySelectorAll("a:not([href])"),M=>h(M)&&!isHiddenFromAT(M)&&g.some(L=>M.hasAttribute(L))),y=E=>Array.prototype.some.call(E.querySelectorAll(d),M=>h(M)&&!isHiddenFromAT(M)),w=[];return document.querySelectorAll("div[onclick], span[onclick]").forEach(E=>{if(w.length>=50||E.closest(f)||!isVisible(E)||isHiddenFromAT(E)||y(E)||p(E))return;let M=E.getAttribute("role");if(M==="button"||M==="link"||M==="tab"||M==="menuitem"||M==="checkbox"||M==="radio")return;let L=uniqueSel(E),N=E.outerHTML.slice(0,300);w.push({selector:L,attribute:"role",currentValue:M||"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),hasOnclick:true,currentTabindex:E.getAttribute("tabindex")}),needsAI:false,fixValue:"button",outerHtml:N}),E.getAttribute("tabindex")===null&&w.push({selector:L,attribute:"tabindex",currentValue:"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),supplementary:'tabindex needed alongside role="button"'}),needsAI:false,fixValue:"0",outerHtml:N});}),document.querySelectorAll("a:not([href])").forEach(E=>{if(w.length>=50||E.closest(f)||!isVisible(E)||isHiddenFromAT(E)||E.getAttribute("role"))return;let L=E.hasAttribute("onclick"),N=E.getAttribute("data-action")||E.getAttribute("ng-click")||E.getAttribute("@click")||E.getAttribute("v-on:click");if(!L&&!N||y(E))return;let q=uniqueSel(E),H=E.outerHTML.slice(0,300);w.push({selector:q,attribute:"role",currentValue:"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:"a",href:E.getAttribute("href")||"",hasOnclick:L}),needsAI:false,fixValue:"button",outerHtml:H});}),document.querySelectorAll("nav, ol, ul").forEach(E=>{if(w.length>=50||E.closest(f)||!isVisible(E)||isHiddenFromAT(E))return;let M=(E.className&&typeof E.className=="string"?E.className:"").toLowerCase(),L=(E.getAttribute("id")||"").toLowerCase();if(!M.includes("breadcrumb")&&!M.includes("crumb")&&!L.includes("breadcrumb")&&!L.includes("crumb"))return;let N=E.querySelectorAll("a");if(N.length<2)return;let q=(E.getAttribute("aria-label")||"").toLowerCase(),H=E.getAttribute("role");if(q.includes("breadcrumb")||q.includes("crumb")||H==="navigation"&&q)return;let j=uniqueSel(E);w.push({selector:j,attribute:"aria-label",currentValue:q,issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),reason:"breadcrumb navigation missing aria-label",linkCount:N.length,pageLang:(document.documentElement.getAttribute("lang")||"").trim(),links:Array.prototype.slice.call(N,0,6).map(U=>(U.textContent||"").trim().slice(0,40)),otherLandmarkLabels:Array.prototype.slice.call(document.querySelectorAll('nav[aria-label], [role="navigation"][aria-label], [role="region"][aria-label], aside[aria-label]'),0,8).filter(U=>U!==E).map(U=>(U.getAttribute("aria-label")||"").trim().slice(0,60))}),needsAI:true,outerHtml:E.outerHTML.slice(0,300)});}),document.querySelectorAll("form, section, div").forEach(E=>{if(w.length>=50||E.closest(f)||!isVisible(E)||isHiddenFromAT(E))return;let M=(E.className&&typeof E.className=="string"?E.className:"").toLowerCase(),L=(E.getAttribute("id")||"").toLowerCase();if(!M.includes("search")&&!L.includes("search")||!E.querySelector('input[type="search"], input[type="text"], input[name*="search"], input[placeholder*="earch"]'))return;let q=E.getAttribute("role");if(q==="search"||E.closest('[role="search"]')||E.querySelector('[role="search"]')||Array.prototype.some.call(E.querySelectorAll("form, section, div"),U=>{let J=(U.className&&typeof U.className=="string"?U.className:"").toLowerCase(),k=(U.getAttribute("id")||"").toLowerCase();return !J.includes("search")&&!k.includes("search")||U.getAttribute("role")==="search"?false:!!U.querySelector('input[type="search"], input[type="text"], input[name*="search"], input[placeholder*="earch"]')}))return;let j=uniqueSel(E);w.push({selector:j,attribute:"role",currentValue:q||"",issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),reason:'search section missing role="search"'}),needsAI:false,fixValue:"search",outerHtml:E.outerHTML.slice(0,300)});}),document.querySelectorAll('[role="menu"], [role="menubar"]').forEach(E=>{if(E.closest(f))return;let M=E.getAttribute("role")||"menu",L=Array.from(E.querySelectorAll("a")).filter(q=>{if(!isVisible(q)||isHiddenFromAT(q))return false;let H=q.getAttribute("role");return H!=="menuitem"&&H!=="menuitemcheckbox"&&H!=="menuitemradio"});if(L.length===0)return;let N=uniqueSel(E);w.push({selector:N,attribute:"role",currentValue:M,issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:E.tagName.toLowerCase(),reason:`${L.length} link(s) inside role="${M}" without menuitem roles`,sample:L.slice(0,3).map(q=>(q.textContent||"").trim().slice(0,40))}),message:`container role="${M}" holds ${L.length} link(s) without menuitem roles \u2014 for site navigation use a nav list instead (role="menu" requires the full menu pattern: menuitem children plus arrow-key handling)`,needsAI:false,needsReview:true,reviewReason:'Adding role="menuitem" to plain navigation links is invalid ARIA when the menu pattern is not implemented. Prefer removing role="menu"/"menubar" from site navigation; keep it only for application menus built to the APG menu pattern.',outerHtml:E.outerHTML.slice(0,300)});}),w},Bh={name:"missingRoles",cap:50,async detect(f){return f.evaluate(TI)}};var RI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",g=[],h={main:'main, [role="main"]',navigation:'nav, [role="navigation"]',banner:'header, [role="banner"]',contentinfo:'footer, [role="contentinfo"]',complementary:'aside, [role="complementary"]',search:'[role="search"]'};for(let[p,y]of Object.entries(h))document.querySelectorAll(y).forEach(w=>{if(g.length>=30||w.closest(f)||typeof isVisible=="function"&&!isVisible(w))return;let F=w.parentElement,R=null;for(;F&&F!==document.body;){if(F.matches(y)){R=F;break}F=F.parentElement;}if((p==="banner"||p==="contentinfo")&&w.closest("article, section, aside, main, nav")||!R||w.getAttribute("aria-label")?.trim()||w.getAttribute("aria-labelledby")?.trim())return;let _=typeof uniqueSel=="function"?uniqueSel(w):"",x=typeof getNearbyContext=="function"?getNearbyContext(w):{nearbyHeading:""};g.push({selector:_,attribute:"role",currentValue:w.getAttribute("role")||w.tagName.toLowerCase(),issueType:"nested_landmark",wcag:"1.3.1",context:`nested-in: ${p} | tag: ${w.tagName.toLowerCase()} | heading: ${x.nearbyHeading||""}`,needsAI:false,fixValue:"generic",outerHtml:(w.outerHTML||"").slice(0,300)});});return g},Hh={name:"nestedLandmarks",cap:30,async detect(f){return f.evaluate(RI)}};var FI=()=>{let d=[],g=k=>typeof parseCssColor=="function"?parseCssColor(k):null,h=(k,v,D)=>typeof relLuminance=="function"?relLuminance(k,v,D):0,y=(k,v)=>typeof contrastRatio=="function"?contrastRatio(k,v):1;function A(k){let D=[0,0,0],T=0,P=z=>{let X=g(z||"");if(!X)return;let te=Math.max(0,Math.min(1,X[3]));if(te<=0)return;let ee=te*(1-T);D[0]+=X[0]*ee,D[1]+=X[1]*ee,D[2]+=X[2]*ee,T+=ee;};for(let z=k.parentElement;z&&T<.999999999;z=z.parentElement)P(getComputedStyle(z).backgroundColor);let B=1-T;return [Math.round(Math.min(255,D[0]+255*B)),Math.round(Math.min(255,D[1]+255*B)),Math.round(Math.min(255,D[2]+255*B))]}function w(k,v,D){return "#"+[k,v,D].map(T=>{let P=Math.max(0,Math.min(255,Math.round(T))).toString(16);return P.length===1?"0"+P:P}).join("")}function F(k,v,D){let T=h(v[0],v[1],v[2])>.5;return R(k,v,D,T)||R(k,v,D,!T)}function R(k,v,D,T){let P=0,B=1,z=null;for(let X=0;X<20;X++){let te=(P+B)/2,ee=T?[k[0]*(1-te),k[1]*(1-te),k[2]*(1-te)]:[k[0]+(255-k[0])*te,k[1]+(255-k[1])*te,k[2]+(255-k[2])*te],Z=[Math.round(ee[0]),Math.round(ee[1]),Math.round(ee[2])];y(Z,v)>=D?(z=Z,B=te):P=te;}return z}let _=(k,v)=>{let D=Math.max(0,Math.min(1,k[3]));return [k[0]*D+v[0]*(1-D),k[1]*D+v[1]*(1-D),k[2]*D+v[2]*(1-D)]};function x(k,v){let D=k.boxShadow||"";if(!D||D==="none")return null;let T=[],P=0,B="";for(let X of D)X==="("&&P++,X===")"&&P--,X===","&&P===0?(T.push(B),B=""):B+=X;B&&T.push(B);let z=null;for(let X of T){let te=X.match(/rgba?\([^)]*\)/),ee=te?g(te[0]):null;if(!ee||ee[3]<=0||(X.replace(/rgba?\([^)]*\)/,"").replace("inset","").trim().split(/\s+/).map(de=>parseFloat(de)).filter(de=>Number.isFinite(de))[3]??0)<=0)continue;let be=y(_(ee,v),v);(z===null||be>z)&&(z=be);}return z}function S(k){let v=getComputedStyle(k),D=A(k),T=null,P=parseFloat(v.borderTopWidth||"0"),B=(v.borderTopStyle||"").toLowerCase(),z=g(v.borderTopColor||"");P>0&&B!=="none"&&B!=="hidden"&&z&&z[3]>0&&(T=y(_(z,D),D));let X=g(v.backgroundColor||"");if(X&&X[3]>0){let ee=y(_(X,D),D);(T===null||ee>T)&&(T=ee);}let te=x(v,D);return te!==null&&(T===null||te>T)&&(T=te),T}function E(k){let v=k.getBoundingClientRect();if(v.width*v.height<=0)return null;let D='input, select, textarea, button, [role="button"], svg, img, i, label',T=k.parentElement,P=null;for(let B=0;T&&B<3&&!(T===document.body||T===document.documentElement);B++,T=T.parentElement){let z=T.getBoundingClientRect();if(z.width*z.height>4*v.width*v.height+1||z.height>Math.max(2.5*v.height,v.height+40))break;let X=false,te=document.createTreeWalker(T,4),ee=te.nextNode();for(;ee;){if((ee.textContent||"").trim()&&ee.parentElement&&!ee.parentElement.closest(D)&&isVisible(ee.parentElement)){X=true;break}ee=te.nextNode();}if(X)break;let Z=S(T);Z!==null&&Z>1.01&&(P===null||Z>P)&&(P=Z);}return P}let M=k=>/^(img|picture|video|canvas|object|embed|iframe)$/.test((k.tagName||"").toLowerCase())||(getComputedStyle(k).backgroundImage||"none")!=="none",L=(k,v)=>{let D=Math.min(k.right,v.right)-Math.max(k.left,v.left),T=Math.min(k.bottom,v.bottom)-Math.max(k.top,v.top);return D>0&&T>0&&D*T/(k.width*k.height)>=.5},N=null;function q(k){let v=k.getBoundingClientRect();if(v.width*v.height<=0)return false;let D=v.left+v.width/2,T=v.top+v.height/2;if(D>=0&&T>=0&&D<window.innerWidth&&T<window.innerHeight&&typeof document.elementsFromPoint=="function"){let B=document.elementsFromPoint(D,T),z=B.indexOf(k);if(z>=0){for(let X of B.slice(z+1)){if(M(X))return true;let te=g(getComputedStyle(X).backgroundColor||"");if(te&&te[3]>.5)return false}return false}}for(let B=k.parentElement,z=0;B&&z<8;B=B.parentElement,z++){let X=getComputedStyle(B);if((X.backgroundImage||"none")!=="none")return true;let te=g(X.backgroundColor||"");if(te&&te[3]>.5||B===document.documentElement)break}N||(N=Array.from(document.querySelectorAll("img, picture, video, canvas, object, embed, iframe")));for(let B of N)if(!(B===k||k.contains(B)||B.contains(k))&&L(v,B.getBoundingClientRect())&&isVisible(B))return true;let P=k.offsetParent||k.parentElement;if(P&&P!==document.body&&P!==document.documentElement){let B=P.getElementsByTagName("*");for(let z=0;z<B.length&&z<400;z++){let X=B[z];if(!(X===k||k.contains(X)||X.contains(k))&&L(v,X.getBoundingClientRect())&&(getComputedStyle(X).backgroundImage||"none")!=="none"&&isVisible(X))return true}}return false}function H(k){for(let P=k.parentElement;P&&P.nodeType===1;P=P.parentElement)if(parseFloat(getComputedStyle(P).opacity||"1")<1)return false;let v=P=>{if(P.tagName.toLowerCase()!=="svg"){let X=g(getComputedStyle(P).color||"");return X&&X[3]>0?[X]:null}let B=[],z=Array.from(P.querySelectorAll("path, rect, circle, ellipse, polygon, polyline, line, text, use"));for(let X of z){let te=X.getBoundingClientRect();if(te.width===0&&te.height===0)continue;let ee=getComputedStyle(X);if(ee.display==="none"||ee.visibility==="hidden"||parseFloat(ee.opacity||"1")<1)return null;for(let[Z,ie]of [[ee.fill,ee.fillOpacity],[ee.stroke,parseFloat(ee.strokeWidth||"0")>0?ee.strokeOpacity:"0"]]){let be=String(Z||"");if(!be||be==="none"||parseFloat(String(ie??"1"))===0)continue;if(be.startsWith("url"))return null;let de=g(be);if(!de)return null;de[3]*=parseFloat(String(ie??"1")),de[3]>0&&B.push(de);}}return B.length?B:null},D=[];for(let P=0;P<=255;P+=17)D.push(P);let T=Array.from(k.querySelectorAll('svg, i[class], [class*="icon"]'));for(let P of T){let B=P.getBoundingClientRect();if(B.width*B.height===0)continue;let z=getComputedStyle(P);if(z.display==="none"||z.visibility==="hidden")continue;let X=v(P);if(!X)continue;let te=null,ee=1,Z=true;for(let de=P;de;de=de===k?null:de.parentElement){let ke=getComputedStyle(de),De=parseFloat(ke.opacity||"1");if(!te){let Be=g(ke.backgroundColor||""),_e=String(ke.backgroundClip||"border-box").toLowerCase();if(!(String(ke.backgroundImage||"none")==="none")){Z=false;break}if(Be&&Be[3]>=1&&_e==="border-box")te=[Be[0],Be[1],Be[2]];else if(De<1){Z=false;break}}te&&(ee*=De);}if(!te||!Z)continue;let ie=te,be=1/0;for(let de of X){let ke=_(de,ie);for(let De of D)for(let Be of D)for(let _e of D){let Ee=[De,Be,_e],bt=_([ke[0],ke[1],ke[2],ee],Ee),kt=_([ie[0],ie[1],ie[2],ee],Ee),He=y(bt,kt);He<be&&(be=He);}}if(be>=3)return true}return false}let j="control sits over an image, so the background colour measured behind it is not what the user sees \u2014 judge its boundary or glyph against the image pixels in the crop (WCAG 1.4.11, 3:1)";function U(k){let v=k.tagName.toLowerCase(),D=v==="input"||v==="select"||v==="textarea"?v+" field":v;d.push({selector:uniqueSel(k),message:"non-text contrast: "+D+" over an image backdrop \u2014 "+j,attribute:"style",currentValue:"?",issueType:"non_text_contrast_insufficient",wcag:"1.4.11",context:v+" backdrop=image needs=3",needsAI:false,needsReview:true,reviewReason:j,outerHtml:k.outerHTML.slice(0,200)});}let J=document.querySelectorAll('input:not([type="hidden"]), select, textarea, button, [role="button"], [role="checkbox"], [role="radio"], [role="switch"]');for(let k of J){if(d.length>=30)break;if(isWidget(k)||isHiddenFromAT(k)||!isVisible(k))continue;let v=getComputedStyle(k),D=A(k),T=g(v.backgroundColor||""),P=g(v.borderTopColor||""),B=parseFloat(v.borderTopWidth||"0"),z=(v.borderTopStyle||"").toLowerCase(),X=B>0&&z!=="none"&&z!=="hidden",te=k.tagName.toLowerCase(),ee=te==="input"||te==="select"||te==="textarea",Z=null;if(te==="input"){let Ae=(k.type||"").toLowerCase(),Oe=(v.appearance||v.webkitAppearance||"").toLowerCase();if(Ae==="checkbox"||Ae==="radio"){let Ie=Oe==="none"?"":String(v.accentColor||"").trim().toLowerCase(),nt=Ie&&Ie!=="auto"?g(Ie):null;if(nt&&nt[3]>.5)Z=y(_(nt,D),D);else if(Oe&&Oe!=="none")continue}}let ie=X&&P&&P[3]>.5?y(_(P,D),D):null,be=T&&T[3]>.5?y(_(T,D),D):Z,de=x(v,D),ke=ie===null&&be===null&&de===null?null:Math.max(ie??0,be??0,de??0);if(ee&&q(k)){U(k);continue}if(ee&&(ke===null||ke<3)){let Ae=E(k);if(Ae!==null&&Ae>=3)continue}let De=null,Be=false,_e="";if(ee)ke!==null?(De=ke,ke<3&&(Be=true)):(Be=true,De=1);else {let Ae=false,Oe=document.createTreeWalker(k,4),Ie=Oe.nextNode();for(;Ie;){if((Ie.textContent||"").trim()&&Ie.parentElement&&isVisible(Ie.parentElement)){Ae=true;break}Ie=Oe.nextNode();}if(Ae)continue;let nt=q(k);{let ce=["Top","Right","Bottom","Left"].map(Ve=>({w:parseFloat(v["border"+Ve+"Width"]||"0"),s:String(v["border"+Ve+"Style"]||"").toLowerCase(),c:g(v["border"+Ve+"Color"]||"")})),ve=ce.filter(Ve=>Ve.w>0&&Ve.s!=="none"&&Ve.s!=="hidden"&&Ve.c&&Ve.c[3]>.5),Xe=ce.filter(Ve=>Ve.w>0&&Ve.s!=="none"&&Ve.s!=="hidden"&&Ve.c&&Ve.c[3]===0),at=true;for(let Ve=k.parentElement;Ve&&Ve.nodeType===1;Ve=Ve.parentElement)if(parseFloat(getComputedStyle(Ve).opacity||"1")<1){at=false;break}let dt=Math.max(0,Math.min(1,parseFloat(v.opacity||"1"))),yt=String(v.backgroundClip||"border-box").toLowerCase(),Qe=!!T&&T[3]>=1&&dt>=1&&yt==="border-box";if(ve.length&&Xe.length&&at&&(!nt||Qe)){let Ve=T&&T[3]>0?_(T,D):D,rr=_([Ve[0],Ve[1],Ve[2],dt],D),nr=$r=>{let la=_($r,Ve);return _([la[0],la[1],la[2],dt],D)};if(ve.some($r=>y(nr($r.c),rr)>=3))continue}}if(nt){if(H(k))continue;U(k);continue}let st=Array.from(k.querySelectorAll('img, svg, picture, canvas, i[class], [class*="icon"]')),lt=new Map,Jt=ce=>{let ve=ce.getBoundingClientRect();if(ve.width*ve.height===0)return "absent";let Xe=parseFloat(getComputedStyle(k).opacity||"1");for(let at=ce;at&&at!==k;at=at.parentElement){let dt=getComputedStyle(at);if(dt.display==="none")return "absent";if(dt.visibility==="hidden"||parseFloat(dt.opacity||"1")===0)return "hidden-at-rest";Xe*=parseFloat(dt.opacity||"1");}return lt.set(ce,Xe),"painted"},Vr=st.map(Jt),it=st.filter((ce,ve)=>Vr[ve]==="painted"),jr=it.length>0,vn=!jr&&Vr.includes("hidden-at-rest"),fe=ce=>{let ve=(ce.tagName||"").toLowerCase();if(ve==="img"||ve==="picture"||ve==="canvas"||ve==="svg"&&ce.querySelector("image, foreignObject, linearGradient, radialGradient, pattern"))return null;let Xe=[];if(ve==="svg"){let dt=ce.querySelector("path, circle, rect, polygon, polyline, line, ellipse, use, text");for(let yt of [dt,ce]){if(!yt)continue;let Qe=getComputedStyle(yt),Ve=1;for(let nr=yt;nr&&nr!==ce;nr=nr.parentElement||nr.parentNode)Ve*=parseFloat(getComputedStyle(nr).opacity||"1");let rr=nr=>Number.isFinite(parseFloat(nr))?parseFloat(nr):1;if(Qe.fill&&Qe.fill!=="none"&&!Qe.fill.startsWith("url")&&Xe.push({color:Qe.fill,alpha:Ve*rr(Qe.fillOpacity)}),Qe.stroke&&Qe.stroke!=="none"&&!Qe.stroke.startsWith("url")&&parseFloat(Qe.strokeWidth||"0")>0&&Xe.push({color:Qe.stroke,alpha:Ve*rr(Qe.strokeOpacity)}),Xe.length)break}}else ((ce.textContent||"").trim()||getComputedStyle(ce,"::before").content!=="none")&&Xe.push({color:getComputedStyle(ce).color,alpha:1});let at=null;for(let dt of Xe){let yt=g(dt.color);if(!yt)continue;let Qe=yt[3]*dt.alpha*(lt.get(ce)??1),Ve=[yt[0]*Qe+D[0]*(1-Qe),yt[1]*Qe+D[1]*(1-Qe),yt[2]*Qe+D[2]*(1-Qe)],rr=y(Ve,D);(at===null||rr>at)&&(at=rr);}return at};if(jr&&it.map(fe).some(ve=>ve!==null&&ve>=3))continue;let ne=false,se=v.position;if((se==="absolute"||se==="fixed")&&k.parentElement){let ce=k.getBoundingClientRect(),ve=k.parentElement.getBoundingClientRect(),Xe=ve.width*ve.height;Xe>0&&ce.width*ce.height/Xe>=.85&&(ne=true);}if(jr||ne||vn){if(Be=true,De=X&&P&&P[3]>.5?y(_(P,D),D):1,De>=3)continue;_e=jr?"control is identified by an image or icon \u2014 verify the graphic itself has 3:1 contrast against its surroundings":vn?"control is identified by an icon that is transparent until hover/focus \u2014 verify the revealed icon has 3:1 contrast against its surroundings":"control is an overlay covering other content, which provides its visual affordance \u2014 verify the underlying presentation";}else ke!==null?(De=ke,ke<3&&(Be=true)):(Be=true,De=1);}if(!Be)continue;let Ee=P&&P[3]>.5?[P[0],P[1],P[2]]:T&&T[3]>.5?[T[0],T[1],T[2]]:[128,128,128],bt=F(Ee,D,3);if(!bt)continue;let kt=w(bt[0],bt[1],bt[2]),He=w(D[0],D[1],D[2]),Mt="border: 1px solid "+kt+" !important;",br=uniqueSel(k),Bt=k.tagName.toLowerCase(),Gt=ke===null&&!X?"invisible (no border, no fill: 1.00:1)":De?De.toFixed(2)+":1":"not measurable",Tt=Bt==="input"||Bt==="select"||Bt==="textarea"?Bt+" field":Bt,tr=_e?"non-text contrast: "+Tt+" boundary is "+Gt+" against "+He+" (needs 3:1) \u2014 "+_e:"non-text contrast: "+Tt+" boundary (border and fill) is "+Gt+" against "+He+", needs 3:1 \u2014 e.g. border-color "+kt;d.push({selector:br,message:tr,attribute:"style",currentValue:De?De.toFixed(2):"?",issueType:"non_text_contrast_insufficient",wcag:"1.4.11",context:Bt+" bg="+He+" ratio="+(De?De.toFixed(2):"?")+" needs=3",needsAI:false,..._e?{needsReview:true,reviewReason:_e}:{fixValue:Mt},outerHtml:k.outerHTML.slice(0,200)});}return d},Vh={name:"nonTextContrast",cap:30,async detect(f){return f.evaluate(FI)}};var II=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=/location\s*[=.]|location\s*\.\s*href|\.submit\s*\(|window\s*\.\s*open|history\s*\.\s*(push|replace)/i,p=document.querySelectorAll("[onfocus]");for(let y of Array.from(p)){if(g.length>=20)break;if(y.closest(f))continue;let A=y.getAttribute("onfocus")||"";if(!A||!h.test(A))continue;let w=typeof uniqueSel=="function"?uniqueSel(y):"",F=typeof getNearbyContext=="function"?getNearbyContext(y):{parentTag:y.tagName.toLowerCase(),nearbyHeading:""},R=[];R.push("tag: "+y.tagName.toLowerCase()),R.push("onfocus: "+A.slice(0,100)),F.nearbyHeading&&R.push("heading: "+F.nearbyHeading),R.push("parent: "+F.parentTag),g.push({selector:w,attribute:"onfocus",currentValue:A.slice(0,200),issueType:"onfocus_context_change",wcag:"3.2.1",context:R.join(" | "),needsAI:true,outerHtml:(y.outerHTML||"").slice(0,300)});}return g},jh={name:"onFocus",cap:20,async detect(f){return f.evaluate(II)}};var MI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",d=[],g=['a[href="#main-content"]','a[href="#main"]','a[href="#content"]','a[href="#skip"]','a[href="#skip-content"]','a[href="#maincontent"]',"a.skip-link","a.skip-nav","a.skip-to-content","a.skiplink","a.skip-navigation",'[class*="skip-link"]','[class*="skip-nav"]'],h=false;for(let N of g){let q=document.querySelector(N);if(q&&!q.closest(f)){h=true;break}}if(!h){let N=document.querySelectorAll('a[href^="#"]');for(let q of N){if(q.closest(f))continue;let H=(q.textContent||"").toLowerCase();if(H.includes("skip")&&(H.includes("main")||H.includes("content")||H.includes("nav"))){h=true;break}}}if(!h){let N=document.querySelectorAll('button, input[type="button"], input[type="submit"]');for(let q of Array.from(N)){if(q.closest(f))continue;let H=(q.getAttribute("value")||q.textContent||"").trim().toLowerCase();if(H.includes("skip")&&(H.includes("main")||H.includes("content")||H.includes("nav"))){h=true;break}}}if(!h){let N=document.body?document.body.firstElementChild:null;if(N&&N.matches('main, [role="main"], div#main')){let q=getComputedStyle(N),H=N.getBoundingClientRect();q.display!=="none"&&q.visibility!=="hidden"&&!N.closest('[hidden], [aria-hidden="true"]')&&H.width>0&&H.height>0&&(h=true);}}if(!h){let N=Array.from(document.querySelectorAll('main, [role="main"], div#main'));for(let q of N){let H=getComputedStyle(q);if(H.display==="none"||H.visibility==="hidden"||q.closest('[hidden], [aria-hidden="true"]'))continue;if(Array.from(q.querySelectorAll("h1, h2, h3, h4, h5, h6")).some(U=>{let J=getComputedStyle(U);return J.display!=="none"&&J.visibility!=="hidden"&&!U.closest('[hidden], [aria-hidden="true"]')})){h=true;break}}}if(!h&&document.querySelector("nav")){let N=document.querySelectorAll("a, button");for(let q of Array.from(N)){if(q.closest(f))continue;let H=(q.textContent||"").trim().toLowerCase();if((H.includes("toggle")||H.includes("hide")||H.includes("collapse")||H.includes("show"))&&H.includes("content")){h=true;break}}}if(h||Array.from(document.querySelectorAll('main, [role="main"]')).filter(N=>{let q=getComputedStyle(N);if(q.display==="none"||q.visibility==="hidden"||N.closest('[hidden], [aria-hidden="true"]'))return false;let H=N.getBoundingClientRect();return H.width>0&&H.height>0}).length===1)return d;let y="",A=document.querySelector('main[id], [role="main"][id]');if(A&&A.getAttribute("id"))y=A.getAttribute("id");else {let N=document.querySelector("h1[id]");if(N&&N.getAttribute("id"))y=N.getAttribute("id");else {let q=["main-content","maincontent","main","content","skip-content"];for(let H of q)if(document.getElementById(H)){y=H;break}}}let w=y==="",F=y||"main-content",_="<style>.wa-skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:999999;padding:8px 16px;background:#000;color:#fff;font-size:14px;text-decoration:none;border-radius:0 0 4px 0;}.wa-skip-link:focus{position:fixed;left:8px;top:8px;width:auto;height:auto;overflow:visible;outline:2px solid #fff;outline-offset:2px;}</style>"+'<a href="#'+F+'" class="wa-skip-link">{TEXT}</a>',x=(document.documentElement.getAttribute("lang")||"").trim(),S=document.querySelector('main, [role="main"]'),E=S?(S.getAttribute("aria-label")||"").trim():"",M=document.querySelector("h1"),L=M?(M.textContent||"").trim().replace(/\s+/g," ").slice(0,80):"";return d.push({selector:"body",attribute:"prepend",currentValue:"",issueType:"skip_link",wcag:"2.4.1",context:(w?'No skip navigation link found, and no element with a referenceable id (e.g. <main id="main-content">) exists to target.':"No skip navigation link found on page; target resolved to #"+F)+(x?" | page language: "+x:"")+(E?" | main landmark label: "+E:"")+(L?" | page heading: "+L:"")+" | html template (replace {TEXT} with the link text, in the page language): "+_,needsAI:true,...w?{manualFix:true}:{}}),d},$h={name:"skipLink",async detect(f){return f.evaluate(MI)}};var LI=()=>{let g=[],h=document.querySelectorAll("*"),p=0;for(let y of Array.from(h)){if(p++>5e3||g.length>=20)break;if(y.closest("[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye]")||typeof isVisible=="function"&&!isVisible(y))continue;let w=getComputedStyle(y).backgroundImage||"";if(!w||w==="none"||!w.includes("url("))continue;let F=w.match(/url\((['"]?)(.*?)\1\)/);if(!F)continue;let R=F[2];if(!R||R.startsWith("data:")&&R.length<256)continue;let _=y.getBoundingClientRect();if(_.width<32||_.height<32)continue;let x=y.tagName.toLowerCase(),S=y.getAttribute("role")||"",E=x==="a"||x==="button"||S==="button"||S==="link"||y.closest("a,button,[role=button],[role=link]")!==null,M=(y.textContent||"").trim().length>0,L=!!y.getAttribute("aria-label"),N=!!y.getAttribute("aria-labelledby"),q=!!y.getAttribute("title"),H=!!y.querySelector('img[alt]:not([alt=""])');if(y.closest('[aria-hidden="true"]')){let v=y.closest("a[href]");if(!!v&&Array.from(document.querySelectorAll("a[href]")).some(T=>T!==v&&T.href===v.href&&!T.closest('[aria-hidden="true"]')))continue}if(L||N||q||H||M||!E)continue;let j=y.closest("a,button,[role=button],[role=link]");if(j&&j!==y){let v=(j.textContent||"").trim(),D=j.getAttribute("aria-label")||j.getAttribute("title")||"",T=j.getAttribute("aria-labelledby"),P=!!j.querySelector('img[alt]:not([alt=""])');if(v||D.trim()||T||P)continue}let U=R;try{U=new URL(R,location.href).toString();}catch{continue}let J=typeof uniqueSel=="function"?uniqueSel(y):"",k=typeof getNearbyContext=="function"?getNearbyContext(y):{parentTag:x,nearbyHeading:""};g.push({selector:J,attribute:"aria-label",currentValue:"",issueType:"background_image_unlabeled",wcag:"1.1.1",context:`bg: ${U.slice(0,140)} | tag: ${x} | role: ${S||"(none)"} | parent: ${k.parentTag}${k.nearbyHeading?" | heading: "+k.nearbyHeading:""}`,needsAI:true,imageSrc:U,outerHtml:(y.outerHTML||"").slice(0,300)});}return g},zh={name:"backgroundImages",cap:20,async detect(f){return f.evaluate(LI)}};var PI=()=>{let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",g=[];return document.querySelectorAll("svg").forEach(p=>{if(g.length>=50||p.closest(f)||!isVisible(p)||p.getAttribute("aria-hidden")==="true")return;let A=p.getAttribute("role");if(A==="presentation"||A==="none"||p.closest('[aria-hidden="true"]'))return;let w=p.getAttribute("aria-label")||"",F=p.getAttribute("aria-labelledby")||"",R=p.querySelector("title"),_=R?(R.textContent||"").trim():"";if(w.trim()||F.trim()||_)return;let x=p.getBoundingClientRect(),S=x.width<=16&&x.height<=16;if(x.width<=4||x.height<=4||p.getAttribute("preserveAspectRatio")==="none")return;let E=p.closest('a, button, [role="button"], [role="link"], [onclick]');if(E){if(E.getAttribute("aria-label")?.trim()||E.getAttribute("aria-labelledby")?.trim())return;let D=getAccessibleName(E),T=E.cloneNode(true);T.querySelectorAll("svg").forEach(B=>B.remove());let P=(T.textContent||"").trim().replace(/\s+/g," ");if(D&&P.length>0)return}else {if(!/^(img|graphics-document|graphics-symbol)$/i.test((A||"").trim().split(/\s+/)[0])||S)return;let D=p.parentElement;if(D&&(D.textContent||"").trim().replace(/\s+/g," ").length>3)return}let M=uniqueSel(p),L=getNearbyContext(E||p),N=E&&E.getAttribute("href")||"",q=(E||p).outerHTML.slice(0,300),H=p.getAttribute("class")||"",j=p.getAttribute("data-icon")||"",U=E||p,J=U&&U!==p&&U.getAttribute("class")||"",k=typeof lookupIconLabel=="function"?lookupIconLabel(String(H),j,"")||lookupIconLabel(String(J),"",""):null,v=E?uniqueSel(E):M;g.push({selector:v,attribute:"aria-label",currentValue:"",issueType:"svg_missing_name",wcag:"1.1.1",context:JSON.stringify({parentTag:(E||p).tagName?(E||p).tagName.toLowerCase():"svg",href:N,nearbyHeading:L.nearbyHeading,parentRole:L.parentRole,svgClasses:H,iconLib:k||void 0,suggestion:"Add aria-label to the parent interactive element or <title> inside SVG"}),needsAI:true,outerHtml:q});}),g},Gh={name:"svgNames",cap:50,async detect(f){return f.evaluate(PI)}};var OI=()=>{let f={"line-height":1.5,"letter-spacing":.12,"word-spacing":.16},d=1e-9,g=Object.keys(f),h=30,p="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",y={px:1,pt:1.333333,pc:16,in:96,cm:37.795,mm:3.7795,q:.37795},A=k=>{let v=[];for(let D of k.split(";")){let T=D.match(/^\s*([-a-zA-Z]+)\s*:\s*(.*?)\s*$/);if(!T)continue;let P=T[1].toLowerCase();if(!g.includes(P))continue;let B=T[2],z=/!\s*important\s*$/i.test(B);B=B.replace(/!\s*important\s*$/i,"").trim(),B&&(P!=="line-height"&&/^[-+]?\d+(\.\d+)?$/.test(B)&&parseFloat(B)!==0||v.push({prop:P,value:B,important:z}));}return v},w=(k,v,D,T)=>{let P=v.trim().toLowerCase();if(/^normal$|^initial$/.test(P))return {kind:"narrow"};if(/^inherit$|^revert$|^unset$/.test(P))return {kind:"notBlocked"};if(P.startsWith("var(")||P.startsWith("calc(")||P.startsWith("env("))return {kind:"undetermined"};if(/^-?[\d.]+$/.test(P)){let ee=parseFloat(P);return k==="line-height"?{kind:"ratio",factor:ee}:{kind:"ratio",factor:0}}let B=P.endsWith("%")&&/\d/.test(P),z=B?P.slice(0,-1).trim().match(/^([\d.]+)$/):P.match(/^([\d.]+)(em|rem|vw|vh|px|pt|cm|mm|pc|in|q)$/);if(!z)return {kind:"undetermined"};let X=parseFloat(z[1]);if(B||P.endsWith("em")){let ee=T??D;return ee&&D&&isFinite(ee)&&isFinite(D)&&ee>0&&D>0?B?{kind:"ratio",factor:X/100*(ee/D)}:{kind:"ratio",factor:X*(ee/D)}:B?{kind:"ratio",factor:X/100}:{kind:"ratio",factor:X}}let te=P.match(/(rem|vw|vh|px|pt|cm|mm|pc|in|q)$/)?.[1];if(te==="px"||te&&y[te]){let ee=te==="px"?X:X*(y[te]||0);return D===null||!isFinite(D)||D<=0?{kind:"undetermined"}:{kind:"ratio",factor:ee/D}}return {kind:"undetermined"}},F=(k,v,D)=>{let T=k;for(;T;){let P=v.get(T);if(P){let B=P.filter(z=>z.prop===D);if(B.length){let z=B.filter(te=>te.important);return {decl:z.length?z[z.length-1]:B[B.length-1],from:T}}}T=T.parentElement;}return null},R=k=>{let v=k;for(;v;){let D=v.style;if(D&&(D.display==="none"||D.visibility==="hidden")||D&&(D.position==="absolute"||D.position==="fixed")&&(_(D.top)||_(D.left)))return false;if(D&&(D.overflowX==="scroll"||D.overflowX==="auto")){for(let T=k;T!==v;T=T.parentElement)if(T.style&&x(T.style.width)>=900)return false}v=v.parentElement;}return true},_=k=>{if(!k)return false;let v=k.match(/^(-)([\d.]+)(px|em|rem|vh|vw)$/i);if(!v)return false;let D=parseFloat(v[2]),T=v[3].toLowerCase();return T==="px"?D>=100:T==="em"||T==="rem"?D>=4:D>=10},x=k=>{let v=k?k.match(/^([\d.]+)px$/):null;return v?parseFloat(v[1]):0},S=[],E=[],M=new Map,L=typeof getComputedStyle=="function"?getComputedStyle:null,N=k=>{try{let v=L?L(k).fontSize:"",D=v?v.match(/^([\d.]+)px$/):null;return D?parseFloat(D[1]):null}catch{return null}},q=new Map,H=Array.from(document.querySelectorAll('[style*="important" i]'));for(let k of H)k.closest(p)||q.set(k,A(k.getAttribute("style")||""));for(let k of document.querySelectorAll("body [style]"))k.closest(p)||q.has(k)||q.set(k,A(k.getAttribute("style")||""));let j=[],U=document.createTreeWalker(document.body,1),J=U.currentNode;for(;J;)Array.from(J.childNodes).some(v=>v.nodeType===3&&/\S/.test(v.textContent||""))&&!J.closest(p)&&j.push(J),J=U.nextNode();for(let k of j){if(S.length>=h)break;if(R(k))for(let v of g){let D=F(k,q,v);if(!D||!D.decl.important)continue;let T=N(k),P=D.from===k?T:N(D.from)??T,B=w(v,D.decl.value,T,P);if(!(B.kind==="undetermined"||B.kind==="narrow"||B.kind==="ratio"&&B.factor+d<f[v]))continue;let X=M.get(D.from);X||(X=[],M.set(D.from,X),E.push({from:D.from,props:X})),X.includes(v)||X.push(v);}}for(let{from:k,props:v}of E){if(S.length>=h)break;let D=typeof uniqueSel=="function"?uniqueSel(k):"",T=typeof getNearbyContext=="function"?getNearbyContext(k):{parentTag:k.parentElement?.tagName.toLowerCase()||"",nearbyHeading:""},P=[];P.push("blocked: "+v.join(",")),P.push("tag: "+k.tagName.toLowerCase()),T.nearbyHeading&&P.push("heading: "+T.nearbyHeading),P.push("parent: "+T.parentTag),S.push({selector:D,attribute:"style",currentValue:(k.getAttribute("style")||"").slice(0,200),issueType:"text_spacing_blocked",wcag:"1.4.12",context:P.join(" | "),needsAI:true,outerHtml:(k.outerHTML||"").slice(0,300)});}return S},Uh={name:"textSpacing",cap:30,async detect(f){return f.evaluate(OI)}};var NI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=document.querySelectorAll('button, input[type="submit"], input[type="button"], input[type="reset"], [role="button"]');for(let p of h){if(g.length>=50)break;if(p.closest(f)||!isVisible(p))continue;let y=p,A=y.tagName==="INPUT"?(y.getAttribute("type")||"").toLowerCase():"";if(A==="submit"||A==="reset")continue;let w=(y.getAttribute("role")||"").trim().toLowerCase().split(/\s+/)[0];if((w==="none"||w==="presentation")&&y.disabled===true)continue;let F=(y.getAttribute("aria-label")||"").trim(),R=y.getAttribute("aria-labelledby"),_=(y.getAttribute("title")||"").trim(),x=(y.getAttribute("value")||"").trim(),S=(y.textContent||"").trim().replace(/\s+/g," "),E="";R&&(E=typeof __resolveIdRefs=="function"?__resolveIdRefs(R):"");let M=y.querySelector('img[alt]:not([alt=""])'),L=y.querySelector("svg title"),N=y.querySelector("svg[aria-label]");if(!!(F||E||_||x||S||M||L||N))continue;let H=uniqueSel(y),j=getNearbyContext(y),U=y.closest("form"),J=U&&(U.getAttribute("id")||U.getAttribute("name"))||"",k=y.getAttribute("class")||"",v=y.querySelector('i, svg, span[class*="icon"]'),D=v&&v.getAttribute("class")||"",T=v&&v.getAttribute("data-icon")||"",P=v?(v.textContent||"").trim():"",B=typeof lookupIconLabel=="function"?lookupIconLabel(String(D),T,P):null,z=!B&&typeof lookupIconLabel=="function"?lookupIconLabel(String(k),"",""):null,X=B||z,te=[];for(let ie of ["type","name","id"]){let be=(y.getAttribute(ie)||"").trim();be&&te.push(ie+"="+be.slice(0,40));}let ee=[];if(U){let ie=(U.getAttribute("action")||"").trim();if(ie){let de=ie;try{de=new URL(ie,document.baseURI).pathname;}catch{}ee.push("action: "+de.slice(0,80));}let be=[];for(let de of U.querySelectorAll("input:not([type=hidden]):not([type=submit]):not([type=button]), textarea, select")){let ke=(de.getAttribute("aria-label")||de.getAttribute("placeholder")||de.id&&Array.from(U.querySelectorAll("label[for]")).find(De=>De.getAttribute("for")===de.id)?.textContent||de.getAttribute("name")||"").trim().replace(/\s+/g," ");if(be.push(ke.slice(0,40)||de.getAttribute("type")||de.tagName.toLowerCase()),be.length>=4)break}be.length&&ee.push("fields: "+be.join(", "));}let Z=[];J&&Z.push("form: "+J),j.nearbyHeading&&Z.push("heading: "+j.nearbyHeading),D&&Z.push("icon: "+String(D).slice(0,80)),k&&Z.push("class: "+String(k).slice(0,80)),Z.push("parent: "+j.parentTag),te.length&&Z.push("control: "+te.join(" "));for(let ie of ee)Z.push("form "+ie);X&&Z.push("icon-hint (glyph name only, not the action): "+X),g.push({selector:H,attribute:"aria-label",currentValue:"",issueType:"unlabeled_button",wcag:"4.1.2",context:Z.join(" | "),needsAI:true,outerHtml:y.outerHTML.slice(0,300)});}return g},Wh={name:"unlabeledButtons",cap:50,async detect(f){return f.evaluate(NI)}};var qI=()=>{let f=new Set(["more","info","click","click here","here","read more","learn more","see more","link","button","this"]),d=new Set(["submit","send","yes","no","next","prev","previous","back","view","details","continue","go","ok","open","close","apply","save"]),g={};function h(k){if(isWidget(k)||!isVisible(k))return;let v=getAccessibleName(k);if(!v)return;let D=v.toLowerCase().trim();g[D]=(g[D]||0)+1;}document.querySelectorAll("a[href]").forEach(k=>h(k));let p=new Set(["fa","fas","far","fab","fal","fad","material-icons","material-symbols","bi","glyphicon"]),y=["fa-","bi-","icon-","icofont-","dashicons-","heroicon","feather-","lucide-","material-"];function A(k){let v=k.toLowerCase();return p.has(v)||y.some(D=>v.startsWith(D))}let w=/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/;function F(k,v){return w.test(k)?1:v}let R=50,_=[];function x(k){if((k.textContent||"").trim().replace(/\s+/g," ").length>0)return false;let D=k.querySelectorAll("i, span, em");for(let T of D)if((typeof T.className=="string"?T.className:"").split(/\s+/).some(A))return true;return false}function S(k){let v=k.className||"";return typeof v!="string"?false:v.split(/\s+/).some(A)}function E(k){if(_.length>=R||isWidget(k)||!isVisible(k))return;let v=getAccessibleName(k);if(!v)return;let D=v.toLowerCase().trim(),T=false,P=v.length>=2&&/^[A-Z][A-Z0-9]+$/.test(v.trim()),B=/^[[(]?\d{1,4}[\])]?$/.test(v.trim());if(v.length<F(v,3)&&!P&&!B)T=true;else if(f.has(D))T=true;else if(d.has(D)&&(g[D]||0)>=2){let Z=(k.getAttribute("aria-label")||"").trim().toLowerCase(),ie=!!k.getAttribute("aria-labelledby")||!!Z&&Z!==D,be=k.querySelector&&k.querySelector('.sr-only, .visually-hidden, [class*="sr-only"], [class*="visually-hidden"], [class*="screen-reader"]'),de=be?(be.textContent||"").trim().toLowerCase():"";!ie&&!(be&&de!==D)&&(T=true);}else (x(k)||S(k)&&v.length===0)&&(k.getAttribute("aria-label")||k.getAttribute("aria-labelledby")||k.querySelector&&k.querySelector('.sr-only, .visually-hidden, [class*="sr-only"], [class*="visually-hidden"]')||(T=true));if(!T)return;let z=getNearbyContext(k),X=uniqueSel(k),te=k.getAttribute("href")||"",ee=k.outerHTML.slice(0,300);_.push({selector:X,attribute:"aria-label",currentValue:(k.getAttribute("aria-label")||"").trim(),message:"weak link name: "+(k.getAttribute("aria-label")||k.getAttribute("aria-labelledby")?`"${v}" is too generic for a control \u2014 add distinguishing context`:`text "${v}" is too generic for a control \u2014 add distinguishing context`),issueType:"weak_link_name",wcag:"2.4.4",needsReview:true,reviewReason:"WCAG 2.4.4 (AA) judges link purpose in context: the link text together with its sentence, paragraph, list item or table cell (nearbyText). A link whose text names its destination page or topic passes, even as one word in a menu. Fail only generic text (here, more, click here, read more) whose context still does not say where the link goes.",context:JSON.stringify({currentText:v,href:te,nearbyHeading:z.nearbyHeading,parentTag:z.parentTag,parentRole:z.parentRole,cardText:z.cardText||"",imgAlt:z.imgAlt||""}),needsAI:true,outerHtml:ee});}document.querySelectorAll("a[href]").forEach(k=>E(k));let M=/^(untitled(?:\s+document)?|new\s+page|new\s+document|home|page\s*\d*|document|untitled)$/i,L=/^(iframe|embed|widget|frame|content|untitled)$/i,N=new Set(["section","title","heading","headings","page","content","chapter","part","article","document","intro","untitled","test","lorem","tbd","todo","draft","sample","example","welcome","hello","hi","home"]);function q(k){return !!(!k||k.getAttribute("aria-hidden")==="true"||k.closest('[aria-hidden="true"]'))}function H(k,v,D,T,P,B){if(_.length>=R)return;let z=uniqueSel(k),X=(k.outerHTML||"").slice(0,300);_.push({selector:z,attribute:v,currentValue:D,issueType:T,wcag:P,context:JSON.stringify(B),needsAI:true,outerHtml:X});}let j=document.querySelectorAll("h1,h2,h3,h4,h5,h6");for(let k=0;k<j.length&&!(_.length>=R);k++){let v=j[k];if(!v||isWidget(v)||q(v)||!isVisible(v))continue;let D=getAccessibleName(v);if(!D)continue;let T=D.toLowerCase().trim(),P=T.split(/\s+/).filter(Boolean),B=()=>{if(!/^\p{L}$/u.test(D))return false;let te=v.nextElementSibling;if(!te)return false;let ee=te.tagName.toLowerCase(),Z=[];if(ee==="dl"?Z=Array.from(te.querySelectorAll("dt")):ee==="ul"||ee==="ol"?Z=Array.from(te.children).filter(be=>be.tagName==="LI"):ee==="table"&&(Z=Array.from(te.querySelectorAll("tbody tr, tr")).map(be=>be.cells&&be.cells[0])),Z=Z.filter(Boolean),Z.length<1)return false;let ie=D.toLowerCase();return Z.every(be=>(be.textContent||"").trim().toLowerCase().startsWith(ie))},z=false;if(D.length<F(D,3)?z=!B():(P.length===1&&(f.has(T)||N.has(T))||/^page\s*\d+$/i.test(T)||/^section\s*\d+$/i.test(T)||/^chapter\s*\d+$/i.test(T)||/^[^\p{L}\p{N}]+$/u.test(D))&&(z=true),!z)continue;let X=getNearbyContext(v);H(v,"textContent",D,"weak_heading","2.4.6",{currentText:D,tag:v.tagName.toLowerCase(),nearbyHeading:X.nearbyHeading,parentTag:X.parentTag,parentRole:X.parentRole});}let U=document.querySelectorAll("iframe");for(let k=0;k<U.length&&!(_.length>=R);k++){let v=U[k];if(!v||isWidget(v)||q(v))continue;let D=getComputedStyle(v);if(v.getClientRects().length===0||D.visibility==="hidden"||D.visibility==="collapse"||(v.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0)continue;let T=(v.getAttribute("title")||"").trim();if(!T)continue;let P=T.toLowerCase(),B=false;if((T.length<F(T,3)||L.test(P)||f.has(P))&&(B=true),!B)continue;let z=(v.getAttribute("src")||"").slice(0,120),X=getNearbyContext(v);H(v,"title",T,"weak_iframe_title","4.1.2",{currentTitle:T,src:z,nearbyHeading:X.nearbyHeading,parentTag:X.parentTag});}if(_.length<R){let k=document.querySelector("head > title, title"),v=(document.title||"").trim();if(k&&v){let D=v.toLowerCase(),T=false;(v.length<F(v,5)||M.test(D)||/^untitled/i.test(v))&&(T=true),T&&_.push({selector:"title",attribute:"textContent",currentValue:v,issueType:"weak_page_title",wcag:"2.4.2",context:JSON.stringify({currentTitle:v,hostname:typeof location<"u"&&location&&location.hostname||"",pathname:typeof location<"u"&&location&&location.pathname||""}),needsAI:true,outerHtml:(k.outerHTML||"").slice(0,300)});}}let J=document.querySelectorAll("svg");for(let k=0;k<J.length&&!(_.length>=R);k++){let v=J[k];if(!v||isWidget(v)||q(v)||v.getAttribute("role")==="presentation"||v.getAttribute("role")==="none"||!isVisible(v))continue;let D=v.querySelector("title"),T=D?(D.textContent||"").trim():"",P=(v.getAttribute("aria-label")||"").trim(),B=P||T;if(!B)continue;let z=B.toLowerCase(),X=false;if((B.length<F(B,3)||f.has(z)||/^(icon|svg|image|graphic|logo)$/i.test(B))&&(X=true),!X)continue;let te=v.closest('a, button, [role="button"], [role="link"]'),ee=getNearbyContext(v);H(v,P?"aria-label":"title",B,"weak_svg_name","1.1.1",{currentName:B,svgClasses:v.getAttribute("class")||"",parentTag:te?te.tagName.toLowerCase():ee.parentTag,parentHref:te&&te.getAttribute("href")||"",nearbyHeading:ee.nearbyHeading});}return _},Xh={name:"weakNames",cap:50,async detect(f){return f.evaluate(qI)}};var BI=()=>{let d=[],g=document.querySelector('meta[name="viewport"]');if(g){let p=(g.getAttribute("content")||"").trim(),y=p.toLowerCase(),A=false,w=[];(y.indexOf("user-scalable=no")>=0||y.indexOf("user-scalable=0")>=0)&&(A=true,w.push("user-scalable=no blocks pinch-zoom"));let F=["yes","no","device-width","device-height"],R=y.match(/user-scalable\s*=\s*([a-z][a-z-]*)/);R&&F.indexOf(R[1])<0&&(A=true,w.push("user-scalable="+R[1]+" (invalid, parsed as 0)"));let _=y.match(/maximum-scale\s*=\s*([a-z][a-z-]*)/);_&&F.indexOf(_[1])<0&&(A=true,w.push("maximum-scale="+_[1]+" (invalid, parsed as 0)"));let x=y.match(/maximum-scale\s*=\s*([\d.]+)/);x&&parseFloat(x[1])<2&&(A=true,w.push("maximum-scale="+x[1]+" (<2)")),A&&d.push({selector:'meta[name="viewport"]',attribute:"content",currentValue:p,issueType:"zoom_restriction",wcag:"1.4.4",context:"viewport blocks zoom: "+w.join(" | "),needsAI:false,fixValue:"width=device-width, initial-scale=1"});}let h=[{el:document.documentElement,selector:"html"},{el:document.body,selector:"body"}];for(let p=0;p<h.length&&!(d.length>=5);p++){let y=h[p];if(y.el)try{let w=(getComputedStyle(y.el).getPropertyValue("touch-action")||"").trim().toLowerCase();(w==="none"||w==="pinch-zoom")&&d.push({selector:y.selector,attribute:"style",currentValue:"touch-action: "+w,issueType:"zoom_restriction",wcag:"1.4.4",context:"CSS touch-action: "+w+" on <"+y.selector+"> prevents pinch-zoom",needsAI:!1,fixValue:"touch-action: manipulation !important;"});}catch{}}return d},Yh={name:"zoomUnlock",cap:5,async detect(f){return f.evaluate(BI)}};var HI=()=>{let d=[],g=document.body?document.body.querySelectorAll("*"):[];for(let h=0;h<g.length&&d.length<10;h++){let p=g[h],y=p.tagName.toLowerCase();if(y==="script"||y==="style"||y==="svg"||y==="textarea"||y==="select")continue;let A="";for(let q=p.firstChild;q;q=q.nextSibling)q.nodeType===3&&(A+=q.nodeValue);if(!A.replace(/\s+/g,"").length)continue;let w=getComputedStyle(p);if(w.display==="none"||w.visibility==="hidden"||w.display==="contents")continue;let F=w.overflowX,R=w.overflowY,_=F==="hidden"||F==="clip",x=R==="hidden"||R==="clip";if(!_&&!x||p.closest('[aria-hidden="true"],[hidden],[inert]'))continue;let S=p.clientWidth,E=p.clientHeight;if(E<=1||S<=1)continue;let M=w.webkitLineClamp||w.getPropertyValue("-webkit-line-clamp");if(M&&M!=="none")continue;let L="";if(x&&p.scrollHeight>E+2?L="height "+E+"px < content "+p.scrollHeight+"px":_&&w.textOverflow!=="ellipsis"&&p.scrollWidth>S+2&&(L="width "+S+"px < content "+p.scrollWidth+"px"),!L){let q=parseFloat(w.fontSize);if(!(q>0))continue;let H=p.style.getPropertyValue("font-size"),j=p.style.getPropertyPriority("font-size");p.style.setProperty("font-size",q*2+"px","important");let U=p.clientHeight,J=p.clientWidth;x&&U>1&&p.scrollHeight>U+2?L="at 200%: height "+U+"px < content "+p.scrollHeight+"px":_&&w.textOverflow!=="ellipsis"&&J>1&&p.scrollWidth>J+2&&(L="at 200%: width "+J+"px < content "+p.scrollWidth+"px"),H?p.style.setProperty("font-size",H,j):p.style.removeProperty("font-size");}if(!L)continue;let N=typeof uniqueSel=="function"?uniqueSel(p):y;d.push({selector:N,attribute:"style",currentValue:(p.getAttribute("style")||"").slice(0,200),issueType:"resize_text_clipped",wcag:"1.4.4",context:"text clipped by overflow:hidden: "+L,needsAI:true,needsReview:true,reviewReason:"WCAG 1.4.4 Resize Text: this text is cut off by overflow:hidden ("+L+"). Violation when content or function is lost at 200% text size and no other mechanism shows it. Pass when the clipped part is decorative or repeated elsewhere, or the box grows or scrolls when text is resized.",outerHtml:(p.outerHTML||"").slice(0,300)});}return d},Kh={name:"textClip",cap:10,async detect(f){return f.evaluate(HI)}};var VI=()=>{let f=[],d=document.querySelectorAll('main *, [role="main"] *, body > div *'),g=new Set,h=Math.min(d.length,200);for(let p=0;p<h;p++){let y=d[p];if(g.has(y)||!y.offsetParent)continue;g.add(y);let A=getComputedStyle(y),w=parseInt(A.order||"0",10),F=A.position;if(w>=3){let R=y.getBoundingClientRect();if(R.width>0&&R.height>0){let _=(y.textContent?.trim().length||0)>10,x=!!y.querySelector("a, button, input, select, textarea");(_||x)&&f.push({selector:typeof uniqueSel=="function"?uniqueSel(y):y.tagName.toLowerCase(),attribute:"data-sequence-review",currentValue:`CSS order: ${w}`,issueType:"meaningful_sequence",wcag:"1.3.2",context:`Element uses CSS order:${w} \u2014 content with interactive elements or text is visually reordered far from its DOM position, which confuses screen readers and keyboard users.`,needsAI:true});}}if(F==="absolute"){if(!!!y.querySelector("a, button, input, select, textarea"))continue;let _=y.parentElement;if(!_||_.children.length<=2)continue;let x=y.getBoundingClientRect(),S=_.getBoundingClientRect();(x.top<S.top-100||x.left<S.left-300)&&f.push({selector:typeof uniqueSel=="function"?uniqueSel(y):y.tagName.toLowerCase(),attribute:"data-sequence-review",currentValue:`position: ${F}, displaced ${Math.round(Math.abs(x.top-S.top))}px`,issueType:"meaningful_sequence",wcag:"1.3.2",context:"Interactive content is absolutely positioned far from its DOM location. Screen readers and keyboard users will encounter it in a different order than visual users.",needsAI:true});}}return f},Jh={name:"meaningfulSequence",async detect(f){return f.evaluate(VI)}};var Zh={name:"sensoryCharacteristics",async detect(f){let{instructionalTexts:d,controlLabels:g,navCount:h,labelTexts:p}=await f.evaluate(()=>{let w=[],F=document.querySelectorAll('p, li, td, label, span, div, a, button, h1, h2, h3, h4, h5, h6, figcaption, [role="alert"], [role="status"]'),R=Math.min(F.length,300),_=[];document.querySelectorAll('button, a[href], [role="button"], input[type="button"], input[type="submit"]').forEach(M=>{let L=((M.textContent||"")+" "+(M.getAttribute("aria-label")||"")+" "+(M.getAttribute("value")||"")).trim().toLowerCase();L&&_.push(L);});let x=M=>!!M.offsetParent||getComputedStyle(M).position==="fixed",S=Array.from(document.querySelectorAll('nav, [role="navigation"]')).filter(x).length,E=[];document.querySelectorAll('h1, h2, h3, h4, h5, h6, nav, [role="navigation"], [role="menu"], [role="menubar"], [aria-label], summary, button, a, legend').forEach(M=>{if(!x(M))return;let L=((M.getAttribute("aria-label")||"")+" "+(M.tagName.match(/^(H\d|SUMMARY|BUTTON|A|LEGEND)$/)&&M.textContent||"")).trim().toLowerCase();L&&L.length<=60&&E.push(L);});for(let M=0;M<R;M++){let L=F[M];if(!L.offsetParent||L.children.length>3||L.querySelector("p, div, ul, ol, li, table, section, article, nav, header, footer, main, aside, form, h1, h2, h3, h4, h5, h6")||L.closest('[aria-hidden="true"]'))continue;let N=L.textContent?.trim()||"";N.length<15||N.length>300||/click|tap|press|select|choose|find|look|see|drag|scroll|hover|go to|navigate/i.test(N)&&w.push({text:N,selector:typeof uniqueSel=="function"?uniqueSel(L):L.tagName.toLowerCase()});}return {instructionalTexts:w.slice(0,20),controlLabels:_,navCount:S,labelTexts:E}});if(d.length===0)return [];let y=[],A=w=>{let F=(w.toLowerCase().match(/\b(navigation|menu)\b/)||[])[1];return F?h===1?true:p.some(R=>R.indexOf(F)!==-1):false};for(let{text:w,selector:F}of d){w.toLowerCase();let _=/\b(round|square|circular|triangular|arrow-shaped)\b.*\b(button|icon|element|thing)\b/i.test(w)&&!/\b(submit|cancel|close|menu|search|delete|edit|save|back|next|previous|home)\b/i.test(w),x=/\b(header|footer|sidebar menu|breadcrumb)\b/i.test(w)||A(w),S=/\b(on the|to the|in the)\s+(left|right|top|bottom|upper|lower|above|below|sidebar)\b/i.test(w)&&!x&&/\b(click|tap|press|select|find)\b/i.test(w),E=/\b(red|green|blue|yellow|orange|purple|pink|gray|grey|white|black)\s+(button|link|icon|text|area|section|box|dot|circle|indicator)\b/i.test(w)&&!/\b(submit|cancel|close|delete|save|success|error|warning|danger)\b/i.test(w),M=/\b(large|small|big|tiny|narrow|wide)\s+(button|link|icon|box|area)\b/i.test(w)&&/\b(click|tap|press|select|find)\b/i.test(w),L=/\b(?:labell?ed|called|named|titled)\s+["'“‘]/i.test(w),N=(w.match(/\b(round|square|circular|triangular|arrow-shaped|red|green|blue|yellow|orange|purple|pink|gray|grey|white|black|large|small|big|tiny|narrow|wide)\b/i)||[])[1],q=!!N&&g.some(H=>H.indexOf(N.toLowerCase())!==-1);if(!(L||q)&&(_||S||E||M)){let H=_?"shape":S?"position":E?"color":"size";y.push({selector:F,attribute:"data-sensory-review",currentValue:w.slice(0,100),issueType:"sensory_characteristic",wcag:"1.3.3",context:`Instruction relies on ${H} alone: "${w.slice(0,80)}". Provide a non-sensory way to identify the referenced element (e.g., by name, label, or function).`,needsAI:true});}}return y}};var jI=()=>{let f=[],d=document.querySelectorAll("img");for(let g of d){if(!g.offsetParent||g.width<50||g.height<20||g.complete&&g.naturalWidth===0)continue;let h=g.src||g.getAttribute("data-src")||"",p=h.indexOf(","),y=(h.toLowerCase().startsWith("data:")&&p!==-1?h.slice(0,p):h).toLowerCase(),A=g.getAttribute("alt")||"",w=g.getAttribute("role")||"";if(g.getAttribute("aria-hidden")==="true"||!!g.closest('[aria-hidden="true"]')||w==="presentation"||w==="none"||g.hasAttribute("alt")&&A.trim()==="")continue;let R=g.width>200&&g.height<80&&g.height>15,_=/banner|header|logo-text|title|heading|cta|promo|offer|button.*\.(?:png|jpg|gif|webp)/i.test(y);if(!(_||R)||/(?:^|\/)(?:img|dsc|dscn|dcim|pict)[-_]?\d|photo|gallery/i.test(y)&&!_)continue;let S=g.closest("a[href]"),E=(()=>{if(!S)return false;let J=S.getAttribute("href")||"";if(J==="/"||J==="")return true;try{let k=new URL(S.href,location.href);return k.origin!==location.origin?!1:!!(k.pathname.replace(/\/+$/,"")===""||/^\/(?:index|home|default)(?:\.\w+)?$/i.test(k.pathname)||/^\/[a-z]{2}(?:-[a-z]{2})?(?:\.\w+)?$/i.test(k.pathname))}catch{return false}})();if(E&&(S.textContent||"").trim().length===0)continue;let L="";if(S&&!E&&(S.textContent||"").trim().length===0)try{let J=new URL(S.href,location.href),k=A.trim().split(/\s+/).filter(Boolean);if(J.origin!==location.origin&&/^https?:$/.test(J.protocol)&&k.length>0&&k.length<=4&&A.trim().length<=40){let v=z=>z.toLowerCase().normalize("NFKD").replace(/[^\p{L}\p{N}]/gu,""),D=v(A),T=J.hostname.toLowerCase().split(".").filter(z=>z&&z!=="www"),P=(T.length>1?T.slice(0,-1):T).map(v).filter(Boolean);L=D.length>=3&&(D===v(T.join(""))||D===P.join("")||P.some(z=>D===z||z.length>=5&&D.startsWith(z)))?"exempt":"review";}}catch{}let N=!!g.closest('header, [role="banner"], footer, [role="contentinfo"]'),q=g.height>0&&g.height<=120,H=N&&q,j=/logo|brand|wordmark|hero|banner-?(?:img|image)?|footer|marketing|promo|cover|screenshot|dashboard/i,U=H||j.test(y)||j.test(g.className)||j.test(g.getAttribute("id")||"");y.includes("icon")||y.includes("avatar")||y.includes("emoji")||f.push({selector:typeof uniqueSel=="function"?uniqueSel(g):"img",attribute:"data-image-of-text",currentValue:y.split("/").pop()?.slice(0,60)||"",issueType:"image_of_text",wcag:"1.4.5",context:`Image may contain text (${g.width}x${g.height}px, alt="${A.slice(0,40)}"). Use real text with CSS styling instead.`,needsAI:true,imageSrc:g.src,...U||L?{needsReview:true,reviewReason:H?"small graphic in the header/footer landmark \u2014 likely a logo, wordmark, or brand signature, which are exempt under WCAG 1.4.5 (logotypes)":L==="exempt"?"image is the only content of a link to another site and its alt names that site \u2014 likely the partner/sponsor logo, exempt under WCAG 1.4.5 (logotypes); confirm the image holds only the brand name":L==="review"?"image is the only content of a link to another site and its alt is a short name \u2014 likely a partner/sponsor logo, exempt under WCAG 1.4.5 (logotypes)":"filename suggests marketing/brand imagery; logos and brand collateral are exempt under WCAG 1.4.5"}:{}});}return f},Qh={name:"imagesOfText",async detect(f){return f.evaluate(jI)}};var eg={name:"reflow",async detect(f){let d=f;if(!d.setViewport)return [];let g=d.viewport?.()??{width:1280,height:720},h=g.width??1280,p=g.height??720;try{return await d.setViewport({width:320,height:p}),await new Promise(A=>setTimeout(A,500)),await f.evaluate(A=>{let w=[],F=document.querySelectorAll("body *"),R=Math.min(F.length,500);for(let _=0;_<R;_++){let x=F[_];if(!x.offsetParent)continue;let S=x.tagName.toLowerCase();if(S==="script"||S==="style"||S==="noscript")continue;let E=x.getBoundingClientRect();E.right>A+5&&E.width>A*1.1&&w.push({selector:typeof uniqueSel=="function"?uniqueSel(x):S,attribute:"style",currentValue:`${Math.round(E.width)}px wide at ${A}px viewport`,issueType:"reflow_overflow",wcag:"1.4.10",context:`Element is ${Math.round(E.width)}px wide and overflows the ${A}px viewport by ${Math.round(E.right-A)}px. Content must reflow to a single column at 320px CSS width without horizontal scrolling.`,needsAI:!1,fixValue:"max-width: 100%; overflow-wrap: break-word;"});}return document.documentElement.scrollWidth>A+10&&w.push({selector:"html",attribute:"data-reflow",currentValue:`scrollWidth ${document.documentElement.scrollWidth}px at ${A}px viewport`,issueType:"reflow_overflow",wcag:"1.4.10",context:`Page has horizontal scrollbar at ${A}px width. WCAG 1.4.10 requires content to reflow without horizontal scrolling at 320 CSS pixels (equivalent to 1280px at 400% zoom).`,needsAI:!1,fixValue:"Fix elements causing horizontal overflow at narrow viewports"}),w},320)}finally{await d.setViewport({width:h,height:p}).catch(()=>{});}}};var $I=()=>{let f=[],d=document.querySelectorAll("video");for(let h of d){if(h.autoplay&&!h.muted&&f.push({selector:typeof uniqueSel=="function"?uniqueSel(h):"video",attribute:"muted",currentValue:"autoplay without muted",issueType:"unsafe_autoplay",wcag:"1.4.2",context:"Video autoplays with sound. Either mute by default, provide a mechanism to pause, or limit to 3 seconds.",needsAI:false,fixValue:"true"}),!(h.offsetParent!==null&&getComputedStyle(h).display!=="none"))continue;let y=h.getBoundingClientRect();if(y.width===0&&y.height===0||h.error)continue;let A=/mute|unmute|sound|volume|audio|play|pause/i,w=!!h.parentElement?.querySelector('button, [role="button"]')||!!h.getAttribute("id")&&!!document.querySelector('[aria-controls~="'+(h.getAttribute("id")||"").replace(/"/g,"")+'"]');for(let E=h.parentElement?.parentElement||null,M=0;E&&!w&&M<3;E=E.parentElement,M++)w=Array.from(E.querySelectorAll('button, [role="button"]')).some(L=>A.test((L.getAttribute("aria-label")||"")+" "+(L.getAttribute("title")||"")+" "+(L.textContent||"")));if((h.muted||h.hasAttribute("muted"))&&(h.loop||h.hasAttribute("loop"))&&!h.hasAttribute("controls")&&!w)continue;let F=h.querySelectorAll("track"),R=Array.from(F).find(E=>E.kind==="captions"||E.kind==="subtitles"),_=Array.from(F).find(E=>E.kind==="descriptions");h.src||h.querySelector("source")?.src||"";let S=typeof uniqueSel=="function"?uniqueSel(h):"video";R||f.push({selector:S,attribute:"data-captions-missing",currentValue:"",issueType:"missing_captions",wcag:"1.2.2",context:`Video element has no <track kind="captions">. Provide synchronized captions for all prerecorded audio content. Page language: ${(document.documentElement.getAttribute("lang")||"").trim()||"not declared"}; the caption track's srclang and label follow the spoken language, which only the audio settles.`,needsAI:false,fixValue:'Add a <track kind="captions" src="captions.vtt" srclang="[spoken language]" label="[language name]" default> element',needsReview:true,reviewReason:"cannot verify an audio track in-page \u2014 confirm the video has speech content before adding captions (silent videos need none)"}),_||f.push({selector:S,attribute:"data-audio-description",currentValue:"",issueType:"missing_audio_description",wcag:"1.2.5",context:"Video has no audio description track. For prerecorded video with meaningful visual content not described in the audio, provide an audio description track or a text transcript.",needsAI:true,needsReview:true,reviewReason:"needs a human to judge whether the video shows information its audio does not describe"});}let g=document.querySelectorAll("audio");for(let h of g){let p=typeof uniqueSel=="function"?uniqueSel(h):"audio";h.closest("figure, div, section")?.querySelector('a[href*="transcript"], [class*="transcript"]')||f.push({selector:p,attribute:"data-transcript-missing",currentValue:"",issueType:"missing_transcript",wcag:"1.2.1",context:"Audio element has no associated transcript. Provide a text transcript for all prerecorded audio-only content.",needsAI:true}),h.autoplay&&!h.muted&&f.push({selector:p,attribute:"muted",currentValue:"autoplay without muted",issueType:"unsafe_autoplay",wcag:"1.4.2",context:"Audio autoplays with sound. Provide a way to pause/stop/mute, or limit to 3 seconds.",needsAI:false,fixValue:"true"});}return f},tg={name:"mediaAlternatives",cap:50,async detect(f){return (await f.evaluate($I)).slice(0,50)}};var zI=()=>{let f=[],d=document.querySelector('meta[http-equiv="refresh"]');if(d){let k=d.getAttribute("content")||"",v=parseInt(k,10);!isNaN(v)&&v>0&&v<72e3&&f.push({selector:`meta[http-equiv="refresh"][content*="${k.trim().slice(0,20)}"]`,attribute:"data-auto-refresh",currentValue:k,issueType:"auto_refresh",wcag:"2.2.1",context:`Page auto-refreshes after ${v}s. Users must be able to turn off, adjust, or extend time limits (WCAG 2.2.1).`,needsAI:false,manualFix:true});}let g=document.querySelectorAll("[accesskey]");for(let k of g){let v=k.getAttribute("accesskey")||"";if(v.length===1){let D=typeof uniqueSel=="function"?uniqueSel(k):k.tagName.toLowerCase();f.push({selector:D,attribute:"accesskey",currentValue:v,issueType:"character_key_shortcut",wcag:"2.1.4",context:`Single character accesskey "${v}". Must allow users to remap or disable single-character shortcuts. Consider using modifier key combinations instead.`,needsAI:false,fixValue:"Provide a mechanism to remap or turn off the shortcut, or use modifier keys"});}}let h=document.querySelectorAll("select");for(let k of h){let v=k.hasAttribute("onchange"),D=k.getAttribute("onchange")||"";if(v&&/submit|location|href|navigate|window\./i.test(D)){let T=typeof uniqueSel=="function"?uniqueSel(k):"select";f.push({selector:T,attribute:"onchange",currentValue:D.slice(0,80),issueType:"on_input_change",wcag:"3.2.2",context:"Select element changes context on input (navigates or submits). Add an explicit submit button instead of auto-submitting on selection change.",needsAI:false,fixValue:"Add a submit button; remove auto-navigation from onchange"});}}let p=document.querySelectorAll("[ontouchstart], [ontouchmove], [ongesturestart], [ongesturechange]");for(let k of p)if(!(k.hasAttribute("onclick")||k.hasAttribute("onkeydown")||k.hasAttribute("onkeyup"))){let D=typeof uniqueSel=="function"?uniqueSel(k):k.tagName.toLowerCase();f.push({selector:D,attribute:"data-pointer-gesture",currentValue:"touch/gesture handler without keyboard alternative",issueType:"pointer_gesture",wcag:"2.5.1",context:"Element has touch/gesture handler but no keyboard or click alternative. All multipoint/path-based gestures must have single-pointer alternatives.",needsAI:true});}let y=document.querySelectorAll("[onmousedown]");for(let k of y){let v=k.hasAttribute("onmouseup"),D=k.tagName.toLowerCase();if(!v&&D!=="a"&&D!=="button"&&D!=="input"){let T=typeof uniqueSel=="function"?uniqueSel(k):D;f.push({selector:T,attribute:"data-pointer-cancellation",currentValue:"mousedown action without mouseup",issueType:"pointer_cancellation",wcag:"2.5.2",context:"Element fires action on mouse down-event. Use click or mouseup instead so users can cancel by moving the pointer away before releasing.",needsAI:false,fixValue:"Move action from onmousedown to onclick or onmouseup"});}}let A=/devicemotion|deviceorientation|accelerometer|gyroscope/i,w=/addEventListener\(\s*['"](?:devicemotion|deviceorientation)['"]\s*,\s*(?:\(\s*\)\s*=>|function\s*\(\s*\))\s*\{\s*(?:[A-Za-z_$][\w$]*\s*(?:\+\+|--)\s*;?\s*)+\}\s*\)/gi,F=/addEventListener\(\s*['"](?:click|keydown|keyup|input|change|pointerup|touchend)['"]/i,R=/(?:disable|turn off|switch off|stop|pause|deactivate|opt.?out)[^.]{0,40}(?:motion|shake|tilt|orientation|sensor|gyro|accelerometer)|(?:motion|shake|tilt|orientation|sensor)[^.]{0,40}(?:disable|turn off|switch off|opt.?out)/i;function _(){let k=document.querySelectorAll('label, button, [role="button"], [role="switch"], input[type="button"], input[type="checkbox"]');for(let v of Array.from(k)){let D=(v.textContent||"")+" "+(v.getAttribute("aria-label")||"")+" "+(v.getAttribute("value")||"");if(R.test(D))return true}return false}function x(k){return !A.test(k.replace(w,""))||F.test(k)?true:_()}let S=document.querySelectorAll("script:not([src]):not([data-wa-injected])");for(let k of S){let v=k.textContent||"";if(A.test(v)&&!x(v)){let D=[],T=k;for(;T&&T!==document.body&&T!==document.documentElement;){let z=T.parentElement,X=T.tagName.toLowerCase(),te=z?Array.from(z.children).filter(Z=>Z.tagName===T.tagName):[],ee=te.indexOf(T)+1;D.unshift(ee>1||te.length>1?X+":nth-of-type("+ee+")":X),T=z;}let P=T===document.body?"body":T===document.documentElement?"html":"",B=(P?P+" > ":"")+D.join(" > ");f.push({selector:B||"script",attribute:"data-motion-actuation",currentValue:"Uses device motion/orientation API",issueType:"motion_actuation",wcag:"2.5.4",context:"Page uses device motion/orientation. Any functionality operated by device motion must also be available via UI controls, and motion actuation must be disableable.",needsAI:true});break}}let E=document.querySelectorAll("form"),M='input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), select, textarea',L=/\bcc-|card.?(?:number|num|no\b)|cardnumber|\bcvv|\bcvc|\bcsc\b|security.?code|\bexpir|\biban\b|routing|account.?(?:number|no\b)|sort.?code|\bbilling\b|transaction-(?:amount|currency)/i,N=/card|payment/i,q=/\b(?:pay|buy|purchase|donate|subscribe and pay|place (?:your |my )?order|complete (?:order|purchase|payment)|confirm (?:order|purchase|payment)|check ?out)\b/i,H=/\b(?:delete|remove|close|deactivate|cancel|terminate)\b[^.]{0,30}\b(?:account|profile|subscription|membership|data|records?)\b/i,j=/\b(?:e-?)?sign\b(?![\s\u00a0-]*(?:up|in|on|out)\b)|\bagree and (?:submit|continue|sign)\b/i,U=/\b(?:save|update|change)\b/i,J=/e-?mail|name|phone|tel\b|zip|postal|company|organi[sz]ation|country/i;for(let k of E){let v=Array.from(k.querySelectorAll(M)),D=He=>[He.getAttribute("name"),He.getAttribute("id"),He.getAttribute("autocomplete"),He.getAttribute("placeholder"),He.getAttribute("aria-label")].join(" "),T=Array.from(k.querySelectorAll('button, input[type="submit"], input[type="image"]')).filter(He=>He.tagName!=="BUTTON"||!He.getAttribute("type")||(He.getAttribute("type")||"").toLowerCase()==="submit").map(He=>(He.getAttribute("value")||"")+" "+(He.textContent||"")+" "+(He.getAttribute("aria-label")||"")).join(" . "),P=v.some(He=>L.test(D(He)))||Array.from(k.querySelectorAll("iframe")).some(He=>N.test((He.getAttribute("title")||"")+" "+(He.getAttribute("name")||""))),B=v.some(He=>/signature/i.test(D(He))),z=P||q.test(T),X=H.test(T),te=B||j.test(T),ee=v.length>0&&v.some(He=>(He.getAttribute("type")||"").toLowerCase()==="email"||/e-?mail/i.test(D(He)))&&v.every(He=>{let Mt=He.tagName.toLowerCase()==="input"?(He.getAttribute("type")||"text").toLowerCase():He.tagName.toLowerCase();return Mt==="email"||Mt==="checkbox"||Mt==="tel"?true:Mt==="text"||Mt==="search"?J.test(D(He)+" "+(He.closest("label")?.textContent||"")):false}),Z=(k.textContent||"").toLowerCase(),ie=/payment|credit card|billing|purchase|\border\b|checkout|bank|account number/i.test(Z),be=/\bagree|terms|contract|binding|signature|consent|waiver/i.test(Z),de=/delete.*account|remove.*data|cancel.*account/i.test(Z),ke=z||X||te,De=ee&&(U.test(T)||de),Be=!ke&&(!ee&&(ie||be||de)||De);if(!ke&&!Be)continue;let _e=!!k.querySelector('[type="checkbox"][required], [class*="confirm"], [id*="confirm"], [name*="confirm"]'),Ee=!!k.querySelector('[class*="review"], [class*="summary"], [id*="review"]');if(_e||Ee)continue;let bt=typeof uniqueSel=="function"?uniqueSel(k):"form",kt=ke?z?"financial":X?"data-deletion":"legal":De?de?"data-deletion":"data-modification":ie?"financial":be?"legal":"data-deletion";f.push({selector:bt,attribute:"data-error-prevention",currentValue:kt,issueType:"error_prevention_missing",wcag:"3.3.4",context:`${kt.charAt(0).toUpperCase()+kt.slice(1)} form lacks a confirmation/review step. For ${kt} transactions, provide: (1) a review step before submission, (2) ability to check/correct input, or (3) ability to reverse the submission.`,needsAI:true,...Be?{needsReview:true,reviewReason:De&&de?"form text is about deleting an account or data and its submit is generic \u2014 confirm whether submitting it deletes stored user data":De?"form saves contact/account details \u2014 confirm whether submitting it changes stored user data that cannot be reviewed or reversed":`form text mentions ${kt} topics but its controls show no ${kt} transaction (no payment fields, pay/order/delete submit, or signature) \u2014 confirm whether submitting it commits the user`}:{}});}return f},rg={name:"timingAndInput",async detect(f){return f.evaluate(zI)}};var GI=()=>{let f=[],d=document.querySelectorAll('nav, [role="navigation"]');for(let p of d){if(!p.offsetParent||p.closest('footer, aside, [role="contentinfo"], [role="complementary"]')||p.parentElement?.closest('nav, [role="navigation"]'))continue;let y=p.getBoundingClientRect();if(y.top<=window.innerHeight)continue;let A=typeof uniqueSel=="function"?uniqueSel(p):"nav";f.push({selector:A,attribute:"data-nav-position",currentValue:`top: ${Math.round(y.top)}px`,issueType:"inconsistent_navigation",wcag:"3.2.3",context:"Primary navigation appears below the visible viewport on this page. WCAG 3.2.3 (Consistent Navigation) is a cross-page criterion and cannot be confirmed from a single page \u2014 manually verify this navigation appears in the same relative order across pages that share this template.",needsAI:true,needsReview:true,reviewReason:"Consistent Navigation (3.2.3) is a cross-page criterion; single-page position alone cannot confirm a violation."});}let g=document.querySelectorAll('[class*="blink" i], [class*="flash" i], [class*="strobe" i], blink, marquee');for(let p of g){if(!p.offsetParent)continue;let y=p.getBoundingClientRect();if(y.width<1||y.height<1||!(p.textContent||"").trim()&&!p.querySelector("img, svg, video, canvas, picture")&&getComputedStyle(p).backgroundImage==="none")continue;let A=typeof uniqueSel=="function"?uniqueSel(p):p.tagName.toLowerCase();f.push({selector:A,attribute:"data-flashing",currentValue:p.tagName.toLowerCase(),issueType:"flashing_content",wcag:"2.3.1",context:"Element may produce flashing content. Content must not flash more than 3 times per second. Remove blinking/flashing effects or ensure they are below the threshold.",needsAI:true});}let h=document.querySelectorAll('img[src*=".gif"]');for(let p of h){if(!p.offsetParent||p.width<25||p.height<25)continue;let y=p.getBoundingClientRect();if(y.width>100&&y.height>100){let A=typeof uniqueSel=="function"?uniqueSel(p):"img";f.push({selector:A,attribute:"data-animated-gif",currentValue:(p.src||"").split("/").pop()?.slice(0,40)||"",issueType:"animated_gif_no_pause",wcag:"2.2.2",context:"Animated GIF detected. If this GIF is animated and loops continuously, provide a pause mechanism. Also verify it does not flash more than 3 times per second (WCAG 2.3.1).",needsAI:true});}}return f},ng={name:"navigationAndWayfinding",async detect(f){return f.evaluate(GI)}};var ag={name:"flashDetection",async detect(f){let d=[];if(!f.screenshot)return d;let h=await f.evaluate(()=>{let _=document.documentElement.style.getPropertyValue("--wa-animations-frozen")==="1";if(_){let x=document.querySelectorAll("*");for(let S of x)S.style.removeProperty("animation-play-state"),S.style.removeProperty("transition");}return _}),p=8,y=120,A=9,w=3,F=[];for(let R=0;R<p;R++){let _=await f.evaluate(x=>{let S=window.innerWidth,E=window.innerHeight,M=3,L=3,N=[];for(let q=0;q<L;q++)for(let H=0;H<M;H++){let j=Math.floor((H+.5)*(S/M)),U=Math.floor((q+.5)*(E/L)),J=document.elementFromPoint(j,U);if(!J){N.push(0);continue}let v=getComputedStyle(J).backgroundColor||"rgba(0,0,0,0)",D=typeof parseCssColor=="function"?parseCssColor(v):null;if(!D){N.push(0);continue}let T=.2126*D[0]+.7152*D[1]+.0722*D[2];N.push(T);}return N},A);F.push(_),R<p-1&&await new Promise(x=>setTimeout(x,y));}h&&await f.evaluate(()=>{let R=document.querySelectorAll("*");for(let _ of R)_.style.setProperty("animation-play-state","paused","important"),_.style.setProperty("transition","none","important");});for(let R=0;R<A;R++){let _=0,x=F[0][R],S=null;for(let L=1;L<p;L++){let N=F[L][R];if(Math.abs(N-x)>25){let H=N>x?"up":"down";S&&H!==S&&_++,S=H;}x=N;}let E=p*y/1e3,M=_/E;if(M>=w){let L=R%3,N=Math.floor(R/3);d.push({selector:"body",attribute:"data-flash-detected",currentValue:`${M.toFixed(1)} flashes/sec in region (${L},${N})`,issueType:"flashing_content",wcag:"2.3.1",context:`Content flashes ${M.toFixed(1)} times/second in screen region (row ${N}, col ${L}). WCAG requires no more than 3 flashes per second. This can trigger seizures in users with photosensitive epilepsy.`,needsAI:false,fixValue:"Remove or reduce flashing to below 3 per second, or ensure the flashing area is below the 21,824 sq pixel threshold"});}}return d}};var ig={name:"reducedMotion",async detect(f){let d=[],g=await f.evaluate(()=>{let h=false,p=false;for(let A of document.styleSheets)try{for(let w of A.cssRules){let F=w.cssText||"";/animation|transition|@keyframes/i.test(F)&&!/prefers-reduced-motion/.test(F)&&(h=!0),w instanceof CSSMediaRule&&/prefers-reduced-motion/i.test(w.conditionText||w.media?.mediaText||"")&&(p=!0);}}catch{}let y=document.querySelectorAll('[class*="animate"], [class*="slide"], [class*="fade"], [class*="bounce"], [class*="spin"], [class*="pulse"]');return y.length>0&&(h=true),{hasAnimations:h,hasReducedMotionQuery:p,animatedCount:y.length}});return g.hasAnimations&&!g.hasReducedMotionQuery&&d.push({selector:"html",attribute:"data-reduced-motion",currentValue:`${g.animatedCount} animated elements, no @media (prefers-reduced-motion) query`,issueType:"motion_without_reduced_motion",wcag:"2.3.3",context:'Page has animations/transitions but no @media (prefers-reduced-motion: reduce) query. Users who set "Reduce motion" in their OS settings will still see all animations. Add: @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }',needsAI:false,fixValue:"@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }"}),d}};var UI=()=>{let f="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",g=[],h=/^(0+(\.0+)?|false|off|no|none|disabled?)$/i,p=v=>v!==null&&!h.test(v.trim()),y=v=>{let D=parseFloat((v||"").trim());return Number.isFinite(D)&&D>0},A=/^(carousel|slider|slideshow|slides|slick|swiper|splide|flickity|owl|flexslider|glide|layerslider|ls|rotator|gallery)$/i,w=v=>v.split(/[\s_-]+/).filter(Boolean),F=v=>{if((v.getAttribute("aria-roledescription")||"").trim().toLowerCase()==="carousel")return true;let D=typeof v.className=="string"?v.className:v.getAttribute("class")||"";return w(D).some(T=>A.test(T))},R=/^(autoplay|autoPlay|auto_play|autoStart|autostart|auto_start)$/,_=v=>{let D=v.trim();if(!D.startsWith("{"))return "";let T;try{T=JSON.parse(D);}catch{try{T=JSON.parse(D.replace(/'/g,'"'));}catch{return ""}}if(!T||typeof T!="object")return "";for(let P of Object.keys(T)){if(!R.test(P))continue;let B=T[P];if(B===true||typeof B=="number"&&B>0||typeof B=="string"&&p(B)&&B.trim()!==""||B&&typeof B=="object")return `${P}: ${JSON.stringify(B).slice(0,40)}`}return ""},x=v=>{for(let P of ["data-autoplay","data-auto","data-autostart","data-bs-autoplay","data-auto-play"]){if(!v.hasAttribute(P))continue;let B=v.getAttribute(P)||"";if((B.trim()===""||p(B))&&(F(v)||U(v)>=2))return {attr:P,value:B}}let D=["data-interval","data-bs-interval"].some(P=>v.hasAttribute(P)&&h.test((v.getAttribute(P)||"").trim()));for(let P of ["data-ride","data-bs-ride"])if((v.getAttribute(P)||"").trim().toLowerCase()==="carousel"&&!D)return {attr:P,value:"carousel"};for(let P of ["data-interval","data-bs-interval"]){let B=v.getAttribute(P);if(y(B)&&F(v))return {attr:P,value:B||""}}let T=F(v);for(let P of Array.from(v.attributes)){if(!P.name.startsWith("data-")||!T&&!w(P.name.slice(5)).some(z=>A.test(z)))continue;let B=_(P.value);if(B)return {attr:P.name,value:B}}if((v.getAttribute("aria-roledescription")||"").trim().toLowerCase()==="carousel"){let P=/autoplay["']?\s*[:=]\s*["']?(false|0|off|no)\b/i;for(let B of Array.from(v.attributes)){if(/(^|-)autoplay$/i.test(B.name)&&(B.value.trim()===""||p(B.value)))return {attr:B.name,value:B.value.slice(0,60)};if(/autoplay/i.test(B.value)&&!P.test(B.value))return {attr:B.name,value:B.value.slice(0,60)}}}return null},S=/^(pause|stop|play|playpause|resume)$/i,E=/\b(pause|stop|play|resume)\b/i,M=v=>{let D=[v.getAttribute("aria-label")||"",v.getAttribute("title")||"",v.getAttribute("value")||"",(v.textContent||"").trim().slice(0,80)],T=(v.getAttribute("aria-labelledby")||"").trim();if(T)for(let P of T.split(/\s+/))D.push(document.getElementById(P)?.textContent||"");for(let P of Array.from(v.querySelectorAll("img[alt]")))D.push(P.getAttribute("alt")||"");return D.join(" ")},L=v=>{let D=v.getAttribute("class")||"";return w(D).some(T=>S.test(T))?true:v.matches('a, button, input, [role="button"], [role="switch"], [role="checkbox"], [tabindex]')?E.test(M(v)):false},N=/^(section|article|main|nav|aside|header|footer|form|dialog)$/i,q=v=>F(v)||x(v)!==null||Array.from(v.querySelectorAll("*")).some(D=>F(D)||x(D)!==null),H=v=>{if(v.querySelector("[aria-pressed]"))return true;let D=[v];for(let B of Array.from(v.parentElement?.children||[]))B===v||N.test(B.tagName)||q(B)||D.push(B);let T=v.getAttribute("id"),P=B=>{let z=[...(B.getAttribute("aria-controls")||"").split(/\s+/),(B.getAttribute("data-bs-target")||B.getAttribute("data-target")||"").replace(/^#/,"")].filter(Boolean);return z.length>0&&!z.includes(T||"")};for(let B of D){if(B!==v&&L(B)&&!P(B))return true;for(let z of Array.from(B.querySelectorAll("*")))if(L(z)&&!P(z))return true}if(T){let B=typeof CSS<"u"&&CSS.escape?CSS.escape(T):T.replace(/["\\]/g,"\\$&");for(let z of Array.from(document.querySelectorAll(`[aria-controls~="${B}"], [data-target="#${B}"], [data-bs-target="#${B}"]`)))if(L(z))return true}return false},j=/^(slide|cell)$/i,U=v=>{let D=z=>w(z.getAttribute("class")||"").some(X=>j.test(X))&&!/(^|[\s_-])cloned?([\s_-]|$)/i.test(z.getAttribute("class")||""),T=Array.from(v.querySelectorAll("[class]")).filter(D),P=T.filter(z=>!T.some(X=>X!==z&&X.contains(z)));if(!P.length)return 0;let B=P.length;for(let z of P){let X=Array.from(z.parentElement?.children||[]).filter(te=>te.tagName===z.tagName&&!/(^|[\s_-])cloned?([\s_-]|$)/i.test(te.getAttribute("class")||""));B=Math.max(B,X.length);}return B},J=new Set,k=(v,D)=>{if(g.length>=10||J.has(v)||(J.add(v),v.closest(f))||v.closest('[aria-hidden="true"], [hidden], template, noscript')||typeof isVisible=="function"&&!isVisible(v)||U(v)===1||H(v))return;let T=typeof uniqueSel=="function"?uniqueSel(v):v.tagName.toLowerCase();g.push({selector:T,attribute:D.attr,currentValue:D.value.slice(0,100),issueType:"carousel_autoplay_no_pause",wcag:"2.2.2",context:`slider markup declares autoplay (${D.attr}="${D.value.slice(0,60)}") and no pause / stop control sits in or beside it`,message:"carousel starts automatically and has no pause or stop control",needsAI:false,manualFix:true,reviewReason:"add a visible pause / stop control for the slider (or turn autoplay off); no attribute write fixes this",outerHtml:v.cloneNode(false).outerHTML.slice(0,300)});};for(let v of Array.from(document.body?document.body.querySelectorAll("*"):[])){if(g.length>=10)break;if(!v.attributes.length)continue;if(v.hasAttribute("data-swiper-autoplay")&&y(v.getAttribute("data-swiper-autoplay"))){let T=v.closest('.swiper, .swiper-container, [class*="swiper"]:not(.swiper-slide):not(.swiper-wrapper)')||v.parentElement?.parentElement||v;k(T,{attr:"data-swiper-autoplay",value:v.getAttribute("data-swiper-autoplay")||""});continue}let D=x(v);D&&k(v,D);}return g},og={name:"carouselAutoplay",cap:10,async detect(f){return f.evaluate(UI)}};var gg=[Xh,Bh,Gh,dh,Rh,Th,vh,Vh,xh,Wh,Dh,$h,fh,qh,Fh,yh,Ph,Eh,Nh,Ih,Yh,Kh,Lh,hh,gh,Mh,jh,Uh,bh,zh,ph,Oh,Jh,Zh,Qh,eg,tg,rg,ng,ag,ig,og],vM=[ch,mh,wh,Hh];function vg(f,d,g){f?.push({tool:d,kind:"engine-failed",detail:`detector threw, its findings are absent: ${g?.message??String(g)}`});}async function bg(f,d,g,h){let p=d??[],y=[];try{let{detectPlatform:H}=await Promise.resolve().then(()=>(Eu(),_u));y=await H(f);}catch{}try{let{UNIQUE_SELECTOR_JS:H,IS_VISIBLE_JS:j,ACCESSIBLE_NAME_JS:U,WIDGET_SKIP_JS:J,IS_HIDDEN_FROM_AT_JS:k,IS_TRACKING_PIXEL_JS:v,NEARBY_CONTEXT_JS:D}=await Promise.resolve().then(()=>(ug(),lg)),{ICON_LABELS_JS:T}=await Promise.resolve().then(()=>(dg(),cg)),{COLOR_MATH_JS:P}=await Promise.resolve().then(()=>(pg(),fg)),z=`if(typeof __name==='undefined'){var __name=function(t,v){return t};var __defProp=Object.defineProperty;}
384
384
  `+[H,j,U,J,k,v,D,T,P].join(`
385
- `),{inject:X}=await Promise.resolve().then(()=>(Hr(),gn));try{await X(f,{tool:"detector-helpers",content:z});}catch{await f.evaluate(`(0,eval)(${JSON.stringify(z)})`);}}catch(H){console.warn("[webability] helper injection failed:",H.message),(g??[]).push("color:kernel-injection-failed");}let A=[],w="";try{let{applyPlatformTemplates:H}=await Promise.resolve().then(()=>(Eu(),_u)),j=y;w=j.filter(U=>U!=="universal"&&U!=="universal_iframe").join(", "),A=await H(f,j);}catch{}let{guardDetectorState:F}=await Promise.resolve().then(()=>(Hr(),gn)),R=globalThis.process?.env?.WA_STRICT_STATE==="1",_={strict:R,bugs:h?.internalBugs},x=await F(f,"detectors:parallel",g??[],()=>Promise.allSettled((h?.experimental?[...gg,...vM]:gg).map(async H=>{try{let j=await H.detect(f);return H.cap&&j.length>=H.cap&&p.push({detector:H.name,cap:H.cap}),j}catch(j){return vg(h?.internalBugs,H.name,j),[]}})),_),S=[];h?.skipFocusMutating&&(g??[]).push("focus:mutating-detectors-skipped (live-tab scan; focus visibility and focus obscured were not checked)");let E=[...h?.skipFocusMutating?[]:[_h,Ah],...h?.extraSerialDetectors??[]];for(let H of E){let j=[];try{j=await F(f,H.name,g??[],()=>H.detect(f).catch(U=>(vg(h?.internalBugs,H.name,U),[])),_);}catch(U){if(R)throw U}try{H.cap&&j.length>=H.cap&&p.push({detector:H.name,cap:H.cap}),S=S.concat(j);}catch{}}let M=[...x.flatMap(H=>H.status==="fulfilled"?H.value:[]),...S];if(w)for(let H of M)H.needsAI&&(H.context=uh(H.context,w));let L=[...A,...M],N=bM(L),q=["wp-ada-compliance","webability-widget","webability-a11y","asw-","userway","acsb","audioeye","equallyai"];return N.filter(H=>{let j=H.selector.toLowerCase();return j.trim()?!q.some(U=>j.includes(U)):false})}function bM(f){let d=new Set;return f.filter(g=>{let h=`${g.selector}::${g.issueType}`;return d.has(h)?false:(d.add(h),true)})}var yg="1.16.0";var Su=["wcag2a","wcag2aa","wcag21aa","wcag22aa"];function ku(f){return f.includes("wcag21aa")||f.includes("wcag22aa")||f.includes("wcag134")?{"css-orientation-lock":{enabled:true}}:{}}function wg(f,d){return d==="AAA"&&!f.includes("wcag2aaa")?[...f,"wcag2aaa"]:f}var yM={"1.1.1":"A","1.2.1":"A","1.2.2":"A","1.2.3":"A","1.3.1":"A","1.3.2":"A","1.3.3":"A","1.4.1":"A","1.4.2":"A","2.1.1":"A","2.1.2":"A","2.1.4":"A","2.2.1":"A","2.2.2":"A","2.3.1":"A","2.4.1":"A","2.4.2":"A","2.4.3":"A","2.4.4":"A","2.5.1":"A","2.5.2":"A","2.5.3":"A","2.5.4":"A","3.1.1":"A","3.2.1":"A","3.2.2":"A","3.2.6":"A","3.3.1":"A","3.3.2":"A","3.3.7":"A","4.1.2":"A","1.2.4":"AA","1.2.5":"AA","1.3.4":"AA","1.3.5":"AA","1.4.3":"AA","1.4.4":"AA","1.4.5":"AA","1.4.10":"AA","1.4.11":"AA","1.4.12":"AA","1.4.13":"AA","2.4.5":"AA","2.4.6":"AA","2.4.7":"AA","2.4.11":"AA","2.5.7":"AA","2.5.8":"AA","3.1.2":"AA","3.2.3":"AA","3.2.4":"AA","3.3.3":"AA","3.3.4":"AA","3.3.8":"AA","4.1.3":"AA","1.2.6":"AAA","1.2.7":"AAA","1.2.8":"AAA","1.2.9":"AAA","1.3.6":"AAA","1.4.6":"AAA","1.4.7":"AAA","1.4.8":"AAA","1.4.9":"AAA","2.1.3":"AAA","2.2.3":"AAA","2.2.4":"AAA","2.2.5":"AAA","2.2.6":"AAA","2.3.2":"AAA","2.3.3":"AAA","2.4.8":"AAA","2.4.9":"AAA","2.4.10":"AAA","2.4.12":"AAA","2.4.13":"AAA","2.5.5":"AAA","2.5.6":"AAA","3.1.3":"AAA","3.1.4":"AAA","3.1.5":"AAA","3.1.6":"AAA","3.2.5":"AAA","3.3.5":"AAA","3.3.6":"AAA","3.3.9":"AAA"};function wM(f){return yM[f]}var ni={A:1,AA:2,AAA:3};function xg(f){let d=String(f.wcag||"").split(/[,\s]+/).filter(h=>/^\d+\.\d+\.\d+$/.test(h));if(d.length===0)return f.level??"AA";let g;for(let h of d){let p=wM(h);p&&(!g||ni[p]<ni[g])&&(g=p);}return g}function ra(f,d="AA"){let g=ni[d]??ni.AA;return f.filter(h=>{let p=xg(h);return !!p&&ni[p]<=g})}var xM=new Set(["new_window_link","external_link_warning","download_link_warning"]);function Dg(f){let d=xM.has(f.issueType)?"minor":f.needsAI?"serious":"moderate",g=f.attribute==="style",h=f.attribute.startsWith("data-"),p=g&&f.fixValue?DM(f.fixValue):f.fixValue;return {id:`wa-${f.issueType}-${ai(f.selector)}`,source:"webability",type:f.issueType,wcag:f.wcag,level:xg({wcag:f.wcag})??"AA",impact:d,message:AM(f,p,h),selector:f.selector,html:f.outerHtml,...f.needsReview?{confidence:"needs_review"}:{},...f.reviewReason?{reviewReason:f.reviewReason}:{},fix:{attribute:f.attribute,currentValue:f.currentValue,suggestedValue:p,needsManualReview:f.needsAI||g||h||!!f.needsReview||!!f.manualFix}}}function DM(f){let d=f.trim();if(!d)return "";let g=d.endsWith(";"),p=d.split(";").map(y=>{let w=y.toLowerCase().lastIndexOf("!important");return w===-1?y.trim():y.slice(0,w).trim()}).filter(y=>y.length>0);return p.length===0?"":p.join(";")+(g?";":"")}function AM(f,d,g){if(f.message)return f.message;let h=f.issueType.replace(/_/g," "),p=d??f.fixValue;return g?p?`${h}: ${p}`:f.currentValue?`${h}: ${f.currentValue}`:f.context?`${h}: ${f.context}`:h:p?`${h}: set ${f.attribute}="${p}"`:f.currentValue?`${h}: ${f.attribute} is "${f.currentValue}"`:`${h}: missing ${f.attribute}`}function na(f){return Array.isArray(f)?f.flat(1/0).filter(g=>typeof g=="string").join(" >>> "):typeof f=="string"?f:""}function ai(f){let d=0;for(let g=0;g<f.length;g++)d=(d<<5)-d+f.charCodeAt(g)|0;return Math.abs(d).toString(36)}function Tu(f){return f==="critical"||f==="serious"||f==="moderate"||f==="minor"?f:"moderate"}function Ru(f,d=[]){return {total:f.length,critical:f.filter(g=>g.impact==="critical").length,serious:f.filter(g=>g.impact==="serious").length,moderate:f.filter(g=>g.impact==="moderate").length,minor:f.filter(g=>g.impact==="minor").length,incomplete:0}}function _M(f){let d=/^wcag(\d)(\d)(\d{1,2})$/.exec(f);return d?`${d[1]}.${d[2]}.${d[3]}`:""}function Fu(f){for(let d of f){let g=_M(d);if(g)return g}return ""}function Iu(f){return f.includes("wcag2aaa")?"AAA":f.includes("wcag2aa")||f.includes("wcag21aa")||f.includes("wcag22aa")?"AA":"A"}async function Eg(f,d){try{let{AxeBuilder:g}=await import('@axe-core/playwright'),h=typeof f.mainFrame=="function"?f:f.axePage?.()??f;return await new g({page:h}).options({rules:ku(d)}).withTags(d).analyze()}catch{return EM(f,d)}}async function EM(f,d){let g=await Promise.resolve().then(()=>Z3(_g())),h=g.source??g.default?.source;if(!h)throw new Error("axe-core source unavailable");try{await f.evaluate(h);}catch{let{inject:y}=await Promise.resolve().then(()=>(Hr(),gn));await y(f,{tool:"axe",content:h});}return await f.evaluate(({wcagTags:y,rules:A})=>new Promise((w,F)=>{let R=window;if(!R.axe)return F(new Error("axe-core not loaded"));R.axe.run(document,{runOnly:{type:"tag",values:y},rules:A,resultTypes:["violations","incomplete"]}).then(w).catch(F);}),{wcagTags:d,rules:ku(d)})}function Mu(f){let d=[],g=[];for(let h of f)h.confidence==="needs_review"||SM(h)?g.push(h):d.push(CM(h));return {verdicts:d,undecided:g}}function CM(f){if(f.confidence===void 0&&f.reviewReason===void 0)return f;let{confidence:d,reviewReason:g,...h}=f;return h}function SM(f){let d=(f.type||"").toLowerCase(),g=f.wcag||"",h=f.html||"",p=(f.message||"").toLowerCase();if((d==="contrast_insufficient"||d==="color-contrast"||g==="1.4.3"||g==="1.4.11")&&kM(h))return "background uses gradient or image";if(d==="image_of_text"||g==="1.4.5"){let y=Cg(h,"src").toLowerCase();y.startsWith("data:")&&(y=y.split(",")[0]);let A=Cg(h,"alt").toLowerCase();if(/\b(logo|brand|wordmark|hero|banner|footer|marketing|promo|cover)\b/.test(y))return "brand imagery";if(A.length>0&&/\b(logo|brand|product screenshot|dashboard)\b/.test(A))return "branded imagery"}return (d==="inconsistent_navigation"||p.includes("inconsistent navigation"))&&(/<footer/i.test(h)||/<aside/i.test(h))?"footer/aside nav":""}function kM(f){return /background(-image)?\s*:\s*(?:linear-gradient|radial-gradient|conic-gradient|url\()/i.test(f)}function Cg(f,d){let g=new RegExp(`\\b${d}\\s*=\\s*"([^"]*)"`,"i"),h=f.match(g);return h?h[1]:""}Hr();var Sg=60,kg=3,Tg=120,Rg=1200,Fg=300,Ig=2e5,Mg=8e3,TM=new Set(["bgImage","bgGradient","bgOverlap","elmPartiallyObscured","elmPartiallyObscuring"]),RM="*,*::before,*::after{color:transparent!important;-webkit-text-fill-color:transparent!important;text-shadow:none!important;text-decoration-color:transparent!important;caret-color:transparent!important}";function FM(f){let{selectors:d,maxBoxes:g,maxW:h,maxH:p,maxArea:y}=f,A=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,F=document.createElement("canvas");F.width=F.height=1;let R=F.getContext("2d",{willReadFrequently:true}),_=N=>{try{R.clearRect(0,0,1,1),R.fillStyle="#000",R.fillStyle=N,R.fillRect(0,0,1,1);let q=R.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]]}catch{return null}},x={},S=document.querySelectorAll("video,canvas,iframe,embed,object");if(S.length>200){for(let N of d)x[N]=null;return x}let E=Array.from(S).map(N=>N.getBoundingClientRect()),M=window.scrollX,L=window.scrollY;for(let N of d){x[N]=null;let q=null;try{q=document.querySelector(N);}catch{continue}if(!q)continue;let H=getComputedStyle(q);if(H.visibility!=="visible"||H.display==="none"||H.webkitBackgroundClip==="text"||H.backgroundClip==="text")continue;let j=false,U=0;for(let Z=q;Z;Z=Z.parentElement){if(++U>64){j=true;break}let ie=getComputedStyle(Z);parseFloat(ie.opacity)<1&&(j=true),(ie.mixBlendMode!=="normal"||ie.filter!=="none")&&(j=true);}if(j)continue;let J=_(H.color);if(!J||J[3]<255)continue;let k=parseFloat(H.fontSize),v=parseInt(H.fontWeight,10)>=700,D=k>=24||v&&k>=18.66,T=[],P=q.getBoundingClientRect();if(P.height>p*g||P.width>h*2)continue;let B=document.createTreeWalker(q,NodeFilter.SHOW_TEXT),z,X=0,te=false;for(;!te&&(z=B.nextNode());){if(++X>50){te=true;break}if(z.parentElement!==q)continue;let Z=z.textContent||"";if(Z.length>2e3){te=true;break}if(!Z.trim())continue;let ie=document.createRange();ie.selectNodeContents(z);let be=ie.getClientRects();if(be.length>g){te=true;break}for(let de=0;de<be.length;de++){let ke=be[de];if(!(ke.width<2||ke.height<2)&&(T.push({x:Math.round(ke.left+M),y:Math.round(ke.top+L),w:Math.max(1,Math.round(ke.width)),h:Math.max(1,Math.round(ke.height))}),T.length>g)){te=true;break}}}te||T.length===0||T.length>g||T.some(Z=>Z.w>h||Z.h>p||Z.w*Z.h>y||Z.x<0||Z.y<0||Z.x+Z.w>A||Z.y+Z.h>w)||T.some(Z=>E.some(ie=>Z.x<ie.right+M&&Z.x+Z.w>ie.left+M&&Z.y<ie.bottom+L&&Z.y+Z.h>ie.top+L))||(x[N]={fg:`rgb(${J[0]},${J[1]},${J[2]})`,threshold:D?3:4.5,boxes:T});}return x}async function IM(f){let{b64:d,fg:g}=f,h=atob(d),p=new Uint8Array(h.length);for(let j=0;j<h.length;j++)p[j]=h.charCodeAt(j);let y=await createImageBitmap(new Blob([p],{type:"image/png"})),A=document.createElement("canvas");A.width=y.width,A.height=y.height;let w=A.getContext("2d",{willReadFrequently:true});w.drawImage(y,0,0);let F=w.getImageData(0,0,A.width,A.height).data,R=j=>{let U=j/255;return U<=.03928?U/12.92:Math.pow((U+.055)/1.055,2.4)},_=(j,U,J)=>.2126*R(j)+.7152*R(U)+.0722*R(J),x=g.match(/\d+/g).map(Number),S=_(x[0],x[1],x[2]),E=Math.max(1,Math.floor(Math.sqrt(A.width*A.height/1500))),M=0,L=1/0,N="",q="",H=0;for(let j=0;j<A.height;j+=E)for(let U=0;U<A.width;U+=E){let J=(j*A.width+U)*4;if(F[J+3]<255)continue;let k=_(F[J],F[J+1],F[J+2]),v=Math.max(S,k),D=Math.min(S,k),T=(v+.05)/(D+.05);T>M&&(M=T,q=`rgb(${F[J]},${F[J+1]},${F[J+2]})`),T<L&&(L=T,N=`rgb(${F[J]},${F[J+1]},${F[J+2]})`),H++;}return H===0?null:{best:M,worst:L,worstBg:N,bestBg:q}}var jo=class extends Error{};function vr(f,d){let g=d-Date.now();if(g<=0)return Promise.reject(new jo("pixel pass deadline"));let h,p=new Promise((y,A)=>{h=setTimeout(()=>A(new jo("pixel pass deadline")),g);});return Promise.race([f,p]).finally(()=>clearTimeout(h))}async function Lu(f,d){let g=f.screenshot;if(typeof g!="function"||d.length===0)return [];let h=Array.from(new Set(d)).slice(0,Sg),p=[],y=false,A=Date.now()+Mg;try{await vr(f.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),A);let w=await vr(f.evaluate(FM,{selectors:h,maxBoxes:kg,maxW:Rg,maxH:Fg,maxArea:Ig}),A);await vr(Vo(f,{tool:"contrast-pixels",css:RM}),A),y=!0;let F=0;for(let R of h){let _=w[R];if(!_)continue;if(Date.now()>A||F+_.boxes.length>Tg)break;let x=0,S=1/0,E="",M="",L=!0;for(let N of _.boxes){F++;let q=await vr(g.call(f,{clip:{x:N.x,y:N.y,width:N.w,height:N.h},fullPage:!0,type:"png",animations:"disabled"}),A),H=globalThis.Buffer,j=H?H.from(q).toString("base64"):"",U=await vr(f.evaluate(IM,{b64:j,fg:_.fg}),A);if(!U){L=!1;break}U.best>x&&(x=U.best,M=U.bestBg),U.worst<S&&(S=U.worst,E=U.worstBg);}L&&p.push({selector:R,fail:x<_.threshold*.97,bestRatio:x,worstRatio:S,...E?{worstBg:E}:{},...M?{bestBg:M}:{},threshold:_.threshold,fg:_.fg});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("pixel judge failed",w);}finally{if(y)try{await Promise.race([f.evaluate(()=>document.querySelectorAll('style[data-wa-injected^="contrast-pixels:"]').forEach(w=>w.remove())),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return p}function MM(f){let{selectors:d,maxBoxes:g,maxW:h,maxH:p,maxArea:y}=f,A=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,F=window.scrollX,R=window.scrollY,_={};for(let x of d){_[x]=null;let S=null;try{S=document.querySelector(x);}catch{continue}if(!S)continue;let E=getComputedStyle(S);if(E.visibility!=="visible"||E.display==="none"||!(E.webkitBackgroundClip==="text"||E.backgroundClip==="text"))continue;let M=false,L=0;for(let D=S;D;D=D.parentElement){if(++L>64){M=true;break}let T=getComputedStyle(D);(parseFloat(T.opacity)<1||T.mixBlendMode!=="normal"||T.filter!=="none")&&(M=true);}if(M)continue;let N=parseFloat(E.fontSize),q=parseInt(E.fontWeight,10)>=700,H=N>=24||q&&N>=18.66,j=[],U=document.createTreeWalker(S,NodeFilter.SHOW_TEXT),J,k=0,v=false;for(;!v&&(J=U.nextNode());){if(++k>50){v=true;break}if(!(J.textContent||"").trim())continue;let D=document.createRange();D.selectNodeContents(J);let T=D.getClientRects();for(let P=0;P<T.length;P++){let B=T[P];if(!(B.width<2||B.height<2)&&(j.push({x:Math.round(B.left+F),y:Math.round(B.top+R),w:Math.max(1,Math.round(B.width)),h:Math.max(1,Math.round(B.height))}),j.length>g)){v=true;break}}}v||j.length===0||j.some(D=>D.w>h||D.h>p||D.w*D.h>y||D.x<0||D.y<0||D.x+D.w>A||D.y+D.h>w)||(_[x]={threshold:H?3:4.5,boxes:j});}return _}async function LM(f){let d=async S=>{let E=atob(S),M=new Uint8Array(E.length);for(let H=0;H<E.length;H++)M[H]=E.charCodeAt(H);let L=await createImageBitmap(new Blob([M],{type:"image/png"})),N=document.createElement("canvas");N.width=L.width,N.height=L.height;let q=N.getContext("2d",{willReadFrequently:true});return q.drawImage(L,0,0),{w:N.width,h:N.height,d:q.getImageData(0,0,N.width,N.height).data}},g=await d(f.painted),h=await d(f.backdrop);if(g.w!==h.w||g.h!==h.h)return null;let p=S=>{let E=S/255;return E<=.03928?E/12.92:Math.pow((E+.055)/1.055,2.4)},y=(S,E,M)=>.2126*p(S)+.7152*p(E)+.0722*p(M),A=g.w,w=g.h,F=new Uint8Array(A*w);for(let S=0;S<A*w;S++){let E=S*4;F[S]=Math.abs(g.d[E]-h.d[E])+Math.abs(g.d[E+1]-h.d[E+1])+Math.abs(g.d[E+2]-h.d[E+2])>48?1:0;}let R=2,_=[];for(let S=R;S<w-R;S++)for(let E=R;E<A-R;E++){let M=S*A+E;if(!F[M])continue;let L=true;for(let j=-R;j<=R&&L;j++)for(let U=-R;U<=R;U++)if(!F[M+j*A+U]){L=false;break}if(!L)continue;let N=M*4,q=y(g.d[N],g.d[N+1],g.d[N+2]),H=y(h.d[N],h.d[N+1],h.d[N+2]);_.push({ratio:(Math.max(q,H)+.05)/(Math.min(q,H)+.05),fg:`rgb(${g.d[N]},${g.d[N+1]},${g.d[N+2]})`,bg:`rgb(${h.d[N]},${h.d[N+1]},${h.d[N+2]})`});}if(_.length<40)return null;_.sort((S,E)=>S.ratio-E.ratio);let x=_[Math.floor(_.length*.02)];return {worst:x.ratio,best:_[_.length-1].ratio,worstFg:x.fg,worstBg:x.bg,core:_.length}}async function PM(f,d){let g=f.screenshot;if(typeof g!="function"||d.length===0)return [];let h=Array.from(new Set(d)).slice(0,Sg),p=[],y=false,A=Date.now()+Mg;try{await vr(f.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),A);let w=await vr(f.evaluate(MM,{selectors:h,maxBoxes:kg,maxW:Rg,maxH:Fg,maxArea:Ig}),A);await vr(Vo(f,{tool:"contrast-gradient-text",css:"[data-wa-gt]{background-image:none!important;background-color:transparent!important}"}),A),y=!0;let F=0;for(let R of h){let _=w[R];if(!_)continue;if(Date.now()>A||F+_.boxes.length*2>Tg)break;let x=1/0,S=0,E="",M="",L=!0,N=globalThis.Buffer;for(let q of _.boxes){F+=2;let H={x:q.x,y:q.y,width:q.w,height:q.h},j=await vr(g.call(f,{clip:H,fullPage:!0,type:"png",animations:"disabled"}),A);await vr(f.evaluate(k=>{document.querySelector(k)?.setAttribute("data-wa-gt","1");},R),A);let U;try{U=await vr(g.call(f,{clip:H,fullPage:!0,type:"png",animations:"disabled"}),A);}finally{await f.evaluate(k=>{document.querySelector(k)?.removeAttribute("data-wa-gt");},R).catch(()=>{});}let J=await vr(f.evaluate(LM,{painted:N?N.from(j).toString("base64"):"",backdrop:N?N.from(U).toString("base64"):""}),A);if(!J){L=!1;break}J.worst<x&&(x=J.worst,E=J.worstFg,M=J.worstBg),J.best>S&&(S=J.best);}!L||!isFinite(x)||p.push({selector:R,fail:x<_.threshold*.97,bestRatio:S,worstRatio:x,worstBg:M,threshold:_.threshold,fg:E,gradientText:!0});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("gradient text judge failed",w);}finally{if(y)try{await Promise.race([f.evaluate(()=>{document.querySelectorAll('style[data-wa-injected^="contrast-gradient-text:"]').forEach(w=>w.remove()),document.querySelectorAll("[data-wa-gt]").forEach(w=>w.removeAttribute("data-wa-gt"));}),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return p}function OM(f,d){let{confidence:g,reviewReason:h,...p}=f;return {...p,id:f.id.replace("axe-incomplete-","axe-"),impact:"serious",message:d.gradientText?`contrast: gradient text \u2014 worst stop ${d.fg} is ${d.worstRatio.toFixed(2)}:1 on ${d.worstBg??"its backdrop"}, needs ${d.threshold}:1 (measured from the painted glyph pixels)`:`contrast: ${d.fg} text on its rendered background is at best ${d.bestRatio.toFixed(2)}:1 (measured from pixels, every background pixel behind the text fails), needs ${d.threshold}:1`}}async function Lg(f,d,g,h){let p=d.filter(_=>_.wcag!=="1.4.3"||!_.selector?false:_.source==="axe-core"?TM.has(g.get(_.id)??""):_.type==="contrast_insufficient"&&/gradient or image|gradient-clipped/.test(_.reviewReason??""));if(p.length===0)return [];let y=_=>/gradient-clipped/.test(_.reviewReason??""),A=[...await Lu(f,p.filter(_=>!y(_)).map(_=>_.selector)),...await PM(f,p.filter(y).map(_=>_.selector))];if(h)for(let _ of A)h.set(_.selector,_);globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error(`pixel judge: ${p.length} candidates, ${A.length} measured, ${A.filter(_=>_.fail).length} fail`);let w=new Map(A.filter(_=>_.fail).map(_=>[_.selector,_])),F=[],R=new Set;for(let _ of p){let x=w.get(_.selector);!x||R.has(_.selector)||(R.add(_.selector),F.push(OM(_,x)));}return F}function NM(f){f=f.replace("#",""),f.length===3&&(f=f[0]+f[0]+f[1]+f[1]+f[2]+f[2]);let d=parseInt(f,16);return [d>>16&255,d>>8&255,d&255]}function Pu(f){let d=f/255;return d<=.03928?d/12.92:Math.pow((d+.055)/1.055,2.4)}function Pg(f,d,g){return .2126*Pu(f)+.7152*Pu(d)+.0722*Pu(g)}function qM(f,d){let g=Math.max(f,d),h=Math.min(f,d);return (g+.05)/(h+.05)}function Og(f){if(f.startsWith("#"))return NM(f);let d=f.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return d?[parseInt(d[1]),parseInt(d[2]),parseInt(d[3])]:null}function In(f,d){let g=Og(f),h=Og(d);return !g||!h?0:qM(Pg(...g),Pg(...h))}var BM=30,HM=10,VM=2e4,jM=30,$M=400*1024,zM="https://openrouter.ai/api/v1",GM="anthropic/claude-haiku-4.5",Ng="deepseek/deepseek-v4-flash",qg=400,Bg=125,Ou=160,UM=2e3,$o=new Map;function WM(f){let d=0;for(let g=0;g<f.length;g++)d=(d<<5)-d+f.charCodeAt(g)|0;return Math.abs(d).toString(36)}var Nu=f=>f.wcag||f.type,Hg=(f,d,g)=>`${f}|${d.selector}|${Nu(d)}|${WM(g)}`,qu=()=>!!globalThis.process?.env?.WA_DEBUG_JUDGE;function XM(f){let{selectors:d,maxHtml:g}=f,h={elements:{}},p=[],y=N=>/\(\s*prefers-reduced-motion\s*(:\s*reduce\s*)?\)/i.test(N)&&!/^\s*not\b/i.test(N),A=N=>{let q=N.split(",").map(H=>H.trim()).filter(Boolean);return q.length?q.every(H=>{let j=H.match(/^(-?[\d.]+)(ms|s)$/i);return j?parseFloat(j[1])*(j[2].toLowerCase()==="s"?1e3:1)<=10:false}):false},w=(N,q,H)=>{if(!(H>8))for(let j of Array.from(N)){let U=j.media?.mediaText,J=q||typeof U=="string"&&y(U),k=j.style,v=j.selectorText;if(J&&k&&typeof v=="string"){let P=k.getPropertyValue("animation-name").trim(),B=/^none(\s*,\s*none)*$/i.test(P)||A(k.getPropertyValue("animation-duration"))||/^paused/i.test(k.getPropertyValue("animation-play-state").trim()),z=/^none(\s*,\s*none)*$/i.test(k.getPropertyValue("transition-property").trim())||A(k.getPropertyValue("transition-duration"));(B||z)&&p.push({selector:v,anim:B,trans:z});}let D=j.cssRules;D&&D.length&&w(D,J,H+1);let T=j.styleSheet;if(T)try{w(T.cssRules,J||y(j.media?.mediaText||""),H+1);}catch{}}};try{for(let N of Array.from(document.styleSheets))try{w(N.cssRules,y(N.media?.mediaText||""),0);}catch{}}catch{}let F=(N,q)=>{try{return N.matches(q)}catch{return false}},R=N=>N.split(",").map(q=>{let H=q.trim().match(/^(-?[\d.]+)(ms|s)$/i);return H?parseFloat(H[1])*(H[2].toLowerCase()==="s"?1e3:1):0}),_=N=>{let q=N.cloneNode(true);q.querySelectorAll("script, style").forEach(j=>j.remove());let H=(q.textContent||"").replace(/\s+/g," ").trim();if(!H){for(let j of Array.from(N.querySelectorAll("img[alt], [aria-label]")))if(H=(j.getAttribute("alt")||j.getAttribute("aria-label")||"").trim(),H)break}return H},x=N=>{let q=(N.getAttribute("aria-label")||"").trim();if(q)return q;let j=(N.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).map(k=>{let v=document.getElementById(k);return v?(v.textContent||"").replace(/\s+/g," ").trim():""}).filter(Boolean).join(" ");if(j)return j;let U=_(N);if(U)return U;let J=N instanceof HTMLInputElement&&/^(submit|button|reset|image)$/i.test(N.type)?(N.value||N.alt||"").trim():"";return J||(N.getAttribute("title")||"").trim()},S='a[href], button, input:not([type="hidden"]), select, textarea, summary, [role="button"], [role="link"], [role="menuitem"], [role="tab"], [role="img"], [tabindex]:not([tabindex="-1"])',E=window.scrollX||0,M=window.scrollY||0,L=[];for(let N of d){let q=null;try{q=document.querySelector(N);}catch{}if(!q){h.elements[N]={found:false};continue}let H=L.indexOf(q);H<0&&(H=L.push(q)-1);let j=getComputedStyle(q),U=q.getBoundingClientRect(),J=q.tagName.toLowerCase(),k={found:true,elementKey:H,tag:J,html:(q.outerHTML||"").slice(0,g),rect:{x:U.left+E,y:U.top+M,w:U.width,h:U.height},role:(q.getAttribute("role")||"").toLowerCase(),ariaHidden:q.getAttribute("aria-hidden")==="true"||!!q.closest('[aria-hidden="true"]'),hidden:j.display==="none"||j.visibility==="hidden"||!!q.closest("[hidden]"),cssBackgroundImage:/url\(/i.test(j.backgroundImage||""),reducedMotionHandled:false,nearText:"",fg:j.color,bg:j.backgroundColor,fontSize:parseFloat(j.fontSize)||0,fontWeight:parseInt(j.fontWeight,10)||400};if(J==="img"){let z=q;k.img={src:(z.currentSrc||z.getAttribute("src")||"").slice(0,300),alt:z.getAttribute("alt"),naturalW:z.naturalWidth||0,naturalH:z.naturalHeight||0,attrW:parseInt(z.getAttribute("width")||"0",10)||0,attrH:parseInt(z.getAttribute("height")||"0",10)||0};}if(k.cssBackgroundImage){let z=q.closest(S);z&&(k.control={tag:z.tagName.toLowerCase(),name:x(z).slice(0,120)});}if(!/^(img|video|canvas|iframe|object|embed|svg)$/.test(J)){let z=j.animationName.split(",").some(ie=>ie.trim()&&ie.trim()!=="none")&&R(j.animationDuration).some(ie=>ie>10),X=R(j.transitionDuration).some(ie=>ie>10)&&j.transitionProperty.trim()!=="none",te=p.filter(ie=>F(q,ie.selector)),ee=!z||te.some(ie=>ie.anim),Z=!X||te.some(ie=>ie.trans);k.reducedMotionHandled=(z||X)&&ee&&Z;}let v=q.closest('a[href], button, [role="button"], [role="link"]');if(v&&v!==q){let z=v.cloneNode(true);z.querySelectorAll("img, svg").forEach(ee=>ee.remove());let X=(z.textContent||"").replace(/\s+/g," ").trim(),te=(v.getAttribute("aria-label")||"").trim();k.parentInteractive={tag:v.tagName.toLowerCase(),text:(X||te).slice(0,120)};}let D=z=>{let X=z.cloneNode(true);return X.querySelectorAll("script, style").forEach(te=>te.remove()),(X.textContent||"").replace(/\s+/g," ").trim()},T=q.matches('a[href], [role="link"]'),P=D(q),B=q.parentElement;if(T&&(B=q.closest("p, li, td, th, dd, dt, figcaption, blockquote")||q.parentElement),B){let z=D(B),X=T&&P?z.indexOf(P):-1,te=X>120?X-120:0;k.nearText=(te?"\u2026":"")+z.slice(te,te+240);}h.elements[N]=k;}return h}function YM(f,d){let g=(f.type||"").toLowerCase(),h=f.wcag||"";return g==="decorative_image_with_title"?"generic":h==="1.1.1"&&(d?.tag==="img"||/alt|image/.test(g))?"alt":h==="1.4.3"||h==="1.4.6"||g==="color-contrast"||g==="contrast_insufficient"||g==="contrast_enhanced"?"contrast":h==="2.2.2"||h==="2.3.3"||/motion|animation|reduced_motion/.test(g)?"motion":"generic"}function Bu(f){return !!f&&f.tag!=="img"&&f.cssBackgroundImage&&!f.img}var KM=/\b(needs?|requires?|for)\s+(a\s+)?(human|manual)?\s*review\b|\bhuman review\b|\bmanual review\b|\bincomplete\b/gi;function JM(f){let d=String(f??"").replace(/\s+/g," ").replace(KM,"judged").trim();if(d.length<=Ou)return d;let g=d.slice(0,Ou-1),h=g.lastIndexOf(" ");return (h>Ou/2?g.slice(0,h):g).replace(/[\s,;:–—-]+$/,"")+"\u2026"}function ZM(f){let d=String(f??"").replace(/\s+/g," ").trim();if(d=d.replace(/^(an?\s+|the\s+)?(image|picture|photo|photograph|graphic|icon|illustration|screenshot)\s+(of|showing|depicting)(\s+|$)(an?\s+|the\s+)?/i,""),d=d.replace(/^["'“”]+|["'“”]+$/g,"").trim(),d.length>Bg){d=d.slice(0,Bg);let g=d.lastIndexOf(" ");g>60&&(d=d.slice(0,g)),d=d.replace(/[\s,;:–—-]+$/,"");}return d&&(d=d[0].toUpperCase()+d.slice(1)),d}function aa(f){let d=f.match(/\d+(\.\d+)?/g);return !d||d.length<3?f:"#"+d.slice(0,3).map(g=>Math.round(Number(g)).toString(16).padStart(2,"0")).join("")}var $g=/^#?([0-9a-f]{6})$/i;function QM(f){let d=String(f??"").trim().match($g);return d?"#"+d[1].toLowerCase():null}function eL(f){let{confidence:d,reviewReason:g,...h}=f;return {...h,id:f.id.replace("axe-incomplete-","axe-")}}function tL(f){let d=f;if(typeof f=="string"){let p=f.replace(/```json\s*/gi,"").replace(/```/g,"").match(/\[[\s\S]*\]/);if(!p)return null;try{d=JSON.parse(p[0]);}catch{return null}}else f&&typeof f=="object"&&Array.isArray(f.verdicts)&&(d=f.verdicts);if(!Array.isArray(d))return null;let g=[];for(let h of d){if(!h||typeof h!="object")continue;let{id:p,verdict:y,reason:A,fix:w}=h;if(typeof p!="string"||y!=="pass"&&y!=="violation")continue;let F=w&&typeof w=="object"?w:void 0;g.push({id:p,verdict:y,reason:typeof A=="string"?A:void 0,fix:F?{attribute:typeof F.attribute=="string"?F.attribute:void 0,value:typeof F.value=="string"?F.value:void 0}:void 0});}return g}var ia=class extends Error{},rL=`You are the final accessibility judge for a WCAG scanner. Automated engines could not decide the findings below. You MUST decide each one: "pass" (not a violation) or "violation". There is no third option \u2014 never answer "unsure", never defer to a human.
385
+ `),{inject:X}=await Promise.resolve().then(()=>(Hr(),gn));try{await X(f,{tool:"detector-helpers",content:z});}catch{await f.evaluate(`(0,eval)(${JSON.stringify(z)})`);}}catch(H){console.warn("[webability] helper injection failed:",H.message),(g??[]).push("color:kernel-injection-failed");}let A=[],w="";try{let{applyPlatformTemplates:H}=await Promise.resolve().then(()=>(Eu(),_u)),j=y;w=j.filter(U=>U!=="universal"&&U!=="universal_iframe").join(", "),A=await H(f,j);}catch{}let{guardDetectorState:F}=await Promise.resolve().then(()=>(Hr(),gn)),R=globalThis.process?.env?.WA_STRICT_STATE==="1",_={strict:R,bugs:h?.internalBugs},x=await F(f,"detectors:parallel",g??[],()=>Promise.allSettled((h?.experimental?[...gg,...vM]:gg).map(async H=>{try{let j=await H.detect(f);return H.cap&&j.length>=H.cap&&p.push({detector:H.name,cap:H.cap}),j}catch(j){return vg(h?.internalBugs,H.name,j),[]}})),_),S=[];h?.skipFocusMutating&&(g??[]).push("focus:mutating-detectors-skipped (live-tab scan; focus visibility and focus obscured were not checked)");let E=[...h?.skipFocusMutating?[]:[_h,Ah],...h?.extraSerialDetectors??[]];for(let H of E){let j=[];try{j=await F(f,H.name,g??[],()=>H.detect(f).catch(U=>(vg(h?.internalBugs,H.name,U),[])),_);}catch(U){if(R)throw U}try{H.cap&&j.length>=H.cap&&p.push({detector:H.name,cap:H.cap}),S=S.concat(j);}catch{}}let M=[...x.flatMap(H=>H.status==="fulfilled"?H.value:[]),...S];if(w)for(let H of M)H.needsAI&&(H.context=uh(H.context,w));let L=[...A,...M],N=bM(L),q=["wp-ada-compliance","webability-widget","webability-a11y","asw-","userway","acsb","audioeye","equallyai"];return N.filter(H=>{let j=H.selector.toLowerCase();return j.trim()?!q.some(U=>j.includes(U)):false})}function bM(f){let d=new Set;return f.filter(g=>{let h=`${g.selector}::${g.issueType}`;return d.has(h)?false:(d.add(h),true)})}var yg="1.17.0";var Su=["wcag2a","wcag2aa","wcag21aa","wcag22aa"];function ku(f){return f.includes("wcag21aa")||f.includes("wcag22aa")||f.includes("wcag134")?{"css-orientation-lock":{enabled:true}}:{}}function wg(f,d){return d==="AAA"&&!f.includes("wcag2aaa")?[...f,"wcag2aaa"]:f}var yM={"1.1.1":"A","1.2.1":"A","1.2.2":"A","1.2.3":"A","1.3.1":"A","1.3.2":"A","1.3.3":"A","1.4.1":"A","1.4.2":"A","2.1.1":"A","2.1.2":"A","2.1.4":"A","2.2.1":"A","2.2.2":"A","2.3.1":"A","2.4.1":"A","2.4.2":"A","2.4.3":"A","2.4.4":"A","2.5.1":"A","2.5.2":"A","2.5.3":"A","2.5.4":"A","3.1.1":"A","3.2.1":"A","3.2.2":"A","3.2.6":"A","3.3.1":"A","3.3.2":"A","3.3.7":"A","4.1.2":"A","1.2.4":"AA","1.2.5":"AA","1.3.4":"AA","1.3.5":"AA","1.4.3":"AA","1.4.4":"AA","1.4.5":"AA","1.4.10":"AA","1.4.11":"AA","1.4.12":"AA","1.4.13":"AA","2.4.5":"AA","2.4.6":"AA","2.4.7":"AA","2.4.11":"AA","2.5.7":"AA","2.5.8":"AA","3.1.2":"AA","3.2.3":"AA","3.2.4":"AA","3.3.3":"AA","3.3.4":"AA","3.3.8":"AA","4.1.3":"AA","1.2.6":"AAA","1.2.7":"AAA","1.2.8":"AAA","1.2.9":"AAA","1.3.6":"AAA","1.4.6":"AAA","1.4.7":"AAA","1.4.8":"AAA","1.4.9":"AAA","2.1.3":"AAA","2.2.3":"AAA","2.2.4":"AAA","2.2.5":"AAA","2.2.6":"AAA","2.3.2":"AAA","2.3.3":"AAA","2.4.8":"AAA","2.4.9":"AAA","2.4.10":"AAA","2.4.12":"AAA","2.4.13":"AAA","2.5.5":"AAA","2.5.6":"AAA","3.1.3":"AAA","3.1.4":"AAA","3.1.5":"AAA","3.1.6":"AAA","3.2.5":"AAA","3.3.5":"AAA","3.3.6":"AAA","3.3.9":"AAA"};function wM(f){return yM[f]}var ni={A:1,AA:2,AAA:3};function xg(f){let d=String(f.wcag||"").split(/[,\s]+/).filter(h=>/^\d+\.\d+\.\d+$/.test(h));if(d.length===0)return f.level??"AA";let g;for(let h of d){let p=wM(h);p&&(!g||ni[p]<ni[g])&&(g=p);}return g}function ra(f,d="AA"){let g=ni[d]??ni.AA;return f.filter(h=>{let p=xg(h);return !!p&&ni[p]<=g})}var xM=new Set(["new_window_link","external_link_warning","download_link_warning"]);function Dg(f){let d=xM.has(f.issueType)?"minor":f.needsAI?"serious":"moderate",g=f.attribute==="style",h=f.attribute.startsWith("data-"),p=g&&f.fixValue?DM(f.fixValue):f.fixValue;return {id:`wa-${f.issueType}-${ai(f.selector)}`,source:"webability",type:f.issueType,wcag:f.wcag,level:xg({wcag:f.wcag})??"AA",impact:d,message:AM(f,p,h),selector:f.selector,html:f.outerHtml,...f.needsReview?{confidence:"needs_review"}:{},...f.reviewReason?{reviewReason:f.reviewReason}:{},fix:{attribute:f.attribute,currentValue:f.currentValue,suggestedValue:p,needsManualReview:f.needsAI||g||h||!!f.needsReview||!!f.manualFix}}}function DM(f){let d=f.trim();if(!d)return "";let g=d.endsWith(";"),p=d.split(";").map(y=>{let w=y.toLowerCase().lastIndexOf("!important");return w===-1?y.trim():y.slice(0,w).trim()}).filter(y=>y.length>0);return p.length===0?"":p.join(";")+(g?";":"")}function AM(f,d,g){if(f.message)return f.message;let h=f.issueType.replace(/_/g," "),p=d??f.fixValue;return g?p?`${h}: ${p}`:f.currentValue?`${h}: ${f.currentValue}`:f.context?`${h}: ${f.context}`:h:p?`${h}: set ${f.attribute}="${p}"`:f.currentValue?`${h}: ${f.attribute} is "${f.currentValue}"`:`${h}: missing ${f.attribute}`}function na(f){return Array.isArray(f)?f.flat(1/0).filter(g=>typeof g=="string").join(" >>> "):typeof f=="string"?f:""}function ai(f){let d=0;for(let g=0;g<f.length;g++)d=(d<<5)-d+f.charCodeAt(g)|0;return Math.abs(d).toString(36)}function Tu(f){return f==="critical"||f==="serious"||f==="moderate"||f==="minor"?f:"moderate"}function Ru(f,d=[]){return {total:f.length,critical:f.filter(g=>g.impact==="critical").length,serious:f.filter(g=>g.impact==="serious").length,moderate:f.filter(g=>g.impact==="moderate").length,minor:f.filter(g=>g.impact==="minor").length,incomplete:0}}function _M(f){let d=/^wcag(\d)(\d)(\d{1,2})$/.exec(f);return d?`${d[1]}.${d[2]}.${d[3]}`:""}function Fu(f){for(let d of f){let g=_M(d);if(g)return g}return ""}function Iu(f){return f.includes("wcag2aaa")?"AAA":f.includes("wcag2aa")||f.includes("wcag21aa")||f.includes("wcag22aa")?"AA":"A"}async function Eg(f,d){try{let{AxeBuilder:g}=await import('@axe-core/playwright'),h=typeof f.mainFrame=="function"?f:f.axePage?.()??f;return await new g({page:h}).options({rules:ku(d)}).withTags(d).analyze()}catch{return EM(f,d)}}async function EM(f,d){let g=await Promise.resolve().then(()=>Z3(_g())),h=g.source??g.default?.source;if(!h)throw new Error("axe-core source unavailable");try{await f.evaluate(h);}catch{let{inject:y}=await Promise.resolve().then(()=>(Hr(),gn));await y(f,{tool:"axe",content:h});}return await f.evaluate(({wcagTags:y,rules:A})=>new Promise((w,F)=>{let R=window;if(!R.axe)return F(new Error("axe-core not loaded"));R.axe.run(document,{runOnly:{type:"tag",values:y},rules:A,resultTypes:["violations","incomplete"]}).then(w).catch(F);}),{wcagTags:d,rules:ku(d)})}function Mu(f){let d=[],g=[];for(let h of f)h.confidence==="needs_review"||SM(h)?g.push(h):d.push(CM(h));return {verdicts:d,undecided:g}}function CM(f){if(f.confidence===void 0&&f.reviewReason===void 0)return f;let{confidence:d,reviewReason:g,...h}=f;return h}function SM(f){let d=(f.type||"").toLowerCase(),g=f.wcag||"",h=f.html||"",p=(f.message||"").toLowerCase();if((d==="contrast_insufficient"||d==="color-contrast"||g==="1.4.3"||g==="1.4.11")&&kM(h))return "background uses gradient or image";if(d==="image_of_text"||g==="1.4.5"){let y=Cg(h,"src").toLowerCase();y.startsWith("data:")&&(y=y.split(",")[0]);let A=Cg(h,"alt").toLowerCase();if(/\b(logo|brand|wordmark|hero|banner|footer|marketing|promo|cover)\b/.test(y))return "brand imagery";if(A.length>0&&/\b(logo|brand|product screenshot|dashboard)\b/.test(A))return "branded imagery"}return (d==="inconsistent_navigation"||p.includes("inconsistent navigation"))&&(/<footer/i.test(h)||/<aside/i.test(h))?"footer/aside nav":""}function kM(f){return /background(-image)?\s*:\s*(?:linear-gradient|radial-gradient|conic-gradient|url\()/i.test(f)}function Cg(f,d){let g=new RegExp(`\\b${d}\\s*=\\s*"([^"]*)"`,"i"),h=f.match(g);return h?h[1]:""}Hr();var Sg=60,kg=3,Tg=120,Rg=1200,Fg=300,Ig=2e5,Mg=8e3,TM=new Set(["bgImage","bgGradient","bgOverlap","elmPartiallyObscured","elmPartiallyObscuring"]),RM="*,*::before,*::after{color:transparent!important;-webkit-text-fill-color:transparent!important;text-shadow:none!important;text-decoration-color:transparent!important;caret-color:transparent!important}";function FM(f){let{selectors:d,maxBoxes:g,maxW:h,maxH:p,maxArea:y}=f,A=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,F=document.createElement("canvas");F.width=F.height=1;let R=F.getContext("2d",{willReadFrequently:true}),_=N=>{try{R.clearRect(0,0,1,1),R.fillStyle="#000",R.fillStyle=N,R.fillRect(0,0,1,1);let q=R.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]]}catch{return null}},x={},S=document.querySelectorAll("video,canvas,iframe,embed,object");if(S.length>200){for(let N of d)x[N]=null;return x}let E=Array.from(S).map(N=>N.getBoundingClientRect()),M=window.scrollX,L=window.scrollY;for(let N of d){x[N]=null;let q=null;try{q=document.querySelector(N);}catch{continue}if(!q)continue;let H=getComputedStyle(q);if(H.visibility!=="visible"||H.display==="none"||H.webkitBackgroundClip==="text"||H.backgroundClip==="text")continue;let j=false,U=0;for(let Z=q;Z;Z=Z.parentElement){if(++U>64){j=true;break}let ie=getComputedStyle(Z);parseFloat(ie.opacity)<1&&(j=true),(ie.mixBlendMode!=="normal"||ie.filter!=="none")&&(j=true);}if(j)continue;let J=_(H.color);if(!J||J[3]<255)continue;let k=parseFloat(H.fontSize),v=parseInt(H.fontWeight,10)>=700,D=k>=24||v&&k>=18.66,T=[],P=q.getBoundingClientRect();if(P.height>p*g||P.width>h*2)continue;let B=document.createTreeWalker(q,NodeFilter.SHOW_TEXT),z,X=0,te=false;for(;!te&&(z=B.nextNode());){if(++X>50){te=true;break}if(z.parentElement!==q)continue;let Z=z.textContent||"";if(Z.length>2e3){te=true;break}if(!Z.trim())continue;let ie=document.createRange();ie.selectNodeContents(z);let be=ie.getClientRects();if(be.length>g){te=true;break}for(let de=0;de<be.length;de++){let ke=be[de];if(!(ke.width<2||ke.height<2)&&(T.push({x:Math.round(ke.left+M),y:Math.round(ke.top+L),w:Math.max(1,Math.round(ke.width)),h:Math.max(1,Math.round(ke.height))}),T.length>g)){te=true;break}}}te||T.length===0||T.length>g||T.some(Z=>Z.w>h||Z.h>p||Z.w*Z.h>y||Z.x<0||Z.y<0||Z.x+Z.w>A||Z.y+Z.h>w)||T.some(Z=>E.some(ie=>Z.x<ie.right+M&&Z.x+Z.w>ie.left+M&&Z.y<ie.bottom+L&&Z.y+Z.h>ie.top+L))||(x[N]={fg:`rgb(${J[0]},${J[1]},${J[2]})`,threshold:D?3:4.5,boxes:T});}return x}async function IM(f){let{b64:d,fg:g}=f,h=atob(d),p=new Uint8Array(h.length);for(let j=0;j<h.length;j++)p[j]=h.charCodeAt(j);let y=await createImageBitmap(new Blob([p],{type:"image/png"})),A=document.createElement("canvas");A.width=y.width,A.height=y.height;let w=A.getContext("2d",{willReadFrequently:true});w.drawImage(y,0,0);let F=w.getImageData(0,0,A.width,A.height).data,R=j=>{let U=j/255;return U<=.03928?U/12.92:Math.pow((U+.055)/1.055,2.4)},_=(j,U,J)=>.2126*R(j)+.7152*R(U)+.0722*R(J),x=g.match(/\d+/g).map(Number),S=_(x[0],x[1],x[2]),E=Math.max(1,Math.floor(Math.sqrt(A.width*A.height/1500))),M=0,L=1/0,N="",q="",H=0;for(let j=0;j<A.height;j+=E)for(let U=0;U<A.width;U+=E){let J=(j*A.width+U)*4;if(F[J+3]<255)continue;let k=_(F[J],F[J+1],F[J+2]),v=Math.max(S,k),D=Math.min(S,k),T=(v+.05)/(D+.05);T>M&&(M=T,q=`rgb(${F[J]},${F[J+1]},${F[J+2]})`),T<L&&(L=T,N=`rgb(${F[J]},${F[J+1]},${F[J+2]})`),H++;}return H===0?null:{best:M,worst:L,worstBg:N,bestBg:q}}var jo=class extends Error{};function vr(f,d){let g=d-Date.now();if(g<=0)return Promise.reject(new jo("pixel pass deadline"));let h,p=new Promise((y,A)=>{h=setTimeout(()=>A(new jo("pixel pass deadline")),g);});return Promise.race([f,p]).finally(()=>clearTimeout(h))}async function Lu(f,d){let g=f.screenshot;if(typeof g!="function"||d.length===0)return [];let h=Array.from(new Set(d)).slice(0,Sg),p=[],y=false,A=Date.now()+Mg;try{await vr(f.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),A);let w=await vr(f.evaluate(FM,{selectors:h,maxBoxes:kg,maxW:Rg,maxH:Fg,maxArea:Ig}),A);await vr(Vo(f,{tool:"contrast-pixels",css:RM}),A),y=!0;let F=0;for(let R of h){let _=w[R];if(!_)continue;if(Date.now()>A||F+_.boxes.length>Tg)break;let x=0,S=1/0,E="",M="",L=!0;for(let N of _.boxes){F++;let q=await vr(g.call(f,{clip:{x:N.x,y:N.y,width:N.w,height:N.h},fullPage:!0,type:"png",animations:"disabled"}),A),H=globalThis.Buffer,j=H?H.from(q).toString("base64"):"",U=await vr(f.evaluate(IM,{b64:j,fg:_.fg}),A);if(!U){L=!1;break}U.best>x&&(x=U.best,M=U.bestBg),U.worst<S&&(S=U.worst,E=U.worstBg);}L&&p.push({selector:R,fail:x<_.threshold*.97,bestRatio:x,worstRatio:S,...E?{worstBg:E}:{},...M?{bestBg:M}:{},threshold:_.threshold,fg:_.fg});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("pixel judge failed",w);}finally{if(y)try{await Promise.race([f.evaluate(()=>document.querySelectorAll('style[data-wa-injected^="contrast-pixels:"]').forEach(w=>w.remove())),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return p}function MM(f){let{selectors:d,maxBoxes:g,maxW:h,maxH:p,maxArea:y}=f,A=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,F=window.scrollX,R=window.scrollY,_={};for(let x of d){_[x]=null;let S=null;try{S=document.querySelector(x);}catch{continue}if(!S)continue;let E=getComputedStyle(S);if(E.visibility!=="visible"||E.display==="none"||!(E.webkitBackgroundClip==="text"||E.backgroundClip==="text"))continue;let M=false,L=0;for(let D=S;D;D=D.parentElement){if(++L>64){M=true;break}let T=getComputedStyle(D);(parseFloat(T.opacity)<1||T.mixBlendMode!=="normal"||T.filter!=="none")&&(M=true);}if(M)continue;let N=parseFloat(E.fontSize),q=parseInt(E.fontWeight,10)>=700,H=N>=24||q&&N>=18.66,j=[],U=document.createTreeWalker(S,NodeFilter.SHOW_TEXT),J,k=0,v=false;for(;!v&&(J=U.nextNode());){if(++k>50){v=true;break}if(!(J.textContent||"").trim())continue;let D=document.createRange();D.selectNodeContents(J);let T=D.getClientRects();for(let P=0;P<T.length;P++){let B=T[P];if(!(B.width<2||B.height<2)&&(j.push({x:Math.round(B.left+F),y:Math.round(B.top+R),w:Math.max(1,Math.round(B.width)),h:Math.max(1,Math.round(B.height))}),j.length>g)){v=true;break}}}v||j.length===0||j.some(D=>D.w>h||D.h>p||D.w*D.h>y||D.x<0||D.y<0||D.x+D.w>A||D.y+D.h>w)||(_[x]={threshold:H?3:4.5,boxes:j});}return _}async function LM(f){let d=async S=>{let E=atob(S),M=new Uint8Array(E.length);for(let H=0;H<E.length;H++)M[H]=E.charCodeAt(H);let L=await createImageBitmap(new Blob([M],{type:"image/png"})),N=document.createElement("canvas");N.width=L.width,N.height=L.height;let q=N.getContext("2d",{willReadFrequently:true});return q.drawImage(L,0,0),{w:N.width,h:N.height,d:q.getImageData(0,0,N.width,N.height).data}},g=await d(f.painted),h=await d(f.backdrop);if(g.w!==h.w||g.h!==h.h)return null;let p=S=>{let E=S/255;return E<=.03928?E/12.92:Math.pow((E+.055)/1.055,2.4)},y=(S,E,M)=>.2126*p(S)+.7152*p(E)+.0722*p(M),A=g.w,w=g.h,F=new Uint8Array(A*w);for(let S=0;S<A*w;S++){let E=S*4;F[S]=Math.abs(g.d[E]-h.d[E])+Math.abs(g.d[E+1]-h.d[E+1])+Math.abs(g.d[E+2]-h.d[E+2])>48?1:0;}let R=2,_=[];for(let S=R;S<w-R;S++)for(let E=R;E<A-R;E++){let M=S*A+E;if(!F[M])continue;let L=true;for(let j=-R;j<=R&&L;j++)for(let U=-R;U<=R;U++)if(!F[M+j*A+U]){L=false;break}if(!L)continue;let N=M*4,q=y(g.d[N],g.d[N+1],g.d[N+2]),H=y(h.d[N],h.d[N+1],h.d[N+2]);_.push({ratio:(Math.max(q,H)+.05)/(Math.min(q,H)+.05),fg:`rgb(${g.d[N]},${g.d[N+1]},${g.d[N+2]})`,bg:`rgb(${h.d[N]},${h.d[N+1]},${h.d[N+2]})`});}if(_.length<40)return null;_.sort((S,E)=>S.ratio-E.ratio);let x=_[Math.floor(_.length*.02)];return {worst:x.ratio,best:_[_.length-1].ratio,worstFg:x.fg,worstBg:x.bg,core:_.length}}async function PM(f,d){let g=f.screenshot;if(typeof g!="function"||d.length===0)return [];let h=Array.from(new Set(d)).slice(0,Sg),p=[],y=false,A=Date.now()+Mg;try{await vr(f.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),A);let w=await vr(f.evaluate(MM,{selectors:h,maxBoxes:kg,maxW:Rg,maxH:Fg,maxArea:Ig}),A);await vr(Vo(f,{tool:"contrast-gradient-text",css:"[data-wa-gt]{background-image:none!important;background-color:transparent!important}"}),A),y=!0;let F=0;for(let R of h){let _=w[R];if(!_)continue;if(Date.now()>A||F+_.boxes.length*2>Tg)break;let x=1/0,S=0,E="",M="",L=!0,N=globalThis.Buffer;for(let q of _.boxes){F+=2;let H={x:q.x,y:q.y,width:q.w,height:q.h},j=await vr(g.call(f,{clip:H,fullPage:!0,type:"png",animations:"disabled"}),A);await vr(f.evaluate(k=>{document.querySelector(k)?.setAttribute("data-wa-gt","1");},R),A);let U;try{U=await vr(g.call(f,{clip:H,fullPage:!0,type:"png",animations:"disabled"}),A);}finally{await f.evaluate(k=>{document.querySelector(k)?.removeAttribute("data-wa-gt");},R).catch(()=>{});}let J=await vr(f.evaluate(LM,{painted:N?N.from(j).toString("base64"):"",backdrop:N?N.from(U).toString("base64"):""}),A);if(!J){L=!1;break}J.worst<x&&(x=J.worst,E=J.worstFg,M=J.worstBg),J.best>S&&(S=J.best);}!L||!isFinite(x)||p.push({selector:R,fail:x<_.threshold*.97,bestRatio:S,worstRatio:x,worstBg:M,threshold:_.threshold,fg:E,gradientText:!0});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("gradient text judge failed",w);}finally{if(y)try{await Promise.race([f.evaluate(()=>{document.querySelectorAll('style[data-wa-injected^="contrast-gradient-text:"]').forEach(w=>w.remove()),document.querySelectorAll("[data-wa-gt]").forEach(w=>w.removeAttribute("data-wa-gt"));}),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return p}function OM(f,d){let{confidence:g,reviewReason:h,...p}=f;return {...p,id:f.id.replace("axe-incomplete-","axe-"),impact:"serious",message:d.gradientText?`contrast: gradient text \u2014 worst stop ${d.fg} is ${d.worstRatio.toFixed(2)}:1 on ${d.worstBg??"its backdrop"}, needs ${d.threshold}:1 (measured from the painted glyph pixels)`:`contrast: ${d.fg} text on its rendered background is at best ${d.bestRatio.toFixed(2)}:1 (measured from pixels, every background pixel behind the text fails), needs ${d.threshold}:1`}}async function Lg(f,d,g,h){let p=d.filter(_=>_.wcag!=="1.4.3"||!_.selector?false:_.source==="axe-core"?TM.has(g.get(_.id)??""):_.type==="contrast_insufficient"&&/gradient or image|gradient-clipped/.test(_.reviewReason??""));if(p.length===0)return [];let y=_=>/gradient-clipped/.test(_.reviewReason??""),A=[...await Lu(f,p.filter(_=>!y(_)).map(_=>_.selector)),...await PM(f,p.filter(y).map(_=>_.selector))];if(h)for(let _ of A)h.set(_.selector,_);globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error(`pixel judge: ${p.length} candidates, ${A.length} measured, ${A.filter(_=>_.fail).length} fail`);let w=new Map(A.filter(_=>_.fail).map(_=>[_.selector,_])),F=[],R=new Set;for(let _ of p){let x=w.get(_.selector);!x||R.has(_.selector)||(R.add(_.selector),F.push(OM(_,x)));}return F}function NM(f){f=f.replace("#",""),f.length===3&&(f=f[0]+f[0]+f[1]+f[1]+f[2]+f[2]);let d=parseInt(f,16);return [d>>16&255,d>>8&255,d&255]}function Pu(f){let d=f/255;return d<=.03928?d/12.92:Math.pow((d+.055)/1.055,2.4)}function Pg(f,d,g){return .2126*Pu(f)+.7152*Pu(d)+.0722*Pu(g)}function qM(f,d){let g=Math.max(f,d),h=Math.min(f,d);return (g+.05)/(h+.05)}function Og(f){if(f.startsWith("#"))return NM(f);let d=f.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return d?[parseInt(d[1]),parseInt(d[2]),parseInt(d[3])]:null}function In(f,d){let g=Og(f),h=Og(d);return !g||!h?0:qM(Pg(...g),Pg(...h))}var BM=30,HM=10,VM=2e4,jM=30,$M=400*1024,zM="https://openrouter.ai/api/v1",GM="anthropic/claude-haiku-4.5",Ng="deepseek/deepseek-v4-flash",qg=400,Bg=125,Ou=160,UM=2e3,$o=new Map;function WM(f){let d=0;for(let g=0;g<f.length;g++)d=(d<<5)-d+f.charCodeAt(g)|0;return Math.abs(d).toString(36)}var Nu=f=>f.wcag||f.type,Hg=(f,d,g)=>`${f}|${d.selector}|${Nu(d)}|${WM(g)}`,qu=()=>!!globalThis.process?.env?.WA_DEBUG_JUDGE;function XM(f){let{selectors:d,maxHtml:g}=f,h={elements:{}},p=[],y=N=>/\(\s*prefers-reduced-motion\s*(:\s*reduce\s*)?\)/i.test(N)&&!/^\s*not\b/i.test(N),A=N=>{let q=N.split(",").map(H=>H.trim()).filter(Boolean);return q.length?q.every(H=>{let j=H.match(/^(-?[\d.]+)(ms|s)$/i);return j?parseFloat(j[1])*(j[2].toLowerCase()==="s"?1e3:1)<=10:false}):false},w=(N,q,H)=>{if(!(H>8))for(let j of Array.from(N)){let U=j.media?.mediaText,J=q||typeof U=="string"&&y(U),k=j.style,v=j.selectorText;if(J&&k&&typeof v=="string"){let P=k.getPropertyValue("animation-name").trim(),B=/^none(\s*,\s*none)*$/i.test(P)||A(k.getPropertyValue("animation-duration"))||/^paused/i.test(k.getPropertyValue("animation-play-state").trim()),z=/^none(\s*,\s*none)*$/i.test(k.getPropertyValue("transition-property").trim())||A(k.getPropertyValue("transition-duration"));(B||z)&&p.push({selector:v,anim:B,trans:z});}let D=j.cssRules;D&&D.length&&w(D,J,H+1);let T=j.styleSheet;if(T)try{w(T.cssRules,J||y(j.media?.mediaText||""),H+1);}catch{}}};try{for(let N of Array.from(document.styleSheets))try{w(N.cssRules,y(N.media?.mediaText||""),0);}catch{}}catch{}let F=(N,q)=>{try{return N.matches(q)}catch{return false}},R=N=>N.split(",").map(q=>{let H=q.trim().match(/^(-?[\d.]+)(ms|s)$/i);return H?parseFloat(H[1])*(H[2].toLowerCase()==="s"?1e3:1):0}),_=N=>{let q=N.cloneNode(true);q.querySelectorAll("script, style").forEach(j=>j.remove());let H=(q.textContent||"").replace(/\s+/g," ").trim();if(!H){for(let j of Array.from(N.querySelectorAll("img[alt], [aria-label]")))if(H=(j.getAttribute("alt")||j.getAttribute("aria-label")||"").trim(),H)break}return H},x=N=>{let q=(N.getAttribute("aria-label")||"").trim();if(q)return q;let j=(N.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).map(k=>{let v=document.getElementById(k);return v?(v.textContent||"").replace(/\s+/g," ").trim():""}).filter(Boolean).join(" ");if(j)return j;let U=_(N);if(U)return U;let J=N instanceof HTMLInputElement&&/^(submit|button|reset|image)$/i.test(N.type)?(N.value||N.alt||"").trim():"";return J||(N.getAttribute("title")||"").trim()},S='a[href], button, input:not([type="hidden"]), select, textarea, summary, [role="button"], [role="link"], [role="menuitem"], [role="tab"], [role="img"], [tabindex]:not([tabindex="-1"])',E=window.scrollX||0,M=window.scrollY||0,L=[];for(let N of d){let q=null;try{q=document.querySelector(N);}catch{}if(!q){h.elements[N]={found:false};continue}let H=L.indexOf(q);H<0&&(H=L.push(q)-1);let j=getComputedStyle(q),U=q.getBoundingClientRect(),J=q.tagName.toLowerCase(),k={found:true,elementKey:H,tag:J,html:(q.outerHTML||"").slice(0,g),rect:{x:U.left+E,y:U.top+M,w:U.width,h:U.height},role:(q.getAttribute("role")||"").toLowerCase(),ariaHidden:q.getAttribute("aria-hidden")==="true"||!!q.closest('[aria-hidden="true"]'),hidden:j.display==="none"||j.visibility==="hidden"||!!q.closest("[hidden]"),cssBackgroundImage:/url\(/i.test(j.backgroundImage||""),reducedMotionHandled:false,nearText:"",fg:j.color,bg:j.backgroundColor,fontSize:parseFloat(j.fontSize)||0,fontWeight:parseInt(j.fontWeight,10)||400};if(J==="img"){let z=q;k.img={src:(z.currentSrc||z.getAttribute("src")||"").slice(0,300),alt:z.getAttribute("alt"),naturalW:z.naturalWidth||0,naturalH:z.naturalHeight||0,attrW:parseInt(z.getAttribute("width")||"0",10)||0,attrH:parseInt(z.getAttribute("height")||"0",10)||0};}if(k.cssBackgroundImage){let z=q.closest(S);z&&(k.control={tag:z.tagName.toLowerCase(),name:x(z).slice(0,120)});}if(!/^(img|video|canvas|iframe|object|embed|svg)$/.test(J)){let z=j.animationName.split(",").some(ie=>ie.trim()&&ie.trim()!=="none")&&R(j.animationDuration).some(ie=>ie>10),X=R(j.transitionDuration).some(ie=>ie>10)&&j.transitionProperty.trim()!=="none",te=p.filter(ie=>F(q,ie.selector)),ee=!z||te.some(ie=>ie.anim),Z=!X||te.some(ie=>ie.trans);k.reducedMotionHandled=(z||X)&&ee&&Z;}let v=q.closest('a[href], button, [role="button"], [role="link"]');if(v&&v!==q){let z=v.cloneNode(true);z.querySelectorAll("img, svg").forEach(ee=>ee.remove());let X=(z.textContent||"").replace(/\s+/g," ").trim(),te=(v.getAttribute("aria-label")||"").trim();k.parentInteractive={tag:v.tagName.toLowerCase(),text:(X||te).slice(0,120)};}let D=z=>{let X=z.cloneNode(true);return X.querySelectorAll("script, style").forEach(te=>te.remove()),(X.textContent||"").replace(/\s+/g," ").trim()},T=q.matches('a[href], [role="link"]'),P=D(q),B=q.parentElement;if(T&&(B=q.closest("p, li, td, th, dd, dt, figcaption, blockquote")||q.parentElement),B){let z=D(B),X=T&&P?z.indexOf(P):-1,te=X>120?X-120:0;k.nearText=(te?"\u2026":"")+z.slice(te,te+240);}h.elements[N]=k;}return h}function YM(f,d){let g=(f.type||"").toLowerCase(),h=f.wcag||"";return g==="decorative_image_with_title"?"generic":h==="1.1.1"&&(d?.tag==="img"||/alt|image/.test(g))?"alt":h==="1.4.3"||h==="1.4.6"||g==="color-contrast"||g==="contrast_insufficient"||g==="contrast_enhanced"?"contrast":h==="2.2.2"||h==="2.3.3"||/motion|animation|reduced_motion/.test(g)?"motion":"generic"}function Bu(f){return !!f&&f.tag!=="img"&&f.cssBackgroundImage&&!f.img}var KM=/\b(needs?|requires?|for)\s+(a\s+)?(human|manual)?\s*review\b|\bhuman review\b|\bmanual review\b|\bincomplete\b/gi;function JM(f){let d=String(f??"").replace(/\s+/g," ").replace(KM,"judged").trim();if(d.length<=Ou)return d;let g=d.slice(0,Ou-1),h=g.lastIndexOf(" ");return (h>Ou/2?g.slice(0,h):g).replace(/[\s,;:–—-]+$/,"")+"\u2026"}function ZM(f){let d=String(f??"").replace(/\s+/g," ").trim();if(d=d.replace(/^(an?\s+|the\s+)?(image|picture|photo|photograph|graphic|icon|illustration|screenshot)\s+(of|showing|depicting)(\s+|$)(an?\s+|the\s+)?/i,""),d=d.replace(/^["'“”]+|["'“”]+$/g,"").trim(),d.length>Bg){d=d.slice(0,Bg);let g=d.lastIndexOf(" ");g>60&&(d=d.slice(0,g)),d=d.replace(/[\s,;:–—-]+$/,"");}return d&&(d=d[0].toUpperCase()+d.slice(1)),d}function aa(f){let d=f.match(/\d+(\.\d+)?/g);return !d||d.length<3?f:"#"+d.slice(0,3).map(g=>Math.round(Number(g)).toString(16).padStart(2,"0")).join("")}var $g=/^#?([0-9a-f]{6})$/i;function QM(f){let d=String(f??"").trim().match($g);return d?"#"+d[1].toLowerCase():null}function eL(f){let{confidence:d,reviewReason:g,...h}=f;return {...h,id:f.id.replace("axe-incomplete-","axe-")}}function tL(f){let d=f;if(typeof f=="string"){let p=f.replace(/```json\s*/gi,"").replace(/```/g,"").match(/\[[\s\S]*\]/);if(!p)return null;try{d=JSON.parse(p[0]);}catch{return null}}else f&&typeof f=="object"&&Array.isArray(f.verdicts)&&(d=f.verdicts);if(!Array.isArray(d))return null;let g=[];for(let h of d){if(!h||typeof h!="object")continue;let{id:p,verdict:y,reason:A,fix:w}=h;if(typeof p!="string"||y!=="pass"&&y!=="violation")continue;let F=w&&typeof w=="object"?w:void 0;g.push({id:p,verdict:y,reason:typeof A=="string"?A:void 0,fix:F?{attribute:typeof F.attribute=="string"?F.attribute:void 0,value:typeof F.value=="string"?F.value:void 0}:void 0});}return g}var ia=class extends Error{},rL=`You are the final accessibility judge for a WCAG scanner. Automated engines could not decide the findings below. You MUST decide each one: "pass" (not a violation) or "violation". There is no third option \u2014 never answer "unsure", never defer to a human.
386
386
 
387
387
  Rules:
388
388
  - Images (1.1.1): "pass" when the image is decorative, purely presentational, a spacer/tracking pixel, or is named by the text of its enclosing link/button. Otherwise "violation" with fix.attribute="alt" and a concrete alt text written from the image and its context: \u2264125 characters, no "image of"/"picture of" prefix, no file names.