@webability/core 1.9.0 → 1.10.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.
- package/dist/dom.cjs +1 -1
- package/dist/dom.d.cts +1 -1
- package/dist/dom.d.ts +1 -1
- package/dist/dom.js +1 -1
- package/dist/engine.cjs +12 -12
- package/dist/engine.d.cts +24 -1
- package/dist/engine.d.ts +24 -1
- package/dist/engine.js +12 -12
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/playwright.cjs +1 -1
- package/dist/playwright.d.cts +1 -1
- package/dist/playwright.d.ts +1 -1
- package/dist/playwright.js +1 -1
- package/dist/{types-g-bI_MhR.d.cts → types-fjs6XhzQ.d.cts} +2 -0
- package/dist/{types-g-bI_MhR.d.ts → types-fjs6XhzQ.d.ts} +2 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -377,7 +377,7 @@ See: https://github.com/dequelabs/axe-core/blob/master/doc/context.md`));}functi
|
|
|
377
377
|
`).join(`
|
|
378
378
|
`);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:Hg);});var lv={};yr(lv,{dismissModals:()=>sv});async function sv(d){await d.evaluate(f=>{for(let m of f){let p=document.querySelectorAll(m);for(let h of p)if(h.offsetParent!==null){h.click();return}}},RP),await new Promise(f=>setTimeout(f,500));}var RP,Qu=br(()=>{RP=['[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 Wo={};yr(Wo,{pruneHiddenIframeIssues:()=>PP,pruneInvisibleContrast:()=>LP,waitForRenderSettle:()=>FP});async function FP(d,f=4e3){let m=Date.now()+f;try{await d.waitForLoadState?.("load",{timeout:Math.min(f/2,2e3)});}catch{}let p="";for(;Date.now()<m;){let h;try{h=await d.evaluate(()=>{let b=typeof document.getAnimations=="function"?document.getAnimations():[],v=0;for(let D of b){if(D.playState!=="running")continue;let E;try{E=D.effect?.getComputedTiming?.().iterations;}catch{E=void 0;}E!==1/0&&v++;}let w="",C=document.body?document.body.querySelectorAll('[style*="opacity"]'):[],A=Math.min(C.length,50);for(let D=0;D<A;D++)w+=getComputedStyle(C[D]).opacity+",";return v+"|"+w});}catch{return}if(h.indexOf("0|")===0&&h===p)return;p=h,await new Promise(b=>setTimeout(b,150));}}function uv(d){return IP.has(d.wcag)||/contrast/i.test(d.type||"")}async function LP(d,f){let m=Array.from(new Set(f.filter(v=>uv(v)&&v.selector).map(v=>v.selector))).slice(0,100);if(m.length===0)return f;let p;try{p=await d.evaluate(v=>{let w=[],C={},A=Math.max(document.documentElement.scrollWidth,window.innerWidth),D=Math.max(document.documentElement.scrollHeight,window.innerHeight),E=F=>{let _=F.match(/rgba?\(([^)]+)\)/);if(!_)return !1;let x=_[1].split(/[ ,/]+/).filter(Boolean);return x.length<4||parseFloat(x[3])>=.95};for(let F of v){let _=null;try{_=document.querySelector(F);}catch{continue}if(!_)continue;let x=getComputedStyle(_),k=_.getBoundingClientRect(),T=x.clipPath&&x.clipPath!=="none"&&/inset\(\s*(?:50|100)%/.test(x.clipPath)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(x.clip||""),I=k.width<=1||k.height<=1,P=window.scrollX,V=window.scrollY,z=k.right+P<=0||k.bottom+V<=0||k.left+P>=A||k.top+V>=D,Y=!1;if(z)for(let J=_.parentElement;J&&J!==document.body&&J!==document.documentElement;J=J.parentElement){let te=getComputedStyle(J);if(te.overflowX!=="visible"||te.overflowY!=="visible"||te.transform&&te.transform!=="none"){Y=!0;break}}if(z&&Y){C[F]="text is outside the visible page inside a scrolling / clipped container \u2014 check contrast where it is shown";continue}if(T||I||z){w.push(F);continue}let q=_,M=!1;for(;q&&q!==document.documentElement;){if(parseFloat(getComputedStyle(q).opacity)===0){M=!0;break}q=q.parentElement;}if(M){C[F]="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 O=k.left+k.width/2,B=k.top+k.height/2,j=_,X=!1;for(let J=0;j&&j!==document.body&&J<8;J++){let te=getComputedStyle(j);if(E(te.backgroundColor)||te.backgroundImage&&te.backgroundImage!=="none")break;let Z=j.querySelectorAll("video, canvas, img, picture");for(let ne=0;ne<Z.length;ne++){let ae=Z[ne];if(ae.contains(_)||_.contains(ae))continue;let ue=ae.getBoundingClientRect();if(ue.width>0&&ue.height>0&&O>=ue.left&&O<=ue.right&&B>=ue.top&&B<=ue.bottom){X=!0;break}}if(X)break;j=j.parentElement;}X&&(C[F]="text sits over a video or image \u2014 the background behind the glyphs cannot be measured from CSS");}return {hidden:w,review:C}},m);}catch{return f}let h=new Set(p.hidden),b=[];for(let v of f){if(!uv(v)){b.push(v);continue}if(h.has(v.selector))continue;let w=p.review[v.selector];b.push(w&&v.confidence!=="needs_review"?{...v,confidence:"needs_review",reviewReason:w,...v.fix?{fix:{...v.fix,needsManualReview:true}}:{}}:v);}return b}async function PP(d,f){let m=Array.from(new Set(f.filter(b=>b.selector).map(b=>b.selector))).slice(0,200);if(m.length===0)return f;let p;try{p=await d.evaluate(b=>{let v=[];for(let w of b){let C=null;try{C=document.querySelector(w);}catch{continue}if(!C||C.tagName!=="IFRAME")continue;let A=getComputedStyle(C),D=C.getClientRects().length===0||A.visibility==="hidden"||A.visibility==="collapse",E=(C.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0;(D||E)&&v.push(w);}return v},m);}catch{return f}if(p.length===0)return f;let h=new Set(p);return f.filter(b=>!h.has(b.selector))}var IP,Xo=br(()=>{IP=new Set(["1.4.3","1.4.6","1.4.11"]);});var Yo={};yr(Yo,{focusOnlyObscuredIndexes:()=>BP,resetInteractionState:()=>MP,restoreInteractionState:()=>NP,snapshotInteractionState:()=>OP});async function MP(d){try{await d.evaluate(()=>{try{document.activeElement?.blur?.();}catch{}try{window.scrollTo({left:0,top:0,behavior:"instant"});}catch{}});}catch{}}async function OP(d){try{await d.evaluate(()=>{let f=window;f.__waCallerState={el:document.activeElement,x:window.scrollX,y:window.scrollY};});}catch{}}async function NP(d){try{await d.evaluate(()=>{let f=window,m=f.__waCallerState;if(delete f.__waCallerState,!m)return;let p=m.el;if(p&&p!==document.body&&p!==document.documentElement&&p.isConnected)try{p.focus({preventScroll:!0});}catch{}try{window.scrollTo({left:m.x,top:m.y,behavior:"instant"});}catch{}});}catch{}}function qP(d){if(typeof d=="string")return d;if(!Array.isArray(d))return null;let f=d.flat(1/0).filter(m=>typeof m=="string");return f.length===1?f[0]:null}async function BP(d,f){let m=f.map(v=>{let C=[...v.any??[],...v.none??[]].flatMap(D=>D.relatedNodes??[]);if(!C.length)return null;let A=C.map(D=>qP(D.target));return A.every(D=>!!D)?A:null}),p=Array.from(new Set(m.flatMap(v=>v??[])));if(!p.length)return new Set;let h={};try{h=await d.evaluate(({sels:v,own:w})=>{let C=D=>{let E=D.getBoundingClientRect(),F=getComputedStyle(D);return !!((E.width<=1||E.height<=1)&&(F.overflow==="hidden"||F.position==="absolute"||F.position==="fixed")||/^rect\(\s*0(px)?[\s,]+0(px)?[\s,]+0(px)?[\s,]+0(px)?\s*\)$/.test(F.clip||"")||/inset\(\s*50%/.test(F.clipPath||""))},A={};for(let D of v){let E=null;try{E=document.querySelector(D);}catch{E=null;}if(!E){A[D]=!1;continue}let F=E.closest(w);if(F&&F!==document.body&&F!==document.documentElement){A[D]=!0;continue}if(E===document.activeElement){try{E.blur();}catch{}A[D]=C(E);continue}A[D]=C(E);}return A},{sels:p,own:jo});}catch{return new Set}let b=new Set;return m.forEach((v,w)=>{v&&v.length&&v.every(C=>h[C]===true)&&b.add(w);}),b}var Jo=br(()=>{Ir();});var aa={};yr(aa,{dedupeByElementIdentity:()=>zP,deduplicateIssues:()=>HP});function HP(d){let f=new Map,m=[...d].sort((p,h)=>{let b={webability:0,"axe-core":1,"deep-analysis":2},v=b[p.source]??3,w=b[h.source]??3;return v-w});for(let p of m){let h=VP(p);f.has(h)?!f.get(h).fix?.suggestedValue&&p.fix?.suggestedValue&&f.set(h,p):f.set(h,p);}return Array.from(f.values())}function VP(d){let f=d.selector.replace(/:focus-visible$/,"").replace(/:focus$/,"").replace(/\[data-[^\]]+\]/g,"").trim(),m=d.wcag||"";return f&&m?`${f}::${m}`:`${d.type}::${f||d.id}`}async function zP(d,f){if(f.length<2)return f;let m=Array.from(new Set(f.map(D=>D.selector).filter(Boolean))),p;try{p=await d.evaluate(D=>{let E=Array.from(document.querySelectorAll("*")),F=new Map;E.forEach((x,k)=>F.set(x,k));let _={};for(let x of D){let k=null;try{k=document.querySelector(x);}catch{}if(!k){let T=x.replace(/:(?:focus-visible|focus-within|focus|hover|active)$/,"");if(T!==x)try{k=document.querySelector(T);}catch{}}if(k){let T=k.closest("table");_[x]={el:F.get(k),table:T?F.get(T):-1,doc:k===document.documentElement||k===document.body};}}return _},m);}catch{return f}let h={webability:0,"axe-core":1,"deep-analysis":2},b=D=>{let E=p[D.selector];if(!E)return null;let F=D.wcag||D.type;return E.doc?{key:jP.has(D.wcag||"")?`doc::${F}`:`doc::${F}::${D.type}`,owner:true}:E.table>=0&&$P.test(D.type)?{key:`${E.table}::${F}::table-headers`,owner:E.el===E.table}:{key:`${E.el}::${F}`,owner:true}},v=[...f].sort((D,E)=>{let F=b(D),_=b(E),x=F?.owner?0:1,k=_?.owner?0:1;return x-k||(h[D.source]??3)-(h[E.source]??3)}),w=new Map,C=[];for(let D of v){let E=b(D);if(!E){C.push(D);continue}let F=w.get(E.key);F?!F.fix?.suggestedValue&&D.fix?.suggestedValue&&(b(F)?.owner??true)===E.owner&&w.set(E.key,D):w.set(E.key,D);}let A=new Set([...w.values(),...C]);return f.filter(D=>A.has(D))}var $P,jP,ia=br(()=>{$P=/^missing_table_header$|^td-has-header$|^th-has-data-cells$|^h43|^h63/,jP=new Set(["2.4.1","3.1.1","2.4.2"]);});var fv={};yr(fv,{parseGif:()=>cv,playsOverFiveSeconds:()=>dv,verifyAnimatedGifs:()=>GP});function cv(d){if(String.fromCharCode(d[0]??0,d[1]??0,d[2]??0)!=="GIF")return null;let m=13,p=d[10]??0;p&128&&(m+=3*(1<<(p&7)+1));let h=0,b=0,v=0,w=null,C=()=>{for(;m<d.length;){let A=d[m++];if(A===0)return;m+=A;}};for(;m<d.length;){let A=d[m++];if(A===59)break;if(A===33){let D=d[m++];if(D===249)v=(d[m+2]??0)|(d[m+3]??0)<<8,m+=1+(d[m]??4),C();else if(D===255){let E=d[m]??0,F=String.fromCharCode(...Array.from(d.subarray(m+1,m+1+E)));m+=1+E,(F==="NETSCAPE2.0"||F==="ANIMEXTS1.0")&&d[m]===3&&d[m+1]===1&&(w=(d[m+2]??0)|(d[m+3]??0)<<8),C();}else C();}else if(A===44){let D=d[m+8]??0;m+=9,D&128&&(m+=3*(1<<(D&7)+1)),m+=1,C(),h++,b+=v<2?10:v,v=0;}else break}return {frames:h,seconds:b/100,loops:w}}function dv(d){if(d.frames<2)return false;if(d.loops===0)return true;let f=d.loops===null?1:d.loops+1;return d.seconds*f>5}async function GP(d,f){let m=f.filter(b=>b.type==="animated_gif_no_pause");if(!m.length)return f;let p=Array.from(new Set(m.map(b=>b.selector))),h={};try{h=await d.evaluate(async({sels:b,parserSrc:v})=>{let w=new Function("var __name = function (f) { return f }; return ("+v+")")(),C={};return await Promise.all(b.map(async A=>{C[A]=null;try{let D=document.querySelector(A),E=D&&(D.currentSrc||D.src);if(!E)return;let F=new AbortController,_=setTimeout(()=>F.abort(),5e3);try{let x=await fetch(E,{signal:F.signal,credentials:"same-origin"});if(!x.ok||Number(x.headers.get("content-length")||"0")>2e7)return;C[A]=w(new Uint8Array(await x.arrayBuffer()));}finally{clearTimeout(_);}}catch{}})),C},{sels:p,parserSrc:cv.toString()});}catch{h={};}return f.flatMap(b=>{if(b.type!=="animated_gif_no_pause")return [b];let v=h[b.selector];if(!v)return [{...b,message:`${b.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(!dv(v))return [];let w=v.loops===0?"loops forever":`plays for ${(v.seconds*(v.loops===null?1:v.loops+1)).toFixed(1)}s`;return [{...b,message:`animated GIF (${v.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 pv=br(()=>{});var ec={};yr(ec,{scopeIssuesToRoot:()=>UP});async function UP(d,f,m){let p=Array.from(new Set(f.map(b=>b.selector).filter(Boolean))),h;try{h=await d.evaluate(({rootSel:b,sels:v})=>{let w=D=>{try{let F=document.querySelector(D);if(F)return F}catch{}let E=D.replace(/:(?:focus-visible|focus-within|focus|hover|active)$/,"");if(E!==D)try{return document.querySelector(E)}catch{return null}return null},C=null;try{C=document.querySelector(b);}catch{return {invalid:!0,matched:!1,within:{}}}if(!C)return {invalid:!1,matched:!1,within:{}};let A={};for(let D of v){let E=w(D);A[D]=E?E===C||C.contains(E):!0;}return {invalid:!1,matched:!0,within:A}},{rootSel:m,sels:p});}catch{return {issues:f,warning:`scope:evaluate-failed (${m}) \u2014 results unfiltered`}}return h.invalid?{issues:f,warning:`scope:invalid-selector (${m}) \u2014 results unfiltered`}:h.matched?{issues:f.filter(b=>b.selector?h.within[b.selector]===true:true)}:{issues:[],warning:`scope:root-miss (${m} matched nothing \u2014 empty result)`}}var tc=br(()=>{});var $o={weak_button_name:"4.1.2",weak_link_name:"2.4.4",weak_heading:"2.4.6",weak_iframe_title:"4.1.2",weak_page_title:"2.4.2",weak_svg_name:"1.1.1",weak_skip_link:"2.4.1",missing_button_role:"4.1.2",missing_semantic_role:"4.1.2",missing_document_language:"3.1.1",missing_landmark:"1.3.1",svg_missing_name:"1.1.1",aria_hidden_focusable:"4.1.2",adjacent_redundant_link:"2.4.4",contrast_insufficient:"1.4.3",non_text_contrast_insufficient:"1.4.11",target_too_small:"2.5.8",focus_not_visible:"2.4.7",empty_link:"2.4.4",unlabeled_button:"4.1.2",missing_label:"1.3.1",decorative_icon:"1.1.1",skip_link:"2.4.1",aria_live:"4.1.3",missing_alt:"1.1.1",identify_input_purpose:"1.3.5",redundant_role:"4.1.2",duplicate_id:"4.1.1",new_window_link:"3.2.5",missing_fieldset_legend:"1.3.1",missing_table_header:"1.3.1",missing_table_caption:"1.3.1",missing_table_scope:"1.3.1",external_link_warning:"3.2.5",download_link_warning:"3.2.5",broken_anchor:"2.4.1",form_missing_submit:"3.2.2",decorative_image_with_title:"1.1.1",placeholder_link:"2.4.4",missing_pattern_title:"3.3.2",missing_autocomplete:"1.3.5",missing_media_controls:"2.2.2",unsafe_autoplay:"1.4.2",zoom_restriction:"1.4.4",missing_button_type:"3.2.2",link_consistency:"3.2.4",keyboard_trap:"2.1.1",focus_order_disruption:"2.4.3",missing_captions:"1.2.2",color_only_link:"1.4.1",label_in_name:"2.5.3",onfocus_context_change:"3.2.1",focus_obscured_by_sticky:"2.4.11",text_spacing_blocked:"1.4.12",nested_landmark:"1.3.1",motion_uncontrollable:"2.2.2",auto_refresh:"2.2.1",motion_without_reduced_motion:"2.3.3",flashing_content:"2.3.1",animated_gif_no_pause:"2.2.2",missing_required_indicator:"3.3.2",background_image_unlabeled:"1.1.1",empty_heading:"1.3.1",javascript_link:"2.1.1",broken_aria_reference:"4.1.2",main_content_hidden:"4.1.2",scrollable_not_focusable:"2.1.1",meaningful_sequence:"1.3.2",sensory_characteristic:"1.3.3",image_of_text:"1.4.5",reflow_overflow:"1.4.10",missing_audio_description:"1.2.5",missing_transcript:"1.2.1",character_key_shortcut:"2.1.4",on_input_change:"3.2.2",pointer_gesture:"2.5.1",pointer_cancellation:"2.5.2",motion_actuation:"2.5.4",error_prevention_missing:"3.3.4",inconsistent_navigation:"3.2.3"},ti={mobile:{width:375,height:667},tablet:{width:768,height:1024},desktop:{width:1280,height:720}};var gI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",m=[],p=new Set;function h(w){let C=(w.textContent||"").trim().replace(/\s+/g,""),A=w.querySelector("img, svg, picture")!==null,D=w.querySelector("i[class], span[class]")!==null;if(C.length>0&&!A&&!D)return false;if(A){let E=w.querySelectorAll("img"),F="";E.forEach(k=>{F+=(k.getAttribute("alt")||"").trim();});let _=C.replace(/\s+/g,""),x=F.replace(/\s+/g,"");return _===""||_===x}return false}function b(w){let C=w.nextElementSibling;for(;C;){if(isVisible(C))return C;C=C.nextElementSibling;}return null}return document.querySelectorAll("a[href]").forEach(w=>{if(m.length>=50||w.closest(d)||!isVisible(w)||p.has(w))return;let C=w.getAttribute("href");if(!C||C==="#")return;let A=b(w);if(!A||A.tagName!=="A"||A.getAttribute("href")!==C||p.has(A)||w.getAttribute("aria-hidden")==="true"||A.getAttribute("aria-hidden")==="true")return;let E=h(w),F=h(A);if(!E&&!F)return;let _=E?w:A,x=E?A:w;p.add(_),p.add(x);let k=uniqueSel(_),T=_.outerHTML.slice(0,300),I=(x.textContent||"").trim().slice(0,80);m.push({selector:k,attribute:"aria-hidden",currentValue:"",issueType:"adjacent_redundant_link",wcag:"2.4.4",context:JSON.stringify({href:C,imageLink:true,adjacentLinkText:I,suggestion:'Add aria-hidden="true" and tabindex="-1" to the image-only link'}),needsAI:false,fixValue:"true",outerHtml:T}),m.push({selector:k,attribute:"tabindex",currentValue:"",issueType:"adjacent_redundant_link",wcag:"2.4.4",context:JSON.stringify({supplementary:"Remove from tab order alongside aria-hidden",href:C}),needsAI:false,fixValue:"-1",outerHtml:T});}),m},Eh={name:"adjacentLinks",cap:50,async detect(d){return d.evaluate(gI)}};var vI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",f='.slick-cloned,.slick-clone,.swiper-slide-duplicate,.owl-item.cloned,[data-slick-index^="-"],[data-swiper-slide-index]:not([data-swiper-slide-index=""])',m=["[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(","),p=new Set(["A","BUTTON","INPUT","SELECT","TEXTAREA"]),h=50,b=[],v=new Set;function w(D){let E=D,F=0;for(;E&&E.nodeType===1&&E!==document.body&&F<20;){try{let _=getComputedStyle(E);if(_.display==="none"||_.visibility==="hidden"||_.visibility==="collapse")return !0}catch{}E=E.parentElement,F++;}return false}function C(D){let E=D.tagName,F=D.getAttribute("tabindex");if(F!==null){let _=parseInt(F,10);if(!isNaN(_)&&_>=0)return true;if(!isNaN(_)&&_<0)return false}return p.has(E)?!(E==="A"&&!D.hasAttribute("href")||D.hasAttribute("disabled")):false}return document.querySelectorAll('[aria-hidden="true"]').forEach(D=>{if(b.length>=h||D.closest(d)||D.closest(f)||D.closest(m)||D.matches(m))return;let E=[];if(C(D)&&E.push(D),D.querySelectorAll("a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]").forEach(_=>{C(_)&&E.push(_);}),E.length!==0)for(let _ of E){if(b.length>=h)return;let x=uniqueSel(_),k=x+"\0tabindex";if(v.has(k))continue;v.add(k);let T=w(_);b.push({selector:x,attribute:"tabindex",currentValue:_.getAttribute("tabindex")||"",issueType:"aria_hidden_focusable",wcag:"4.1.2",context:JSON.stringify({tag:_.tagName.toLowerCase(),parentHidden:D.tagName.toLowerCase(),collapsed:T,suggestion:T?"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.":'Add tabindex="-1" to the focusable child so it cannot be tabbed into while parent is aria-hidden'}),needsAI:false,fixValue:"-1",...T?{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.'}:{},outerHtml:(_.outerHTML||"").slice(0,300)});}}),b},Ch={name:"ariaHiddenFocusable",cap:50,async detect(d){return d.evaluate(vI)}};var bI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=new Set,h=[{regex:/\btoast\b/i,ariaLive:"polite",role:"status"},{regex:/\bsnackbar\b/i,ariaLive:"polite",role:"status"},{regex:/error[-_]message|error[-_]msg|form[-_]error|validation[-_]error/i,ariaLive:"assertive",role:"alert"},{regex:/success[-_]message|success[-_]msg/i,ariaLive:"polite",role:"status"},{regex:/alert[-_]message|alert[-_]banner/i,ariaLive:"assertive",role:"alert"},{regex:/flash[-_]message|flash[-_]notice/i,ariaLive:"polite",role:"status"},{regex:/cart[-_]count|cart[-_]badge|cart[-_]quantity/i,ariaLive:"polite",role:"status"},{regex:/loading[-_]spinner|loading[-_]indicator/i,ariaLive:"polite",role:"status"},{regex:/search[-_]results?[-_]count/i,ariaLive:"polite",role:"status"},{regex:/\blive[-_]region\b/i,ariaLive:"polite",role:"status"},{regex:/notification[-_](bar|area|container|popup|wrapper)/i,ariaLive:"polite",role:"status"},{regex:/status[-_]message/i,ariaLive:"polite",role:"status"}];function b(v){if(!(v.textContent||"").trim())return true;let C=getComputedStyle(v);return !!(C.display==="none"||C.visibility==="hidden"||C.opacity==="0"||C.maxHeight==="0px"||C.height==="0px"||v.hasAttribute("data-bind")||v.hasAttribute("v-if")||v.hasAttribute("v-show")||v.hasAttribute("ng-if")||v.hasAttribute("ng-show")||v.hasAttribute(":class")||v.hasAttribute("x-show")||v.hasAttribute("x-if")||v.hasAttribute("aria-atomic"))}for(let v of h){if(m.length>=50)break;let w=document.querySelectorAll("*");for(let C of w){if(m.length>=50)break;if(p.has(C)||C.closest(d))continue;let A=C.className&&typeof C.className=="string"?C.className:"",D=C.getAttribute("id")||"";if(!v.regex.test(A)&&!v.regex.test(D)||C.getAttribute("aria-live"))continue;let E=C.getAttribute("role")||"";if(["alert","status","log","timer","marquee"].includes(E)||!/\btoast\b|\bsnackbar\b|error[-_]|success[-_]|alert[-_]|flash[-_]/i.test(A+" "+D)&&!b(C))continue;p.add(C);let _=uniqueSel(C),x=v.regex.test(A)?"class":"id",k=x==="class"?A.slice(0,60):D;m.push({selector:_,attribute:"aria-live",currentValue:"",issueType:"aria_live",wcag:"4.1.3",context:x+": "+k+" | pattern: "+v.regex.source,needsAI:false,fixValue:v.ariaLive});}}return m},Sh={name:"ariaLive",cap:50,async detect(d){return d.evaluate(bI)}};var yI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",m=[],p=new Set,h=["aria-labelledby","aria-describedby"];return document.querySelectorAll("[aria-labelledby],[aria-describedby]").forEach(w=>{if(!(m.length>=50)&&!w.closest(d)&&isVisible(w)&&!isHiddenFromAT(w)&&!w.getAttribute("aria-live")&&!w.closest("[aria-live]")&&!w.closest("template"))for(let C of h){let A=w.getAttribute(C);if(!A||!A.trim())continue;let D=A.trim().split(/\s+/).filter(V=>V.length>0);if(D.length===0||!D.every(V=>!document.getElementById(V)))continue;let F=w.getAttribute("aria-label");if(F&&F.trim())continue;let _=getAccessibleName(w);if(_&&_.trim())continue;let x=uniqueSel(w),k=x+"\0"+C;if(p.has(k))continue;p.add(k);let{nearbyHeading:T,parentTag:I,parentRole:P}=getNearbyContext(w);m.push({selector:x,attribute:"aria-label",currentValue:"",issueType:"broken_aria_reference",wcag:"4.1.2",context:JSON.stringify({tag:w.tagName.toLowerCase(),brokenAttr:C,brokenIds:D,nearbyHeading:T,parentTag:I,parentRole:P,suggestion:`All IDs in ${C}="${A}" are missing from the DOM. Element has no accessible name. Generate an aria-label.`}),needsAI:true,outerHtml:(w.outerHTML||"").slice(0,300)});}}),m},kh={name:"brokenAriaReferences",cap:50,async detect(d){return d.evaluate(yI)}};var wI=()=>{let f=[],m=["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"],p=document.querySelectorAll("button");for(let h of p){if(f.length>=50)break;let b=h;if(isWidget(b)||b.hasAttribute("type")||!b.closest("form"))continue;let v=(b.textContent||"").trim().slice(0,60),w=(b.getAttribute("aria-label")||"").trim().slice(0,60),C=v||w||"(no label)",A=C.toLowerCase();m.some(E=>A.includes(E))||f.push({selector:uniqueSel(b),attribute:"type",currentValue:"",issueType:"missing_button_type",wcag:"3.2.2",context:"button inside <form> missing type attribute \u2014 defaults to submit | label: "+C,needsAI:false,fixValue:"button",outerHtml:(b.outerHTML||"").slice(0,300)});}return f},Th={name:"buttonType",cap:50,async detect(d){return d.evaluate(wI)}};var xI=()=>{let f=[],m=document.querySelectorAll("video, audio");for(let p of Array.from(m)){if(f.length>=20)break;if(isWidget(p)||typeof isVisible=="function"&&!isVisible(p)||p.error)continue;let h=p.tagName==="VIDEO";if(h){let k=p.hasAttribute("muted")||p.muted,T=p.hasAttribute("controls"),I=p.hasAttribute("loop")||p.loop,P=/mute|unmute|sound|volume|audio|play|pause/i,V=!!p.parentElement?.querySelector('button, [role="button"]')||!!p.id&&!!document.querySelector('[aria-controls~="'+p.id.replace(/"/g,"")+'"]');for(let z=p.parentElement?.parentElement||null,Y=0;z&&!V&&Y<3;z=z.parentElement,Y++)V=Array.from(z.querySelectorAll('button, [role="button"]')).some(q=>P.test((q.getAttribute("aria-label")||"")+" "+(q.getAttribute("title")||"")+" "+(q.textContent||"")));if(k&&I&&!T&&!V)continue}let b=p.querySelectorAll("track"),v=false;for(let k of Array.from(b)){let T=(k.getAttribute("kind")||"").toLowerCase();if(T==="captions"||T==="subtitles"){v=true;break}}if(v)continue;let w=p.currentSrc||p.getAttribute("src")||"";if(w||(w=p.querySelector("source")?.getAttribute("src")||""),!w)continue;let C=w.toLowerCase();if(C.startsWith("blob:")||C.startsWith("data:")||C.startsWith("about:")||C.startsWith("javascript:")||C.endsWith(".m3u8")||C.includes(".m3u8?")||C.endsWith(".mpd")||C.includes(".mpd?"))continue;let A=w;try{A=new URL(w,location.href).toString();}catch{continue}let D=typeof uniqueSel=="function"?uniqueSel(p):"",E=p.getAttribute("title")||p.getAttribute("aria-label")||"",F=typeof getNearbyContext=="function"?getNearbyContext(p):{parentTag:p.tagName.toLowerCase(),nearbyHeading:""},_=[];_.push("media: "+p.tagName.toLowerCase()),_.push("src: "+A.slice(0,200)),E&&_.push("title: "+E.slice(0,80)),F.nearbyHeading&&_.push("heading: "+F.nearbyHeading),_.push("parent: "+F.parentTag);let x=h;f.push({selector:D,attribute:"data-needs-captions",currentValue:"",issueType:"missing_captions",wcag:"1.2.2",context:_.join(" | "),needsAI:true,...x?{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:A,outerHtml:(p.outerHTML||"").slice(0,300)});}return f},Rh={name:"captions",cap:20,async detect(d){return d.evaluate(xI)}};var DI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p="p, li, blockquote, article, section, main, div",h=document.querySelectorAll("a[href]"),b=new Map;for(let v of Array.from(h)){if(m.length>=40)break;if(v.closest(d)||v.closest('nav, header, footer, aside, [role="navigation"], [role="banner"], [role="contentinfo"]')||typeof isVisible=="function"&&!isVisible(v))continue;let w=v.closest(p);if(!w)continue;let C=(v.textContent||"").trim();if(!C)continue;let A=b.get(w);if(A===void 0){A=0;let z=document.createTreeWalker(w,NodeFilter.SHOW_TEXT),Y;for(;Y=z.nextNode();){let q=Y.parentElement;!q||q.closest("a")||q.closest(p)===w&&(typeof isVisible=="function"&&!isVisible(q)||(A+=(Y.textContent||"").trim().length));}b.set(w,A);}if(A<20||v.querySelector("img, svg, [class*=icon], [class*=arrow]"))continue;let D=getComputedStyle(v),E=getComputedStyle(w);if((D.textDecorationLine||D.textDecoration||"").includes("underline")||(()=>{let z=document.createTreeWalker(v,NodeFilter.SHOW_TEXT),Y,q=false;for(;Y=z.nextNode();){if(!/[\p{L}\p{N}]/u.test(Y.textContent||""))continue;q=true;let M=false;for(let O=Y.parentElement;O&&O!==v;O=O.parentElement){let B=getComputedStyle(O),j=(B.textDecorationColor||"").replace(/\s/g,"");if((B.textDecorationLine||"").includes("underline")&&j!=="transparent"&&!/^rgba\([^)]*,0(?:\.0+)?\)$/.test(j)){M=true;break}let X=(B.borderBottomColor||"").replace(/\s/g,""),J=X==="transparent"||/^rgba\([^)]*,0(?:\.0+)?\)$/.test(X);if((B.borderBottomStyle||"none")!=="none"&&parseFloat(B.borderBottomWidth||"0")>0&&!J){M=true;break}}if(!M)return false}return q})())continue;let x=parseInt(D.fontWeight||"400",10),k=parseInt(E.fontWeight||"400",10);if(Number.isFinite(x)&&Number.isFinite(k)&&x-k>=300||(D.borderBottomStyle||"none")!=="none"&&(D.borderBottomWidth||"0px")!=="0px"||D.color===E.color)continue;let I=typeof uniqueSel=="function"?uniqueSel(v):"",P=typeof getNearbyContext=="function"?getNearbyContext(v):{parentTag:v.tagName.toLowerCase(),nearbyHeading:""},V=[];V.push("link: "+C.slice(0,40)),V.push("color: "+D.color),V.push("parent-color: "+E.color),P.nearbyHeading&&V.push("heading: "+P.nearbyHeading),V.push("parent: "+P.parentTag),m.push({selector:I,attribute:"style",currentValue:D.textDecoration||"",issueType:"color_only_link",wcag:"1.4.1",context:V.join(" | "),needsAI:false,fixValue:"text-decoration: underline !important;",outerHtml:(v.outerHTML||"").slice(0,300)});}return m},Fh={name:"colorOnly",cap:40,async detect(d){return d.evaluate(DI)}};var _I=()=>{let f=[],m=x=>typeof parseCssColor=="function"?parseCssColor(x):null,p=(x,k,T)=>typeof relLuminance=="function"?relLuminance(x,k,T):0,h=(x,k)=>typeof contrastRatio=="function"?contrastRatio(x,k):1;function b(x){let k=String(x.backgroundImage||"none");if(k==="none")return false;if(/gradient\(/i.test(k))return true;if(!/url\(/i.test(k))return false;let T=String(x.backgroundRepeat||"").toLowerCase(),I=String(x.backgroundSize||"").toLowerCase(),P=T.split(",").map(z=>z.trim()).some(z=>z!==""&&z!=="no-repeat"),V=/cover|contain|100%/.test(I);return P||V}function v(x){let k=document.documentElement,T=x,I=0;for(;T&&T!==k&&I<12;){let q=getComputedStyle(T);if(b(q))return null;let M=m(q.backgroundColor||"");if(M&&M[3]>.5)return [M[0],M[1],M[2]];T=T.parentElement,I++;}let P=document.body;if(T&&T!==k&&P&&P.contains(T)){let q=getComputedStyle(P);if(b(q))return null;let M=m(q.backgroundColor||"");if(M&&M[3]>.5)return [M[0],M[1],M[2]]}let V=getComputedStyle(k);if(b(V))return null;let z=m(V.backgroundColor||""),Y=z?Math.min(z[3],1):0;return !z||Y<=0?[255,255,255]:[Math.round(z[0]*Y+255*(1-Y)),Math.round(z[1]*Y+255*(1-Y)),Math.round(z[2]*Y+255*(1-Y))]}function w(x,k,T){return "#"+[x,k,T].map(I=>{let P=Math.max(0,Math.min(255,Math.round(I))).toString(16);return P.length===1?"0"+P:P}).join("")}function C(x,k,T){let I=p(k[0],k[1],k[2])>.5;return A(x,k,T,I)||A(x,k,T,!I)}function A(x,k,T,I){let P=0,V=1,z=null;for(let Y=0;Y<20;Y++){let q=(P+V)/2,M=I?[x[0]*(1-q),x[1]*(1-q),x[2]*(1-q)]:[x[0]+(255-x[0])*q,x[1]+(255-x[1])*q,x[2]+(255-x[2])*q],O=[Math.round(M[0]),Math.round(M[1]),Math.round(M[2])];h(O,k)>=T?(z=O,V=q):P=q;}return z}let D=document.createTreeWalker(document.body,4),E=new Set,F=[],_=D.nextNode();for(;_;){if((_.textContent||"").trim().length>=2){let k=_.parentElement;k&&!E.has(k)&&(E.add(k),F.push(k));}_=D.nextNode();}for(let x of F){if(f.length>=30)break;if(isWidget(x)||isHiddenFromAT(x)||!isVisible(x))continue;let k=getComputedStyle(x),T=m(k.color||"");if(!T)continue;if(T[3]<.5){let Z=k.webkitBackgroundClip||k.backgroundClip||"",ne=k.backgroundImage||"";if(String(Z).includes("text")&&/gradient\(/i.test(ne)){let ae=Array.from(x.childNodes).filter(ue=>ue.nodeType===3).map(ue=>(ue.textContent||"").trim()).join("");ae&&f.push({selector:uniqueSel(x),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(ae.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:x.outerHTML.slice(0,200)});}continue}let I=v(x),P=parseFloat(k.fontSize||"16"),V=parseInt(k.fontWeight||"400",10),Y=P>=24||P>=18.66&&V>=700?3:4.5,q=Array.from(x.childNodes).filter(Z=>Z.nodeType===3).map(Z=>(Z.textContent||"").trim()).join("");if(!q)continue;let M=w(T[0],T[1],T[2]),O=uniqueSel(x);if(I===null){f.push({selector:O,attribute:"style",currentValue:M,message:"contrast: text "+M+" on a gradient or image background \u2014 the ratio cannot be computed from CSS; check it meets "+Y+":1 where the background is lightest/darkest",issueType:"contrast_insufficient",wcag:"1.4.3",context:"fg="+M+" bg=<gradient-or-image> needs="+Y+" text="+JSON.stringify(q.slice(0,40)),needsAI:true,needsReview:true,reviewReason:"background uses gradient or image \u2014 contrast cannot be reliably computed",outerHtml:x.outerHTML.slice(0,200)});continue}let B=h([T[0],T[1],T[2]],I);if(B>=Y)continue;let j=C([T[0],T[1],T[2]],I,Y);if(!j)continue;let X=w(j[0],j[1],j[2]),J=w(I[0],I[1],I[2]),te="color:"+X+" !important;";f.push({selector:O,attribute:"style",currentValue:M,message:"contrast: "+M+" on "+J+" is "+B.toFixed(2)+":1, needs "+Y+":1 \u2014 e.g. color "+X,issueType:"contrast_insufficient",wcag:"1.4.3",context:"fg="+M+" bg="+J+" ratio="+B.toFixed(2)+" needs="+Y+" text="+JSON.stringify(q.slice(0,40)),needsAI:false,fixValue:te,outerHtml:x.outerHTML.slice(0,200)});}return f},Ih={name:"contrast",cap:30,async detect(d){return d.evaluate(_I)}};var AI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",m=[],p=document.querySelectorAll("marquee, blink");for(let C of Array.from(p)){if(m.length>=30)break;if(C.closest(d))continue;let A=typeof uniqueSel=="function"?uniqueSel(C):C.tagName.toLowerCase();m.push({selector:A,attribute:"aria-hidden",currentValue:C.getAttribute("aria-hidden")||"",issueType:"motion_uncontrollable",wcag:"2.2.2",context:`deprecated ${C.tagName.toLowerCase()} element \u2014 uncontrollable motion`,needsAI:false,manualFix:true,fixValue:"true",outerHtml:(C.outerHTML||"").slice(0,300)});}let h=document.querySelectorAll('img[src*=".gif" i], img[src$=".gif" i]');for(let C of Array.from(h)){if(m.length>=30)break;if(C.closest(d))continue;let A=C.getAttribute("src")||"";if(!/\.gif(\?|#|$)/i.test(A)||typeof isVisible=="function"&&!isVisible(C))continue;let D=C.getBoundingClientRect();if(D.width<=40&&D.height<=40)continue;let E=typeof uniqueSel=="function"?uniqueSel(C):"img";m.push({selector:E,attribute:"data-asw-motion-review",currentValue:"",issueType:"animated_gif_no_pause",wcag:"2.2.2",context:`animated GIF without pause control: ${A.split("/").pop()?.slice(0,60)||A.slice(-60)}`,needsAI:true,outerHtml:(C.outerHTML||"").slice(0,300)});}let b=document.querySelectorAll('meta[http-equiv="refresh"], meta[http-equiv="Refresh"], meta[http-equiv="REFRESH"]');for(let C of Array.from(b)){if(m.length>=30)break;let A=(C.getAttribute("content")||"").trim(),D=parseInt((A.split(/[;,]/)[0]||"").trim(),10);!Number.isFinite(D)||D<=0||m.push({selector:`meta[http-equiv="refresh"][content*="${A.slice(0,20)}"]`,attribute:"data-auto-refresh",currentValue:A,issueType:"auto_refresh",wcag:"2.2.1",context:`auto-refresh every ${D}s \u2014 interrupts screen reader users mid-sentence (WCAG 2.2.1)`,needsAI:false,manualFix:true,outerHtml:(C.outerHTML||"").slice(0,200)});}try{let C=!1,A=!1;for(let D of Array.from(document.styleSheets)){let E=null;try{E=D.cssRules;}catch{continue}if(E)for(let F of Array.from(E)){let _=F.cssText||"";if(/animation[^;]*\binfinite\b/i.test(_)&&/(keyframes|animation-name)/i.test(_+" "+(F.name||""))&&(C=!0),/prefers-reduced-motion[^{]*\(\s*reduce\s*\)/i.test(_)&&(A=!0),F.cssRules)for(let x of Array.from(F.cssRules)){let k=x.cssText||"";/animation[^;]*\binfinite\b/i.test(k)&&(C=!0);}}}C&&!A&&m.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 v=/\b(flash(ing)?|blink(ing)?|strobe)\b/i,w=document.querySelectorAll('[class*="flash" i], [class*="blink" i], [class*="strobe" i]');for(let C of Array.from(w)){if(m.length>=30)break;if(C.closest(d)||C.tagName==="BODY"||C.tagName==="HTML")continue;let A=C.className&&typeof C.className=="string"?C.className:"";if(!v.test(A)||typeof isVisible=="function"&&!isVisible(C))continue;let E=getComputedStyle(C).animationDuration,F=9999;if(E){let x=parseFloat(E);Number.isFinite(x)&&(F=/ms/i.test(E)?x:x*1e3);}if(F>333)continue;let _=typeof uniqueSel=="function"?uniqueSel(C):"";m.push({selector:_,attribute:"data-flashing-review",currentValue:"",issueType:"flashing_content",wcag:"2.3.1",context:`class matches flash/blink/strobe with ${F}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:(C.outerHTML||"").slice(0,300)});}return m},Lh={name:"cssAnimations",cap:30,async detect(d){return d.evaluate(AI)}};var EI=()=>{let f=[];function m(v){let w=(v.getAttribute("role")||"").toLowerCase();return w==="presentation"||w==="none"||(v.getAttribute("class")||"").toLowerCase().indexOf("layout")!==-1}function p(v){if(!v)return 0;let w=v.querySelectorAll("th, td"),C=0;for(let A=0;A<w.length;A++){let D=parseInt(w[A].getAttribute("colspan")||"1",10);C+=isNaN(D)||D<1?1:D;}return C}function h(v){let w=v.querySelectorAll("tr"),C=[];for(let A=0;A<w.length;A++){let D=w[A];D.closest("table")===v&&C.push(D);}return C}let b=document.querySelectorAll("table");for(let v=0;v<b.length&&!(f.length>=30);v++){let w=b[v];if(isWidget(w)||!isVisible(w)||m(w))continue;let C=h(w);if(C.length<=1)continue;let A=C[0],D=p(A);if(D<=1)continue;let E=uniqueSel(w),F=getNearbyContext(w),_=w.querySelectorAll("img, svg, picture").length>=2;if(_&&!(w.textContent||"").trim()){if(w.querySelector("input, select, textarea, button")&&(_=false),_&&w.querySelector("th, thead, caption, [scope], [headers]")&&(_=false),_){let j=Array.from(w.querySelectorAll("img")).map(X=>(X.getAttribute("alt")||"").trim().toLowerCase()).filter(Boolean);new Set(j).size<j.length&&(_=false);}}else if(_){let j=w.querySelectorAll("td, th"),X=0;for(let J=0;J<j.length&&_;J++){let te=j[J];if(te.closest("table")!==w)continue;let Z=(te.textContent||"").trim(),ne=!!te.querySelector("img, svg, picture");if(!Z&&!ne)continue;X++;let ae=te.querySelectorAll("a[href]");_=te.tagName==="TD"&&ae.length===1&&ne&&(ae[0].textContent||"").trim()===Z;}X<2&&(_=false);}if(_){f.push({selector:E,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:C.length,cols:D,nearbyHeading:F.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 x=null,k=w.querySelectorAll("caption");for(let j=0;j<k.length;j++)if(k[j].closest("table")===w){x=k[j];break}let T=x?(x.textContent||"").trim():"",I=(w.getAttribute("aria-label")||"").trim(),P=(w.getAttribute("title")||"").trim(),V=w.getAttribute("aria-labelledby"),z="";if(V){let j=V.split(/\s+/);for(let X=0;X<j.length;X++){let J=document.getElementById(j[X]);J&&(z+=" "+(J.textContent||""));}z=z.trim();}(!x||!T)&&!(I||z||P)&&f.length<30&&f.push({selector:E,attribute:"caption",currentValue:"",issueType:"missing_table_caption",wcag:"1.3.1",context:JSON.stringify({reason:x?"empty <caption>":"no <caption> element",rows:C.length,cols:D,nearbyHeading:F.nearbyHeading,parentTag:F.parentTag}),needsAI:true,outerHtml:(w.outerHTML||"").slice(0,300)});let q=null,M=w.querySelectorAll("thead");for(let j=0;j<M.length;j++)if(M[j].closest("table")===w){q=M[j];break}if(q&&q.querySelector("tr")!==null||f.length<30&&f.push({selector:E,attribute:"thead",currentValue:q?"empty":"",issueType:"missing_table_header",wcag:"1.3.1",context:JSON.stringify({reason:q?"<thead> has no <tr>":"no <thead> element",rows:C.length,cols:D,nearbyHeading:F.nearbyHeading}),needsAI:false,fixValue:"wrap-first-row",outerHtml:(w.outerHTML||"").slice(0,300)}),D>2){let j=A.querySelectorAll("th, td"),X=j.length>0;for(let J=0;J<j.length;J++)if((j[J].tagName||"").toLowerCase()!=="td"){X=false;break}if(X)for(let J=0;J<j.length&&!(f.length>=30);J++){let te=j[J],Z=uniqueSel(te),ne=(te.textContent||"").trim().slice(0,60);f.push({selector:Z,attribute:"role",currentValue:te.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:ne,colIndex:J,nearbyHeading:F.nearbyHeading}),needsAI:false,fixValue:"columnheader",outerHtml:(te.outerHTML||"").slice(0,300)});}}let B=w.querySelectorAll("th");for(let j=0;j<B.length&&!(f.length>=30);j++){let X=B[j];if(X.closest("table")!==w)continue;let J=(X.getAttribute("scope")||"").trim().toLowerCase();if(J==="col"||J==="row"||J==="colgroup"||J==="rowgroup")continue;let te=X.closest("tr"),Z=X.closest("thead")!==null,ne=false;te&&C.length>0&&C[0]===te&&(ne=true);let ae=false;if(te){let Ae=te.querySelectorAll("th, td");Ae.length>0&&Ae[0]===X&&(ae=true);}let ue="col";Z||ne?ue="col":ae&&(ue="row");let xe=uniqueSel(X),Ie=(X.textContent||"").trim().slice(0,60);f.push({selector:xe,attribute:"scope",currentValue:J,issueType:"missing_table_scope",wcag:"1.3.1",context:JSON.stringify({reason:"<th> missing scope attribute",inferred:ue,inThead:Z,firstRow:ne,firstCol:ae,headerText:Ie}),needsAI:false,fixValue:ue,outerHtml:(X.outerHTML||"").slice(0,300)});}}return f},Ph={name:"dataTables",cap:30,async detect(d){return d.evaluate(EI)}};var CI=async()=>{let f=["tab","button","menuitem","switch","checkbox","option","treeitem"],m=["aria-controls","aria-expanded","aria-haspopup","data-toggle","data-bs-toggle","data-target","data-bs-target"],p=x=>x.split("#")[0],h=p(document.URL);function b(x){let k=(x.getAttribute("href")||"").trim();if(!k||k==="#"||/^javascript:/i.test(k))return null;let T;try{T=new URL(k,document.baseURI);}catch{return null}return T.protocol!=="http:"&&T.protocol!=="https:"&&T.protocol!=="file:"||p(T.href)!==h||k.indexOf("#")===-1?null:T.hash.slice(1)}function v(x){return !(!x||x.toLowerCase()==="top"||x==="0"||x.charAt(0)==="/"||x.charAt(0)==="!"||x.indexOf("=")!==-1)}function w(x){let k=[x];try{let I=decodeURIComponent(x);I!==x&&k.push(I);}catch{}for(let I of k)if(document.getElementById(I))return true;let T=document.querySelectorAll("a[name]");for(let I of T){let P=I.getAttribute("name")||"";if(k.indexOf(P)!==-1)return true}return false}function C(){let x=[];for(let k of document.querySelectorAll('a[href], button, input:not([type="hidden" i]), select, textarea, summary, [tabindex]')){let T=k;if(T.disabled||T.hasAttribute("inert")||T.closest("[inert]"))continue;let I=T.getAttribute("tabindex");I!==null&&Number(I)<0||T.getClientRects().length===0||getComputedStyle(T).visibility==="hidden"||x.push(T);}return x}let A=3,D=3;function E(x,k){let T=k.indexOf(x);if(T<0||T>=A||k.length-T-1<D)return false;let I=document.querySelector('main, [role="main"]')||document.querySelector("h1");return !(I&&!(x.compareDocumentPosition(I)&Node.DOCUMENT_POSITION_FOLLOWING))}function F(){let x=[],k=C(),T=k.slice(0,A);for(let I of document.querySelectorAll("a[href]")){let P=I;if(T.indexOf(P)<0||isWidget(P))continue;let V=b(P);if(V===null||!v(V)||w(V))continue;let z=(P.getAttribute("role")||"").toLowerCase();if(f.indexOf(z)===-1&&!m.some(Y=>P.hasAttribute(Y))&&!(P.getClientRects().length===0||getComputedStyle(P).visibility==="hidden"||isHiddenFromAT(P))&&E(P,k)&&(x.push(P),x.length>=30))break}return x}if(F().length===0)return [];await new Promise(x=>setTimeout(x,500));let _=[];for(let x of F()){let k=(x.getAttribute("href")||"").trim(),T="#"+(b(x)||""),I=(x.textContent||"").trim().replace(/\s+/g," ").slice(0,60);_.push({selector:uniqueSel(x),attribute:"href",currentValue:k,issueType:"broken_anchor",wcag:"2.4.1",context:'in-page link "'+I+'" points to '+T+", which matches no id or a[name] in this page",needsAI:true,needsReview:true,reviewReason:"WCAG 2.4.1 Bypass Blocks: this link is one of the first focusable elements, ahead of the main content, and jumps to "+T+" but no element on the page has that id or name. Violation only when the link is the page's bypass mechanism (a skip link that should jump past repeated blocks), so activating it goes nowhere. Pass when it is anything else: a script-driven control or an ordinary link. A dead fragment on an ordinary link is not a 2.4.1 failure.",outerHtml:(x.outerHTML||"").slice(0,300)});}return _},Mh={name:"deadAnchors",cap:30,async detect(d){return d.evaluate(CI)}};var SI=()=>{let f=[];for(let m of document.querySelectorAll("img[alt]")){if(f.length>=30)break;let p=m;if((p.getAttribute("alt")||"").trim()!=="")continue;let h=(p.getAttribute("title")||"").trim().replace(/\s+/g," ");if(!h||isWidget(p))continue;let b=(p.getAttribute("role")||"").toLowerCase();b==="presentation"||b==="none"||p.getAttribute("aria-hidden")==="true"||p.closest('[aria-hidden="true"]')||(p.getAttribute("aria-label")||"").trim()||(p.getAttribute("aria-labelledby")||"").trim()||isVisible(p)&&f.push({selector:uniqueSel(p),attribute:"data-asw-decorative-title",currentValue:"",issueType:"decorative_image_with_title",wcag:"1.1.1",context:'image with alt="" also has title="'+h.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 "'+h.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:(p.outerHTML||"").slice(0,300)});}return f},Oh={name:"decorativeImageTitle",cap:30,async detect(d){return d.evaluate(SI)}};var kI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI], [id*=ae_], [class*=ae-exclude]",m=[],p='a[href], button, input, select, textarea, summary, label, iframe, audio[controls], video[controls], [contenteditable=""], [contenteditable="true"], [tabindex]:not([tabindex="-1"]), [role="button"], [role="link"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="tab"], [role="option"], [role="checkbox"], [role="radio"], [role="switch"], [role="combobox"], [role="textbox"], [role="searchbox"], [role="slider"], [role="spinbutton"]',h=_=>{try{return !!(_.querySelector&&_.querySelector(p))}catch{return false}},b=new Set(["fa","fas","far","fab","fal","fad","material-icons","material-symbols","bi","glyphicon"]),v=["fa-","bi-","icon-","icofont-","dashicons-","heroicon","feather-","lucide-"],w=["spinner","loading","spin","loader","pulse"],C=document.querySelectorAll('i, span[class*="icon"], span[class*="fa-"], span[class*="bi-"], span[class*="material"]');for(let _ of C){if(m.length>=50)break;if(_.closest(d)||isHiddenFromAT(_)||!isVisible(_))continue;let x=_.className&&typeof _.className=="string"?_.className.toLowerCase():"";if(!x.split(/\s+/).filter(Boolean).some(z=>b.has(z)||v.some(Y=>z.startsWith(Y)))||_.closest(p)||h(_)||Array.from(_.children).some(z=>/[\p{L}\p{N}]/u.test(z.textContent||"")))continue;let P=w.some(z=>x.includes(z)),V=uniqueSel(_);m.push({selector:V,attribute:"aria-hidden",currentValue:"",issueType:"decorative_icon",wcag:"1.1.1",context:P?"spinner/loader icon":"icon classes: "+x.slice(0,80),needsAI:false,fixValue:"true",outerHtml:_.outerHTML.slice(0,300)});}let A=document.querySelectorAll("svg");for(let _ of A){if(m.length>=50)break;if(_.closest(d)||isHiddenFromAT(_)||!isVisible(_)||_.closest(p)||h(_))continue;let x=_.getAttribute("aria-label")||"",k=_.getAttribute("aria-labelledby")||"",T=_.querySelector("title"),I=T?(T.textContent||"").trim():"",P=_.getAttribute("role");if(x.trim()||k.trim()||I||P==="img")continue;let V=_.getBoundingClientRect(),z=V.width<=16&&V.height<=16,Y=_.parentElement?(_.parentElement.textContent||"").trim().replace(/\s+/g," "):"",q=V.width<=4||V.height<=4,M=_.getAttribute("preserveAspectRatio")==="none";if(!z&&Y.length<=3&&!q&&!M)continue;let O=uniqueSel(_);m.push({selector:O,attribute:"aria-hidden",currentValue:"",issueType:"decorative_icon",wcag:"1.1.1",context:"decorative SVG without title or aria-label",needsAI:false,fixValue:"true",outerHtml:_.outerHTML.slice(0,300)});}let D=_=>_.indexOf(":")!==-1?false:/^(?:[a-z0-9]+[-_])*(?:disabled|inactive)$/i.test(_),E=document.querySelectorAll('[class*="disabled"], [class*="inactive"], [aria-disabled="true"]');for(let _ of E){if(m.length>=50)break;if(_.closest(d)||isHiddenFromAT(_))continue;let x=_.tagName.toLowerCase();if(!(x==="a"||x==="button"||x==="input"||x==="select"||x==="textarea"||_.getAttribute("role")==="button"||_.getAttribute("role")==="link"||_.getAttribute("role")==="tab")||_.hasAttribute("disabled"))continue;let T=_.className&&typeof _.className=="string"?_.className:"",I=T.split(/\s+/).some(D),P=_.getAttribute("aria-disabled")==="true",V=getComputedStyle(_).pointerEvents==="none";if(!P&&!(I&&V))continue;let z=_.getAttribute("tabindex")!=="-1"||h(_),Y=uniqueSel(_);m.push({selector:Y,attribute:"aria-hidden",currentValue:"",issueType:"decorative_icon",wcag:"1.1.1",context:"disabled/inactive element still exposed to assistive technology: "+T.toLowerCase().slice(0,60),needsAI:false,fixValue:"true",...z?{needsReview:true,reviewReason:"element is still keyboard-focusable; aria-hidden would create a hidden focusable element \u2014 remove it from the tab order first or confirm intent"}:{},outerHtml:_.outerHTML.slice(0,300)});}let F=document.querySelectorAll('[class*="visuallyHidden"], [class*="visually-hidden"], [class*="sr-only"], [class*="screenreader"]');for(let _ of F){if(m.length>=50)break;if(_.closest(d)||isHiddenFromAT(_))continue;let x=_.querySelectorAll('a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])');if(x.length===0)continue;let k=uniqueSel(_);m.push({selector:k,attribute:"aria-hidden",currentValue:"",issueType:"decorative_icon",wcag:"1.1.1",context:"sr-only/visually-hidden container with "+x.length+" focusable children (keyboard trap risk)",needsAI:false,fixValue:"true",needsReview:true,reviewReason:"container has "+x.length+' keyboard-focusable descendant(s); aria-hidden="true" alone would create hidden focusables \u2014 also set tabindex="-1" on those children or confirm intent',outerHtml:_.outerHTML.slice(0,300)});}return m},Nh={name:"decorativeIcons",cap:50,async detect(d){return d.evaluate(kI)}};var TI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=new Map,h=document.querySelectorAll("[id]");for(let b of h){if(b.closest(d))continue;let v=(b.getAttribute("id")||"").trim();if(!v)continue;let w=p.get(v);w?w.push(b):p.set(v,[b]);}for(let[b,v]of p)if(!(v.length<=1)){if(m.length<50){let w=v[0];m.push({selector:typeof uniqueSel=="function"?uniqueSel(w):w.tagName.toLowerCase(),attribute:"id",currentValue:b,issueType:"duplicate_id",wcag:"4.1.1",context:'id "'+b+'" is shared by '+v.length+" elements; this is the canonical first occurrence (kept \u2014 references resolve here). Later occurrences carry rename fixes.",needsAI:false,needsReview:true,reviewReason:"first occurrence of a duplicated id \u2014 shown for completeness; renaming it would break references, so the fix targets the later occurrences",outerHtml:(w.outerHTML||"").slice(0,300)});}for(let w=1;w<v.length&&!(m.length>=50);w++){let C=v[w],A=w+1,D=b+"-"+A,E=C.tagName.toLowerCase(),F=C.parentElement,_=E;if(F){let x=Array.from(F.children).filter(T=>T.tagName===C.tagName);if(x.length>1){let T=x.indexOf(C)+1;_=E+":nth-of-type("+T+")";}let k=F.tagName.toLowerCase();if(F.id&&F.id!==b)_="#"+CSS.escape(F.id)+" > "+_;else {let T=F.parentElement;if(T){let I=Array.from(T.children).filter(P=>P.tagName===F.tagName);if(I.length>1){let P=I.indexOf(F)+1;_=k+":nth-of-type("+P+") > "+_;}else _=k+" > "+_;}}}m.push({selector:_,attribute:"id",currentValue:b,issueType:"duplicate_id",wcag:"4.1.1",context:"duplicate #"+A+' of id="'+b+'" | tag: <'+E+">",needsAI:false,fixValue:D});}}return m},qh={name:"duplicateIds",cap:50,async detect(d){return d.evaluate(TI)}};var RI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",f=/^[^\p{L}\p{N}\s]*$/u,m=/^[\s\u00A0\u2000-\u200F\u2028-\u202F]*$/,h=[],b=document.querySelectorAll("a");for(let v of b){if(h.length>=50)break;if(v.closest(d)||v.getAttribute("aria-hidden")==="true"||v.getAttribute("role")==="presentation"||v.closest('[aria-hidden="true"]')||!isVisible(v))continue;let w=getAccessibleName(v);if(w&&w.length>0&&!m.test(w)&&!f.test(w))continue;let C=v.querySelectorAll("img[alt]"),A="";for(let z of C){let Y=(z.getAttribute("alt")||"").trim();Y&&(A+=Y+" ");}if(A.trim())continue;let D=v.getAttribute("aria-labelledby");if(D&&typeof __resolveIdRefs=="function"&&__resolveIdRefs(D))continue;let E=uniqueSel(v),F=v.getAttribute("href")||"",_=(v.textContent||"").trim(),x=getNearbyContext(v),k="";_&&m.test(_)?k="[whitespace only]":_&&f.test(_)&&(k=_);let T="",I=true;if(F&&F!=="#"&&!F.startsWith("javascript:")){if(F.startsWith("mailto:")){let z=F.slice(7).split("?")[0];z&&z.includes("@")&&(T="Email "+z,I=false);}else if(F.startsWith("tel:")){let z=F.slice(4);try{z=decodeURIComponent(z);}catch{}z=z.replace(/^\+/,"").trim(),z&&(T="Call "+z,I=false);}}let P=[];v.closest("nav")&&P.push("inside nav"),x.nearbyHeading&&P.push("heading: "+x.nearbyHeading),F&&P.push("href: "+F.slice(0,120)),P.push("parent: "+x.parentTag);let V={selector:E,attribute:"aria-label",currentValue:k,issueType:"empty_link",wcag:"2.4.4",context:P.join(" | "),needsAI:I,outerHtml:v.outerHTML.slice(0,300)};!I&&T&&(V.fixValue=T),h.push(V);}return h},Bh={name:"emptyLinks",cap:50,async detect(d){return d.evaluate(RI)}};var FI=()=>{let f=[],m=new Set;function p(D){return (D||"").trim()}function h(D){let E=p(D.getAttribute("aria-label")||"");if(E)return E;let F=D.getAttribute("aria-labelledby");if(F){let x=F.split(/\s+/),k="";for(let T=0;T<x.length;T++){let I=document.getElementById(x[T]);I&&(k+=" "+(I.textContent||""));}if(p(k))return p(k)}let _=p(D.getAttribute("title")||"");return _||""}let b=document.querySelectorAll("fieldset");for(let D=0;D<b.length&&!(f.length>=30);D++){let E=b[D];if(isWidget(E)||!isVisible(E)||isHiddenFromAT(E))continue;if(h(E)){m.add(E);continue}let F=null,_=E.querySelectorAll("legend");for(let V=0;V<_.length;V++)if(_[V].closest("fieldset")===E){F=_[V];break}let x=F!==null,k=F?p(F.textContent||""):"";if(x&&k){m.add(E);continue}let T=getNearbyContext(E),I=E.querySelectorAll("input, select, textarea"),P=uniqueSel(E);f.push({selector:P,attribute:"aria-label",currentValue:"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:x?"fieldset has empty <legend>":"fieldset missing <legend>",controlCount:I.length,nearbyHeading:T.nearbyHeading,parentTag:T.parentTag}),needsAI:true,outerHtml:(E.outerHTML||"").slice(0,300)}),m.add(E);}let v=document.querySelectorAll('[role="group"], [role="radiogroup"]');for(let D=0;D<v.length&&!(f.length>=30);D++){let E=v[D];if(isWidget(E)||!isVisible(E)||isHiddenFromAT(E)||m.has(E))continue;if(h(E)){m.add(E);continue}let F=E.getAttribute("role")||"",_=getNearbyContext(E),x=E.querySelectorAll("input, select, textarea");if(F==="group"&&E.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 k=uniqueSel(E);f.push({selector:k,attribute:"aria-label",currentValue:"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:'role="'+F+'" container without accessible name',role:F,controlCount:x.length,nearbyHeading:_.nearbyHeading,parentTag:_.parentTag}),needsAI:true,outerHtml:(E.outerHTML||"").slice(0,300)}),m.add(E);}let w={},C=document.querySelectorAll('input[type="radio"], input[type="checkbox"]');for(let D=0;D<C.length;D++){let E=C[D];if(isWidget(E)||!isVisible(E)||isHiddenFromAT(E))continue;let F=E.getAttribute("name")||"";if(!F)continue;let _=E.closest("form"),x=_?_.getAttribute("id")||_.getAttribute("action")||_.tagName:"no-form",k=(E.getAttribute("type")||"").toLowerCase(),T=x+"::"+k+"::"+F;w[T]||(w[T]=[]),w[T].push(E);}let A=Object.keys(w);for(let D=0;D<A.length&&!(f.length>=30);D++){let E=w[A[D]];if(E.length<3)continue;let F=E[0],_=F.closest('fieldset, [role="group"], [role="radiogroup"]'),x=false;if(_){x=true;for(let z=1;z<E.length;z++)if(!_.contains(E[z])){x=false;break}}if(x&&_)continue;let k=F.parentElement;for(;k&&k!==document.body;){let z=true;for(let Y=1;Y<E.length;Y++)if(!k.contains(E[Y])){z=false;break}if(z)break;k=k.parentElement;}if(!k||k===document.body||m.has(k))continue;let T=(F.getAttribute("type")||"").toLowerCase(),I=F.getAttribute("name")||"",P=getNearbyContext(F),V=uniqueSel(k);f.push({selector:V,attribute:"role",currentValue:k.getAttribute("role")||"",issueType:"missing_fieldset_legend",wcag:"1.3.1",context:JSON.stringify({reason:"unwrapped "+T+" group ("+E.length+' inputs share name="'+I+'")',inputType:T,inputCount:E.length,name:I,nearbyHeading:P.nearbyHeading,parentTag:P.parentTag}),needsAI:false,fixValue:T==="radio"?"radiogroup":"group",outerHtml:(k.outerHTML||"").slice(0,300)}),m.add(k);}return f},Hh={name:"fieldsetLegend",cap:30,async detect(d){return d.evaluate(FI)}};var II=()=>{let d=[],f=document.querySelectorAll('header, nav, div, [class*="header"], [class*="navbar"], [class*="sticky"], [role="banner"]'),m=0;for(let p of Array.from(f)){let h=getComputedStyle(p);if(h.display==="none"||h.visibility==="hidden"||h.position!=="sticky"&&h.position!=="fixed")continue;let b=p.getBoundingClientRect();if(b.top>50||b.bottom<=0)continue;let v=Math.round(b.height);v<40||v>240||v>m&&(m=v);}if(m>0){let p=window.scrollX,h=window.scrollY,b=0,v=0;try{let C=[],A=new Set;document.querySelectorAll('a[href^="#"]').forEach(D=>{let E=D.getAttribute("href").slice(1);if(!E)return;let F=document.getElementById(E);F&&!A.has(F)&&(A.add(F),C.push(F));});for(let D of C){if(v>=8)break;let E=getComputedStyle(D);if(E.display==="none"||E.visibility==="hidden")continue;v++,D.scrollIntoView({block:"start"});let F=D.getBoundingClientRect(),_=Math.max(F.height,1);Math.max(0,Math.min(F.bottom,m)-Math.max(F.top,0))/Math.min(_,m)>=.5&&b++;}}catch{}try{window.scrollTo(p,h);}catch{}let w=`scroll-margin-top: ${m+8}px; scroll-padding-top: ${m+8}px;`;v>0&&b>0?d.push({selector:"html",attribute:"style",currentValue:"",issueType:"focus_obscured_by_sticky",wcag:"2.4.11",context:`sticky header height: ${m}px \u2014 ${b}/${v} in-page anchor targets land under it on jump`,needsAI:false,fixValue:w}):v===0&&d.push({selector:"html",attribute:"style",currentValue:"",issueType:"focus_obscured_by_sticky",wcag:"2.4.11",context:`sticky header height: ${m}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 d},Vh={name:"focusObscured",async detect(d){return d.evaluate(II)}};var $h={name:"focusVisible",cap:40,async detect(d){let f=typeof d.keyboard?.press=="function";try{await d.evaluate(()=>{let m=document.activeElement;window[Symbol.for("wa.prevFocus")]=m&&m!==document.body&&m!==document.documentElement?m:null,window[Symbol.for("wa.prevScroll")]=[window.scrollX,window.scrollY];let p=getSelection();window[Symbol.for("wa.prevSelection")]=p?Array.from({length:p.rangeCount},(h,b)=>p.getRangeAt(b).cloneRange()):[];});}catch{}if(f)try{await d.keyboard.press("Tab");}catch{}return d.evaluate(m=>{let h=[],b=["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 v=document.querySelectorAll(b),w=Symbol.for("wa.prevFocus"),C=window[w]??null;try{delete window[w];}catch{}for(let A of v){if(h.length>=40)break;if(typeof isWidget=="function"&&isWidget(A)||typeof isHiddenFromAT=="function"&&isHiddenFromAT(A)||typeof isVisible=="function"&&!isVisible(A)||!A.offsetParent&&A.tagName!=="BODY")continue;let D=getComputedStyle(A),E=D.outline,F=D.outlineWidth,_=D.outlineStyle,x=D.boxShadow,k=D.border,T=D.backgroundColor;try{A.focus({preventScroll:!0});}catch{continue}if(document.activeElement!==A)continue;let I=getComputedStyle(A),P=I.outline,V=(I.outlineStyle||"").toLowerCase(),z=parseFloat(I.outlineWidth||"0"),Y=I.boxShadow,q=I.border,M=I.backgroundColor,O=P!==E,B=V!=="none"&&V!=="hidden"&&z>0;if(O&&B||Y!==x&&Y!=="none"&&Y!==""||q!==k||M!==T||parseFloat(F)>0&&_!=="none")continue;let Z=typeof uniqueSel=="function"?uniqueSel(A):A.tagName.toLowerCase();h.push({selector:Z+":focus-visible",attribute:"style",currentValue:_+" "+F,issueType:"focus_not_visible",wcag:"2.4.7",context:`${A.tagName.toLowerCase()} has no visible focus indicator \u2014 outline, box-shadow, border, and background all unchanged on focus`,needsAI:false,fixValue:"outline: 2px solid #2563eb !important;outline-offset: 2px !important;",outerHtml:A.outerHTML.slice(0,200),...m?{}:{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{C&&C.isConnected&&C.focus({preventScroll:!0});}catch{}try{let A=Symbol.for("wa.prevScroll"),D=window[A];delete window[A],D&&window.scrollTo({left:D[0],top:D[1],behavior:"instant"});}catch{}try{let A=Symbol.for("wa.prevSelection"),D=window[A];delete window[A];let E=getSelection();if(E&&D){E.removeAllRanges();for(let F of D)E.addRange(F);}}catch{}return h},f)}};var LI=()=>{let f=[],m=["new","register","signup","sign-up","sign_up","create","change","reset"],p=["confirm","verify","retype","re-type","repeat","again"];function h(F){if(!F)return false;let _=" "+((F.id||"")+" "+(F.className||"")+" "+(F.getAttribute("name")||"")+" "+(F.getAttribute("action")||"")).toLowerCase()+" ";for(let x=0;x<m.length;x++)if(_.indexOf(m[x])!==-1)return true;return false}function b(F){let _=((F.getAttribute("name")||"")+" "+(F.getAttribute("id")||"")+" "+(F.getAttribute("placeholder")||"")+" "+(F.getAttribute("aria-label")||"")).toLowerCase();for(let x=0;x<p.length;x++)if(_.indexOf(p[x])!==-1)return true;return false}let v=document.querySelectorAll("input[pattern]");for(let F of v){if(f.length>=30)break;let _=F;if(isWidget(_)||isHiddenFromAT(_)||!isVisible(_)||(_.getAttribute("title")||"").trim()||(_.getAttribute("aria-describedby")||"").trim())continue;let T=uniqueSel(_),I=(_.getAttribute("pattern")||"").slice(0,80),P=_.getAttribute("name")||"",V=_.getAttribute("placeholder")||"";f.push({selector:T,attribute:"title",currentValue:"",issueType:"missing_pattern_title",wcag:"3.3.2",context:"pattern: "+I+" | name: "+P+" | placeholder: "+V,needsAI:true,outerHtml:(_.outerHTML||"").slice(0,300)});}let w=document.querySelectorAll('input[type="password"], input[type="Password"]');for(let F of w){if(f.length>=30)break;let _=F;if(isWidget(_)||isHiddenFromAT(_)||!isVisible(_))continue;let x=(_.getAttribute("autocomplete")||"").trim().toLowerCase();if(b(_)){if(x==="new-password")continue;let V=uniqueSel(_);f.push({selector:V,attribute:"autocomplete",currentValue:x,issueType:"missing_autocomplete",wcag:"1.3.5",context:"confirm password field | name: "+(_.getAttribute("name")||"")+" | id: "+(_.getAttribute("id")||""),needsAI:false,fixValue:"new-password",outerHtml:(_.outerHTML||"").slice(0,300)});continue}if(x)continue;let T=_.form||_.closest("form"),I=h(T),P=uniqueSel(_);f.push({selector:P,attribute:"autocomplete",currentValue:"",issueType:"missing_autocomplete",wcag:"1.3.5",context:(I?"new/signup/change password form":"login form")+" | name: "+(_.getAttribute("name")||"")+" | id: "+(_.getAttribute("id")||""),needsAI:false,fixValue:I?"new-password":"current-password",outerHtml:(_.outerHTML||"").slice(0,300)});}let C=document.querySelectorAll("form"),A=/\*|\brequired\b|\bmandatory\b/i;for(let F of C){if(f.length>=30)break;let _=F;if(isWidget(_)||!isVisible(_))continue;let x=_.querySelectorAll("input[required], select[required], textarea[required]");if(!x.length)continue;let k=0;for(let z of x)isVisible(z)&&k++;if(k===0)continue;let T=_.querySelectorAll('input:not([type="hidden"]):not([type="submit"]):not([type="button"]), select, textarea'),I=0;for(let z of T)isVisible(z)&&I++;if(k>=I||(_.getAttribute("data-asw-required-hint")||"").trim())continue;let P=(_.textContent||"").trim();if(A.test(P))continue;let V=uniqueSel(_);f.push({selector:V,attribute:"data-asw-required-hint",currentValue:"",issueType:"missing_required_indicator",wcag:"3.3.2",context:`form has ${k} required input(s) but no visible "*" / "required" / "mandatory" marker`,needsAI:true,outerHtml:(_.outerHTML||"").slice(0,300)});}let D='input[type="submit" i], input[type="image" i], button:not([type]), button[type="submit" i], button[type=""]',E='input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), select, textarea';for(let F of C){if(f.length>=30)break;let _=F;if(isWidget(_)||!isVisible(_)||isHiddenFromAT(_))continue;let x=[];for(let z of _.querySelectorAll(E))isVisible(z)&&x.push(z);if(x.length===0||_.querySelector(D))continue;let k=_.getAttribute("id");if(k){let z=false;for(let Y of document.querySelectorAll(D))if(Y.getAttribute("form")===k){z=true;break}if(z)continue}if(((_.getAttribute("role")||"").toLowerCase()==="search"||!!_.closest('[role="search"]'))&&x.length===1)continue;let I=x.slice(0,4).map(z=>z.tagName.toLowerCase()+(z.tagName==="INPUT"?"["+(z.getAttribute("type")||"text")+"]":"")).join(", "),P=[];for(let z of _.querySelectorAll('button:not([type="reset" i]), input[type="button" i], [role="button"]')){if(P.length>=3)break;let Y=z;if(!isVisible(Y))continue;let q=((Y.tagName==="INPUT"?Y.getAttribute("value"):Y.textContent)||Y.getAttribute("aria-label")||"").trim().replace(/\s+/g," ").slice(0,30);P.push('"'+q+'"');}if(P.length&&!(_.getAttribute("action")||"").trim())continue;let V=P.length?" Buttons present that are not a submit control (type=button or role=button): "+P.join(", ")+".":"";f.push({selector:uniqueSel(_),attribute:"data-asw-submit-control",currentValue:"",issueType:"form_missing_submit",wcag:"3.2.2",context:`form with ${x.length} visible field(s) (${I}) and no submit control`,needsAI:true,needsReview:true,reviewReason:"WCAG 3.2.2 On Input: this form has "+x.length+" visible field(s) ("+I+") 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."+V,outerHtml:(_.outerHTML||"").slice(0,300)});}return f},jh={name:"formAttributes",cap:30,async detect(d){return d.evaluate(LI)}};var PI=()=>{let d=document.documentElement;return d?(d.getAttribute("lang")||"").trim()?[]:[{selector:"html",attribute:"lang",currentValue:"",issueType:"missing_document_language",wcag:"3.1.1",context:"Document language not declared",needsAI:false,fixValue:"en"}]:[]},zh={name:"htmlLang",async detect(d){return d.evaluate(PI)}};var MI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=[{pattern:"youtube",title:"YouTube video"},{pattern:"youtu.be",title:"YouTube video"},{pattern:"vimeo",title:"Vimeo video"},{pattern:"google.com/maps",title:"Google Maps"},{pattern:"pay.google.com",title:"Google Pay"},{pattern:"recaptcha",title:"reCAPTCHA verification"},{pattern:"facebook",title:"Facebook widget"},{pattern:"twitter",title:"Twitter widget"},{pattern:"x.com",title:"Twitter widget"},{pattern:"instagram",title:"Instagram widget"},{pattern:"calendly",title:"Scheduling widget"}],h=/^(iframe|embed|widget|frame|content|untitled)$/i,b=document.querySelectorAll("iframe");for(let v of b){if(m.length>=50)break;if(v.closest(d))continue;let w=(v.getAttribute("aria-hidden")||"").trim(),C=(v.getAttribute("role")||"").trim().toLowerCase();if(w==="true"||C==="presentation")continue;let A=getComputedStyle(v);if(v.getClientRects().length===0||A.visibility==="hidden"||A.visibility==="collapse"||(v.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0)continue;let D=(v.getAttribute("title")||"").trim(),E=D.length===0,F=!E&&(D.length<3||h.test(D));if(!E&&!F)continue;let _=(v.getAttribute("src")||"").toLowerCase(),x=uniqueSel(v),k=getNearbyContext(v),T="src: "+_.slice(0,120)+(k.nearbyHeading?" | heading: "+k.nearbyHeading:""),I=false;for(let P of p)if(_.includes(P.pattern)){m.push({selector:x,attribute:"title",currentValue:D,issueType:"missing_label",wcag:"4.1.2",context:T,needsAI:false,fixValue:P.title,outerHtml:v.outerHTML.slice(0,300)}),I=true;break}!I&&E&&m.push({selector:x,attribute:"title",currentValue:D,issueType:"missing_label",wcag:"4.1.2",context:T,needsAI:true,outerHtml:v.outerHTML.slice(0,300)});}return m},Gh={name:"iframeTitle",cap:50,async detect(d){return d.evaluate(MI)}};var OI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",f=["hidden","submit","button","reset","image","checkbox","radio","file","range","color"],p=[],h={email:"email",tel:"tel",password:"current-password"},b=[{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"}],v=document.querySelectorAll("input, select, textarea");for(let w of v){if(p.length>=50)break;if(w.closest(d))continue;let C=w,A=(C.getAttribute("type")||"text").toLowerCase();if(f.includes(A)||C.getAttribute("autocomplete")||!isVisible(C))continue;let D="";if(h[A]&&(D=h[A]),!D){let F=(C.getAttribute("name")||"").toLowerCase(),_=(C.getAttribute("id")||"").toLowerCase(),x=(C.getAttribute("placeholder")||"").toLowerCase(),k=F+" "+_+" "+x;for(let T of b)if(k.includes(T.pattern)){D=T.autocomplete;break}}if(!D)continue;if(D==="country"){let F=false;if(C.tagName==="SELECT"){let _=Array.from(C.options).map(x=>(x.value||"").trim()).filter(Boolean);F=_.length>0&&_.every(x=>/^[A-Za-z]{2}$/.test(x));}F||(D="country-name");}let E=uniqueSel(C);p.push({selector:E,attribute:"autocomplete",currentValue:"",issueType:"identify_input_purpose",wcag:"1.3.5",context:"type: "+A+" | name: "+(C.getAttribute("name")||"")+" | id: "+(C.getAttribute("id")||""),needsAI:false,fixValue:D});}return p},Uh={name:"inputPurpose",cap:50,async detect(d){return d.evaluate(OI)}};var NI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=['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 h(v){let w=v.getBoundingClientRect();if(w.width===0&&w.height===0)return false;let C=-window.scrollX,A=-window.scrollY,D=document.documentElement,E=getComputedStyle(v).position;if(E==="fixed")return false;let F=E==="absolute";for(let _=v.parentElement;_&&_!==document.body&&_!==D;_=_.parentElement){let x=getComputedStyle(_);if(F){if(x.position==="static")continue;F=false;}if(/auto|scroll/.test(x.overflowX+" "+x.overflowY))return false;let k=x.overflowX==="hidden"||x.overflowX==="clip",T=x.overflowY==="hidden"||x.overflowY==="clip";if(!k&&!T)continue;let I=_.getBoundingClientRect();if(k&&(w.right<=I.left||w.left>=I.right)||T&&(w.bottom<=I.top||w.top>=I.bottom))return true;if(E=x.position,E==="fixed")return false;E==="absolute"&&(F=true);}return w.right<=C||w.bottom<=A||w.left>=C+D.scrollWidth||w.top>=A+D.scrollHeight}let b=document.querySelectorAll(p);for(let v of b){if(m.length>=30)break;if(v.closest(d)||!v.hasAttribute("tabindex"))continue;let w=v.getAttribute("tabindex")||"",C=parseInt(w,10);if(!Number.isFinite(C)||C===0||v.getAttribute("aria-disabled")==="true"||v.getAttribute("aria-hidden")==="true"||v.closest('[aria-hidden="true"]')||v.closest("[hidden]"))continue;let A=v.closest('[role="dialog"],[role="alertdialog"],dialog,[role="menu"],[role="listbox"]');if(A&&!(A.hasAttribute("open")||A.getAttribute("aria-modal")==="true"||A.getAttribute("aria-hidden")!=="true")||typeof isVisible=="function"&&!isVisible(v)||C<0&&h(v))continue;let D=(v.getAttribute("role")||"").toLowerCase();if(C<0&&v.closest('[role="tablist"],[role="menu"],[role="menubar"],[role="listbox"],[role="tree"],[role="treegrid"],[role="grid"],[role="radiogroup"],[role="toolbar"]'))continue;let F=typeof uniqueSel=="function"?uniqueSel(v):"",_=typeof getNearbyContext=="function"?getNearbyContext(v):{parentTag:v.tagName.toLowerCase(),nearbyHeading:""},x,k;C<0?(x="keyboard_trap",k="2.1.1"):(x="focus_order_disruption",k="2.4.3");let T=[];T.push("tabindex: "+C),T.push("tag: "+v.tagName.toLowerCase()),D&&T.push("role: "+D),_.nearbyHeading&&T.push("heading: "+_.nearbyHeading),T.push("parent: "+_.parentTag),m.push({selector:F,attribute:"tabindex",currentValue:String(C),issueType:x,wcag:k,context:T.join(" | "),needsAI:false,fixValue:"0",outerHtml:(v.outerHTML||"").slice(0,300)});}return m},Wh={name:"keyboardTrap",cap:30,async detect(d){return d.evaluate(NI)}};var qI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],h=document.querySelectorAll('button, a[href], [role="button"], [role="link"], input[type="submit"], input[type="button"]');for(let b of Array.from(h)){if(m.length>=40)break;if(b.closest(d)||typeof isVisible=="function"&&!isVisible(b))continue;let v="",w=[],C=[];try{let j=/(?:^|[\s_-])(?:icon|material-icons|material-symbols(?:-\w+)?|fa|fas|far|fab|fal|glyphicon|dashicons)(?:[\s_-]|$)/i,X=/icon|awesome|glyph|material symbols|dashicons/i,J=!1;try{J=X.test(getComputedStyle(b).fontFamily||"");}catch{}let te=document.createTreeWalker(b,NodeFilter.SHOW_TEXT),Z;for(;Z=te.nextNode();){let xe=Z.parentElement;if(!xe)continue;let Ie=(Z.textContent||"").trim();if(!Ie||xe===b&&J)continue;let Ae=!1,Se=!1;for(let $e=xe;$e&&$e!==b;$e=$e.parentElement){if($e.tagName==="KBD"&&(Se=!0),$e.getAttribute("aria-hidden")==="true"){Ae=!0;break}if(j.test($e.className||"")||j.test($e.id||"")){Ae=!0;break}try{let Le=getComputedStyle($e);if(Le.display==="none"||Le.visibility==="hidden"){Ae=!0;break}if(parseFloat(Le.opacity||"1")===0){Ae=!0;break}if(X.test(Le.fontFamily||"")){Ae=!0;break}}catch{}}!Ae&&/[\p{L}\p{N}]/u.test(Ie)&&C.push({text:Ie,kbd:Se});}let ne=0,ae=C.length;for(;ne<ae&&C[ne].kbd;)ne++;for(;ae>ne&&C[ae-1].kbd;)ae--;let ue=ne<ae?C.slice(ne,ae):C;for(let xe of ue)w.push(xe.text);v=w.join(" ").trim().toLowerCase();}catch{v=((b.innerText!=null?b.innerText:b.textContent)||"").trim().toLowerCase();}if(!v||!/[\p{L}\p{N}]/u.test(v)||/^\p{L}$/u.test(v))continue;let D=/[\p{L}\p{N}\p{M}]/u,E=(b.getAttribute("aria-label")||"").trim().toLowerCase();if(!E){let j=b.getAttribute("aria-labelledby");j&&(E=(typeof __resolveIdRefs=="function"?__resolveIdRefs(j):"").toLowerCase());}if(!E)continue;let F=v.replace(/\s+/g," ").normalize("NFC"),_=E.replace(/\s+/g," ").normalize("NFC"),x=/[\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,k=(j,X)=>!j||!D.test(j)||x.test(j)||x.test(X),T=(j,X)=>{if(X<=0)return "";let J=j.charCodeAt(X-1);return J>=56320&&J<=57343&&X>=2?j.slice(X-2,X):j.charAt(X-1)},I=(j,X)=>{let J=j.codePointAt(X);return J===void 0?"":String.fromCodePoint(J)},P=F.substring(0,40),V=F.length>=40,z=I(P,0),Y=T(P,P.length),q=false;for(let j=0;!q;){let X=_.indexOf(P,j);if(X<0)break;k(T(_,X),z)&&(V||k(I(_,X+P.length),Y))&&(q=true),j=X+1;}if(q)continue;if(w.length>1){let j=true,X=0;for(let J of w){let te=J.replace(/\s+/g," ").trim().normalize("NFC").toLowerCase();if(!te)continue;let Z=te.slice(0,40),ne=-1;for(let ae=X;;){let ue=_.indexOf(Z,ae);if(ue<0)break;let xe=k(T(_,ue),I(Z,0)),Ie=Z.length>=40||k(I(_,ue+Z.length),T(Z,Z.length));if(xe&&Ie){ne=ue;break}ae=ue+1;}if(ne<0){j=false;break}X=ne+Z.length;}if(j)continue}let M=typeof uniqueSel=="function"?uniqueSel(b):"",O=typeof getNearbyContext=="function"?getNearbyContext(b):{parentTag:b.tagName.toLowerCase(),nearbyHeading:""},B=[];B.push("visible: "+v.slice(0,40)),B.push("aria-label: "+E.slice(0,60)),O.nearbyHeading&&B.push("heading: "+O.nearbyHeading),B.push("parent: "+O.parentTag),m.push({selector:M,attribute:"aria-label",currentValue:E,issueType:"label_in_name",wcag:"2.5.3",context:B.join(" | "),needsAI:true,outerHtml:(b.outerHTML||"").slice(0,300)});}return m},Xh={name:"labelInName",cap:40,async detect(d){return d.evaluate(qI)}};var BI=()=>{function d(A){let D=A.closest("section,article,div,nav,main,aside,header,footer"),E=D?D.querySelector("h1,h2,h3,h4,h5,h6"):null;return E?(E.textContent||"").trim().slice(0,80):""}let f="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude]",m=50,p=[],h=document.querySelectorAll("div, section, ul, ol");for(let A of h){if(p.length>=m)break;if(A.closest(f)||!isVisible(A)||isHiddenFromAT(A)||A.tagName.toLowerCase()==="nav")continue;let D=A.getAttribute("role");if(D&&D!=="navigation")continue;let E=(A.className&&typeof A.className=="string"?A.className:"").toLowerCase(),F=(A.id||"").toLowerCase();if(!(E.includes("nav")||E.includes("menu")||E.includes("navigation")||F.includes("nav")||F.includes("menu")||F.includes("navigation"))||A.closest('nav, [role="navigation"]'))continue;let x=Array.from(A.querySelectorAll('nav, [role="navigation"]')).filter(z=>isVisible(z)&&!isHiddenFromAT(z)),k=Array.from(A.querySelectorAll("a[href]")).filter(z=>!x.some(Y=>Y.contains(z)));if(k.length<3)continue;let T=A.closest('header, [role="banner"], footer, [role="contentinfo"]'),P=!!T&&Array.from(T.querySelectorAll('nav, [role="navigation"]')).some(z=>!A.contains(z)&&isVisible(z)&&!isHiddenFromAT(z))||x.length>0,V=uniqueSel(A);p.push({selector:V,attribute:"role",currentValue:"",issueType:"missing_landmark",wcag:"1.3.1",context:JSON.stringify({tag:A.tagName.toLowerCase(),reason:'navigation-like container missing role="navigation"',linkCount:k.length,classes:E.slice(0,80)}),needsAI:false,fixValue:"navigation",...P?{needsReview:true,reviewReason:x.length>0?"this container already holds a navigation landmark \u2014 confirm the links outside it are a separate navigation block before adding a second one":"this header/footer region already has a navigation landmark \u2014 confirm these links are a separate navigation block before adding a second one"}:{},outerHtml:A.outerHTML.slice(0,300)});}let b=document.querySelectorAll('aside, [role="complementary"]'),v=Array.from(b).filter(A=>!A.closest(f)&&isVisible(A)&&!isHiddenFromAT(A));if(v.length>1)for(let A of v){if(p.length>=m)break;let D=A.getAttribute("aria-label")||"",E=A.getAttribute("aria-labelledby")||"",F=A.getAttribute("title")||"";if(D.trim()||E.trim()||F.trim())continue;let _=d(A),x=uniqueSel(A);p.push({selector:x,attribute:"aria-label",currentValue:"",issueType:"missing_landmark",wcag:"1.3.1",context:JSON.stringify({tag:A.tagName.toLowerCase(),reason:"multiple complementary landmarks without distinguishing labels",totalAsides:b.length,nearbyHeading:_}),needsAI:true,outerHtml:A.outerHTML.slice(0,300)});}let w=document.querySelectorAll('nav, [role="navigation"]'),C=Array.from(w).filter(A=>!A.closest(f)&&isVisible(A)&&!isHiddenFromAT(A));if(C.length>1)for(let A of C){if(p.length>=m)break;let D=A.getAttribute("aria-label")||"",E=A.getAttribute("aria-labelledby")||"",F=A.getAttribute("title")||"";if(D.trim()||E.trim()||F.trim())continue;let _=d(A),x=uniqueSel(A);p.push({selector:x,attribute:"aria-label",currentValue:"",issueType:"missing_landmark",wcag:"1.3.1",context:JSON.stringify({tag:A.tagName.toLowerCase(),reason:"multiple nav landmarks without distinguishing labels",totalNavs:w.length,nearbyHeading:_}),needsAI:true,outerHtml:A.outerHTML.slice(0,300)});}return p},Yh={name:"landmarkRoles",cap:50,async detect(d){return d.evaluate(BI)}};var HI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI]",m=["click here","click","here","read more","more","link","this","go","info","details","learn more","see more","view","open","tap"],p=[];function h(D){if(!D)return "";let E=D.split("#")[0];return E.length>1&&E.charAt(E.length-1)==="/"&&(E=E.substring(0,E.length-1)),E}function b(D){let E=(D.getAttribute("aria-label")||"").trim();return E||(D.textContent||"").trim().replace(/\s+/g," ")}function v(D){return !!D.closest('nav, [role="navigation"], [role="menubar"], [class*=breadcrumb], [aria-label*="breadcrumb" i]')}let w={},C=document.querySelectorAll("a[href]");for(let D=0;D<C.length;D++){let E=C[D];if(E.closest(d)||E.getAttribute("aria-hidden")==="true"||!isVisible(E))continue;let F=E.getAttribute("href")||"";if(!F)continue;let _=F.toLowerCase();if(_.charAt(0)==="#"||_.indexOf("javascript:")===0||_.indexOf("mailto:")===0||_.indexOf("tel:")===0)continue;let x=E.href||F,k=h(x);if(!k||v(E))continue;let T=(E.textContent||"").trim(),I=!!E.querySelector("img, svg, picture");if(!T&&I)continue;let P=b(E);if(!P)continue;let V=P.toLowerCase();V===_||V===x.toLowerCase()||(w[k]||(w[k]=[]),w[k].push(E));}let A=Object.keys(w);for(let D=0;D<A.length&&!(p.length>=30);D++){let E=w[A[D]];if(!E||E.length<2)continue;let F={},_="";for(let I=0;I<E.length;I++){let P=b(E[I]),V=P.toLowerCase();F[V]=true,P.length>_.length&&(_=P);}if(Object.keys(F).length<2)continue;let k=_.toLowerCase().trim();if(k.length<5)continue;let T=false;for(let I=0;I<m.length;I++)if(k===m[I]){T=true;break}if(!T)for(let I=0;I<E.length&&!(p.length>=30);I++){let P=E[I],V=b(P);if(V.toLowerCase()===k)continue;let z=uniqueSel(P);p.push({selector:z,attribute:"aria-label",currentValue:V,issueType:"link_consistency",wcag:"3.2.4",context:"Same href as "+E.length+' link(s) on this page with different text (e.g. "'+_.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:P.outerHTML.slice(0,300)});}}return p},Jh={name:"linkConsistency",cap:30,async detect(d){return d.evaluate(HI)}};var VI=()=>{let f=[],m=[".pdf",".doc",".docx",".xls",".xlsx",".zip",".csv",".ppt",".pptx",".txt",".rtf",".epub"],p={".pdf":"PDF",".doc":"Word document",".docx":"Word document",".xls":"Excel spreadsheet",".xlsx":"Excel spreadsheet",".zip":"ZIP archive",".csv":"CSV file",".ppt":"PowerPoint",".pptx":"PowerPoint",".txt":"text file",".rtf":"RTF document",".epub":"EPUB file"},h="";try{h=window.location&&window.location.hostname||"";}catch{h="";}h=(h||"").toLowerCase();function b(x,k){if(!x||!k)return false;if(x===k||x.endsWith("."+k)||k.endsWith("."+x))return true;let T=I=>{let P=I.split(".");if(P.length<=2)return I;let V=P[P.length-1],z=P[P.length-2],Y=["co","com","net","org","ac","gov","edu"],q=V.length===2&&Y.indexOf(z)>=0?3:2;return P.slice(-q).join(".")};return T(x)===T(k)}function v(x){return x.indexOf("www.")===0?x.slice(4):x}function w(x){if(!x)return "";let k=x.toLowerCase();if(k.charAt(0)==="#"||k.charAt(0)==="/"||k.charAt(0)==="?"||k.indexOf("javascript:")===0||k.indexOf("mailto:")===0||k.indexOf("tel:")===0)return "";try{return (new window.URL(x,window.location.href).hostname||"").toLowerCase()}catch{return ""}}function C(x){if(!x)return "";let k=x,T=k.indexOf("?");T>=0&&(k=k.slice(0,T));let I=k.indexOf("#");I>=0&&(k=k.slice(0,I)),k=k.toLowerCase();for(let P=0;P<m.length;P++){let V=m[P];if(k.length>=V.length&&k.slice(k.length-V.length)===V)return V}return ""}function A(x){let k=[],T=(x.getAttribute("aria-label")||"").trim();T&&k.push(T);let I=(x.getAttribute("title")||"").trim();I&&k.push(I);let P=x.getAttribute("aria-labelledby");if(P)try{let V=typeof __resolveIdRefs=="function"?__resolveIdRefs(P):"";V&&k.push(V);}catch{}return k.push((x.textContent||"").trim()),k.join(" ").toLowerCase()}function D(x,k,T){let I="";try{typeof getAccessibleName=="function"&&(I=(getAccessibleName(x)||"").trim());}catch{}let P=(k||T||I||x.textContent||"").replace(/\s+/g," ").trim();return P||(x.getAttribute("href")||"").trim().replace(/^https?:\/\//i,"").replace(/\/+$/,"")}function E(x,k){let I=200-k.length;I<8&&(I=8);let P=x;if(P.length>I){let V=P.slice(0,I),z=V.lastIndexOf(" ");z>I*.6&&(V=V.slice(0,z)),P=V.replace(/[\s…,;:.\-]+$/,"")+"\u2026";}return (P+k).slice(0,200)}let F=document.querySelectorAll("a"),_=F.length;for(let x=0;x<_&&!(f.length>=50);x++){let k=F[x];if(!k||isWidget(k)||k.getAttribute("aria-hidden")==="true")continue;try{if(k.closest&&k.closest('[aria-hidden="true"]'))continue}catch{}if(!isVisible(k))continue;let T=k.getAttribute("href");if(T==null)continue;let I=String(T).trim();if(!I)continue;let P=I.toLowerCase(),V=A(k),z=(k.getAttribute("rel")||"").toLowerCase(),Y=uniqueSel(k),q=(k.textContent||"").trim().slice(0,80),M=(k.getAttribute("target")||"").toLowerCase(),O=(k.outerHTML||"").slice(0,300),B=I==="#",j=P.indexOf("javascript:")===0;if((B||j)&&(k.getAttribute("role")||"").toLowerCase()!=="button"){let ae=k.hasAttribute&&k.hasAttribute("onclick"),ue=k.hasAttribute&&(k.hasAttribute("data-action")||k.hasAttribute("data-click")||k.hasAttribute("data-toggle")||k.hasAttribute("data-target")),xe=typeof k.onclick=="function",Ie=ae||ue||xe,Ae=[];Ae.push("href: "+I),q&&Ae.push("text: "+q),Ae.push(Ie?"has click handler (should be <button> or role=button)":"dead link \u2014 remove or replace with navigation");let Se='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"]',$e=Te=>{if(getComputedStyle(Te).visibility==="hidden")return false;for(let Ht=Te;Ht&&Ht.nodeType===1;Ht=Ht.parentElement)if(getComputedStyle(Ht).display==="none")return false;return true},Le=Array.prototype.some.call(k.querySelectorAll(Se),Te=>$e(Te)&&!isHiddenFromAT(Te));Ie&&!Le&&f.push({selector:Y,attribute:"role",currentValue:I,issueType:"placeholder_link",wcag:"2.4.4",context:Ae.join(" | "),needsAI:false,fixValue:"button",outerHtml:O});continue}if(I.charAt(0)==="#"&&I.length>1){let ne=I.slice(1),ae=ne;try{ae=decodeURIComponent(ne);}catch{ae=ne;}let ue=null;try{ue=document.getElementById(ae);}catch{ue=null;}if(!ue)try{ue=document.querySelector('[name="'+ae.replace(/"/g,'\\"')+'"]');}catch{ue=null;}continue}let X=C(P);if(X){let ne=k.hasAttribute&&k.hasAttribute("download"),ae=(p[X]||X).toLowerCase(),ue=V.indexOf(X)>=0||V.indexOf(ae)>=0||V.indexOf("download")>=0;if(!ne&&!ue){let xe=D(k,(k.getAttribute("aria-label")||"").trim(),""),Ie=E(xe," ("+(p[X]||X)+" download)");f.push({selector:Y,attribute:"aria-label",currentValue:(k.getAttribute("aria-label")||"").trim(),issueType:"download_link_warning",wcag:"3.2.5",context:"download link \u2014 "+X+" | href: "+I.slice(0,120),needsAI:false,fixValue:Ie,outerHtml:O});continue}}let J=w(I),te=P.indexOf("http://")===0||P.indexOf("https://")===0||P.indexOf("//")===0,Z=!!J&&!!h&&!b(v(J),v(h));if(M==="_blank"){let ne=z.indexOf("noopener")>=0||z.indexOf("noreferrer")>=0,ae=V.indexOf("new window")>=0||V.indexOf("new tab")>=0||V.indexOf("opens in")>=0;if(!ae){let ue=(k.getAttribute("aria-label")||"").trim(),xe="",Ie=k.getAttribute("aria-labelledby")||"";if(!ue&&Ie)try{typeof __resolveIdRefs=="function"&&(xe=(__resolveIdRefs(Ie)||"").trim());}catch{}let Ae=D(k,ue,xe),Se=E(Ae," (opens in new window)"),$e=[];ne||$e.push("missing rel=noopener"),ae||$e.push('missing "new window" hint'),$e.push("href: "+I.slice(0,120)),f.push({selector:Y,attribute:"aria-label",currentValue:(k.getAttribute("aria-label")||"").trim(),issueType:"new_window_link",wcag:"3.2.5",context:$e.join(" | "),needsAI:false,fixValue:Se,outerHtml:O});continue}}if(Z&&te){let ne=z.indexOf("external")>=0,ae=V.indexOf("external")>=0||V.indexOf("opens in")>=0||V.indexOf("new window")>=0||V.indexOf("new tab")>=0;if(!ne&&!ae){let ue=(k.getAttribute("aria-label")||"").trim(),xe="",Ie=k.getAttribute("aria-labelledby")||"";if(!ue&&Ie)try{typeof __resolveIdRefs=="function"&&(xe=(__resolveIdRefs(Ie)||"").trim());}catch{}let Ae=D(k,ue,xe),Se=E(Ae," (external link)");f.push({selector:Y,attribute:"aria-label",currentValue:(k.getAttribute("aria-label")||"").trim(),issueType:"external_link_warning",wcag:"3.2.5",context:"external: "+J+" (page: "+h+") | href: "+I.slice(0,120),needsAI:false,fixValue:Se,outerHtml:O});}}}return f},Kh={name:"linkWarnings",cap:50,async detect(d){return d.evaluate(VI)}};var $I=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",m=[],p=new Set,h=document.querySelectorAll('main, [role="main"]'),b=[];return h.forEach(v=>{let w=getComputedStyle(v);w.display!=="none"&&w.visibility!=="hidden"&&b.push(v);}),h.forEach(v=>{if(m.length>=10||v.closest(d)||v.getAttribute("aria-hidden")!=="true")return;let w=getComputedStyle(v);if(w.display==="none"||w.visibility==="hidden"||v.closest('[role="dialog"]')||v.closest('[role="alertdialog"]')||v.closest("dialog")||b.some(E=>E!==v&&E.getAttribute("aria-hidden")!=="true"))return;let A=v.parentElement;for(;A&&A!==document.body&&A!==document.documentElement;){if(A.getAttribute("aria-hidden")==="true")return;A=A.parentElement;}let D=uniqueSel(v);p.has(D)||(p.add(D),m.push({selector:D,attribute:"aria-hidden",currentValue:"true",issueType:"main_content_hidden",wcag:"4.1.2",context:JSON.stringify({tag:v.tagName.toLowerCase(),role:v.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:(v.outerHTML||"").slice(0,300)}));}),m},Zh={name:"mainContentHidden",cap:10,async detect(d){return d.evaluate($I)}};var jI=()=>{let f=[];function m(v){return !!(!v||isWidget(v)||(v.getAttribute("aria-hidden")||"").trim().toLowerCase()==="true")}function p(v){return (v.outerHTML||"").slice(0,300)}let h=document.querySelectorAll("video");for(let v of h){if(f.length>=10)break;let w=v;if(m(w))continue;let C=w.hasAttribute("controls"),A=w.hasAttribute("autoplay"),D=w.hasAttribute("muted"),E=A||!w.paused&&!w.ended,F=typeof isVisible=="function"?isVisible(w):true;if(!C&&E&&F&&(f.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:p(w)}),f.length>=10))break;A&&!D&&f.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:p(w)});}let b=document.querySelectorAll("audio");for(let v of b){if(f.length>=10)break;let w=v;if(m(w))continue;let C=w.hasAttribute("controls"),A=w.hasAttribute("autoplay"),D=A||!w.paused&&!w.ended;if(!C&&D&&(f.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:p(w)}),f.length>=10))break;A&&f.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:p(w)});}return f},Qh={name:"mediaControls",cap:10,async detect(d){return d.evaluate(jI)}};var zI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=/^(image|photo|img|picture|pic|untitled|banner|hero|\d{1,2})$/i,h=/^(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,b=document.querySelectorAll("img");for(let v of b){if(m.length>=50)break;if(v.closest(d))continue;let w=v.getAttribute("src")||"",C=v.getAttribute("alt");if(w.startsWith("data:"))continue;let A=v.naturalWidth||v.width,D=v.naturalHeight||v.height;if(A<=3&&D<=3&&A>0&&D>0||A<=2&&D<=2)continue;let E=v.getBoundingClientRect();if(E.width<=2&&E.height<=2||!isVisible(v)||v.getAttribute("role")==="presentation"||v.getAttribute("role")==="none"||v.getAttribute("aria-hidden")==="true"||v.closest('[aria-hidden="true"]'))continue;let F=(v.getAttribute("aria-label")||"").trim(),_=(v.getAttribute("aria-labelledby")||"").trim();if(F||_)continue;let x=v.getBoundingClientRect(),k=x.width>0&&x.width<=30&&x.height<=30,T=!!v.closest('a, button, [role="button"], [role="link"]');if(k&&!T&&C===null){let Y=uniqueSel(v);m.push({selector:Y,attribute:"aria-hidden",currentValue:"",issueType:"decorative_icon",wcag:"1.1.1",context:"small icon ("+Math.round(x.width)+"x"+Math.round(x.height)+"px) \u2014 likely decorative",needsAI:false,fixValue:"true"});continue}if(C===null){let Y=uniqueSel(v),q=getNearbyContext(v),M=[],O=v.closest("figure");if(O){let X=O.querySelector("figcaption");X&&M.push("figcaption: "+(X.textContent||"").trim().slice(0,80));}q.nearbyHeading&&M.push("heading: "+q.nearbyHeading);let B=v.closest("a");if(B){let X=B.getAttribute("href")||"",J=(B.textContent||"").trim().replace(/\s+/g," ");J&&M.push("link text: "+J.slice(0,60)),X&&M.push("link href: "+X.slice(0,80));}w&&M.push("src: "+w.slice(0,120)),M.push("parent: "+q.parentTag);let j=w;try{j=new URL(w,document.baseURI).href;}catch{}m.push({selector:Y,attribute:"alt",currentValue:"",issueType:"missing_alt",wcag:"1.1.1",context:M.join(" | "),needsAI:true,imageSrc:j,outerHtml:v.outerHTML.slice(0,300)});continue}let I=(C||"").trim();if(I==="")continue;let P=/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$/i.test(I),V=p.test(I),z=h.test(I);if(P||V||z){let Y=uniqueSel(v),q=getNearbyContext(v),M=[];q.nearbyHeading&&M.push("heading: "+q.nearbyHeading),w&&M.push("src: "+w.slice(0,120)),M.push("parent: "+q.parentTag);let O=w;try{O=new URL(w,document.baseURI).href;}catch{}m.push({selector:Y,attribute:"alt",currentValue:I,issueType:"missing_alt",wcag:"1.1.1",context:M.join(" | "),needsAI:true,imageSrc:O,outerHtml:v.outerHTML.slice(0,300)});}}return m},eg={name:"missingAlt",cap:50,async detect(d){return d.evaluate(zI)}};var GI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude]",f='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"]',m=["onclick","data-action","ng-click","@click","v-on:click"],p=x=>{if(getComputedStyle(x).visibility==="hidden")return false;for(let k=x;k&&k.nodeType===1;k=k.parentElement)if(getComputedStyle(k).display==="none")return false;return true},h=x=>Array.prototype.some.call(x.querySelectorAll("a:not([href])"),k=>p(k)&&!isHiddenFromAT(k)&&m.some(T=>k.hasAttribute(T))),b=x=>Array.prototype.some.call(x.querySelectorAll(f),k=>p(k)&&!isHiddenFromAT(k)),w=[];return document.querySelectorAll("div[onclick], span[onclick]").forEach(x=>{if(w.length>=50||x.closest(d)||!isVisible(x)||isHiddenFromAT(x)||b(x)||h(x))return;let k=x.getAttribute("role");if(k==="button"||k==="link"||k==="tab"||k==="menuitem"||k==="checkbox"||k==="radio")return;let T=uniqueSel(x),I=x.outerHTML.slice(0,300);w.push({selector:T,attribute:"role",currentValue:k||"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:x.tagName.toLowerCase(),hasOnclick:true,currentTabindex:x.getAttribute("tabindex")}),needsAI:false,fixValue:"button",outerHtml:I}),x.getAttribute("tabindex")===null&&w.push({selector:T,attribute:"tabindex",currentValue:"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:x.tagName.toLowerCase(),supplementary:'tabindex needed alongside role="button"'}),needsAI:false,fixValue:"0",outerHtml:I});}),document.querySelectorAll('a:not([href]), a[href=""], a[href="#"], a[href="javascript:void(0)"], a[href="javascript:;"]').forEach(x=>{if(w.length>=50||x.closest(d)||!isVisible(x)||isHiddenFromAT(x)||x.getAttribute("role"))return;let T=x.hasAttribute("onclick"),I=x.getAttribute("data-action")||x.getAttribute("ng-click")||x.getAttribute("@click")||x.getAttribute("v-on:click");if(!T&&!I||b(x))return;let P=uniqueSel(x),V=x.outerHTML.slice(0,300);w.push({selector:P,attribute:"role",currentValue:"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:"a",href:x.getAttribute("href")||"",hasOnclick:T}),needsAI:false,fixValue:"button",outerHtml:V});}),document.querySelectorAll('a[href^="#"]:not([href="#"]), a[href^="javascript:"]').forEach(x=>{if(w.length>=50||x.closest(d)||!isVisible(x)||isHiddenFromAT(x)||x.getAttribute("role"))return;let T=x.getAttribute("href")||"",I=false;if(T.startsWith("#")&&T.length>1){if(T.charAt(1)==="/")return;let Y=T.slice(1);if(document.getElementById(Y))return;try{if(document.querySelector('[name="'+CSS.escape(Y)+'"]'))return}catch{}I=true;}let P=T.startsWith("javascript:")||x.hasAttribute("onclick")||x.getAttribute("data-action")||x.getAttribute("ng-click")||x.getAttribute("@click")||x.getAttribute("v-on:click")||x.hasAttribute("aria-haspopup")||x.hasAttribute("aria-expanded")||x.hasAttribute("aria-controls"),V=I&&!P;if(b(x))return;let z=uniqueSel(x);w.push({selector:z,attribute:"role",currentValue:"",issueType:"missing_button_role",wcag:"4.1.2",context:JSON.stringify({tag:"a",href:T,reason:"non-navigating link acting as button"}),needsAI:false,fixValue:"button",outerHtml:x.outerHTML.slice(0,300),...V?{needsReview:true,reviewReason:"fragment href has no matching target and no click-behavior evidence \u2014 may be a dead link, not a button"}:{}});}),document.querySelectorAll("nav, ol, ul").forEach(x=>{if(w.length>=50||x.closest(d)||!isVisible(x)||isHiddenFromAT(x))return;let k=(x.className&&typeof x.className=="string"?x.className:"").toLowerCase(),T=(x.id||"").toLowerCase();if(!k.includes("breadcrumb")&&!k.includes("crumb")&&!T.includes("breadcrumb")&&!T.includes("crumb"))return;let I=x.querySelectorAll("a");if(I.length<2)return;let P=(x.getAttribute("aria-label")||"").toLowerCase(),V=x.getAttribute("role");if(P.includes("breadcrumb")||P.includes("crumb")||V==="navigation"&&P)return;let z=uniqueSel(x);w.push({selector:z,attribute:"aria-label",currentValue:P,issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:x.tagName.toLowerCase(),reason:"breadcrumb navigation missing aria-label",linkCount:I.length}),needsAI:false,fixValue:"Breadcrumb",outerHtml:x.outerHTML.slice(0,300)});}),document.querySelectorAll("form, section, div").forEach(x=>{if(w.length>=50||x.closest(d)||!isVisible(x)||isHiddenFromAT(x))return;let k=(x.className&&typeof x.className=="string"?x.className:"").toLowerCase(),T=(x.id||"").toLowerCase();if(!k.includes("search")&&!T.includes("search")||!x.querySelector('input[type="search"], input[type="text"], input[name*="search"], input[placeholder*="earch"]'))return;let P=x.getAttribute("role");if(P==="search"||x.closest('[role="search"]')||x.querySelector('[role="search"]')||Array.prototype.some.call(x.querySelectorAll("form, section, div"),Y=>{let q=(Y.className&&typeof Y.className=="string"?Y.className:"").toLowerCase(),M=(Y.id||"").toLowerCase();return !q.includes("search")&&!M.includes("search")||Y.getAttribute("role")==="search"?false:!!Y.querySelector('input[type="search"], input[type="text"], input[name*="search"], input[placeholder*="earch"]')}))return;let z=uniqueSel(x);w.push({selector:z,attribute:"role",currentValue:P||"",issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:x.tagName.toLowerCase(),reason:'search section missing role="search"'}),needsAI:false,fixValue:"search",outerHtml:x.outerHTML.slice(0,300)});}),document.querySelectorAll('[role="menu"], [role="menubar"]').forEach(x=>{if(x.closest(d))return;let k=x.getAttribute("role")||"menu",T=Array.from(x.querySelectorAll("a")).filter(P=>{if(!isVisible(P)||isHiddenFromAT(P))return false;let V=P.getAttribute("role");return V!=="menuitem"&&V!=="menuitemcheckbox"&&V!=="menuitemradio"});if(T.length===0)return;let I=uniqueSel(x);w.push({selector:I,attribute:"role",currentValue:k,issueType:"missing_semantic_role",wcag:"4.1.2",context:JSON.stringify({tag:x.tagName.toLowerCase(),reason:`${T.length} link(s) inside role="${k}" without menuitem roles`,sample:T.slice(0,3).map(P=>(P.textContent||"").trim().slice(0,40))}),message:`container role="${k}" holds ${T.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:x.outerHTML.slice(0,300)});}),w},tg={name:"missingRoles",cap:50,async detect(d){return d.evaluate(GI)}};var UI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",m=[],p={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[h,b]of Object.entries(p))document.querySelectorAll(b).forEach(w=>{if(m.length>=30||w.closest(d)||typeof isVisible=="function"&&!isVisible(w))return;let C=w.parentElement,A=null;for(;C&&C!==document.body;){if(C.matches(b)){A=C;break}C=C.parentElement;}if((h==="banner"||h==="contentinfo")&&w.closest("article, section, aside, main, nav")||!A||w.getAttribute("aria-label")?.trim()||w.getAttribute("aria-labelledby")?.trim())return;let D=typeof uniqueSel=="function"?uniqueSel(w):"",E=typeof getNearbyContext=="function"?getNearbyContext(w):{nearbyHeading:""};m.push({selector:D,attribute:"role",currentValue:w.getAttribute("role")||w.tagName.toLowerCase(),issueType:"nested_landmark",wcag:"1.3.1",context:`nested-in: ${h} | tag: ${w.tagName.toLowerCase()} | heading: ${E.nearbyHeading||""}`,needsAI:false,fixValue:"generic",outerHtml:(w.outerHTML||"").slice(0,300)});});return m},rg={name:"nestedLandmarks",cap:30,async detect(d){return d.evaluate(UI)}};var WI=()=>{let f=[],m=q=>typeof parseCssColor=="function"?parseCssColor(q):null,p=(q,M,O)=>typeof relLuminance=="function"?relLuminance(q,M,O):0,b=(q,M)=>typeof contrastRatio=="function"?contrastRatio(q,M):1;function v(q){let M=document.documentElement,O=q.parentElement,B=0;for(;O&&O!==M&&B<6;){let te=getComputedStyle(O).backgroundColor||"",Z=m(te);if(Z&&Z[3]>.5)return [Z[0],Z[1],Z[2]];O=O.parentElement,B++;}let j=document.body;if(O&&O!==M&&j&&j.contains(O)){let te=m(getComputedStyle(j).backgroundColor||"");if(te&&te[3]>.5)return [te[0],te[1],te[2]]}let X=m(getComputedStyle(M).backgroundColor||""),J=X?Math.min(X[3],1):0;return !X||J<=0?[255,255,255]:[Math.round(X[0]*J+255*(1-J)),Math.round(X[1]*J+255*(1-J)),Math.round(X[2]*J+255*(1-J))]}function w(q,M,O){return "#"+[q,M,O].map(B=>{let j=Math.max(0,Math.min(255,Math.round(B))).toString(16);return j.length===1?"0"+j:j}).join("")}function C(q,M,O){let B=p(M[0],M[1],M[2])>.5;return A(q,M,O,B)||A(q,M,O,!B)}function A(q,M,O,B){let j=0,X=1,J=null;for(let te=0;te<20;te++){let Z=(j+X)/2,ne=B?[q[0]*(1-Z),q[1]*(1-Z),q[2]*(1-Z)]:[q[0]+(255-q[0])*Z,q[1]+(255-q[1])*Z,q[2]+(255-q[2])*Z],ae=[Math.round(ne[0]),Math.round(ne[1]),Math.round(ne[2])];b(ae,M)>=O?(J=ae,X=Z):j=Z;}return J}let D=(q,M)=>{let O=Math.max(0,Math.min(1,q[3]));return [q[0]*O+M[0]*(1-O),q[1]*O+M[1]*(1-O),q[2]*O+M[2]*(1-O)]};function E(q,M){let O=q.boxShadow||"";if(!O||O==="none")return null;let B=[],j=0,X="";for(let te of O)te==="("&&j++,te===")"&&j--,te===","&&j===0?(B.push(X),X=""):X+=te;X&&B.push(X);let J=null;for(let te of B){let Z=te.match(/rgba?\([^)]*\)/),ne=Z?m(Z[0]):null;if(!ne||ne[3]<=0||(te.replace(/rgba?\([^)]*\)/,"").replace("inset","").trim().split(/\s+/).map(Ie=>parseFloat(Ie)).filter(Ie=>Number.isFinite(Ie))[3]??0)<=0)continue;let xe=b(D(ne,M),M);(J===null||xe>J)&&(J=xe);}return J}function F(q){let M=getComputedStyle(q),O=v(q),B=null,j=parseFloat(M.borderTopWidth||"0"),X=(M.borderTopStyle||"").toLowerCase(),J=m(M.borderTopColor||"");j>0&&X!=="none"&&X!=="hidden"&&J&&J[3]>0&&(B=b(D(J,O),O));let te=m(M.backgroundColor||"");if(te&&te[3]>0){let ne=b(D(te,O),O);(B===null||ne>B)&&(B=ne);}let Z=E(M,O);return Z!==null&&(B===null||Z>B)&&(B=Z),B}function _(q){let M=q.getBoundingClientRect();if(M.width*M.height<=0)return null;let O='input, select, textarea, button, [role="button"], svg, img, i, label',B=q.parentElement,j=null;for(let X=0;B&&X<3&&!(B===document.body||B===document.documentElement);X++,B=B.parentElement){let J=B.getBoundingClientRect();if(J.width*J.height>4*M.width*M.height+1||J.height>Math.max(2.5*M.height,M.height+40))break;let te=false,Z=document.createTreeWalker(B,4),ne=Z.nextNode();for(;ne;){if((ne.textContent||"").trim()&&ne.parentElement&&!ne.parentElement.closest(O)&&isVisible(ne.parentElement)){te=true;break}ne=Z.nextNode();}if(te)break;let ae=F(B);ae!==null&&ae>1.01&&(j===null||ae>j)&&(j=ae);}return j}let x=q=>/^(img|picture|video|canvas|object|embed|iframe)$/.test((q.tagName||"").toLowerCase())||(getComputedStyle(q).backgroundImage||"none")!=="none",k=(q,M)=>{let O=Math.min(q.right,M.right)-Math.max(q.left,M.left),B=Math.min(q.bottom,M.bottom)-Math.max(q.top,M.top);return O>0&&B>0&&O*B/(q.width*q.height)>=.5},T=null;function I(q){let M=q.getBoundingClientRect();if(M.width*M.height<=0)return false;let O=M.left+M.width/2,B=M.top+M.height/2;if(O>=0&&B>=0&&O<window.innerWidth&&B<window.innerHeight&&typeof document.elementsFromPoint=="function"){let X=document.elementsFromPoint(O,B),J=X.indexOf(q);if(J>=0){for(let te of X.slice(J+1)){if(x(te))return true;let Z=m(getComputedStyle(te).backgroundColor||"");if(Z&&Z[3]>.5)return false}return false}}for(let X=q.parentElement,J=0;X&&J<8;X=X.parentElement,J++){let te=getComputedStyle(X);if((te.backgroundImage||"none")!=="none")return true;let Z=m(te.backgroundColor||"");if(Z&&Z[3]>.5||X===document.documentElement)break}T||(T=Array.from(document.querySelectorAll("img, picture, video, canvas, object, embed, iframe")));for(let X of T)if(!(X===q||q.contains(X)||X.contains(q))&&k(M,X.getBoundingClientRect())&&isVisible(X))return true;let j=q.offsetParent||q.parentElement;if(j&&j!==document.body&&j!==document.documentElement){let X=j.getElementsByTagName("*");for(let J=0;J<X.length&&J<400;J++){let te=X[J];if(!(te===q||q.contains(te)||te.contains(q))&&k(M,te.getBoundingClientRect())&&(getComputedStyle(te).backgroundImage||"none")!=="none"&&isVisible(te))return true}}return false}function P(q){for(let j=q.parentElement;j&&j.nodeType===1;j=j.parentElement)if(parseFloat(getComputedStyle(j).opacity||"1")<1)return false;let M=j=>{if(j.tagName.toLowerCase()!=="svg"){let te=m(getComputedStyle(j).color||"");return te&&te[3]>0?[te]:null}let X=[],J=Array.from(j.querySelectorAll("path, rect, circle, ellipse, polygon, polyline, line, text, use"));for(let te of J){let Z=te.getBoundingClientRect();if(Z.width===0&&Z.height===0)continue;let ne=getComputedStyle(te);if(ne.display==="none"||ne.visibility==="hidden"||parseFloat(ne.opacity||"1")<1)return null;for(let[ae,ue]of [[ne.fill,ne.fillOpacity],[ne.stroke,parseFloat(ne.strokeWidth||"0")>0?ne.strokeOpacity:"0"]]){let xe=String(ae||"");if(!xe||xe==="none"||parseFloat(String(ue??"1"))===0)continue;if(xe.startsWith("url"))return null;let Ie=m(xe);if(!Ie)return null;Ie[3]*=parseFloat(String(ue??"1")),Ie[3]>0&&X.push(Ie);}}return X.length?X:null},O=[];for(let j=0;j<=255;j+=17)O.push(j);let B=Array.from(q.querySelectorAll('svg, i[class], [class*="icon"]'));for(let j of B){let X=j.getBoundingClientRect();if(X.width*X.height===0)continue;let J=getComputedStyle(j);if(J.display==="none"||J.visibility==="hidden")continue;let te=M(j);if(!te)continue;let Z=null,ne=1,ae=true;for(let Ie=j;Ie;Ie=Ie===q?null:Ie.parentElement){let Ae=getComputedStyle(Ie),Se=parseFloat(Ae.opacity||"1");if(!Z){let $e=m(Ae.backgroundColor||""),Le=String(Ae.backgroundClip||"border-box").toLowerCase();if(!(String(Ae.backgroundImage||"none")==="none")){ae=false;break}if($e&&$e[3]>=1&&Le==="border-box")Z=[$e[0],$e[1],$e[2]];else if(Se<1){ae=false;break}}Z&&(ne*=Se);}if(!Z||!ae)continue;let ue=Z,xe=1/0;for(let Ie of te){let Ae=D(Ie,ue);for(let Se of O)for(let $e of O)for(let Le of O){let Te=[Se,$e,Le],Ht=D([Ae[0],Ae[1],Ae[2],ne],Te),pn=D([ue[0],ue[1],ue[2],ne],Te),Wr=b(Ht,pn);Wr<xe&&(xe=Wr);}}if(xe>=3)return true}return false}let V="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 z(q){let M=q.tagName.toLowerCase(),O=M==="input"||M==="select"||M==="textarea"?M+" field":M;f.push({selector:uniqueSel(q),message:"non-text contrast: "+O+" over an image backdrop \u2014 "+V,attribute:"style",currentValue:"?",issueType:"non_text_contrast_insufficient",wcag:"1.4.11",context:M+" backdrop=image needs=3",needsAI:false,needsReview:true,reviewReason:V,outerHtml:q.outerHTML.slice(0,200)});}let Y=document.querySelectorAll('input:not([type="hidden"]), select, textarea, button, [role="button"], [role="checkbox"], [role="radio"], [role="switch"]');for(let q of Y){if(f.length>=30)break;if(isWidget(q)||isHiddenFromAT(q)||!isVisible(q))continue;let M=getComputedStyle(q),O=v(q),B=m(M.backgroundColor||""),j=m(M.borderTopColor||""),X=parseFloat(M.borderTopWidth||"0"),J=(M.borderTopStyle||"").toLowerCase(),te=X>0&&J!=="none"&&J!=="hidden",Z=q.tagName.toLowerCase(),ne=Z==="input"||Z==="select"||Z==="textarea",ae=null;if(Z==="input"){let we=(q.type||"").toLowerCase(),Pr=(M.appearance||M.webkitAppearance||"").toLowerCase();if(we==="checkbox"||we==="radio"){let lr=Pr==="none"?"":String(M.accentColor||"").trim().toLowerCase(),ur=lr&&lr!=="auto"?m(lr):null;if(ur&&ur[3]>.5)ae=b([ur[0],ur[1],ur[2]],O);else if(Pr&&Pr!=="none")continue}}let ue=te&&j&&j[3]>.5?b([j[0],j[1],j[2]],O):null,xe=B&&B[3]>.5?b([B[0],B[1],B[2]],O):ae,Ie=E(M,O),Ae=ue===null&&xe===null&&Ie===null?null:Math.max(ue??0,xe??0,Ie??0);if(ne&&I(q)){z(q);continue}if(ne&&(Ae===null||Ae<3)){let we=_(q);if(we!==null&&we>=3)continue}let Se=null,$e=false,Le="";if(ne)Ae!==null?(Se=Ae,Ae<3&&($e=true)):($e=true,Se=1);else {let we=false,Pr=document.createTreeWalker(q,4),lr=Pr.nextNode();for(;lr;){if((lr.textContent||"").trim()&&lr.parentElement&&isVisible(lr.parentElement)){we=true;break}lr=Pr.nextNode();}if(we)continue;let ur=I(q);{let ce=["Top","Right","Bottom","Left"].map(Ne=>({w:parseFloat(M["border"+Ne+"Width"]||"0"),s:String(M["border"+Ne+"Style"]||"").toLowerCase(),c:m(M["border"+Ne+"Color"]||"")})),ge=ce.filter(Ne=>Ne.w>0&&Ne.s!=="none"&&Ne.s!=="hidden"&&Ne.c&&Ne.c[3]>.5),Ge=ce.filter(Ne=>Ne.w>0&&Ne.s!=="none"&&Ne.s!=="hidden"&&Ne.c&&Ne.c[3]===0),et=true;for(let Ne=q.parentElement;Ne&&Ne.nodeType===1;Ne=Ne.parentElement)if(parseFloat(getComputedStyle(Ne).opacity||"1")<1){et=false;break}let it=Math.max(0,Math.min(1,parseFloat(M.opacity||"1"))),ft=String(M.backgroundClip||"border-box").toLowerCase(),Je=!!B&&B[3]>=1&&it>=1&&ft==="border-box";if(ge.length&&Ge.length&&et&&(!ur||Je)){let Ne=B&&B[3]>0?D(B,O):O,Ut=D([Ne[0],Ne[1],Ne[2],it],O),Wt=Or=>{let la=D(Or,Ne);return D([la[0],la[1],la[2],it],O)};if(ge.some(Or=>b(Wt(Or.c),Ut)>=3))continue}}if(ur){if(P(q))continue;z(q);continue}let sa=Array.from(q.querySelectorAll('img, svg, picture, canvas, i[class], [class*="icon"]')),$t=new Map,ui=ce=>{let ge=ce.getBoundingClientRect();if(ge.width*ge.height===0)return "absent";let Ge=parseFloat(getComputedStyle(q).opacity||"1");for(let et=ce;et&&et!==q;et=et.parentElement){let it=getComputedStyle(et);if(it.display==="none")return "absent";if(it.visibility==="hidden"||parseFloat(it.opacity||"1")===0)return "hidden-at-rest";Ge*=parseFloat(it.opacity||"1");}return $t.set(ce,Ge),"painted"},ci=sa.map(ui),at=sa.filter((ce,ge)=>ci[ge]==="painted"),Mr=at.length>0,mn=!Mr&&ci.includes("hidden-at-rest"),de=ce=>{let ge=(ce.tagName||"").toLowerCase();if(ge==="img"||ge==="picture"||ge==="canvas"||ge==="svg"&&ce.querySelector("image, foreignObject, linearGradient, radialGradient, pattern"))return null;let Ge=[];if(ge==="svg"){let it=ce.querySelector("path, circle, rect, polygon, polyline, line, ellipse, use, text");for(let ft of [it,ce]){if(!ft)continue;let Je=getComputedStyle(ft),Ne=1;for(let Wt=ft;Wt&&Wt!==ce;Wt=Wt.parentElement||Wt.parentNode)Ne*=parseFloat(getComputedStyle(Wt).opacity||"1");let Ut=Wt=>Number.isFinite(parseFloat(Wt))?parseFloat(Wt):1;if(Je.fill&&Je.fill!=="none"&&!Je.fill.startsWith("url")&&Ge.push({color:Je.fill,alpha:Ne*Ut(Je.fillOpacity)}),Je.stroke&&Je.stroke!=="none"&&!Je.stroke.startsWith("url")&&parseFloat(Je.strokeWidth||"0")>0&&Ge.push({color:Je.stroke,alpha:Ne*Ut(Je.strokeOpacity)}),Ge.length)break}}else ((ce.textContent||"").trim()||getComputedStyle(ce,"::before").content!=="none")&&Ge.push({color:getComputedStyle(ce).color,alpha:1});let et=null;for(let it of Ge){let ft=m(it.color);if(!ft)continue;let Je=ft[3]*it.alpha*($t.get(ce)??1),Ne=[ft[0]*Je+O[0]*(1-Je),ft[1]*Je+O[1]*(1-Je),ft[2]*Je+O[2]*(1-Je)],Ut=b(Ne,O);(et===null||Ut>et)&&(et=Ut);}return et};if(Mr&&at.map(de).some(ge=>ge!==null&&ge>=3))continue;let ee=false,oe=M.position;if((oe==="absolute"||oe==="fixed")&&q.parentElement){let ce=q.getBoundingClientRect(),ge=q.parentElement.getBoundingClientRect(),Ge=ge.width*ge.height;Ge>0&&ce.width*ce.height/Ge>=.85&&(ee=true);}if(Mr||ee||mn){if($e=true,Se=te&&j&&j[3]>.5?b([j[0],j[1],j[2]],O):1,Se>=3)continue;Le=Mr?"control is identified by an image or icon \u2014 verify the graphic itself has 3:1 contrast against its surroundings":mn?"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 Ae!==null?(Se=Ae,Ae<3&&($e=true)):($e=true,Se=1);}if(!$e)continue;let Te=j&&j[3]>.5?[j[0],j[1],j[2]]:B&&B[3]>.5?[B[0],B[1],B[2]]:[128,128,128],Ht=C(Te,O,3);if(!Ht)continue;let pn=w(Ht[0],Ht[1],Ht[2]),Wr=w(O[0],O[1],O[2]),wr="border: 1px solid "+pn+" !important;",li=uniqueSel(q),Lr=q.tagName.toLowerCase(),Vt=Ae===null&&!te?"invisible (no border, no fill: 1.00:1)":Se?Se.toFixed(2)+":1":"not measurable",Tt=Lr==="input"||Lr==="select"||Lr==="textarea"?Lr+" field":Lr,Xr=Le?"non-text contrast: "+Tt+" boundary is "+Vt+" against "+Wr+" (needs 3:1) \u2014 "+Le:"non-text contrast: "+Tt+" boundary (border and fill) is "+Vt+" against "+Wr+", needs 3:1 \u2014 e.g. border-color "+pn;f.push({selector:li,message:Xr,attribute:"style",currentValue:Se?Se.toFixed(2):"?",issueType:"non_text_contrast_insufficient",wcag:"1.4.11",context:Lr+" bg="+Wr+" ratio="+(Se?Se.toFixed(2):"?")+" needs=3",needsAI:false,...Le?{needsReview:true,reviewReason:Le}:{fixValue:wr},outerHtml:q.outerHTML.slice(0,200)});}return f},ng={name:"nonTextContrast",cap:30,async detect(d){return d.evaluate(WI)}};var XI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=/location\s*[=.]|location\s*\.\s*href|\.submit\s*\(|window\s*\.\s*open|history\s*\.\s*(push|replace)/i,h=document.querySelectorAll("[onfocus]");for(let b of Array.from(h)){if(m.length>=20)break;if(b.closest(d))continue;let v=b.getAttribute("onfocus")||"";if(!v||!p.test(v))continue;let w=typeof uniqueSel=="function"?uniqueSel(b):"",C=typeof getNearbyContext=="function"?getNearbyContext(b):{parentTag:b.tagName.toLowerCase(),nearbyHeading:""},A=[];A.push("tag: "+b.tagName.toLowerCase()),A.push("onfocus: "+v.slice(0,100)),C.nearbyHeading&&A.push("heading: "+C.nearbyHeading),A.push("parent: "+C.parentTag),m.push({selector:w,attribute:"onfocus",currentValue:v.slice(0,200),issueType:"onfocus_context_change",wcag:"3.2.1",context:A.join(" | "),needsAI:true,outerHtml:(b.outerHTML||"").slice(0,300)});}return m},ag={name:"onFocus",cap:20,async detect(d){return d.evaluate(XI)}};var YI=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=ae-exclude],[id*=ae_app],[id*=ae_],[class*=EquallyAI]",p=[],h=new Set,b=new Set(["dialog","alertdialog","menu","menubar","listbox","tree","grid","treegrid","tabpanel","application","toolbar","combobox"]);return document.querySelectorAll("div, section, article, aside, pre, code, ul, ol, nav, blockquote").forEach(w=>{if(p.length>=30||w.closest(d))return;let C=w.tagName;if(C==="BODY"||C==="HTML"||!isVisible(w)||isHiddenFromAT(w)||w.hasAttribute("tabindex"))return;let A=w.getAttribute("role");if(A&&b.has(A))return;let D=getComputedStyle(w),E=D.overflowY,F=D.overflowX,_=E==="auto"||E==="scroll",x=F==="auto"||F==="scroll";if(!_&&!x)return;let k=_&&w.scrollHeight-w.clientHeight>50,T=x&&w.scrollWidth-w.clientWidth>50;if(!k&&!T||w.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]):not([type=hidden]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])').length>0)return;let P=uniqueSel(w);if(h.has(P))return;h.add(P);let{nearbyHeading:V}=getNearbyContext(w),z="";if(V)z=V;else {let M=(typeof w.className=="string"?w.className:"").toLowerCase(),O=(w.id||"").toLowerCase();M.includes("code")||M.includes("snippet")||C==="PRE"||C==="CODE"?z="Code block":M.includes("terms")||M.includes("tos")||M.includes("legal")?z="Terms and conditions":M.includes("chat")||M.includes("message")?z="Chat messages":M.includes("table")||M.includes("data")?z="Data table":O?z=O.replace(/[-_]/g," "):z="Scrollable content";}let Y=(w.outerHTML||"").slice(0,300);p.push({selector:P,attribute:"tabindex",currentValue:"",issueType:"scrollable_not_focusable",wcag:"2.1.1",context:JSON.stringify({tag:C.toLowerCase(),overflowY:_?E:void 0,overflowX:x?F:void 0,scrollHeight:w.scrollHeight,clientHeight:w.clientHeight,scrollWidth:w.scrollWidth,clientWidth:w.clientWidth,suggestion:'Add tabindex="0" so keyboard users can scroll this container'}),needsAI:false,fixValue:"0",outerHtml:Y}),A||p.push({selector:P,attribute:"role",currentValue:"",issueType:"missing_semantic_role",wcag:"2.1.1",context:JSON.stringify({tag:C.toLowerCase(),supplementary:'role="region" needed alongside tabindex="0" for screen reader announcement'}),needsAI:false,fixValue:"region",outerHtml:Y}),w.getAttribute("aria-label")||w.getAttribute("aria-labelledby")||p.push({selector:P,attribute:"aria-label",currentValue:"",issueType:"missing_landmark",wcag:"2.1.1",context:JSON.stringify({tag:C.toLowerCase(),labelHint:z,supplementary:"aria-label needed so screen readers announce the scrollable region"}),needsAI:true,outerHtml:Y});}),p},ig={name:"scrollableFocus",cap:30,async detect(d){return d.evaluate(YI)}};var JI=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",f=[],m=['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"]'],p=false;for(let E of m){let F=document.querySelector(E);if(F&&!F.closest(d)){p=true;break}}if(!p){let E=document.querySelectorAll('a[href^="#"]');for(let F of E){if(F.closest(d))continue;let _=(F.textContent||"").toLowerCase();if(_.includes("skip")&&(_.includes("main")||_.includes("content")||_.includes("nav"))){p=true;break}}}if(p||Array.from(document.querySelectorAll('main, [role="main"]')).filter(E=>{let F=getComputedStyle(E);if(F.display==="none"||F.visibility==="hidden"||E.closest('[hidden], [aria-hidden="true"]'))return false;let _=E.getBoundingClientRect();return _.width>0&&_.height>0}).length===1)return f;let b="",v=document.querySelector('main[id], [role="main"][id]');if(v&&v.getAttribute("id"))b=v.getAttribute("id");else {let E=document.querySelector("h1[id]");if(E&&E.getAttribute("id"))b=E.getAttribute("id");else {let F=["main-content","maincontent","main","content","skip-content"];for(let _ of F)if(document.getElementById(_)){b=_;break}}}let w=b==="",C=b||"main-content",D="<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="#'+C+'" class="wa-skip-link">Skip to main content</a>';return f.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 #"+C,needsAI:false,fixValue:D,...w?{manualFix:true}:{}}),f},og={name:"skipLink",async detect(d){return d.evaluate(JI)}};var KI=()=>{let m=[],p=document.querySelectorAll("*"),h=0;for(let b of Array.from(p)){if(h++>5e3||m.length>=20)break;if(b.closest("[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye]")||typeof isVisible=="function"&&!isVisible(b))continue;let w=getComputedStyle(b).backgroundImage||"";if(!w||w==="none"||!w.includes("url("))continue;let C=w.match(/url\((['"]?)(.*?)\1\)/);if(!C)continue;let A=C[2];if(!A||A.startsWith("data:")&&A.length<256)continue;let D=b.getBoundingClientRect();if(D.width<32||D.height<32)continue;let E=b.tagName.toLowerCase(),F=b.getAttribute("role")||"",_=E==="a"||E==="button"||F==="button"||F==="link"||b.closest("a,button,[role=button],[role=link]")!==null,x=(b.textContent||"").trim().length>0,k=!!b.getAttribute("aria-label"),T=!!b.getAttribute("aria-labelledby"),I=!!b.getAttribute("title"),P=!!b.querySelector('img[alt]:not([alt=""])');if(b.closest('[aria-hidden="true"]')){let M=b.closest("a[href]");if(!!M&&Array.from(document.querySelectorAll("a[href]")).some(B=>B!==M&&B.href===M.href&&!B.closest('[aria-hidden="true"]')))continue}if(k||T||I||P||x||!_)continue;let V=b.closest("a,button,[role=button],[role=link]");if(V&&V!==b){let M=(V.textContent||"").trim(),O=V.getAttribute("aria-label")||V.getAttribute("title")||"",B=V.getAttribute("aria-labelledby"),j=!!V.querySelector('img[alt]:not([alt=""])');if(M||O.trim()||B||j)continue}let z=A;try{z=new URL(A,location.href).toString();}catch{continue}let Y=typeof uniqueSel=="function"?uniqueSel(b):"",q=typeof getNearbyContext=="function"?getNearbyContext(b):{parentTag:E,nearbyHeading:""};m.push({selector:Y,attribute:"aria-label",currentValue:"",issueType:"background_image_unlabeled",wcag:"1.1.1",context:`bg: ${z.slice(0,140)} | tag: ${E} | role: ${F||"(none)"} | parent: ${q.parentTag}${q.nearbyHeading?" | heading: "+q.nearbyHeading:""}`,needsAI:true,imageSrc:z,outerHtml:(b.outerHTML||"").slice(0,300)});}return m},sg={name:"backgroundImages",cap:20,async detect(d){return d.evaluate(KI)}},ZI=()=>{let f=[],m=document.querySelectorAll("h1, h2, h3, h4, h5, h6, [role=heading]");for(let p of Array.from(m)){if(f.length>=15)break;if(p.closest("[class*=asw-], [class*=userway], [class*=acsb]")||typeof isVisible=="function"&&!isVisible(p)||(p.textContent||"").trim().length>0)continue;let b=p.getAttribute("aria-label");if(b&&b.trim()||p.getAttribute("aria-labelledby")||p.getAttribute("aria-hidden")==="true")continue;let v=typeof uniqueSel=="function"?uniqueSel(p):"";f.push({selector:v,attribute:"aria-hidden",currentValue:"",issueType:"empty_heading",wcag:"1.3.1",context:`Empty heading: ${p.tagName.toLowerCase()}`,needsAI:false,needsReview:true,reviewReason:"Empty heading may be a layout anchor populated by JS after load; hiding it from assistive tech could suppress real content.",fixValue:"true",outerHtml:(p.outerHTML||"").slice(0,200)});}return f},lg={cap:15,name:"emptyHeadings",async detect(d){return d.evaluate(ZI)}},QI=()=>{let f=[],m=document.querySelectorAll('a[href^="javascript:"], a[href^="JAVASCRIPT:"]');for(let p of Array.from(m)){if(f.length>=15)break;if(p.closest("[class*=asw-], [class*=userway], [class*=acsb]")||typeof isVisible=="function"&&!isVisible(p))continue;let h=(p.getAttribute("role")||"").toLowerCase();if(h==="button")continue;let b=(p.textContent||"").trim();if(!b)continue;let v=typeof uniqueSel=="function"?uniqueSel(p):"";f.push({selector:v,attribute:"role",currentValue:h||"",issueType:"javascript_link",wcag:"2.1.1",context:`<a href="javascript:..."> text: ${JSON.stringify(b.slice(0,60))}`,needsAI:false,fixValue:"button",outerHtml:(p.outerHTML||"").slice(0,200)});}return f},ug={cap:15,name:"javascriptLinks",async detect(d){return d.evaluate(QI)}};var eL=()=>{let d="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye]",m=[];return document.querySelectorAll("svg").forEach(h=>{if(m.length>=50||h.closest(d)||!isVisible(h)||h.getAttribute("aria-hidden")==="true")return;let v=h.getAttribute("role");if(v==="presentation"||v==="none"||h.closest('[aria-hidden="true"]'))return;let w=h.getAttribute("aria-label")||"",C=h.getAttribute("aria-labelledby")||"",A=h.querySelector("title"),D=A?(A.textContent||"").trim():"";if(w.trim()||C.trim()||D)return;let E=h.getBoundingClientRect(),F=E.width<=16&&E.height<=16;if(E.width<=4||E.height<=4||h.getAttribute("preserveAspectRatio")==="none")return;let _=h.closest('a, button, [role="button"], [role="link"], [onclick]');if(_){if(_.getAttribute("aria-label")?.trim()||_.getAttribute("aria-labelledby")?.trim())return;let O=getAccessibleName(_),B=_.cloneNode(true);B.querySelectorAll("svg").forEach(X=>X.remove());let j=(B.textContent||"").trim().replace(/\s+/g," ");if(O&&j.length>0)return}else {if(F)return;let O=h.parentElement;if(O&&(O.textContent||"").trim().replace(/\s+/g," ").length>3)return}let x=uniqueSel(h),k=getNearbyContext(_||h),T=_&&_.getAttribute("href")||"",I=(_||h).outerHTML.slice(0,300),P=h.getAttribute("class")||"",V=h.getAttribute("data-icon")||"",z=_||h,Y=z&&z!==h&&z.getAttribute("class")||"",q=typeof lookupIconLabel=="function"?lookupIconLabel(String(P),V,"")||lookupIconLabel(String(Y),"",""):null,M=_?uniqueSel(_):x;m.push({selector:M,attribute:"aria-label",currentValue:"",issueType:"svg_missing_name",wcag:"1.1.1",context:JSON.stringify({parentTag:(_||h).tagName?(_||h).tagName.toLowerCase():"svg",href:T,nearbyHeading:k.nearbyHeading,parentRole:k.parentRole,svgClasses:P,iconLib:q||void 0,suggestion:"Add aria-label to the parent interactive element or <title> inside SVG"}),needsAI:!q,fixValue:q||void 0,outerHtml:I});}),m},cg={name:"svgNames",cap:50,async detect(d){return d.evaluate(eL)}};var tL=()=>{let m=[],p=["a[href]","button",'input[type="button"]','input[type="submit"]','input[type="reset"]','input[type="checkbox"]','input[type="radio"]','[role="button"]','[role="link"]','[role="checkbox"]','[role="radio"]','[role="menuitem"]','[role="tab"]','[role="switch"]',"[onclick]"].join(","),h=p;function b(A,D){let E=Array.from(A.getClientRects()).filter(k=>k.height>0);if(!E.length)return false;let F=document.createTreeWalker(D,NodeFilter.SHOW_TEXT),_,x=0;for(;(_=F.nextNode())&&x<400;){x++;let k=_.parentElement;if(!k||A.contains(_)||!/[\p{L}\p{N}]{2,}/u.test(_.textContent||"")||k.closest(h))continue;let T=document.createRange();T.selectNodeContents(_);for(let I of Array.from(T.getClientRects()))if(!(I.width===0||I.height===0)){for(let P of E)if(Math.min(P.bottom,I.bottom)-Math.max(P.top,I.top)>Math.min(P.height,I.height)/2)return true}}return false}function v(A){let D=A.getBoundingClientRect(),E=D.left,F=D.top,_=D.right,x=D.bottom;for(let k of Array.from(A.querySelectorAll("img, svg, picture, video, canvas"))){let T=k.getBoundingClientRect(),I=T.left,P=T.top,V=T.right,z=T.bottom;for(let Y=k.parentElement;Y;Y=Y.parentElement){let q=getComputedStyle(Y),M=Y.getBoundingClientRect();if(q.overflowX!=="visible"&&(I=Math.max(I,M.left),V=Math.min(V,M.right)),q.overflowY!=="visible"&&(P=Math.max(P,M.top),z=Math.min(z,M.bottom)),Y===A)break}V-I<=0||z-P<=0||(E=Math.min(E,I),F=Math.min(F,P),_=Math.max(_,V),x=Math.max(x,z));}return new DOMRect(E,F,_-E,x-F)}let w=document.querySelectorAll(p),C=[];for(let A of w){if(typeof isWidget=="function"&&isWidget(A)||typeof isHiddenFromAT=="function"&&isHiddenFromAT(A)||typeof isVisible=="function"&&!isVisible(A)||!A.offsetParent&&A.tagName!=="BODY")continue;let D=v(A);D.width===0&&D.height===0||C.push({el:A,rect:D});}for(let{el:A,rect:D}of C){if(m.length>=50)break;let E=D.width,F=D.height;if(E>=24&&F>=24)continue;let _=A.parentElement;if(_&&getComputedStyle(A).display==="inline"){if(Array.from(_.childNodes).some(B=>B.nodeType===3&&(B.textContent||"").trim().length>3))continue;let O=_;for(;O&&O!==document.body&&getComputedStyle(O).display.startsWith("inline");)O=O.parentElement;if(O&&b(A,O))continue}let x=false,k=D.left+D.width/2,T=D.top+D.height/2;for(let M of C){if(M.el===A||M.el.contains(A)||A.contains(M.el))continue;if(M.rect.width<24||M.rect.height<24){let B=M.rect.left+M.rect.width/2,j=M.rect.top+M.rect.height/2;if(Math.hypot(k-B,T-j)<24){x=true;break}}else {let B=Math.max(M.rect.left-k,0,k-M.rect.right),j=Math.max(M.rect.top-T,0,T-M.rect.bottom);if(Math.hypot(B,j)<12){x=true;break}}}if(!x&&E>=1&&F>=1)continue;let P=Math.max(0,24-F),z=Math.ceil(P/2),Y=[];Y.push("min-width:24px"),Y.push("min-height:24px"),Y.push("display:inline-block"),Y.push("box-sizing:border-box"),z>0&&Y.push("padding-top:"+z+"px"),z>0&&Y.push("padding-bottom:"+z+"px");let q=typeof uniqueSel=="function"?uniqueSel(A):A.tagName.toLowerCase();m.push({selector:q,attribute:"style",currentValue:Math.round(E)+"x"+Math.round(F)+"px",issueType:"target_too_small",wcag:"2.5.8",context:`${A.tagName.toLowerCase()} is ${Math.round(E)}x${Math.round(F)}px with adjacent targets \u2014 minimum 24x24px or sufficient spacing required`,needsAI:false,fixValue:Y.join(";")+";",outerHtml:A.outerHTML.slice(0,200)});}return m},dg={name:"targetSize",cap:50,async detect(d){return d.evaluate(tL)}};var rL=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=/(line-height|letter-spacing|word-spacing)\s*:[^;!]*!important/i,h=document.querySelectorAll('[style*="important" i]');for(let b of Array.from(h)){if(m.length>=30)break;if(b.closest(d))continue;let v=b.getAttribute("style")||"";if(!p.test(v))continue;let w=[];/line-height\s*:[^;!]*!important/i.test(v)&&w.push("line-height"),/letter-spacing\s*:[^;!]*!important/i.test(v)&&w.push("letter-spacing"),/word-spacing\s*:[^;!]*!important/i.test(v)&&w.push("word-spacing");let C=typeof uniqueSel=="function"?uniqueSel(b):"",A=typeof getNearbyContext=="function"?getNearbyContext(b):{parentTag:b.tagName.toLowerCase(),nearbyHeading:""},D=[];D.push("blocked: "+w.join(",")),D.push("tag: "+b.tagName.toLowerCase()),A.nearbyHeading&&D.push("heading: "+A.nearbyHeading),D.push("parent: "+A.parentTag),m.push({selector:C,attribute:"style",currentValue:v.slice(0,200),issueType:"text_spacing_blocked",wcag:"1.4.12",context:D.join(" | "),needsAI:true,outerHtml:(b.outerHTML||"").slice(0,300)});}return m},fg={name:"textSpacing",cap:30,async detect(d){return d.evaluate(rL)}};var nL=()=>{let d="[class*=asw-], [class*=userway], [class*=acsb], [class*=audioeye], [class*=EquallyAI]",m=[],p=document.querySelectorAll('button, input[type="submit"], input[type="button"], input[type="reset"], [role="button"]');for(let h of p){if(m.length>=50)break;if(h.closest(d)||!isVisible(h))continue;let b=h,v=(b.getAttribute("aria-label")||"").trim(),w=b.getAttribute("aria-labelledby"),C=(b.getAttribute("title")||"").trim(),A=(b.getAttribute("value")||"").trim(),D=(b.textContent||"").trim().replace(/\s+/g," "),E="";w&&(E=typeof __resolveIdRefs=="function"?__resolveIdRefs(w):"");let F=b.querySelector('img[alt]:not([alt=""])'),_=b.querySelector("svg title"),x=b.querySelector("svg[aria-label]");if(!!(v||E||C||A||D||F||_||x))continue;let T=uniqueSel(b),I=getNearbyContext(b),P=b.closest("form"),V=P&&(P.getAttribute("id")||P.getAttribute("name"))||"",z=b.className||"",Y=b.querySelector('i, svg, span[class*="icon"]'),q=Y&&Y.className||"",M=Y&&Y.getAttribute("data-icon")||"",O=Y?(Y.textContent||"").trim():"",B=typeof lookupIconLabel=="function"?lookupIconLabel(String(q),M,O):null,j=!B&&typeof lookupIconLabel=="function"?lookupIconLabel(String(z),"",""):null,X=B||j,J=[];V&&J.push("form: "+V),I.nearbyHeading&&J.push("heading: "+I.nearbyHeading),q&&J.push("icon: "+String(q).slice(0,80)),z&&J.push("class: "+String(z).slice(0,80)),J.push("parent: "+I.parentTag),X&&J.push("icon-lib: "+X),m.push({selector:T,attribute:"aria-label",currentValue:"",issueType:"unlabeled_button",wcag:"4.1.2",context:J.join(" | "),needsAI:!X,fixValue:X||void 0,outerHtml:b.outerHTML.slice(0,300)});}return m},pg={name:"unlabeledButtons",cap:50,async detect(d){return d.evaluate(nL)}};var aL=()=>{let d=new Set(["more","info","click","click here","here","read more","learn more","see more","link","button","this"]),f=new Set(["submit","send","yes","no","next","prev","previous","back","view","details","continue","go","ok","open","close","apply","save"]),m={};function p(O,B){if(isWidget(O)||!isVisible(O))return;let j=getAccessibleName(O);if(!j)return;let X=(B?"b:":"a:")+j.toLowerCase().trim();m[X]=(m[X]||0)+1;}document.querySelectorAll('button, [role="button"], input[type="button"], input[type="submit"]').forEach(O=>p(O,true)),document.querySelectorAll("a[href]").forEach(O=>p(O,false));let h=new Set(["fa","fas","far","fab","fal","fad","material-icons","material-symbols","bi","glyphicon"]),b=["fa-","bi-","icon-","icofont-","dashicons-","heroicon","feather-","lucide-","material-"];function v(O){let B=O.toLowerCase();return h.has(B)||b.some(j=>B.startsWith(j))}let w=/[\u4e00-\u9fff\u3040-\u30ff\uac00-\ud7af]/;function C(O,B){return w.test(O)?1:B}let A=50,D=[];function E(O){if((O.textContent||"").trim().replace(/\s+/g," ").length>0)return false;let j=O.querySelectorAll("i, span, em");for(let X of j)if((typeof X.className=="string"?X.className:"").split(/\s+/).some(v))return true;return false}function F(O){let B=O.className||"";return typeof B!="string"?false:B.split(/\s+/).some(v)}function _(O,B){if(D.length>=A||isWidget(O)||!isVisible(O))return;let j=getAccessibleName(O);if(!j)return;let X=j.toLowerCase().trim(),J=false,te=j.length>=2&&/^[A-Z][A-Z0-9]+$/.test(j.trim()),Z=!B&&/^[[(]?\d{1,4}[\])]?$/.test(j.trim());if(j.length<C(j,3)&&!te&&!Z)J=true;else if(d.has(X))J=true;else if(f.has(X)&&(m[(B?"b:":"a:")+X]||0)>=2){let Ie=(O.getAttribute("aria-label")||"").trim().toLowerCase(),Ae=!!O.getAttribute("aria-labelledby")||!!Ie&&Ie!==X,Se=O.querySelector&&O.querySelector('.sr-only, .visually-hidden, [class*="sr-only"], [class*="visually-hidden"], [class*="screen-reader"]'),$e=Se?(Se.textContent||"").trim().toLowerCase():"";!Ae&&!(Se&&$e!==X)&&(J=true);}else (E(O)||F(O)&&j.length===0)&&(O.getAttribute("aria-label")||O.getAttribute("aria-labelledby")||O.querySelector&&O.querySelector('.sr-only, .visually-hidden, [class*="sr-only"], [class*="visually-hidden"]')||(J=true));if(!J)return;let ne=getNearbyContext(O),ae=uniqueSel(O),ue=O.getAttribute("href")||"",xe=O.outerHTML.slice(0,300);D.push({selector:ae,attribute:"aria-label",currentValue:(O.getAttribute("aria-label")||"").trim(),message:(B?"weak button name: ":"weak link name: ")+(O.getAttribute("aria-label")||O.getAttribute("aria-labelledby")?`"${j}" is too generic for a control \u2014 add distinguishing context`:`text "${j}" is too generic for a control \u2014 add distinguishing context`),issueType:B?"weak_button_name":"weak_link_name",wcag:B?"4.1.2":"2.4.4",...B?{}:{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:j,href:ue,nearbyHeading:ne.nearbyHeading,parentTag:ne.parentTag,parentRole:ne.parentRole,cardText:ne.cardText||"",imgAlt:ne.imgAlt||""}),needsAI:true,outerHtml:xe});}document.querySelectorAll('button, [role="button"], input[type="button"], input[type="submit"]').forEach(O=>_(O,true)),document.querySelectorAll("a[href]").forEach(O=>_(O,false));let x=/^(untitled(?:\s+document)?|new\s+page|new\s+document|home|page\s*\d*|document|untitled)$/i,k=/^(iframe|embed|widget|frame|content|untitled)$/i,T=/^(skip|go|→|\->|main|content)$/i,I=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 P(O){return !!(!O||O.getAttribute("aria-hidden")==="true"||O.closest('[aria-hidden="true"]'))}function V(O,B,j,X,J,te){if(D.length>=A)return;let Z=uniqueSel(O),ne=(O.outerHTML||"").slice(0,300);D.push({selector:Z,attribute:B,currentValue:j,issueType:X,wcag:J,context:JSON.stringify(te),needsAI:true,outerHtml:ne});}let z=document.querySelectorAll("h1,h2,h3,h4,h5,h6");for(let O=0;O<z.length&&!(D.length>=A);O++){let B=z[O];if(!B||isWidget(B)||P(B)||!isVisible(B))continue;let j=getAccessibleName(B);if(!j)continue;let X=j.toLowerCase().trim(),J=X.split(/\s+/).filter(Boolean),te=false;if((j.length<C(j,3)||J.length===1&&(d.has(X)||I.has(X))||/^page\s*\d+$/i.test(X)||/^section\s*\d+$/i.test(X)||/^chapter\s*\d+$/i.test(X)||/^[^\p{L}\p{N}]+$/u.test(j))&&(te=true),!te)continue;let Z=getNearbyContext(B);V(B,"textContent",j,"weak_heading","2.4.6",{currentText:j,tag:B.tagName.toLowerCase(),nearbyHeading:Z.nearbyHeading,parentTag:Z.parentTag,parentRole:Z.parentRole});}let Y=document.querySelectorAll("iframe");for(let O=0;O<Y.length&&!(D.length>=A);O++){let B=Y[O];if(!B||isWidget(B)||P(B))continue;let j=getComputedStyle(B);if(B.getClientRects().length===0||j.visibility==="hidden"||j.visibility==="collapse"||(B.getAttribute("src")||"").trim().toLowerCase().indexOf("javascript:")===0)continue;let X=(B.getAttribute("title")||"").trim();if(!X)continue;let J=X.toLowerCase(),te=false;if((X.length<C(X,3)||k.test(J)||d.has(J))&&(te=true),!te)continue;let Z=(B.getAttribute("src")||"").slice(0,120),ne=getNearbyContext(B);V(B,"title",X,"weak_iframe_title","4.1.2",{currentTitle:X,src:Z,nearbyHeading:ne.nearbyHeading,parentTag:ne.parentTag});}if(D.length<A){let O=document.querySelector("head > title, title"),B=(document.title||"").trim();if(O&&B){let j=B.toLowerCase(),X=false;(B.length<C(B,5)||x.test(j)||/^untitled/i.test(B))&&(X=true),X&&D.push({selector:"title",attribute:"textContent",currentValue:B,issueType:"weak_page_title",wcag:"2.4.2",context:JSON.stringify({currentTitle:B,hostname:typeof location<"u"&&location&&location.hostname||"",pathname:typeof location<"u"&&location&&location.pathname||""}),needsAI:true,outerHtml:(O.outerHTML||"").slice(0,300)});}}let q=document.querySelectorAll("svg");for(let O=0;O<q.length&&!(D.length>=A);O++){let B=q[O];if(!B||isWidget(B)||P(B)||B.getAttribute("role")==="presentation"||B.getAttribute("role")==="none"||!isVisible(B))continue;let j=B.querySelector("title"),X=j?(j.textContent||"").trim():"",J=(B.getAttribute("aria-label")||"").trim(),te=J||X;if(!te)continue;let Z=te.toLowerCase(),ne=false;if((te.length<C(te,3)||d.has(Z)||/^(icon|svg|image|graphic|logo)$/i.test(te))&&(ne=true),!ne)continue;let ae=B.closest('a, button, [role="button"], [role="link"]'),ue=getNearbyContext(B);V(B,J?"aria-label":"title",te,"weak_svg_name","1.1.1",{currentName:te,svgClasses:B.getAttribute("class")||"",parentTag:ae?ae.tagName.toLowerCase():ue.parentTag,parentHref:ae&&ae.getAttribute("href")||"",nearbyHeading:ue.nearbyHeading});}let M=document.querySelectorAll('a[href="#main"], a[href="#main-content"], a[href="#content"], a[href="#skip"], a[href="#maincontent"], a.skip-link, a.skip-nav, a.skip-to-content, a.skiplink, a.skip-navigation, [class*="skip-link"], [class*="skip-nav"]');for(let O=0;O<M.length&&!(D.length>=A);O++){let B=M[O];if(!B||isWidget(B)||P(B))continue;let j=getAccessibleName(B);if(!j)continue;let X=j.toLowerCase().trim(),J=false;if((j.length<C(j,4)||T.test(X)||X==="skip"||X==="skip link"||X==="jump")&&(J=true),!J)continue;let te=B.getAttribute("href")||"";D.push({selector:uniqueSel(B),attribute:"textContent",currentValue:j,issueType:"weak_skip_link",wcag:"2.4.1",context:JSON.stringify({currentText:j,href:te}),needsAI:false,fixValue:"Skip to main content",outerHtml:(B.outerHTML||"").slice(0,300)});}return D},mg={name:"weakNames",cap:50,async detect(d){return d.evaluate(aL)}};var iL=()=>{let f=[],m=document.querySelector('meta[name="viewport"]');if(m){let h=(m.getAttribute("content")||"").trim(),b=h.toLowerCase(),v=false,w=[];(b.indexOf("user-scalable=no")>=0||b.indexOf("user-scalable=0")>=0)&&(v=true,w.push("user-scalable=no blocks pinch-zoom"));let C=b.match(/maximum-scale\s*=\s*([\d.]+)/);C&&parseFloat(C[1])<2&&(v=true,w.push("maximum-scale="+C[1]+" (<2)")),v&&f.push({selector:'meta[name="viewport"]',attribute:"content",currentValue:h,issueType:"zoom_restriction",wcag:"1.4.4",context:"viewport blocks zoom: "+w.join(" | "),needsAI:false,fixValue:"width=device-width, initial-scale=1"});}let p=[{el:document.documentElement,selector:"html"},{el:document.body,selector:"body"}];for(let h=0;h<p.length&&!(f.length>=5);h++){let b=p[h];if(b.el)try{let w=(getComputedStyle(b.el).getPropertyValue("touch-action")||"").trim().toLowerCase();(w==="none"||w==="pinch-zoom")&&f.push({selector:b.selector,attribute:"style",currentValue:"touch-action: "+w,issueType:"zoom_restriction",wcag:"1.4.4",context:"CSS touch-action: "+w+" on <"+b.selector+"> prevents pinch-zoom",needsAI:!1,fixValue:"touch-action: manipulation !important;"});}catch{}}return f},hg={name:"zoomUnlock",cap:5,async detect(d){return d.evaluate(iL)}};var oL=()=>{let d=[],f=document.querySelectorAll('main *, [role="main"] *, body > div *'),m=new Set,p=Math.min(f.length,200);for(let h=0;h<p;h++){let b=f[h];if(m.has(b)||!b.offsetParent)continue;m.add(b);let v=getComputedStyle(b),w=parseInt(v.order||"0",10),C=v.position;if(w>=3){let A=b.getBoundingClientRect();if(A.width>0&&A.height>0){let D=(b.textContent?.trim().length||0)>10,E=!!b.querySelector("a, button, input, select, textarea");(D||E)&&d.push({selector:typeof uniqueSel=="function"?uniqueSel(b):b.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(C==="absolute"){if(!!!b.querySelector("a, button, input, select, textarea"))continue;let D=b.parentElement;if(!D||D.children.length<=2)continue;let E=b.getBoundingClientRect(),F=D.getBoundingClientRect();(E.top<F.top-100||E.left<F.left-300)&&d.push({selector:typeof uniqueSel=="function"?uniqueSel(b):b.tagName.toLowerCase(),attribute:"data-sequence-review",currentValue:`position: ${C}, displaced ${Math.round(Math.abs(E.top-F.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 d},gg={name:"meaningfulSequence",async detect(d){return d.evaluate(oL)}};var vg={name:"sensoryCharacteristics",async detect(d){let f=await d.evaluate(()=>{let p=[],h=document.querySelectorAll('p, li, td, label, span, div, a, button, h1, h2, h3, h4, h5, h6, figcaption, [role="alert"], [role="status"]'),b=Math.min(h.length,300);for(let v=0;v<b;v++){let w=h[v];if(!w.offsetParent||w.children.length>3)continue;let C=w.textContent?.trim()||"";C.length<15||C.length>300||/click|tap|press|select|choose|find|look|see|drag|scroll|hover|go to|navigate/i.test(C)&&p.push({text:C,selector:typeof uniqueSel=="function"?uniqueSel(w):w.tagName.toLowerCase()});}return p.slice(0,20)});if(f.length===0)return [];let m=[];for(let{text:p,selector:h}of f){p.toLowerCase();let v=/\b(round|square|circular|triangular|arrow-shaped)\b.*\b(button|icon|element|thing)\b/i.test(p)&&!/\b(submit|cancel|close|menu|search|delete|edit|save|back|next|previous|home)\b/i.test(p),w=/\b(on the|to the|in the)\s+(left|right|top|bottom|upper|lower|above|below|sidebar)\b/i.test(p)&&!/\b(navigation|menu|header|footer|sidebar menu|breadcrumb)\b/i.test(p)&&/\b(click|tap|press|select|find)\b/i.test(p),C=/\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(p)&&!/\b(submit|cancel|close|delete|save|success|error|warning|danger)\b/i.test(p),A=/\b(large|small|big|tiny|narrow|wide)\s+(button|link|icon|box|area)\b/i.test(p)&&/\b(click|tap|press|select|find)\b/i.test(p);if(v||w||C||A){let D=v?"shape":w?"position":C?"color":"size";m.push({selector:h,attribute:"data-sensory-review",currentValue:p.slice(0,100),issueType:"sensory_characteristic",wcag:"1.3.3",context:`Instruction relies on ${D} alone: "${p.slice(0,80)}". Provide a non-sensory way to identify the referenced element (e.g., by name, label, or function).`,needsAI:true});}}return m}};var sL=()=>{let d=[],f=document.querySelectorAll("img");for(let m of f){if(!m.offsetParent||m.width<50||m.height<20||m.complete&&m.naturalWidth===0)continue;let p=m.src||m.getAttribute("data-src")||"",h=p.indexOf(","),b=(p.toLowerCase().startsWith("data:")&&h!==-1?p.slice(0,h):p).toLowerCase(),v=m.getAttribute("alt")||"",w=m.getAttribute("role")||"";if(m.getAttribute("aria-hidden")==="true"||!!m.closest('[aria-hidden="true"]')||w==="presentation"||w==="none"||m.hasAttribute("alt")&&v.trim()==="")continue;let A=m.width>200&&m.height<80&&m.height>15,D=/banner|header|logo-text|title|heading|cta|promo|offer|button.*\.(?:png|jpg|gif|webp)/i.test(b);if(!(D||A)||/(?:^|\/)(?:img|dsc|dscn|dcim|pict)[-_]?\d|photo|gallery/i.test(b)&&!D)continue;let F=m.closest("a[href]"),_=(()=>{if(!F)return false;let Y=F.getAttribute("href")||"";if(Y==="/"||Y==="")return true;try{let q=new URL(F.href,location.href);return q.origin!==location.origin?!1:!!(q.pathname.replace(/\/+$/,"")===""||/^\/(?:index|home|default)(?:\.\w+)?$/i.test(q.pathname)||/^\/[a-z]{2}(?:-[a-z]{2})?(?:\.\w+)?$/i.test(q.pathname))}catch{return false}})();if(_&&(F.textContent||"").trim().length===0)continue;let k="";if(F&&!_&&(F.textContent||"").trim().length===0)try{let Y=new URL(F.href,location.href),q=v.trim().split(/\s+/).filter(Boolean);if(Y.origin!==location.origin&&/^https?:$/.test(Y.protocol)&&q.length>0&&q.length<=4&&v.trim().length<=40){let M=J=>J.toLowerCase().normalize("NFKD").replace(/[^\p{L}\p{N}]/gu,""),O=M(v),B=Y.hostname.toLowerCase().split(".").filter(J=>J&&J!=="www"),j=(B.length>1?B.slice(0,-1):B).map(M).filter(Boolean);k=O.length>=3&&(O===M(B.join(""))||O===j.join("")||j.some(J=>O===J||J.length>=5&&O.startsWith(J)))?"exempt":"review";}}catch{}let T=!!m.closest('header, [role="banner"], footer, [role="contentinfo"]'),I=m.height>0&&m.height<=120,P=T&&I,V=/logo|brand|wordmark|hero|banner-?(?:img|image)?|footer|marketing|promo|cover|screenshot|dashboard/i,z=P||V.test(b)||V.test(m.className)||V.test(m.id||"");b.includes("icon")||b.includes("avatar")||b.includes("emoji")||d.push({selector:typeof uniqueSel=="function"?uniqueSel(m):"img",attribute:"data-image-of-text",currentValue:b.split("/").pop()?.slice(0,60)||"",issueType:"image_of_text",wcag:"1.4.5",context:`Image may contain text (${m.width}x${m.height}px, alt="${v.slice(0,40)}"). Use real text with CSS styling instead.`,needsAI:true,imageSrc:m.src,...z||k?{needsReview:true,reviewReason:P?"small graphic in the header/footer landmark \u2014 likely a logo, wordmark, or brand signature, which are exempt under WCAG 1.4.5 (logotypes)":k==="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":k==="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 d},bg={name:"imagesOfText",async detect(d){return d.evaluate(sL)}};var yg={name:"reflow",async detect(d){let f=d;if(!f.setViewport)return [];let m=f.viewport?.()??{width:1280,height:720},p=m.width??1280,h=m.height??720;try{return await f.setViewport({width:320,height:h}),await new Promise(v=>setTimeout(v,500)),await d.evaluate(v=>{let w=[],C=document.querySelectorAll("body *"),A=Math.min(C.length,500);for(let D=0;D<A;D++){let E=C[D];if(!E.offsetParent)continue;let F=E.tagName.toLowerCase();if(F==="script"||F==="style"||F==="noscript")continue;let _=E.getBoundingClientRect();_.right>v+5&&_.width>v*1.1&&w.push({selector:typeof uniqueSel=="function"?uniqueSel(E):F,attribute:"style",currentValue:`${Math.round(_.width)}px wide at ${v}px viewport`,issueType:"reflow_overflow",wcag:"1.4.10",context:`Element is ${Math.round(_.width)}px wide and overflows the ${v}px viewport by ${Math.round(_.right-v)}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>v+10&&w.push({selector:"html",attribute:"data-reflow",currentValue:`scrollWidth ${document.documentElement.scrollWidth}px at ${v}px viewport`,issueType:"reflow_overflow",wcag:"1.4.10",context:`Page has horizontal scrollbar at ${v}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 f.setViewport({width:p,height:h}).catch(()=>{});}}};var lL=()=>{let d=[],f=document.querySelectorAll("video");for(let p of f){if(p.autoplay&&!p.muted&&d.push({selector:typeof uniqueSel=="function"?uniqueSel(p):"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"}),!(p.offsetParent!==null&&getComputedStyle(p).display!=="none"))continue;let b=p.getBoundingClientRect();if(b.width===0&&b.height===0||p.error)continue;let v=/mute|unmute|sound|volume|audio|play|pause/i,w=!!p.parentElement?.querySelector('button, [role="button"]')||!!p.id&&!!document.querySelector('[aria-controls~="'+p.id.replace(/"/g,"")+'"]');for(let _=p.parentElement?.parentElement||null,x=0;_&&!w&&x<3;_=_.parentElement,x++)w=Array.from(_.querySelectorAll('button, [role="button"]')).some(k=>v.test((k.getAttribute("aria-label")||"")+" "+(k.getAttribute("title")||"")+" "+(k.textContent||"")));if((p.muted||p.hasAttribute("muted"))&&(p.loop||p.hasAttribute("loop"))&&!p.hasAttribute("controls")&&!w)continue;let C=p.querySelectorAll("track"),A=Array.from(C).find(_=>_.kind==="captions"||_.kind==="subtitles"),D=Array.from(C).find(_=>_.kind==="descriptions");p.src||p.querySelector("source")?.src||"";let F=typeof uniqueSel=="function"?uniqueSel(p):"video";A||d.push({selector:F,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. Add: <track kind="captions" src="captions.vtt" srclang="en" label="English">',needsAI:false,fixValue:'Add <track kind="captions" src="captions.vtt" srclang="en" label="English" default>',needsReview:true,reviewReason:"cannot verify an audio track in-page \u2014 confirm the video has speech content before adding captions (silent videos need none)"}),D||d.push({selector:F,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 m=document.querySelectorAll("audio");for(let p of m){let h=typeof uniqueSel=="function"?uniqueSel(p):"audio";p.closest("figure, div, section")?.querySelector('a[href*="transcript"], [class*="transcript"]')||d.push({selector:h,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}),p.autoplay&&!p.muted&&d.push({selector:h,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 d},wg={name:"mediaAlternatives",cap:50,async detect(d){return (await d.evaluate(lL)).slice(0,50)}};var uL=()=>{let d=[],f=document.querySelector('meta[http-equiv="refresh"]');if(f){let T=f.getAttribute("content")||"",I=parseInt(T,10);!isNaN(I)&&I>0&&I<72e3&&d.push({selector:`meta[http-equiv="refresh"][content*="${T.trim().slice(0,20)}"]`,attribute:"data-auto-refresh",currentValue:T,issueType:"auto_refresh",wcag:"2.2.1",context:`Page auto-refreshes after ${I}s. Users must be able to turn off, adjust, or extend time limits (WCAG 2.2.1).`,needsAI:false,manualFix:true});}let m=document.querySelectorAll("[accesskey]");for(let T of m){let I=T.getAttribute("accesskey")||"";if(I.length===1){let P=typeof uniqueSel=="function"?uniqueSel(T):T.tagName.toLowerCase();d.push({selector:P,attribute:"accesskey",currentValue:I,issueType:"character_key_shortcut",wcag:"2.1.4",context:`Single character accesskey "${I}". 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 p=document.querySelectorAll("select");for(let T of p){let I=T.hasAttribute("onchange"),P=T.getAttribute("onchange")||"";if(I&&/submit|location|href|navigate|window\./i.test(P)){let V=typeof uniqueSel=="function"?uniqueSel(T):"select";d.push({selector:V,attribute:"onchange",currentValue:P.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 h=document.querySelectorAll("[ontouchstart], [ontouchmove], [ongesturestart], [ongesturechange]");for(let T of h)if(!(T.hasAttribute("onclick")||T.hasAttribute("onkeydown")||T.hasAttribute("onkeyup"))){let P=typeof uniqueSel=="function"?uniqueSel(T):T.tagName.toLowerCase();d.push({selector:P,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 b=document.querySelectorAll("[onmousedown]");for(let T of b){let I=T.hasAttribute("onmouseup"),P=T.tagName.toLowerCase();if(!I&&P!=="a"&&P!=="button"&&P!=="input"){let V=typeof uniqueSel=="function"?uniqueSel(T):P;d.push({selector:V,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 v=document.querySelectorAll("script:not([src])");for(let T of v){let I=T.textContent||"";if(/devicemotion|deviceorientation|accelerometer|gyroscope/i.test(I)){d.push({selector:"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 w=document.querySelectorAll("form"),C='input:not([type="hidden"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]), select, textarea',A=/\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,D=/card|payment/i,E=/\b(?:pay|buy|purchase|donate|subscribe and pay|place (?:your |my )?order|complete (?:order|purchase|payment)|confirm (?:order|purchase|payment)|check ?out)\b/i,F=/\b(?:delete|remove|close|deactivate|cancel|terminate)\b[^.]{0,30}\b(?:account|profile|subscription|membership|data|records?)\b/i,_=/\b(?:e-?)?sign\b(?![\s\u00a0-]*(?:up|in|on|out)\b)|\bagree and (?:submit|continue|sign)\b/i,x=/\b(?:save|update|change)\b/i,k=/e-?mail|name|phone|tel\b|zip|postal|company|organi[sz]ation|country/i;for(let T of w){let I=Array.from(T.querySelectorAll(C)),P=Se=>[Se.getAttribute("name"),Se.id,Se.getAttribute("autocomplete"),Se.getAttribute("placeholder"),Se.getAttribute("aria-label")].join(" "),V=Array.from(T.querySelectorAll('button, input[type="submit"], input[type="image"]')).filter(Se=>Se.tagName!=="BUTTON"||!Se.getAttribute("type")||(Se.getAttribute("type")||"").toLowerCase()==="submit").map(Se=>(Se.getAttribute("value")||"")+" "+(Se.textContent||"")+" "+(Se.getAttribute("aria-label")||"")).join(" . "),z=I.some(Se=>A.test(P(Se)))||Array.from(T.querySelectorAll("iframe")).some(Se=>D.test((Se.getAttribute("title")||"")+" "+(Se.getAttribute("name")||""))),Y=I.some(Se=>/signature/i.test(P(Se))),q=z||E.test(V),M=F.test(V),O=Y||_.test(V),B=I.length>0&&I.some(Se=>(Se.getAttribute("type")||"").toLowerCase()==="email"||/e-?mail/i.test(P(Se)))&&I.every(Se=>{let $e=Se.tagName.toLowerCase()==="input"?(Se.getAttribute("type")||"text").toLowerCase():Se.tagName.toLowerCase();return $e==="email"||$e==="checkbox"||$e==="tel"?true:$e==="text"||$e==="search"?k.test(P(Se)+" "+(Se.closest("label")?.textContent||"")):false}),j=(T.textContent||"").toLowerCase(),X=/payment|credit card|billing|purchase|\border\b|checkout|bank|account number/i.test(j),J=/\bagree|terms|contract|binding|signature|consent|waiver/i.test(j),te=/delete.*account|remove.*data|cancel.*account/i.test(j),Z=q||M||O,ne=B&&(x.test(V)||te),ae=!Z&&(!B&&(X||J||te)||ne);if(!Z&&!ae)continue;let ue=!!T.querySelector('[type="checkbox"][required], [class*="confirm"], [id*="confirm"], [name*="confirm"]'),xe=!!T.querySelector('[class*="review"], [class*="summary"], [id*="review"]');if(ue||xe)continue;let Ie=typeof uniqueSel=="function"?uniqueSel(T):"form",Ae=Z?q?"financial":M?"data-deletion":"legal":ne?te?"data-deletion":"data-modification":X?"financial":J?"legal":"data-deletion";d.push({selector:Ie,attribute:"data-error-prevention",currentValue:Ae,issueType:"error_prevention_missing",wcag:"3.3.4",context:`${Ae.charAt(0).toUpperCase()+Ae.slice(1)} form lacks a confirmation/review step. For ${Ae} transactions, provide: (1) a review step before submission, (2) ability to check/correct input, or (3) ability to reverse the submission.`,needsAI:true,...ae?{needsReview:true,reviewReason:ne&&te?"form text is about deleting an account or data and its submit is generic \u2014 confirm whether submitting it deletes stored user data":ne?"form saves contact/account details \u2014 confirm whether submitting it changes stored user data that cannot be reviewed or reversed":`form text mentions ${Ae} topics but its controls show no ${Ae} transaction (no payment fields, pay/order/delete submit, or signature) \u2014 confirm whether submitting it commits the user`}:{}});}return d},xg={name:"timingAndInput",async detect(d){return d.evaluate(uL)}};var cL=()=>{let d=[],f=document.querySelectorAll('nav, [role="navigation"]');for(let h of f){if(!h.offsetParent||h.closest('footer, aside, [role="contentinfo"], [role="complementary"]')||h.parentElement?.closest('nav, [role="navigation"]'))continue;let b=h.getBoundingClientRect();if(b.top<=window.innerHeight)continue;let v=typeof uniqueSel=="function"?uniqueSel(h):"nav";d.push({selector:v,attribute:"data-nav-position",currentValue:`top: ${Math.round(b.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 m=document.querySelectorAll('[class*="blink" i], [class*="flash" i], [class*="strobe" i], blink, marquee');for(let h of m){if(!h.offsetParent)continue;let b=h.getBoundingClientRect();if(b.width<1||b.height<1||!(h.textContent||"").trim()&&!h.querySelector("img, svg, video, canvas, picture")&&getComputedStyle(h).backgroundImage==="none")continue;let v=typeof uniqueSel=="function"?uniqueSel(h):h.tagName.toLowerCase();d.push({selector:v,attribute:"data-flashing",currentValue:h.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 p=document.querySelectorAll('img[src*=".gif"]');for(let h of p){if(!h.offsetParent||h.width<25||h.height<25)continue;let b=h.getBoundingClientRect();if(b.width>100&&b.height>100){let v=typeof uniqueSel=="function"?uniqueSel(h):"img";d.push({selector:v,attribute:"data-animated-gif",currentValue:(h.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 d},Dg={name:"navigationAndWayfinding",async detect(d){return d.evaluate(cL)}};var _g={name:"flashDetection",async detect(d){let f=[];if(!d.screenshot)return f;let p=await d.evaluate(()=>{let D=document.documentElement.style.getPropertyValue("--wa-animations-frozen")==="1";if(D){let E=document.querySelectorAll("*");for(let F of E)F.style.removeProperty("animation-play-state"),F.style.removeProperty("transition");}return D}),h=8,b=120,v=9,w=3,C=[];for(let A=0;A<h;A++){let D=await d.evaluate(E=>{let F=window.innerWidth,_=window.innerHeight,x=3,k=3,T=[];for(let I=0;I<k;I++)for(let P=0;P<x;P++){let V=Math.floor((P+.5)*(F/x)),z=Math.floor((I+.5)*(_/k)),Y=document.elementFromPoint(V,z);if(!Y){T.push(0);continue}let M=getComputedStyle(Y).backgroundColor||"rgba(0,0,0,0)",O=typeof parseCssColor=="function"?parseCssColor(M):null;if(!O){T.push(0);continue}let B=.2126*O[0]+.7152*O[1]+.0722*O[2];T.push(B);}return T},v);C.push(D),A<h-1&&await new Promise(E=>setTimeout(E,b));}p&&await d.evaluate(()=>{let A=document.querySelectorAll("*");for(let D of A)D.style.setProperty("animation-play-state","paused","important"),D.style.setProperty("transition","none","important");});for(let A=0;A<v;A++){let D=0,E=C[0][A],F=null;for(let k=1;k<h;k++){let T=C[k][A];if(Math.abs(T-E)>25){let P=T>E?"up":"down";F&&P!==F&&D++,F=P;}E=T;}let _=h*b/1e3,x=D/_;if(x>=w){let k=A%3,T=Math.floor(A/3);f.push({selector:"body",attribute:"data-flash-detected",currentValue:`${x.toFixed(1)} flashes/sec in region (${k},${T})`,issueType:"flashing_content",wcag:"2.3.1",context:`Content flashes ${x.toFixed(1)} times/second in screen region (row ${T}, col ${k}). 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 f}};var Ag={name:"reducedMotion",async detect(d){let f=[],m=await d.evaluate(()=>{let p=false,h=false;for(let v of document.styleSheets)try{for(let w of v.cssRules){let C=w.cssText||"";/animation|transition|@keyframes/i.test(C)&&!/prefers-reduced-motion/.test(C)&&(p=!0),w instanceof CSSMediaRule&&/prefers-reduced-motion/i.test(w.conditionText||w.media?.mediaText||"")&&(h=!0);}}catch{}let b=document.querySelectorAll('[class*="animate"], [class*="slide"], [class*="fade"], [class*="bounce"], [class*="spin"], [class*="pulse"]');return b.length>0&&(p=true),{hasAnimations:p,hasReducedMotionQuery:h,animatedCount:b.length}});return m.hasAnimations&&!m.hasReducedMotionQuery&&f.push({selector:"html",attribute:"data-reduced-motion",currentValue:`${m.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; } }"}),f}};var PL=[mg,tg,cg,Ch,Eh,Yh,Gh,zh,dg,Ih,ng,Bh,pg,Hh,Nh,og,Sh,eg,Uh,qh,Ph,Kh,Mh,Oh,jh,Qh,Wh,hg,Th,Jh,Rh,Fh,Xh,ag,fg,rg,Lh,sg,lg,ug,kh,Zh,ig,gg,vg,bg,yg,wg,xg,Dg,_g,Ag];async function Lu(d,f,m,p){let h=f??[];try{let{UNIQUE_SELECTOR_JS:T,IS_VISIBLE_JS:I,ACCESSIBLE_NAME_JS:P,WIDGET_SKIP_JS:V,IS_HIDDEN_FROM_AT_JS:z,IS_TRACKING_PIXEL_JS:Y,NEARBY_CONTEXT_JS:q}=await Promise.resolve().then(()=>(Cg(),Eg)),{ICON_LABELS_JS:M}=await Promise.resolve().then(()=>(kg(),Sg)),{COLOR_MATH_JS:O}=await Promise.resolve().then(()=>(Rg(),Tg)),j=`if(typeof __name==='undefined'){var __name=function(t,v){return t};var __defProp=Object.defineProperty;}
|
|
379
379
|
`+[T,I,P,V,z,Y,q,M,O].join(`
|
|
380
|
-
`),{inject:X}=await Promise.resolve().then(()=>(Ir(),fn));try{await X(d,{tool:"detector-helpers",content:j});}catch{await d.evaluate(`(0,eval)(${JSON.stringify(j)})`);}}catch(T){console.warn("[webability] helper injection failed:",T.message),(m??[]).push("color:kernel-injection-failed");}let b=[];try{let{detectPlatform:T,applyPlatformTemplates:I}=await Promise.resolve().then(()=>(Pg(),Lg)),P=await T(d);b=await I(d,P);}catch{}let{guardDetectorState:v}=await Promise.resolve().then(()=>(Ir(),fn)),w=globalThis.process?.env?.WA_STRICT_STATE==="1",C={strict:w,bugs:p?.internalBugs},A=await v(d,"detectors:parallel",m??[],()=>Promise.allSettled(PL.map(async T=>{try{let I=await T.detect(d);return T.cap&&I.length>=T.cap&&h.push({detector:T.name,cap:T.cap}),I}catch{return []}})),C),D=[];p?.skipFocusMutating&&(m??[]).push("focus:mutating-detectors-skipped (live-tab scan; focus visibility and focus obscured were not checked)");let E=[...p?.skipFocusMutating?[]:[$h,Vh],...p?.extraSerialDetectors??[]];for(let T of E){let I=[];try{I=await v(d,T.name,m??[],()=>T.detect(d).catch(()=>[]),C);}catch(P){if(w)throw P}try{T.cap&&I.length>=T.cap&&h.push({detector:T.name,cap:T.cap}),D=D.concat(I);}catch{}}let F=[...A.flatMap(T=>T.status==="fulfilled"?T.value:[]),...D],_=[...b,...F],x=OL(_),k=["wp-ada-compliance","webability-widget","webability-a11y","asw-","userway","acsb","audioeye","equallyai"];return x.filter(T=>{let I=T.selector.toLowerCase();return I.trim()?!k.some(P=>I.includes(P)):false})}async function ML(d){try{return await d.evaluate(()=>{let f=getComputedStyle(document.documentElement),m={};for(let C of f)C.startsWith("--")&&/color|bg|background|text|primary|secondary|accent/i.test(C)&&(m[C]=f.getPropertyValue(C).trim());let p={},h={},b=document.querySelectorAll("body *:not(script):not(style):not(noscript)"),v=Math.min(b.length,500);for(let C=0;C<v;C++){let A=getComputedStyle(b[C]);if(A.display==="none"||A.visibility==="hidden")continue;let D=A.backgroundColor,E=A.color;D&&D!=="rgba(0, 0, 0, 0)"&&(p[D]=(p[D]||0)+1),E&&(h[E]=(h[E]||0)+1);}let w=C=>Object.entries(C).sort((A,D)=>D[1]-A[1]).slice(0,8).map(([A,D])=>({color:A,count:D}));return {cssVars:m,topBgColors:w(p),topTextColors:w(h)}})}catch{return {cssVars:{},topBgColors:[],topTextColors:[]}}}function OL(d){let f=new Set;return d.filter(m=>{let p=`${m.selector}::${m.issueType}`;return f.has(p)?false:(f.add(p),true)})}var Mg="1.9.0";var Pu=["wcag2a","wcag2aa","wcag21aa","wcag22aa"];function Mu(d){return d.includes("wcag21aa")||d.includes("wcag22aa")||d.includes("wcag134")?{"css-orientation-lock":{enabled:true}}:{}}function Og(d,f){return f==="AAA"&&!d.includes("wcag2aaa")?[...d,"wcag2aaa"]:d}var Ng={"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.1":"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 zo(d){return Ng[d]??"AA"}var ni={A:1,AA:2,AAA:3};function qg(d){let f=String(d.wcag||"").split(/[,\s]+/).filter(p=>/^\d+\.\d+\.\d+$/.test(p));if(f.length===0)return d.level??"AA";let m="AAA";for(let p of f)ni[zo(p)]<ni[m]&&(m=zo(p));return m}function Tn(d,f="AA"){let m=ni[f]??ni.AA;return d.filter(p=>ni[qg(p)]<=m)}var NL=new Set(["new_window_link","external_link_warning","download_link_warning"]);function Bg(d){let f=NL.has(d.issueType)?"minor":d.needsAI?"serious":"moderate",m=d.attribute==="style",p=d.attribute.startsWith("data-"),h=m&&d.fixValue?qL(d.fixValue):d.fixValue;return {id:`wa-${d.issueType}-${ai(d.selector)}`,source:"webability",type:d.issueType,wcag:d.wcag,level:zo(d.wcag),impact:f,message:BL(d,h,p),selector:d.selector,html:d.outerHtml,...d.needsReview?{confidence:"needs_review"}:{},...d.reviewReason?{reviewReason:d.reviewReason}:{},fix:{attribute:d.attribute,currentValue:d.currentValue,suggestedValue:h,needsManualReview:d.needsAI||m||p||!!d.needsReview||!!d.manualFix}}}function qL(d){let f=d.trim();if(!f)return "";let m=f.endsWith(";"),h=f.split(";").map(b=>{let w=b.toLowerCase().lastIndexOf("!important");return w===-1?b.trim():b.slice(0,w).trim()}).filter(b=>b.length>0);return h.length===0?"":h.join(";")+(m?";":"")}function BL(d,f,m){if(d.message)return d.message;let p=d.issueType.replace(/_/g," "),h=f??d.fixValue;return m?h?`${p}: ${h}`:d.currentValue?`${p}: ${d.currentValue}`:d.context?`${p}: ${d.context}`:p:h?`${p}: set ${d.attribute}="${h}"`:d.currentValue?`${p}: ${d.attribute} is "${d.currentValue}"`:`${p}: missing ${d.attribute}`}function Qn(d){return Array.isArray(d)?d.flat(1/0).filter(m=>typeof m=="string").join(" >>> "):typeof d=="string"?d:""}function ai(d){let f=0;for(let m=0;m<d.length;m++)f=(f<<5)-f+d.charCodeAt(m)|0;return Math.abs(f).toString(36)}function Ou(d){return d==="critical"||d==="serious"||d==="moderate"||d==="minor"?d:"moderate"}function Nu(d,f=[]){return {total:d.length,critical:d.filter(m=>m.impact==="critical").length,serious:d.filter(m=>m.impact==="serious").length,moderate:d.filter(m=>m.impact==="moderate").length,minor:d.filter(m=>m.impact==="minor").length,incomplete:0}}function qu(d){let f=/^wcag(\d)(\d)(\d{1,2})$/.exec(d);return f?`${f[1]}.${f[2]}.${f[3]}`:""}function Bu(d){for(let f of d){let m=qu(f);if(m)return m}return ""}function Hu(d){return d.includes("wcag2aaa")?"AAA":d.includes("wcag2aa")||d.includes("wcag21aa")||d.includes("wcag22aa")?"AA":"A"}async function Vu(d,f){try{let{AxeBuilder:m}=await import('@axe-core/playwright');return await new m({page:d}).options({rules:Mu(f)}).withTags(f).analyze()}catch{return HL(d,f)}}async function HL(d,f){let m=await Promise.resolve().then(()=>Tu(Go())),p=m.source??m.default?.source;if(!p)throw new Error("axe-core source unavailable");try{await d.evaluate(p);}catch{let{inject:b}=await Promise.resolve().then(()=>(Ir(),fn));await b(d,{tool:"axe",content:p});}return await d.evaluate(({wcagTags:b,rules:v})=>new Promise((w,C)=>{let A=window;if(!A.axe)return C(new Error("axe-core not loaded"));A.axe.run(document,{runOnly:{type:"tag",values:b},rules:v,resultTypes:["violations","incomplete"]}).then(w).catch(C);}),{wcagTags:f,rules:Mu(f)})}function $u(d){let f=[],m=[];for(let p of d)p.confidence==="needs_review"||$L(p)?m.push(p):f.push(VL(p));return {verdicts:f,undecided:m}}function VL(d){if(d.confidence===void 0&&d.reviewReason===void 0)return d;let{confidence:f,reviewReason:m,...p}=d;return p}function $L(d){let f=(d.type||"").toLowerCase(),m=d.wcag||"",p=d.html||"",h=(d.message||"").toLowerCase();if((f==="contrast_insufficient"||f==="color-contrast"||m==="1.4.3"||m==="1.4.11")&&jL(p))return "background uses gradient or image";if(f==="image_of_text"||m==="1.4.5"){let b=Vg(p,"src").toLowerCase();b.startsWith("data:")&&(b=b.split(",")[0]);let v=Vg(p,"alt").toLowerCase();if(/\b(logo|brand|wordmark|hero|banner|footer|marketing|promo|cover)\b/.test(b))return "brand imagery";if(v.length>0&&/\b(logo|brand|product screenshot|dashboard)\b/.test(v))return "branded imagery"}return (f==="inconsistent_navigation"||h.includes("inconsistent navigation"))&&(/<footer/i.test(p)||/<aside/i.test(p))?"footer/aside nav":""}function jL(d){return /background(-image)?\s*:\s*(?:linear-gradient|radial-gradient|conic-gradient|url\()/i.test(d)}function Vg(d,f){let m=new RegExp(`\\b${f}\\s*=\\s*"([^"]*)"`,"i"),p=d.match(m);return p?p[1]:""}Ir();var zL=60,GL=3,UL=120,WL=1200,XL=300,YL=2e5,JL=8e3,KL=new Set(["bgImage","bgGradient","bgOverlap","elmPartiallyObscured","elmPartiallyObscuring"]),ZL="*,*::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 QL(d){let{selectors:f,maxBoxes:m,maxW:p,maxH:h,maxArea:b}=d,v=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,C=document.createElement("canvas");C.width=C.height=1;let A=C.getContext("2d",{willReadFrequently:true}),D=T=>{try{A.clearRect(0,0,1,1),A.fillStyle="#000",A.fillStyle=T,A.fillRect(0,0,1,1);let I=A.getImageData(0,0,1,1).data;return [I[0],I[1],I[2],I[3]]}catch{return null}},E={},F=document.querySelectorAll("video,canvas,iframe,embed,object");if(F.length>200){for(let T of f)E[T]=null;return E}let _=Array.from(F).map(T=>T.getBoundingClientRect()),x=window.scrollX,k=window.scrollY;for(let T of f){E[T]=null;let I=null;try{I=document.querySelector(T);}catch{continue}if(!I)continue;let P=getComputedStyle(I);if(P.visibility!=="visible"||P.display==="none"||P.webkitBackgroundClip==="text"||P.backgroundClip==="text")continue;let V=false,z=0;for(let ae=I;ae;ae=ae.parentElement){if(++z>64){V=true;break}let ue=getComputedStyle(ae);parseFloat(ue.opacity)<1&&(V=true),(ue.transform!=="none"||ue.mixBlendMode!=="normal"||ue.filter!=="none")&&(V=true);}if(V)continue;let Y=D(P.color);if(!Y||Y[3]<255)continue;let q=parseFloat(P.fontSize),M=parseInt(P.fontWeight,10)>=700,O=q>=24||M&&q>=18.66,B=[],j=I.getBoundingClientRect();if(j.height>h*m||j.width>p*2)continue;let X=document.createTreeWalker(I,NodeFilter.SHOW_TEXT),J,te=0,Z=false;for(;!Z&&(J=X.nextNode());){if(++te>50){Z=true;break}if(J.parentElement!==I)continue;let ae=J.textContent||"";if(ae.length>2e3){Z=true;break}if(!ae.trim())continue;let ue=document.createRange();ue.selectNodeContents(J);let xe=ue.getClientRects();if(xe.length>m){Z=true;break}for(let Ie=0;Ie<xe.length;Ie++){let Ae=xe[Ie];if(!(Ae.width<2||Ae.height<2)&&(B.push({x:Math.round(Ae.left+x),y:Math.round(Ae.top+k),w:Math.max(1,Math.round(Ae.width)),h:Math.max(1,Math.round(Ae.height))}),B.length>m)){Z=true;break}}}Z||B.length===0||B.length>m||B.some(ae=>ae.w>p||ae.h>h||ae.w*ae.h>b||ae.x<0||ae.y<0||ae.x+ae.w>v||ae.y+ae.h>w)||B.some(ae=>_.some(ue=>ae.x<ue.right+x&&ae.x+ae.w>ue.left+x&&ae.y<ue.bottom+k&&ae.y+ae.h>ue.top+k))||(E[T]={fg:`rgb(${Y[0]},${Y[1]},${Y[2]})`,threshold:O?3:4.5,boxes:B});}return E}async function eP(d){let{b64:f,fg:m}=d,p=atob(f),h=new Uint8Array(p.length);for(let V=0;V<p.length;V++)h[V]=p.charCodeAt(V);let b=await createImageBitmap(new Blob([h],{type:"image/png"})),v=document.createElement("canvas");v.width=b.width,v.height=b.height;let w=v.getContext("2d",{willReadFrequently:true});w.drawImage(b,0,0);let C=w.getImageData(0,0,v.width,v.height).data,A=V=>{let z=V/255;return z<=.03928?z/12.92:Math.pow((z+.055)/1.055,2.4)},D=(V,z,Y)=>.2126*A(V)+.7152*A(z)+.0722*A(Y),E=m.match(/\d+/g).map(Number),F=D(E[0],E[1],E[2]),_=Math.max(1,Math.floor(Math.sqrt(v.width*v.height/1500))),x=0,k=1/0,T="",I="",P=0;for(let V=0;V<v.height;V+=_)for(let z=0;z<v.width;z+=_){let Y=(V*v.width+z)*4;if(C[Y+3]<255)continue;let q=D(C[Y],C[Y+1],C[Y+2]),M=Math.max(F,q),O=Math.min(F,q),B=(M+.05)/(O+.05);B>x&&(x=B,I=`rgb(${C[Y]},${C[Y+1]},${C[Y+2]})`),B<k&&(k=B,T=`rgb(${C[Y]},${C[Y+1]},${C[Y+2]})`),P++;}return P===0?null:{best:x,worst:k,worstBg:T,bestBg:I}}var Uo=class extends Error{};function oi(d,f){let m=f-Date.now();if(m<=0)return Promise.reject(new Uo("pixel pass deadline"));let p,h=new Promise((b,v)=>{p=setTimeout(()=>v(new Uo("pixel pass deadline")),m);});return Promise.race([d,h]).finally(()=>clearTimeout(p))}async function ju(d,f){let m=d.screenshot;if(typeof m!="function"||f.length===0)return [];let p=Array.from(new Set(f)).slice(0,zL),h=[],b=false,v=Date.now()+JL;try{await oi(d.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),v);let w=await oi(d.evaluate(QL,{selectors:p,maxBoxes:GL,maxW:WL,maxH:XL,maxArea:YL}),v);await oi(Fu(d,{tool:"contrast-pixels",css:ZL}),v),b=!0;let C=0;for(let A of p){let D=w[A];if(!D)continue;if(Date.now()>v||C+D.boxes.length>UL)break;let E=0,F=1/0,_="",x="",k=!0;for(let T of D.boxes){C++;let I=await oi(m.call(d,{clip:{x:T.x,y:T.y,width:T.w,height:T.h},fullPage:!0,type:"png",animations:"disabled"}),v),P=globalThis.Buffer,V=P?P.from(I).toString("base64"):"",z=await oi(d.evaluate(eP,{b64:V,fg:D.fg}),v);if(!z){k=!1;break}z.best>E&&(E=z.best,x=z.bestBg),z.worst<F&&(F=z.worst,_=z.worstBg);}k&&h.push({selector:A,fail:E<D.threshold*.97,bestRatio:E,worstRatio:F,..._?{worstBg:_}:{},...x?{bestBg:x}:{},threshold:D.threshold,fg:D.fg});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("pixel judge failed",w);}finally{if(b)try{await Promise.race([d.evaluate(()=>document.querySelectorAll('style[data-wa-injected^="contrast-pixels:"]').forEach(w=>w.remove())),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return h}function tP(d,f){let{confidence:m,reviewReason:p,...h}=d;return {...h,id:d.id.replace("axe-incomplete-","axe-"),impact:"serious",message:`contrast: ${f.fg} text on its rendered background is at best ${f.bestRatio.toFixed(2)}:1 (measured from pixels, every background pixel behind the text fails), needs ${f.threshold}:1`}}async function $g(d,f,m,p){let h=f.filter(A=>A.wcag!=="1.4.3"||!A.selector?false:A.source==="axe-core"?KL.has(m.get(A.id)??""):A.type==="contrast_insufficient"&&/gradient or image/.test(A.reviewReason??""));if(h.length===0)return [];let b=await ju(d,h.map(A=>A.selector));if(p)for(let A of b)p.set(A.selector,A);globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error(`pixel judge: ${h.length} candidates, ${b.length} measured, ${b.filter(A=>A.fail).length} fail`);let v=new Map(b.filter(A=>A.fail).map(A=>[A.selector,A])),w=[],C=new Set;for(let A of h){let D=v.get(A.selector);!D||C.has(A.selector)||(C.add(A.selector),w.push(tP(A,D)));}return w}function rP(d){d=d.replace("#",""),d.length===3&&(d=d[0]+d[0]+d[1]+d[1]+d[2]+d[2]);let f=parseInt(d,16);return [f>>16&255,f>>8&255,f&255]}function nP(d,f,m){return "#"+[d,f,m].map(p=>Math.round(p).toString(16).padStart(2,"0")).join("")}function zu(d){let f=d/255;return f<=.03928?f/12.92:Math.pow((f+.055)/1.055,2.4)}function ea(d,f,m){return .2126*zu(d)+.7152*zu(f)+.0722*zu(m)}function Gu(d,f){let m=Math.max(d,f),p=Math.min(d,f);return (m+.05)/(p+.05)}function Ur(d){if(d.startsWith("#"))return rP(d);let f=d.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return f?[parseInt(f[1]),parseInt(f[2]),parseInt(f[3])]:null}function Bt(d,f){let m=Ur(d),p=Ur(f);return !m||!p?0:Gu(ea(...m),ea(...p))}function ta(d,f,m=4.5){let p=Ur(d),h=Ur(f);if(!p||!h)return null;let b=ea(...h),v=Gu(ea(...p),b);if(v>=m)return null;let C=ea(...p)>b,A=0,D=1,E=p;for(let x=0;x<20;x++){let k=(A+D)/2,T=C?[p[0]*(1-k),p[1]*(1-k),p[2]*(1-k)]:[p[0]+(255-p[0])*k,p[1]+(255-p[1])*k,p[2]+(255-p[2])*k],I=ea(T[0],T[1],T[2]);Gu(I,b)>=m?(E=T,D=k):A=k;}let F=nP(E[0],E[1],E[2]),_=Bt(F,f);return {currentColor:d,suggestedColor:F,currentRatio:Math.round(v*100)/100,suggestedRatio:Math.round(_*100)/100,requiredRatio:m,bgColor:f}}var aP=30,iP=10,Xg=2e4,oP=30,sP=400*1024,Yg="https://openrouter.ai/api/v1",Jg="anthropic/claude-haiku-4.5",Wu="deepseek/deepseek-v4-flash",jg=400,zg=125,Uu=160,lP=2e3,si=new Map;function uP(){si.clear();}function cP(d){let f=0;for(let m=0;m<d.length;m++)f=(f<<5)-f+d.charCodeAt(m)|0;return Math.abs(f).toString(36)}var Xu=d=>d.wcag||d.type,Gg=(d,f,m)=>`${d}|${f.selector}|${Xu(f)}|${cP(m)}`,Yu=()=>!!globalThis.process?.env?.WA_DEBUG_JUDGE;function dP(d){let{selectors:f,maxHtml:m}=d,p={elements:{}},h=[],b=T=>/\(\s*prefers-reduced-motion\s*(:\s*reduce\s*)?\)/i.test(T)&&!/^\s*not\b/i.test(T),v=T=>{let I=T.split(",").map(P=>P.trim()).filter(Boolean);return I.length?I.every(P=>{let V=P.match(/^(-?[\d.]+)(ms|s)$/i);return V?parseFloat(V[1])*(V[2].toLowerCase()==="s"?1e3:1)<=10:false}):false},w=(T,I,P)=>{if(!(P>8))for(let V of Array.from(T)){let z=V.media?.mediaText,Y=I||typeof z=="string"&&b(z),q=V.style,M=V.selectorText;if(Y&&q&&typeof M=="string"){let j=q.getPropertyValue("animation-name").trim(),X=/^none(\s*,\s*none)*$/i.test(j)||v(q.getPropertyValue("animation-duration"))||/^paused/i.test(q.getPropertyValue("animation-play-state").trim()),J=/^none(\s*,\s*none)*$/i.test(q.getPropertyValue("transition-property").trim())||v(q.getPropertyValue("transition-duration"));(X||J)&&h.push({selector:M,anim:X,trans:J});}let O=V.cssRules;O&&O.length&&w(O,Y,P+1);let B=V.styleSheet;if(B)try{w(B.cssRules,Y||b(V.media?.mediaText||""),P+1);}catch{}}};try{for(let T of Array.from(document.styleSheets))try{w(T.cssRules,b(T.media?.mediaText||""),0);}catch{}}catch{}let C=(T,I)=>{try{return T.matches(I)}catch{return false}},A=T=>T.split(",").map(I=>{let P=I.trim().match(/^(-?[\d.]+)(ms|s)$/i);return P?parseFloat(P[1])*(P[2].toLowerCase()==="s"?1e3:1):0}),D=T=>{let I=T.cloneNode(true);I.querySelectorAll("script, style").forEach(V=>V.remove());let P=(I.textContent||"").replace(/\s+/g," ").trim();if(!P){for(let V of Array.from(T.querySelectorAll("img[alt], [aria-label]")))if(P=(V.getAttribute("alt")||V.getAttribute("aria-label")||"").trim(),P)break}return P},E=T=>{let I=(T.getAttribute("aria-label")||"").trim();if(I)return I;let V=(T.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).map(q=>{let M=document.getElementById(q);return M?(M.textContent||"").replace(/\s+/g," ").trim():""}).filter(Boolean).join(" ");if(V)return V;let z=D(T);if(z)return z;let Y=T instanceof HTMLInputElement&&/^(submit|button|reset|image)$/i.test(T.type)?(T.value||T.alt||"").trim():"";return Y||(T.getAttribute("title")||"").trim()},F='a[href], button, input:not([type="hidden"]), select, textarea, summary, [role="button"], [role="link"], [role="menuitem"], [role="tab"], [role="img"], [tabindex]:not([tabindex="-1"])',_=window.scrollX||0,x=window.scrollY||0,k=[];for(let T of f){let I=null;try{I=document.querySelector(T);}catch{}if(!I){p.elements[T]={found:false};continue}let P=k.indexOf(I);P<0&&(P=k.push(I)-1);let V=getComputedStyle(I),z=I.getBoundingClientRect(),Y=I.tagName.toLowerCase(),q={found:true,elementKey:P,tag:Y,html:(I.outerHTML||"").slice(0,m),rect:{x:z.left+_,y:z.top+x,w:z.width,h:z.height},role:(I.getAttribute("role")||"").toLowerCase(),ariaHidden:I.getAttribute("aria-hidden")==="true"||!!I.closest('[aria-hidden="true"]'),hidden:V.display==="none"||V.visibility==="hidden"||!!I.closest("[hidden]"),cssBackgroundImage:/url\(/i.test(V.backgroundImage||""),reducedMotionHandled:false,nearText:"",fg:V.color,bg:V.backgroundColor,fontSize:parseFloat(V.fontSize)||0,fontWeight:parseInt(V.fontWeight,10)||400};if(Y==="img"){let J=I;q.img={src:(J.currentSrc||J.getAttribute("src")||"").slice(0,300),alt:J.getAttribute("alt"),naturalW:J.naturalWidth||0,naturalH:J.naturalHeight||0,attrW:parseInt(J.getAttribute("width")||"0",10)||0,attrH:parseInt(J.getAttribute("height")||"0",10)||0};}if(q.cssBackgroundImage){let J=I.closest(F);J&&(q.control={tag:J.tagName.toLowerCase(),name:E(J).slice(0,120)});}if(!/^(img|video|canvas|iframe|object|embed|svg)$/.test(Y)){let J=V.animationName.split(",").some(ue=>ue.trim()&&ue.trim()!=="none")&&A(V.animationDuration).some(ue=>ue>10),te=A(V.transitionDuration).some(ue=>ue>10)&&V.transitionProperty.trim()!=="none",Z=h.filter(ue=>C(I,ue.selector)),ne=!J||Z.some(ue=>ue.anim),ae=!te||Z.some(ue=>ue.trans);q.reducedMotionHandled=(J||te)&&ne&&ae;}let M=I.closest('a[href], button, [role="button"], [role="link"]');if(M&&M!==I){let J=M.cloneNode(true);J.querySelectorAll("img, svg").forEach(ne=>ne.remove());let te=(J.textContent||"").replace(/\s+/g," ").trim(),Z=(M.getAttribute("aria-label")||"").trim();q.parentInteractive={tag:M.tagName.toLowerCase(),text:(te||Z).slice(0,120)};}let O=J=>{let te=J.cloneNode(true);return te.querySelectorAll("script, style").forEach(Z=>Z.remove()),(te.textContent||"").replace(/\s+/g," ").trim()},B=I.matches('a[href], [role="link"]'),j=O(I),X=I.parentElement;if(B&&(X=I.closest("p, li, td, th, dd, dt, figcaption, blockquote")||I.parentElement),X){let J=O(X),te=B&&j?J.indexOf(j):-1,Z=te>120?te-120:0;q.nearText=(Z?"\u2026":"")+J.slice(Z,Z+240);}p.elements[T]=q;}return p}function fP(d,f){let m=(d.type||"").toLowerCase(),p=d.wcag||"";return m==="decorative_image_with_title"?"generic":p==="1.1.1"&&(f?.tag==="img"||/alt|image/.test(m))?"alt":p==="1.4.3"||p==="1.4.6"||m==="color-contrast"||m==="contrast_insufficient"||m==="contrast_enhanced"?"contrast":p==="2.2.2"||p==="2.3.3"||/motion|animation|reduced_motion/.test(m)?"motion":"generic"}function Ju(d){return !!d&&d.tag!=="img"&&d.cssBackgroundImage&&!d.img}var pP=/\b(needs?|requires?|for)\s+(a\s+)?(human|manual)?\s*review\b|\bhuman review\b|\bmanual review\b|\bincomplete\b/gi;function mP(d){let f=String(d??"").replace(/\s+/g," ").replace(pP,"judged").trim();if(f.length<=Uu)return f;let m=f.slice(0,Uu-1),p=m.lastIndexOf(" ");return (p>Uu/2?m.slice(0,p):m).replace(/[\s,;:–—-]+$/,"")+"\u2026"}function hP(d){let f=String(d??"").replace(/\s+/g," ").trim();if(f=f.replace(/^(an?\s+|the\s+)?(image|picture|photo|photograph|graphic|icon|illustration|screenshot)\s+(of|showing|depicting)(\s+|$)(an?\s+|the\s+)?/i,""),f=f.replace(/^["'“”]+|["'“”]+$/g,"").trim(),f.length>zg){f=f.slice(0,zg);let m=f.lastIndexOf(" ");m>60&&(f=f.slice(0,m)),f=f.replace(/[\s,;:–—-]+$/,"");}return f&&(f=f[0].toUpperCase()+f.slice(1)),f}function ra(d){let f=d.match(/\d+(\.\d+)?/g);return !f||f.length<3?d:"#"+f.slice(0,3).map(m=>Math.round(Number(m)).toString(16).padStart(2,"0")).join("")}var Kg=/^#?([0-9a-f]{6})$/i;function gP(d){let f=String(d??"").trim().match(Kg);return f?"#"+f[1].toLowerCase():null}function vP(d){let{confidence:f,reviewReason:m,...p}=d;return {...p,id:d.id.replace("axe-incomplete-","axe-")}}function bP(d){let f=d;if(typeof d=="string"){let h=d.replace(/```json\s*/gi,"").replace(/```/g,"").match(/\[[\s\S]*\]/);if(!h)return null;try{f=JSON.parse(h[0]);}catch{return null}}else d&&typeof d=="object"&&Array.isArray(d.verdicts)&&(f=d.verdicts);if(!Array.isArray(f))return null;let m=[];for(let p of f){if(!p||typeof p!="object")continue;let{id:h,verdict:b,reason:v,fix:w}=p;if(typeof h!="string"||b!=="pass"&&b!=="violation")continue;let C=w&&typeof w=="object"?w:void 0;m.push({id:h,verdict:b,reason:typeof v=="string"?v:void 0,fix:C?{attribute:typeof C.attribute=="string"?C.attribute:void 0,value:typeof C.value=="string"?C.value:void 0}:void 0});}return m}var na=class extends Error{},Zg=`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.
|
|
380
|
+
`),{inject:X}=await Promise.resolve().then(()=>(Ir(),fn));try{await X(d,{tool:"detector-helpers",content:j});}catch{await d.evaluate(`(0,eval)(${JSON.stringify(j)})`);}}catch(T){console.warn("[webability] helper injection failed:",T.message),(m??[]).push("color:kernel-injection-failed");}let b=[];try{let{detectPlatform:T,applyPlatformTemplates:I}=await Promise.resolve().then(()=>(Pg(),Lg)),P=await T(d);b=await I(d,P);}catch{}let{guardDetectorState:v}=await Promise.resolve().then(()=>(Ir(),fn)),w=globalThis.process?.env?.WA_STRICT_STATE==="1",C={strict:w,bugs:p?.internalBugs},A=await v(d,"detectors:parallel",m??[],()=>Promise.allSettled(PL.map(async T=>{try{let I=await T.detect(d);return T.cap&&I.length>=T.cap&&h.push({detector:T.name,cap:T.cap}),I}catch{return []}})),C),D=[];p?.skipFocusMutating&&(m??[]).push("focus:mutating-detectors-skipped (live-tab scan; focus visibility and focus obscured were not checked)");let E=[...p?.skipFocusMutating?[]:[$h,Vh],...p?.extraSerialDetectors??[]];for(let T of E){let I=[];try{I=await v(d,T.name,m??[],()=>T.detect(d).catch(()=>[]),C);}catch(P){if(w)throw P}try{T.cap&&I.length>=T.cap&&h.push({detector:T.name,cap:T.cap}),D=D.concat(I);}catch{}}let F=[...A.flatMap(T=>T.status==="fulfilled"?T.value:[]),...D],_=[...b,...F],x=OL(_),k=["wp-ada-compliance","webability-widget","webability-a11y","asw-","userway","acsb","audioeye","equallyai"];return x.filter(T=>{let I=T.selector.toLowerCase();return I.trim()?!k.some(P=>I.includes(P)):false})}async function ML(d){try{return await d.evaluate(()=>{let f=getComputedStyle(document.documentElement),m={};for(let C of f)C.startsWith("--")&&/color|bg|background|text|primary|secondary|accent/i.test(C)&&(m[C]=f.getPropertyValue(C).trim());let p={},h={},b=document.querySelectorAll("body *:not(script):not(style):not(noscript)"),v=Math.min(b.length,500);for(let C=0;C<v;C++){let A=getComputedStyle(b[C]);if(A.display==="none"||A.visibility==="hidden")continue;let D=A.backgroundColor,E=A.color;D&&D!=="rgba(0, 0, 0, 0)"&&(p[D]=(p[D]||0)+1),E&&(h[E]=(h[E]||0)+1);}let w=C=>Object.entries(C).sort((A,D)=>D[1]-A[1]).slice(0,8).map(([A,D])=>({color:A,count:D}));return {cssVars:m,topBgColors:w(p),topTextColors:w(h)}})}catch{return {cssVars:{},topBgColors:[],topTextColors:[]}}}function OL(d){let f=new Set;return d.filter(m=>{let p=`${m.selector}::${m.issueType}`;return f.has(p)?false:(f.add(p),true)})}var Mg="1.10.0";var Pu=["wcag2a","wcag2aa","wcag21aa","wcag22aa"];function Mu(d){return d.includes("wcag21aa")||d.includes("wcag22aa")||d.includes("wcag134")?{"css-orientation-lock":{enabled:true}}:{}}function Og(d,f){return f==="AAA"&&!d.includes("wcag2aaa")?[...d,"wcag2aaa"]:d}var Ng={"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.1":"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 zo(d){return Ng[d]??"AA"}var ni={A:1,AA:2,AAA:3};function qg(d){let f=String(d.wcag||"").split(/[,\s]+/).filter(p=>/^\d+\.\d+\.\d+$/.test(p));if(f.length===0)return d.level??"AA";let m="AAA";for(let p of f)ni[zo(p)]<ni[m]&&(m=zo(p));return m}function Tn(d,f="AA"){let m=ni[f]??ni.AA;return d.filter(p=>ni[qg(p)]<=m)}var NL=new Set(["new_window_link","external_link_warning","download_link_warning"]);function Bg(d){let f=NL.has(d.issueType)?"minor":d.needsAI?"serious":"moderate",m=d.attribute==="style",p=d.attribute.startsWith("data-"),h=m&&d.fixValue?qL(d.fixValue):d.fixValue;return {id:`wa-${d.issueType}-${ai(d.selector)}`,source:"webability",type:d.issueType,wcag:d.wcag,level:zo(d.wcag),impact:f,message:BL(d,h,p),selector:d.selector,html:d.outerHtml,...d.needsReview?{confidence:"needs_review"}:{},...d.reviewReason?{reviewReason:d.reviewReason}:{},fix:{attribute:d.attribute,currentValue:d.currentValue,suggestedValue:h,needsManualReview:d.needsAI||m||p||!!d.needsReview||!!d.manualFix}}}function qL(d){let f=d.trim();if(!f)return "";let m=f.endsWith(";"),h=f.split(";").map(b=>{let w=b.toLowerCase().lastIndexOf("!important");return w===-1?b.trim():b.slice(0,w).trim()}).filter(b=>b.length>0);return h.length===0?"":h.join(";")+(m?";":"")}function BL(d,f,m){if(d.message)return d.message;let p=d.issueType.replace(/_/g," "),h=f??d.fixValue;return m?h?`${p}: ${h}`:d.currentValue?`${p}: ${d.currentValue}`:d.context?`${p}: ${d.context}`:p:h?`${p}: set ${d.attribute}="${h}"`:d.currentValue?`${p}: ${d.attribute} is "${d.currentValue}"`:`${p}: missing ${d.attribute}`}function Qn(d){return Array.isArray(d)?d.flat(1/0).filter(m=>typeof m=="string").join(" >>> "):typeof d=="string"?d:""}function ai(d){let f=0;for(let m=0;m<d.length;m++)f=(f<<5)-f+d.charCodeAt(m)|0;return Math.abs(f).toString(36)}function Ou(d){return d==="critical"||d==="serious"||d==="moderate"||d==="minor"?d:"moderate"}function Nu(d,f=[]){return {total:d.length,critical:d.filter(m=>m.impact==="critical").length,serious:d.filter(m=>m.impact==="serious").length,moderate:d.filter(m=>m.impact==="moderate").length,minor:d.filter(m=>m.impact==="minor").length,incomplete:0}}function qu(d){let f=/^wcag(\d)(\d)(\d{1,2})$/.exec(d);return f?`${f[1]}.${f[2]}.${f[3]}`:""}function Bu(d){for(let f of d){let m=qu(f);if(m)return m}return ""}function Hu(d){return d.includes("wcag2aaa")?"AAA":d.includes("wcag2aa")||d.includes("wcag21aa")||d.includes("wcag22aa")?"AA":"A"}async function Vu(d,f){try{let{AxeBuilder:m}=await import('@axe-core/playwright'),p=typeof d.mainFrame=="function"?d:d.axePage?.()??d;return await new m({page:p}).options({rules:Mu(f)}).withTags(f).analyze()}catch{return HL(d,f)}}async function HL(d,f){let m=await Promise.resolve().then(()=>Tu(Go())),p=m.source??m.default?.source;if(!p)throw new Error("axe-core source unavailable");try{await d.evaluate(p);}catch{let{inject:b}=await Promise.resolve().then(()=>(Ir(),fn));await b(d,{tool:"axe",content:p});}return await d.evaluate(({wcagTags:b,rules:v})=>new Promise((w,C)=>{let A=window;if(!A.axe)return C(new Error("axe-core not loaded"));A.axe.run(document,{runOnly:{type:"tag",values:b},rules:v,resultTypes:["violations","incomplete"]}).then(w).catch(C);}),{wcagTags:f,rules:Mu(f)})}function $u(d){let f=[],m=[];for(let p of d)p.confidence==="needs_review"||$L(p)?m.push(p):f.push(VL(p));return {verdicts:f,undecided:m}}function VL(d){if(d.confidence===void 0&&d.reviewReason===void 0)return d;let{confidence:f,reviewReason:m,...p}=d;return p}function $L(d){let f=(d.type||"").toLowerCase(),m=d.wcag||"",p=d.html||"",h=(d.message||"").toLowerCase();if((f==="contrast_insufficient"||f==="color-contrast"||m==="1.4.3"||m==="1.4.11")&&jL(p))return "background uses gradient or image";if(f==="image_of_text"||m==="1.4.5"){let b=Vg(p,"src").toLowerCase();b.startsWith("data:")&&(b=b.split(",")[0]);let v=Vg(p,"alt").toLowerCase();if(/\b(logo|brand|wordmark|hero|banner|footer|marketing|promo|cover)\b/.test(b))return "brand imagery";if(v.length>0&&/\b(logo|brand|product screenshot|dashboard)\b/.test(v))return "branded imagery"}return (f==="inconsistent_navigation"||h.includes("inconsistent navigation"))&&(/<footer/i.test(p)||/<aside/i.test(p))?"footer/aside nav":""}function jL(d){return /background(-image)?\s*:\s*(?:linear-gradient|radial-gradient|conic-gradient|url\()/i.test(d)}function Vg(d,f){let m=new RegExp(`\\b${f}\\s*=\\s*"([^"]*)"`,"i"),p=d.match(m);return p?p[1]:""}Ir();var zL=60,GL=3,UL=120,WL=1200,XL=300,YL=2e5,JL=8e3,KL=new Set(["bgImage","bgGradient","bgOverlap","elmPartiallyObscured","elmPartiallyObscuring"]),ZL="*,*::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 QL(d){let{selectors:f,maxBoxes:m,maxW:p,maxH:h,maxArea:b}=d,v=document.documentElement.scrollWidth,w=document.documentElement.scrollHeight,C=document.createElement("canvas");C.width=C.height=1;let A=C.getContext("2d",{willReadFrequently:true}),D=T=>{try{A.clearRect(0,0,1,1),A.fillStyle="#000",A.fillStyle=T,A.fillRect(0,0,1,1);let I=A.getImageData(0,0,1,1).data;return [I[0],I[1],I[2],I[3]]}catch{return null}},E={},F=document.querySelectorAll("video,canvas,iframe,embed,object");if(F.length>200){for(let T of f)E[T]=null;return E}let _=Array.from(F).map(T=>T.getBoundingClientRect()),x=window.scrollX,k=window.scrollY;for(let T of f){E[T]=null;let I=null;try{I=document.querySelector(T);}catch{continue}if(!I)continue;let P=getComputedStyle(I);if(P.visibility!=="visible"||P.display==="none"||P.webkitBackgroundClip==="text"||P.backgroundClip==="text")continue;let V=false,z=0;for(let ae=I;ae;ae=ae.parentElement){if(++z>64){V=true;break}let ue=getComputedStyle(ae);parseFloat(ue.opacity)<1&&(V=true),(ue.transform!=="none"||ue.mixBlendMode!=="normal"||ue.filter!=="none")&&(V=true);}if(V)continue;let Y=D(P.color);if(!Y||Y[3]<255)continue;let q=parseFloat(P.fontSize),M=parseInt(P.fontWeight,10)>=700,O=q>=24||M&&q>=18.66,B=[],j=I.getBoundingClientRect();if(j.height>h*m||j.width>p*2)continue;let X=document.createTreeWalker(I,NodeFilter.SHOW_TEXT),J,te=0,Z=false;for(;!Z&&(J=X.nextNode());){if(++te>50){Z=true;break}if(J.parentElement!==I)continue;let ae=J.textContent||"";if(ae.length>2e3){Z=true;break}if(!ae.trim())continue;let ue=document.createRange();ue.selectNodeContents(J);let xe=ue.getClientRects();if(xe.length>m){Z=true;break}for(let Ie=0;Ie<xe.length;Ie++){let Ae=xe[Ie];if(!(Ae.width<2||Ae.height<2)&&(B.push({x:Math.round(Ae.left+x),y:Math.round(Ae.top+k),w:Math.max(1,Math.round(Ae.width)),h:Math.max(1,Math.round(Ae.height))}),B.length>m)){Z=true;break}}}Z||B.length===0||B.length>m||B.some(ae=>ae.w>p||ae.h>h||ae.w*ae.h>b||ae.x<0||ae.y<0||ae.x+ae.w>v||ae.y+ae.h>w)||B.some(ae=>_.some(ue=>ae.x<ue.right+x&&ae.x+ae.w>ue.left+x&&ae.y<ue.bottom+k&&ae.y+ae.h>ue.top+k))||(E[T]={fg:`rgb(${Y[0]},${Y[1]},${Y[2]})`,threshold:O?3:4.5,boxes:B});}return E}async function eP(d){let{b64:f,fg:m}=d,p=atob(f),h=new Uint8Array(p.length);for(let V=0;V<p.length;V++)h[V]=p.charCodeAt(V);let b=await createImageBitmap(new Blob([h],{type:"image/png"})),v=document.createElement("canvas");v.width=b.width,v.height=b.height;let w=v.getContext("2d",{willReadFrequently:true});w.drawImage(b,0,0);let C=w.getImageData(0,0,v.width,v.height).data,A=V=>{let z=V/255;return z<=.03928?z/12.92:Math.pow((z+.055)/1.055,2.4)},D=(V,z,Y)=>.2126*A(V)+.7152*A(z)+.0722*A(Y),E=m.match(/\d+/g).map(Number),F=D(E[0],E[1],E[2]),_=Math.max(1,Math.floor(Math.sqrt(v.width*v.height/1500))),x=0,k=1/0,T="",I="",P=0;for(let V=0;V<v.height;V+=_)for(let z=0;z<v.width;z+=_){let Y=(V*v.width+z)*4;if(C[Y+3]<255)continue;let q=D(C[Y],C[Y+1],C[Y+2]),M=Math.max(F,q),O=Math.min(F,q),B=(M+.05)/(O+.05);B>x&&(x=B,I=`rgb(${C[Y]},${C[Y+1]},${C[Y+2]})`),B<k&&(k=B,T=`rgb(${C[Y]},${C[Y+1]},${C[Y+2]})`),P++;}return P===0?null:{best:x,worst:k,worstBg:T,bestBg:I}}var Uo=class extends Error{};function oi(d,f){let m=f-Date.now();if(m<=0)return Promise.reject(new Uo("pixel pass deadline"));let p,h=new Promise((b,v)=>{p=setTimeout(()=>v(new Uo("pixel pass deadline")),m);});return Promise.race([d,h]).finally(()=>clearTimeout(p))}async function ju(d,f){let m=d.screenshot;if(typeof m!="function"||f.length===0)return [];let p=Array.from(new Set(f)).slice(0,zL),h=[],b=false,v=Date.now()+JL;try{await oi(d.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),v);let w=await oi(d.evaluate(QL,{selectors:p,maxBoxes:GL,maxW:WL,maxH:XL,maxArea:YL}),v);await oi(Fu(d,{tool:"contrast-pixels",css:ZL}),v),b=!0;let C=0;for(let A of p){let D=w[A];if(!D)continue;if(Date.now()>v||C+D.boxes.length>UL)break;let E=0,F=1/0,_="",x="",k=!0;for(let T of D.boxes){C++;let I=await oi(m.call(d,{clip:{x:T.x,y:T.y,width:T.w,height:T.h},fullPage:!0,type:"png",animations:"disabled"}),v),P=globalThis.Buffer,V=P?P.from(I).toString("base64"):"",z=await oi(d.evaluate(eP,{b64:V,fg:D.fg}),v);if(!z){k=!1;break}z.best>E&&(E=z.best,x=z.bestBg),z.worst<F&&(F=z.worst,_=z.worstBg);}k&&h.push({selector:A,fail:E<D.threshold*.97,bestRatio:E,worstRatio:F,..._?{worstBg:_}:{},...x?{bestBg:x}:{},threshold:D.threshold,fg:D.fg});}}catch(w){globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error("pixel judge failed",w);}finally{if(b)try{await Promise.race([d.evaluate(()=>document.querySelectorAll('style[data-wa-injected^="contrast-pixels:"]').forEach(w=>w.remove())),new Promise(w=>setTimeout(w,1e3))]);}catch{}}return h}function tP(d,f){let{confidence:m,reviewReason:p,...h}=d;return {...h,id:d.id.replace("axe-incomplete-","axe-"),impact:"serious",message:`contrast: ${f.fg} text on its rendered background is at best ${f.bestRatio.toFixed(2)}:1 (measured from pixels, every background pixel behind the text fails), needs ${f.threshold}:1`}}async function $g(d,f,m,p){let h=f.filter(A=>A.wcag!=="1.4.3"||!A.selector?false:A.source==="axe-core"?KL.has(m.get(A.id)??""):A.type==="contrast_insufficient"&&/gradient or image/.test(A.reviewReason??""));if(h.length===0)return [];let b=await ju(d,h.map(A=>A.selector));if(p)for(let A of b)p.set(A.selector,A);globalThis.process?.env?.WA_DEBUG_PIXELS&&console.error(`pixel judge: ${h.length} candidates, ${b.length} measured, ${b.filter(A=>A.fail).length} fail`);let v=new Map(b.filter(A=>A.fail).map(A=>[A.selector,A])),w=[],C=new Set;for(let A of h){let D=v.get(A.selector);!D||C.has(A.selector)||(C.add(A.selector),w.push(tP(A,D)));}return w}function rP(d){d=d.replace("#",""),d.length===3&&(d=d[0]+d[0]+d[1]+d[1]+d[2]+d[2]);let f=parseInt(d,16);return [f>>16&255,f>>8&255,f&255]}function nP(d,f,m){return "#"+[d,f,m].map(p=>Math.round(p).toString(16).padStart(2,"0")).join("")}function zu(d){let f=d/255;return f<=.03928?f/12.92:Math.pow((f+.055)/1.055,2.4)}function ea(d,f,m){return .2126*zu(d)+.7152*zu(f)+.0722*zu(m)}function Gu(d,f){let m=Math.max(d,f),p=Math.min(d,f);return (m+.05)/(p+.05)}function Ur(d){if(d.startsWith("#"))return rP(d);let f=d.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return f?[parseInt(f[1]),parseInt(f[2]),parseInt(f[3])]:null}function Bt(d,f){let m=Ur(d),p=Ur(f);return !m||!p?0:Gu(ea(...m),ea(...p))}function ta(d,f,m=4.5){let p=Ur(d),h=Ur(f);if(!p||!h)return null;let b=ea(...h),v=Gu(ea(...p),b);if(v>=m)return null;let C=ea(...p)>b,A=0,D=1,E=p;for(let x=0;x<20;x++){let k=(A+D)/2,T=C?[p[0]*(1-k),p[1]*(1-k),p[2]*(1-k)]:[p[0]+(255-p[0])*k,p[1]+(255-p[1])*k,p[2]+(255-p[2])*k],I=ea(T[0],T[1],T[2]);Gu(I,b)>=m?(E=T,D=k):A=k;}let F=nP(E[0],E[1],E[2]),_=Bt(F,f);return {currentColor:d,suggestedColor:F,currentRatio:Math.round(v*100)/100,suggestedRatio:Math.round(_*100)/100,requiredRatio:m,bgColor:f}}var aP=30,iP=10,Xg=2e4,oP=30,sP=400*1024,Yg="https://openrouter.ai/api/v1",Jg="anthropic/claude-haiku-4.5",Wu="deepseek/deepseek-v4-flash",jg=400,zg=125,Uu=160,lP=2e3,si=new Map;function uP(){si.clear();}function cP(d){let f=0;for(let m=0;m<d.length;m++)f=(f<<5)-f+d.charCodeAt(m)|0;return Math.abs(f).toString(36)}var Xu=d=>d.wcag||d.type,Gg=(d,f,m)=>`${d}|${f.selector}|${Xu(f)}|${cP(m)}`,Yu=()=>!!globalThis.process?.env?.WA_DEBUG_JUDGE;function dP(d){let{selectors:f,maxHtml:m}=d,p={elements:{}},h=[],b=T=>/\(\s*prefers-reduced-motion\s*(:\s*reduce\s*)?\)/i.test(T)&&!/^\s*not\b/i.test(T),v=T=>{let I=T.split(",").map(P=>P.trim()).filter(Boolean);return I.length?I.every(P=>{let V=P.match(/^(-?[\d.]+)(ms|s)$/i);return V?parseFloat(V[1])*(V[2].toLowerCase()==="s"?1e3:1)<=10:false}):false},w=(T,I,P)=>{if(!(P>8))for(let V of Array.from(T)){let z=V.media?.mediaText,Y=I||typeof z=="string"&&b(z),q=V.style,M=V.selectorText;if(Y&&q&&typeof M=="string"){let j=q.getPropertyValue("animation-name").trim(),X=/^none(\s*,\s*none)*$/i.test(j)||v(q.getPropertyValue("animation-duration"))||/^paused/i.test(q.getPropertyValue("animation-play-state").trim()),J=/^none(\s*,\s*none)*$/i.test(q.getPropertyValue("transition-property").trim())||v(q.getPropertyValue("transition-duration"));(X||J)&&h.push({selector:M,anim:X,trans:J});}let O=V.cssRules;O&&O.length&&w(O,Y,P+1);let B=V.styleSheet;if(B)try{w(B.cssRules,Y||b(V.media?.mediaText||""),P+1);}catch{}}};try{for(let T of Array.from(document.styleSheets))try{w(T.cssRules,b(T.media?.mediaText||""),0);}catch{}}catch{}let C=(T,I)=>{try{return T.matches(I)}catch{return false}},A=T=>T.split(",").map(I=>{let P=I.trim().match(/^(-?[\d.]+)(ms|s)$/i);return P?parseFloat(P[1])*(P[2].toLowerCase()==="s"?1e3:1):0}),D=T=>{let I=T.cloneNode(true);I.querySelectorAll("script, style").forEach(V=>V.remove());let P=(I.textContent||"").replace(/\s+/g," ").trim();if(!P){for(let V of Array.from(T.querySelectorAll("img[alt], [aria-label]")))if(P=(V.getAttribute("alt")||V.getAttribute("aria-label")||"").trim(),P)break}return P},E=T=>{let I=(T.getAttribute("aria-label")||"").trim();if(I)return I;let V=(T.getAttribute("aria-labelledby")||"").split(/\s+/).filter(Boolean).map(q=>{let M=document.getElementById(q);return M?(M.textContent||"").replace(/\s+/g," ").trim():""}).filter(Boolean).join(" ");if(V)return V;let z=D(T);if(z)return z;let Y=T instanceof HTMLInputElement&&/^(submit|button|reset|image)$/i.test(T.type)?(T.value||T.alt||"").trim():"";return Y||(T.getAttribute("title")||"").trim()},F='a[href], button, input:not([type="hidden"]), select, textarea, summary, [role="button"], [role="link"], [role="menuitem"], [role="tab"], [role="img"], [tabindex]:not([tabindex="-1"])',_=window.scrollX||0,x=window.scrollY||0,k=[];for(let T of f){let I=null;try{I=document.querySelector(T);}catch{}if(!I){p.elements[T]={found:false};continue}let P=k.indexOf(I);P<0&&(P=k.push(I)-1);let V=getComputedStyle(I),z=I.getBoundingClientRect(),Y=I.tagName.toLowerCase(),q={found:true,elementKey:P,tag:Y,html:(I.outerHTML||"").slice(0,m),rect:{x:z.left+_,y:z.top+x,w:z.width,h:z.height},role:(I.getAttribute("role")||"").toLowerCase(),ariaHidden:I.getAttribute("aria-hidden")==="true"||!!I.closest('[aria-hidden="true"]'),hidden:V.display==="none"||V.visibility==="hidden"||!!I.closest("[hidden]"),cssBackgroundImage:/url\(/i.test(V.backgroundImage||""),reducedMotionHandled:false,nearText:"",fg:V.color,bg:V.backgroundColor,fontSize:parseFloat(V.fontSize)||0,fontWeight:parseInt(V.fontWeight,10)||400};if(Y==="img"){let J=I;q.img={src:(J.currentSrc||J.getAttribute("src")||"").slice(0,300),alt:J.getAttribute("alt"),naturalW:J.naturalWidth||0,naturalH:J.naturalHeight||0,attrW:parseInt(J.getAttribute("width")||"0",10)||0,attrH:parseInt(J.getAttribute("height")||"0",10)||0};}if(q.cssBackgroundImage){let J=I.closest(F);J&&(q.control={tag:J.tagName.toLowerCase(),name:E(J).slice(0,120)});}if(!/^(img|video|canvas|iframe|object|embed|svg)$/.test(Y)){let J=V.animationName.split(",").some(ue=>ue.trim()&&ue.trim()!=="none")&&A(V.animationDuration).some(ue=>ue>10),te=A(V.transitionDuration).some(ue=>ue>10)&&V.transitionProperty.trim()!=="none",Z=h.filter(ue=>C(I,ue.selector)),ne=!J||Z.some(ue=>ue.anim),ae=!te||Z.some(ue=>ue.trans);q.reducedMotionHandled=(J||te)&&ne&&ae;}let M=I.closest('a[href], button, [role="button"], [role="link"]');if(M&&M!==I){let J=M.cloneNode(true);J.querySelectorAll("img, svg").forEach(ne=>ne.remove());let te=(J.textContent||"").replace(/\s+/g," ").trim(),Z=(M.getAttribute("aria-label")||"").trim();q.parentInteractive={tag:M.tagName.toLowerCase(),text:(te||Z).slice(0,120)};}let O=J=>{let te=J.cloneNode(true);return te.querySelectorAll("script, style").forEach(Z=>Z.remove()),(te.textContent||"").replace(/\s+/g," ").trim()},B=I.matches('a[href], [role="link"]'),j=O(I),X=I.parentElement;if(B&&(X=I.closest("p, li, td, th, dd, dt, figcaption, blockquote")||I.parentElement),X){let J=O(X),te=B&&j?J.indexOf(j):-1,Z=te>120?te-120:0;q.nearText=(Z?"\u2026":"")+J.slice(Z,Z+240);}p.elements[T]=q;}return p}function fP(d,f){let m=(d.type||"").toLowerCase(),p=d.wcag||"";return m==="decorative_image_with_title"?"generic":p==="1.1.1"&&(f?.tag==="img"||/alt|image/.test(m))?"alt":p==="1.4.3"||p==="1.4.6"||m==="color-contrast"||m==="contrast_insufficient"||m==="contrast_enhanced"?"contrast":p==="2.2.2"||p==="2.3.3"||/motion|animation|reduced_motion/.test(m)?"motion":"generic"}function Ju(d){return !!d&&d.tag!=="img"&&d.cssBackgroundImage&&!d.img}var pP=/\b(needs?|requires?|for)\s+(a\s+)?(human|manual)?\s*review\b|\bhuman review\b|\bmanual review\b|\bincomplete\b/gi;function mP(d){let f=String(d??"").replace(/\s+/g," ").replace(pP,"judged").trim();if(f.length<=Uu)return f;let m=f.slice(0,Uu-1),p=m.lastIndexOf(" ");return (p>Uu/2?m.slice(0,p):m).replace(/[\s,;:–—-]+$/,"")+"\u2026"}function hP(d){let f=String(d??"").replace(/\s+/g," ").trim();if(f=f.replace(/^(an?\s+|the\s+)?(image|picture|photo|photograph|graphic|icon|illustration|screenshot)\s+(of|showing|depicting)(\s+|$)(an?\s+|the\s+)?/i,""),f=f.replace(/^["'“”]+|["'“”]+$/g,"").trim(),f.length>zg){f=f.slice(0,zg);let m=f.lastIndexOf(" ");m>60&&(f=f.slice(0,m)),f=f.replace(/[\s,;:–—-]+$/,"");}return f&&(f=f[0].toUpperCase()+f.slice(1)),f}function ra(d){let f=d.match(/\d+(\.\d+)?/g);return !f||f.length<3?d:"#"+f.slice(0,3).map(m=>Math.round(Number(m)).toString(16).padStart(2,"0")).join("")}var Kg=/^#?([0-9a-f]{6})$/i;function gP(d){let f=String(d??"").trim().match(Kg);return f?"#"+f[1].toLowerCase():null}function vP(d){let{confidence:f,reviewReason:m,...p}=d;return {...p,id:d.id.replace("axe-incomplete-","axe-")}}function bP(d){let f=d;if(typeof d=="string"){let h=d.replace(/```json\s*/gi,"").replace(/```/g,"").match(/\[[\s\S]*\]/);if(!h)return null;try{f=JSON.parse(h[0]);}catch{return null}}else d&&typeof d=="object"&&Array.isArray(d.verdicts)&&(f=d.verdicts);if(!Array.isArray(f))return null;let m=[];for(let p of f){if(!p||typeof p!="object")continue;let{id:h,verdict:b,reason:v,fix:w}=p;if(typeof h!="string"||b!=="pass"&&b!=="violation")continue;let C=w&&typeof w=="object"?w:void 0;m.push({id:h,verdict:b,reason:typeof v=="string"?v:void 0,fix:C?{attribute:typeof C.attribute=="string"?C.attribute:void 0,value:typeof C.value=="string"?C.value:void 0}:void 0});}return m}var na=class extends Error{},Zg=`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.
|
|
381
381
|
|
|
382
382
|
Rules:
|
|
383
383
|
- 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.
|