testaro 78.0.8 → 78.4.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.
Files changed (356) hide show
  1. package/.gitattributes +94 -0
  2. package/.github/workflows/ci.yml +58 -0
  3. package/.github/workflows/publish.yml +49 -0
  4. package/.github/workflows/typescript.yml +35 -0
  5. package/AGENTS.md +2 -2
  6. package/CLAUDE.md +24 -18
  7. package/CONTAINERS.md +9 -6
  8. package/CONTRIBUTING.md +29 -3
  9. package/Dockerfile +1 -1
  10. package/README.md +73 -19
  11. package/UPGRADES.md +4 -0
  12. package/actSpecs-doc.md +13 -1
  13. package/actSpecs.js +29 -5
  14. package/call.js +6 -5
  15. package/docker-compose.yml +8 -2
  16. package/docs/checkpoint-scanning.md +199 -0
  17. package/docs/standard-result-outcome.md +165 -0
  18. package/env.example +44 -10
  19. package/eslint.config.mjs +101 -0
  20. package/netWatch.js +372 -222
  21. package/package.json +46 -31
  22. package/pour/README.md +47 -0
  23. package/pour/pour.min.js +8 -0
  24. package/procs/actDo.js +808 -0
  25. package/procs/catalog.d.ts +17 -0
  26. package/procs/catalog.js +312 -221
  27. package/procs/catalog.ts +398 -0
  28. package/procs/checkpoint.js +110 -0
  29. package/procs/config.d.ts +35 -0
  30. package/procs/config.js +62 -0
  31. package/procs/dateTime.js +2 -1
  32. package/procs/doActs.js +442 -849
  33. package/procs/doTestAct.js +27 -121
  34. package/procs/flow.js +221 -0
  35. package/procs/generateRuleRegistry.js +94 -0
  36. package/procs/getSource.d.ts +26 -0
  37. package/procs/job.js +115 -1
  38. package/procs/launch.d.ts +40 -0
  39. package/procs/launch.js +239 -108
  40. package/procs/nu.d.ts +48 -0
  41. package/procs/scope.js +196 -0
  42. package/procs/shoot.d.ts +33 -0
  43. package/procs/standard.d.ts +18 -0
  44. package/procs/standard.js +83 -0
  45. package/procs/standard.ts +126 -0
  46. package/procs/testAct.js +145 -0
  47. package/procs/testaro.d.ts +20 -0
  48. package/procs/testaro.js +236 -189
  49. package/procs/testaro.ts +321 -0
  50. package/procs/userPath.js +126 -0
  51. package/procs/xPath.d.ts +4 -0
  52. package/procs/xPath.js +81 -69
  53. package/procs/xPath.ts +106 -0
  54. package/procs/xPathScript.d.ts +6 -0
  55. package/procs/xPathScript.js +70 -0
  56. package/run.js +3 -2
  57. package/surea11y/README.md +44 -0
  58. package/surea11y/surea11y.browser.js +14 -0
  59. package/testaro/adbID.d.ts +3 -0
  60. package/testaro/adbID.js +38 -41
  61. package/testaro/adbID.ts +66 -0
  62. package/testaro/allCapStyle.d.ts +3 -0
  63. package/testaro/allCapStyle.js +31 -34
  64. package/testaro/allCapStyle.ts +55 -0
  65. package/testaro/allCaps.d.ts +16 -0
  66. package/testaro/allCaps.js +179 -151
  67. package/testaro/allCaps.ts +228 -0
  68. package/testaro/allHidden.d.ts +13 -0
  69. package/testaro/allHidden.js +29 -30
  70. package/testaro/allHidden.ts +50 -0
  71. package/testaro/allSlanted.d.ts +3 -0
  72. package/testaro/allSlanted.js +30 -33
  73. package/testaro/allSlanted.ts +54 -0
  74. package/testaro/altScheme.d.ts +3 -0
  75. package/testaro/altScheme.js +27 -30
  76. package/testaro/altScheme.ts +50 -0
  77. package/testaro/attVal.d.ts +3 -0
  78. package/testaro/attVal.js +20 -21
  79. package/testaro/attVal.ts +52 -0
  80. package/testaro/autocomplete.d.ts +3 -0
  81. package/testaro/autocomplete.js +59 -75
  82. package/testaro/autocomplete.ts +101 -0
  83. package/testaro/bulk.d.ts +13 -0
  84. package/testaro/bulk.js +32 -33
  85. package/testaro/bulk.ts +55 -0
  86. package/testaro/buttonMenu.d.ts +9 -0
  87. package/testaro/buttonMenu.js +317 -319
  88. package/testaro/buttonMenu.ts +391 -0
  89. package/testaro/captionLoc.d.ts +3 -0
  90. package/testaro/captionLoc.js +17 -20
  91. package/testaro/captionLoc.ts +40 -0
  92. package/testaro/datalistRef.d.ts +3 -0
  93. package/testaro/datalistRef.js +33 -36
  94. package/testaro/datalistRef.ts +55 -0
  95. package/testaro/distortion.d.ts +3 -0
  96. package/testaro/distortion.js +57 -26
  97. package/testaro/distortion.ts +81 -0
  98. package/testaro/docType.d.ts +15 -0
  99. package/testaro/docType.js +25 -25
  100. package/testaro/docType.ts +45 -0
  101. package/testaro/dupAtt.d.ts +16 -0
  102. package/testaro/dupAtt.js +113 -104
  103. package/testaro/dupAtt.ts +144 -0
  104. package/testaro/elements.d.ts +6 -0
  105. package/testaro/elements.js +153 -153
  106. package/testaro/elements.ts +215 -0
  107. package/testaro/embAc.d.ts +3 -0
  108. package/testaro/embAc.js +19 -20
  109. package/testaro/embAc.ts +40 -0
  110. package/testaro/focAll.d.ts +13 -0
  111. package/testaro/focAll.js +185 -191
  112. package/testaro/focAll.ts +217 -0
  113. package/testaro/focAndOp.d.ts +3 -0
  114. package/testaro/focAndOp.js +100 -104
  115. package/testaro/focAndOp.ts +128 -0
  116. package/testaro/focInd.d.ts +3 -0
  117. package/testaro/focInd.js +64 -66
  118. package/testaro/focInd.ts +96 -0
  119. package/testaro/focVis.d.ts +3 -0
  120. package/testaro/focVis.js +28 -30
  121. package/testaro/focVis.ts +52 -0
  122. package/testaro/headEl.d.ts +10 -0
  123. package/testaro/headEl.js +61 -62
  124. package/testaro/headEl.ts +82 -0
  125. package/testaro/headingAmb.d.ts +3 -0
  126. package/testaro/headingAmb.js +54 -63
  127. package/testaro/headingAmb.ts +72 -0
  128. package/testaro/hovInd.d.ts +12 -0
  129. package/testaro/hovInd.js +163 -130
  130. package/testaro/hovInd.ts +199 -0
  131. package/testaro/hover.d.ts +3 -0
  132. package/testaro/hover.js +155 -126
  133. package/testaro/hover.ts +154 -0
  134. package/testaro/hr.d.ts +3 -0
  135. package/testaro/hr.js +14 -17
  136. package/testaro/hr.ts +36 -0
  137. package/testaro/imageLink.d.ts +3 -0
  138. package/testaro/imageLink.js +17 -20
  139. package/testaro/imageLink.ts +42 -0
  140. package/testaro/labClash.d.ts +3 -0
  141. package/testaro/labClash.js +31 -33
  142. package/testaro/labClash.ts +54 -0
  143. package/testaro/legendLoc.d.ts +3 -0
  144. package/testaro/legendLoc.js +17 -20
  145. package/testaro/legendLoc.ts +42 -0
  146. package/testaro/lineHeight.d.ts +3 -0
  147. package/testaro/lineHeight.js +43 -48
  148. package/testaro/lineHeight.ts +70 -0
  149. package/testaro/linkAmb.d.ts +7 -0
  150. package/testaro/linkAmb.js +79 -80
  151. package/testaro/linkAmb.ts +105 -0
  152. package/testaro/linkExt.d.ts +3 -0
  153. package/testaro/linkExt.js +13 -16
  154. package/testaro/linkExt.ts +35 -0
  155. package/testaro/linkOldAtt.d.ts +3 -0
  156. package/testaro/linkOldAtt.js +25 -28
  157. package/testaro/linkOldAtt.ts +48 -0
  158. package/testaro/linkTo.d.ts +3 -0
  159. package/testaro/linkTo.js +22 -22
  160. package/testaro/linkTo.ts +43 -0
  161. package/testaro/linkUl.d.ts +3 -0
  162. package/testaro/linkUl.js +30 -34
  163. package/testaro/linkUl.ts +54 -0
  164. package/testaro/miniText.d.ts +3 -0
  165. package/testaro/miniText.js +41 -44
  166. package/testaro/miniText.ts +68 -0
  167. package/testaro/motion.d.ts +10 -0
  168. package/testaro/motion.js +92 -96
  169. package/testaro/motion.ts +125 -0
  170. package/testaro/nonTable.d.ts +3 -0
  171. package/testaro/nonTable.js +39 -45
  172. package/testaro/nonTable.ts +66 -0
  173. package/testaro/optRoleSel.d.ts +3 -0
  174. package/testaro/optRoleSel.js +16 -19
  175. package/testaro/optRoleSel.ts +41 -0
  176. package/testaro/phOnly.d.ts +3 -0
  177. package/testaro/phOnly.js +18 -21
  178. package/testaro/phOnly.ts +43 -0
  179. package/testaro/pseudoP.d.ts +3 -0
  180. package/testaro/pseudoP.js +36 -38
  181. package/testaro/pseudoP.ts +59 -0
  182. package/testaro/radioSet.d.ts +3 -0
  183. package/testaro/radioSet.js +57 -59
  184. package/testaro/radioSet.ts +79 -0
  185. package/testaro/registry.d.ts +63 -0
  186. package/testaro/registry.js +67 -0
  187. package/testaro/registry.ts +141 -0
  188. package/testaro/role.d.ts +3 -0
  189. package/testaro/role.js +27 -29
  190. package/testaro/role.ts +53 -0
  191. package/testaro/secHeading.d.ts +3 -0
  192. package/testaro/secHeading.js +30 -33
  193. package/testaro/secHeading.ts +53 -0
  194. package/testaro/styleDiff.d.ts +25 -0
  195. package/testaro/styleDiff.js +248 -252
  196. package/testaro/styleDiff.ts +303 -0
  197. package/testaro/tabNav.d.ts +33 -0
  198. package/testaro/tabNav.js +272 -342
  199. package/testaro/tabNav.ts +454 -0
  200. package/testaro/targetsNear.d.ts +9 -0
  201. package/testaro/targetsNear.js +130 -132
  202. package/testaro/targetsNear.ts +160 -0
  203. package/testaro/textNodes.d.ts +6 -0
  204. package/testaro/textNodes.js +139 -135
  205. package/testaro/textNodes.ts +185 -0
  206. package/testaro/textSem.d.ts +3 -0
  207. package/testaro/textSem.js +25 -28
  208. package/testaro/textSem.ts +47 -0
  209. package/testaro/title.d.ts +9 -0
  210. package/testaro/title.js +16 -13
  211. package/testaro/title.ts +31 -0
  212. package/testaro/titledEl.d.ts +3 -0
  213. package/testaro/titledEl.js +15 -18
  214. package/testaro/titledEl.ts +38 -0
  215. package/testaro/zIndex.d.ts +3 -0
  216. package/testaro/zIndex.js +19 -22
  217. package/testaro/zIndex.ts +42 -0
  218. package/tests/alfa.d.ts +45 -0
  219. package/tests/alfa.js +138 -141
  220. package/tests/alfa.ts +214 -0
  221. package/tests/aslint.d.ts +33 -0
  222. package/tests/aslint.js +272 -249
  223. package/tests/aslint.ts +301 -0
  224. package/tests/axe.d.ts +27 -0
  225. package/tests/axe.js +199 -200
  226. package/tests/axe.ts +277 -0
  227. package/tests/ed11y.d.ts +28 -0
  228. package/tests/ed11y.js +141 -99
  229. package/tests/ed11y.ts +178 -0
  230. package/tests/htmlcs.d.ts +21 -0
  231. package/tests/htmlcs.js +174 -140
  232. package/tests/htmlcs.ts +181 -0
  233. package/tests/ibm.d.ts +52 -0
  234. package/tests/ibm.js +164 -166
  235. package/tests/ibm.ts +251 -0
  236. package/tests/nuVal.d.ts +13 -0
  237. package/tests/nuVal.js +107 -112
  238. package/tests/nuVal.ts +145 -0
  239. package/tests/nuVnu.d.ts +15 -0
  240. package/tests/nuVnu.js +141 -111
  241. package/tests/nuVnu.ts +144 -0
  242. package/tests/pour.d.ts +31 -0
  243. package/tests/pour.js +242 -0
  244. package/tests/pour.ts +273 -0
  245. package/tests/qualWeb.d.ts +39 -0
  246. package/tests/qualWeb.js +302 -272
  247. package/tests/qualWeb.ts +415 -0
  248. package/tests/surea11y.d.ts +33 -0
  249. package/tests/surea11y.js +288 -0
  250. package/tests/surea11y.ts +334 -0
  251. package/tests/testaro.d.ts +25 -0
  252. package/tests/testaro.js +745 -652
  253. package/tests/testaro.ts +862 -0
  254. package/tests/wave.d.ts +46 -0
  255. package/tests/wave.js +166 -177
  256. package/tests/wave.ts +252 -0
  257. package/tsconfig.json +17 -0
  258. package/types.d.ts +243 -0
  259. package/types.js +10 -0
  260. package/types.ts +376 -0
  261. package/validation/act/README.md +46 -0
  262. package/validation/act/capture.js +424 -0
  263. package/validation/act/chromium-issue-draft.md +66 -0
  264. package/validation/act/fp-triage-2026-08-22.md +86 -0
  265. package/validation/act/isolation-notes.md +159 -0
  266. package/validation/act/playwright-issue-draft.md +73 -0
  267. package/validation/act/propose-mappings.js +0 -0
  268. package/validation/act/repro-cdp-raw.js +105 -0
  269. package/validation/act/repro-metarefresh.js +65 -0
  270. package/validation/act/score.js +184 -0
  271. package/validation/act/stage3a-stress-report.md +69 -0
  272. package/validation/act/stage3b-mapping-proposals.md +94 -0
  273. package/validation/act/stage3b-triage-draft.md +138 -0
  274. package/validation/act/surea11y-track-a-2026-09-01.md +50 -0
  275. package/validation/executors/netWatch.js +180 -90
  276. package/validation/executors/test.js +17 -2
  277. package/validation/executors/tests.js +118 -10
  278. package/validation/jobs/reports/raw/260901T1000-surea11y-validation.json +964 -0
  279. package/validation/jobs/todo/240101T1200-simple-example.json +14 -6
  280. package/validation/jobs/todo/240101T1300-shoot-example.json +2 -1
  281. package/validation/jobs/todo/260821T1900-pour-validation.json +45 -0
  282. package/validation/jobs/todo/260901T1000-surea11y-validation.json +45 -0
  283. package/validation/knownFailures.json +1 -0
  284. package/validation/tests/jobProperties/adbID.json +27 -2
  285. package/validation/tests/jobProperties/{focOp.json → allCapStyle.json} +56 -53
  286. package/validation/tests/jobProperties/allCaps.json +25 -0
  287. package/validation/tests/jobProperties/allHidden.json +133 -13
  288. package/validation/tests/jobProperties/allSlanted.json +3 -3
  289. package/validation/tests/jobProperties/altScheme.json +23 -8
  290. package/validation/tests/jobProperties/attVal.json +57 -57
  291. package/validation/tests/jobProperties/autocomplete.json +11 -1
  292. package/validation/tests/jobProperties/bulk.json +6 -1
  293. package/validation/tests/jobProperties/buttonMenu.json +63 -42
  294. package/validation/tests/jobProperties/captionLoc.json +1 -6
  295. package/validation/tests/jobProperties/checkpoint-browser.json +401 -0
  296. package/validation/tests/jobProperties/checkpoint-page.json +397 -0
  297. package/validation/tests/jobProperties/checkpoint.json +395 -0
  298. package/validation/tests/jobProperties/datalistRef.json +20 -5
  299. package/validation/tests/jobProperties/distortion.json +28 -3
  300. package/validation/tests/jobProperties/docType.json +2 -2
  301. package/validation/tests/jobProperties/dupAtt.json +48 -33
  302. package/validation/tests/jobProperties/elements.json +28 -28
  303. package/validation/tests/jobProperties/embAc.json +36 -31
  304. package/validation/tests/jobProperties/focAndOp.json +284 -0
  305. package/validation/tests/jobProperties/focInd.json +34 -34
  306. package/validation/tests/jobProperties/focVis.json +1 -1
  307. package/validation/tests/jobProperties/hover.json +39 -37
  308. package/validation/tests/jobProperties/hr.json +13 -3
  309. package/validation/tests/jobProperties/imageLink.json +0 -5
  310. package/validation/tests/jobProperties/labClash.json +68 -33
  311. package/validation/tests/jobProperties/legendLoc.json +1 -6
  312. package/validation/tests/jobProperties/lineHeight.json +2 -2
  313. package/validation/tests/jobProperties/linkAmb.json +13 -18
  314. package/validation/tests/jobProperties/linkExt.json +1 -1
  315. package/validation/tests/jobProperties/linkOldAtt.json +12 -2
  316. package/validation/tests/jobProperties/linkTo.json +1 -1
  317. package/validation/tests/jobProperties/linkUl.json +65 -65
  318. package/validation/tests/jobProperties/miniText.json +7 -2
  319. package/validation/tests/jobProperties/motion.json +4 -50
  320. package/validation/tests/jobProperties/nonTable.json +48 -3
  321. package/validation/tests/jobProperties/optRoleSel.json +12 -2
  322. package/validation/tests/jobProperties/phOnly.json +6 -16
  323. package/validation/tests/jobProperties/pseudoP.json +17 -2
  324. package/validation/tests/jobProperties/radioSet.json +30 -30
  325. package/validation/tests/jobProperties/role.json +25 -5
  326. package/validation/tests/jobProperties/secHeading.json +26 -21
  327. package/validation/tests/jobProperties/styleDiff.json +35 -5
  328. package/validation/tests/jobProperties/tabNav.json +3 -1
  329. package/validation/tests/jobProperties/targetsNear.json +237 -0
  330. package/validation/tests/jobProperties/textNodes.json +29 -29
  331. package/validation/tests/jobProperties/textSem.json +26 -1
  332. package/validation/tests/jobProperties/title.json +12 -2
  333. package/validation/tests/jobProperties/titledEl.json +39 -9
  334. package/validation/tests/jobProperties/userPath.json +317 -0
  335. package/validation/tests/jobProperties/zIndex.json +40 -35
  336. package/validation/tests/targets/allCapStyle/index.html +26 -0
  337. package/validation/tests/targets/checkpoint/index.html +38 -0
  338. package/validation/tests/targets/datalistRef/index.html +1 -1
  339. package/validation/tests/targets/focAndOp/bad.html +29 -0
  340. package/validation/tests/targets/{focOp → focAndOp}/good.html +3 -1
  341. package/validation/tests/targets/focInd/bad.html +2 -1
  342. package/validation/tests/targets/headEl/index.html +10 -1
  343. package/validation/tests/targets/{targetSmall → targetsNear}/index.html +15 -1
  344. package/validation/tests/targets/userPath/index.html +42 -0
  345. package/validation/validateTest.js +61 -9
  346. package/.claude/settings.local.json +0 -11
  347. package/.eslintrc.json +0 -41
  348. package/htmlcs/.eslintrc.json +0 -67
  349. package/validation/tests/jobProperties/linkTitle.json +0 -127
  350. package/validation/tests/jobProperties/opFoc.json +0 -164
  351. package/validation/tests/jobProperties/targetSmall.json +0 -152
  352. package/validation/tests/jobProperties/targetTiny.json +0 -142
  353. package/validation/tests/targets/focOp/bad.html +0 -25
  354. package/validation/tests/targets/linkTitle/index.html +0 -24
  355. package/validation/tests/targets/opFoc/bad.html +0 -26
  356. package/validation/tests/targets/opFoc/good.html +0 -23
@@ -0,0 +1,14 @@
1
+ /* SPDX-License-Identifier: MPL-2.0 */
2
+ /*!
3
+ * @surea11y/core -- standalone browser bundle (minified).
4
+ *
5
+ * Generated by scripts/build-browser.js from src/core.js; do not edit by hand.
6
+ * Change the rule sources under src/checks and run "npm run build".
7
+ *
8
+ * Defines one global, window.a11ycore, exposing the engine's in-page scan
9
+ * function. See README.md's "Standalone browser bundle" section. Readable
10
+ * sources: https://github.com/SureA11y/core
11
+ */
12
+ (function(vt){"use strict";function xn(st,ct,Ft,Yt){const Tt="a11ycore",Cn="1.0.0",cn=[{ruleId:"accesskeys",title:"accesskey values must be unique",description:"Checks that no two elements on the page share the same accesskey attribute value.",i18n:{titleKey:"accesskeys_title",descriptionKey:"accesskeys_description"},helpUrl:"",tags:["best-practice","keyboard","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"area-alt-decorative",title:'<area> with alt="" must be decorative (manual review)',description:"Flags <area> elements with empty alt for human review that they are decorative/non-informative.",i18n:{titleKey:"area_altDecorative_title",descriptionKey:"area_altDecorative_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","imagemap","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"area-alt-present",title:"<area> must have an alt attribute",description:"Checks that <area> elements provide an alt attribute to support a text alternative mechanism.",i18n:{titleKey:"area_altPresent_title",descriptionKey:"area_altPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","imagemap","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["area-alt-attr-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"area-alt-quality",title:"<area> alt text must be appropriate (manual review)",description:"Flags <area> elements with non-empty alt text for human review of appropriateness.",i18n:{titleKey:"area_altQuality_title",descriptionKey:"area_altQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","imagemap","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-allowed-attr",title:"aria-* attributes must be permitted for the element’s role",description:"Checks that every recognized aria-* attribute present on an element with an explicit role is either globally supported or supported by that role.",i18n:{titleKey:"ariaAllowedAttr_title",descriptionKey:"ariaAllowedAttr_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-attr-allowed-for-role"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-allowed-role",title:"Explicit role must be permitted for its host element",description:'Checks that an explicit role="" attribute is one of the roles the ARIA-in-HTML specification permits for the host element (e.g. role="tab" is not permitted on <nav>).',i18n:{titleKey:"ariaAllowedRole_title",descriptionKey:"ariaAllowedRole_description"},helpUrl:"",tags:["best-practice","aria","structure","atomic","automatic","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-braille-equivalent",title:"aria-braillelabel/aria-brailleroledescription must have a non-braille equivalent",description:"Checks that elements using aria-braillelabel also have a regular accessible name, and elements using aria-brailleroledescription also have aria-roledescription.",i18n:{titleKey:"ariaBrailleEquivalent_title",descriptionKey:"ariaBrailleEquivalent_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-braille-equivalent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-checked-state-mismatch",title:"Native checkbox/radio aria-checked should match its actual state",description:'Flags a native <input type="checkbox">/<input type="radio"> whose explicit aria-checked value disagrees with its actual checked/indeterminate state, for manual review.',i18n:{titleKey:"ariaCheckedStateMismatch_title",descriptionKey:"ariaCheckedStateMismatch_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","forms","atomic","manual","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"4.1.2":["aria-checked-state-mismatch"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-conditional-attr",title:"aria-errormessage requires aria-invalid to be set to a non-false value",description:'Checks that elements with aria-errormessage also have aria-invalid set to "true", "grammar", or "spelling"; otherwise the error message is dropped from the accessibility tree.',i18n:{titleKey:"ariaConditionalAttr_title",descriptionKey:"ariaConditionalAttr_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-conditional-attr"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-deprecated-role",title:"role attribute should not use a deprecated or author-discouraged ARIA role",description:'Checks that an explicit role="" attribute does not use a role deprecated by the WAI-ARIA specification, or one reserved for user-agent-internal use (e.g. role="generic").',i18n:{titleKey:"ariaDeprecatedRole_title",descriptionKey:"ariaDeprecatedRole_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-role-not-deprecated"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-hidden-body",title:"The document <body> must not be aria-hidden",description:'Checks that <body> does not have aria-hidden="true", which would remove the entire page from the accessibility tree.',i18n:{titleKey:"ariaHiddenBody_title",descriptionKey:"ariaHiddenBody_description"},helpUrl:"",tags:["wcag2a","wcag131","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.1","4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"},{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"critical",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["aria-hidden-body-absent"],"4.1.2":["aria-hidden-body-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-hidden-focus",title:"ARIA hidden elements must not be focusable",description:'Checks that aria-hidden="true" elements are not focusable and do not contain focusable descendants.',i18n:{titleKey:"ariaHidden_focus_title",descriptionKey:"ariaHidden_focus_description"},helpUrl:"",tags:["wcag2a","wcag2aa","wcag412","structure","aria","focus","atomic","automatic","a11ycore"],wcagSc:["2.4.7","4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.7",title:"Focus Visible",conformanceLevel:"AA"},{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-hidden-focusable"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-prohibited-attr",title:"ARIA naming attributes must not be used on roles that prohibit them",description:"Checks that aria-label/aria-labelledby are not present on WAI-ARIA roles whose specification explicitly prohibits ARIA naming (e.g. generic, emphasis, strong, paragraph).",i18n:{titleKey:"ariaProhibitedAttr_title",descriptionKey:"ariaProhibitedAttr_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-attr-not-prohibited"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-prohibited-children",title:"Container roles must not own a child with a disallowed role",description:"Checks that every accessible-tree-owned child of a container role (list, listbox, menu, menubar, radiogroup, rowgroup, table, grid, treegrid, tablist, tree, row) has one of that role's allowed owned roles.",i18n:{titleKey:"ariaProhibitedChildren_title",descriptionKey:"ariaProhibitedChildren_description"},helpUrl:"",tags:["wcag2a","wcag131","aria","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.3.1":["aria-role-owned-children-allowed"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-required-attr",title:"Roles with a required ARIA state/property must carry it",description:'Checks that elements with an explicit role carry every unambiguous, context-independent required aria-* state/property for that role (e.g. role="checkbox" must have aria-checked).',i18n:{titleKey:"ariaRequiredAttr_title",descriptionKey:"ariaRequiredAttr_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-attr-required-for-role"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-required-children",title:"Container roles must own at least one required child role",description:'Checks that container roles with a documented "required owned elements" entry (list, listbox, menu, radiogroup, table, grid, tablist, tree, row, ...) contain at least one descendant or aria-owns-referenced element with an acceptable owned role.',i18n:{titleKey:"ariaRequiredChildren_title",descriptionKey:"ariaRequiredChildren_description"},helpUrl:"",tags:["wcag2a","wcag131","aria","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.3.1":["aria-role-required-owned-children"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-required-parent",title:"Roles requiring a specific context role must be in that context",description:'Checks that roles with a documented "required context role" entry (listitem, option, tab, treeitem, row, cell, ...) have an ancestor or aria-owns owner with an acceptable context role.',i18n:{titleKey:"ariaRequiredParent_title",descriptionKey:"ariaRequiredParent_description"},helpUrl:"",tags:["wcag2a","wcag131","aria","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.3.1":["aria-role-required-context-parent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-role-name-present",title:"ARIA roles that require an accessible name have one",description:"Checks that the ARIA roles WAI-ARIA requires an accessible name for expose a non-empty one.",i18n:{titleKey:"ariaRoleNamePresent_title",descriptionKey:"ariaRoleNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","navigation","atomic","automatic","name","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-role-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-roles-valid",title:"role attribute must be a valid, non-abstract ARIA role",description:'Checks that an explicit role="" attribute resolves to a real, non-abstract WAI-ARIA role.',i18n:{titleKey:"ariaRolesValid_title",descriptionKey:"ariaRolesValid_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-role-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-text",title:'role="text" elements should have no focusable descendants',description:'Checks that elements with role="text" contain no focusable descendant (link, button, form control, tabindex, iframe, or contenteditable).',i18n:{titleKey:"ariaText_title",descriptionKey:"ariaText_description"},helpUrl:"",tags:["best-practice","aria","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-valid-attr",title:"aria-* attributes must be real, defined ARIA attributes",description:"Checks that every aria-* attribute name present in the DOM is a real attribute defined by the WAI-ARIA specification.",i18n:{titleKey:"ariaValidAttr_title",descriptionKey:"ariaValidAttr_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-attr-name-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"aria-valid-attr-value",title:"aria-* attribute values must match their declared type",description:"Checks that every recognized aria-* attribute has a value conforming to its WAI-ARIA-declared value type (boolean, tristate, token, integer, number, or ID reference).",i18n:{titleKey:"ariaValidAttrValue_title",descriptionKey:"ariaValidAttrValue_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["aria-attr-value-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"autocomplete-valid",title:"autocomplete attribute must be a valid autofill value",description:'Checks that a non-empty autocomplete attribute is "on"/"off" or a well-formed autofill detail token list.',i18n:{titleKey:"autocompleteValid_title",descriptionKey:"autocompleteValid_description"},helpUrl:"",tags:["wcag21aa","wcag135","forms","atomic","automatic","a11ycore"],wcagSc:["1.3.5"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.5",title:"Identify Input Purpose",conformanceLevel:"AA"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.5":["autocomplete-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"avoid-inline-spacing",title:"Inline style must not force text spacing below the WCAG metric",description:"Checks that where inline style forces line-height, letter-spacing or word-spacing with !important, the value already meets WCAG 1.4.12, so the user has nothing left to override.",i18n:{titleKey:"avoidInlineSpacing_title",descriptionKey:"avoidInlineSpacing_description"},helpUrl:"",tags:["wcag21aa","wcag1412","structure","atomic","automatic","a11ycore"],wcagSc:["1.4.12"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.12",title:"Text Spacing",conformanceLevel:"AA"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.12":["avoid-inline-spacing"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"binary-control-name-present",title:"Binary controls have an accessible name",description:"Checks that checkbox, radio, and switch controls expose a non-empty accessible name.",i18n:{titleKey:"binaryControlNamePresent_title",descriptionKey:"binaryControlNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","checkbox","radio","switch","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["checkbox-name-present","radio-name-present","switch-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"button-name-present",title:"Buttons have an accessible name",description:"Checks that buttons expose a non-empty accessible name.",i18n:{titleKey:"buttonNamePresent_title",descriptionKey:"buttonNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","buttons","name","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["button-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"bypass-blocks-present",title:"Page must provide a way to bypass repeated blocks",description:"Checks that the page has at least one recognized WCAG 2.4.1 bypass-blocks mechanism: a main landmark, a working same-page anchor link, or a heading.",i18n:{titleKey:"bypassBlocksPresent_title",descriptionKey:"bypassBlocksPresent_description"},helpUrl:"",tags:["wcag2a","wcag241","navigation","atomic","manual","a11ycore"],wcagSc:["2.4.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.1",title:"Bypass Blocks",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.1":["bypass-blocks-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"canvas-text-alternative-present",title:"<canvas> must provide a text alternative",description:"Checks that <canvas> elements provide a text alternative via fallback content or an accessible name.",i18n:{titleKey:"canvas_textAltPresent_title",descriptionKey:"canvas_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","canvas","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["canvas-text-alternative-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"canvas-text-alternative-quality",title:"<canvas> text alternative must be appropriate (manual review)",description:"Flags <canvas> elements with a detected text alternative for human review of equivalence and appropriateness.",i18n:{titleKey:"canvas_textAltQuality_title",descriptionKey:"canvas_textAltQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","canvas","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"combobox-name-present",title:"Comboboxes have an accessible name",description:'Checks that elements with role="combobox" expose a non-empty accessible name.',i18n:{titleKey:"comboboxNamePresent_title",descriptionKey:"comboboxNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","combobox","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["combobox-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"contrast-computable",title:"Color contrast is computable for rendered text",description:"Determines whether sufficient information is available to compute WCAG color contrast for visible text (e.g., no gradients/images/blend modes that make background indeterminate).",i18n:{titleKey:"contrastComputable_title",descriptionKey:"contrastComputable_description"},helpUrl:"",tags:["wcag2aa","wcag2aaa","wcag143","wcag146","contrast","color","structure","atomic","automatic","dom","a11ycore"],wcagSc:["1.4.3","1.4.6"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.3",title:"Contrast (Minimum)",conformanceLevel:"AA"},{standard:"WCAG",version:"2.2",requirement:"1.4.6",title:"Contrast (Enhanced)",conformanceLevel:"AAA"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.3":["contrast-computability-143"],"1.4.6":["contrast-computability-146"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"contrast-enhanced",title:"Text meets enhanced color contrast (AAA)",description:"Checks that visible text has a contrast ratio of at least 7:1 (normal) or 4.5:1 (large), when contrast is computable from CSS.",i18n:{titleKey:"contrastEnhanced_title",descriptionKey:"contrastEnhanced_description"},helpUrl:"",tags:["wcag2aaa","wcag146","contrast","color","structure","atomic","automatic","dom","a11ycore"],wcagSc:["1.4.6"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.6",title:"Contrast (Enhanced)",conformanceLevel:"AAA"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.6":["contrast-enhanced-text"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"contrast-minimum",title:"Text meets minimum color contrast (AA)",description:"Checks that visible text has a contrast ratio of at least 4.5:1 (normal) or 3:1 (large), when contrast is computable from CSS.",i18n:{titleKey:"contrastMinimum_title",descriptionKey:"contrastMinimum_description"},helpUrl:"",tags:["wcag2aa","wcag143","contrast","color","structure","atomic","automatic","dom","a11ycore"],wcagSc:["1.4.3"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.3",title:"Contrast (Minimum)",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.3":["contrast-minimum-text"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"css-focus-indicator-suppressed",title:"Focus indicator must not be removed without a replacement",description:"Flags elements in the tab order whose focus outline is removed by a :focus/:focus-visible rule with no replacement indicator (border, box-shadow, background, ...) in any other focus rule matching them.",i18n:{titleKey:"cssFocusIndicatorSuppressed_title",descriptionKey:"cssFocusIndicatorSuppressed_description"},helpUrl:"",tags:["wcag2aa","wcag247","navigation","focus","css","atomic","manual","a11ycore"],wcagSc:["2.4.7"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.7",title:"Focus Visible",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.7":["focus-indicator-not-suppressed"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"css-hidden-focus",title:"Focusable elements must not be visually hidden",description:"Checks that keyboard-focusable elements are not visually hidden by CSS techniques that can leave them in the tab order.",i18n:{titleKey:"cssHidden_focus_title",descriptionKey:"cssHidden_focus_description"},helpUrl:"",tags:["wcag2aa","wcag247","navigation","focus","css","atomic","manual","a11ycore"],wcagSc:["2.4.7"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.7",title:"Focus Visible",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"2.4.7":["css-hidden-focusable"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"css-orientation-lock",title:"CSS must not lock the page to a single orientation",description:"Checks that no @media (orientation: portrait|landscape) rule sets a transform: rotate(...) on the page, a known technique for defeating device orientation.",i18n:{titleKey:"cssOrientationLock_title",descriptionKey:"cssOrientationLock_description"},helpUrl:"",tags:["wcag21aa","wcag134","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.4"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.4",title:"Orientation",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.4":["css-orientation-lock"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"definition-list-children-valid",title:"Description lists must be structured correctly",description:"Checks that <dl> elements only directly contain <dt>/<dd> groups (optionally wrapped in one <div>), <script>, <template>, or <style>.",i18n:{titleKey:"definitionListChildrenValid_title",descriptionKey:"definitionListChildrenValid_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","list","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["definition-list-children-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"deprecated-elements-not-used",title:"Obsolete non-stoppable elements (<blink>, <marquee>) must not be used",description:"Checks that deprecated, non-standard HTML elements whose blinking/scrolling content cannot be paused, stopped, or hidden by the user (<blink>, <marquee>) are not present.",i18n:{titleKey:"deprecatedElements_title",descriptionKey:"deprecatedElements_description"},helpUrl:"",tags:["wcag2a","wcag222","structure","atomic","automatic","a11ycore"],wcagSc:["2.2.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.2.2",title:"Pause, Stop, Hide",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.2.2":["deprecated-non-stoppable-elements-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"dialog-name-present",title:"Dialogs have an accessible name",description:'Checks that elements with role="dialog" or role="alertdialog" expose a non-empty accessible name.',i18n:{titleKey:"dialogNamePresent_title",descriptionKey:"dialogNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","structure","atomic","automatic","name","dialog","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["dialog-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"dlitem-parent-valid",title:"Description-list items must be inside a description list",description:"Checks that <dt>/<dd> elements are contained by a <dl>, directly or via one wrapping <div>.",i18n:{titleKey:"dlitemParentValid_title",descriptionKey:"dlitemParentValid_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","list","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["dlitem-parent-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"duplicate-id",title:"IDs must be unique",description:"Checks that every non-empty id attribute value is unique within its own document or shadow tree (WCAG 2.0/2.1 SC 4.1.1, removed in WCAG 2.2).",i18n:{titleKey:"duplicateId_title",descriptionKey:"duplicateId_description"},helpUrl:"",tags:["wcag2a","wcag411","wcag22-removed","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.1"],normativeMappings:[{standard:"WCAG",version:"2.1",requirement:"4.1.1",title:"Parsing",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.1":["id-unique-page-wide"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"duplicate-id-aria",title:"IDs referenced by ARIA must be unique",description:"Checks that any id value referenced by an ARIA ID-reference attribute (aria-labelledby, aria-describedby, aria-owns, aria-controls, aria-activedescendant, aria-flowto, aria-errormessage, aria-details) is unique in the document.",i18n:{titleKey:"duplicateIdAria_title",descriptionKey:"duplicateIdAria_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["duplicate-id-aria"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"embed-text-alternative-present",title:"<embed> must provide a text alternative",description:"Checks that <embed> elements provide a text alternative via an accessible name.",i18n:{titleKey:"embed_textAltPresent_title",descriptionKey:"embed_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","embed","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["embed-text-alternative-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"embed-text-alternative-quality",title:"<embed> text alternative must be appropriate (manual review)",description:"Flags <embed> elements with a detected name for human review of appropriateness.",i18n:{titleKey:"embed_textAltQuality_title",descriptionKey:"embed_textAltQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","embed","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"empty-heading",title:"Headings must not be empty",description:'Checks that heading elements (<h1>-<h6> or role="heading") have a non-empty accessible name.',i18n:{titleKey:"emptyHeading_title",descriptionKey:"emptyHeading_description"},helpUrl:"",tags:["best-practice","headings","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"empty-table-header",title:"Table header cells must not be empty",description:'Checks that table header cells (<th>, or any element with role="columnheader"/"rowheader") have visible text content. A header named only via aria-label/aria-labelledby is also flagged, since real screen-reader/browser support for that is inconsistent.',i18n:{titleKey:"emptyTableHeader_title",descriptionKey:"emptyTableHeader_description"},helpUrl:"",tags:["best-practice","tables","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"focus-order-semantics",title:"Elements added to the tab order should have interactive semantics",description:"Flags elements with tabindex >= 0 whose explicit role is a non-interactive structural/document role (e.g. heading, list, region, presentation), for manual review.",i18n:{titleKey:"focusOrderSemantics_title",descriptionKey:"focusOrderSemantics_description"},helpUrl:"",tags:["best-practice","aria","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"form-control-label-quality",title:"Form field labels should be descriptive and distinguishable",description:`Flags a visible form-field label that is a placeholder ("Label", "Field"), or that repeats another field's label with no visible context (heading, legend, or row) telling the two apart.`,i18n:{titleKey:"formControlLabelQuality_title",descriptionKey:"formControlLabelQuality_description"},helpUrl:"",tags:["wcag2aa","wcag246","forms","labels","quality","atomic","manual","a11ycore"],wcagSc:["2.4.6"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.6",title:"Headings and Labels",conformanceLevel:"AA"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.6":["form-control-label-descriptive-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"form-control-programmatic-label-present",title:"Form controls must have a programmatic label",description:"Checks that form controls have a programmatic label via <label>, aria-label, aria-labelledby, title, or placeholder.",i18n:{titleKey:"formControl_programmaticLabelPresent_title",descriptionKey:"formControl_programmaticLabelPresent_description"},helpUrl:"",tags:["wcag2a","wcag131","wcag332","wcag412","forms","labels","atomic","automatic","a11ycore"],wcagSc:["1.3.1","3.3.2","4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"},{standard:"WCAG",version:"2.2",requirement:"3.3.2",title:"Labels or Instructions",conformanceLevel:"A"},{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.3.1":["form-control-programmatic-label-present"],"3.3.2":["form-control-labels-or-instructions-present"],"4.1.2":["form-control-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"form-control-programmatic-label-quality",title:"Form controls should not rely on placeholder or title as the primary label",description:"Flags form controls whose computed accessible name relies on placeholder or title as the primary labeling method. Prefer <label> or aria-labelledby.",i18n:{titleKey:"formControl_programmaticLabelQuality_title",descriptionKey:"formControl_programmaticLabelQuality_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","labels","quality","atomic","manual","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"4.1.2":["form-control-name-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"form-control-single-label",title:"Form controls must not have multiple labels",description:"Checks that a form control is associated with at most one <label> (by wrapping or by label[for]).",i18n:{titleKey:"formControlSingleLabel_title",descriptionKey:"formControlSingleLabel_description"},helpUrl:"",tags:["wcag2a","wcag332","forms","atomic","automatic","a11ycore"],wcagSc:["3.3.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"3.3.2",title:"Labels or Instructions",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"3.3.2":["form-control-single-label"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"heading-order",title:"Heading levels must not skip a level",description:"Checks that heading levels increase by at most one at a time in document order.",i18n:{titleKey:"headingOrder_title",descriptionKey:"headingOrder_description"},helpUrl:"",tags:["best-practice","headings","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"heading-quality",title:"Heading text should be descriptive, not a placeholder",description:'Flags headings whose accessible name is a placeholder rather than a description of the content that follows: a generic word ("Heading", "Untitled"), a numbered template slot ("Section 2"), a filename, or a URL.',i18n:{titleKey:"headingQuality_title",descriptionKey:"headingQuality_description"},helpUrl:"",tags:["wcag2aa","wcag246","headings","structure","quality","atomic","manual","a11ycore"],wcagSc:["2.4.6"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.6",title:"Headings and Labels",conformanceLevel:"AA"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.6":["heading-text-descriptive-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"html-lang-attr-present",title:"Page language is declared",description:"Checks that the default language of the page is programmatically declared.",i18n:{titleKey:"html_lang_attr_title",descriptionKey:"html_lang_attr_description"},helpUrl:"",tags:["wcag2a","wcag311","structure","language","automatic","atomic","a11ycore"],wcagSc:["3.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"3.1.1",title:"Language of Page",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"3.1.1":["html-lang-attr-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"html-xml-lang-mismatch",title:"lang and xml:lang must not disagree",description:"Checks that the <html> element's lang and xml:lang attributes declare the same primary language, when both are present.",i18n:{titleKey:"htmlXmlLangMismatch_title",descriptionKey:"htmlXmlLangMismatch_description"},helpUrl:"",tags:["wcag2a","wcag311","structure","language","atomic","automatic","a11ycore"],wcagSc:["3.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"3.1.1",title:"Language of Page",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"3.1.1":["html-xml-lang-mismatch"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"identical-iframes-same-purpose",title:"Frames with the same name embed the same resource",description:"Checks that <iframe>/<frame> elements sharing an accessible name embed the same resource, since one name can only describe one resource.",i18n:{titleKey:"identicalIframesSamePurpose_title",descriptionKey:"identicalIframesSamePurpose_description"},helpUrl:"",tags:["wcag2a","wcag412","structure","atomic","automatic","name","iframe","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"4.1.2":["identical-iframes-same-purpose"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"identical-links-same-purpose",title:"Links with the same accessible name should lead to the same destination",description:"Flags groups of links that share the same accessible name but resolve to more than one distinct destination, for manual review of whether they serve the same purpose.",i18n:{titleKey:"identicalLinksSamePurpose_title",descriptionKey:"identicalLinksSamePurpose_description"},helpUrl:"",tags:["wcag2aaa","wcag249","navigation","atomic","manual","a11ycore"],wcagSc:["2.4.9"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.9",title:"Link Purpose (Link Only)",conformanceLevel:"AAA"}],defaultSeverity:"minor",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"2.4.9":["identical-links-same-purpose-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"iframe-focusable-content",title:'Frames with tabindex="-1" must not contain focusable content',description:'Checks that same-origin <iframe>/<frame> elements with tabindex="-1" do not contain focusable content, since browsers do not propagate that restriction into the frame’s embedded document.',i18n:{titleKey:"iframeFocusableContent_title",descriptionKey:"iframeFocusableContent_description"},helpUrl:"",tags:["wcag2a","wcag211","structure","atomic","automatic","keyboard","iframe","a11ycore"],wcagSc:["2.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.1.1",title:"Keyboard",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.1.1":["iframe-tabindex-negative-content-not-focusable"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"iframe-name-present",title:"Frames have an accessible name",description:"Checks that <iframe>/<frame> elements expose a non-empty accessible name via aria-label, aria-labelledby, or the title attribute.",i18n:{titleKey:"iframeNamePresent_title",descriptionKey:"iframeNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","structure","atomic","automatic","name","iframe","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["iframe-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"iframe-title-unique",title:"Frame titles must be unique",description:"Checks that no two <iframe>/<frame> elements in scope share the same title attribute value.",i18n:{titleKey:"iframeTitleUnique_title",descriptionKey:"iframeTitleUnique_description"},helpUrl:"",tags:["wcag2a","wcag412","structure","atomic","automatic","name","iframe","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["iframe-title-unique"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"image-redundant-alt",title:"Image alt text must not duplicate adjacent visible text",description:"Checks that an <img> alt text is not identical to other visible text already present in its immediate parent element.",i18n:{titleKey:"imageRedundantAlt_title",descriptionKey:"imageRedundantAlt_description"},helpUrl:"",tags:["best-practice","images","nontext","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"img-alt-decorative",title:"Excluded <img>/<canvas>/<svg> must be decorative (manual review)",description:'Flags <img>, <canvas> and <svg> elements excluded from the accessibility tree (aria-hidden, role="none"/"presentation", empty alt, or an unlabeled svg/canvas) for human review that they are purely decorative.',i18n:{titleKey:"img_altDecorative_title",descriptionKey:"img_altDecorative_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"img-alt-present",title:"<img> must have an alt attribute",description:"Checks that <img> elements provide an alt attribute to support a text alternative mechanism.",i18n:{titleKey:"img_altPresent_title",descriptionKey:"img_altPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["img-alt-attr-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"img-alt-quality",title:"<img> alt text must be appropriate (manual review)",description:"Flags <img> elements with non-empty alt text for human review of appropriateness.",i18n:{titleKey:"img_altQuality_title",descriptionKey:"img_altQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"input-image-alt-decorative",title:'<input type="image"> with alt="" must be appropriate (manual review)',description:'Flags <input type="image"> elements with empty alt for human review (usually not appropriate for functional controls).',i18n:{titleKey:"inputImage_altDecorative_title",descriptionKey:"inputImage_altDecorative_description"},helpUrl:"",tags:["wcag2a","wcag111","forms","images","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"input-image-alt-present",title:'<input type="image"> must have an alt attribute',description:'Checks that <input type="image"> elements provide an alt attribute to support a text alternative mechanism.',i18n:{titleKey:"inputImage_altPresent_title",descriptionKey:"inputImage_altPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["input-image-alt-attr-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"input-image-alt-quality",title:'<input type="image"> alt text must be appropriate (manual review)',description:'Flags <input type="image"> elements with non-empty alt text for human review of appropriateness.',i18n:{titleKey:"inputImage_altQuality_title",descriptionKey:"inputImage_altQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","forms","images","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"label-in-name",title:"Label in Name: accessible name contains visible text",description:"Checks that when a control has a visible text label, the accessible name contains that visible label text (WCAG 2.5.3).",i18n:{titleKey:"labelInName_title",descriptionKey:"labelInName_description"},helpUrl:"https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html",tags:["wcag21a","wcag253","forms","atomic","automatic","a11ycore"],wcagSc:["2.5.3"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.5.3",title:"Label in Name",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.5.3":["label-in-name"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"label-title-only",title:"Form controls should not use title as their only label",description:"Checks that a form control with a title attribute also has a real label (label element, aria-label, or aria-labelledby).",i18n:{titleKey:"labelTitleOnly_title",descriptionKey:"labelTitleOnly_description"},helpUrl:"",tags:["best-practice","forms","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-banner-is-top-level",title:"Banner landmark must be top-level",description:'Checks that the banner landmark (role="banner" or a non-nested <header>) is not nested inside another landmark region.',i18n:{titleKey:"landmarkBannerIsTopLevel_title",descriptionKey:"landmarkBannerIsTopLevel_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-complementary-is-top-level",title:"Complementary landmark must be top-level",description:'Checks that the complementary landmark (role="complementary" or an <aside> that keeps its implicit role) is not nested inside another landmark region.',i18n:{titleKey:"landmarkComplementaryIsTopLevel_title",descriptionKey:"landmarkComplementaryIsTopLevel_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-contentinfo-is-top-level",title:"Contentinfo landmark must be top-level",description:'Checks that the contentinfo landmark (role="contentinfo" or a non-nested <footer>) is not nested inside another landmark region.',i18n:{titleKey:"landmarkContentinfoIsTopLevel_title",descriptionKey:"landmarkContentinfoIsTopLevel_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-main-is-top-level",title:"Main landmark must be top-level",description:'Checks that the main landmark (role="main" or <main>) is not nested inside another landmark region.',i18n:{titleKey:"landmarkMainIsTopLevel_title",descriptionKey:"landmarkMainIsTopLevel_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-no-duplicate-banner",title:"Page must not have more than one banner landmark",description:'Checks that at most one banner landmark (role="banner" or a non-nested <header>) exists on the page.',i18n:{titleKey:"landmarkNoDuplicateBanner_title",descriptionKey:"landmarkNoDuplicateBanner_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-no-duplicate-contentinfo",title:"Page must not have more than one contentinfo landmark",description:'Checks that at most one contentinfo landmark (role="contentinfo" or a non-nested <footer>) exists on the page.',i18n:{titleKey:"landmarkNoDuplicateContentinfo_title",descriptionKey:"landmarkNoDuplicateContentinfo_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-no-duplicate-main",title:"Page must not have more than one main landmark",description:'Checks that at most one main landmark (role="main" or <main>) exists on the page.',i18n:{titleKey:"landmarkNoDuplicateMain_title",descriptionKey:"landmarkNoDuplicateMain_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-one-main",title:"Page should have a main landmark",description:'Checks that the page has at least one main landmark (role="main" or <main>).',i18n:{titleKey:"landmarkOneMain_title",descriptionKey:"landmarkOneMain_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"landmark-unique",title:"Landmarks with the same role must have unique names",description:"Checks that when two or more landmarks share the same role, each has a distinct accessible name.",i18n:{titleKey:"landmarkUnique_title",descriptionKey:"landmarkUnique_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"link-in-text-block",title:"Links in text blocks must be distinguishable from surrounding text without relying on color alone",description:"Checks that a link inside a run of text is visually distinguishable from the surrounding text by underline, a font-weight/style difference, or a sufficient (>=3:1) color-contrast difference, not by color alone.",i18n:{titleKey:"linkInTextBlock_title",descriptionKey:"linkInTextBlock_description"},helpUrl:"",tags:["wcag2a","wcag141","navigation","color","links","contrast","atomic","automatic","dom","a11ycore"],wcagSc:["1.4.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.1",title:"Use of Color",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.1":["link-in-text-block"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"link-name-present",title:"Links have an accessible name",description:"Checks that links expose a non-empty accessible name.",i18n:{titleKey:"linkNamePresent_title",descriptionKey:"linkNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","links","name","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["link-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"link-name-quality",title:"Link text should be descriptive, not generic",description:'Flags links whose full accessible name is a known non-descriptive phrase (e.g. "click here", "read more", "more") or a bare file-format name (e.g. "HTML", "PDF") with no adjacent context naming what it leads to, for manual review of whether the purpose is clear.',i18n:{titleKey:"linkNameQuality_title",descriptionKey:"linkNameQuality_description"},helpUrl:"",tags:["wcag2a","wcag244","navigation","quality","atomic","manual","a11ycore"],wcagSc:["2.4.4"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.4",title:"Link Purpose (In Context)",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.4":["link-text-descriptive-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"list-children-valid",title:"Lists must only directly contain list items",description:"Checks that <ul>/<ol> elements only have <li>, <script>, or <template> as direct children.",i18n:{titleKey:"listChildrenValid_title",descriptionKey:"listChildrenValid_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","list","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["list-children-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"listbox-name-present",title:"Listboxes have an accessible name",description:'Checks that elements with role="listbox" expose a non-empty accessible name.',i18n:{titleKey:"listboxNamePresent_title",descriptionKey:"listboxNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","listbox","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["listbox-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"listitem-parent-valid",title:"List items must be inside a list container",description:'Checks that <li> elements are contained by <ul>, <ol>, or an element with role="list".',i18n:{titleKey:"listitemParentValid_title",descriptionKey:"listitemParentValid_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","list","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["listitem-parent-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"manual-review",title:"Manual review: keyboard navigation and focus order",description:"Flags that a manual review of keyboard navigation and focus order is required.",i18n:{titleKey:"manualReview_title",descriptionKey:"manualReview_description"},helpUrl:"",tags:["wcag2a","wcag2aa","wcag211","wcag243","wcag247","nontext","atomic","manual","a11ycore"],wcagSc:["2.1.1","2.4.3","2.4.7"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.1.1",title:"Keyboard",conformanceLevel:"A",url:"https://www.w3.org/TR/WCAG22/#keyboard"},{standard:"WCAG",version:"2.2",requirement:"2.4.3",title:"Focus Order",conformanceLevel:"A",url:"https://www.w3.org/TR/WCAG22/#focus-order"},{standard:"WCAG",version:"2.2",requirement:"2.4.7",title:"Focus Visible",conformanceLevel:"AA",url:"https://www.w3.org/TR/WCAG22/#focus-visible"},{standard:"EN 301 549",version:"V3.2.1",requirement:"9.2.1.1",title:"Keyboard"},{standard:"EN 301 549",version:"V3.2.1",requirement:"9.2.4.3",title:"Focus Order"},{standard:"EN 301 549",version:"V3.2.1",requirement:"9.2.4.7",title:"Focus Visible"},{standard:"WCAG",version:"2.2",type:"Understanding",requirement:"2.1.1",title:"Understanding Keyboard",url:"https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html"},{standard:"WCAG",version:"2.2",type:"Understanding",requirement:"2.4.3",title:"Understanding Focus Order",url:"https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html"},{standard:"WCAG",version:"2.2",type:"Understanding",requirement:"2.4.7",title:"Understanding Focus Visible",url:"https://www.w3.org/WAI/WCAG22/Understanding/focus-visible.html"}],defaultSeverity:"moderate",defaultConfidence:"medium",type:"manual",coverage:null,data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"media-alternative-transcript-evidence",title:"Time-based media: transcript or text alternative evidence",description:"Finds audio and video elements where a transcript or other text alternative is not strongly evidenced in the page content. This rule is conservative and reports cantTell when evidence is missing or cannot be verified.",i18n:{titleKey:"mediaTranscriptPresent_title",descriptionKey:"mediaTranscriptPresent_description"},helpUrl:"",tags:["wcag2a","wcag121","timebasedmedia","media","atomic","manual","a11ycore"],wcagSc:["1.2.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.2.1",title:"Audio-only and Video-only (Prerecorded)",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"1.2.1":["transcript-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"menuitem-name-present",title:"Menu items have an accessible name",description:'Checks that menu items (role="menuitem*", including checkbox/radio variants) expose a non-empty accessible name.',i18n:{titleKey:"menuitemNamePresent_title",descriptionKey:"menuitemNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","name","menuitem","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["menuitem-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"meta-refresh-no-exceptions",title:"Page must not use a meta refresh at all (AAA)",description:'Checks that <meta http-equiv="refresh"> is not present at all, regardless of delay. This is the stricter AAA-level counterpart of the A-level positive-delay-only check.',i18n:{titleKey:"metaRefreshNoExceptions_title",descriptionKey:"metaRefreshNoExceptions_description"},helpUrl:"",tags:["wcag2aaa","wcag224","wcag325","structure","atomic","automatic","a11ycore"],wcagSc:["2.2.4","3.2.5"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.2.4",title:"Interruptions",conformanceLevel:"AAA"},{standard:"WCAG",version:"2.2",requirement:"3.2.5",title:"Change on Request",conformanceLevel:"AAA"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.2.4":["meta-refresh-no-exceptions"],"3.2.5":["meta-refresh-no-exceptions"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"meta-refresh-timing-absent",title:"Page must not use a timed meta refresh",description:'Checks that <meta http-equiv="refresh"> does not impose a positive delay of 20 hours or less.',i18n:{titleKey:"metaRefreshTimingAbsent_title",descriptionKey:"metaRefreshTimingAbsent_description"},helpUrl:"",tags:["wcag2a","wcag221","structure","atomic","automatic","a11ycore"],wcagSc:["2.2.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.2.1",title:"Timing Adjustable",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.2.1":["meta-refresh-timing-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"meta-viewport-large",title:"Viewport meta tag should allow zooming up to 500%",description:'Checks that <meta name="viewport"> does not set user-scalable=no or maximum-scale below 5 (500%).',i18n:{titleKey:"metaViewportLarge_title",descriptionKey:"metaViewportLarge_description"},helpUrl:"",tags:["best-practice","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"meta-viewport-zoom-enabled",title:"Viewport meta tag must not disable zoom",description:'Checks that <meta name="viewport"> does not set user-scalable=no or maximum-scale below 2 (200%).',i18n:{titleKey:"metaViewportZoomEnabled_title",descriptionKey:"metaViewportZoomEnabled_description"},helpUrl:"",tags:["wcag2aa","wcag144","structure","atomic","automatic","a11ycore"],wcagSc:["1.4.4"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.4",title:"Resize Text",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.4.4":["meta-viewport-zoom-enabled"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"meter-name-present",title:"Meters have an accessible name",description:'Checks that elements with role="meter" expose a non-empty accessible name.',i18n:{titleKey:"meterNamePresent_title",descriptionKey:"meterNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","atomic","automatic","name","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["meter-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"mouse-only-event-handlers",title:"Pointer-only inline event handlers should have a keyboard-reachable equivalent",description:"Flags elements with an inline pointer-only event handler (onmouseover, onmouseout, onmousedown, onmouseup, ondblclick, onmousemove, onmouseenter, onmouseleave) and no keyboard-reachable equivalent (onkeydown/onkeyup/onkeypress/onfocus/onblur), for manual review.",i18n:{titleKey:"mouseOnlyEventHandlers_title",descriptionKey:"mouseOnlyEventHandlers_description"},helpUrl:"",tags:["wcag2a","wcag211","structure","atomic","manual","a11ycore"],wcagSc:["2.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.1.1",title:"Keyboard",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"2.1.1":["mouse-only-event-handlers-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"nested-interactive-controls-absent",title:"Interactive controls must not be nested",description:"Checks that an interactive control (link, button, form control, or ARIA widget role) does not contain another interactive control.",i18n:{titleKey:"nestedInteractiveControlsAbsent_title",descriptionKey:"nestedInteractiveControlsAbsent_description"},helpUrl:"",tags:["wcag2a","wcag412","structure","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["nested-interactive-controls-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"no-autoplay-audio",title:"Autoplaying audio should provide a pause/stop or volume-control mechanism",description:"Flags <audio>/<video> elements that autoplay unmuted with no native controls attribute, for manual review against the 3-second exemption in WCAG 1.4.2.",i18n:{titleKey:"noAutoplayAudio_title",descriptionKey:"noAutoplayAudio_description"},helpUrl:"",tags:["wcag2a","wcag142","media","atomic","manual","a11ycore"],wcagSc:["1.4.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.4.2",title:"Audio Control",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"1.4.2":["no-autoplay-audio-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"object-text-alternative-present",title:"<object> must provide a text alternative",description:"Checks that <object> elements provide a text alternative via fallback content or an accessible name.",i18n:{titleKey:"object_textAltPresent_title",descriptionKey:"object_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","object","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["object-text-alternative-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"object-text-alternative-quality",title:"<object> text alternative must be appropriate (manual review)",description:"Flags <object> elements with detected fallback or name for human review of equivalence and appropriateness.",i18n:{titleKey:"object_textAltQuality_title",descriptionKey:"object_textAltQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","object","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"option-name-present",title:"Options have an accessible name",description:'Checks that elements with role="option" expose a non-empty accessible name.',i18n:{titleKey:"optionNamePresent_title",descriptionKey:"optionNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","option","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["option-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"p-as-heading",title:"A <p> styled to look like a heading should probably be a real heading",description:"Flags short <p> elements whose entire text is bold and rendered at >=18px, for manual review of whether a real heading element should be used instead.",i18n:{titleKey:"pAsHeading_title",descriptionKey:"pAsHeading_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","manual","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"1.3.1":["p-as-heading-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"page-has-heading-one",title:"Page should have a level-one heading",description:'Checks that the page has at least one level-one heading (<h1> or role="heading" with aria-level="1").',i18n:{titleKey:"pageHasHeadingOne_title",descriptionKey:"pageHasHeadingOne_description"},helpUrl:"",tags:["best-practice","headings","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"page-title-patterns",title:"Page title patterns that may be insufficiently descriptive",description:"Identifies page title patterns that may indicate low descriptiveness, such as generic, duplicated, or overly templated titles. This rule provides review signals and does not fail automatically.",i18n:{titleKey:"pageTitlePatterns_title",descriptionKey:"pageTitlePatterns_description"},helpUrl:"",tags:["wcag2a","wcag242","titles","atomic","navigation","manual","a11ycore"],wcagSc:["2.4.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.2",title:"Page Titled",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"2.4.2":["page-title-patterns"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"page-title-present",title:"Page has a non-empty title",description:"Checks that the page includes a non-empty <title> element.",i18n:{titleKey:"pageTitlePresent_title",descriptionKey:"pageTitlePresent_description"},helpUrl:"",tags:["wcag2a","wcag242","titles","atomic","navigation","automatic","a11ycore"],wcagSc:["2.4.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.4.2",title:"Page Titled",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.4.2":["page-title-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"password-paste-enabled",title:"Authentication fields must not block pasting",description:"Checks that a password or one-time-code field carries no inline paste handler that cancels the paste, which would remove the password manager or clipboard that WCAG 3.3.8 relies on as the assisting mechanism.",i18n:{titleKey:"passwordPasteEnabled_title",descriptionKey:"passwordPasteEnabled_description"},helpUrl:"",tags:["wcag22aa","wcag338","forms","authentication","atomic","manual","acc","a11ycore"],wcagSc:["3.3.8"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"3.3.8",title:"Accessible Authentication (Minimum)",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"3.3.8":["authentication-paste-not-blocked"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"presentation-role-conflict",title:"Presentational role must not conflict with a global ARIA attribute or focusability",description:'Checks that role="presentation"/"none" (including an <img alt=""> implicit presentation role) is not combined with a global ARIA attribute (aria-label, aria-hidden, aria-describedby, ...) or focusability (tabindex/native).',i18n:{titleKey:"presentationRoleConflict_title",descriptionKey:"presentationRoleConflict_description"},helpUrl:"",tags:["best-practice","aria","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"presentational-children-focusable-absent",title:"Roles with presentational children must not contain focusable content",description:"Checks that an element whose role makes its children presentational (button, checkbox, img, option, radio, slider, switch, tab, ...) contains no descendant that takes a tab stop.",i18n:{titleKey:"presentationalChildrenFocusableAbsent_title",descriptionKey:"presentationalChildrenFocusableAbsent_description"},helpUrl:"",tags:["wcag2a","wcag412","aria","structure","focus","atomic","automatic","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["presentational-children-focusable-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"progressbar-name-present",title:"Progress bars have an accessible name",description:'Checks that elements with role="progressbar" expose a non-empty accessible name.',i18n:{titleKey:"progressbarNamePresent_title",descriptionKey:"progressbarNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","atomic","automatic","name","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["progressbar-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"region",title:"Page content should be inside a landmark region",description:"Checks that content under <body> is contained within a landmark region.",i18n:{titleKey:"region_title",descriptionKey:"region_description"},helpUrl:"",tags:["best-practice","landmarks","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"role-img-text-alternative-present",title:'[role="img"/"graphics-symbol"/"graphics-document"] must have an accessible text alternative',description:'Checks that elements with role="img", "graphics-symbol" or "graphics-document" provide an accessible text alternative using aria-label, aria-labelledby, a title attribute, or (for SVG elements) a first-child <title>.',i18n:{titleKey:"roleImg_textAlternativePresent_title",descriptionKey:"roleImg_textAlternativePresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","images","aria","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["role-img-text-alternative-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"scope-attr-valid",title:"scope attribute must have a valid value",description:'Checks that scope="..." is one of row, col, rowgroup, or colgroup.',i18n:{titleKey:"scopeAttrValid_title",descriptionKey:"scopeAttrValid_description"},helpUrl:"",tags:["best-practice","tables","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"scrollable-region-focusable",title:"Scrollable regions with no focusable content should be keyboard-focusable",description:"Flags elements whose CSS declares overflow:auto/scroll, contain no focusable descendant, and are not themselves keyboard-focusable, for manual review of whether their content actually overflows and needs keyboard scroll access.",i18n:{titleKey:"scrollableRegionFocusable_title",descriptionKey:"scrollableRegionFocusable_description"},helpUrl:"",tags:["wcag2a","wcag2aaa","wcag211","wcag213","structure","atomic","manual","a11ycore"],wcagSc:["2.1.1","2.1.3"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.1.1",title:"Keyboard",conformanceLevel:"A"},{standard:"WCAG",version:"2.2",requirement:"2.1.3",title:"Keyboard (No Exception)",conformanceLevel:"AAA"}],defaultSeverity:"moderate",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"2.1.1":["scrollable-region-focusable-evidence"],"2.1.3":["scrollable-region-focusable-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"searchbox-name-present",title:"Searchboxes have an accessible name",description:'Checks that elements with role="searchbox" expose a non-empty accessible name.',i18n:{titleKey:"searchboxNamePresent_title",descriptionKey:"searchboxNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","searchbox","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["searchbox-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"server-side-image-map-absent",title:"Images must not use a server-side image map",description:"Checks that <img> elements do not carry the ismap attribute (server-side image maps have no keyboard-operable equivalent).",i18n:{titleKey:"serverSideImageMapAbsent_title",descriptionKey:"serverSideImageMapAbsent_description"},helpUrl:"",tags:["wcag2a","wcag211","structure","atomic","automatic","keyboard","a11ycore"],wcagSc:["2.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.1.1",title:"Keyboard",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"2.1.1":["server-side-image-map-absent"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"skip-link",title:"Skip link must have a resolvable, usable target",description:`Checks that a "skip to ..." link's href fragment resolves to a real, currently usable element in the document.`,i18n:{titleKey:"skipLink_title",descriptionKey:"skipLink_description"},helpUrl:"",tags:["best-practice","keyboard","navigation","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"slider-name-present",title:"Sliders have an accessible name",description:'Checks that sliders (input[type="range"] and role="slider") expose a non-empty accessible name.',i18n:{titleKey:"sliderNamePresent_title",descriptionKey:"sliderNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","slider","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["slider-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"spinbutton-name-present",title:"Spinbuttons have an accessible name",description:'Checks that elements with role="spinbutton" expose a non-empty accessible name.',i18n:{titleKey:"spinbuttonNamePresent_title",descriptionKey:"spinbuttonNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","spinbutton","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["spinbutton-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"summary-name-present",title:"Summary elements have an accessible name",description:"Checks that <summary> elements expose a non-empty accessible name.",i18n:{titleKey:"summaryNamePresent_title",descriptionKey:"summaryNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","name","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["summary-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"svg-image-text-alternative-present",title:"SVG <image> must have a text alternative",description:"Checks that SVG <image> elements provide a text alternative via <title>/<desc> or an ARIA accessible name.",i18n:{titleKey:"svgImage_textAltPresent_title",descriptionKey:"svgImage_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","svg","image","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.1.1":["svg-image-text-alt-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"svg-text-alternative-present",title:"<svg> must provide a text alternative",description:"Checks that inline <svg> elements provide a text alternative via a <title> element or an ARIA name (a <desc> element alone does not count).",i18n:{titleKey:"svg_textAltPresent_title",descriptionKey:"svg_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","svg","nontext","images","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.1.1":["svg-text-alternative-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"svg-text-alternative-quality",title:"<svg> text alternative must be appropriate (manual review)",description:"Flags applicable <svg> graphics with a detected text alternative for human review of appropriateness.",i18n:{titleKey:"svg_textAltQuality_title",descriptionKey:"svg_textAltQuality_description"},helpUrl:"",tags:["wcag2a","wcag111","nontext","svg","manual","atomic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{facetsBySc:{"1.1.1":["text-alternative-quality"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"tab-name-present",title:"Tabs have an accessible name",description:'Checks that elements with role="tab" expose a non-empty accessible name.',i18n:{titleKey:"tabNamePresent_title",descriptionKey:"tabNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","name","tab","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["tab-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"tabindex",title:"tabindex should not be greater than 0",description:"Checks that tabindex values are 0 or negative, not a positive number.",i18n:{titleKey:"tabindex_title",descriptionKey:"tabindex_description"},helpUrl:"",tags:["best-practice","keyboard","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"table-duplicate-name",title:"Table caption must not duplicate its summary attribute",description:"Checks that a <table>'s <caption> text is not identical to its (deprecated) summary attribute.",i18n:{titleKey:"tableDuplicateName_title",descriptionKey:"tableDuplicateName_description"},helpUrl:"",tags:["best-practice","tables","structure","atomic","manual","a11ycore"],wcagSc:[],normativeMappings:[],defaultSeverity:"minor",defaultConfidence:"medium",type:"manual",coverage:{},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"table-fake-caption",title:"A table's first row should not stand in for a real <caption>",description:"Flags tables with no <caption> whose first row has a single non-empty cell while other rows have multiple cells, for manual review of whether that cell is acting as a fake caption.",i18n:{titleKey:"tableFakeCaption_title",descriptionKey:"tableFakeCaption_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","manual","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"minor",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"1.3.1":["table-fake-caption-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"table-headers-attr-valid",title:'Table cell "headers" attribute must reference valid header cells',description:"Checks that each id in a <td>/<th> headers attribute resolves to a cell (<td> or <th>) within the same table (not missing, not a non-cell element, not itself).",i18n:{titleKey:"tableHeadersAttrValid_title",descriptionKey:"tableHeadersAttrValid_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","table","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["table-headers-attr-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"table-th-has-data-cells",title:"<th> elements must describe at least one data cell",description:"Checks that a table containing <th> elements also contains at least one <td> data cell for those headers to describe.",i18n:{titleKey:"tableThHasDataCells_title",descriptionKey:"tableThHasDataCells_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","table","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["table-th-has-data-cells"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"target-size-minimum",title:"Pointer targets must be at least 24x24px large, or leave sufficient distance to other targets",description:"Checks that pointer-operable targets have an effective hit region of at least 24 by 24 CSS pixels, or meet an allowed exception (e.g. sufficient spacing).",i18n:{titleKey:"targetSizeMinimum_title",descriptionKey:"targetSizeMinimum_description"},helpUrl:"",tags:["wcag22aa","wcag258","navigation","operable","pointer","target-size","atomic","automatic","dom","a11ycore"],wcagSc:["2.5.8"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"2.5.8",title:"Target Size (Minimum)",conformanceLevel:"AA"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"2.5.8":["target-size-minimum-pointer"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"operable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"td-has-header",title:"Data cells in large tables must have an associated header",description:"Checks that every <td> in a large, simple (no colspan/rowspan) table has an associated header, via a headers attribute, an implicit column <th> above it, or an implicit row <th> to its left.",i18n:{titleKey:"tdHasHeader_title",descriptionKey:"tdHasHeader_description"},helpUrl:"",tags:["wcag2a","wcag131","structure","atomic","automatic","a11ycore"],wcagSc:["1.3.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.3.1",title:"Info and Relationships",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"1.3.1":["td-has-header"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"textbox-name-present",title:"Textboxes have an accessible name",description:'Checks that elements with role="textbox" expose a non-empty accessible name.',i18n:{titleKey:"textboxNamePresent_title",descriptionKey:"textboxNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","forms","atomic","automatic","name","textbox","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["textbox-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"tooltip-name-present",title:"Tooltips have an accessible name",description:'Checks that elements with role="tooltip" expose a non-empty accessible name.',i18n:{titleKey:"tooltipNamePresent_title",descriptionKey:"tooltipNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","name","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["tooltip-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"treeitem-name-present",title:"Tree items have an accessible name",description:'Checks that elements with role="treeitem" expose a non-empty accessible name.',i18n:{titleKey:"treeitemNamePresent_title",descriptionKey:"treeitemNamePresent_description"},helpUrl:"",tags:["wcag2a","wcag412","navigation","atomic","automatic","name","treeitem","a11ycore"],wcagSc:["4.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"4.1.2",title:"Name, Role, Value",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"4.1.2":["treeitem-name-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"robust",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"valid-lang",title:"Element lang attribute must be syntactically valid",description:"Checks that any element (other than the root <html>) with a non-empty lang attribute uses a syntactically valid language tag.",i18n:{titleKey:"validLang_title",descriptionKey:"validLang_description"},helpUrl:"",tags:["wcag2aa","wcag312","structure","language","atomic","automatic","a11ycore"],wcagSc:["3.1.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"3.1.2",title:"Language of Parts",conformanceLevel:"AA"}],defaultSeverity:"moderate",defaultConfidence:"high",type:"automatic",coverage:{facetsBySc:{"3.1.2":["element-lang-valid"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"understandable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"video-caption",title:"Prerecorded video should provide a captions track",description:'Flags <video> elements with no <track kind="captions"|"subtitles"> child, for manual review of whether the video has an audio track that needs captions.',i18n:{titleKey:"videoCaption_title",descriptionKey:"videoCaption_description"},helpUrl:"",tags:["wcag2a","wcag122","media","timebasedmedia","atomic","manual","a11ycore"],wcagSc:["1.2.2"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.2.2",title:"Captions (Prerecorded)",conformanceLevel:"A"}],defaultSeverity:"moderate",defaultConfidence:"low",type:"manual",coverage:{facetsBySc:{"1.2.2":["video-captions-track-evidence"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null},{ruleId:"video-poster-text-alternative-present",title:"<video> poster must have a text alternative",description:"Checks that <video> elements with a poster image provide a text alternative (accessible name).",i18n:{titleKey:"videoPoster_textAltPresent_title",descriptionKey:"videoPoster_textAltPresent_description"},helpUrl:"",tags:["wcag2a","wcag111","media","video","atomic","automatic","a11ycore"],wcagSc:["1.1.1"],normativeMappings:[{standard:"WCAG",version:"2.2",requirement:"1.1.1",title:"Non-text Content",conformanceLevel:"A"}],defaultSeverity:"serious",defaultConfidence:"medium",type:"automatic",coverage:{facetsBySc:{"1.1.1":["video-poster-text-alt-present"]}},data:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!0,deprecated:!1,deprecation:null,category:"perceivable",standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null}],dr=cn,Zt=[{id:"wcag-1.1.1-non-text-content",checksIds:["area-alt-present","img-alt-decorative","img-alt-quality","area-alt-decorative","area-alt-quality","canvas-text-alternative-quality","canvas-text-alternative-present","embed-text-alternative-present","img-alt-present","input-image-alt-present","object-text-alternative-present","role-img-text-alternative-present","svg-image-text-alternative-present","svg-text-alternative-present","video-poster-text-alternative-present","embed-text-alternative-quality","input-image-alt-decorative","input-image-alt-quality","object-text-alternative-quality","svg-text-alternative-quality","meter-name-present","progressbar-name-present"],meta:{title:"Non-text content: text alternatives",description:"Rollup of checks ensuring non-text content has an appropriate text alternative.",wcagSc:["1.1.1"],level:"A"}},{id:"wcag-1.2.1-audio-only-video-only-prerecorded",checksIds:["media-alternative-transcript-evidence"],meta:{title:"Audio-only and video-only (prerecorded): transcript",description:"Rollup of checks for transcript availability for prerecorded audio-only/video-only media.",wcagSc:["1.2.1"],level:"A"}},{id:"wcag-1.2.2-captions-prerecorded",checksIds:["video-caption"],meta:{title:"Captions (Prerecorded)",description:"Rollup of checks for captions-track evidence on prerecorded video.",wcagSc:["1.2.2"],level:"A"}},{id:"wcag-1.3.1-info-and-relationships",checksIds:["table-headers-attr-valid","table-th-has-data-cells","aria-hidden-body","list-children-valid","listitem-parent-valid","definition-list-children-valid","dlitem-parent-valid","aria-required-children","aria-prohibited-children","aria-required-parent","form-control-programmatic-label-present","p-as-heading","table-fake-caption","td-has-header"],meta:{title:"Info and Relationships",description:"Rollup of checks ensuring information, structure, and relationships conveyed through presentation are programmatically determinable.",wcagSc:["1.3.1"],level:"A"}},{id:"wcag-1.4.1-use-of-color",checksIds:["link-in-text-block"],meta:{title:"Use of Color",description:"Rollup of checks ensuring color is not used as the only visual means of conveying information.",wcagSc:["1.4.1"],level:"A"}},{id:"wcag-1.4.2-audio-control",checksIds:["no-autoplay-audio"],meta:{title:"Audio Control",description:"Rollup of checks for a pause/stop or volume-control mechanism on autoplaying audio.",wcagSc:["1.4.2"],level:"A"}},{id:"wcag-1.4.3-contrast-minimum",checksIds:["contrast-computable","contrast-minimum"],meta:{title:"Contrast: minimum",description:"Rollup of checks for minimum text contrast.",wcagSc:["1.4.3"],level:"AA"}},{id:"wcag-1.4.6-contrast-enhanced",checksIds:["contrast-computable","contrast-enhanced"],meta:{title:"Contrast: enhanced",description:"Rollup of checks for enhanced text contrast.",wcagSc:["1.4.6"],level:"AAA"}},{id:"wcag-2.1.1-keyboard",checksIds:["manual-review","iframe-focusable-content","server-side-image-map-absent","scrollable-region-focusable","mouse-only-event-handlers"],meta:{title:"Keyboard",description:"Rollup of checks ensuring functionality is operable through a keyboard interface.",wcagSc:["2.1.1"],level:"A"}},{id:"wcag-2.1.3-keyboard-no-exception",checksIds:["scrollable-region-focusable"],meta:{title:"Keyboard (No Exception)",description:"Rollup of checks ensuring functionality is operable through a keyboard interface with no exceptions (AAA).",wcagSc:["2.1.3"],level:"AAA"}},{id:"wcag-2.2.2-pause-stop-hide",checksIds:["deprecated-elements-not-used"],meta:{title:"Pause, Stop, Hide",description:"Rollup of checks ensuring moving, blinking, or auto-scrolling content can be paused, stopped, or hidden.",wcagSc:["2.2.2"],level:"A"}},{id:"wcag-2.4.1-bypass-blocks",checksIds:["bypass-blocks-present"],meta:{title:"Bypass Blocks",description:"Rollup of checks ensuring the page provides a way to bypass repeated blocks of content.",wcagSc:["2.4.1"],level:"A"}},{id:"wcag-2.4.2-page-titled",checksIds:["page-title-patterns","page-title-present"],meta:{title:"Page titled",description:"Rollup of checks ensuring documents have a meaningful page title.",wcagSc:["2.4.2"],level:"A"}},{id:"wcag-2.4.3-focus-order",checksIds:["manual-review"],meta:{title:"Focus order",description:"Rollup of checks ensuring focus moves through content in a meaningful order.",wcagSc:["2.4.3"],level:"A"}},{id:"wcag-2.4.4-link-purpose-in-context",checksIds:["link-name-quality"],meta:{title:"Link Purpose (In Context)",description:"Rollup of checks flagging links whose text alone is a known non-descriptive/generic phrase.",wcagSc:["2.4.4"],level:"A"}},{id:"wcag-2.4.6-headings-and-labels",checksIds:["heading-quality","form-control-label-quality"],meta:{title:"Headings and Labels",description:"Rollup of checks flagging headings whose text is a placeholder rather than a description of the content that follows.",wcagSc:["2.4.6"],level:"AA"}},{id:"wcag-2.4.7-focus-visible",checksIds:["aria-hidden-focus","css-hidden-focus","css-focus-indicator-suppressed","manual-review"],meta:{title:"Focus visible",description:"Rollup of checks ensuring keyboard focus is not hidden and remains perceivable.",wcagSc:["2.4.7"],level:"AA"}},{id:"wcag-2.4.9-link-purpose-link-only",checksIds:["identical-links-same-purpose"],meta:{title:"Link Purpose (Link Only)",description:"Rollup of checks ensuring links with the same accessible name serve the same purpose (AAA).",wcagSc:["2.4.9"],level:"AAA"}},{id:"wcag-2.5.3-label-in-name",checksIds:["label-in-name"],meta:{title:"Label in name",description:"Rollup of checks ensuring that when a control has a visible text label, the accessible name contains that visible label text.",wcagSc:["2.5.3"],level:"A"}},{id:"wcag-2.5.8-target-size-minimum",checksIds:["target-size-minimum"],meta:{title:"Target size: minimum",description:"Rollup of checks ensuring pointer targets meet minimum size requirements.",wcagSc:["2.5.8"],level:"AA"}},{id:"wcag-3.1.1-language-of-page",checksIds:["html-lang-attr-present","html-xml-lang-mismatch"],meta:{title:"Language of page",description:"Rollup of checks ensuring the page language is specified.",wcagSc:["3.1.1"],level:"A"}},{id:"wcag-3.1.2-language-of-parts",checksIds:["valid-lang"],meta:{title:"Language of Parts",description:"Rollup of checks ensuring elements whose language differs from the page default declare it correctly.",wcagSc:["3.1.2"],level:"AA"}},{id:"wcag-1.3.4-orientation",checksIds:["css-orientation-lock"],meta:{title:"Orientation",description:"Rollup of checks ensuring content does not restrict its view to a single display orientation.",wcagSc:["1.3.4"],level:"AA"}},{id:"wcag-1.3.5-identify-input-purpose",checksIds:["autocomplete-valid"],meta:{title:"Identify Input Purpose",description:"Rollup of checks ensuring the autocomplete attribute correctly identifies input purpose.",wcagSc:["1.3.5"],level:"AA"}},{id:"wcag-1.4.12-text-spacing",checksIds:["avoid-inline-spacing"],meta:{title:"Text Spacing",description:"Rollup of checks ensuring inline styles do not block user text-spacing overrides.",wcagSc:["1.4.12"],level:"AA"}},{id:"wcag-2.2.4-interruptions",checksIds:["meta-refresh-no-exceptions"],meta:{title:"Interruptions",description:"Rollup of checks ensuring automatic context changes only happen at the user's request (AAA).",wcagSc:["2.2.4"],level:"AAA"}},{id:"wcag-3.2.5-change-on-request",checksIds:["meta-refresh-no-exceptions"],meta:{title:"Change on Request",description:"Rollup of checks ensuring context changes only happen at the user's request (AAA).",wcagSc:["3.2.5"],level:"AAA"}},{id:"wcag-4.1.1-parsing",checksIds:["duplicate-id"],meta:{title:"Parsing",description:"Rollup of checks ensuring id values are unique. WCAG 2.0/2.1 only: SC 4.1.1 was removed in WCAG 2.2, so this composite carries the wcag22-removed tag.",wcagSc:["4.1.1"],level:"A"}},{id:"wcag-4.1.2-name",checksIds:["aria-role-name-present","binary-control-name-present","button-name-present","combobox-name-present","dialog-name-present","form-control-programmatic-label-present","iframe-name-present","iframe-title-unique","identical-iframes-same-purpose","link-name-present","listbox-name-present","menuitem-name-present","option-name-present","searchbox-name-present","slider-name-present","spinbutton-name-present","tab-name-present","textbox-name-present","treeitem-name-present","aria-hidden-focus","aria-hidden-body","form-control-programmatic-label-quality","summary-name-present","tooltip-name-present"],meta:{title:"Name, role, value: accessible name",description:"Rollup of checks that common interactive elements expose a non-empty accessible name.",wcagSc:["4.1.2"],level:"A"}},{id:"wcag-4.1.2-aria-validity",checksIds:["aria-roles-valid","aria-deprecated-role","aria-valid-attr","aria-valid-attr-value","aria-allowed-attr","aria-prohibited-attr","aria-required-attr","duplicate-id-aria","nested-interactive-controls-absent","presentational-children-focusable-absent","aria-braille-equivalent","aria-conditional-attr","aria-checked-state-mismatch"],meta:{title:"Name, role, value: ARIA validity",description:"Rollup of checks that ARIA role and attribute usage conforms to the WAI-ARIA specification (valid roles, valid attributes, valid values, required attributes, unique ARIA-referenced ids).",wcagSc:["4.1.2"],level:"A"}},{id:"wcag-1.4.4-resize-text",checksIds:["meta-viewport-zoom-enabled"],meta:{title:"Resize Text",description:"Rollup of checks ensuring the viewport meta tag does not prevent users from zooming text up to 200%.",wcagSc:["1.4.4"],level:"AA"}},{id:"wcag-2.2.1-timing-adjustable",checksIds:["meta-refresh-timing-absent"],meta:{title:"Timing Adjustable",description:"Rollup of checks ensuring the page does not impose a timed refresh the user cannot control.",wcagSc:["2.2.1"],level:"A"}},{id:"wcag-3.3.2-labels-or-instructions",checksIds:["form-control-single-label","form-control-programmatic-label-present"],meta:{title:"Labels or Instructions",description:"Rollup of checks ensuring form controls have unambiguous labeling.",wcagSc:["3.3.2"],level:"A"}},{id:"wcag-3.3.8-accessible-authentication-minimum",checksIds:["password-paste-enabled"],meta:{title:"Accessible Authentication (Minimum)",description:"Rollup of checks ensuring an authentication step leaves the mechanisms that help a user through it in place.",wcagSc:["3.3.8"],level:"AA"}}],Tn={accesskeys:{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("[accesskey]"):t.queryAll("[accesskey]"),w=new Map;for(const k of e){if(!k||!k.getAttribute)continue;const h=String(k.getAttribute("accesskey")||"").trim();if(!h)continue;const v=h.toLowerCase(),A=w.get(v)||[];A.push(k),w.set(v,A)}const u=[];for(const[k,h]of w)if(!(h.length<=1))for(const v of h)u.push(t.reportOccurrence(v,{summary:"This element's accesskey is shared with another element on the page.",hint:"Make each accesskey value unique across the page.",i18n:{summaryKey:"accesskeys_summary_cantTell",hintKey:"accesskeys_hint_cantTell",params:{accesskey:k,duplicateCount:String(h.length)}},data:{details:{reasonCode:"ACCESSKEY_DUPLICATE",accesskey:k,duplicateCount:h.length}}}));return u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"area-alt-decorative":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:l=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(l)):[]}catch{return[]}},v=new WeakMap;function A(l){if(!m)return{eligible:!0,reasons:[]};if(!l||typeof l!="object")return{eligible:!0,reasons:[]};const y=v.get(l);if(y)return y;let b;try{b=m(l,o)}catch{b={eligible:!0,reasons:[]}}return b=b&&typeof b=="object"?b:{eligible:!!b,reasons:[]},v.set(l,b),b}const p=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,m=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null;function s(l){try{const y=String(l||"").trim();return y?y[0]==="#"?y.slice(1).trim().toLowerCase():y.toLowerCase():""}catch{return""}}function c(l){try{if(!l||!l.getAttribute)return"";const y=String(l.getAttribute("name")||l.getAttribute("id")||"").trim();return y?y.toLowerCase():""}catch{return""}}const d=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function f(l){const y=(()=>{try{return String(l.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(y!=="presentation"&&y!=="none")return!1;let b;if(d){const _=(()=>{try{return d(l,o)}catch{return null}})();b=!!(_&&_.focusable)}else{const _=l.getAttribute("tabindex");b=_!=null&&String(_).trim()!==""&&!Number.isNaN(Number(String(_).trim()))}return!b}const g=(()=>{try{return Array.from((k?k("area"):h("area"))||[])}catch{return h("area")}})(),i=new Map;try{const l=Array.from(t.querySelectorAll("img[usemap]"));for(const y of l){const b=s(y.getAttribute("usemap"));b&&(i.has(b)||i.set(b,y))}}catch{}if(!g.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const a=[];let r=0;for(const l of g){if(!l||!l.getAttribute)continue;let y;try{const x=l.closest&&l.closest("map"),C=x?c(x):"";y=C&&i.get(C)||null}catch{y=null}if(!y)continue;if(m){const x=A(y);if(x&&x.eligible===!1)continue}if(m){const x=(()=>{try{return m(l,o)}catch{return{eligible:!0,reasons:[]}}})();if(x&&x.eligible===!1)continue}if(f(l))continue;let b;try{b=l.getAttribute("alt")}catch{b=null}if(b===null||String(b).trim()!=="")continue;r+=1;const _=p?p(l,o,{targetSet:"acc"}):null,I={summary:'Review whether <area> is decorative (alt="").',hint:"Confirm the area does not convey information or function. If it is interactive or meaningful, provide meaningful alt text.",i18n:{summaryKey:"area_altDecorative_summary_cantTell",hintKey:"area_altDecorative_hint_cantTell",params:{element:(l.tagName||"").toLowerCase()}},data:{visibilityFilter:_||{targetSet:"acc",accEligible:null,reasons:[]},details:null}};e&&typeof e.reportOccurrence=="function"?a.push(e.reportOccurrence(l,I)):a.push({selector:"",html:"",...I})}return r===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:a}}),applicability:null},"area-alt-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:a=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(a)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null;function m(a){try{const r=String(a||"").trim();return r?r[0]==="#"?r.slice(1).trim().toLowerCase():r.toLowerCase():""}catch{return""}}function s(a){try{if(!a||!a.getAttribute)return"";const r=String(a.getAttribute("name")||a.getAttribute("id")||"").trim();return r?r.toLowerCase():""}catch{return""}}const c=(()=>{const a=new Map;try{const r=t&&t.querySelectorAll?t.querySelectorAll("img[usemap]"):[];for(const l of r){if(!l||!l.getAttribute)continue;const y=m(l.getAttribute("usemap"));y&&(a.has(y)||a.set(y,l))}}catch{}return a})();function d(a){try{if(!a||!a.closest)return null;const r=a.closest("map");if(!r)return null;const l=s(r);return l&&c.get(l)||null}catch{}return null}const f=(()=>{try{return Array.from((k?k("area"):h("area"))||[])}catch{return h("area")}})();if(!f.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=[];let i=0;for(const a of f){if(!a||!a.getAttribute)continue;const r=d(a);if(!r)continue;if(A){const I=(()=>{try{return A(r,o)}catch{return{eligible:!0,reasons:[]}}})();if(I&&I.eligible===!1)continue}if(A){const I=(()=>{try{return A(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(I&&I.eligible===!1)continue}if(i+=1,a.getAttribute("alt")!==null)continue;if(p){let I;try{I=p(a,o)}catch{I=null}if(I&&I.present)continue}const y=(()=>{try{return a.getAttribute("title")}catch{return null}})();if(y!==null&&String(y).trim())continue;const b=v?v(a,o,{targetSet:"acc"}):null,_={selector:"",html:"",summary:"Missing alt attribute on &lt;area&gt;.",hint:'Add an alt attribute (use alt="" only for decorative areas).',i18n:{summaryKey:"area_altPresent_summary_fail",hintKey:"area_altPresent_hint_fail",params:{element:"area"}},data:{visibilityFilter:b||{targetSet:"acc",accEligible:null,reasons:[]}}};e&&typeof e.reportOccurrence=="function"?g.push(e.reportOccurrence(a,_)):g.push({..._})}return i===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:g.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:g}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"area-alt-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:l=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(l)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=new WeakMap;function m(l){if(!A)return{eligible:!0,reasons:[]};if(!l||typeof l!="object")return{eligible:!0,reasons:[]};const y=p.get(l);if(y)return y;let b;try{b=A(l,o)}catch{b={eligible:!0,reasons:[]}}return b=b&&typeof b=="object"?b:{eligible:!!b,reasons:[]},p.set(l,b),b}function s(l){try{const y=String(l||"").trim();return y?y[0]==="#"?y.slice(1).trim().toLowerCase():y.toLowerCase():""}catch{return""}}function c(l){try{if(!l||!l.getAttribute)return"";const y=String(l.getAttribute("name")||l.getAttribute("id")||"").trim();return y?y.toLowerCase():""}catch{return""}}const d=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function f(l){const y=(()=>{try{return String(l.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(y!=="presentation"&&y!=="none")return!1;let b;if(d){const _=(()=>{try{return d(l,o)}catch{return null}})();b=!!(_&&_.focusable)}else{const _=l.getAttribute("tabindex");b=_!=null&&String(_).trim()!==""&&!Number.isNaN(Number(String(_).trim()))}return!b}const g=(()=>{try{return Array.from((k?k("area"):h("area"))||[])}catch{return h("area")}})();if(!g.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];let a=0;const r=new Map;try{const l=Array.from(t.querySelectorAll("img[usemap]"));for(const y of l){const b=s(y.getAttribute("usemap"));b&&(r.has(b)||r.set(b,y))}}catch{}for(const l of g){if(!l||!l.getAttribute)continue;let y;try{const C=l.closest&&l.closest("map"),N=C?c(C):"";y=N&&r.get(N)||null}catch{y=null}if(!y)continue;if(A){const C=m(y);if(C&&C.eligible===!1)continue}if(A){const C=m(l);if(C&&C.eligible===!1)continue}if(f(l))continue;let b;try{b=l.getAttribute("alt")}catch{b=null}if(b===null||String(b).trim()==="")continue;a+=1;const _=v?v(l,o,{targetSet:"acc"}):null;let I;try{I=String(l.getAttribute("alt")||"")}catch{I=""}const x={summary:"Review alt text on <area> for accuracy and appropriateness.",hint:"Ensure the alt text identifies the destination/action of the image map area in context.",i18n:{summaryKey:"area_altQuality_summary_cantTell",hintKey:"area_altQuality_hint_cantTell",params:{element:(l.tagName||"").toLowerCase()}},data:{visibilityFilter:_||{targetSet:"acc",accEligible:null,reasons:[]},details:{alt:I.trim()}}};e&&typeof e.reportOccurrence=="function"?i.push(e.reportOccurrence(l,x)):i.push({selector:"",html:"",...x})}return a===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:i}}),applicability:null},"aria-allowed-attr":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-dropeffect","aria-flowto","aria-grabbed","aria-hidden","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"],u={article:"article",blockquote:"blockquote",button:"button",caption:"caption",code:"code",dd:"definition",del:"deletion",details:"group",dfn:"term",dialog:"dialog",div:"generic",dt:"term",em:"emphasis",fieldset:"group",figure:"figure",h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",hr:"separator",ins:"insertion",main:"main",mark:"mark",menu:"list",meter:"meter",nav:"navigation",ol:"list",optgroup:"group",option:"option",output:"status",p:"paragraph",progress:"progressbar",strong:"strong",span:"generic",sub:"subscript",sup:"superscript",textarea:"textbox",time:"time",ul:"list","input[type=text]":"textbox","input[type=tel]":"textbox","input[type=url]":"textbox","input[type=email]":"textbox","input[type=password]":"textbox","input[type=search]":"searchbox","input[type=number]":"spinbutton","input[type=range]":"slider","input[type=checkbox]":"checkbox","input[type=radio]":"radio","input[type=button]":"button","input[type=submit]":"button","input[type=reset]":"button","input[type=image]":"button"},k="[aria-activedescendant], [aria-autocomplete], [aria-checked], [aria-colcount], [aria-colindex], [aria-colspan], [aria-disabled], [aria-errormessage], [aria-expanded], [aria-haspopup], [aria-invalid], [aria-level], [aria-modal], [aria-multiline], [aria-multiselectable], [aria-orientation], [aria-placeholder], [aria-posinset], [aria-pressed], [aria-readonly], [aria-required], [aria-rowcount], [aria-rowindex], [aria-rowspan], [aria-selected], [aria-setsize], [aria-sort], [aria-valuemax], [aria-valuemin], [aria-valuenow], [aria-valuetext]",h=new Set(["audio","video"]),v={alert:[],alertdialog:["aria-modal"],application:["aria-activedescendant","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],article:["aria-posinset","aria-setsize"],banner:[],blockquote:[],button:["aria-disabled","aria-expanded","aria-haspopup","aria-pressed"],caption:[],cell:["aria-colindex","aria-colspan","aria-rowindex","aria-rowspan"],checkbox:["aria-checked","aria-disabled","aria-errormessage","aria-expanded","aria-invalid","aria-readonly","aria-required"],code:[],columnheader:["aria-colindex","aria-colspan","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected","aria-sort"],combobox:["aria-activedescendant","aria-autocomplete","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-readonly","aria-required"],complementary:[],contentinfo:[],definition:[],deletion:[],dialog:["aria-modal"],directory:[],"doc-abstract":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-acknowledgments":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-afterword":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-appendix":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-backlink":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-biblioentry":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-level","aria-posinset","aria-setsize"],"doc-bibliography":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-biblioref":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-chapter":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-colophon":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-conclusion":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-cover":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-credit":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-credits":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-dedication":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-endnote":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-level","aria-posinset","aria-setsize"],"doc-endnotes":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-epigraph":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-epilogue":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-errata":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-example":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-footnote":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-foreword":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-glossary":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-glossref":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-index":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-introduction":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-noteref":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-notice":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-pagebreak":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-orientation","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],"doc-pagefooter":["aria-disabled","aria-errormessage","aria-haspopup","aria-invalid"],"doc-pageheader":["aria-disabled","aria-errormessage","aria-haspopup","aria-invalid"],"doc-pagelist":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-part":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-preface":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-prologue":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-pullquote":[],"doc-qna":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-subtitle":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-tip":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"doc-toc":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],document:[],emphasis:[],feed:[],figure:[],form:[],generic:[],"graphics-document":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"graphics-object":["aria-activedescendant","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],"graphics-symbol":["aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid"],grid:["aria-activedescendant","aria-colcount","aria-disabled","aria-multiselectable","aria-readonly","aria-rowcount"],gridcell:["aria-colindex","aria-colspan","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected"],group:["aria-activedescendant","aria-disabled"],heading:["aria-level"],img:[],insertion:[],link:["aria-disabled","aria-expanded","aria-haspopup"],list:[],listbox:["aria-activedescendant","aria-disabled","aria-errormessage","aria-expanded","aria-invalid","aria-multiselectable","aria-orientation","aria-readonly","aria-required"],listitem:["aria-level","aria-posinset","aria-setsize"],log:[],main:[],mark:[],marquee:[],math:[],menu:["aria-activedescendant","aria-disabled","aria-orientation"],menubar:["aria-activedescendant","aria-disabled","aria-orientation"],menuitem:["aria-disabled","aria-expanded","aria-haspopup","aria-posinset","aria-setsize"],menuitemcheckbox:["aria-checked","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-posinset","aria-readonly","aria-required","aria-setsize"],menuitemradio:["aria-checked","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-posinset","aria-readonly","aria-required","aria-setsize"],meter:["aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],navigation:[],none:[],note:[],option:["aria-checked","aria-disabled","aria-posinset","aria-selected","aria-setsize"],paragraph:[],presentation:[],progressbar:["aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],radio:["aria-checked","aria-disabled","aria-posinset","aria-setsize"],radiogroup:["aria-activedescendant","aria-disabled","aria-errormessage","aria-invalid","aria-orientation","aria-readonly","aria-required"],region:[],row:["aria-activedescendant","aria-colindex","aria-disabled","aria-expanded","aria-level","aria-posinset","aria-rowindex","aria-selected","aria-setsize"],rowgroup:[],rowheader:["aria-colindex","aria-colspan","aria-disabled","aria-errormessage","aria-expanded","aria-haspopup","aria-invalid","aria-readonly","aria-required","aria-rowindex","aria-rowspan","aria-selected","aria-sort"],scrollbar:["aria-disabled","aria-orientation","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],search:[],searchbox:["aria-activedescendant","aria-autocomplete","aria-disabled","aria-errormessage","aria-haspopup","aria-invalid","aria-multiline","aria-placeholder","aria-readonly","aria-required"],separator:["aria-disabled","aria-orientation","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],slider:["aria-disabled","aria-errormessage","aria-haspopup","aria-invalid","aria-orientation","aria-readonly","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],spinbutton:["aria-activedescendant","aria-disabled","aria-errormessage","aria-invalid","aria-readonly","aria-required","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext"],status:[],strong:[],subscript:[],superscript:[],switch:["aria-checked","aria-disabled","aria-errormessage","aria-expanded","aria-invalid","aria-readonly","aria-required"],tab:["aria-disabled","aria-expanded","aria-haspopup","aria-posinset","aria-selected","aria-setsize"],table:["aria-colcount","aria-rowcount"],tablist:["aria-activedescendant","aria-disabled","aria-level","aria-multiselectable","aria-orientation"],tabpanel:[],term:[],textbox:["aria-activedescendant","aria-autocomplete","aria-disabled","aria-errormessage","aria-haspopup","aria-invalid","aria-multiline","aria-placeholder","aria-readonly","aria-required"],time:[],timer:[],toolbar:["aria-activedescendant","aria-disabled","aria-orientation"],tooltip:[],tree:["aria-activedescendant","aria-disabled","aria-errormessage","aria-invalid","aria-multiselectable","aria-orientation","aria-required"],treegrid:["aria-activedescendant","aria-colcount","aria-disabled","aria-errormessage","aria-invalid","aria-multiselectable","aria-orientation","aria-readonly","aria-required","aria-rowcount"],treeitem:["aria-checked","aria-disabled","aria-expanded","aria-haspopup","aria-level","aria-posinset","aria-selected","aria-setsize"]},A=new Set(w),p="[role], "+k,m=t.queryAllSmart?t.queryAllSmart(p):t.queryAll(p),s=[],c=[];let d=0;function f(i,a){let r=0;const l=i.attributes;for(let y=0;y<l.length;y++){const b=String(l[y].name||"").toLowerCase();b.slice(0,5)==="aria-"&&e.isValidAriaAttrName(b)&&(r+=1,!A.has(b)&&s.push(t.reportOccurrence(i,{summary:`<${a}> has no ARIA role, so nothing supports the ${b} attribute on it.`,hint:`Remove ${b}, or move it to an element whose role supports it. A role-specific ARIA attribute on an element with no role is ignored by assistive technology.`,i18n:{summaryKey:"ariaAllowedAttr_summary_fail_roleless",hintKey:"ariaAllowedAttr_hint_fail_roleless",params:{attr:b,element:a}},data:{details:{reasonCode:"ARIA_ATTR_NOT_ALLOWED_ROLELESS",attr:b,element:a}}})))}return r}for(const i of m){if(!i||!i.attributes)continue;let r=e.getExplicitRole(i);if(!r){const I=String(i.tagName||"").toLowerCase(),x=I==="input"?"input[type="+String(i.getAttribute("type")||"text").toLowerCase()+"]":I;if(r=Object.prototype.hasOwnProperty.call(u,x)?u[x]:"",!r&&h.has(I)){d+=f(i,I);continue}}if(!r||!e.isValidConcreteRole(r)||r==="none"||r==="presentation")continue;const l=v[r];if(!l)continue;const y=new Set(l);let b=null;const _=i.attributes;for(let I=0;I<_.length;I++){const x=String(_[I].name||"").toLowerCase();x.slice(0,5)==="aria-"&&e.isValidAriaAttrName(x)&&(d+=1,!(A.has(x)||y.has(x))&&(b||(b=[]),b.push(x)))}if(!(!b||!b.length))for(const I of b){if(typeof e.isDeprecatedAttr=="function"&&e.isDeprecatedAttr(I,r)){c.push(t.reportOccurrence(i,{summary:"This ARIA attribute is deprecated for this element’s role.",hint:"It is still allowed but discouraged; remove it or use a role that supports it, as a future ARIA version may disallow it.",occurrenceOutcome:"cantTell",i18n:{summaryKey:"ariaAllowedAttr_summary_cantTell",hintKey:"ariaAllowedAttr_hint_cantTell",params:{attr:I,role:r}},uncertainty:{code:"spec-only",needed:"Whether the deprecated attribute is still honoured by the assistive technology in use.",evidence:{attribute:I,role:r,status:"deprecated-for-role"}},data:{details:{reasonCode:"ARIA_ATTR_DEPRECATED",attr:I,role:r}}}));continue}s.push(t.reportOccurrence(i,{summary:"This ARIA attribute is not permitted for this element’s role.",hint:"Remove this attribute, or use a role that supports it.",occurrenceOutcome:"fail",i18n:{summaryKey:"ariaAllowedAttr_summary_fail",hintKey:"ariaAllowedAttr_hint_fail",params:{attr:I,role:r}},data:{details:{reasonCode:"ARIA_ATTR_NOT_ALLOWED",attr:I,role:r}}}))}}if(d===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=t.resolveTieredOutcome(s,c,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...g}}),applicability:null},"aria-allowed-role":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),u=[];let k=0;for(const v of w){if(!v||!v.getAttribute)continue;const A=e.getExplicitRole(v);if(!A||!e.isValidConcreteRole(A))continue;const p=e.isRoleAllowedOnElement(v,A);if(!p.constrained||(k+=1,p.allowed))continue;const m=(v.tagName||"").toLowerCase();u.push(t.reportOccurrence(v,{summary:"This role is not permitted on this element.",hint:"Use a role permitted for this element, or change the host element.",i18n:{summaryKey:"ariaAllowedRole_summary_fail",hintKey:"ariaAllowedRole_hint_fail",params:{role:A,element:m}},uncertainty:{code:"spec-only",needed:"Whether the role misstates this element to assistive technology in practice.",evidence:{role:A,element:m,source:"ARIA in HTML permitted-roles table",wcagSc:[]}},data:{details:{reasonCode:"ARIA_ROLE_NOT_ALLOWED_FOR_ELEMENT",role:A,element:m}}}))}if(k===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const h=t.resolveTieredOutcome([],u,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...h}}),applicability:null},"aria-braille-equivalent":{run:(function(o){const{helpers:t,rule:n}=o;function e(A){return(A==null?"":String(A)).trim()}function w(A){if(t.getContentNameInfo){const m=t.getContentNameInfo(A,o);return m&&m.present?m.value:""}return(A&&A.textContent?String(A.textContent):"").replace(/\s+/g," ").trim()}const u=t.queryAllSmart?t.queryAllSmart("[aria-braillelabel], [aria-brailleroledescription]"):t.queryAll("[aria-braillelabel], [aria-brailleroledescription]"),k=[];let h=0;for(const A of u){if(!A||!A.getAttribute)continue;const p=e(A.getAttribute("aria-braillelabel")),m=e(A.getAttribute("aria-brailleroledescription"));if(!p&&!m)continue;h+=1;const s=[];if(p){const d=t.getAccessibleNameInfo?t.getAccessibleNameInfo(A,o):null;e(d&&typeof d.value=="string"?d.value:"")||w(A)||s.push({attr:"aria-braillelabel",requires:"an accessible name"})}if(m&&(e(A.getAttribute("aria-roledescription"))||s.push({attr:"aria-brailleroledescription",requires:"aria-roledescription"})),!s.length)continue;const c=(A.tagName||"").toLowerCase();for(const d of s)k.push(t.reportOccurrence(A,{summary:`This element has ${d.attr} but no ${d.requires}, its non-braille equivalent.`,hint:`${d.attr} is a Braille-specific supplement, not a replacement, so also provide ${d.requires}.`,i18n:{summaryKey:"ariaBrailleEquivalent_summary_fail",hintKey:"ariaBrailleEquivalent_hint_fail",params:{element:c,attr:d.attr,requires:d.requires}},uncertainty:{code:"spec-only",needed:"Whether any user reaches this attribute, given no braille equivalent is exposed.",evidence:{element:c,attribute:d.attr,requires:d.requires}},data:{details:{reasonCode:"BRAILLE_ATTR_WITHOUT_EQUIVALENT",attr:d.attr,requires:d.requires}}}))}if(h===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const v=t.resolveTieredOutcome([],k,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...v}}),applicability:null},"aria-checked-state-mismatch":{run:(function(o){const{helpers:t,rule:n}=o;function e(h){return(h==null?"":String(h)).trim()}const w=t.queryAllSmart?t.queryAllSmart('input[type="checkbox"][aria-checked], input[type="radio"][aria-checked]'):t.queryAll('input[type="checkbox"][aria-checked], input[type="radio"][aria-checked]'),u=[];let k=0;for(const h of w){if(!h||!h.getAttribute)continue;const v=e(h.getAttribute("type")).toLowerCase(),A=v==="checkbox";if(!A&&!(v==="radio"))continue;const m=e(h.getAttribute("aria-checked")).toLowerCase();if(!m)continue;k+=1;let s;A?s=m==="mixed"||m==="true"?m:"false":s=m==="true"?"true":"false";let c;A&&h.indeterminate?c="mixed":c=h.checked?"true":"false",s!==c&&u.push(t.reportOccurrence(h,{summary:"This element’s aria-checked value does not match its actual checked/indeterminate state.",hint:"Set aria-checked to match the element’s real state, or remove it; a native checkbox/radio already exposes this state without it.",i18n:{summaryKey:"ariaCheckedStateMismatch_summary_cantTell",hintKey:"ariaCheckedStateMismatch_hint_cantTell",params:{ariaChecked:s,actualState:c,type:v}},data:{details:{reasonCode:"ARIA_CHECKED_STATE_MISMATCH",ariaChecked:s,actualState:c,type:v}}}))}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"aria-conditional-attr":{run:(function(o){const{helpers:t,rule:n}=o;function e(A){return(A==null?"":String(A)).trim()}const w=new Set(["true","grammar","spelling"]),u=t.queryAllSmart?t.queryAllSmart("[aria-errormessage]"):t.queryAll("[aria-errormessage]"),k=[];let h=0;for(const A of u){if(!A||!A.getAttribute||!e(A.getAttribute("aria-errormessage")))continue;h+=1;const m=e(A.getAttribute("aria-invalid")).toLowerCase();if(w.has(m))continue;const s=(A.tagName||"").toLowerCase();k.push(t.reportOccurrence(A,{summary:'This element has aria-errormessage but aria-invalid is missing or "false", so the error message is not exposed.',hint:'Set aria-invalid to "true" (or "grammar"/"spelling") whenever aria-errormessage should be exposed to assistive technology.',i18n:{summaryKey:"ariaConditionalAttr_summary_fail",hintKey:"ariaConditionalAttr_hint_fail",params:{element:s,ariaInvalid:m||"(absent)"}},uncertainty:{code:"spec-only",needed:"Whether the field is ever in an invalid state that should expose this message.",evidence:{element:s,ariaInvalid:m||null}},data:{details:{reasonCode:"ARIA_ERRORMESSAGE_WITHOUT_TRUTHY_INVALID",ariaInvalid:m}}}))}if(h===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const v=t.resolveTieredOutcome([],k,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...v}}),applicability:null},"aria-deprecated-role":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),u=[],k=[];let h=0;function v(p){try{if(typeof t.isDomVisibleEligible=="function"&&!t.isDomVisibleEligible(p,o))return!0;const m=typeof t.composedParent=="function"?t.composedParent:s=>s.parentElement;for(let s=p;s;s=m(s))if(s.getAttribute&&(String(s.getAttribute("aria-hidden")||"").toLowerCase()==="true"||s.hasAttribute&&s.hasAttribute("inert")))return!0}catch{return!1}return!1}for(const p of w){if(!p||!p.getAttribute||v(p))continue;const m=e.getExplicitRole(p);if(!m||!e.isValidConcreteRole(m))continue;h+=1;const s=e.isDeprecatedRole(m),c=typeof e.isAuthorDiscouragedRole=="function"&&e.isAuthorDiscouragedRole(m),d=typeof e.isAuthorProhibitedRole=="function"&&e.isAuthorProhibitedRole(m);if(!s&&!c&&!d)continue;const f=e.getDeprecatedRoleGuidance?e.getDeprecatedRoleGuidance(m):{key:"ariaDeprecatedRole_guidance_default",text:"Replace the deprecated role with its recommended replacement."};d?u.push(t.reportOccurrence(p,{summary:`This element uses role="${m}", which authors must not explicitly declare.`,hint:f.text,occurrenceOutcome:"fail",i18n:{summaryKey:"ariaDeprecatedRole_summary_fail",hintKey:f.key,params:{role:m}},data:{details:{reasonCode:"ARIA_ROLE_AUTHOR_PROHIBITED",role:m,guidance:f.text}}})):c?k.push(t.reportOccurrence(p,{summary:`This element uses role="${m}", which is reserved for user agents (still valid, but discouraged).`,hint:f.text,occurrenceOutcome:"cantTell",i18n:{summaryKey:"ariaDeprecatedRole_summary_cantTell_discouraged",hintKey:f.key,params:{role:m}},uncertainty:{code:"spec-only",needed:"Whether this user-agent-reserved role misleads the assistive technology in use.",evidence:{role:m,ariaStatus:"discouraged-for-authors"}},data:{details:{reasonCode:"ARIA_ROLE_AUTHOR_DISCOURAGED",role:m,guidance:f.text}}})):k.push(t.reportOccurrence(p,{summary:`This element uses role="${m}", which is deprecated in WAI-ARIA.`,hint:f.text,occurrenceOutcome:"cantTell",i18n:{summaryKey:"ariaDeprecatedRole_summary_cantTell",hintKey:f.key,params:{role:m}},uncertainty:{code:"spec-only",needed:"Whether the deprecated role is still honoured, and what it should be replaced with.",evidence:{role:m,ariaStatus:"deprecated"}},data:{details:{reasonCode:"ARIA_ROLE_DEPRECATED",role:m,guidance:f.text}}}))}if(h===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const A=t.resolveTieredOutcome(u,k,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...A}}),applicability:null},"aria-hidden-body":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.body?t.body:null;if(!w)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const u=w.getAttribute?w.getAttribute("aria-hidden"):null;if(!(u!=null&&String(u).trim().toLowerCase()==="true"))return{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]};const h=[n.reportOccurrence(w,{summary:'The document body has aria-hidden="true", which hides the entire page from assistive technologies.',hint:"Remove aria-hidden from <body>. Hide specific elements instead, if that was the intent.",i18n:{summaryKey:"ariaHiddenBody_summary_fail",hintKey:"ariaHiddenBody_hint_fail",params:{}},data:{details:{reasonCode:"ARIA_HIDDEN_BODY"}}})];return{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"critical",occurrences:h}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"aria-hidden-focus":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,v=e&&typeof e.isDomVisibleEligible=="function"?e.isDomVisibleEligible:null,A=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,p=e&&typeof e.reportOccurrence=="function"?e.reportOccurrence:null,m=q=>(q==null?"":String(q)).trim(),s=q=>m(q).toLowerCase();function c(q){try{if(k){const O=k(q);return Array.isArray(O)?O:Array.from(O||[])}}catch{}try{if(u&&typeof u.querySelectorAll=="function")return Array.from(u.querySelectorAll(q))}catch{}return[]}const d=e&&typeof e.composedParent=="function"?e.composedParent:function(q){return q&&q.parentElement?q.parentElement:null};function f(q){let O=q,B=0;for(;O&&B++<200;){try{if(O.getAttribute){const G=O.getAttribute("aria-hidden");if(G!=null&&s(G)==="true")return O}}catch{}O=d(O)}return null}function g(q,O){let B=q,G=0;for(;B&&G++<400;){if(B===O)return!0;B=d(B)}return!1}function i(q){if(!q)return!1;if(!v)return!0;try{const O=v(q,o,{visibilityMode:"styleOnly",disableGeometry:!0});if(O&&O.eligible===!1)return!1}catch{}return!0}function a(){const q=c('dialog[open],[aria-modal="true"],[role="dialog"],[role="alertdialog"]'),O=[];for(let B=0;B<q.length;B++){const G=q[B];!G||!G.getAttribute||i(G)&&O.push(G)}return O}function r(q,O){for(let B=0;B<O.length;B++){const G=O[B];if(!(!G||G===q)&&!g(G,q)&&!g(q,G))return!0}return!1}function l(){let q=t&&t.activeElement?t.activeElement:null,O=0;for(;q&&q.shadowRoot&&q.shadowRoot.activeElement&&O++<20;)q=q.shadowRoot.activeElement;return q}function y(q){if(!q||typeof q.focus!="function")return!1;try{return q.focus({preventScroll:!0}),!0}catch{try{return q.focus(),!0}catch{return!1}}}function b(q,O){if(!q)return null;const B=(()=>{try{return s(q.tagName||"")}catch{return""}})(),G=(()=>{try{return m(q.getAttribute&&q.getAttribute("id"))}catch{return""}})();return{tag:B||null,id:G||null,withinRoot:!!(O&&g(q,O))}}function _(q){const O=t&&t.defaultView?t.defaultView:typeof window<"u"?window:null;if(!O||typeof q!="function")return;const B=typeof O.setTimeout=="function"?O.setTimeout.bind(O):null,G=typeof O.requestAnimationFrame=="function"?O.requestAnimationFrame.bind(O):null,ne=typeof O.queueMicrotask=="function"?O.queueMicrotask.bind(O):null,ie=[],ue=[],fe=[];let we=1;const te=function(Ne,Me){const We=Number.isFinite(Number(Me))?Number(Me):0;if(typeof Ne=="function"&&We<=200){const De=[];for(let Xe=2;Xe<arguments.length;Xe++)De.push(arguments[Xe]);return fe.push({delay:We,cb:()=>Ne.apply(O,De)}),we++}return B?B.apply(O,arguments):we++},be=function(Ne){return typeof Ne=="function"?(ue.push(Ne),we++):G?G.apply(O,arguments):we++},Ve=function(Ne){typeof Ne=="function"&&ie.push(Ne)};try{B&&(O.setTimeout=te),G&&(O.requestAnimationFrame=be),ne&&(O.queueMicrotask=Ve),q();let Ne=0;for(;(ie.length||ue.length||fe.length)&&Ne++<100;){for(;ie.length;){const Me=ie.shift();try{Me()}catch{}}for(;ue.length;){const Me=ue.shift();try{Me(16)}catch{}}if(fe.length){fe.sort((We,De)=>We.delay-De.delay);const Me=fe.shift();try{Me.cb()}catch{}}}}finally{B&&(O.setTimeout=B),G&&(O.requestAnimationFrame=G),ne&&(O.queueMicrotask=ne)}}function I(q){if(!q||q.count!==1||!q.probeCandidates||!q.probeCandidates.length)return null;const O=q.probeCandidates[0];if(!O)return null;let B=!1;const G=()=>{B=!0};try{O.addEventListener("focus",G,!0)}catch{}const ne=[],ie=Me=>{const We=Me&&Me.target?Me.target:null,De=b(We,q.rootEl);De&&ne.push(De)};try{t.addEventListener("focusin",ie,!0)}catch{}const ue=l(),fe=b(ue,q.rootEl);fe&&ne.push(fe);let we=!1;_(()=>{we=y(O)});try{t.removeEventListener("focusin",ie,!0)}catch{}try{O.removeEventListener("focus",G,!0)}catch{}if(!we||!B)return null;const te=l(),be=b(te,q.rootEl);if(be&&ne.push(be),ue&&ue!==te&&y(ue),!te||te===O||g(te,q.rootEl))return null;const Ve=(()=>{try{return s(te.tagName||"")}catch{return""}})(),Ne=(()=>{try{return m(te.getAttribute&&te.getAttribute("id"))}catch{return""}})();return{redirected:!0,redirectedToTag:Ve||null,redirectedToId:Ne||null,focusTrace:ne}}function x(q){const O=[];if(!q)return O;let B;try{const ie=t&&t.defaultView?t.defaultView:typeof window<"u"?window:null;B=ie&&ie.getComputedStyle?ie.getComputedStyle(q):null}catch{B=null}try{const ie=B&&B.opacity!=null?String(B.opacity).trim():"",ue=ie?Number.parseFloat(ie):1;Number.isFinite(ue)&&ue<=1e-4&&O.push("opacityZero")}catch{}try{const ie=B&&B.clip!=null?String(B.clip).trim():"",ue=B&&B.clipPath!=null?String(B.clipPath).trim():"",fe=(ie||"").toLowerCase(),we=(ue||"").toLowerCase();fe&&fe!=="auto"&&fe.indexOf("rect(")!==-1&&fe.replace(/\s+/g,"").indexOf("rect(0")!==-1&&O.push("clipped"),we&&we!=="none"&&we.indexOf("inset(")!==-1&&(we.indexOf("100%")!==-1||we.indexOf("50%")!==-1)&&O.push("clipped")}catch{}try{const ie=B&&B.width!=null?String(B.width).trim():"",ue=B&&B.height!=null?String(B.height).trim():"",fe=B&&B.overflow!=null?String(B.overflow).trim().toLowerCase():"";(ie==="0px"||ie==="0"||(ue==="0px"||ue==="0"))&&(fe==="hidden"||fe==="clip")&&O.push("zeroSizeOverflowHidden")}catch{}try{const ie=B&&B.position!=null?String(B.position).trim().toLowerCase():"",ue=B&&B.left!=null?String(B.left).trim().toLowerCase():"",fe=B&&B.top!=null?String(B.top).trim().toLowerCase():"",we=B&&B.textIndent!=null?String(B.textIndent).trim().toLowerCase():"",te=Me=>{if(!Me||Me==="auto")return null;const We=String(Me).match(/-?\d+(\.\d+)?/);if(!We)return null;const De=Number.parseFloat(We[0]);return Number.isFinite(De)?De:null},be=te(ue),Ve=te(fe),Ne=te(we);(ie==="absolute"||ie==="fixed")&&(be!=null&&be<=-5e3||Ve!=null&&Ve<=-5e3)&&O.push("offscreen"),Ne!=null&&Ne<=-5e3&&O.push("offscreen")}catch{}const G=new Set,ne=[];for(const ie of O){const ue=String(ie);G.has(ue)||(G.add(ue),ne.push(ue))}return ne}function C(q){if(!q||!q.getAttribute||N(q)||L(q))return!1;const O=m(q.getAttribute("tabindex"));if(O!==""&&!Number.isNaN(Number(O))&&Number(O)<0)return!1;let B=null;if(h)try{B=h(q,o)}catch{B=null}const G=s(q.tagName||"");let ne=!1;if(G==="a"||G==="area")ne=!!m(q.getAttribute("href"));else if(G==="button"||G==="select"||G==="textarea"||G==="summary")ne=!0;else if(G==="input")ne=s(q.getAttribute("type")||"")!=="hidden";else if(G==="iframe")ne=!0;else if((G==="audio"||G==="video")&&q.hasAttribute&&q.hasAttribute("controls"))ne=!0;else if(q.hasAttribute&&q.hasAttribute("contenteditable"))ne=s(m(q.getAttribute("contenteditable")))!=="false";else{const ue=q.getAttribute("tabindex"),fe=m(ue);ue!=null&&fe!==""&&!Number.isNaN(Number(fe))&&(ne=!0)}if(!(B&&B.focusable===!0||ne))return!1;if(v)try{const ue=v(q,o,{visibilityMode:"styleOnly",disableGeometry:!0});if(ue&&ue.eligible===!1&&(Array.isArray(ue.reasons)?ue.reasons:[]).filter(te=>String(te)!=="opacityZero").length)return!1}catch{}return!0}function N(q){let O=q,B=0;for(;O&&B++<200;){try{if(O.nodeType===1&&O.hasAttribute&&O.hasAttribute("inert"))return!0}catch{}O=d(O)}return!1}function L(q){try{if(typeof q.disabled=="boolean"&&q.disabled)return!0}catch{}try{const O=s(q.tagName||"");if((O==="button"||O==="input"||O==="select"||O==="textarea"||O==="option"||O==="optgroup")&&q.hasAttribute&&q.hasAttribute("disabled"))return!0}catch{}return!1}if(!c('[aria-hidden="true"]').length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const F=c("a[href],area[href],button,input,select,textarea,summary,iframe,audio[controls],video[controls],[tabindex],[contenteditable]"),E=new Map,P=5,z=3;for(let q=0;q<F.length;q++){const O=F[q];if(!O||!O.getAttribute)continue;const B=f(O);if(!B||!C(O))continue;let G=E.get(B);if(G||(G={rootEl:B,count:0,offenders:[],hints:new Set,rootIsFocusable:!1,probeCandidates:[]},E.set(B,G)),G.count+=1,G.probeCandidates.length<z&&G.probeCandidates.push(O),G.offenders.length<P){let ne,ie,ue,fe;try{ne=s(O.tagName||"")}catch{ne=""}try{ie=O.getAttribute("tabindex")}catch{ie=null}try{ue=ne==="a"||ne==="area"?m(O.getAttribute("href")):null}catch{ue=null}try{fe=ne==="input"?s(O.getAttribute("type")||""):null}catch{fe=null}const we=x(O);for(const te of we)G.hints.add(te);G.offenders.push({tag:ne||null,tabindex:ie==null?null:String(ie),href:ue||null,type:fe||null,visibilityHints:we})}}if(!E.size)return{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]};for(const[,q]of E){const O=q.rootEl;q.rootIsFocusable=C(O)}const H=a(),W=[],X=[];for(const[,q]of E){const O=q.rootEl,B=A?(()=>{try{return A(O,o,{targetSet:"acc"})}catch{return null}})():null,G=["opacityZero","offscreen","clipped","zeroSizeOverflowHidden"],ne=[];for(const it of G)q.hints.has(it)&&ne.push(it);const ie=(()=>{try{return s(O.tagName||"")}catch{return""}})(),ue=!!q.rootIsFocusable,fe=q.count,we=ue?Math.max(0,fe-1):fe,te=ue?we>0?"ariaHidden_focus_summary_fail_self_and_desc":"ariaHidden_focus_summary_fail_self":"ariaHidden_focus_summary_fail_desc",be=ue?we>0?"ariaHiddenSelfAndDescendantsFocusable":"ariaHiddenSelfFocusable":"ariaHiddenContainsFocusable",Ve=ue?we>0?`aria-hidden ${ie} is focusable and contains ${we} focusable descendant(s) (${fe} focusable element(s) total).`:`aria-hidden ${ie} is focusable (${fe} focusable element(s)).`:`aria-hidden ${ie} contains ${fe} focusable element(s).`,Ne=H.length?r(O,H):!1,Me=Ne?null:I(q),We=!!(Me&&Me.redirected),De=Ne,Xe=De||We,_t=`aria-hidden ${ie} received focus but focus moved immediately to another element. Verify sentinel/focus-trap behavior.`,re=`aria-hidden ${ie} contains ${fe} focusable element(s) while a modal dialog is open. If the modal keeps keyboard focus trapped they may be unreachable; verify focus cannot land on them.`;let Ae,xe,Ee,je,Re;De?(Ae=re,xe="A modal dialog appears to be open. Prefer making the background inert (or a native <dialog> opened with showModal()) so it leaves the tab order, then verify keyboard focus stays within the dialog.",Ee="ariaHidden_focus_summary_cantTell_modal",je="ariaHidden_focus_hint_cantTell_modal",Re="ariaHiddenFocusable_modalOpen_needsReview"):We?(Ae=_t,xe="Verify this is an intentional focus sentinel/focus-trap handoff and that keyboard users never remain on hidden focus targets.",Ee="ariaHidden_focus_summary_cantTell_redirect",je="ariaHidden_focus_hint_cantTell_redirect",Re="ariaHiddenFocusable_runtimeRedirect_needsReview"):(Ae=Ve,xe="Remove focusability from descendants or remove aria-hidden; ensure focus and accessibility trees stay aligned.",Ee=te,je="ariaHidden_focus_hint_fail",Re=be);const tt={summary:Ae,hint:xe,occurrenceOutcome:Xe?"cantTell":"fail",i18n:{summaryKey:Ee,hintKey:je,params:{element:ie,focusableCount:String(fe),descendantFocusableCount:String(we),redirectedToTag:Me&&Me.redirectedToTag?Me.redirectedToTag:"",redirectedToId:Me&&Me.redirectedToId?Me.redirectedToId:""}},data:{details:{reasonCode:Re,metrics:{focusableTotal:fe,focusableDescendants:we,rootIsFocusable:ue,offendersCaptured:q.offenders.length,visibilityHints:ne.slice(0),modalOpen:!!De},runtimeProbe:Me||null,offenders:q.offenders.slice(0)},visibilityFilter:B||{targetSet:"acc",accEligible:null,reasons:[]}}},et=p?p(O,tt):{__node:O,selector:"",html:"",...tt};Xe?X.push(et):W.push(et)}const oe=e.resolveTieredOutcome(W,X,w.defaultSeverity||"minor");return{ruleId:w.ruleId,...oe}}),applicability:null},"aria-prohibited-attr":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=new Set(["caption","code","deletion","emphasis","generic","insertion","mark","none","paragraph","presentation","strong","subscript","suggestion","superscript","time"]),u=["aria-label","aria-labelledby"],k=[],h=[];let v=0;const A=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]");for(const r of A){if(!r||!r.getAttribute)continue;const l=e.getExplicitRole(r);if(!l||!w.has(l))continue;v+=1;const y=[];for(const b of u){const _=r.getAttribute(b);_!=null&&String(_).trim()!==""&&y.push(b)}if(y.length)for(const b of y)k.push(t.reportOccurrence(r,{occurrenceOutcome:"fail",summary:"This attribute is prohibited on this element’s role.",hint:"Remove this attribute; this role must not carry an accessible name.",i18n:{summaryKey:"ariaProhibitedAttr_summary_fail",hintKey:"ariaProhibitedAttr_hint_fail",params:{attr:b,role:l}},data:{details:{reasonCode:"ARIA_ATTR_PROHIBITED",attr:b,role:l}}}))}const p=new Set(["p","b","i","em","strong","span","div","code","mark","time","ins","del","small","sub","sup","abbr","cite","q","kbd","samp","var","address","blockquote","pre","figcaption","picture","template","hgroup","wbr","br","legend"]),m=new Set(["alert","alertdialog","button","checkbox","combobox","dialog","gridcell","link","listbox","log","marquee","menuitem","menuitemcheckbox","menuitemradio","option","progressbar","radio","scrollbar","searchbox","slider","spinbutton","status","switch","tab","tabpanel","textbox","timer","treeitem"]),s=t&&typeof t.composedParent=="function"?t.composedParent:function(r){return r&&r.parentElement?r.parentElement:null};function c(r){let l=s(r),y=0;for(;l&&y++<200;){if(l.nodeType!==1){l=s(l);continue}const b=e.getExplicitRole(l),_=b&&e.isValidConcreteRole(b)?b:e.getNativeRoleForElement(l);if(!_||_==="presentation"||_==="none"){l=s(l);continue}return _}return""}const d=new Set(["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"]);function f(r){return r.includes("-")&&!d.has(r)}const g="[aria-label],[aria-labelledby]",i=t.queryAllSmart?t.queryAllSmart(g):t.queryAll(g);for(const r of i){if(!r||!r.getAttribute)continue;const l=String(r.tagName||"").toLowerCase();if(!p.has(l)&&!f(l))continue;const y=e.getExplicitRole(r);if(y&&e.isValidConcreteRole(y)||e.getNativeRoleForElement(r))continue;const b=[];for(const C of u){const N=r.getAttribute(C);N!=null&&String(N).trim()!==""&&b.push(C)}if(!b.length)continue;v+=1;const _=c(r);if(_&&m.has(_))continue;const I=t.getContentNameInfo?t.getContentNameInfo(r,o):null,x=!!(I&&I.present&&String(I.value||"").trim()!=="");for(const C of b)x?h.push(t.reportOccurrence(r,{occurrenceOutcome:"cantTell",summary:`This ${l} has no role, so ${C} may not be exposed as its accessible name by assistive technology, but the element's own content already provides one.`,hint:'Verify whether the existing text content already serves as this element’s label; if so the naming attribute is redundant, otherwise give the element a role that supports naming (e.g. role="img").',i18n:{summaryKey:"ariaProhibitedAttr_summary_cantTell_roleless",hintKey:"ariaProhibitedAttr_hint_cantTell_roleless",params:{attr:C,element:l}},uncertainty:{code:"judgement-required",needed:"Whether the element’s own content already serves as its label.",evidence:{attribute:C,element:l,role:null,hasOwnContent:!0}},data:{details:{reasonCode:"ARIA_ATTR_PROHIBITED_ROLELESS_NEEDS_REVIEW",attr:C,role:null,element:l}}})):k.push(t.reportOccurrence(r,{occurrenceOutcome:"fail",summary:`This ${l} has no role and no other accessible-name source, so ${C} is not reliably exposed to assistive technology.`,hint:'Give this element a role that supports an accessible name (e.g. role="img"/"button"), or remove this attribute if it serves no purpose without one.',i18n:{summaryKey:"ariaProhibitedAttr_summary_fail_roleless",hintKey:"ariaProhibitedAttr_hint_fail_roleless",params:{attr:C,element:l}},data:{details:{reasonCode:"ARIA_ATTR_PROHIBITED_ROLELESS",attr:C,role:null,element:l}}}))}if(v===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const a=t.resolveTieredOutcome(k,h,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...a}}),applicability:null},"aria-prohibited-children":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function w(c){const d=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;if(!d)return!0;try{const f=d(c,o);return typeof f=="boolean"?f:!!(f&&f.eligible)}catch{return!0}}const u=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];function k(c){for(const d of u)if((c.getAttribute?c.getAttribute(d):null)!=null)return d;return null}const h={grid:["caption"],menu:["separator"],menubar:["separator"],table:["caption"]},v=40;function A(c,d,f,g){if(f>v)return;const i=c.children?Array.prototype.slice.call(c.children):[];for(const a of i){if(!a||a.nodeType!==1||!w(a))continue;const r=e.getContainmentRole(a),l=r==="presentation"||r==="none",y=r==="group"||r==="rowgroup";if(!r&&!l){const b=k(a);let _;try{const I=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo(a,o):null;_=I&&I.focusable&&I.mechanism||"none"}catch{_="none"}if(b||_!=="none"){const I=b||(_==="tabindex"?"tabindex":"nativeFocusable");d.push({el:a,role:null,attr:I});continue}}if(l||y){A(a,d,f+1,g);continue}if(!r){const b=[];A(a,b,f+1,g);const _=b.filter(I=>I.role&&g.has(I.role));for(const I of _.length?_:b)d.push(I);continue}e.isValidConcreteRole(r)&&d.push({el:a,role:r})}}const p=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),m=[];let s=0;for(const c of p){if(!c||!c.getAttribute)continue;const d=e.getExplicitRole(c);if(!d||!e.isValidConcreteRole(d))continue;const f=e.getRequiredOwnedRoles(d);if(!f||!f.length||!w(c))continue;s+=1;const g=new Set(f),i=f.concat(h[d]||[]),a=new Set(i),r=[];A(c,r,0,g);for(const l of r){if(l.role&&a.has(l.role))continue;const y=t.buildSelector?t.buildSelector(c):"html",b=!l.role,_=l.attr==="nativeFocusable";let I,x,C,N;_?(I=`This element has no explicit role but is natively focusable, making it a real accessible-tree node that is not an allowed owned child of the enclosing role="${d}" container.`,x=`Give this element role="presentation"/"none", remove its native focusability (e.g. drop the href/tabindex-granting attribute), or move it outside the ${d} container.`,C="ariaProhibitedChildren_summary_fail_native_focusable",N="ariaProhibitedChildren_hint_fail_native_focusable"):b?(I=`This element has no explicit role but carries ${l.attr}, making it a real accessible-tree node that is not an allowed owned child of the enclosing role="${d}" container.`,x=`Remove ${l.attr} (or the role="${d}" container ownership), or give this element role="presentation"/"none" if it isn't meant to be its own accessible-tree node.`,C="ariaProhibitedChildren_summary_fail_roleless",N="ariaProhibitedChildren_hint_fail_roleless"):(I=`This element has role="${l.role}", which is not an allowed owned child of the enclosing role="${d}" container.`,x=`Remove or change this role so it matches one of the container's allowed owned roles (${i.join(", ")}), or move this element outside the ${d} container.`,C="ariaProhibitedChildren_summary_fail",N="ariaProhibitedChildren_hint_fail"),m.push(t.reportOccurrence(l.el,{summary:I,hint:x,i18n:{summaryKey:C,hintKey:N,params:b?{attr:l.attr,containerRole:d}:{childRole:l.role,containerRole:d,allowedRoles:i.join(", ")}},data:{details:{reasonCode:b?"ARIA_PROHIBITED_CHILD_ROLELESS":"ARIA_PROHIBITED_CHILD",childRole:l.role,attr:l.attr,containerRole:d,containerSelector:y,allowedOwnedRoles:i}}}))}}return s===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:m.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:m}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"aria-required-attr":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function w(s){const c=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;if(!c)return!0;try{const d=c(s,o);return typeof d=="boolean"?d:!!(d&&d.eligible)}catch{return!0}}function u(s){const c=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo:null;if(!c)return!1;try{const d=c(s,o);return!!(d&&d.focusable)}catch{return!1}}function k(s){const c=s.getAttribute("aria-busy");return c!=null&&String(c).trim().toLowerCase()==="true"}const h=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),v=[],A=[];let p=0;for(const s of h){if(!s||!s.getAttribute)continue;const c=e.getExplicitRole(s);if(!c||!e.isValidConcreteRole(c)||e.getNativeRoleForElement&&e.getNativeRoleForElement(s)===c)continue;const d=e.getRequiredAttrsForRole(c).slice();if(c==="combobox"&&String(s.getAttribute("aria-expanded")||"").trim()==="true"&&d.push("aria-controls"),c==="separator"&&u(s)&&d.push("aria-valuenow"),!d.length||!w(s)||k(s))continue;p+=1;const f=[];for(const g of d){const i=s.getAttribute(g);(i==null||String(i).trim()==="")&&f.push(g)}if(f.length)for(const g of f){const i=typeof e.getRequiredAttrImplicitValue=="function"?e.getRequiredAttrImplicitValue(c,g):null;if(i){A.push(t.reportOccurrence(s,{occurrenceOutcome:"cantTell",summary:`This attribute is required for this element’s role and is missing, but ARIA falls back to "${i}".`,hint:"Set the attribute explicitly if the implicit value is not the state you mean.",i18n:{summaryKey:"ariaRequiredAttr_summary_cantTell",hintKey:"ariaRequiredAttr_hint_cantTell",params:{attr:g,role:c,implicit:i}},uncertainty:{code:"spec-only",needed:"Whether the implicit fallback is the state the author meant.",evidence:{attribute:g,role:c,implicitValue:i}},data:{details:{reasonCode:"ARIA_ATTR_REQUIRED_MISSING_IMPLICIT",attr:g,role:c,implicitValue:i}}}));continue}v.push(t.reportOccurrence(s,{occurrenceOutcome:"fail",summary:"This attribute is required for this element’s role, but is missing.",hint:"Add this attribute with a valid value for this role.",i18n:{summaryKey:"ariaRequiredAttr_summary_fail",hintKey:"ariaRequiredAttr_hint_fail",params:{attr:g,role:c}},data:{details:{reasonCode:"ARIA_ATTR_REQUIRED_MISSING",attr:g,role:c}}}))}}if(p===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const m=t.resolveTieredOutcome(v,A,n.defaultSeverity||"serious");return{ruleId:n.ruleId,...m}}),applicability:null},"aria-required-children":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function w(s){const c=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;if(!c)return!0;try{const d=c(s,o);return typeof d=="boolean"?d:!!(d&&d.eligible)}catch{return!0}}function u(s){const c=s.getAttribute("aria-busy");return c!=null&&String(c).trim().toLowerCase()==="true"}const k='[role], li, option, tr, td, th, thead, tbody, tfoot, ul, ol, table, select, input[type="radio"]',h=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),v=[];let A=0;function p(s,c,d,f){if(!(!s||!s.children))for(const g of Array.from(s.children)){if(c.length>=f)return;if(!d.has(g)){if((g.tagName||"").toLowerCase()==="slot"&&typeof g.assignedElements=="function"){let i;try{i=g.assignedElements({flatten:!0})||[]}catch{i=[]}for(const a of i)if(!d.has(a)&&(d.add(a),c.push(a),c.length>=f||(p(a,c,d,f),c.length>=f)))return;continue}d.add(g),c.push(g),p(g,c,d,f)}}}for(const s of h){if(!s||!s.getAttribute)continue;const c=e.getExplicitRole(s);if(!c||!e.isValidConcreteRole(c))continue;const d=e.getRequiredOwnedRoles(c);if(!d||!d.length||!w(s)||u(s))continue;A+=1;const f=new Set(d);let g=!1,i;try{i=s.querySelectorAll(k)}catch{i=[]}for(const a of i){const r=e.getContainmentRole(a);if(r&&f.has(r)){g=!0;break}}if(!g){let a;try{a=!!s.querySelector("slot")}catch{a=!1}if(a){const r=[];try{p(s,r,new Set,5e3)}catch{}for(const l of r){if(!l||!l.getAttribute)continue;const y=e.getContainmentRole(l);if(y&&f.has(y)){g=!0;break}}}}if(!g){const a=s.getAttribute("aria-owns");if(a&&t.resolveIdRefs){const r=t.resolveIdRefs(a,o,{maxRefs:50});for(const l of r.refs||[]){const y=e.getContainmentRole(l);if(y&&f.has(y)){g=!0;break}}}}g||v.push(t.reportOccurrence(s,{summary:"This container role has no owned child with a required role.",hint:"Add a descendant (or aria-owns-referenced element) with one of the required owned roles.",i18n:{summaryKey:"ariaRequiredChildren_summary_fail",hintKey:"ariaRequiredChildren_hint_fail",params:{role:c,requiredRoles:d.join(", ")}},uncertainty:{code:"spec-only",needed:"Whether this container is legitimately empty, or holds items that never got their role.",evidence:{role:c,requiredOwnedRoles:d,childElementCount:s.children?s.children.length:null}},data:{details:{reasonCode:"ARIA_REQUIRED_CHILD_MISSING",role:c,requiredOwnedRoles:d}}}))}if(A===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const m=t.resolveTieredOutcome([],v,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...m}}),applicability:null},"aria-required-parent":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function w(g){const i=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;if(!i)return!0;try{const a=i(g,o);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const u=new Set(["listitem","treeitem"]),k=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];function h(g){for(const i of k)if(g.getAttribute&&g.getAttribute(i)!=null)return!0;return!1}function v(g){const i=e.getContainmentRole(g);return!i||i==="presentation"||i==="none"?h(g)?"generic":"":i}const A=t&&typeof t.composedParent=="function"?t.composedParent:function(g){return g&&g.parentElement?g.parentElement:null};function p(g){let i=A(g),a=0;for(;i&&a++<200;){if(i.nodeType===1&&i.getAttribute){const r=i.getAttribute("aria-busy");if(r!=null&&String(r).trim().toLowerCase()==="true")return!0}i=A(i)}return!1}function m(g,i,a){const r=i.has("group");let l=A(g),y=0,b=i;for(;l&&y++<200;){if(l.nodeType!==1){l=A(l);continue}const _=v(l);if(!_){l=A(l);continue}if(_==="group"&&r&&u.has(a)){b===i&&(b=new Set(i)),b.add(a),l=A(l);continue}return b.has(_)}return!1}function s(g,i){const a=g.getAttribute("id"),r=a&&String(a).trim();if(!r)return!1;const l=t.queryAllSmart?t.queryAllSmart("[aria-owns]"):t.queryAll("[aria-owns]");for(const y of l){if(!y||!y.getAttribute||(y.getAttribute("aria-owns")||"").split(/\s+/).filter(Boolean).indexOf(r)===-1)continue;const I=e.getContainmentRole(y);if(I&&i.has(I))return!0}return!1}const c=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),d=[];let f=0;for(const g of c){if(!g||!g.getAttribute)continue;const i=e.getExplicitRole(g);if(!i||!e.isValidConcreteRole(i))continue;const a=e.getRequiredContextRoles(i);if(!a||!a.length||!w(g)||p(g))continue;f+=1;const r=new Set(a);m(g,r,i)||s(g,r)||d.push(t.reportOccurrence(g,{summary:"This role requires a specific ancestor/owner context role, which was not found.",hint:"Place this element inside (or aria-owns-reference it from) an element with an acceptable context role.",i18n:{summaryKey:"ariaRequiredParent_summary_fail",hintKey:"ariaRequiredParent_hint_fail",params:{role:i,requiredRoles:a.join(", ")}},data:{details:{reasonCode:"ARIA_REQUIRED_PARENT_MISSING",role:i,requiredContextRoles:a}}}))}return f===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:d.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:d}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"aria-role-name-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:(l,y)=>{try{const b=y||u;return b&&b.querySelectorAll?Array.from(b.querySelectorAll(l)):[]}catch{return[]}},v=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,A=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,p=e&&typeof e.getAriaLabelledByInfo=="function"?e.getAriaLabelledByInfo:null,m=l=>String(l||"").replace(/\s+/g," ").trim(),s=(l,y)=>{try{return!l||!l.getAttribute?"":m(l.getAttribute(y))}catch{return""}},c=(l,y)=>{if(!p)return"";try{const b=p(l,o,{maxRefs:Math.max(1,y||8)});return b&&b.present?m(b.value):""}catch{return""}},d=l=>{if(!v)return!0;try{const y=v(l,o);return typeof y=="boolean"?y:!!(y&&y.eligible)}catch{return!0}},f=new Set(["grid","meter","progressbar","radiogroup","tree"]),g=[...f].map(l=>`[role="${l}"]`).join(","),i=(()=>{try{return(k?k(g,u):h(g,u))||[]}catch{return h(g,u)}})();if(!i.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const a=[];let r=0;for(const l of i){if(!l||!l.getAttribute)continue;const y=(()=>{try{return m(l.getAttribute("role")).toLowerCase()}catch{return""}})();if(!f.has(y)||!d(l))continue;r+=1;const b=s(l,"aria-label"),_=b?"":c(l,8),I=b||_?"":s(l,"title");if(!!(b||_||I))continue;const C=A?(()=>{try{return A(l,o,{targetSet:"acc"})}catch{return null}})():null,N={summary:"This element has no accessible name.",hint:"Provide aria-label or aria-labelledby (preferred), or a non-empty title attribute.",i18n:{summaryKey:"ariaRoleNamePresent_summary_fail",hintKey:"ariaRoleNamePresent_hint_fail",params:{role:y}},data:{visibilityFilter:C||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"name_missing",role:y,nameSourcesChecked:["aria-label","aria-labelledby","title"]}}};e&&typeof e.reportOccurrence=="function"?a.push(e.reportOccurrence(l,N)):a.push({selector:"",html:"",...N})}return r===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:a.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:a}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"aria-roles-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=t.queryAllSmart?t.queryAllSmart("[role]"):t.queryAll("[role]"),u=[],k=[];let h=0;function v(p){try{if(typeof t.isDomVisibleEligible=="function"&&!t.isDomVisibleEligible(p,o))return!0;const m=typeof t.composedParent=="function"?t.composedParent:s=>s.parentElement;for(let s=p;s;s=m(s))if(s.getAttribute&&(String(s.getAttribute("aria-hidden")||"").toLowerCase()==="true"||s.hasAttribute&&s.hasAttribute("inert")))return!0}catch{return!1}return!1}for(const p of w){if(!p||!p.getAttribute||v(p))continue;const m=typeof e.getAllRoleTokens=="function"?e.getAllRoleTokens(p):[e.getExplicitRole(p)].filter(Boolean);if(!m.length||(h+=1,m.find(i=>e.isKnownRole(i)&&!e.isAbstractRole(i))))continue;const c=m[0],d=m.some(i=>e.isKnownRole(i)),f=d?"ARIA_ROLE_ABSTRACT":"ARIA_ROLE_INVALID",g=typeof e.getNativeRoleForElement=="function"&&e.getNativeRoleForElement(p)||"";if(g){k.push(t.reportOccurrence(p,{occurrenceOutcome:"cantTell",summary:`The role attribute value is not usable, so this element is still exposed as its native role="${g}".`,hint:"Fix or remove the role token; assistive technology is using the native role in the meantime.",i18n:{summaryKey:"ariaRolesValid_summary_cantTell",hintKey:"ariaRolesValid_hint_cantTell",params:{role:c,nativeRole:g}},uncertainty:{code:"spec-only",needed:"Whether the native role this element falls back to is the one intended.",evidence:{role:c,nativeRole:g,fallbackExposed:!0}},data:{details:{reasonCode:f,role:c,nativeRole:g}}}));continue}u.push(t.reportOccurrence(p,{occurrenceOutcome:"fail",summary:d?"The role attribute value is an abstract ARIA role, which must not be used directly.":"The role attribute value is not a recognized ARIA role.",hint:d?"Replace this abstract role with a concrete role appropriate for the widget/structure.":"Use a valid ARIA role token, or remove the role attribute if none applies.",i18n:{summaryKey:d?"ariaRolesValid_summary_abstract":"ariaRolesValid_summary_invalid",hintKey:d?"ariaRolesValid_hint_abstract":"ariaRolesValid_hint_invalid",params:{role:c}},data:{details:{reasonCode:f,role:c}}}))}if(h===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const A=t.resolveTieredOutcome(u,k,n.defaultSeverity||"serious");return{ruleId:n.ruleId,...A}}),applicability:null},"aria-text":{run:(function(o){const{helpers:t,rule:n}=o,e='a[href], button, input, select, textarea, [tabindex], iframe, [contenteditable]:not([contenteditable="false"])',w=t.queryAllSmart?t.queryAllSmart('[role="text"]'):t.queryAll('[role="text"]'),u=[];let k=0;for(const h of w){if(!h||!h.querySelector)continue;k+=1;let v;try{v=h.querySelector(e)}catch{v=null}if(!v)continue;const A=t.buildSelector?t.buildSelector(h):"html",p=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(h):h.outerHTML||"",m={selector:A,html:p,summary:'This role="text" element contains a focusable descendant.',hint:'Remove role="text" (or remove the focusable descendant); a "plain text" region should not contain focusable content.',i18n:{summaryKey:"ariaText_summary_cantTell",hintKey:"ariaText_hint_cantTell",params:{}},data:{details:{reasonCode:"ROLE_TEXT_HAS_FOCUSABLE_DESCENDANT"}}};t&&typeof t.reportOccurrence=="function"?u.push(t.reportOccurrence(h,m)):u.push(m)}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"aria-valid-attr":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=t.queryAllSmart?t.queryAllSmart("*"):t.queryAll("*"),u=[];let k=0;for(const v of w){if(!v||!v.attributes)continue;let A=null;const p=v.attributes;for(let m=0;m<p.length;m++){const s=String(p[m].name||"").toLowerCase();s.slice(0,5)==="aria-"&&(k+=1,e.isValidAriaAttrName(s)||(A||(A=[]),A.push(s)))}if(!(!A||!A.length))for(const m of A)u.push(t.reportOccurrence(v,{summary:"This element has an attribute that is not a recognized ARIA attribute.",hint:"Correct the attribute name (check for typos), or remove it if not needed.",i18n:{summaryKey:"ariaValidAttr_summary_fail",hintKey:"ariaValidAttr_hint_fail",params:{attr:m}},uncertainty:{code:"spec-only",needed:"Whether the misspelling cost the element a name or state it has no other source for.",evidence:{attribute:m,definedInAria:!1,exposedEffect:"none"}},data:{details:{reasonCode:"ARIA_ATTR_INVALID",attr:m}}}))}if(k===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const h=t.resolveTieredOutcome([],u,n.defaultSeverity||"serious");return{ruleId:n.ruleId,...h}}),applicability:null},"aria-valid-attr-value":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&t.aria?t.aria:null;if(!e)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const w=t.queryAllSmart?t.queryAllSmart("*"):t.queryAll("*"),u=[],k=[];let h=0;for(const A of w){if(!A||!A.attributes||!A.getAttribute)continue;let p=null,m=null;const s=A.attributes;for(let c=0;c<s.length;c++){const d=String(s[c].name||"").toLowerCase();if(d.slice(0,5)!=="aria-"||!e.isValidAriaAttrName(d))continue;h+=1;const f=A.getAttribute(d),g=e.validateAttrValue(d,f,A);if(g.valid)continue;const i={name:d,value:f==null?"":String(f),reason:g.reason};g.review?(m||(m=[]),m.push(i)):(p||(p=[]),p.push(i))}for(const c of p||[])u.push(t.reportOccurrence(A,{summary:"This element has an ARIA attribute with an invalid value.",hint:"Use a value that matches the attribute’s expected type (see the WAI-ARIA specification for this attribute).",i18n:{summaryKey:"ariaValidAttrValue_summary_fail",hintKey:"ariaValidAttrValue_hint_fail",params:{attr:c.name,value:c.value}},data:{details:{reasonCode:"ARIA_ATTR_VALUE_INVALID",attr:c.name,value:c.value,valueReason:c.reason}}}));for(const c of m||[])k.push(t.reportOccurrence(A,{summary:"No element with this id exists right now, so the engine cannot tell whether this reference is wrong.",hint:"Confirm the controlled element is created when the widget opens; if it never exists, remove or correct the reference.",i18n:{summaryKey:"ariaValidAttrValue_summary_cantTell_idref",hintKey:"ariaValidAttrValue_hint_cantTell_idref",params:{attr:c.name,value:c.value}},uncertainty:{code:"runtime-dependent",needed:"Whether the widget creates the referenced element when it opens.",evidence:{attribute:c.name,referencedId:c.value,resolvedAtScanTime:!1}},data:{details:{reasonCode:"ARIA_ATTR_VALUE_TARGET_ABSENT",attr:c.name,value:c.value,valueReason:c.reason}}}))}if(h===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const v=t.resolveTieredOutcome(u,k,n.defaultSeverity||"serious");return{ruleId:n.ruleId,...v}}),applicability:null},"autocomplete-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["name","honorific-prefix","given-name","additional-name","family-name","honorific-suffix","nickname","username","new-password","current-password","one-time-code","organization-title","organization","street-address","address-line1","address-line2","address-line3","address-level4","address-level3","address-level2","address-level1","country","country-name","postal-code","cc-name","cc-given-name","cc-additional-name","cc-family-name","cc-number","cc-exp","cc-exp-month","cc-exp-year","cc-csc","cc-type","transaction-currency","transaction-amount","language","bday","bday-day","bday-month","bday-year","sex","tel","tel-country-code","tel-national","tel-area-code","tel-local","tel-extension","email","impp","url","photo"]),w=new Set(["home","work","mobile","fax","pager","impp"]);function u(m){const s=m.trim().toLowerCase().split(/\s+/).filter(Boolean);if(!s.length)return!1;if(s.length===1&&(s[0]==="on"||s[0]==="off"))return!0;let c=0;if(s[c]&&s[c].startsWith("section-")&&s[c].length>8&&(c+=1),(s[c]==="shipping"||s[c]==="billing")&&(c+=1),w.has(s[c])){const g=s[c+1];if(!(g==="email"||g==="impp"||g==="tel"||(g||"").startsWith("tel-")))return!1;c+=1}let d=s.length;s[d-1]==="webauthn"&&(d-=1);const f=s.slice(c,d);return f.length!==1?!1:e.has(f[0])}const k=t.queryAllSmart?t.queryAllSmart("input, select, textarea"):t.queryAll("input, select, textarea"),h=[];let v=0;const A=new Set(["button","checkbox","file","image","radio","reset","submit"]);function p(m){if(String(m.tagName||"").toLowerCase()==="input"){const c=String(m.getAttribute("type")||"text").toLowerCase();if(A.has(c))return!0}return!!(m.hasAttribute&&m.hasAttribute("disabled")||String(m.getAttribute("aria-disabled")||"").toLowerCase()==="true")}for(const m of k){if(!m||!m.getAttribute)continue;const s=String(m.getAttribute("autocomplete")||"").trim();if(!s)continue;const c=s.toLowerCase().split(/\s+/).filter(Boolean);if(c.length===1&&(c[0]==="on"||c[0]==="off")||p(m)||(v+=1,u(s)))continue;const d=m.tagName.toLowerCase();h.push(t.reportOccurrence(m,{summary:"This autocomplete attribute value is not a valid autofill value.",hint:'Use "on"/"off", or a valid autofill token list (e.g. "shipping street-address", "cc-number").',i18n:{summaryKey:"autocompleteValid_summary_fail",hintKey:"autocompleteValid_hint_fail",params:{element:d,value:s}},data:{details:{reasonCode:"AUTOCOMPLETE_VALUE_INVALID",element:d,value:s}}}))}return v===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:h.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:h}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"avoid-inline-spacing":{run:(function(o){const{helpers:t,rule:n}=o,e=["line-height","letter-spacing","word-spacing"],w={"line-height":1.5,"letter-spacing":.12,"word-spacing":.16},u=["inherit","unset"],k=1.2,h={"line-height":"lineHeight","letter-spacing":"letterSpacing","word-spacing":"wordSpacing"},v=t.queryAllSmart?t.queryAllSmart("[style]"):t.queryAll("[style]"),A=[];let p=0;const m=[],s=[];function c(_,I){const x=new RegExp("(?:^|;)\\s*"+I+"\\s*:\\s*([^;]*)","gi");let C=null,N;for(;N=x.exec(_);){const L=String(N[1]||"").trim(),D=/!\s*important\s*$/i.test(L),F=L.replace(/!\s*important\s*$/i,"").trim();if(F&&(!C||D||!C.important)){if(C&&C.important&&!D)continue;C={value:F,important:D}}}return C}function d(_){let I;try{I=_.childNodes?Array.from(_.childNodes):[]}catch{return!1}return I.some(x=>x&&x.nodeType===3&&String(x.nodeValue||"").trim()!=="")}function f(_){if(t.isDomVisibleEligible)try{return!!t.isDomVisibleEligible(_,o,{targetSet:"dom"}).eligible}catch{return!0}return!0}const g=_=>{const I=parseFloat(_);return Number.isFinite(I)&&/px\s*$/.test(String(_))?I:null};function i(_){if(t&&typeof t.computedStyle=="function")try{const I=t.computedStyle(_);if(I)return I}catch{}try{const I=_.ownerDocument&&_.ownerDocument.defaultView;if(I&&typeof I.getComputedStyle=="function")return I.getComputedStyle(_)}catch{}return null}function a(_){const I=i(_),x=I?String(I.whiteSpace||"").toLowerCase():"";if(x==="nowrap"||x==="pre")return!0;if(!/(^|;)\s*width\s*:/i.test(String(_.getAttribute("style")||"")))return!1;const C=t&&typeof t.ancestorsIncludingSelf=="function"?t.ancestorsIncludingSelf(_):null,N=C||[];if(!C)for(let L=_.parentElement;L;L=L.parentElement)N.push(L);for(const L of N){if(L===_)continue;const D=i(L);if(!D)continue;const F=String(D.overflowX||D.overflow||"").toLowerCase();if(F==="scroll"||F==="auto")return!0}return!1}function r(_){if(!t.getVisibilityHintsInfo)return!1;try{const I=t.getVisibilityHintsInfo(_,o,{});return!!(I&&Array.isArray(I.hints)&&I.hints.indexOf("offscreen")!==-1)}catch{return!1}}const l={"xx-small":9,"x-small":10,small:13,medium:16,large:18,"x-large":24,"xx-large":32};function y(_){if(!_)return null;const I=g(_.fontSize);if(I!==null)return I;const x=String(_.fontSize||"").trim().toLowerCase();return l[x]||null}function b(_,I,x){const C=i(_),N=y(C);if(C&&N){const F=g(C[h[I]]);if(F!==null)return F/N}const L=String(x||"").trim().toLowerCase();if(L==="normal"||L==="initial"||L==="revert"||L==="revert-layer")return I==="line-height"?k:0;if(/^[0-9.]+$/.test(L)||/em$/.test(L))return parseFloat(L);if(/%$/.test(L))return parseFloat(L)/100;const D=g(L);return D!==null&&N?D/N:null}for(const _ of v){if(!_||!_.getAttribute)continue;const I=String(_.getAttribute("style")||"");if(!I.trim())continue;const x=I.toLowerCase();if(!e.some(E=>x.includes(E))||!d(_)||!f(_)||r(_))continue;const N=[],L=[];let D=!1;for(const E of e){const P=c(I,E);if(!P||!P.important||u.indexOf(P.value.toLowerCase())!==-1)continue;D=!0;const z=b(_,E,P.value);if(z===null){L.push(E);continue}z<w[E]&&N.push(E)}if(D&&(p+=1),!N.length){L.length&&m.push({el:_,props:L.slice()});continue}if(a(_)){s.push({el:_,props:N.slice()});continue}const F=_.tagName.toLowerCase();A.push(t.reportOccurrence(_,{summary:`This element's inline style forces ${N.join(", ")} with !important below the WCAG text-spacing metric, so the user cannot raise it.`,hint:"Remove !important from line-height/letter-spacing/word-spacing in inline styles, or set a value that already meets the metric (line-height 1.5, letter-spacing 0.12em, word-spacing 0.16em).",i18n:{summaryKey:"avoidInlineSpacing_summary_fail",hintKey:"avoidInlineSpacing_hint_fail",params:{element:F,properties:N.join(", ")}},data:{details:{reasonCode:"INLINE_SPACING_IMPORTANT",element:F,properties:N}}}))}return p===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:A.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:A}:s.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",confidence:"low",occurrences:s.map(({el:_,props:I})=>t.reportOccurrence(_,{summary:`This element's inline style forces ${I.join(", ")} with !important, but its text does not appear able to wrap, so the text-spacing criterion may not apply to it.`,hint:"Confirm whether this text ever wraps. If it cannot, the criterion does not apply; if it can, remove !important or set a value that already meets the metric.",i18n:{summaryKey:"avoidInlineSpacing_summary_cantTell_noSoftWrap",hintKey:"avoidInlineSpacing_hint_cantTell_noSoftWrap",params:{element:(_.tagName||"").toLowerCase(),properties:I.join(", ")}},uncertainty:{code:"not-computable",needed:"Whether this text ever contains a soft wrap break, which needs layout.",evidence:{element:(_.tagName||"").toLowerCase(),properties:I,reasonCode:"INLINE_SPACING_NO_SOFT_WRAP"}},data:{details:{reasonCode:"INLINE_SPACING_NO_SOFT_WRAP",element:(_.tagName||"").toLowerCase(),properties:I}}}))}:m.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",confidence:"low",occurrences:m.map(({el:_,props:I})=>t.reportOccurrence(_,{summary:`This element's inline style sets ${I.join(", ")} with !important, but the value could not be resolved, so whether it meets the WCAG text-spacing metric could not be determined.`,hint:"Check this value by hand against the metric (line-height 1.5, letter-spacing 0.12em, word-spacing 0.16em), or express it in a unit the engine can resolve against the element’s computed font size.",i18n:{summaryKey:"avoidInlineSpacing_summary_cantTell",hintKey:"avoidInlineSpacing_hint_cantTell",params:{element:(_.tagName||"").toLowerCase(),properties:I.join(", ")}},uncertainty:{code:"not-computable",needed:"A resolved value for the spacing declarations marked !important.",evidence:{element:(_.tagName||"").toLowerCase(),properties:I,reasonCode:"INLINE_SPACING_NOT_RESOLVABLE"}},data:{details:{reasonCode:"INLINE_SPACING_NOT_RESOLVABLE",element:(_.tagName||"").toLowerCase(),properties:I}}}))}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"binary-control-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}function v(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function A(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=v(t,r);return l||k(r,"title")}function p(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function m(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}const s=[];let c=0;const d='[role="checkbox"], [role="radio"], [role="switch"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=h(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?A(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=A(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?A(y):"";if(b)return b}}catch{}return""}function a(r,l){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:p(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:(l==="checkbox"||l==="radio")&&i(r)?{ok:!0,method:"label"}:(l==="switch"||l==="aria-checkbox"||l==="aria-radio")&&v(t,r)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!m(n,r,o))continue;const l=(r.tagName||"").toLowerCase(),y=k(r,"type").toLowerCase(),b=k(r,"role").toLowerCase();let _;if(l==="input"&&y==="checkbox")_="checkbox";else if(l==="input"&&y==="radio")_="radio";else if(b==="checkbox")_="aria-checkbox";else if(b==="radio")_="aria-radio";else if(b==="switch")_="switch";else continue;c+=1;const I=a(r,_);if(I.ok)continue;const x=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This control has no accessible name.",hint:"Provide a label, aria-label, aria-labelledby, or other accessible-name mechanism so assistive technologies can identify the control.",i18n:{summaryKey:"binaryControlNamePresent_summary_fail",hintKey:"binaryControlNamePresent_hint_fail",params:{controlType:_}},data:{details:{reasonCode:"name_missing",controlType:_,methodTried:I.method},visibilityFilter:x||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"button-name-present":{run:(function(o){const{helpers:t,rule:n}=o,e=[];let w=0;function u(p){return String(p||"").replace(/\s+/g," ").trim()}function k(p){if(t.getContentNameInfo){const s=t.getContentNameInfo(p,o);return s&&s.present?s.value:""}return(p&&p.textContent?String(p.textContent):"").replace(/\s+/g," ").trim()}function h(p){try{const m=u(p.getAttribute?p.getAttribute("type"):"").toLowerCase();if(m!=="button"&&m!=="submit"&&m!=="reset")return"";const s=p.getAttribute?p.getAttribute("value"):"",c=u(s??(typeof p.value=="string"?p.value:""));return c||(m==="submit"?"Submit":m==="reset"?"Reset":"")}catch{return""}}const v='button, input[type="button"], input[type="submit"], input[type="reset"], [role="button"]',A=t.queryAllSmart?t.queryAllSmart(v):t.queryAll(v);for(const p of A){const m=t.isIncludedInAccessibilityTree?t.isIncludedInAccessibilityTree(p,o):t.isAccTreeEligible?t.isAccTreeEligible(p,o):!0;if(!(typeof m=="boolean"?m:!!(m&&m.eligible)))continue;const c=(p.tagName||"").toLowerCase(),d=p.getAttribute?p.getAttribute("role"):null,f=u(d).toLowerCase();if((f==="none"||f==="presentation")&&!(p.getAttribute&&p.getAttribute("aria-hidden")==="true")){const N=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"].some(D=>p.hasAttribute?p.hasAttribute(D):!1);let L=!1;if(!N&&t.getFocusableInfo)try{const D=t.getFocusableInfo(p,o);L=!!(D&&D.focusable)}catch{L=!1}if(!N&&!L)continue}w+=1;const g=t.getAccessibleNameInfo?t.getAccessibleNameInfo(p,o):null,i=u(g&&g.present&&typeof g.value=="string"?g.value:""),a=!!i;let r="";!i&&c==="input"&&(r=h(p));const l=["button","cell","checkbox","columnheader","doc-backlink","doc-biblioref","doc-glossref","doc-noteref","graphics-object","gridcell","heading","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","row","rowgroup","rowheader","switch","tab","tooltip","treeitem"],y=t&&t.aria&&typeof t.aria.isKnownRole=="function"?(()=>{try{return!!t.aria.isKnownRole(f)}catch{return!1}})():!1,b=(c==="button"||d==="button")&&(!f||!y||l.includes(f)),_=!i&&!r&&b?k(p):"";if(!u(i||r||_)){const x=t.getEligibilityInfo?t.getEligibilityInfo(p,o,{targetSet:"acc"}):null;e.push(t.reportOccurrence(p,{summary:"This button has no accessible name.",hint:"Provide visible button text or a programmatic accessible-name mechanism (for example aria-label) so assistive technologies can identify the button.",i18n:{summaryKey:"buttonNamePresent_summary_fail",hintKey:"buttonNamePresent_hint_fail",params:{element:c}},data:{visibilityFilter:x||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"name_missing",metrics:{trustedProgrammaticNameLength:i.length,inputValueNameLength:r.length,contentNameLength:_.length,explicitProgrammatic:a?1:0},refs:{accessibleName:g||null}}}}))}}return w===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:e.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"minor",occurrences:e}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"bypass-blocks-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.body?t.body:null;if(!w)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const u=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function k(i){if(!u)return!0;try{const a=u(i,o);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}function h(i){try{return n&&typeof n.queryAllSmart=="function"?n.queryAllSmart(i):t.querySelectorAll(i)}catch{return[]}}function v(){for(const i of h('main, [role="main"]'))if(i&&k(i))return!0;return!1}function A(i,a){if(!i)return null;let r;try{r=typeof i.getElementById=="function"?i.getElementById(a):null}catch{r=null}if(r)return r;try{r=typeof i.querySelector=="function"?i.querySelector('a[name="'+a.replace(/"/g,'\\"')+'"]'):null}catch{r=null}return r}function p(){let i;try{i=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("a[href]"):t.querySelectorAll("a[href]")}catch{i=[]}for(const a of i){if(!a||!a.getAttribute)continue;const r=String(a.getAttribute("href")||"").trim();if(r.length<2||r.charAt(0)!=="#")continue;let l=r.slice(1);try{l=decodeURIComponent(l)}catch{}if(l=l.trim(),!l)continue;let y=t;try{if(typeof a.getRootNode=="function"){const _=a.getRootNode();_&&(y=_)}}catch{y=t}let b=A(y,l);if(!b&&y!==t&&(b=A(t,l)),b)return!0}return!1}function m(i){if(!n||typeof n.getVisibilityHintsInfo!="function")return!1;try{const a=n.getVisibilityHintsInfo(i,o,{});return!!(a&&Array.isArray(a.hints)&&a.hints.length>0)}catch{return!1}}function s(){for(const i of h('h1, h2, h3, h4, h5, h6, [role="heading"]'))if(i&&k(i)&&!m(i))return!0;return!1}const c=v(),d=c?!1:p(),f=c||d?!1:s();if(c||d||f)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=[n.reportOccurrence(w,{summary:"No recognized way to bypass repeated blocks of content was detected on this page. Verify a bypass mechanism exists.",hint:'Confirm the page offers a bypass mechanism: a main landmark (<main> or role="main"), a working "skip to content" link, or heading elements that assistive technology can use to jump past repeated content. (A mechanism may be temporarily hidden, e.g. while a modal dialog makes the page inert, or provided on a per-site basis; this needs human confirmation.)',i18n:{summaryKey:"bypassBlocksPresent_summary_cantTell",hintKey:"bypassBlocksPresent_hint_cantTell",params:{}},data:{details:{reasonCode:"BYPASS_MECHANISM_ABSENT"},visibilityFilter:{targetSet:"acc",accEligible:null,reasons:[]}}})];return{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"moderate",occurrences:g}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"canvas-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:d=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(d)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isIncludedInAccessibilityTree=="function"?e.isIncludedInAccessibilityTree:e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getTextAlternativeInfo=="function"?e.getTextAlternativeInfo:null,m=(()=>{try{return Array.from((k?k("canvas"):h("canvas"))||[])}catch{return h("canvas")}})();if(!m.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const s=[];let c=0;for(const d of m){if(!d)continue;if(A){const r=(()=>{try{return A(d,o)}catch{return{eligible:!0,reasons:[]}}})();if(r===!1||r&&r.eligible===!1)continue}c+=1;const f=p?(()=>{try{return p(d,o)}catch{return null}})():null;if(!!(f&&f.present))continue;const i=v?v(d,o,{targetSet:"acc"}):null,a={selector:"",html:"",summary:"Missing text alternative for <canvas>.",hint:"Provide fallback text inside <canvas> or an accessible name (e.g., aria-label/aria-labelledby).",i18n:{summaryKey:"canvas_textAltPresent_summary_fail",hintKey:"canvas_textAltPresent_hint_fail",params:{element:"canvas"}},data:{visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]},textAlternative:f||null}};e&&typeof e.reportOccurrence=="function"?s.push(e.reportOccurrence(d,a)):s.push({...a})}return c===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:s}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"canvas-text-alternative-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:i=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(i)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=new WeakMap;function m(i){if(!A)return{eligible:!0,reasons:[]};if(!i||typeof i!="object")return{eligible:!0,reasons:[]};const a=p.get(i);if(a)return a;let r;try{r=A(i,o)}catch{r={eligible:!0,reasons:[]}}return r=r&&typeof r=="object"?r:{eligible:!!r,reasons:[]},p.set(i,r),r}const s=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function c(i){const a=(()=>{try{return String(i.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(a!=="presentation"&&a!=="none")return!1;let r;if(s){const l=(()=>{try{return s(i,o)}catch{return null}})();r=!!(l&&l.focusable)}else{let l;try{l=i.getAttribute("tabindex")}catch{l=null}const y=l==null?"":String(l).trim();r=y!==""&&!Number.isNaN(Number(y))}return!r}const d=(()=>{try{return Array.from((k?k("canvas"):h("canvas"))||[])}catch{return h("canvas")}})();if(!d.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const f=[];let g=0;for(const i of d){if(!i||!i.getAttribute)continue;if(A){const I=m(i);if(I&&I.eligible===!1)continue}if(c(i))continue;const a=e&&typeof e.getTextAlternativeInfo=="function"?e.getTextAlternativeInfo:null,r=I=>(I==null?"":String(I)).trim();let l=null;if(a)try{l=a(i,o)}catch{l=null}if(!!!(l&&l.present))continue;g+=1;const b=v?v(i,o,{targetSet:"acc"}):null,_={summary:"Review text alternative for <canvas> for equivalence and appropriateness.",hint:"Confirm the fallback text or accessible name conveys the same information/function as the canvas content.",i18n:{summaryKey:"canvas_textAltQuality_summary_cantTell",hintKey:"canvas_textAltQuality_hint_cantTell",params:{element:(i.tagName||"").toLowerCase()}},data:{visibilityFilter:b||{targetSet:"acc",accEligible:null,reasons:[]},details:l||null}};e&&typeof e.reportOccurrence=="function"?f.push(e.reportOccurrence(i,_)):f.push({selector:"",html:"",..._})}return g===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:f}}),applicability:null},"combobox-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}function v(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function A(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=v(t,r);return l||k(r,"title")}function p(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function m(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}const s=[];let c=0;const d='[role="combobox"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=h(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?A(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=A(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?A(y):"";if(b)return b}}catch{}return""}function a(r,l){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:p(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!m(n,r,o)||k(r,"role").toLowerCase()!=="combobox")continue;c+=1;const y=a(r,"combobox");if(y.ok)continue;const b=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This combobox has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this combobox's accessible name.",i18n:{summaryKey:"comboboxNamePresent_summary_fail",hintKey:"comboboxNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"combobox",methodTried:y.method},visibilityFilter:b||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"contrast-computable":{run:(function(o){const{helpers:t,rule:n,engineOptions:e}=o,w=t&&t.contrast&&t.contrast.sharedCache?t.contrast.sharedCache:null,u=e&&typeof e.contrast=="object"&&e.contrast?e.contrast:{},k=u.mode==="auditorAssist"?"auditorAssist":"strictConformance",h=typeof u.rootCanvasFallback=="string"&&u.rootCanvasFallback.trim()?u.rootCanvasFallback.trim():"#ffffff",v=50,A=[];let p=0,m=0,s=0;const c=new Set,d=new Set;function f(y,b,_){try{if(!y||d.has(y)||A.length>=v)return;d.add(y);const I=String(b||"UNKNOWN");let x="contrastComputable_cantTell_notComputable";if(I==="BACKGROUND_IMAGE_OR_GRADIENT"){const L=_&&typeof _=="object"?String(_.backgroundFillType||""):"";L==="image"?x="contrastComputable_cantTell_bgImage":L==="gradient"?x="contrastComputable_cantTell_bgGradient":L==="imageAndGradient"?x="contrastComputable_cantTell_bgImageAndGradient":x="contrastComputable_cantTell_bgImageOrGradient"}else if(I==="MIX_BLEND_MODE")x="contrastComputable_cantTell_mixBlendMode";else if(I==="BACKGROUND_FILTER_OR_BACKDROP_FILTER"){const L=_&&typeof _=="object"?String(_.blockerProperty||""):"";L==="filter"?x="contrastComputable_cantTell_filter":L==="backdrop-filter"?x="contrastComputable_cantTell_backdropFilter":x="contrastComputable_cantTell_filterOrBackdropFilter"}else I==="BACKGROUND_NOT_OPAQUE_AT_ROOT"?x="contrastComputable_cantTell_rootNotOpaque":I==="TEXT_SHADOW"&&(x="contrastComputable_cantTell_textShadow");const C=Object.assign({reasonCode:I},_&&typeof _=="object"?_:{}),N={selector:"",html:"",summary:"",hint:"",i18n:{summaryKey:x,hintKey:"",params:Object.assign({reasonCode:I},C&&typeof C=="object"?{blockerProperty:C.blockerProperty?String(C.blockerProperty):"",blockerValue:C.blockerValue?String(C.blockerValue):"",backgroundAlpha:C.backgroundAlpha!==void 0&&C.backgroundAlpha!==null?String(C.backgroundAlpha):""}:{})},uncertainty:{code:"not-computable",needed:"A contrast ratio for this text, which this page composition blocks.",evidence:{reasonCode:I,blockerProperty:C.blockerProperty||null,blockerValue:C.blockerValue||null,backgroundAlpha:C.backgroundAlpha===void 0?null:C.backgroundAlpha}},data:{details:C}};t&&typeof t.reportOccurrence=="function"?A.push(t.reportOccurrence(y,N)):A.push({...N})}catch{}}const g=w?w.__elBlockerCache||(w.__elBlockerCache=new WeakMap):new WeakMap,i=w?w.__elBgCache||(w.__elBgCache=new WeakMap):new WeakMap,a=w?w.__elFgCache||(w.__elFgCache=new WeakMap):new WeakMap,r=w?w.__elBgSelfOpaqueCache||(w.__elBgSelfOpaqueCache=new WeakMap):new WeakMap;let l;try{l=t&&t.contrast&&typeof t.contrast.getTextScan=="function"?t.contrast.getTextScan(o,t,e):null}catch{l=null}if(l&&l.elements&&Array.isArray(l.elements))try{p=Number(l.eligibleTextCount)||0;for(const y of l.elements){if(m>0&&A.length>=v)break;const b=y&&y.el,_=y&&Number(y.textCount)?Number(y.textCount):0;if(!b||_<=0)continue;let I=g.get(b);if(I||(I=t.contrast.getComputabilityBlocker(b),I=I||{ok:!0,reasonCode:null,blockerSelector:"",blockerProperty:"",blockerValue:""},g.set(b,I)),I&&I.ok===!1){m+=_,f(b,I.reasonCode,{blockerProperty:I.blockerProperty,blockerValue:I.blockerValue,blockerSelector:I.blockerSelector,backgroundFillType:I.backgroundFillType});continue}let x=i.get(b);if(!x){let N=r.get(b);if(N===void 0){N=null;try{if(t&&typeof t.getComputedStyle=="function"&&t.contrast&&typeof t.contrast.parseCssColorToRgba=="function"){const L=t.getComputedStyle(b),D=Number.parseFloat(L&&L.opacity!=null?L.opacity:"1");if(Number.isFinite(D)&&D===1){const F=t.contrast.parseCssColorToRgba(L&&L.backgroundColor);F&&typeof F.a=="number"&&F.a===1&&(N={ok:!0,rgba:{r:F.r,g:F.g,b:F.b,a:1},alpha:1,reasonCode:null})}}}catch{N=null}r.set(b,N)}N&&N.ok===!0?x=N:(x=t.contrast.computeEffectiveBackground(b,{contrast:{mode:k,rootCanvasFallback:h},collectStack:!1}),x=x||{ok:!1,reasonCode:"BACKGROUND_NOT_COMPUTABLE",rgba:null,alpha:0}),i.set(b,x)}if(!x||x.ok===!1){m+=_,f(b,x&&x.reasonCode||"BACKGROUND_NOT_COMPUTABLE",{background:x&&x.rgba?t.contrast.rgbaToString(x.rgba):"",backgroundAlpha:x&&typeof x.alpha=="number"?t.contrast.round2(x.alpha):""});continue}try{if(x&&Array.isArray(x.assumptionsApplied)&&x.assumptionsApplied.length){s+=_;for(const N of x.assumptionsApplied)c.add(String(N))}}catch{}let C=a.get(b);if(C||(C=t.contrast.computeEffectiveForeground(b),C=C||{rgba:null,alpha:0,opacityProduct:1},a.set(b,C)),!C||!C.rgba){m+=_,f(b,"FOREGROUND_UNPARSABLE",{background:x&&x.rgba?t.contrast.rgbaToString(x.rgba):"",backgroundAlpha:x&&typeof x.alpha=="number"?t.contrast.round2(x.alpha):""});continue}}}catch{return{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastComputable_cantTell_engineFailure",hintKey:"",params:{reasonCode:"ENGINE_EXCEPTION"}},data:{details:{reasonCode:"ENGINE_EXCEPTION"}}}]}}return p===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[]}:m>0?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:A}:{ruleId:n.ruleId,outcome:"pass",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastComputable_pass_allComputable",hintKey:"",params:{eligibleTextCount:String(p)}},data:{details:{eligibleTextCount:p,assumptionsCount:s,assumptionsApplied:Array.from(c).sort()}}}]}}),applicability:null},"contrast-enhanced":{run:(function(o){const{helpers:t,rule:n,engineOptions:e}=o;function w(x){try{return x?x.nodeType===1?x:x.nodeType===3&&x.parentElement||null:null}catch{return null}}const u=t&&t.contrast&&t.contrast.sharedCache?t.contrast.sharedCache:null,k=u?u.__elBlockerCache||(u.__elBlockerCache=new WeakMap):null,h=u?u.__elBgCache||(u.__elBgCache=new WeakMap):null,v=u?u.__elFgCache||(u.__elFgCache=new WeakMap):null,A=u?u.__elFontCache||(u.__elFontCache=new WeakMap):new WeakMap;function p(x){try{if(!x||x.nodeType!==1)return null;if(t&&typeof t.computedStyle=="function"){const N=t.computedStyle(x);if(N)return N}const C=x.ownerDocument&&x.ownerDocument.defaultView?x.ownerDocument.defaultView:null;if(C&&typeof C.getComputedStyle=="function")return C.getComputedStyle(x)}catch{}return null}function m(x){try{if(!x||x.nodeType!==1)return{fontSizePx:0,fontSizePt:"",fontWeightNum:400,fontWeight:"normal",isBold:!1,isLarge:!1,isLargeText:!1};const C=A.get(x);if(C)return C;const N=p(x),L=N?t.contrast.parsePx(N.fontSize):null,D=N?t.contrast.normalizeFontWeight(N.fontWeight):400,F=Number.isFinite(L)?L:0,E=Number.isFinite(D)&&D>=700,P=t.contrast.isLargeText(F,D),z={fontSizePx:F,fontSizePt:t.contrast.pxToPt(F),fontWeightNum:D,fontWeight:t.contrast.fontWeightLabel(D),isBold:E,isLarge:P,isLargeText:P};return A.set(x,z),z}catch{return{fontSizePx:0,fontSizePt:"",fontWeightNum:400,fontWeight:"normal",isBold:!1,isLarge:!1,isLargeText:!1}}}const s=e&&typeof e.contrast=="object"&&e.contrast?e.contrast:{},c=s.mode==="auditorAssist"?"auditorAssist":"strictConformance",d=typeof s.rootCanvasFallback=="string"&&s.rootCanvasFallback.trim()?s.rootCanvasFallback.trim():"#ffffff",f=50,g=[];let i=0,a=0,r=0;const l=new Set;function y(x,C){try{g.push({selector:"",summary:"All computable text meets the enhanced (AAA) contrast threshold.",hint:"",html:"",i18n:{summaryKey:"contrastEnhanced_pass_allAboveThreshold",hintKey:"",params:{eligibleTextCount:String(Number(x)||0),computableTextCount:String(Number(C)||0)}},data:{details:{reasonCode:"ALL_ABOVE_THRESHOLD",eligibleTextCount:Number(x)||0,computableTextCount:Number(C)||0,metrics:{eligibleTextCount:Number(x)||0,computableTextCount:Number(C)||0}}}})}catch{}}function b(x,C,N){try{if(!x||l.has(x)||g.length>=f)return;l.add(x);const L=N&&typeof N=="object"?N:{reasonCode:"UNKNOWN"},D=L.reasonCode==="BACKGROUND_NOT_COMPUTABLE"?{code:"not-computable",needed:"The effective background colour behind this text.",evidence:{reasonCode:L.reasonCode,foreground:L.fg||null}}:null,F={selector:"",html:"",summary:"",hint:"",i18n:{summaryKey:"contrastEnhanced_fail_belowThreshold",hintKey:"",params:C&&typeof C=="object"?C:{}},...D?{uncertainty:D}:{},data:{details:L}};let E="";try{const H=x&&typeof x.getAttribute=="function"&&x.getAttribute("id")||"";H&&(E=`#${H}`)}catch{}const P=x&&x.tagName?String(x.tagName).toLowerCase():"element";let z={...F};if(t&&typeof t.reportOccurrence=="function")try{const H=t.reportOccurrence(x,F);H&&typeof H=="object"&&(z=H)}catch{}z.selector=z.selector||E||"",z.data=z.data||{},z.data.details=z.data.details||{},z.data.details.node={selector:E,tagName:P},g.push(z)}catch{}}let _=new WeakMap;if(u)try{u.__elAnalysisCacheAAA||(u.__elAnalysisCacheAAA=new WeakMap),_=u.__elAnalysisCacheAAA}catch{_=new WeakMap}let I;try{I=t&&t.contrast&&typeof t.contrast.getTextScan=="function"?t.contrast.getTextScan(o,t,e):null}catch{I=null}if(I&&I.elements&&Array.isArray(I.elements))try{i=Number(I.eligibleTextCount)||0;for(const x of I.elements){const C=w(x&&x.el),N=x&&Number(x.textCount)?Number(x.textCount):0;if(!C||N<=0)continue;let L=_.get(C);if(!L){let X=k?k.get(C):null;if(X||(X=t.contrast.getComputabilityBlocker(C),X=X||{ok:!0,reasonCode:null,blockerSelector:"",blockerProperty:"",blockerValue:""},k&&k.set(C,X)),X&&X.ok===!1)L={computable:!1};else{let oe=h?h.get(C):null;oe||(oe=t.contrast.computeEffectiveBackground(C,{contrast:{mode:c,rootCanvasFallback:d},collectStack:!1}),oe=oe||{ok:!1,reasonCode:"BACKGROUND_NOT_COMPUTABLE",rgba:null,alpha:0},h&&h.set(C,oe));const q=oe&&Array.isArray(oe.assumptionsApplied)&&oe.assumptionsApplied.length?oe.assumptionsApplied.slice(0):null,O=oe&&typeof oe.assumedRootCanvasColor=="string"?oe.assumedRootCanvasColor:null;let B=v?v.get(C):null;if(B||(B=t.contrast.computeEffectiveForeground(C),B=B||{rgba:null,alpha:0,opacityProduct:1},v&&v.set(C,B)),!oe||oe.ok===!1||!oe.rgba||!B||!B.rgba)L={computable:!1};else{const G=B.rgba.a!=null&&B.rgba.a<1?t.contrast.compositeRgba(B.rgba,oe.rgba):{r:B.rgba.r,g:B.rgba.g,b:B.rgba.b,a:1},ne={r:oe.rgba.r,g:oe.rgba.g,b:oe.rgba.b,a:1},ie=t.contrast.contrastRatio(G,ne),ue=m(C),fe=t.contrast.requiredRatio("AAA",ue.isLargeText);L={computable:!0,ratio:ie,bgAssumptionsApplied:q,bgAssumedRootCanvasColor:O,ratioStr:t.contrast.round2(ie),threshold:fe,thresholdStr:`${fe}`,font:ue,fgOpaque:G,bgOpaque:ne}}}_.set(C,L)}if(!L||L.computable!==!0)continue;a+=N;const D=L.ratio,F=L.font,E=L.threshold,P=L.ratioStr,z=L.thresholdStr,H=L.fgOpaque,W=L.bgOpaque;if(!(D>=E)){r+=N;const X=t.contrast.rgbToHex?t.contrast.rgbToHex(H):"",oe=t.contrast.rgbToHex?t.contrast.rgbToHex(W):"",q=F.fontSizePx?parseFloat(F.fontSizePx):NaN,O=t.contrast.pxToPt&&Number.isFinite(q)?t.contrast.pxToPt(q):"",B=Number(F.fontWeightNum),G=t.contrast.fontWeightLabel?t.contrast.fontWeightLabel(B):F.isBold?"bold":"normal",ne=t.contrast.rgbaToString(H),ie=t.contrast.rgbaToString(W),ue={reasonCode:"BELOW_THRESHOLD",foreground:ne,background:ie,foregroundHex:X,backgroundHex:oe,fontSizePt:O,fontWeightLabel:G,ratio:P,threshold:z,fontSizePx:F.fontSizePx,fontWeight:F.fontWeight,isBold:F.isBold,isLargeText:F.isLargeText},fe=L&&Array.isArray(L.bgAssumptionsApplied)&&L.bgAssumptionsApplied.length?L.bgAssumptionsApplied.slice(0):null,we=L&&typeof L.bgAssumedRootCanvasColor=="string"?L.bgAssumedRootCanvasColor:null,te={reasonCode:"BELOW_THRESHOLD",metrics:{ratio:D,threshold:E},typography:{fontSizePx:Number.isFinite(q)?q:null,fontSizePt:Number.isFinite(q)?q*.75:null,fontWeight:Number.isFinite(B)?B:null,fontWeightLabel:G,isBold:!!F.isBold,isLargeText:!!F.isLargeText},colors:{foregroundHex:X,backgroundHex:oe,foregroundRgba:ne,backgroundRgba:ie},assumptionsApplied:fe,assumedRootCanvasColor:we};if(b(C,ue,te),g.length>=f)break}}}catch{return{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastEnhanced_cantTell_engineFailure",hintKey:"",params:{reasonCode:"ENGINE_EXCEPTION"}},data:{details:{reasonCode:"ENGINE_EXCEPTION"}}}]}}return i===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[]}:a===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastEnhanced_notApplicable_noComputableText",hintKey:"",params:{eligibleTextCount:String(i)}},data:{details:{eligibleTextCount:i,computableTextCount:a}}}]}:r>0?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:g}:(g.length||y(i,a),{ruleId:n.ruleId,outcome:"pass",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:g})}),applicability:null},"contrast-minimum":{run:(function(o){const{helpers:t,rule:n,engineOptions:e}=o;function w(x){try{return x?x.nodeType===1?x:x.nodeType===3&&x.parentElement||null:null}catch{return null}}const u=t&&t.contrast&&t.contrast.sharedCache?t.contrast.sharedCache:null,k=u?u.__elBlockerCache||(u.__elBlockerCache=new WeakMap):null,h=u?u.__elBgCache||(u.__elBgCache=new WeakMap):null,v=u?u.__elFgCache||(u.__elFgCache=new WeakMap):null,A=u?u.__elFontCache||(u.__elFontCache=new WeakMap):new WeakMap;function p(x){try{if(!x||x.nodeType!==1)return null;if(t&&typeof t.computedStyle=="function"){const N=t.computedStyle(x);if(N)return N}const C=x.ownerDocument&&x.ownerDocument.defaultView?x.ownerDocument.defaultView:null;if(C&&typeof C.getComputedStyle=="function")return C.getComputedStyle(x)}catch{}return null}function m(x){try{if(!x||x.nodeType!==1)return{fontSizePx:0,fontSizePt:"",fontWeightNum:400,fontWeight:"normal",isBold:!1,isLarge:!1,isLargeText:!1};const C=A.get(x);if(C)return C;const N=p(x),L=N?t.contrast.parsePx(N.fontSize):null,D=N?t.contrast.normalizeFontWeight(N.fontWeight):400,F=Number.isFinite(L)?L:0,E=Number.isFinite(D)&&D>=700,P=t.contrast.isLargeText(F,D),z={fontSizePx:F,fontSizePt:t.contrast.pxToPt(F),fontWeightNum:D,fontWeight:t.contrast.fontWeightLabel(D),isBold:E,isLarge:P,isLargeText:P};return A.set(x,z),z}catch{return{fontSizePx:0,fontSizePt:"",fontWeightNum:400,fontWeight:"normal",isBold:!1,isLarge:!1,isLargeText:!1}}}const s=e&&typeof e.contrast=="object"&&e.contrast?e.contrast:{},c=s.mode==="auditorAssist"?"auditorAssist":"strictConformance",d=typeof s.rootCanvasFallback=="string"&&s.rootCanvasFallback.trim()?s.rootCanvasFallback.trim():"#ffffff",f=50,g=[];let i=0,a=0,r=0;const l=new Set;function y(x,C){try{g.push({selector:"",summary:"All computable text meets the minimum (AA) contrast threshold.",hint:"",html:"",i18n:{summaryKey:"contrastMinimum_pass_allAboveThreshold",hintKey:"",params:{eligibleTextCount:String(Number(x)||0),computableTextCount:String(Number(C)||0)}},data:{details:{reasonCode:"ALL_ABOVE_THRESHOLD",eligibleTextCount:Number(x)||0,computableTextCount:Number(C)||0,metrics:{eligibleTextCount:Number(x)||0,computableTextCount:Number(C)||0}}}})}catch{}}function b(x,C,N){try{if(!x||l.has(x)||g.length>=f)return;l.add(x);const L=N&&typeof N=="object"?N:{reasonCode:"UNKNOWN"},D=L.reasonCode==="BACKGROUND_NOT_COMPUTABLE"?{code:"not-computable",needed:"The effective background colour behind this text.",evidence:{reasonCode:L.reasonCode,foreground:L.fg||null}}:null,F={selector:"",html:"",summary:"",hint:"",i18n:{summaryKey:"contrastMinimum_fail_belowThreshold",hintKey:"",params:C&&typeof C=="object"?C:{}},...D?{uncertainty:D}:{},data:{details:L}};let E="";try{const H=x&&typeof x.getAttribute=="function"&&x.getAttribute("id")||"";H&&(E=`#${H}`)}catch{}const P=x&&x.tagName?String(x.tagName).toLowerCase():"element";let z={...F};if(t&&typeof t.reportOccurrence=="function")try{const H=t.reportOccurrence(x,F);H&&typeof H=="object"&&(z=H)}catch{}z.selector=z.selector||E||"",z.data=z.data||{},z.data.details=z.data.details||{},z.data.details.node={selector:E,tagName:P},g.push(z)}catch{}}let _=new WeakMap;if(u)try{u.__elAnalysisCacheAA||(u.__elAnalysisCacheAA=new WeakMap),_=u.__elAnalysisCacheAA}catch{_=new WeakMap}let I;try{I=t&&t.contrast&&typeof t.contrast.getTextScan=="function"?t.contrast.getTextScan(o,t,e):null}catch{I=null}if(I&&I.elements&&Array.isArray(I.elements))try{i=Number(I.eligibleTextCount)||0;for(const x of I.elements){const C=w(x&&x.el),N=x&&Number(x.textCount)?Number(x.textCount):0;if(!C||N<=0)continue;let L=_.get(C);if(!L){let X=k?k.get(C):null;if(X||(X=t.contrast.getComputabilityBlocker(C),X=X||{ok:!0,reasonCode:null,blockerSelector:"",blockerProperty:"",blockerValue:""},k&&k.set(C,X)),X&&X.ok===!1)L={computable:!1};else{let oe=h?h.get(C):null;oe||(oe=t.contrast.computeEffectiveBackground(C,{contrast:{mode:c,rootCanvasFallback:d},collectStack:!1}),oe=oe||{ok:!1,reasonCode:"BACKGROUND_NOT_COMPUTABLE",rgba:null,alpha:0},h&&h.set(C,oe));const q=oe&&Array.isArray(oe.assumptionsApplied)&&oe.assumptionsApplied.length?oe.assumptionsApplied.slice(0):null,O=oe&&typeof oe.assumedRootCanvasColor=="string"?oe.assumedRootCanvasColor:null;let B=v?v.get(C):null;if(B||(B=t.contrast.computeEffectiveForeground(C),B=B||{rgba:null,alpha:0,opacityProduct:1},v&&v.set(C,B)),!oe||oe.ok===!1||!oe.rgba||!B||!B.rgba)L={computable:!1};else{const G=B.rgba.a!=null&&B.rgba.a<1?t.contrast.compositeRgba(B.rgba,oe.rgba):{r:B.rgba.r,g:B.rgba.g,b:B.rgba.b,a:1},ne={r:oe.rgba.r,g:oe.rgba.g,b:oe.rgba.b,a:1},ie=t.contrast.contrastRatio(G,ne),ue=m(C),fe=t.contrast.requiredRatio("AA",ue.isLargeText);L={computable:!0,ratio:ie,bgAssumptionsApplied:q,bgAssumedRootCanvasColor:O,ratioStr:t.contrast.round2(ie),threshold:fe,thresholdStr:`${fe}`,font:ue,fgOpaque:G,bgOpaque:ne}}}_.set(C,L)}if(!L||L.computable!==!0)continue;a+=N;const D=L.ratio,F=L.font,E=L.threshold,P=L.ratioStr,z=L.thresholdStr,H=L.fgOpaque,W=L.bgOpaque;if(!(D>=E)){r+=N;const X=t.contrast.rgbToHex?t.contrast.rgbToHex(H):"",oe=t.contrast.rgbToHex?t.contrast.rgbToHex(W):"",q=F.fontSizePx?parseFloat(F.fontSizePx):NaN,O=t.contrast.pxToPt&&Number.isFinite(q)?t.contrast.pxToPt(q):"",B=Number(F.fontWeightNum),G=F.fontWeight||(F.isBold?"bold":"normal"),ne=t.contrast.rgbaToString(H),ie=t.contrast.rgbaToString(W),ue={reasonCode:"BELOW_THRESHOLD",foreground:ne,background:ie,foregroundHex:X,backgroundHex:oe,fontSizePt:O,fontWeightLabel:G,ratio:P,threshold:z,fontSizePx:F.fontSizePx,fontWeight:F.fontWeight,isBold:F.isBold,isLargeText:F.isLargeText},fe=L&&Array.isArray(L.bgAssumptionsApplied)&&L.bgAssumptionsApplied.length?L.bgAssumptionsApplied.slice(0):null,we=L&&typeof L.bgAssumedRootCanvasColor=="string"?L.bgAssumedRootCanvasColor:null,te={reasonCode:"BELOW_THRESHOLD",metrics:{ratio:D,threshold:E},typography:{fontSizePx:Number.isFinite(q)?q:null,fontSizePt:Number.isFinite(q)?q*.75:null,fontWeight:Number.isFinite(B)?B:null,fontWeightLabel:G,isBold:!!F.isBold,isLargeText:!!F.isLargeText},colors:{foregroundHex:X,backgroundHex:oe,foregroundRgba:ne,backgroundRgba:ie},assumptionsApplied:fe,assumedRootCanvasColor:we};if(b(C,ue,te),g.length>=f)break}}}catch{return{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastMinimum_cantTell_engineFailure",hintKey:"",params:{reasonCode:"ENGINE_EXCEPTION"}},data:{details:{reasonCode:"ENGINE_EXCEPTION"}}}]}}return i===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[]}:a===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:[{selector:"",summary:"",hint:"",html:"",i18n:{summaryKey:"contrastMinimum_notApplicable_noComputableText",hintKey:"",params:{eligibleTextCount:String(i)}},data:{details:{eligibleTextCount:i,computableTextCount:a}}}]}:r>0?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:g}:(g.length||y(i,a),{ruleId:n.ruleId,outcome:"pass",severity:n.defaultSeverity||"serious",confidence:n.defaultConfidence||"high",occurrences:g})}),applicability:null},"css-focus-indicator-suppressed":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=1,u=["background","background-color","background-image","border","border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-radius","box-shadow","color","content","filter","font-weight","opacity","text-decoration","text-decoration-line","text-decoration-color","text-shadow","transform"],k=10;function h(W){return(W==null?"":String(W)).trim()}function v(W){return h(W).toLowerCase()}function A(W,X){if(!W)return"";try{if(typeof W.getPropertyValue=="function")return v(W.getPropertyValue(X))}catch{return""}return""}function p(W){return/^0(\.0+)?(px|em|rem|pt|pc|in|cm|mm|ex|ch|vw|vh|vmin|vmax|%)?$/.test(W)}function m(W){const X=A(W,"outline-style");if(X==="none"||X==="hidden")return!0;const oe=A(W,"outline-width");if(oe&&p(oe)||A(W,"outline-color")==="transparent")return!0;const q=A(W,"outline");if(q){const O=q.split(/\s+/).filter(Boolean);for(const B of O)if(B==="none"||B==="hidden"||B==="transparent"||p(B))return!0}return!1}function s(W){return m(W)?!1:!!(A(W,"outline")||A(W,"outline-style")||A(W,"outline-width")||A(W,"outline-color"))}function c(W){if(s(W))return!0;for(const X of u)if(A(W,X))return!0;return!1}function d(W){const X=[];let oe=0,q="";for(const O of String(W||"")){if(O==="("&&(oe+=1),O===")"&&(oe=Math.max(0,oe-1)),O===","&&oe===0){X.push(q),q="";continue}q+=O}return h(q)&&X.push(q),X.map(h).filter(Boolean)}const f=/:focus(-visible)?(?![-\w])/g;function g(W){return f.lastIndex=0,f.test(W)}function i(W){const X=[];let oe=0,q="";for(const O of W){if(O==="("&&(oe+=1),O===")"&&(oe=Math.max(0,oe-1)),oe===0&&(O===" "||O===">"||O==="+"||O==="~")){h(q)&&X.push(h(q)),q="";continue}q+=O}return h(q)&&X.push(h(q)),X}function a(W){return h(String(W).replace(f,""))||"*"}function r(W){return/::[a-z-]+/.test(W)||/:(before|after)\b/.test(W)}function l(W,X){if(!W||typeof W.matches!="function"||!X)return!1;try{return W.matches(X)}catch{return!1}}function y(W,X){if(!W||typeof W.closest!="function"||!X)return!1;try{return!!W.closest(X)}catch{return!1}}const b=[],_=[];function I(W){const X=W.style;if(!X)return;const oe=m(X),q=c(X);if(!(!oe&&!q))for(const O of d(W.selectorText)){if(!g(O))continue;const B=i(O);let G=-1;for(let ue=0;ue<B.length;ue++)if(g(B[ue])){G=ue;break}if(G===-1)continue;const ne=G===B.length-1,ie=a(B[G]).replace(/::?[a-z-]+$/i,"")||"*";oe&&ne&&!r(O)&&b.push({selector:h(O),base:a(O)}),q&&_.push({base:ie,subject:ne})}}function x(W,X){if(!(!W||X>k))for(const oe of W){if(!oe)continue;if(oe.type===w&&oe.selectorText){I(oe);continue}let q;try{q=oe.cssRules||null}catch{q=null}q&&x(q,X+1)}}let C=0;try{const W=t.styleSheets||[];for(const X of W){let oe=null;try{oe=X&&X.cssRules?X.cssRules:null}catch{continue}oe&&(C+=1,x(oe,0))}}catch{}if(C===0||!b.length)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const N=n&&typeof n.getFocusableInfo=="function"?n.getFocusableInfo:null,L=n&&typeof n.isDomVisibleEligible=="function"?n.isDomVisibleEligible:null;function D(W){if(!N)return!1;try{const X=N(W,o);return!!(X&&X.tabbable)}catch{return!1}}function F(W){if(!L)return!0;try{const X=L(W,o,{visibilityMode:"styleOnly",disableGeometry:!0});return!(X&&X.eligible===!1)}catch{return!0}}const E="a[href],area[href],button,input,select,textarea,summary,[tabindex],[contenteditable]",P=n.queryAllSmart?n.queryAllSmart(E):n.queryAll(E),z=[];let H=0;for(const W of P){if(!W||W.nodeType!==1||!D(W)||!F(W))continue;H+=1;const X=b.filter(B=>l(W,B.base));if(!X.length||_.some(B=>B.subject?l(W,B.base):l(W,B.base)||y(W,B.base)))continue;const q=[...new Set(X.map(B=>B.selector))],O=n.getEligibilityInfo?(()=>{try{return n.getEligibilityInfo(W,o,{targetSet:"dom"})}catch{return null}})():null;z.push(n.reportOccurrence(W,{summary:`This element takes a tab stop, and "${q.join(", ")}" removes its focus outline with no replacement indicator in any other focus rule matching it.`,hint:"Draw a replacement indicator in the same rule (a visible outline, border, box-shadow, or background change), or drop the outline reset. If the indicator is applied from script instead, confirm it appears for keyboard users.",i18n:{summaryKey:"cssFocusIndicatorSuppressed_summary_cantTell",hintKey:"cssFocusIndicatorSuppressed_hint_cantTell",params:{selectors:q.join(", ")}},data:{details:{reasonCode:"FOCUS_INDICATOR_SUPPRESSED",suppressingSelectors:q},visibilityFilter:O||{targetSet:"dom",accEligible:null,reasons:[]}}}))}return H===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:z.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"serious",occurrences:z}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"css-hidden-focus":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,v=e&&typeof e.isDomVisibleEligible=="function"?e.isDomVisibleEligible:null,A=e&&typeof e.reportOccurrence=="function"?e.reportOccurrence:null,p=C=>(C==null?"":String(C)).trim(),m=C=>p(C).toLowerCase();function s(C){try{if(k){const N=k(C);return Array.isArray(N)?N:Array.from(N||[])}}catch{}try{if(u&&typeof u.querySelectorAll=="function")return Array.from(u.querySelectorAll(C))}catch{}return[]}function c(C){try{const N=t&&t.defaultView?t.defaultView:typeof window<"u"?window:null;return N&&N.getComputedStyle?N.getComputedStyle(C):null}catch{return null}}function d(C){const N=[];if(!C)return N;const L=c(C);try{const E=L&&L.opacity!=null?String(L.opacity).trim():"",P=E?Number.parseFloat(E):1;Number.isFinite(P)&&P<=1e-4&&N.push("opacityZero")}catch{}try{const E=L&&L.clip!=null?String(L.clip).trim():"",P=L&&L.clipPath!=null?String(L.clipPath).trim():"",z=(E||"").toLowerCase(),H=(P||"").toLowerCase();z&&z!=="auto"&&z.indexOf("rect(")!==-1&&z.replace(/\s+/g,"").indexOf("rect(0")!==-1&&N.push("clipped"),H&&H!=="none"&&H.indexOf("inset(")!==-1&&(H.indexOf("100%")!==-1||H.indexOf("50%")!==-1)&&N.push("clipped")}catch{}try{const E=L&&L.width!=null?String(L.width).trim():"",P=L&&L.height!=null?String(L.height).trim():"",z=L&&L.overflow!=null?String(L.overflow).trim().toLowerCase():"";(E==="0px"||E==="0"||(P==="0px"||P==="0"))&&(z==="hidden"||z==="clip")&&N.push("zeroSizeOverflowHidden")}catch{}try{const E=L&&L.position!=null?String(L.position).trim().toLowerCase():"",P=L&&L.left!=null?String(L.left).trim().toLowerCase():"",z=L&&L.top!=null?String(L.top).trim().toLowerCase():"",H=L&&L.textIndent!=null?String(L.textIndent).trim().toLowerCase():"",W=O=>{if(!O||O==="auto")return null;const B=String(O).match(/-?\d+(\.\d+)?/);if(!B)return null;const G=Number.parseFloat(B[0]);return Number.isFinite(G)?G:null},X=W(P),oe=W(z),q=W(H);(E==="absolute"||E==="fixed")&&(X!=null&&X<=-5e3||oe!=null&&oe<=-5e3)&&N.push("offscreen"),q!=null&&q<=-5e3&&N.push("offscreen")}catch{}const D=new Set,F=[];for(const E of N){const P=String(E);D.has(P)||(D.add(P),F.push(P))}return F}function f(C){if(!h)return null;try{return h(C,o)}catch{return null}}function g(C){let N=C&&C.activeElement?C.activeElement:null,L=0;for(;N&&N.shadowRoot&&N.shadowRoot.activeElement&&L++<20;)N=N.shadowRoot.activeElement;return N}function i(C){if(!C||typeof C.focus!="function")return!1;try{return C.focus({preventScroll:!0}),!0}catch{try{return C.focus(),!0}catch{return!1}}}function a(C,N){const L=C&&C.defaultView?C.defaultView:typeof window<"u"?window:null;if(!L||typeof N!="function")return;const D=typeof L.setTimeout=="function"?L.setTimeout.bind(L):null,F=typeof L.requestAnimationFrame=="function"?L.requestAnimationFrame.bind(L):null,E=typeof L.queueMicrotask=="function"?L.queueMicrotask.bind(L):null,P=[],z=[],H=[];let W=1;const X=function(O,B){const G=Number.isFinite(Number(B))?Number(B):0;if(typeof O=="function"&&G<=200){const ne=[];for(let ie=2;ie<arguments.length;ie++)ne.push(arguments[ie]);return H.push({delay:G,cb:()=>O.apply(L,ne)}),W++}return D?D.apply(L,arguments):W++},oe=function(O){return typeof O=="function"?(z.push(O),W++):F?F.apply(L,arguments):W++},q=function(O){typeof O=="function"&&P.push(O)};try{D&&(L.setTimeout=X),F&&(L.requestAnimationFrame=oe),E&&(L.queueMicrotask=q),N();let O=0;for(;(P.length||z.length||H.length)&&O++<100;){for(;P.length;){const B=P.shift();try{B()}catch{}}for(;z.length;){const B=z.shift();try{B(16)}catch{}}if(H.length){H.sort((G,ne)=>G.delay-ne.delay);const B=H.shift();try{B.cb()}catch{}}}}finally{D&&(L.setTimeout=D),F&&(L.requestAnimationFrame=F),E&&(L.queueMicrotask=E)}}function r(C){if(!C||typeof C.addEventListener!="function")return null;let N=!1;const L=()=>{N=!0};try{C.addEventListener("focus",L,!0)}catch{}const D=g(t);let F=!1;a(t,()=>{F=i(C)});try{C.removeEventListener("focus",L,!0)}catch{}if(!F||!N)return null;const E=g(t);if(D&&D!==E&&i(D),!E||E===C)return null;const P=(()=>{try{return m(E.tagName||"")}catch{return""}})(),z=(()=>{try{return p(E.getAttribute&&E.getAttribute("id"))}catch{return""}})();return{redirected:!0,redirectedToTag:P||null,redirectedToId:z||null}}function l(C,N){const L=N||f(C);return!!(L&&L.focusable&&L.tabbable)}function y(C){if(!v)return!0;try{const N=v(C,o,{visibilityMode:"styleOnly",disableGeometry:!0});if(N&&N.eligible===!1&&(Array.isArray(N.reasons)?N.reasons:[]).filter(F=>String(F)!=="opacityZero").length)return!1}catch{}return!0}const b=s("a[href],area[href],button,input,select,textarea,summary,[tabindex],[contenteditable]");if(!b.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const _=[],I=3;let x=0;for(const C of b){if(!C||!C.getAttribute)continue;const N=f(C);if(!l(C,N)||!y(C))continue;const L=d(C);if(!L.length)continue;const D=(()=>{try{return m(C.tagName||"")}catch{return""}})(),F=["opacityZero","offscreen","clipped","zeroSizeOverflowHidden"],E=[];for(const W of F)L.includes(W)&&E.push(W);const P=x<I?r(C):null;x<I&&(x+=1);const z=!!(P&&P.redirected),H={summary:z?`Focusable ${D} appears visually hidden but focus moved immediately to another element. Verify sentinel/focus-trap behavior.`:`Focusable ${D} appears visually hidden (${E.join(",")}). Verify it becomes visible on keyboard focus.`,hint:z?"Verify this is an intentional focus sentinel/focus-trap handoff and that keyboard users never remain on visually hidden focus targets.":"Manually tab to the element and confirm a visible focus indicator and that the element is visible when focused. If it remains hidden while focused, fix CSS/JS so it becomes visible or is removed from the tab order until visible.",i18n:z?null:{summaryKey:"cssHidden_focus_summary_cantTell",hintKey:"cssHidden_focus_hint_cantTell",params:{element:D,visibilityHints:E.join(",")}},data:{details:{reasonCode:z?"cssHiddenTabbable_runtimeRedirect_needsReview":"cssHiddenTabbable_needsFocusStateVerification",metrics:{visibilityHints:E.slice(0)},runtimeProbe:P||null}}};_.push(A?A(C,H):{__node:C,selector:"",html:"",...H})}return _.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:_}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"css-orientation-lock":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=4,u=1;function k(b){return(b==null?"":String(b)).trim()}function h(b){const _=/(-?[\d.]+)\s*(deg|grad|rad|turn)/i.exec(b);if(!_)return 0;const I=parseFloat(_[1]);if(!Number.isFinite(I))return 0;const x=_[2].toLowerCase();return x==="rad"?I*(180/Math.PI):x==="grad"?I*(360/400):x==="turn"?I*360:I}function v(b){return k(b).split(",").map(_=>parseFloat(_.trim()))}function A(b,_,I,x){return Math.abs(b-x)>.001||Math.abs(_+I)>.001||Math.abs(b*b+_*_-1)>.001||Math.abs(b*x-_*I-1)>.001?null:Math.atan2(_,b)*180/Math.PI}function p(b){if(b.length!==16||!b.every(Number.isFinite))return null;const _=.001,I=(x,C)=>Math.abs(x-C)<_;return!(I(b[2],0)&&I(b[3],0)&&I(b[6],0)&&I(b[7],0))||!(I(b[8],0)&&I(b[9],0)&&I(b[10],1)&&I(b[11],0))||!(I(b[12],0)&&I(b[13],0)&&I(b[14],0)&&I(b[15],1))?null:A(b[0],b[1],b[4],b[5])}function m(b){if(!b)return 0;let _=0,I;const x=/rotate(?:Z)?\s*\(([^)]*)\)/gi;for(;(I=x.exec(b))!==null;)_+=h(I[1]);const C=/rotate3d\s*\(([^)]*)\)/gi;for(;(I=C.exec(b))!==null;){const D=I[1].split(",");if(D.length!==4)continue;const F=parseFloat(D[0]),E=parseFloat(D[1]),P=parseFloat(D[2]),z=h(D[3]);if(!Number.isFinite(F)||!Number.isFinite(E)||!Number.isFinite(P)||!z)continue;const H=.001;Math.abs(F)<H&&Math.abs(E)<H&&Math.abs(Math.abs(P)-1)<H&&(_+=P<0?-z:z)}const N=/matrix\s*\(([^)]*)\)/gi;for(;(I=N.exec(b))!==null;){const D=v(I[1]);if(D.length===6&&D.every(Number.isFinite)){const F=A(D[0],D[1],D[2],D[3]);F!=null&&(_+=F)}}const L=/matrix3d\s*\(([^)]*)\)/gi;for(;(I=L.exec(b))!==null;){const D=p(v(I[1]));D!=null&&(_+=D)}return _}const s=5;function c(b){if(!b)return!1;const _=k(b.transform)||k(b.getPropertyValue?b.getPropertyValue("-webkit-transform"):""),I=k(b.getPropertyValue?b.getPropertyValue("rotate"):"");let x=m(_);if(!x&&I&&(x=h(I)),!x)return!1;const C=(x%180+180)%180;return Math.abs(C-90)<=s}function d(b){const _=k(b).toLowerCase();return _.includes("orientation")&&(_.includes("portrait")||_.includes("landscape"))}function f(b,_,I){if(b)for(const x of b)x&&x.type===u&&c(x.style)&&I.push({mediaText:_,selectorText:k(x.selectorText)})}const g=[];let i=0,a=0;try{const b=t.styleSheets||[];for(const _ of b){let I=null;try{I=_&&_.cssRules?_.cssRules:null}catch{a+=1;continue}if(I){i+=1;for(const x of I){if(!x||x.type!==w)continue;const C=x.media?x.media.mediaText:"";d(C)&&f(x.cssRules,C,g)}}}}catch{}const r=t.documentElement||t.body||null;if(!g.length)return a>0?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"serious",confidence:"low",occurrences:[n.reportOccurrence(r,{summary:`${a} stylesheet(s) could not be read, so whether this page locks its orientation could not be determined.`,hint:"Cross-origin stylesheets are not inspectable from the page. Check any third-party CSS for an orientation media query containing a rotate() transform, or re-run the scan with those stylesheets served same-origin.",i18n:{summaryKey:"cssOrientationLock_summary_cantTell_unreadableSheets",hintKey:"cssOrientationLock_hint_cantTell_unreadableSheets",params:{count:String(a)}},uncertainty:{code:"not-computable",needed:"The contents of the stylesheets this scan could not read.",evidence:{unreadableSheetCount:a,reasonCode:"STYLESHEETS_NOT_READABLE"}},data:{details:{reasonCode:"STYLESHEETS_NOT_READABLE",unreadableSheetCount:a}}})]}:i===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]};const l=r,y=g.map(b=>n.reportOccurrence(l,{summary:b.selectorText?`A "${b.mediaText}" media query rotates "${b.selectorText}", locking the page to one orientation.`:`A "${b.mediaText}" media query rotates an element with no readable selector, locking the page to one orientation.`,hint:"Remove the rotate() transform from the orientation media query; let the page respond naturally to device orientation instead of forcing a visual rotation.",i18n:{summaryKey:b.selectorText?"cssOrientationLock_summary_fail":"cssOrientationLock_summary_fail_unknownSelector",hintKey:"cssOrientationLock_hint_fail",params:{mediaText:b.mediaText,selectorText:b.selectorText}},data:{details:{reasonCode:"ORIENTATION_MEDIA_ROTATE_TRANSFORM",mediaText:b.mediaText,selectorText:b.selectorText}}}));return{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"serious",occurrences:y}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"definition-list-children-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["dt","dd","script","template","style"]),w=t.queryAllSmart?t.queryAllSmart("dl"):t.queryAll("dl"),u=[];let k=0;for(const h of w){if(!h||!h.children||!h.children.length)continue;k+=1;const v=[];for(const g of h.children)if(!(!g||!g.tagName))if(g.tagName.toLowerCase()==="div")for(const i of g.children||[])i&&i.tagName&&v.push(i);else v.push(g);let A=!1,p=!1;const m=[];for(const g of v){const i=g.tagName.toLowerCase();if(i==="dt"){A=!0;continue}if(i==="dd"){p=!0;continue}e.has(i)||m.push(i)}const s=[...new Set(m)],c=m.length?"DL_INVALID_CHILD":(A||p)&&!(A&&p)?"DL_NO_DT_DD":null;if(!c)continue;const d=m.length?"This description list contains a direct or wrapped child that is not part of a dt/dd group.":"This description list has no <dt>/<dd> term-definition group.",f=m.length?"Only use <dt>/<dd> (optionally wrapped in one <div>), <script>, <template>, or <style> inside <dl>.":"Add at least one <dt>/<dd> pair inside this <dl>.";u.push(t.reportOccurrence(h,{summary:d,hint:f,i18n:{summaryKey:m.length?"definitionListChildrenValid_summary_fail_invalidChild":"definitionListChildrenValid_summary_fail_noDtDd",hintKey:m.length?"definitionListChildrenValid_hint_fail_invalidChild":"definitionListChildrenValid_hint_fail_noDtDd",params:{invalidChildren:s.join(", ")}},data:{details:{reasonCode:c,invalidChildren:m}}}))}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:u}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"deprecated-elements-not-used":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("blink, marquee"):t.queryAll("blink, marquee"),w=[];let u=0;for(const k of e){if(!k||!k.tagName)continue;u+=1;const h=k.tagName.toLowerCase();w.push(t.reportOccurrence(k,{summary:"This element’s content cannot be paused, stopped, or hidden by the user.",hint:"Remove this element; use static content, or an animation with a user-facing pause/stop control, instead.",i18n:{summaryKey:"deprecatedElements_summary_fail",hintKey:"deprecatedElements_hint_fail",params:{element:h}},data:{details:{reasonCode:"DEPRECATED_NON_STOPPABLE_ELEMENT",element:h}}}))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"dialog-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(d){return String(d||"").replace(/\s+/g," ").trim()}function k(d,f){try{return!d||!d.getAttribute?"":u(d.getAttribute(f))}catch{return""}}function h(d,f,g){const i=k(f,"aria-labelledby");if(!i)return"";if(n.getTextFromIdRefs)try{const a=n.getTextFromIdRefs(i,o,{maxRefs:g||8});return u(a&&a.text)}catch{}return""}function v(d,f,g){const i=d&&typeof d.isIncludedInAccessibilityTree=="function"?d.isIncludedInAccessibilityTree:d&&typeof d.isAccTreeEligible=="function"?d.isAccTreeEligible:null;if(!i)return!0;try{const a=i(f,g);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const A=[];let p=0;const m='[role="dialog"],[role="alertdialog"]',s=n.queryAllSmart?n.queryAllSmart(m):n.queryAll(m);function c(d){return k(d,"aria-label")?{ok:!0,method:"aria-label"}:h(t,d,8)?{ok:!0,method:"aria-labelledby"}:k(d,"title")?{ok:!0,method:"title"}:{ok:!1,method:"none"}}for(const d of s){if(!d||!v(n,d,o))continue;const f=k(d,"role").toLowerCase();if(f!=="dialog"&&f!=="alertdialog")continue;p+=1;const g=c(d);if(g.ok)continue;const i=w?(()=>{try{return w(d,o,{targetSet:"acc"})}catch{return null}})():null;A.push(n.reportOccurrence(d,{summary:"This dialog has no accessible name.",hint:"Provide aria-labelledby (preferred) or aria-label so assistive technologies can announce the dialog.",i18n:{summaryKey:"dialogNamePresent_summary_fail",hintKey:"dialogNamePresent_hint_fail",params:{role:f}},data:{details:{reasonCode:"name_missing",controlType:f,methodTried:g.method},visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return p===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:A.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:A}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"dlitem-parent-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("dt, dd"):t.queryAll("dt, dd"),w=[];let u=0;for(const k of e){if(!k)continue;const h=k.parentElement;if(!h)continue;u+=1;const v=h.tagName?h.tagName.toLowerCase():"";let A=v==="dl";if(!A&&v==="div"){const m=h.parentElement;A=(m&&m.tagName?m.tagName.toLowerCase():"")==="dl"}if(A)continue;const p=k.tagName.toLowerCase();w.push(t.reportOccurrence(k,{summary:"This description-list item is not contained by a <dl>.",hint:"Place this <dt>/<dd> inside a <dl>, directly or wrapped in a single <div>.",i18n:{summaryKey:"dlitemParentValid_summary_fail",hintKey:"dlitemParentValid_hint_fail",params:{element:p,parentElement:v}},data:{details:{reasonCode:"DLITEM_INVALID_PARENT",element:p,parentElement:v}}}))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"duplicate-id":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=new Set;try{const m=t.querySelectorAll?t.querySelectorAll("[id]"):[];for(const s of m)w.add(s)}catch{}const u=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart:null;let k=null;if(u)try{const m=u("[id]"),s=Array.isArray(m)?m:Array.from(m||[]);k=new Set(s);for(const c of s)w.add(c)}catch{k=null}function h(m){try{if(typeof m.getRootNode=="function")return m.getRootNode()}catch{}return t}const v=new Map;let A=0;for(const m of w){if(!m||m.nodeType!==1||!m.getAttribute)continue;const s=String(m.getAttribute("id")||"").trim();if(!s)continue;A+=1;const c=h(m);let d=v.get(c);d||(d=new Map,v.set(c,d));const f=d.get(s);f?f.push(m):d.set(s,[m])}if(A===0)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const p=[];for(const m of v.values())for(const[s,c]of m)if(!(c.length<=1))for(const d of c){if(k&&!k.has(d))continue;const f=n.getEligibilityInfo?(()=>{try{return n.getEligibilityInfo(d,o,{targetSet:"dom"})}catch{return null}})():null;p.push(n.reportOccurrence(d,{summary:`The id "${s}" is used on ${c.length} elements in the same tree.`,hint:"Give each element its own id. A duplicate breaks <label for>, fragment links, getElementById and every ID-reference attribute, all of which resolve to the first match only.",i18n:{summaryKey:"duplicateId_summary_fail",hintKey:"duplicateId_hint_fail",params:{id:s,count:String(c.length)}},data:{details:{reasonCode:"DUPLICATE_ID",id:s,count:c.length},visibilityFilter:f||{targetSet:"dom",accEligible:null,reasons:[]}}}))}return p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"moderate",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"duplicate-id-aria":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=["aria-labelledby","aria-describedby","aria-owns","aria-controls","aria-activedescendant","aria-flowto","aria-errormessage","aria-details"],u=new Map,k=t.querySelectorAll?t.querySelectorAll("[id]"):[];for(const m of k){if(!m||!m.getAttribute)continue;const s=String(m.getAttribute("id")||"").trim();s&&(u.has(s)||u.set(s,[]),u.get(s).push(m))}const h=new Set;for(const m of w){const s=`[${m}]`,c=t.querySelectorAll?t.querySelectorAll(s):[];for(const d of c){if(!d||!d.getAttribute)continue;const f=String(d.getAttribute(m)||"").trim();if(f)for(const g of f.split(/\s+/))g&&h.add(g)}}let v=null;if(n&&typeof n.queryAllSmart=="function")try{const m=n.queryAllSmart("[id]");v=new Set(Array.isArray(m)?m:Array.from(m||[]))}catch{v=null}const A=[];for(const m of h){const s=u.get(m)||[];if(!(s.length<=1))for(const c of s)v&&!v.has(c)||A.push(n.reportOccurrence(c,{summary:"This id is referenced by an ARIA attribute but is used by more than one element; the reference resolves to the first.",hint:"Confirm the first element carrying this id is the intended target, or make the id unique.",i18n:{summaryKey:"duplicateIdAria_summary_cantTell",hintKey:"duplicateIdAria_hint_cantTell",params:{id:m,duplicateCount:String(s.length)}},uncertainty:{code:"judgement-required",needed:"Whether the first element carrying this id is the intended target.",evidence:{id:m,duplicateCount:s.length,resolvesTo:"first"}},data:{details:{reasonCode:"DUPLICATE_ID_ARIA_REFERENCED",id:m,duplicateCount:s.length}}}))}if(h.size===0)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const p=n.resolveTieredOutcome([],A,e.defaultSeverity||"serious");return{ruleId:e.ruleId,...p}}),applicability:null},"embed-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:a=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(a)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,m=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null,s=(()=>{try{return Array.from((k?k("embed"):h("embed"))||[])}catch{return h("embed")}})();if(!s.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const c=[];let d=0;const f=a=>(a==null?"":String(a)).trim();function g(a){const r=[];let l=null;if(m&&(l=(()=>{try{return m(a,o)}catch{return null}})()),l&&l.present&&f(l.value))return{present:!0,value:f(l.value),mechanism:l.mechanism||"aria",flags:(l.flags||[]).slice(0)};const y=f(a.getAttribute&&a.getAttribute("title"));if(y)return r.push("title-used"),{present:!0,value:y,mechanism:"title",flags:r};if(l&&l.flags&&l.flags.length)for(const b of l.flags)r.push(b);return{present:!1,value:"",mechanism:"none",flags:r}}let i=!1;for(const a of s){if(!a||!a.getAttribute)continue;if(A){const _=(()=>{try{return A(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(_&&_.eligible===!1)continue}const r=(()=>{try{return String(a.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(r==="presentation"||r==="none"){let _;if(p){const I=(()=>{try{return p(a,o)}catch{return null}})();_=!!(I&&I.focusable)}else{const I=a.getAttribute("tabindex");_=I!=null&&String(I).trim()!==""&&!Number.isNaN(Number(String(I).trim()))}if(!_)continue}d+=1;const l=g(a);if(l.present){l.mechanism==="title"&&(i=!0);continue}const y=v?v(a,o,{targetSet:"acc"}):null,b={summary:"Missing text alternative for <embed>.",hint:"Add an accessible name to <embed> (aria-label/aria-labelledby preferred, or a title attribute as a best-effort fallback).",i18n:{summaryKey:"embed_textAltPresent_summary_fail",hintKey:"embed_textAltPresent_hint_fail",params:{element:"embed"}},data:{visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]},name:l}};e&&typeof e.reportOccurrence=="function"?c.push(e.reportOccurrence(a,b)):c.push({selector:"",html:"",...b})}return d===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:c.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:c}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",confidence:i?"medium":"high",occurrences:[]}}),applicability:null},"embed-text-alternative-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=i=>(i==null?"":String(i)).trim(),h=e&&typeof e.getTextFromIdRefs=="function"?e.getTextFromIdRefs:null,v=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,A=e&&typeof e.queryAll=="function"?e.queryAll:i=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(i)):[]}catch{return[]}},p=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,m=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,s=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function c(i){const a=(()=>{try{return String(i.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(a!=="presentation"&&a!=="none")return!1;let r;if(s){const l=(()=>{try{return s(i,o)}catch{return null}})();r=!!(l&&l.focusable)}else{const l=i.getAttribute("tabindex");r=l!=null&&String(l).trim()!==""&&!Number.isNaN(Number(String(l).trim()))}return!r}const d=(()=>{try{return Array.from((v?v("embed"):A("embed"))||[])}catch{return A("embed")}})();if(!d.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const f=[];let g=0;for(const i of d){if(!i||!i.getAttribute)continue;if(m){const C=(()=>{try{return m(i,o)}catch{return{eligible:!0,reasons:[]}}})();if(C&&C.eligible===!1)continue}if(c(i))continue;let a,r,l;try{a=k(i.getAttribute("aria-label")),r=k(i.getAttribute("aria-labelledby")),l=k(i.getAttribute("title"))}catch{a="",r="",l=""}let y="";if(!a&&r&&h)try{const C=h(r,o);y=k(C&&C.text)}catch{y=""}if(!!!(a||l||y))continue;const _={ariaLabel:a||null,ariaLabelledBy:r||null,ariaLabelledByText:y||null,title:l||null};g+=1;const I=p?p(i,o,{targetSet:"acc"}):null,x={summary:"Review text alternative for <embed> for accuracy and appropriateness.",hint:"Confirm the ARIA name or title accurately identifies the embedded content in context.",i18n:{summaryKey:"embed_textAltQuality_summary_cantTell",hintKey:"embed_textAltQuality_hint_cantTell",params:{element:(i.tagName||"").toLowerCase()}},data:{visibilityFilter:I||{targetSet:"acc",accEligible:null,reasons:[]},details:_}};e&&typeof e.reportOccurrence=="function"?f.push(e.reportOccurrence(i,x)):f.push({selector:"",html:"",...x})}return g===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:f}}),applicability:null},"empty-heading":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(g){return String(g||"").replace(/\s+/g," ").trim()}function u(g){const i=w(g.getAttribute&&g.getAttribute("role"));return i?i.split(/\s+/)[0].toLowerCase():""}const k=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];function h(g){for(const i of k)if(g.getAttribute&&g.getAttribute(i)!=null)return!0;return!1}function v(g){const i=g.tagName?g.tagName.toLowerCase():"",a=/^h[1-6]$/.test(i),r=u(g);return r?r==="heading"?!0:(r==="none"||r==="presentation")&&a?h(g):!1:a}function A(g){const i=w(g.getAttribute&&g.getAttribute("aria-label"));if(i)return i;const a=w(g.getAttribute&&g.getAttribute("aria-labelledby"));if(a){const r=[];for(const y of a.split(/\s+/).filter(Boolean))try{const b=t.getElementById(y);if(b){const _=w(b.textContent);_&&r.push(_)}}catch{}const l=w(r.join(" "));if(l)return l}if(n&&typeof n.getContentNameInfo=="function")try{const r=n.getContentNameInfo(g,o);if(r&&r.present&&r.value)return r.value}catch{}return w(g.getAttribute&&g.getAttribute("title"))}const p=n.queryAllSmart?n.queryAllSmart("h1, h2, h3, h4, h5, h6, [role]"):n.queryAll("h1, h2, h3, h4, h5, h6, [role]"),m=[];let s=0;const c=new Set,d=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function f(g){if(!d)return!0;try{const i=d(g,o);return typeof i=="boolean"?i:!!(i&&i.eligible)}catch{return!0}}for(const g of p){if(!g||c.has(g)||(c.add(g),!v(g))||!f(g)||(s+=1,A(g)))continue;const a=n.getEligibilityInfo?(()=>{try{return n.getEligibilityInfo(g,o,{targetSet:"acc"})}catch{return null}})():null;m.push(n.reportOccurrence(g,{summary:"This heading has no accessible name.",hint:"Add text content (or aria-label/aria-labelledby) to this heading, or remove it if it is not needed.",i18n:{summaryKey:"emptyHeading_summary_cantTell",hintKey:"emptyHeading_hint_cantTell",params:{}},data:{details:{reasonCode:"HEADING_EMPTY"},visibilityFilter:a||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return s===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:m.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:m}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"empty-table-header":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(c){return String(c||"").replace(/\s+/g," ").trim()}const u=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function k(c){if(!u)return!0;try{const d=u(c,o);return!!(d&&d.eligible)}catch{return!0}}function h(c){function d(g){if(g.nodeType===3)return g.nodeValue||"";if(g.nodeType!==1||!k(g))return"";let i="";for(const a of g.childNodes||[])i+=d(a);return i}let f="";for(const g of c.childNodes||[])f+=d(g);return w(f)}function v(c){const d=w(c.getAttribute&&c.getAttribute("aria-label"));if(d)return d;const f=w(c.getAttribute&&c.getAttribute("aria-labelledby"));if(f){const g=[];for(const a of f.split(/\s+/).filter(Boolean))try{const r=t.getElementById(a);if(r){const l=w(r.textContent);l&&g.push(l)}}catch{}const i=w(g.join(" "));if(i)return i}return""}const A='th:not([role]), [role="columnheader"], [role="rowheader"]',p=n.queryAllSmart?n.queryAllSmart(A):n.queryAll(A),m=[];let s=0;for(const c of p){if(!c||!k(c)||(s+=1,h(c)))continue;const d=v(c);if(d){m.push(n.reportOccurrence(c,{summary:"This table header cell has no visible text. Its only accessible name comes from aria-label/aria-labelledby, which real screen-reader/browser combinations (e.g. NVDA+Firefox, iOS VoiceOver+Safari) are known to ignore on <th> elements.",hint:"Add visible text content to this header cell (in addition to, or instead of, aria-label/aria-labelledby); visible text is the only naming mechanism confirmed to work across tested screen readers.",i18n:{summaryKey:"emptyTableHeader_summary_cantTell_ariaOnly",hintKey:"emptyTableHeader_hint_cantTell_ariaOnly",params:{}},data:{details:{reasonCode:"TABLE_HEADER_NAME_NOT_VISIBLE_TEXT",ariaName:d}}}));continue}m.push(n.reportOccurrence(c,{summary:"This table header cell has no accessible name.",hint:"Add text content (or aria-label/aria-labelledby) to this header cell, or remove it if it is not needed.",i18n:{summaryKey:"emptyTableHeader_summary_cantTell",hintKey:"emptyTableHeader_hint_cantTell",params:{}},data:{details:{reasonCode:"TABLE_HEADER_EMPTY"}}}))}return s===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:m.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:m}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"focus-order-semantics":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["generic","group","text","presentation","none","img","heading","article","banner","contentinfo","main","navigation","complementary","document","note","list","listitem","table","row","cell","columnheader","rowheader","figure","term","definition","paragraph","caption","status","alert","log","tooltip"]),w=t.queryAllSmart?t.queryAllSmart("[tabindex][role]"):t.queryAll("[tabindex][role]"),u=[];let k=0;for(const h of w){if(!h||!h.getAttribute)continue;const v=h.getAttribute("tabindex"),A=Number.parseInt(v,10);if(!Number.isFinite(A)||A<0)continue;const p=(h.getAttribute("role")||"").trim().toLowerCase();if(!p||(k+=1,!e.has(p)))continue;const m=t.buildSelector?t.buildSelector(h):"html",s=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(h):h.outerHTML||"",c={selector:m,html:s,summary:`This element is in the tab order (tabindex="${A}") but has a non-interactive role ("${p}").`,hint:"Remove tabindex if this element is not meant to be interactive, or use an interactive role that matches its actual behavior.",i18n:{summaryKey:"focusOrderSemantics_summary_cantTell",hintKey:"focusOrderSemantics_hint_cantTell",params:{tabindex:String(A),role:p}},data:{details:{reasonCode:"TABBABLE_WITH_NON_INTERACTIVE_ROLE",tabindex:A,role:p}}};t&&typeof t.reportOccurrence=="function"?u.push(t.reportOccurrence(h,c)):u.push(c)}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"form-control-label-quality":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=new Set(["label","field","form field","input","input field","text","text field","enter text","type here","value","placeholder","untitled","tbd","todo","to do","n/a","test","example","default"]),u=['input:not([type="hidden"]):not([type="submit"]):not([type="reset"]):not([type="button"]):not([type="image"])',"select","textarea",'[role="checkbox"]','[role="combobox"]','[role="listbox"]','[role="menuitemcheckbox"]','[role="menuitemradio"]','[role="radio"]','[role="searchbox"]','[role="slider"]','[role="spinbutton"]','[role="switch"]','[role="textbox"]'].join(", "),k='tr, [role="row"], li, [role="listitem"]',h='h1, h2, h3, h4, h5, h6, [role="heading"]';function v(E){return String(E||"").replace(/\s+/g," ").trim()}function A(E){return v(E).toLowerCase().replace(/[.,;:!?*]+$/g,"").trim()}const p=n&&typeof n.isDomVisibleEligible=="function"?n.isDomVisibleEligible:null,m=n&&typeof n.getVisibilityHintsInfo=="function"?n.getVisibilityHintsInfo:null,s=["offscreen","clipped","opacityZero","zeroSize"];function c(E){if(!E)return!1;if(p)try{const P=p(E,o,{visibilityMode:"styleOnly",disableGeometry:!0});if(P&&P.eligible===!1)return!1}catch{}if(m)try{const P=m(E,o),z=P&&P.hints||[];for(const H of s)if(z.indexOf(H)!==-1)return!1}catch{}return!0}function d(E,P){const z=v(E.getAttribute&&E.getAttribute(P));if(!z)return[];const H=[];for(const W of z.split(/\s+/).filter(Boolean))try{const X=t.getElementById(W);X&&H.push(X)}catch{}return H}const f=new Map;try{for(const E of t.querySelectorAll("label[for]")){const P=v(E.getAttribute("for"));if(!P)continue;const z=f.get(P);z?z.push(E):f.set(P,[E])}}catch{}const g='input:not([type="hidden"]), select, textarea, button, meter, output, progress';function i(E){const P=[],z=v(E.getAttribute&&E.getAttribute("id"));if(z){const H=f.get(z);if(H)for(const W of H)P.push(W)}try{const H=E.closest?E.closest("label"):null,W=!!(H&&H.hasAttribute&&H.hasAttribute("for"));if(H&&!W&&P.indexOf(H)===-1){let X=null;try{X=H.querySelector?H.querySelector(g):null}catch{X=null}X===E&&P.push(H)}}catch{}return P}function a(E){const P=d(E,"aria-labelledby"),z=P.length?P:i(E),H=[];let W=0;for(const X of z){const oe=v(X.textContent);oe&&(c(X)?H.push(oe):W+=1)}return{text:v(H.join(" ")),hiddenParts:W}}const r=(()=>{try{return Array.prototype.slice.call(t.querySelectorAll(h))}catch{return[]}})();function l(E,P){try{return!!(P.compareDocumentPosition(E)&2)}catch{return!1}}const y=new Map;function b(E){return y.get(E)||""}function _(E){let P;try{P=E.closest?E.closest("fieldset"):null}catch{P=null}for(;P;){let z;try{z=P.querySelector("legend")}catch{z=null}if(z&&c(z)){const H=v(z.textContent);if(H)return H}try{P=P.parentElement?P.parentElement.closest("fieldset"):null}catch{P=null}}return""}const I=new Map;function x(E,P){let z;try{z=E.closest?E.closest(k):null}catch{z=null}if(!z||!c(z))return"";let H=I.get(z);return H===void 0&&(H=v(z.textContent),I.set(z,H)),H?v(H.split(P).join(" ")):""}function C(E,P){const z=_(E)||b(E);return`${A(z)}##${A(x(E,P))}`}const N=n.queryAllSmart?n.queryAllSmart(u):n.queryAll(u),L=[];for(const E of N){if(!E||E.nodeType!==1||!c(E))continue;const P=a(E),z=P.text;z&&L.push({el:E,labelText:z,normalized:A(z),hiddenParts:P.hiddenParts})}{const E=[];for(const H of L){let W;try{W=typeof H.el.getRootNode!="function"||H.el.getRootNode()===t}catch{W=!0}if(!W){y.set(H.el,"");continue}E.push(H)}E.sort((H,W)=>{try{const X=H.el.compareDocumentPosition(W.el);if(X&4)return-1;if(X&2)return 1}catch{}return 0});let P=0,z="";for(const H of E){for(;P<r.length&&l(r[P],H.el);){const W=r[P];if(P+=1,!c(W))continue;const X=v(W.textContent);X&&(z=X)}y.set(H.el,z)}}if(!L.length)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const D=new Map;for(const E of L){E.key=`${E.normalized}||${C(E.el,E.labelText)}`;const P=D.get(E.key);P?P.push(E):D.set(E.key,[E])}const F=[];for(const E of L){const P=w.has(E.normalized),z=D.get(E.key)||[],H=z.length>1,W=E.hiddenParts>0;if(!P&&!H&&!W)continue;const X=P?"PLACEHOLDER_LABEL_TEXT":H?"DUPLICATE_LABEL_TEXT":"PARTIALLY_HIDDEN_LABEL",oe=n.getEligibilityInfo?(()=>{try{return n.getEligibilityInfo(E.el,o,{targetSet:"acc"})}catch{return null}})():null,q={PLACEHOLDER_LABEL_TEXT:`This field's visible label ("${E.labelText}") is a placeholder rather than a description of what the field is for.`,DUPLICATE_LABEL_TEXT:`This field's visible label ("${E.labelText}") is shared with ${z.length-1} other field(s), with no visible heading, legend or row text telling them apart.`,PARTIALLY_HIDDEN_LABEL:`This field's label is split: "${E.labelText}" is what renders, while ${E.hiddenParts} other part(s) of the label are hidden from sight.`},O={PLACEHOLDER_LABEL_TEXT:"Replace the label with one naming the information the field collects.",DUPLICATE_LABEL_TEXT:"Give each field a label of its own, or put the distinguishing context on screen: a visible heading or a fieldset legend above each group.",PARTIALLY_HIDDEN_LABEL:"Confirm the visible part alone identifies the field, or make the rest of the label visible."},B={PLACEHOLDER_LABEL_TEXT:"formControlLabelQuality_summary_cantTell_placeholder",DUPLICATE_LABEL_TEXT:"formControlLabelQuality_summary_cantTell_duplicate",PARTIALLY_HIDDEN_LABEL:"formControlLabelQuality_summary_cantTell_partiallyHidden"},G={PLACEHOLDER_LABEL_TEXT:"formControlLabelQuality_hint_cantTell_placeholder",DUPLICATE_LABEL_TEXT:"formControlLabelQuality_hint_cantTell_duplicate",PARTIALLY_HIDDEN_LABEL:"formControlLabelQuality_hint_cantTell_partiallyHidden"};F.push(n.reportOccurrence(E.el,{summary:q[X],hint:O[X],i18n:{summaryKey:B[X],hintKey:G[X],params:{label:E.labelText,count:String(z.length-1),hiddenCount:String(E.hiddenParts)}},data:{details:{reasonCode:X,label:E.labelText,sharedWith:H?z.length-1:0,hiddenLabelParts:E.hiddenParts},visibilityFilter:oe||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return F.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:F}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"form-control-programmatic-label-present":{run:(function(o){const{helpers:t,rule:n}=o,e=t&&typeof t.isIncludedInAccessibilityTree=="function"?t.isIncludedInAccessibilityTree:t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null,w=t&&typeof t.getEligibilityInfo=="function"?t.getEligibilityInfo:null,u=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo:null,k=t&&typeof t.getLabelMethod=="function"?t.getLabelMethod:null,h=f=>(f==null?"":String(f)).trim(),v=["alertdialog","button","checkbox","combobox","dialog","grid","link","listbox","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","meter","option","progressbar","radio","radiogroup","scrollbar","searchbox","slider","spinbutton","switch","tab","tablist","textbox","toolbar","tooltip","tree","treeitem"],A={applicableCount:0,passCount:0,failCount:0,byMethod:{label:0,"aria-labelledby":0,"aria-label":0,title:0,placeholder:0,none:0},weakPassCount:0};function p(f){return f==="label"||f==="aria-labelledby"?"strong":f==="aria-label"?"medium":f==="title"||f==="placeholder"?"weak":"none"}function m(f){if(!e)return!0;try{const g=e(f,o);return typeof g=="boolean"?g:!!(g&&g.eligible)}catch{return!0}}function s(f){if(!k)return{method:"none",value:""};try{const g=k(f,o),i=g&&typeof g.method=="string"?g.method:"none",a=g&&g.value!=null?h(g.value):"";return Object.prototype.hasOwnProperty.call(A.byMethod,i)?{method:i,value:a}:{method:"none",value:""}}catch{return{method:"none",value:""}}}const c=[];try{const f="input,select,textarea",g=t&&typeof t.queryAllSmart=="function"?t.queryAllSmart(f):t&&typeof t.queryAll=="function"?t.queryAll(f):[];for(const i of g||[]){if(!i||!i.getAttribute)continue;if((i.tagName||"").toLowerCase()==="input"){const r=h(i.getAttribute("type")).toLowerCase();if(r==="hidden"||r==="submit"||r==="reset"||r==="button"||r==="image")continue}c.push(i)}}catch{}if(!c.length)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{metrics:A}}};const d=[];for(let f=0;f<c.length;f++){const g=c[f];if(!g||!g.getAttribute||!m(g))continue;let i;try{i=h(g.getAttribute("role")).toLowerCase()}catch{i=""}if(i&&v.indexOf(i)!==-1)continue;if(i==="presentation"||i==="none"){const _=u?(()=>{try{return u(g,o)}catch{return null}})():null;if(!!!(_&&_.tabbable))continue}A.applicableCount+=1;const a=s(g);Object.prototype.hasOwnProperty.call(A.byMethod,a.method)?A.byMethod[a.method]+=1:A.byMethod.none+=1;const r=p(a.method);if(a.method!=="none"){A.passCount+=1,r==="weak"&&(A.weakPassCount+=1);continue}A.failCount+=1;const y=w?(()=>{try{return w(g,o,{targetSet:"acc"})}catch{return null}})():null,b={summary:"Form control is missing a programmatic label.",hint:"Provide a <label> association, aria-label, aria-labelledby, title, or placeholder.",i18n:{summaryKey:"formControl_programmaticLabelPresent_summary_fail",hintKey:"formControl_programmaticLabelPresent_hint_fail",params:{element:(g.tagName||"").toLowerCase()}},data:{visibilityFilter:y?{targetSet:y.targetSet,accEligible:y.accEligible,reasons:y.reasons}:{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"missing_programmatic_label",labelMethod:"none",labelStrength:"none"}}};t&&typeof t.reportOccurrence=="function"?d.push(t.reportOccurrence(g,b)):d.push({selector:"",html:"",...b})}return A.applicableCount===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{metrics:A}}}:d.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"minor",occurrences:d,data:{details:{metrics:A}}}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[],data:{details:{metrics:A}}}}),applicability:null},"form-control-programmatic-label-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,p=e&&typeof e.getLabelMethod=="function"?e.getLabelMethod:null,m=r=>(r==null?"":String(r)).trim(),s={applicableCount:0,flaggedCount:0,byMethod:{label:0,"aria-labelledby":0,"aria-label":0,title:0,placeholder:0,none:0}};function c(r){try{return k?Array.from(k(r)||[]):u&&u.querySelectorAll?Array.from(u.querySelectorAll(r)):[]}catch{return[]}}function d(r){if(!h)return!0;try{const l=h(r,o);return typeof l=="boolean"?l:!!(l&&l.eligible)}catch{return!0}}function f(r){if(!p)return{method:"none",value:""};try{const l=p(r,o),y=l&&typeof l.method=="string"?l.method:"none",b=l&&l.value!=null?m(l.value):"";return Object.prototype.hasOwnProperty.call(s.byMethod,y)?{method:y,value:b}:{method:"none",value:""}}catch{return{method:"none",value:""}}}const i=c('input:not([type="hidden"]):not([type="submit"]):not([type="reset"]):not([type="button"]):not([type="image"]),select,textarea');if(!i.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{metrics:s}}};const a=[];for(const r of i){if(!r||!r.getAttribute||!d(r))continue;const l=(()=>{try{return m(r.getAttribute("role")).toLowerCase()}catch{return""}})();let y=null;if(A)try{y=A(r,o)}catch{y=null}const b=!!(y&&y.tabbable);if((l==="presentation"||l==="none")&&!b)continue;s.applicableCount+=1;const _=f(r),I=_&&typeof _.method=="string"?_.method:"none";if(Object.prototype.hasOwnProperty.call(s.byMethod,I)?s.byMethod[I]+=1:s.byMethod.none+=1,!(I==="title"||I==="placeholder"))continue;s.flaggedCount+=1;const C=v?v(r,o,{targetSet:"acc"}):null,N=I==="title"?"label_from_title_primary":"label_from_placeholder_primary",L={summary:`Form control’s primary label is derived from ${I}.`,hint:"Prefer a persistent <label> or aria-labelledby. Avoid relying on placeholder/title as the primary label.",i18n:{summaryKey:"formControl_programmaticLabelQuality_summary_cantTell",hintKey:"formControl_programmaticLabelQuality_hint_cantTell",params:{element:(r.tagName||"").toLowerCase(),method:I}},data:{visibilityFilter:C||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:N,labelMethod:I,labelStrength:"weak",recommendedMethods:["label","aria-labelledby"],sourceText:_&&_.value?String(_.value).slice(0,120):""}}};e&&typeof e.reportOccurrence=="function"?a.push(e.reportOccurrence(r,L)):a.push({selector:"",html:"",...L})}return s.applicableCount===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{metrics:s}}}:a.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:a,data:{details:{metrics:s}}}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{metrics:s}}}}),applicability:null},"form-control-single-label":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null,u=n&&typeof n.getAriaNameInfo=="function"?n.getAriaNameInfo:null,k=n&&typeof n.labelContributesAccessibleName=="function"?n.labelContributesAccessibleName:null,h='input:not([type="hidden"]):not([type="submit"]):not([type="reset"]):not([type="button"]):not([type="image"]),select,textarea',v=n.queryAllSmart?n.queryAllSmart(h):n.queryAll(h),A=new Map,p=t.getElementsByTagName?t.getElementsByTagName("label"):[];for(const f of p){if(!f||!f.getAttribute)continue;const g=String(f.getAttribute("for")||"").trim();g&&(A.has(g)||A.set(g,[]),A.get(g).push(f))}const m=[],s=[];let c=0;for(const f of v){if(!f||!f.getAttribute)continue;c+=1;const g=new Set,i=f.closest?f.closest("label"):null;i&&g.add(i);const a=String(f.getAttribute("id")||"").trim();if(a&&A.has(a))for(const _ of A.get(a))g.add(_);const r=w?new Set([...g].filter(_=>{const I=w(_);return!I||I.eligible!==!1})):g;if(r.size<=1)continue;const l=u?u(f,o):null;if(l&&l.present&&l.value)continue;const y=k?[...r].filter(_=>k(_)):[...r],b=f.tagName.toLowerCase();y.length>=2?m.push(n.reportOccurrence(f,{summary:"This form control is associated with more than one <label>.",hint:"Keep only one <label> per form control (either wrapping it or referencing it via for/id).",occurrenceOutcome:"fail",i18n:{summaryKey:"formControlSingleLabel_summary_fail",hintKey:"formControlSingleLabel_hint_fail",params:{element:b,labelCount:String(y.length)}},data:{details:{reasonCode:"FORM_FIELD_MULTIPLE_LABELS",element:b,labelCount:y.length}}})):y.length===1&&s.push(n.reportOccurrence(f,{summary:"This form control has one labelling <label> plus an extra empty <label> association.",hint:"Remove the redundant empty <label> so exactly one <label> is associated with the control.",occurrenceOutcome:"cantTell",i18n:{summaryKey:"formControlSingleLabel_summary_cantTell",hintKey:"formControlSingleLabel_hint_cantTell",params:{element:b,labelCount:String(r.size)}},uncertainty:{code:"spec-only",needed:"Whether the empty label is filled in at runtime or is simply redundant.",evidence:{element:b,labelCount:r.size,contributingLabelCount:y.length}},data:{details:{reasonCode:"FORM_FIELD_EXTRA_EMPTY_LABEL",element:b,labelCount:r.size,contributingLabelCount:y.length}}}))}if(c===0)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const d=n.resolveTieredOutcome?n.resolveTieredOutcome(m,s,e.defaultSeverity||"moderate"):m.length?{outcome:"fail",severity:e.defaultSeverity||"moderate",occurrences:m}:s.length?{outcome:"cantTell",severity:e.defaultSeverity||"moderate",occurrences:s}:{outcome:"pass",severity:"minor",occurrences:[]};return{ruleId:e.ruleId,...d}}),applicability:null},"heading-order":{run:(function(o){const{helpers:t,rule:n}=o;function e(m){return String(m||"").replace(/\s+/g," ").trim()}function w(m){const s=e(m.getAttribute&&m.getAttribute("role"));return s?s.split(/\s+/)[0].toLowerCase():""}function u(m){const s=w(m);if(s){if(s!=="heading")return 0;const f=e(m.getAttribute&&m.getAttribute("aria-level")),g=parseInt(f,10);return Number.isFinite(g)&&g>=1?g:2}const c=m.tagName?m.tagName.toLowerCase():"",d=/^h([1-6])$/.exec(c);return d?parseInt(d[1],10):0}const k=t.queryAllSmart?t.queryAllSmart("h1, h2, h3, h4, h5, h6, [role]"):t.queryAll("h1, h2, h3, h4, h5, h6, [role]"),h=[],v=new Set;for(const m of k){if(!m||v.has(m))continue;if(v.add(m),t.isAccTreeEligible){const c=(()=>{try{return t.isAccTreeEligible(m,o)}catch{return{eligible:!0,reasons:[]}}})();if(c&&c.eligible===!1)continue}const s=u(m);s>0&&h.push({el:m,level:s})}if(h.length<2)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const A=[];let p=h[0].level;for(let m=1;m<h.length;m+=1){const{el:s,level:c}=h[m];c>p+1&&A.push(t.reportOccurrence(s,{summary:`This heading jumps from level ${p} to level ${c}, skipping a level.`,hint:"Use consecutive heading levels (do not skip a level when going deeper) so the document outline stays predictable.",i18n:{summaryKey:"headingOrder_summary_cantTell",hintKey:"headingOrder_hint_cantTell",params:{fromLevel:String(p),toLevel:String(c)}},data:{details:{reasonCode:"HEADING_ORDER_SKIPPED_LEVEL",fromLevel:p,toLevel:c}}})),c>p&&(p=c)}return A.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:A}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"heading-quality":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=new Set(["heading","header","headline","subheading","sub heading","sub-heading","title","subtitle","sub title","untitled","section","new section","chapter","content","main content","text","sample text","placeholder","placeholder text","lorem ipsum","insert title here","your title here","add a title","tbd","to be defined","todo","to do","n/a","test","example","default"]),u=/^(heading|header|headline|subheading|title|subtitle|section|chapter|part|step)\s*[-#:.]?\s*\d+$/,k=/^[\w\s\-.,()[\]]+\.(png|jpe?g|gif|svg|webp|avif|bmp|ico|tiff?|pdf|docx?|xlsx?|pptx?|html?|txt|csv|zip)$/,h=/^(https?:\/\/|www\.)\S+$/;function v(_){return String(_||"").replace(/\s+/g," ").trim()}function A(_){return v(_).toLowerCase().replace(/[.,;:!?]+$/g,"").trim()}function p(_){const I=v(_.getAttribute&&_.getAttribute("role"));return I?I.split(/\s+/)[0].toLowerCase():""}const m=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];function s(_){for(const I of m)if(_.getAttribute&&_.getAttribute(I)!=null)return!0;return!1}function c(_){const I=_.tagName?_.tagName.toLowerCase():"",x=/^h[1-6]$/.test(I),C=p(_);return C?C==="heading"?!0:(C==="none"||C==="presentation")&&x?s(_):!1:x}function d(_){const I=v(_.getAttribute&&_.getAttribute("aria-label"));if(I)return I;const x=v(_.getAttribute&&_.getAttribute("aria-labelledby"));if(x){const C=[];for(const L of x.split(/\s+/).filter(Boolean))try{const D=t.getElementById(L);if(D){const F=v(D.textContent);F&&C.push(F)}}catch{}const N=v(C.join(" "));if(N)return N}if(n&&typeof n.getContentNameInfo=="function")try{const C=n.getContentNameInfo(_,o);if(C&&C.present&&C.value)return v(C.value)}catch{}return v(_.getAttribute&&_.getAttribute("title"))}const f=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function g(_){if(!f)return!0;try{const I=f(_,o);return typeof I=="boolean"?I:!!(I&&I.eligible)}catch{return!0}}function i(_){return w.has(_)||u.test(_)?"PLACEHOLDER_HEADING_TEXT":h.test(_)?"URL_LIKE_HEADING":k.test(_)?"FILENAME_LIKE_HEADING":""}const a={PLACEHOLDER_HEADING_TEXT:"headingQuality_summary_cantTell_placeholder",FILENAME_LIKE_HEADING:"headingQuality_summary_cantTell_filename",URL_LIKE_HEADING:"headingQuality_summary_cantTell_url"},r="h1, h2, h3, h4, h5, h6, [role]",l=n.queryAllSmart?n.queryAllSmart(r):n.queryAll(r),y=[];let b=0;for(const _ of l){if(!_||!_.getAttribute||!c(_)||!g(_))continue;const I=d(_),x=A(I);if(!x)continue;b+=1;const C=i(x);if(!C)continue;const N=n.getEligibilityInfo?(()=>{try{return n.getEligibilityInfo(_,o,{targetSet:"acc"})}catch{return null}})():null,L=v(I),D={PLACEHOLDER_HEADING_TEXT:`This heading's accessible name ("${L}") is a placeholder rather than a description of the content it introduces.`,FILENAME_LIKE_HEADING:`This heading's accessible name ("${L}") is a filename rather than a description of the content it introduces.`,URL_LIKE_HEADING:`This heading's accessible name ("${L}") is a URL rather than a description of the content it introduces.`};y.push(n.reportOccurrence(_,{summary:D[C],hint:"Rewrite the heading so it names the topic or purpose of the content that follows it.",i18n:{summaryKey:a[C],hintKey:"headingQuality_hint_cantTell",params:{name:L}},data:{details:{reasonCode:C,name:L,normalizedName:x},visibilityFilter:N||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return b===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:y.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:y}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"html-lang-attr-present":{run:(function(o){const{document:t,rule:n,helpers:e}=o,w=t&&t.documentElement,u=w&&w.tagName?String(w.tagName).toLowerCase():"";if(!w||u!=="html")return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const k={targetSet:"acc",accEligible:!0,reasons:[]};function h(m,s,c,d){const f={summary:"",hint:"",i18n:{summaryKey:m,hintKey:s,params:c&&typeof c=="object"?c:{}},data:{visibilityFilter:k,details:d&&typeof d=="object"?d:{}}};return e&&typeof e.reportOccurrence=="function"?[e.reportOccurrence(w,f)]:[{selector:"",html:"",...f}]}const v=w.getAttribute("lang"),A=(v||"").trim();return v===null?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity,occurrences:h("html_lang_attr_missing_absent","html_lang_attr_hint_missing_absent",{},{reasonCode:"lang-missing",location:"html"})}:A.length===0?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity,occurrences:h("html_lang_attr_missing_empty","html_lang_attr_hint_missing_empty",{},{reasonCode:"lang-empty",location:"html"})}:(e&&typeof e.isValidLanguageTag=="function"?e.isValidLanguageTag:m=>/^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/.test(String(m||"")))(A)?{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}:{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity,occurrences:h("html_lang_attr_invalid","html_lang_attr_hint_invalid",{lang:A},{reasonCode:"lang-invalid-bcp47",lang:A})}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"html-xml-lang-mismatch":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.documentElement,u=w&&w.tagName?String(w.tagName).toLowerCase():"";if(!w||u!=="html")return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const k=String(w.getAttribute("lang")||"").trim(),h=String(w.getAttribute("xml:lang")||"").trim();if(!k||!h)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const v=p=>p.split("-")[0].toLowerCase();if(v(k)===v(h))return{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]};const A=[n.reportOccurrence(w,{summary:`The lang ("${k}") and xml:lang ("${h}") attributes declare different languages.`,hint:"Make lang and xml:lang declare the same primary language, or remove the deprecated xml:lang attribute.",i18n:{summaryKey:"htmlXmlLangMismatch_summary_fail",hintKey:"htmlXmlLangMismatch_hint_fail",params:{lang:k,xmlLang:h}},data:{details:{reasonCode:"HTML_XML_LANG_MISMATCH",lang:k,xmlLang:h}}})];return{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"serious",occurrences:A}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"identical-iframes-same-purpose":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("iframe, frame"):t.queryAll("iframe, frame");function w(m){if(!t.getAccessibleNameInfo)return"";let s;try{s=t.getAccessibleNameInfo(m,o,{maxRefs:8})}catch{return""}return!s||!s.present||!s.value?"":String(s.value).replace(/\s+/g," ").trim()}function u(m){try{let s=m,c=0;for(;s&&s.nodeType===1&&c++<100;){const d=s.parentNode;if(!d||d.nodeType!==1)return!1;if(d.shadowRoot&&s.assignedSlot==null)return!0;s=d}return!1}catch{return!1}}function k(m){if(u(m))return!1;if(!t.isIncludedInAccessibilityTree)return!0;try{return!!t.isIncludedInAccessibilityTree(m)}catch{return!1}}function h(m){let s;try{s=m.getAttribute("src")}catch{return null}if(s==null||!String(s).trim())return null;const c=o&&o.document||(m.ownerDocument?m.ownerDocument:null),d=c&&c.baseURI?c.baseURI:void 0;try{const f=new URL(String(s).trim(),d);let g=f.pathname;return g.length>1&&g.charAt(g.length-1)==="/"&&(g=g.slice(0,-1)),f.protocol+"//"+f.host+g+f.search}catch{return null}}const v=new Map;for(const m of e){if(!m||!m.tagName||!k(m))continue;const s=w(m);if(!s)continue;const c=v.get(s);c?c.push(m):v.set(s,[m])}const A=[];for(const[m,s]of v)s.length>=2&&A.push([m,s]);if(!A.length)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const p=[];for(const[m,s]of A){const c=s.map(h),d=c.filter(i=>i!=null);if(!(d.length===c.length&&d.every(i=>i===d[0])))for(let i=0;i<s.length;i++){const a=s[i],r=a.tagName.toLowerCase();p.push(t.reportOccurrence(a,{summary:"This frame shares its accessible name with another frame that embeds a different resource.",hint:"Give each frame a name describing the resource it embeds, or point them at the same resource.",i18n:{summaryKey:"identicalIframesSamePurpose_summary_cantTell",hintKey:"identicalIframesSamePurpose_hint_cantTell",params:{element:r,name:m}},uncertainty:c[i]==null?{code:"not-computable",needed:"A resolvable src for this frame.",evidence:{element:r,name:m,setSize:s.length}}:{code:"equivalence-unknown",needed:"Whether the two resources serve the same purpose despite differing.",evidence:{element:r,name:m,resource:c[i],otherResources:d.filter(l=>l!==c[i]),setSize:s.length}},data:{details:{reasonCode:c[i]==null?"IFRAME_RESOURCE_UNRESOLVED":"IFRAME_RESOURCE_DIFFERS",element:r,name:m,resource:c[i],setSize:s.length}}}))}}return p.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:p}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"identical-links-same-purpose":{run:(function(o){const{helpers:t,rule:n}=o;function e(p){return(p==null?"":String(p)).replace(/\s+/g," ").trim().toLowerCase()}const w=/(?:window\s*\.\s*)?location(?:\s*\.\s*href)?\s*=\s*['"]([^'"]+)['"]|(?:window\s*\.\s*)?location\s*\.\s*(?:assign|replace)\s*\(\s*['"]([^'"]+)['"]/;function u(p){try{const m=p.getAttribute("onclick")||"";if(!m)return"";const s=m.match(w),c=s?s[1]||s[2]:"";if(!c)return"";try{return new URL(c,p.ownerDocument.baseURI).href}catch{return c}}catch{return""}}const k=t.queryAllSmart?t.queryAllSmart('a[href], [role="link"]'):t.queryAll('a[href], [role="link"]'),h=new Map;let v=0;for(const p of k){if(!p||!p.getAttribute)continue;const m=t.isAccTreeEligible?t.isAccTreeEligible(p,o):!0;if(!(typeof m=="boolean"?m:!!(m&&m.eligible)))continue;const c=t.getAccessibleNameInfo?t.getAccessibleNameInfo(p,o):null;let d=c&&typeof c.value=="string"&&c.value.trim()?c.value:"";if(!d){const i=t.getContentNameInfo?t.getContentNameInfo(p,o):null;d=i&&typeof i.value=="string"&&i.value.trim()?i.value:p.textContent||""}const f=e(d);if(!f)continue;let g;try{if(g=typeof p.href=="string"?p.href:"",!g){const i=p.getAttribute("href")||p.getAttribute("xlink:href")||"";if(i)try{g=new URL(i,p.ownerDocument.baseURI).href}catch{g=i}}}catch{g=""}g||(g=u(p)),g&&(v+=1,h.has(f)||h.set(f,[]),h.get(f).push({el:p,href:g}))}const A=[];for(const[p,m]of h){const s=new Set(m.map(c=>c.href));if(!(s.size<=1))for(const{el:c,href:d}of m){const f=t.buildSelector?t.buildSelector(c):"html",g=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(c):c.outerHTML||"",i={selector:f,html:g,summary:"This link shares an accessible name with other links on the page that lead to a different destination.",hint:"Ensure links with the same text serve the same purpose, or make the link text distinct enough to describe each destination.",i18n:{summaryKey:"identicalLinksSamePurpose_summary_cantTell",hintKey:"identicalLinksSamePurpose_hint_cantTell",params:{name:p,destinationCount:String(s.size)}},data:{details:{reasonCode:"SAME_NAME_DIFFERENT_DESTINATION",name:p,href:d,distinctDestinationCount:s.size}}};t&&typeof t.reportOccurrence=="function"?A.push(t.reportOccurrence(c,i)):A.push(i)}}return v===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:A.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:A}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"iframe-focusable-content":{run:(function(o){const{helpers:t,rule:n,document:e}=o;function w(a,r){try{const l=a.defaultView;if(!l||typeof l.getComputedStyle!="function")return!0;let y=r;for(;y&&y.nodeType===1;){if(y.hasAttribute&&y.hasAttribute("hidden"))return!1;const b=l.getComputedStyle(y);if(b&&(b.display==="none"||b.visibility==="hidden"||b.visibility==="collapse"))return!1;y=y.parentElement}return!0}catch{return!0}}function u(a){let r=a&&a.activeElement?a.activeElement:null,l=0;for(;r&&r.shadowRoot&&r.shadowRoot.activeElement&&l++<20;)r=r.shadowRoot.activeElement;return r}function k(a){if(!a||typeof a.focus!="function")return!1;try{return a.focus({preventScroll:!0}),!0}catch{try{return a.focus(),!0}catch{return!1}}}function h(a,r){if(!a||typeof r!="function")return;const l=typeof a.setTimeout=="function"?a.setTimeout.bind(a):null,y=typeof a.requestAnimationFrame=="function"?a.requestAnimationFrame.bind(a):null,b=typeof a.queueMicrotask=="function"?a.queueMicrotask.bind(a):null,_=[],I=[],x=[];let C=1;const N=function(F,E){const P=Number.isFinite(Number(E))?Number(E):0;if(typeof F=="function"&&P<=200){const z=[];for(let H=2;H<arguments.length;H++)z.push(arguments[H]);return x.push({delay:P,cb:()=>F.apply(a,z)}),C++}return l?l.apply(a,arguments):C++},L=function(F){return typeof F=="function"?(I.push(F),C++):y?y.apply(a,arguments):C++},D=function(F){typeof F=="function"&&_.push(F)};try{l&&(a.setTimeout=N),y&&(a.requestAnimationFrame=L),b&&(a.queueMicrotask=D),r();let F=0;for(;(_.length||I.length||x.length)&&F++<100;){for(;_.length;){const E=_.shift();try{E()}catch{}}for(;I.length;){const E=I.shift();try{E(16)}catch{}}if(x.length){x.sort((P,z)=>P.delay-z.delay);const E=x.shift();try{E.cb()}catch{}}}}finally{l&&(a.setTimeout=l),y&&(a.requestAnimationFrame=y),b&&(a.queueMicrotask=b)}}function v(a){if(!a||!a.querySelectorAll)return[];let r;try{r=a.querySelectorAll('a[href], area[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), iframe, [contenteditable="true"], [tabindex]')}catch{return[]}const l=[];for(const y of r){if(!y||!y.getAttribute)continue;const b=y.getAttribute("tabindex");if(b!=null){const _=Number(String(b).trim());if(!Number.isNaN(_)&&_<0)continue}w(a,y)&&l.push(y)}return l}function A(a,r,l){if(!a||!r||!l)return null;const y=r.defaultView;if(!y)return null;let b=!1;const _=()=>{b=!0};try{l.addEventListener("focus",_,!0)}catch{}const I=[],x=[],C=q=>{q&&q.target&&I.push(q.target)},N=q=>{q&&q.target&&x.push(q.target)};try{r.addEventListener("focusin",C,!0),e.addEventListener("focusin",N,!0)}catch{}const L=u(r),D=u(e);let F=!1;h(y,()=>{F=k(l)});try{r.removeEventListener("focusin",C,!0),e.removeEventListener("focusin",N,!0)}catch{}try{l.removeEventListener("focus",_,!0)}catch{}if(!F)return null;const E=u(r),P=u(e),z=I.some(q=>q&&q!==l),H=x.some(q=>q&&q!==a&&q!==l),W=!!(E&&E!==l)||z,X=!!(P&&P!==a)||H,oe=b||I.some(q=>q===l);return L&&L!==E&&k(L),D&&D!==P&&k(D),!oe||!W&&!X?null:{redirected:!0,redirectedWithinFrame:W,redirectedOutOfFrame:X}}function p(a){const r=a.getAttribute("tabindex");if(r==null)return!1;const l=Number(String(r).trim());return!Number.isNaN(l)&&l<0}function m(a){try{const r=a.getAttribute("srcdoc");if(r==null)return null;const l=a.ownerDocument&&a.ownerDocument.defaultView,y=l&&l.DOMParser;return y?new y().parseFromString(r,"text/html"):null}catch{return null}}function s(a){try{const r=a.getAttribute("width"),l=a.getAttribute("height");if(r==null||l==null)return!1;const y=Number(String(r).trim()),b=Number(String(l).trim());return Number.isFinite(y)&&Number.isFinite(b)&&y<=2&&b<=2}catch{return!1}}const c=t.queryAllSmart?t.queryAllSmart("iframe, frame"):t.queryAll("iframe, frame"),d=[],f=[];let g=0;for(const a of c){if(!a||!a.getAttribute||!p(a))continue;let r;try{r=a.contentDocument||null}catch{r=null}if((!r||!r.body||!r.body.hasChildNodes())&&a.getAttribute("srcdoc")!=null){const x=m(a);x&&(r=x)}if(!r||!r.querySelectorAll)continue;g+=1;const y=v(r);if(!y.length||s(a))continue;const b=a.tagName.toLowerCase(),I=y.length===1?A(a,r,y[0]):null;if(I&&I.redirected){f.push(t.reportOccurrence(a,{summary:'This frame has tabindex="-1" and a focusable candidate, but focus moves immediately to another target. Verify keyboard reachability in a real browser.',hint:"If this is an intentional focus handoff, ensure keyboard users cannot remain on hidden/intermediate frame content.",i18n:null,uncertainty:{code:"runtime-dependent",needed:"Whether a keyboard user can reach this frame’s content in a real browser.",evidence:{element:b,focusRedirected:!0}},data:{details:{reasonCode:"IFRAME_TABINDEX_NEGATIVE_CONTENT_RUNTIME_REDIRECT",element:b,runtimeProbe:I}}}));continue}d.push(t.reportOccurrence(a,{summary:'This frame has tabindex="-1" but its content contains focusable elements, which remain reachable by keyboard.',hint:'Remove focusable content from the frame, or remove tabindex="-1" if the frame is meant to be reachable.',i18n:{summaryKey:"iframeFocusableContent_summary_fail",hintKey:"iframeFocusableContent_hint_fail",params:{element:b}},data:{details:{reasonCode:"IFRAME_TABINDEX_NEGATIVE_CONTENT_FOCUSABLE",element:b}}}))}if(g===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=t.resolveTieredOutcome(d,f,n.defaultSeverity||"moderate");return{ruleId:n.ruleId,...i}}),applicability:null},"iframe-name-present":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("iframe, frame"):t.queryAll("iframe, frame"),w=[];let u=0;function k(h){try{const v=h.getAttribute?h.getAttribute("tabindex"):null;if(v==null)return!0;const A=Number(String(v).trim());return!(Number.isFinite(A)&&A<0)}catch{return!0}}for(const h of e){if(!h||!h.tagName||!k(h))continue;if(t.isAccTreeEligible){const m=t.isAccTreeEligible(h);if(!(typeof m=="boolean"?m:!!(m&&m.eligible)))continue}u+=1;const v=t.getAccessibleNameInfo?t.getAccessibleNameInfo(h,o,{maxRefs:8}):null;if(v&&v.present&&v.value)continue;const A=t.getEligibilityInfo?(()=>{try{return t.getEligibilityInfo(h,o,{targetSet:"acc"})}catch{return null}})():null,p=h.tagName.toLowerCase();w.push(t.reportOccurrence(h,{summary:"This frame has no accessible name.",hint:"Add a title attribute (or aria-label/aria-labelledby) describing the frame’s content or purpose.",i18n:{summaryKey:"iframeNamePresent_summary_fail",hintKey:"iframeNamePresent_hint_fail",params:{element:p}},data:{details:{reasonCode:"IFRAME_NAME_MISSING",element:p},visibilityFilter:A||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"iframe-title-unique":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("iframe, frame"):t.queryAll("iframe, frame"),w=new Map;let u=0;for(const h of e){if(!h||!h.getAttribute)continue;const v=String(h.getAttribute("title")||"").trim();if(!v)continue;u+=1;const A=w.get(v);A?A.push(h):w.set(v,[h])}if(u===0)return{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const k=[];for(const[h,v]of w)if(!(v.length<2))for(const A of v){const p=A.tagName.toLowerCase();k.push(t.reportOccurrence(A,{summary:"This frame’s title is not unique among the frames on this page.",hint:"Give each frame a distinct title describing its specific content or purpose.",i18n:{summaryKey:"iframeTitleUnique_summary_fail",hintKey:"iframeTitleUnique_hint_fail",params:{element:p,title:h}},data:{details:{reasonCode:"IFRAME_TITLE_DUPLICATE",element:p,title:h,duplicateCount:v.length}}}))}return k.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:k}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"image-redundant-alt":{run:(function(o){const{helpers:t,rule:n}=o;function e(v){return String(v||"").replace(/\s+/g," ").trim()}function w(v,A){const p=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;let m="";for(const s of v.childNodes||[])if(s!==A){if(s.nodeType===3)m+=" "+(s.nodeValue||"");else if(s.nodeType===1&&s!==A){if(p){const c=(()=>{try{return p(s,o)}catch{return{eligible:!0,reasons:[]}}})();if(c&&c.eligible===!1)continue}m+=" "+(s.textContent||"")}}return e(m)}const u=t.queryAllSmart?t.queryAllSmart("img[alt]"):t.queryAll("img[alt]"),k=[];let h=0;for(const v of u){if(!v||!v.getAttribute)continue;const A=e(v.getAttribute("alt"));if(!A)continue;const p=v.parentElement;if(!p)continue;const m=w(p,v);m&&(h+=1,m.toLowerCase()===A.toLowerCase()&&k.push(t.reportOccurrence(v,{summary:"This image's alt text duplicates other visible text right next to it.",hint:'Make the alt text empty (alt="") if the image is purely decorative alongside the text, or remove the redundant duplication.',i18n:{summaryKey:"imageRedundantAlt_summary_cantTell",hintKey:"imageRedundantAlt_hint_cantTell",params:{alt:A}},data:{details:{reasonCode:"IMAGE_ALT_REDUNDANT",alt:A}}})))}return h===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:k.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:k}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"img-alt-decorative":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:F=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(F)):[]}catch{return[]}},v=e&&typeof e.isIncludedInAccessibilityTree=="function"?e.isIncludedInAccessibilityTree:e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,A=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,p=e&&typeof e.getAccessibleNameInfo=="function"?e.getAccessibleNameInfo:null,m=e&&e.aria?e.aria:null;function s(F){try{return(F==null?"":String(F)).trim()}catch{return""}}function c(F){if(m&&typeof m.getExplicitRole=="function")try{return m.getExplicitRole(F)||""}catch{return""}try{const E=s(F.getAttribute("role"));return E?E.split(/\s+/)[0].toLowerCase():""}catch{return""}}function d(F){if(A)try{const E=A(F,o);return!!(E&&E.focusable)}catch{return!1}try{const E=F.getAttribute("tabindex");return E!=null&&String(E).trim()!==""&&!Number.isNaN(Number(String(E).trim()))}catch{return!1}}function f(F){return F?e&&e.isDomVisibleEligible?!!e.isDomVisibleEligible(F,o,{targetSet:"dom"}).eligible:e&&e.getEligibilityInfo?!!e.getEligibilityInfo(F,o,{targetSet:"dom"}).eligible:!0:!1}function g(F){if(!e||typeof e.getVisibilityHintsInfo!="function")return!1;try{const E=e.getVisibilityHintsInfo(F,o,{});return!!(E&&Array.isArray(E.hints)&&E.hints.indexOf("offscreen")!==-1)}catch{return!1}}function i(F){try{return F.getAttribute("aria-label")!=null||F.getAttribute("aria-labelledby")!=null}catch{return!1}}function a(F){try{const E=F.firstElementChild,P=E?(E.localName||E.tagName||"").toLowerCase():"";if(P==="title"||P==="desc")return!!s(E.textContent)}catch{}return!1}function r(F){if(!v)return!1;try{const E=v(F,o);return typeof E=="boolean"?!E:!(E&&E.eligible!==!1)}catch{return!1}}function l(F,E){const P=c(F);let z=P==="presentation"||P==="none";if(!z&&E==="img"){const H=F.getAttribute("alt");z=H!=null&&s(H)===""}return z?!d(F):!1}function y(F){const E=c(F);return!(E&&E!=="graphics-document"||i(F)||a(F)||d(F))}function b(F){return!(c(F)||i(F))}const _=new Set(["aria-label","aria-labelledby","title","label"]);function I(F){if(!p)return!1;const E=e&&typeof e.composedParent=="function"?e.composedParent:H=>H&&H.parentElement?H.parentElement:null;let P=E(F),z=0;for(;P&&z++<200;){if(P.nodeType===1)try{const H=p(P,o,{maxRefs:8});if(H&&H.present&&s(H.value)&&_.has(H.mechanism))return!0}catch{}P=E(P)}return!1}const x=(()=>{const F="img, canvas, svg";try{return Array.from((k?k(F):h(F))||[])}catch{return h(F)}})(),C=[],N=new Set;for(const F of x)N.has(F)||(N.add(F),C.push(F));if(!C.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const L=[];let D=0;for(const F of C){if(!F||!F.tagName)continue;const E=F.tagName.toLowerCase();if(!f(F)||g(F))continue;let P=r(F);if(P||(P=l(F,E)),!P&&E==="svg"&&(P=y(F)),!P&&E==="canvas"&&(P=b(F)),!P||I(F))continue;D+=1;const z={summary:`Review whether this <${E}> is decorative.`,hint:"Confirm the element is purely decorative. If it conveys information or function, give it a real text alternative (or an accessible name) instead of excluding it.",i18n:{summaryKey:"img_altDecorative_summary_cantTell",hintKey:"img_altDecorative_hint_cantTell",params:{element:E}},data:{visibilityFilter:{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"EXCLUDED_ELEMENT_REVIEW",element:E}}};e&&typeof e.reportOccurrence=="function"?L.push(e.reportOccurrence(F,z)):L.push({selector:"",html:"",...z})}return D===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:L}}),applicability:null},"img-alt-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,v=e&&typeof e.isIncludedInAccessibilityTree=="function"?e.isIncludedInAccessibilityTree:e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,A=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,p=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null;function m(){try{if(k){const i=k("img");return Array.isArray(i)?i:Array.from(i||[])}}catch{}try{if(u&&typeof u.getElementsByTagName=="function")return u.getElementsByTagName("img")}catch{}try{if(u&&typeof u.querySelectorAll=="function")return u.querySelectorAll("img")}catch{}return[]}const s=m(),c=s&&typeof s.length=="number"?s.length:0;if(!c)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const d=[];let f=0;const g=i=>(i==null?"":String(i)).trim();for(let i=0;i<c;i++){const a=s[i];if(!a||!a.getAttribute)continue;if(v){let C;try{C=v(a,o)}catch{C=null}if(C&&C.eligible===!1||typeof C=="boolean"&&C===!1)continue}let r;try{r=g(a.getAttribute("role")).toLowerCase()}catch{r=""}if(r==="presentation"||r==="none"){let C;try{const N=A(a,o);C=!!(N&&(N.focusable||N.tabbable))}catch{C=!1}if(!C)continue}f+=1;let l;try{l=a.getAttribute("alt")}catch{l=null}const y=l!==null&&l!==""&&g(l)==="";if(l!==null&&!y)continue;if(p){let C;try{C=p(a,o)}catch{C=null}if(C&&C.present)continue}if(g(a.getAttribute("title")))continue;const I=h?(()=>{try{return h(a,o,{targetSet:"acc"})}catch{return null}})():null,x={summary:"Missing alt attribute on <img>.",hint:'Add an alt attribute (use alt="" only for decorative images).',i18n:{summaryKey:"img_altPresent_summary_fail",hintKey:"img_altPresent_hint_fail",params:{}},data:{visibilityFilter:I||{targetSet:"acc",accEligible:null,reasons:[]}}};d.push(e.reportOccurrence(a,x))}return f===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:d.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:d}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"img-alt-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=50,h=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,v=e&&typeof e.queryAll=="function"?e.queryAll:r=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(r)):[]}catch{return[]}},A=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,p=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,m=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function s(r){const l=(()=>{try{return String(r.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(l!=="presentation"&&l!=="none")return!1;let y;if(m){const b=(()=>{try{return m(r,o)}catch{return null}})();y=!!(b&&b.focusable)}else{const b=r.getAttribute("tabindex");y=b!=null&&String(b).trim()!==""&&!Number.isNaN(Number(String(b).trim()))}return!y}const c='img[alt]:not([alt=""])',d=(()=>{try{return Array.from((h?h(c):v(c))||[])}catch{return v(c)}})();if(!d.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{applicableCount:0,reportedCount:0,maxOccurrences:k,truncated:!1}}};const f=[];let g=0,i=0;for(const r of d){if(!r||!r.getAttribute)continue;if(p){const _=(()=>{try{return p(r,o)}catch{return{eligible:!0,reasons:[]}}})();if(_&&_.eligible===!1)continue}if(s(r)||!(()=>{try{return String(r.getAttribute("alt")||"").trim()}catch{return""}})()||(g+=1,i>=k))continue;const y=A?A(r,o,{targetSet:"acc"}):null,b={summary:"Review alt text on <img> for accuracy and appropriateness.",hint:"Ensure the alt text conveys the image’s purpose/information in context (not redundant, not filename-like).",i18n:{summaryKey:"img_altQuality_summary_cantTell",hintKey:"img_altQuality_hint_cantTell",params:{element:"img"}},data:{visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]},details:null}};e&&typeof e.reportOccurrence=="function"?f.push(e.reportOccurrence(r,b)):f.push({selector:"",html:"",...b}),i+=1}if(g===0)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[],data:{details:{applicableCount:0,reportedCount:0,maxOccurrences:k,truncated:!1}}};const a=g>i;return{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:f,data:{details:{applicableCount:g,reportedCount:i,maxOccurrences:k,truncated:a}}}}),applicability:null},"input-image-alt-decorative":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:i=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(i)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null,m=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function s(i){const a=(()=>{try{return String(i.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(a!=="presentation"&&a!=="none")return!1;let r;if(m){const l=(()=>{try{return m(i,o)}catch{return null}})();r=!!(l&&l.focusable)}else{const l=i.getAttribute("tabindex");r=l!=null&&String(l).trim()!==""&&!Number.isNaN(Number(String(l).trim()))}return!r}function c(i){if(p)try{const a=p(i,o);if(a&&a.present&&String(a.value||"").trim())return!0}catch{}try{const a=i.getAttribute("title");return a!=null&&String(a).trim()!==""}catch{return!1}}const d=(()=>{try{return Array.from((k?k('input[type="image"]'):h('input[type="image"]'))||[])}catch{return h('input[type="image"]')}})();if(!d.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const f=[];let g=0;for(const i of d){if(!i||!i.getAttribute)continue;if(A){const l=(()=>{try{return A(i,o)}catch{return{eligible:!0,reasons:[]}}})();if(l&&l.eligible===!1)continue}if(s(i)||!(i.getAttribute("alt")!=null&&String(i.getAttribute("alt")).trim()==="")||!c(i))continue;g+=1;const a=v?v(i,o,{targetSet:"acc"}):null,r={summary:'Review <input type="image"> with alt="".',hint:"This control is typically functional. Confirm it has an equivalent accessible name elsewhere, or provide meaningful alt text.",i18n:{summaryKey:"inputImage_altDecorative_summary_cantTell",hintKey:"inputImage_altDecorative_hint_cantTell",params:{element:"input[type=image]"}},data:{visibilityFilter:a||{targetSet:"acc",accEligible:null,reasons:[]},details:null}};e&&typeof e.reportOccurrence=="function"?f.push(e.reportOccurrence(i,r)):f.push({selector:"",html:"",...r})}return g===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:f}}),applicability:null},"input-image-alt-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:d=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(d)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isIncludedInAccessibilityTree=="function"?e.isIncludedInAccessibilityTree:e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null,m=(()=>{try{return Array.from((k?k('input[type="image"]'):h('input[type="image"]'))||[])}catch{return h('input[type="image"]')}})();if(!m.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const s=[];let c=0;for(const d of m){if(!d||!d.getAttribute)continue;if(A){const r=(()=>{try{return A(d,o)}catch{return!0}})();if(!(typeof r=="boolean"?r:!(r&&r.eligible===!1)))continue}c+=1;const f=(()=>{let r="";if(p)try{const l=p(d,o);l&&l.present&&l.value&&(r=String(l.value))}catch{r=""}if(!r){const l=d.getAttribute("alt");l!=null&&String(l).trim()&&(r=String(l))}if(!r){const l=d.getAttribute("title");l!=null&&String(l).trim()&&(r=String(l))}return r.trim().toLowerCase()})();if(f==="submit query"||f==="submit"){const r=v?v(d,o,{targetSet:"acc"}):null,l={summary:"Accessible name is the browser default for an image button, which conveys nothing.",hint:'Replace it with text describing what the button does, for example "Search".',i18n:{summaryKey:"inputImage_altPresent_summary_defaultName",hintKey:"inputImage_altPresent_hint_defaultName",params:{element:"input[type=image]"}},data:{visibilityFilter:r||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"default_name"}}};s.push(e&&typeof e.reportOccurrence=="function"?e.reportOccurrence(d,l):{selector:"",html:"",...l});continue}if(f)continue;const g=d.getAttribute("alt")!==null,i=v?v(d,o,{targetSet:"acc"}):null,a=g?{summary:'Empty alt="" on <input type="image"> leaves the control unnamed.',hint:"Describe the action in alt, or name the control with aria-label or aria-labelledby.",i18n:{summaryKey:"inputImage_altPresent_summary_emptyAlt",hintKey:"inputImage_altPresent_hint_emptyAlt",params:{element:"input[type=image]"}},data:{visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"empty_alt"}}}:{summary:'Missing alt attribute on <input type="image">.',hint:'Add an alt attribute (use alt="" only when a separate accessible name is provided).',i18n:{summaryKey:"inputImage_altPresent_summary_fail",hintKey:"inputImage_altPresent_hint_fail",params:{element:"input[type=image]"}},data:{visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"missing_alt"}}};e&&typeof e.reportOccurrence=="function"?s.push(e.reportOccurrence(d,a)):s.push({selector:"",html:"",...a})}return c===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:s}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"input-image-alt-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:f=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(f)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function m(f){const g=(()=>{try{return String(f.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(g!=="presentation"&&g!=="none")return!1;let i;if(p){const a=(()=>{try{return p(f,o)}catch{return null}})();i=!!(a&&a.focusable)}else{const a=f.getAttribute("tabindex");i=a!=null&&String(a).trim()!==""&&!Number.isNaN(Number(String(a).trim()))}return!i}const s=(()=>{try{return Array.from((k?k('input[type="image"]'):h('input[type="image"]'))||[])}catch{return h('input[type="image"]')}})();if(!s.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const c=[];let d=0;for(const f of s){if(!f||!f.getAttribute)continue;if(A){const a=(()=>{try{return A(f,o)}catch{return{eligible:!0,reasons:[]}}})();if(a&&a.eligible===!1)continue}if(m(f)||!(f.getAttribute("alt")!=null&&String(f.getAttribute("alt")).trim()!==""))continue;d+=1;const g=v?v(f,o,{targetSet:"acc"}):null,i={summary:'Review alt text on <input type="image"> for accuracy and appropriateness.',hint:"Ensure the alt text describes the control’s action (e.g., “Search”, “Submit order”) in context.",i18n:{summaryKey:"inputImage_altQuality_summary_cantTell",hintKey:"inputImage_altQuality_hint_cantTell",params:{element:"input[type=image]"}},data:{visibilityFilter:g||{targetSet:"acc",accEligible:null,reasons:[]},details:{alt:String(f.getAttribute("alt")||"")}}};e&&typeof e.reportOccurrence=="function"?c.push(e.reportOccurrence(f,i)):c.push({selector:"",html:"",...i})}return d===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:c}}),applicability:null},"label-in-name":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=[];let u=0;const k=':is(button, a[href], summary, input:not([type="hidden"]), textarea, select, [role="button"], [role="link"], [role="checkbox"], [role="radio"], [role="switch"], [role="searchbox"], [role="tab"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="option"], [role="treeitem"], [role="gridcell"]):not([hidden]):not([disabled]):not([aria-disabled="true"]):is([aria-label], [aria-labelledby])',h=n.queryAllSmart?n.queryAllSmart(k):n.queryAll(k);function v(x){return(x==null?"":String(x)).replace(/\s+/g," ").trim().toLowerCase()}function A(x,C){let N=(x==null?"":String(x)).replace(/\([^)]*\)/g," ").toLowerCase();try{N=N.normalize("NFKD")}catch{}return C&&(N=N.replace(/[-‐-―−]/g,"")),N.replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean)}function p(x,C,N){if(!x.length)return!0;for(let L=0;L+x.length<=C.length;L++){let D=!0;for(let F=0;F<x.length;F++){const E=x[F],P=C[L+F];if(P!==E&&!(N&&N.has(E)&&P.indexOf(E)===0)){D=!1;break}}if(D)return!0}return!1}function m(x){const C=new Set;for(const N of(x==null?"":String(x)).split(/\s+/)){const L=/^([\p{L}\p{N}]+)\.$/u.exec(N);L&&C.add(L[1].toLowerCase())}return C}function s(x){const C=x&&x.tagName?String(x.tagName).toLowerCase():"element";let N;try{N=x&&x.getAttribute&&x.getAttribute("role")||""}catch{N=""}const L=String(N||"").trim();return L?`${C}[role="${L}"]`:C}function c(x){const C=(x==null?"":String(x)).replace(/\s+/g," ").trim();return C.length<=80?C:C.slice(0,77)+"..."}function d(x){const C=x&&x.tagName?String(x.tagName).toLowerCase():"";return C==="script"||C==="style"||C==="template"||C==="noscript"||C==="meta"||C==="link"}function f(x){return x?n.isDomVisibleEligible?!!n.isDomVisibleEligible(x,o,{targetSet:"dom"}).eligible:n.getEligibilityInfo?!!n.getEligibilityInfo(x,o,{targetSet:"dom"}).eligible:!0:!1}function g(x){if(!x)return!1;const C=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;if(!C)return f(x);try{const N=C(x,o);return typeof N=="boolean"?N:!!(N&&N.eligible)}catch{return f(x)}}const i=4;function a(x){if(!x||!f(x))return"";let C;try{C=t.createTreeWalker(x,i,null)}catch{C=null}if(!C)try{const D=x.textContent;return D==null?"":String(D)}catch{return""}const N=[];let L;for(;L=C.nextNode();)try{const F=(L&&L.nodeValue!=null?String(L.nodeValue):"").replace(/\s+/g," ").trim();if(!F)continue;const E=L.parentElement||null;if(!E||!E.tagName||d(E)||!g(E))continue;N.push(F)}catch{}return N.join(" ").replace(/\s+/g," ").trim()}function r(x){if(n&&typeof n.getAssociatedLabelElements=="function")try{return n.getAssociatedLabelElements(x)||[]}catch{return[]}return[]}function l(x){let C,N="none";const L=x&&x.tagName?String(x.tagName).toLowerCase():"";if(L==="input"||L==="select"||L==="textarea"){const F=r(x),E=[],P=[];for(const H of F){if(!H||!f(H))continue;const W=a(H);W&&(E.push(W),P.push(H))}const z=E.join(" ").replace(/\s+/g," ").trim();if(z)return{text:z,source:"label",sourceElements:P}}if(C=a(x),C)return{text:C,source:"self",sourceElements:[x]};try{const F=x&&x.getAttribute?x.getAttribute("aria-labelledby"):null;if(F&&n.resolveIdRefs){const E=n.resolveIdRefs(F,o,{maxRefs:8}),P=[],z=[];for(const W of E&&Array.isArray(E.refs)?E.refs:[]){if(!W||!W.tagName||!f(W))continue;const X=a(W);X&&(P.push(X),z.push(W))}const H=P.join(" ").replace(/\s+/g," ").trim();if(H)return{text:H,source:"aria-labelledby",sourceElements:z}}}catch{}return{text:"",source:N,sourceElements:[]}}const y=new Set(["material icons","material icons outlined","material icons round","material icons sharp","material icons two tone","material symbols outlined","material symbols rounded","material symbols sharp","font awesome 5 free","font awesome 5 brands","font awesome 5 pro","font awesome 6 free","font awesome 6 brands","font awesome 6 pro","fontawesome","glyphicons halflings","ionicons","icomoon","bootstrap-icons","bootstrap icons","feather"]);function b(x){if(n&&typeof n.computedStyle=="function")try{const C=n.computedStyle(x);if(C)return C}catch{}try{const C=x.ownerDocument&&x.ownerDocument.defaultView;if(C&&typeof C.getComputedStyle=="function")return C.getComputedStyle(x)}catch{}return null}function _(x){if(!x)return!1;const C=b(x);if(!C)return!1;let N;try{N=C.fontFamily||(C.getPropertyValue?C.getPropertyValue("font-family"):"")||""}catch{N=""}return N?String(N).split(",").map(D=>D.trim().replace(/^['"]|['"]$/g,"").toLowerCase()).some(D=>y.has(D)):!1}function I(x,C){const N=v(x);return!N||Array.from(N).length!==1?!1:C.indexOf(N)===-1}for(const x of h){if(!f(x))continue;const C=l(x),N=C&&C.text?String(C.text):"",L=v(N);if(!L)continue;u+=1;let D={present:!1,value:"",mechanism:"none",flags:[]};try{D=n.getAccessibleNameInfo?n.getAccessibleNameInfo(x,o,{maxRefs:8}):D}catch{D={present:!1,value:"",mechanism:"none",flags:["exception"]}}const F=D&&D.value!=null?String(D.value):"",E=v(F),P=A(N,!1),z=A(F,!1),H=p(P,z,null);let W="";if(!H)if(p(A(N,!0),A(F,!0),null))W="HYPHENATION_DIFFERS";else{const oe=m(N);oe.size&&p(P,z,oe)?W="POSSIBLE_ABBREVIATION":(C.sourceElements||[]).some(_)?W="POSSIBLE_ICON_FONT_GLYPH":I(N,E)&&(W="POSSIBLE_SYMBOLIC_CHARACTER")}const X=W==="POSSIBLE_ICON_FONT_GLYPH"||W==="POSSIBLE_SYMBOLIC_CHARACTER";H||w.push(n.reportOccurrence(x,{...W?{outcome:"cantTell"}:null,summary:W?"Accessible name may not contain the visible label text.":"Accessible name does not contain the visible label text.",hint:W?X?"Check by hand: the visible text may render as an icon or symbol rather than literal words, which markup cannot settle.":"Check by hand: the two differ only by an abbreviation or by hyphenation, which markup cannot settle.":"Ensure the accessible name includes the visible text label (e.g., update aria-label/aria-labelledby to include the visible wording).",i18n:{summaryKey:W?X?"labelInName_summary_cantTell_symbolic":"labelInName_summary_cantTell":"labelInName_summary_fail",hintKey:W?X?"labelInName_hint_cantTell_symbolic":"labelInName_hint_cantTell":"labelInName_hint_fail",params:{element:s(x),visibleLabel:c(N),labelSource:C&&C.source?C.source:"none",nameMechanism:D&&D.mechanism?D.mechanism:"none"}},...W?{uncertainty:{code:"equivalence-unknown",needed:"Whether the accessible name and the visible label say the same thing to a user.",evidence:{visibleLabel:N,accessibleName:F,difference:W}}}:null,data:{details:{reasonCode:W||"VISIBLE_LABEL_NOT_IN_ACCESSIBLE_NAME",visibleLabel:N,accessibleName:F,normalized:{visibleLabel:L,accessibleName:E},tokenized:{visibleLabel:P,accessibleName:z},labelSource:C&&C.source?C.source:"none",nameMechanism:D&&D.mechanism?D.mechanism:"none"}}}))}if(u===0)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};if(w.length){const x=w.some(C=>C.outcome!=="cantTell");return{ruleId:e.ruleId,outcome:x?"fail":"cantTell",severity:e.defaultSeverity||"minor",occurrences:w}}return{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"label-title-only":{run:(function(o){const{helpers:t,rule:n}=o,e='input:not([type="hidden"]):not([type="submit"]):not([type="reset"]):not([type="button"]):not([type="image"]),select,textarea',w=t.queryAllSmart?t.queryAllSmart(e):t.queryAll(e),u=[];let k=0;for(const h of w){if(!h||!h.getAttribute)continue;if(t.isAccTreeEligible){const m=(()=>{try{return t.isAccTreeEligible(h,o)}catch{return{eligible:!0,reasons:[]}}})();if(m&&m.eligible===!1)continue}if(!String(h.getAttribute("title")||"").trim())continue;k+=1;const A=t.getAccessibleNameInfo?t.getAccessibleNameInfo(h,o):null;if(!A||A.mechanism!=="title")continue;const p=h.tagName.toLowerCase();u.push(t.reportOccurrence(h,{summary:"This form control relies on the title attribute as its only label.",hint:"Add a visible <label> (or aria-label/aria-labelledby) in addition to, or instead of, the title attribute.",i18n:{summaryKey:"labelTitleOnly_summary_cantTell",hintKey:"labelTitleOnly_hint_cantTell",params:{element:p}},data:{details:{reasonCode:"LABEL_TITLE_ONLY",element:p}}}))}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"landmark-banner-is-top-level":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o;function u(a){return String(a||"").replace(/\s+/g," ").trim()}function k(a){try{if(e&&typeof e.getLandmarkNameInfo=="function"){const r=e.getLandmarkNameInfo(a,o);if(r&&r.present&&r.value)return u(r.value)}}catch{}return""}function h(a){const r=u(a.getAttribute&&a.getAttribute("role"));return r?r.split(/\s+/)[0].toLowerCase():""}function v(a,r){return e&&typeof e.hasLandmarkScopingAncestor=="function"?e.hasLandmarkScopingAncestor(a,{includeMain:r}):!1}function A(a){const r=a.tagName?a.tagName.toLowerCase():"";return r==="header"?v(a,!0)?"":"banner":r==="footer"?v(a,!0)?"":"contentinfo":r==="main"?"main":r==="nav"?"navigation":r==="aside"?v(a,!1)?k(a)?"complementary":"":"complementary":r==="section"?k(a)?"region":"":r==="form"&&k(a)?"form":""}const p=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function m(a){if(!a||!a.getAttribute)return"";const r=h(a);return r?p.has(r)?r:"":A(a)}function s(a){return m(a)==="banner"}function c(a){const r=Array.isArray(n)?n:n?[n]:[];let l=a.parentElement;for(;l;){if(m(l))return!0;if(r.includes(l))break;l=l.parentElement}return!1}let d;try{d=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{d=[]}const f=[],g=new Set;for(const a of d)if(!(!a||g.has(a))&&(g.add(a),!!s(a))){if(e&&typeof e.isAccTreeEligible=="function"){const r=(()=>{try{return e.isAccTreeEligible(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(r&&r.eligible===!1)continue}f.push(a)}if(f.length===0)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];for(const a of f)c(a)&&i.push(e.reportOccurrence(a,{summary:"This banner landmark is nested inside another landmark region.",hint:'Move the banner landmark (header/role="banner") so it is not contained by another landmark; a banner should be a top-level region of the page.',i18n:{summaryKey:"landmarkBannerIsTopLevel_summary_cantTell",hintKey:"landmarkBannerIsTopLevel_hint_cantTell",params:{}},data:{details:{reasonCode:"LANDMARK_BANNER_NOT_TOP_LEVEL"}}}));return i.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:i}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"landmark-complementary-is-top-level":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o;function u(a){return String(a||"").replace(/\s+/g," ").trim()}function k(a){try{if(e&&typeof e.getLandmarkNameInfo=="function"){const r=e.getLandmarkNameInfo(a,o);if(r&&r.present&&r.value)return u(r.value)}}catch{}return""}function h(a){const r=u(a.getAttribute&&a.getAttribute("role"));return r?r.split(/\s+/)[0].toLowerCase():""}function v(a,r){return e&&typeof e.hasLandmarkScopingAncestor=="function"?e.hasLandmarkScopingAncestor(a,{includeMain:r}):!1}function A(a){const r=a.tagName?a.tagName.toLowerCase():"";return r==="header"?v(a,!0)?"":"banner":r==="footer"?v(a,!0)?"":"contentinfo":r==="main"?"main":r==="nav"?"navigation":r==="aside"?v(a,!1)?k(a)?"complementary":"":"complementary":r==="section"?k(a)?"region":"":r==="form"&&k(a)?"form":""}const p=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function m(a){if(!a||!a.getAttribute)return"";const r=h(a);return r?p.has(r)?r:"":A(a)}function s(a){return m(a)==="complementary"}function c(a){const r=Array.isArray(n)?n:n?[n]:[];let l=a.parentElement;for(;l;){if(m(l))return!0;if(r.includes(l))break;l=l.parentElement}return!1}let d;try{d=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{d=[]}const f=[],g=new Set;for(const a of d)if(!(!a||g.has(a))&&(g.add(a),!!s(a))){if(e&&typeof e.isAccTreeEligible=="function"){const r=(()=>{try{return e.isAccTreeEligible(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(r&&r.eligible===!1)continue}f.push(a)}if(f.length===0)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];for(const a of f)c(a)&&i.push(e.reportOccurrence(a,{summary:"This complementary landmark is nested inside another landmark region.",hint:'Move the complementary landmark (<aside>/role="complementary") so it is not contained by another landmark; complementary content belongs beside the main content, not inside another region.',i18n:{summaryKey:"landmarkComplementaryIsTopLevel_summary_cantTell",hintKey:"landmarkComplementaryIsTopLevel_hint_cantTell",params:{}},data:{details:{reasonCode:"LANDMARK_COMPLEMENTARY_NOT_TOP_LEVEL"}}}));return i.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:i}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"landmark-contentinfo-is-top-level":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o;function u(a){return String(a||"").replace(/\s+/g," ").trim()}function k(a){try{if(e&&typeof e.getLandmarkNameInfo=="function"){const r=e.getLandmarkNameInfo(a,o);if(r&&r.present&&r.value)return u(r.value)}}catch{}return""}function h(a){const r=u(a.getAttribute&&a.getAttribute("role"));return r?r.split(/\s+/)[0].toLowerCase():""}function v(a,r){return e&&typeof e.hasLandmarkScopingAncestor=="function"?e.hasLandmarkScopingAncestor(a,{includeMain:r}):!1}function A(a){const r=a.tagName?a.tagName.toLowerCase():"";return r==="header"?v(a,!0)?"":"banner":r==="footer"?v(a,!0)?"":"contentinfo":r==="main"?"main":r==="nav"?"navigation":r==="aside"?v(a,!1)?k(a)?"complementary":"":"complementary":r==="section"?k(a)?"region":"":r==="form"&&k(a)?"form":""}const p=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function m(a){if(!a||!a.getAttribute)return"";const r=h(a);return r?p.has(r)?r:"":A(a)}function s(a){return m(a)==="contentinfo"}function c(a){const r=Array.isArray(n)?n:n?[n]:[];let l=a.parentElement;for(;l;){if(m(l))return!0;if(r.includes(l))break;l=l.parentElement}return!1}let d;try{d=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{d=[]}const f=[],g=new Set;for(const a of d)if(!(!a||g.has(a))&&(g.add(a),!!s(a))){if(e&&typeof e.isAccTreeEligible=="function"){const r=(()=>{try{return e.isAccTreeEligible(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(r&&r.eligible===!1)continue}f.push(a)}if(f.length===0)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];for(const a of f)c(a)&&i.push(e.reportOccurrence(a,{summary:"This contentinfo landmark is nested inside another landmark region.",hint:'Move the contentinfo landmark (footer/role="contentinfo") so it is not contained by another landmark; contentinfo should be a top-level region of the page.',i18n:{summaryKey:"landmarkContentinfoIsTopLevel_summary_cantTell",hintKey:"landmarkContentinfoIsTopLevel_hint_cantTell",params:{}},data:{details:{reasonCode:"LANDMARK_CONTENTINFO_NOT_TOP_LEVEL"}}}));return i.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:i}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"landmark-main-is-top-level":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o;function u(i){return String(i||"").replace(/\s+/g," ").trim()}function k(i){try{if(e&&typeof e.getLandmarkNameInfo=="function"){const a=e.getLandmarkNameInfo(i,o);if(a&&a.present&&a.value)return u(a.value)}}catch{}return""}function h(i){const a=u(i.getAttribute&&i.getAttribute("role"));return a?a.split(/\s+/)[0].toLowerCase():""}function v(i,a){return e&&typeof e.hasLandmarkScopingAncestor=="function"?e.hasLandmarkScopingAncestor(i,{includeMain:a}):!1}function A(i){const a=i.tagName?i.tagName.toLowerCase():"";return a==="header"?v(i,!0)?"":"banner":a==="footer"?v(i,!0)?"":"contentinfo":a==="main"?"main":a==="nav"?"navigation":a==="aside"?v(i,!1)?k(i)?"complementary":"":"complementary":a==="section"?k(i)?"region":"":a==="form"&&k(i)?"form":""}const p=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function m(i){if(!i||!i.getAttribute)return"";const a=h(i);return a?p.has(a)?a:"":A(i)}function s(i){const a=Array.isArray(n)?n:n?[n]:[];let r=i.parentElement;for(;r;){if(m(r))return!0;if(a.includes(r))break;r=r.parentElement}return!1}let c;try{c=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{c=[]}const d=[],f=new Set;for(const i of c)if(!(!i||f.has(i))&&(f.add(i),m(i)==="main")){if(e&&typeof e.isAccTreeEligible=="function"){const a=(()=>{try{return e.isAccTreeEligible(i,o)}catch{return{eligible:!0,reasons:[]}}})();if(a&&a.eligible===!1)continue}d.push(i)}if(d.length===0)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=[];for(const i of d)s(i)&&g.push(e.reportOccurrence(i,{summary:"This main landmark is nested inside another landmark region.",hint:'Move the main landmark (<main>/role="main") so it is not contained by another landmark; main should be a top-level region of the page.',i18n:{summaryKey:"landmarkMainIsTopLevel_summary_cantTell",hintKey:"landmarkMainIsTopLevel_hint_cantTell",params:{}},data:{details:{reasonCode:"LANDMARK_MAIN_NOT_TOP_LEVEL"}}}));return g.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:g}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"landmark-no-duplicate-banner":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(i){return String(i||"").replace(/\s+/g," ").trim()}function u(i){try{if(n&&typeof n.getLandmarkNameInfo=="function"){const a=n.getLandmarkNameInfo(i,o);if(a&&a.present&&a.value)return w(a.value)}}catch{}return""}function k(i){const a=w(i.getAttribute&&i.getAttribute("role"));return a?a.split(/\s+/)[0].toLowerCase():""}function h(i,a){return n&&typeof n.hasLandmarkScopingAncestor=="function"?n.hasLandmarkScopingAncestor(i,{includeMain:a}):!1}function v(i){const a=i.tagName?i.tagName.toLowerCase():"";return a==="header"?h(i,!0)?"":"banner":a==="footer"?h(i,!0)?"":"contentinfo":a==="main"?"main":a==="nav"?"navigation":a==="aside"?h(i,!1)?u(i)?"complementary":"":"complementary":a==="section"?u(i)?"region":"":a==="form"&&u(i)?"form":""}const A=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function p(i){if(!i||!i.getAttribute)return"";const a=k(i);return a?A.has(a)?a:"":v(i)}let m;try{m=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{m=[]}const s=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function c(i){if(!s)return!0;try{const a=s(i,o);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const d=[],f=new Set;for(const i of m)!i||f.has(i)||(f.add(i),c(i)&&p(i)==="banner"&&d.push(i));if(d.length<=1)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=d.map(i=>n.reportOccurrence(i,{summary:"This page has more than one banner landmark.",hint:'Keep only one banner landmark (header/role="banner") per page.',i18n:{summaryKey:"landmarkNoDuplicateBanner_summary_cantTell",hintKey:"landmarkNoDuplicateBanner_hint_cantTell",params:{count:String(d.length)}},data:{details:{reasonCode:"LANDMARK_DUPLICATE_BANNER",count:d.length}}}));return{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:g}}),applicability:null},"landmark-no-duplicate-contentinfo":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(i){return String(i||"").replace(/\s+/g," ").trim()}function u(i){try{if(n&&typeof n.getLandmarkNameInfo=="function"){const a=n.getLandmarkNameInfo(i,o);if(a&&a.present&&a.value)return w(a.value)}}catch{}return""}function k(i){const a=w(i.getAttribute&&i.getAttribute("role"));return a?a.split(/\s+/)[0].toLowerCase():""}function h(i,a){return n&&typeof n.hasLandmarkScopingAncestor=="function"?n.hasLandmarkScopingAncestor(i,{includeMain:a}):!1}function v(i){const a=i.tagName?i.tagName.toLowerCase():"";return a==="header"?h(i,!0)?"":"banner":a==="footer"?h(i,!0)?"":"contentinfo":a==="main"?"main":a==="nav"?"navigation":a==="aside"?h(i,!1)?u(i)?"complementary":"":"complementary":a==="section"?u(i)?"region":"":a==="form"&&u(i)?"form":""}const A=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function p(i){if(!i||!i.getAttribute)return"";const a=k(i);return a?A.has(a)?a:"":v(i)}let m;try{m=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{m=[]}const s=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function c(i){if(!s)return!0;try{const a=s(i,o);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const d=[],f=new Set;for(const i of m)!i||f.has(i)||(f.add(i),c(i)&&p(i)==="contentinfo"&&d.push(i));if(d.length<=1)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=d.map(i=>n.reportOccurrence(i,{summary:"This page has more than one contentinfo landmark.",hint:'Keep only one contentinfo landmark (footer/role="contentinfo") per page.',i18n:{summaryKey:"landmarkNoDuplicateContentinfo_summary_cantTell",hintKey:"landmarkNoDuplicateContentinfo_hint_cantTell",params:{count:String(d.length)}},data:{details:{reasonCode:"LANDMARK_DUPLICATE_CONTENTINFO",count:d.length}}}));return{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:g}}),applicability:null},"landmark-no-duplicate-main":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(c){return String(c||"").replace(/\s+/g," ").trim()}function u(c){const d=w(c.getAttribute&&c.getAttribute("role"));return d?d.split(/\s+/)[0].toLowerCase():""}function k(c){if(!c||!c.getAttribute)return"";const d=u(c);return d?d==="main"?"main":"":(c.tagName?c.tagName.toLowerCase():"")==="main"?"main":""}let h;try{h=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("main, [role]"):t.querySelectorAll("main, [role]")}catch{h=[]}const v=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function A(c){if(!v)return!0;try{const d=v(c,o);return typeof d=="boolean"?d:!!(d&&d.eligible)}catch{return!0}}const p=[],m=new Set;for(const c of h)!c||m.has(c)||(m.add(c),A(c)&&k(c)==="main"&&p.push(c));if(p.length<=1)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const s=p.map(c=>n.reportOccurrence(c,{summary:"This page has more than one main landmark.",hint:'Keep only one main landmark (<main>/role="main") per page.',i18n:{summaryKey:"landmarkNoDuplicateMain_summary_cantTell",hintKey:"landmarkNoDuplicateMain_hint_cantTell",params:{count:String(p.length)}},data:{details:{reasonCode:"LANDMARK_DUPLICATE_MAIN",count:p.length}}}));return{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:s}}),applicability:null},"landmark-one-main":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.body?t.body:null;if(!w)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function u(s){const c=(s.getAttribute&&s.getAttribute("role")||"").trim();return c?c.split(/\s+/)[0].toLowerCase():""}function k(s){if(!s||!s.getAttribute)return!1;const c=u(s);return c?c==="main":(s.tagName?s.tagName.toLowerCase():"")==="main"}const h=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function v(s){if(!h)return!0;try{const c=h(s,o);return typeof c=="boolean"?c:!!(c&&c.eligible)}catch{return!0}}let A;try{A=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("main, [role]"):t.querySelectorAll("main, [role]")}catch{A=[]}let p=!1;const m=new Set;for(const s of A)if(!(!s||m.has(s))&&(m.add(s),!!k(s)&&v(s))){p=!0;break}return p?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:[n.reportOccurrence(w,{summary:"This page has no main landmark.",hint:`Add a main landmark (<main> or role="main") around the page's primary content.`,i18n:{summaryKey:"landmarkOneMain_summary_cantTell_missing",hintKey:"landmarkOneMain_hint_cantTell_missing",params:{}},data:{details:{reasonCode:"LANDMARK_MAIN_MISSING"}}})]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"landmark-unique":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(i){return String(i||"").replace(/\s+/g," ").trim()}function u(i){try{if(n&&typeof n.getLandmarkNameInfo=="function"){const a=n.getLandmarkNameInfo(i,o);if(a&&a.present&&a.value)return w(a.value)}}catch{}return""}function k(i){const a=w(i.getAttribute&&i.getAttribute("role"));return a?a.split(/\s+/)[0].toLowerCase():""}function h(i,a){return n&&typeof n.hasLandmarkScopingAncestor=="function"?n.hasLandmarkScopingAncestor(i,{includeMain:a}):!1}function v(i){const a=i.tagName?i.tagName.toLowerCase():"";return a==="header"?h(i,!0)?"":"banner":a==="footer"?h(i,!0)?"":"contentinfo":a==="main"?"main":a==="nav"?"navigation":a==="aside"?h(i,!1)?u(i)?"complementary":"":"complementary":a==="section"?u(i)?"region":"":a==="form"&&u(i)?"form":""}const A=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function p(i){if(!i||!i.getAttribute)return"";const a=k(i);if(a){if(!A.has(a))return"";const r=i.tagName?i.tagName.toLowerCase():"";return r==="form"||r==="section"?u(i)?a:"":a}return v(i)}const m=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function s(i){if(!m)return!0;try{const a=m(i,o);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}let c;try{c=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("header, footer, main, nav, aside, section, form, [role]"):t.querySelectorAll("header, footer, main, nav, aside, section, form, [role]")}catch{c=[]}const d=new Map,f=new Set;for(const i of c){if(!i||f.has(i)||(f.add(i),!s(i)))continue;const a=p(i);if(!a)continue;const r=d.get(a)||[];r.push({el:i,name:u(i)}),d.set(a,r)}const g=[];for(const[i,a]of d){if(a.length<=1)continue;const r=new Map;for(const l of a){const y=l.name.toLowerCase(),b=r.get(y)||[];b.push(l),r.set(y,b)}for(const[l,y]of r)if(!(y.length<=1))for(const{el:b}of y)g.push(n.reportOccurrence(b,{summary:l?`This ${i} landmark shares its accessible name with another ${i} landmark.`:`This ${i} landmark has no accessible name, and more than one unnamed ${i} landmark exists on this page.`,hint:`Give each ${i} landmark a distinct name via aria-label or aria-labelledby.`,i18n:{summaryKey:l?"landmarkUnique_summary_cantTell_duplicateName":"landmarkUnique_summary_cantTell_bothUnnamed",hintKey:"landmarkUnique_hint_cantTell",params:{role:i}},data:{details:{reasonCode:"LANDMARK_NOT_UNIQUE",role:i,name:l,groupSize:y.length}}}))}return g.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:g}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"link-in-text-block":{run:(function(o){const{helpers:t,rule:n,engineOptions:e}=o;function w(I){try{if(!I||I.nodeType!==1)return null;if(t&&typeof t.computedStyle=="function"){const C=t.computedStyle(I);if(C)return C}const x=I.ownerDocument&&I.ownerDocument.defaultView?I.ownerDocument.defaultView:null;if(x&&typeof x.getComputedStyle=="function")return x.getComputedStyle(I)}catch{}return null}function u(I){if(!I)return{underlined:!1,trustworthy:!1};const x=String(I.textDecorationLine||"").trim().toLowerCase(),C=String(I.textDecoration||"").trim().toLowerCase(),N=x.split(/\s+/).filter(Boolean),L=C.split(/\s+/).filter(Boolean);if(!N.length)return{underlined:L.includes("underline"),trustworthy:L.length>0};if(!L.length)return{underlined:N.includes("underline"),trustworthy:!0};const D=N.includes("underline"),F=L.includes("underline");return{underlined:D,trustworthy:D===F}}const k=1,h=8;function v(I){const x=[];let C=0,N="";for(const L of String(I||"")){if(L==="("&&(C+=1),L===")"&&(C=Math.max(0,C-1)),L===","&&C===0){x.push(N),N="";continue}N+=L}return x.push(N),x.map(L=>L.trim()).filter(Boolean)}function A(I){const x=String(I||""),C=(x.match(/#[\w-]+/g)||[]).length,N=(x.match(/\.[\w-]+|\[[^\]]*\]|:(?!:)[\w-]+/g)||[]).length,L=(x.match(/(^|[\s>+~])[a-z][\w-]*/gi)||[]).length;return C*1e4+N*100+L}function p(I){if(!I||typeof I.getPropertyValue!="function")return null;for(const x of["text-decoration-line","text-decoration"]){const C=String(I.getPropertyValue(x)||"").trim().toLowerCase();if(!C)continue;const N=String(I.getPropertyPriority(x)||"")==="important";return{underlined:/\bunderline\b/.test(C),important:N}}return null}function m(I){const x=I&&I.ownerDocument?I.ownerDocument:null;if(!x||typeof I.matches!="function")return{underlined:!1,resolved:!1};let C=null,N=0,L=!1,D=!1;function F(z){const H=p(z.style);if(H)for(const W of v(z.selectorText)){if(/::[a-z-]+/i.test(W)||/:(hover|focus|focus-visible|focus-within|active|target|visited)\b/i.test(W))continue;let X;try{X=I.matches(W)}catch{D=!0;continue}if(!X)continue;N+=1;const oe=(H.important?1e9:0)+A(W);(!C||oe>=C.rank)&&(C={rank:oe,order:N,underlined:H.underlined})}}function E(z,H){if(!(!z||H>h))for(const W of z){if(!W)continue;if(W.type===k&&W.selectorText){F(W);continue}let X;try{X=W.cssRules||null}catch{X=null}X&&E(X,H+1)}}try{for(const z of x.styleSheets||[]){let H=null;try{H=z&&z.cssRules?z.cssRules:null}catch{L=!0;continue}H&&E(H,0)}}catch{return{underlined:!1,resolved:!1}}const P=p(I.style);return P?{underlined:P.underlined,resolved:!0}:C?{underlined:C.underlined,resolved:!0}:L||D?{underlined:!1,resolved:!1}:{underlined:!0,resolved:!0}}function s(I,x){if(!x||!x.childNodes)return!1;for(let C=0;C<x.childNodes.length;C++){const N=x.childNodes[C];if(N!==I&&N.nodeType===3&&N.nodeValue&&N.nodeValue.trim().length>0)return!0}return!1}const c=e&&typeof e.contrast=="object"&&e.contrast?e.contrast:{},d=c.mode==="auditorAssist"?"auditorAssist":"strictConformance",f=typeof c.rootCanvasFallback=="string"&&c.rootCanvasFallback.trim()?c.rootCanvasFallback.trim():"#ffffff",g=t&&t.contrast?t.contrast:null,i="a[href]",a=t.queryAllSmart?t.queryAllSmart(i):t.queryAll(i),r=[],l=[];let y=0,b=0;function _(I,x){l.push({el:I,reasonCode:x})}for(const I of a){if(!I||!I.getAttribute)continue;const x=t.isAccTreeEligible?t.isAccTreeEligible(I,o):!0;if(!(typeof x=="boolean"?x:!!(x&&x.eligible)))continue;const N=I.parentElement;if(!s(I,N))continue;y+=1;const L=w(I),D=w(N),F=g&&L?g.normalizeFontWeight(L.fontWeight):400,E=g&&D?g.normalizeFontWeight(D.fontWeight):400;if(F!==E){b+=1;continue}const P=L&&L.fontStyle||"normal",z=D&&D.fontStyle||"normal";if(P!==z){b+=1;continue}if(!g){_(I,"CONTRAST_HELPERS_UNAVAILABLE");continue}let H=!1,W=!1,X=null,oe="",q="",O="COLOR_NOT_COMPUTABLE";try{const fe=g.getComputabilityBlocker(I);if(fe&&fe.ok===!1)fe.reasonCode&&(O=String(fe.reasonCode));else{const we=g.computeEffectiveBackground(I,{contrast:{mode:d,rootCanvasFallback:f},collectStack:!1}),te=g.computeEffectiveForeground(I),be=g.computeEffectiveForeground(N);if(we&&we.ok&&we.rgba&&te&&te.rgba&&be&&be.rgba){const Ve=te.rgba.a<1?g.compositeRgba(te.rgba,we.rgba):{r:te.rgba.r,g:te.rgba.g,b:te.rgba.b,a:1},Ne=be.rgba.a<1?g.compositeRgba(be.rgba,we.rgba):{r:be.rgba.r,g:be.rgba.g,b:be.rgba.b,a:1};X=g.contrastRatio(Ve,Ne),oe=g.rgbToHex?g.rgbToHex(Ve):"",q=g.rgbToHex?g.rgbToHex(Ne):"",W=!0,X>=3||(H=!0)}}}catch{O="ENGINE_EXCEPTION"}if(!W){_(I,O);continue}if(!H){b+=1;continue}const B=u(L);let G;if(B.trustworthy)G=B.underlined;else{const fe=m(I);if(!fe.resolved){_(I,"TEXT_DECORATION_NOT_RESOLVABLE");continue}G=fe.underlined}if(G){b+=1;continue}b+=1;const ne=t.getEligibilityInfo?t.getEligibilityInfo(I,o,{targetSet:"acc"}):null,ie=(I.tagName||"").toLowerCase(),ue=g.round2?g.round2(X):String(X);r.push(t.reportOccurrence(I,{summary:"This link in a block of text relies on color alone to be distinguished from the surrounding text.",hint:"Add an underline, a font-weight/style difference, or increase the color contrast between the link and surrounding text to at least 3:1.",i18n:{summaryKey:"linkInTextBlock_summary_fail",hintKey:"linkInTextBlock_hint_fail",params:{element:ie,ratio:String(ue),threshold:"3"}},data:{visibilityFilter:ne||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"COLOR_ONLY_DIFFERENTIATION",metrics:{ratio:X,threshold:3},colors:{linkForegroundHex:oe,surroundingTextForegroundHex:q}}}}))}return y===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:r.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:r}:l.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",confidence:"low",occurrences:l.map(({el:I,reasonCode:x})=>t.reportOccurrence(I,{summary:"Whether this link is distinguishable from the surrounding text by non-color means could not be determined.",hint:"Confirm by eye that the link carries an underline, a font-weight or font-style difference, or at least 3:1 contrast against the surrounding text. Running the engine in a real browser rather than a DOM emulator resolves most cases automatically.",i18n:{summaryKey:"linkInTextBlock_summary_cantTell",hintKey:"linkInTextBlock_hint_cantTell"},uncertainty:{code:"not-computable",needed:"Whether the link carries an underline, weight or style difference, or 3:1 contrast against its surrounding text.",evidence:{reasonCode:x}},data:{visibilityFilter:t.getEligibilityInfo?t.getEligibilityInfo(I,o,{targetSet:"acc"}):{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:x}}}))}:b>0?{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"link-name-present":{run:(function(o){const{helpers:t,rule:n}=o,e=[];let w=0;function u(v){if(t.getContentNameInfo){const p=t.getContentNameInfo(v,o);return p&&p.present?p.value:""}return(v&&v.textContent?String(v.textContent):"").replace(/\s+/g," ").trim()}const k='a[href], area[href], [role="link"]',h=t.queryAllSmart?t.queryAllSmart(k):t.queryAll(k);for(const v of h){const A=t.isIncludedInAccessibilityTree?t.isIncludedInAccessibilityTree(v,o):t.isAccTreeEligible?t.isAccTreeEligible(v,o):!0;if(!(typeof A=="boolean"?A:!!(A&&A.eligible)))continue;w+=1;const m=t.getAccessibleNameInfo?t.getAccessibleNameInfo(v,o):null,s=m&&typeof m.value=="string"?m.value:"",c=v.getAttribute?v.getAttribute("role"):null,d=String(c||"").replace(/\s+/g," ").trim().toLowerCase(),f=["button","cell","checkbox","columnheader","doc-backlink","doc-biblioref","doc-glossref","doc-noteref","graphics-object","gridcell","heading","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","row","rowgroup","rowheader","switch","tab","tooltip","treeitem"],g=t&&t.aria&&typeof t.aria.isKnownRole=="function"?(()=>{try{return!!t.aria.isKnownRole(d)}catch{return!1}})():!1,i=!d||!g||f.includes(d),a=s.trim().length===0&&i?u(v):"";if((s.trim().length?s:a).trim().length===0){const l=t.getEligibilityInfo?t.getEligibilityInfo(v,o,{targetSet:"acc"}):null,y=(v.tagName||"").toLowerCase();e.push(t.reportOccurrence(v,{summary:"This link has no accessible name.",hint:"Provide link text or an accessible-name mechanism (for example aria-label) so assistive technologies can identify the link.",i18n:{summaryKey:"linkNamePresent_summary_fail",hintKey:"linkNamePresent_hint_fail",params:{element:y}},data:{visibilityFilter:l||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"name_missing",metrics:{programmaticNameLength:s.trim().length,contentNameLength:a.trim().length},refs:{accessibleName:m||null}}}}))}}return w===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:e.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"minor",occurrences:e}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"link-name-quality":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["click here","here","click","more","more info","more information","read more","learn more","continue reading","continue","details","more details","link","this link","go","download","view more","see more","info"]),w=new Set(["html","pdf","epub","txt","plain text","doc","docx","xml","zip","mp3","mp4","csv","xls","xlsx","ppt","pptx","json","rtf"]),u=new Set(["td","th","p","dd","blockquote","figcaption","dt"]);function k(i){return(i==null?"":String(i)).replace(/\s+/g," ").trim().toLowerCase().replace(/[.,;:!?]+$/g,"").trim()}function h(i){let a="";const r=i.childNodes||[];for(let l=0;l<r.length;l++){const y=r[l];y.nodeType===3&&(a+=y.nodeValue||"")}return a.replace(/\s+/g," ").trim()}function v(i){return!!i&&i.length>=3&&/\p{L}/u.test(i)}function A(i){let a=i.parentElement,r=0;for(;a;){const l=(a.tagName||"").toLowerCase();if(l==="li"){const y=h(a);if(y)return y;if(r+=1,r>=4)return"";const b=a.parentElement;a=b?b.parentElement:null;continue}return u.has(l)?h(a):""}return""}function p(i){const a=i.getAttribute?i.getAttribute("aria-describedby"):null;if(!a||!a.trim()||!t.getTextFromIdRefs)return"";try{const r=t.getTextFromIdRefs(a,o);return r&&r.text?r.text.replace(/\s+/g," ").trim():""}catch{return""}}function m(i){const a=i.closest?i.closest("td, th"):null;if(!a)return"";const r=a.closest?a.closest("table"):null;if(!r||!r.rows||!r.rows.length)return"";const l=r.rows[0],y=a.closest?a.closest("tr"):null;if(!y||l===y)return"";const b=l.querySelectorAll?l.querySelectorAll("th"):[];return b.length?Array.prototype.map.call(b,_=>_.textContent||"").join(" ").replace(/\s+/g," ").trim():""}function s(i,a){return!!(v(p(i))||v(A(i))||a==="format"&&v(m(i)))}const c='a[href], area[href], [role="link"]',d=t.queryAllSmart?t.queryAllSmart(c):t.queryAll(c),f=[];let g=0;for(const i of d){if(!i||!i.getAttribute)continue;const a=t.isAccTreeEligible?t.isAccTreeEligible(i,o):!0;if(!(typeof a=="boolean"?a:!!(a&&a.eligible)))continue;const l=t.getAccessibleNameInfo?t.getAccessibleNameInfo(i,o):null;let b=l&&typeof l.value=="string"?l.value:"";if(!b.trim()&&t.getContentNameInfo){const F=t.getContentNameInfo(i,o);b=F&&F.present?F.value:""}const _=k(b);if(!_)continue;g+=1;const I=e.has(_),x=!I&&w.has(_);if(!I&&!x||s(i,I?"generic":"format"))continue;const N=t.getEligibilityInfo?t.getEligibilityInfo(i,o,{targetSet:"acc"}):null,L=b.trim(),D=I?{summary:`This link's accessible name ("${L}") is a generic, non-descriptive phrase.`,hint:'Make the link text itself describe its destination/purpose (e.g. "Download the 2026 pricing guide" instead of "Download"), or confirm the surrounding context already makes the purpose clear.',i18n:{summaryKey:"linkNameQuality_summary_cantTell",hintKey:"linkNameQuality_hint_cantTell",params:{name:L}},data:{details:{reasonCode:"GENERIC_LINK_TEXT",normalizedName:_},visibilityFilter:N||{targetSet:"acc",accEligible:null,reasons:[]}}}:{summary:`This link's accessible name ("${L}") names a file format/type but not the document it belongs to.`,hint:'Name the document in the link text or in nearby text/a heading the link is associated with (e.g. "Download the annual report (HTML)" instead of a bare "HTML").',i18n:{summaryKey:"linkNameQuality_summary_cantTell_formatName",hintKey:"linkNameQuality_hint_cantTell_formatName",params:{name:L}},data:{details:{reasonCode:"AMBIGUOUS_FORMAT_NAME",normalizedName:_},visibilityFilter:N||{targetSet:"acc",accEligible:null,reasons:[]}}};f.push(t.reportOccurrence(i,D))}return g===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:f.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:f}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"list-children-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["li","script","template"]),w=t.queryAllSmart?t.queryAllSmart("ul, ol"):t.queryAll("ul, ol"),u=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;function k(A){if(!u)return!0;try{const p=u(A,o);return typeof p=="boolean"?p:!!(p&&p.eligible)}catch{return!0}}const h=[];let v=0;for(const A of w){if(!A||!A.children||!A.children.length)continue;v+=1;const p=[];for(const c of A.children){if(!c||!c.tagName||!k(c))continue;const d=c.tagName.toLowerCase(),f=c.getAttribute?String(c.getAttribute("role")||"").trim():"",g=f?(f.split(/\s+/)[0]||"").toLowerCase():"";(g?g==="listitem":e.has(d))||p.push(d)}if(!p.length)continue;const m=[...new Set(p)],s=A.tagName.toLowerCase();h.push(t.reportOccurrence(A,{summary:"This list contains a direct child that is not a list item.",hint:"Only use <li> (or <script>/<template>) as direct children of <ul>/<ol>; move other markup inside an <li>.",i18n:{summaryKey:"listChildrenValid_summary_fail",hintKey:"listChildrenValid_hint_fail",params:{element:s,invalidChildren:m.join(", ")}},data:{details:{reasonCode:"LIST_INVALID_CHILD",element:s,invalidChildren:p}}}))}return v===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:h.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:h}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"listbox-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function v(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=h(t,r);return l||k(r,"title")}function A(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function p(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}function m(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}const s=[];let c=0;const d='[role="listbox"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=m(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?v(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=v(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?v(y):"";if(b)return b}}catch{}return""}function a(r){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:A(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!p(n,r,o))continue;c+=1;const l=a(r);if(l.ok)continue;const y=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This element has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this listbox's accessible name.",i18n:{summaryKey:"listboxNamePresent_summary_fail",hintKey:"listboxNamePresent_hint_fail",params:{controlType:"listbox"}},data:{details:{reasonCode:"name_missing",controlType:"listbox",methodTried:l.method},visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"listitem-parent-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("li"):t.queryAll("li"),w=[];let u=0;for(const k of e){if(!k)continue;const h=k.parentElement;if(!h)continue;const v=k.getAttribute?String(k.getAttribute("role")||"").trim():"",A=v?(v.split(/\s+/)[0]||"").toLowerCase():"";if(A&&A!=="listitem")continue;u+=1;const p=h.tagName?h.tagName.toLowerCase():"",m=h.getAttribute?String(h.getAttribute("role")||"").trim():"",s=m?(m.split(/\s+/)[0]||"").toLowerCase():"";let c;s?c=s==="list"||s==="presentation"||s==="none":c=p==="ul"||p==="ol",!c&&w.push(t.reportOccurrence(k,{summary:"This list item is not contained by a list container.",hint:'Place this <li> inside a <ul>/<ol>, or give its parent role="list".',i18n:{summaryKey:"listitemParentValid_summary_fail",hintKey:"listitemParentValid_hint_fail",params:{parentElement:p}},data:{details:{reasonCode:"LISTITEM_INVALID_PARENT",parentElement:p}}}))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"manual-review":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=e&&e.getOuterHtmlSnippet?e.getOuterHtmlSnippet:p=>p&&p.outerHTML||"",k=o.contextSelector||null;let h=n||null;if(!h){if(k)try{h=t.querySelector(k)}catch{h=null}h||(h=t.documentElement||t.body||t.querySelector("html"))}const v=h||t.documentElement||t.body||t.querySelector("html"),A=u(v);return{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"moderate",occurrences:[{selector:k||"html",html:A,summary:"Manual review required for keyboard navigation and focus order.",i18n:{summaryKey:"manualReview_summary_cantTell",hintKey:"manualReview_hint_cantTell",params:{}}}]}}),applicability:null},"media-alternative-transcript-evidence":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=["transcript","transcription","texte intégral","compte rendu","verbatim"],h=200,v=400;function A(I){return I?String(I).replace(/\s+/g," ").trim().toLowerCase():""}function p(I){const x=A(I);if(!x)return!1;for(const C of k)if(x.includes(C))return!0;return!1}function m(I){const x=A(I);return x?x.length:0}function s(I){try{return I&&I.textContent||""}catch{return""}}function c(I){return!!(I&&I.nodeType===1)}const d=new WeakMap;function f(I){if(!I||I.nodeType!==1)return{eligible:!0,reasons:[],targetSet:"acc",accEligible:null};const x=d.get(I);if(x)return x;let C;try{C=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo(I,o,{targetSet:"acc"}):null}catch{C=null}const N=C&&typeof C=="object"?C:{eligible:!0,reasons:[],targetSet:"acc",accEligible:null};return d.set(I,N),N}function g(I){const x=f(I);return!!(x&&x.eligible)}function i(){return{strength:"none",method:"none",transcriptNodeSelector:null,transcriptLinkHref:null,notes:[]}}function a(I){try{if(!I||I.nodeType!==1)return null;const x=I.getAttribute&&I.getAttribute("id");return x?{type:"id",value:String(x)}:{type:"tag",value:(I.tagName||"").toLowerCase()}}catch{return null}}const r=new WeakMap;function l(I){const x=i(),C=e.getAccessibleDescriptionInfo?e.getAccessibleDescriptionInfo(I,o):null;if(C&&C.mechanism==="aria-describedby"){const L=C.value||"",D=p(L),F=m(L);if(D||F>=v)return x.strength="strong",x.method="aria-describedby",x.notes.push("media has aria-describedby with explicit or substantial transcript text"),x}const N=I.parentElement;if(c(N)&&g(N)){const L=N.querySelectorAll("h1,h2,h3,h4,h5,h6");for(const D of L){if(!g(D))continue;const F=s(D);if(!p(F))continue;let E=D.nextElementSibling,P=0;for(;c(E)&&P<4;){if(g(E)){const z=s(E);if(m(z)>=h)return x.strength="strong",x.method="adjacent-heading",x.transcriptNodeSelector=a(D),x.notes.push("found transcript heading with substantial visible adjacent text"),x}E=E.nextElementSibling,P+=1}}}if(c(N)&&g(N)){const L=N.querySelectorAll("a[href]");for(const D of L){if(!g(D))continue;const F=e.getAccessibleNameInfo?e.getAccessibleNameInfo(D,o):null,E=F&&F.value?F.value:s(D);if(!p(E))continue;const P=D.getAttribute("href")||"";if(x.transcriptLinkHref=P,x.transcriptNodeSelector=a(D),P.startsWith("#")){const z=P.slice(1),H=z?u.getElementById?u.getElementById(z):t.getElementById(z):null;if(c(H)&&g(H)){const W=H.querySelectorAll("h1,h2,h3,h4,h5,h6");let X=!1;for(const q of W)if(g(q)&&p(s(q))){X=!0;break}const oe=s(H);if(X&&m(oe)>=h)return x.strength="strong",x.method="anchor-target",x.notes.push("resolved transcript link to an on-page section with transcript heading and substantial text"),x}return x.strength="weak",x.method="anchor-unverified",x.notes.push("transcript link found but anchor target could not be verified as a transcript section"),x}return x.strength="weak",x.method="external-link",x.notes.push("transcript link found but cannot verify content without crawling"),x}}return x}const y=[];let b=0;const _=e.queryAllSmart?e.queryAllSmart("audio,video"):e.queryAll("audio,video");for(const I of _){const x=f(I);if(!x||!x.eligible)continue;b+=1;let C=r.get(I);C||(C=l(I),r.set(I,C));const N=(I.tagName||"").toLowerCase();if(C.strength==="none"){const L={summary:"A transcript or other text alternative for this time-based media is not strongly evidenced on the page.",hint:"Provide a clearly identified transcript or other text alternative for audio-only/video-only prerecorded media (for example, a “Transcript” section or link).",i18n:{summaryKey:"mediaTranscriptPresent_summary_cantTell_missing",hintKey:"mediaTranscriptPresent_hint_cantTell_missing",params:{element:N}},data:{details:{reasonCode:"transcriptNotDetected",mediaTag:N,evidence:C},visibilityFilter:x||{targetSet:"acc",accEligible:null,reasons:[]}}};e&&typeof e.reportOccurrence=="function"?y.push(e.reportOccurrence(I,L)):y.push({selector:"",html:"",...L});continue}if(C.strength==="weak"){const L={summary:"A transcript or other text alternative may be available for this time-based media, but it could not be verified from the page content.",hint:"Ensure a clearly identified transcript or other text alternative is available and programmatically or visibly associated with the media on the page.",i18n:{summaryKey:"mediaTranscriptPresent_summary_cantTell_unverified",hintKey:"mediaTranscriptPresent_hint_cantTell_unverified",params:{element:N}},data:{details:{reasonCode:"transcriptEvidenceUnverified",mediaTag:N,evidence:C},visibilityFilter:x||{targetSet:"acc",accEligible:null,reasons:[]}}};e&&typeof e.reportOccurrence=="function"?y.push(e.reportOccurrence(I,L)):y.push({selector:"",html:"",...L})}}return b===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:y.length?{ruleId:w.ruleId,outcome:"cantTell",severity:w.defaultSeverity||"minor",occurrences:y}:{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"menuitem-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(f){return String(f||"").replace(/\s+/g," ").trim()}function k(f,g){try{return!f||!f.getAttribute?"":u(f.getAttribute(g))}catch{return""}}function h(f,g){if(n.getContentNameInfo){const a=n.getContentNameInfo(g,o);return a&&a.present?a.value:""}return(g&&g.textContent?String(g.textContent):"").replace(/\s+/g," ").trim()}function v(f,g,i){const a=k(g,"aria-labelledby");if(!a)return"";if(n.getTextFromIdRefs)try{const r=n.getTextFromIdRefs(a,o,{maxRefs:i||8});return u(r&&r.text)}catch{}return""}function A(f,g,i){const a=f&&typeof f.isIncludedInAccessibilityTree=="function"?f.isIncludedInAccessibilityTree:f&&typeof f.isAccTreeEligible=="function"?f.isAccTreeEligible:null;if(!a)return!0;try{const r=a(g,i);return typeof r=="boolean"?r:!!(r&&r.eligible)}catch{return!0}}const p=[];let m=0;const s='[role="menuitem"],[role="menuitemcheckbox"],[role="menuitemradio"]',c=n.queryAllSmart?n.queryAllSmart(s):n.queryAll(s);function d(f){return k(f,"aria-label")?{ok:!0,method:"aria-label"}:v(t,f,8)?{ok:!0,method:"aria-labelledby"}:k(f,"title")?{ok:!0,method:"title"}:h(t,f)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const f of c){if(!f||!A(n,f,o))continue;const g=k(f,"role").toLowerCase();if(g!=="menuitem"&&g!=="menuitemcheckbox"&&g!=="menuitemradio")continue;m+=1;const i=d(f);if(i.ok)continue;const a=w?(()=>{try{return w(f,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(f,{summary:"This menu item has no accessible name.",hint:"Provide visible text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",i18n:{summaryKey:"menuitemNamePresent_summary_fail",hintKey:"menuitemNamePresent_hint_fail",params:{role:g}},data:{details:{reasonCode:"name_missing",controlType:g,methodTried:i.method},visibilityFilter:a||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"meta-refresh-no-exceptions":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t.querySelectorAll?t.querySelectorAll('meta[http-equiv="refresh" i]'):[],u=[];function k(v){const A=String(v??""),p=d=>d===" "||d===" "||d===`
13
+ `||d==="\f"||d==="\r";let m=0;for(;m<A.length&&p(A[m]);)m++;let s="";for(;m<A.length&&A[m]>="0"&&A[m]<="9";)s+=A[m++];if(!s)return null;if(A[m]===".")for(m++;m<A.length&&A[m]>="0"&&A[m]<="9";)m++;if(m>=A.length)return parseInt(s,10);let c=!1;for(;m<A.length&&p(A[m]);)c=!0,m++;return m>=A.length||A[m]===";"||A[m]===","||c?parseInt(s,10):null}let h=0;for(const v of w){if(!v||!v.getAttribute||v.closest&&v.closest("noscript"))continue;const A=String(v.getAttribute("content")||"").trim();if(!A)continue;const p=k(A);if(p!==null){if(h+=1,p===0)break;u.push(n.reportOccurrence(v,{summary:"This page uses a meta refresh, which is an automatic context change not initiated by the user.",hint:"Remove the meta refresh; trigger the redirect/refresh only in response to a user action instead.",i18n:{summaryKey:"metaRefreshNoExceptions_summary_fail",hintKey:"metaRefreshNoExceptions_hint_fail",params:{}},data:{details:{reasonCode:"META_REFRESH_PRESENT"}}}));break}}return h===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"moderate",occurrences:u}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"meta-refresh-timing-absent":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=1200*60,u=t.querySelectorAll?t.querySelectorAll('meta[http-equiv="refresh" i]'):[],k=[];let h=0;function v(A){const p=String(A??""),m=f=>f===" "||f===" "||f===`
14
+ `||f==="\f"||f==="\r";let s=0;for(;s<p.length&&m(p[s]);)s++;let c="";for(;s<p.length&&p[s]>="0"&&p[s]<="9";)c+=p[s++];if(!c)return null;if(p[s]===".")for(s++;s<p.length&&p[s]>="0"&&p[s]<="9";)s++;if(s>=p.length)return parseInt(c,10);let d=!1;for(;s<p.length&&m(p[s]);)d=!0,s++;return s>=p.length||p[s]===";"||p[s]===","||d?parseInt(c,10):null}for(const A of u){if(!A||!A.getAttribute||A.closest&&A.closest("noscript"))continue;const p=String(A.getAttribute("content")||"").trim();if(!p)continue;const m=v(p);if(m!==null){if(h+=1,!(m>0)||m>w)break;k.push(n.reportOccurrence(A,{summary:"This page refreshes itself automatically after a delay.",hint:"Remove the timed meta refresh, or provide a way for users to turn it off, extend it, or pause it before it triggers.",i18n:{summaryKey:"metaRefreshTimingAbsent_summary_fail",hintKey:"metaRefreshTimingAbsent_hint_fail",params:{delay:String(m)}},data:{details:{reasonCode:"META_REFRESH_DELAYED",delay:m}}}));break}}return h===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:k.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"serious",occurrences:k}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"meta-viewport-large":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(v){const A={};for(const p of String(v||"").split(/[,;]/)){const m=p.indexOf("=");if(m===-1)continue;const s=p.slice(0,m).trim().toLowerCase(),c=p.slice(m+1).trim().toLowerCase();s&&(A[s]=c)}return A}const u=t.querySelectorAll?t.querySelectorAll('meta[name="viewport" i]'):[],k=[];let h=0;for(const v of u){if(!v||!v.getAttribute)continue;const A=String(v.getAttribute("content")||"").trim();if(!A)continue;h+=1;const p=w(A),m=[],s=p["user-scalable"];(s==="no"||s==="0")&&m.push("user-scalable="+s);const c=p["maximum-scale"];if(c!==void 0){const d=parseFloat(c);!Number.isNaN(d)&&d<5&&m.push("maximum-scale="+c)}m.length&&k.push(n.reportOccurrence(v,{summary:"This viewport meta tag restricts zoom below the 500% best-practice target.",hint:"Remove user-scalable=no and raise maximum-scale to at least 5 (500%) if possible.",i18n:{summaryKey:"metaViewportLarge_summary_cantTell",hintKey:"metaViewportLarge_hint_cantTell",params:{reasons:m.join(", ")}},data:{details:{reasonCode:"VIEWPORT_ZOOM_BELOW_500",reasons:m}}}))}return h===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:k.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:k}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"meta-viewport-zoom-enabled":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(v){const A={};for(const p of String(v||"").split(/[,;]/)){const m=p.indexOf("=");if(m===-1)continue;const s=p.slice(0,m).trim().toLowerCase(),c=p.slice(m+1).trim().toLowerCase();s&&(A[s]=c)}return A}const u=t.querySelectorAll?t.querySelectorAll('meta[name="viewport" i]'):[],k=[];let h=0;for(const v of u){if(!v||!v.getAttribute)continue;const A=String(v.getAttribute("content")||"").trim();if(!A)continue;const p=w(A);if(p["user-scalable"]===void 0&&p["maximum-scale"]===void 0)continue;h+=1;const m=[],s=p["user-scalable"];if(s!==void 0&&s!=="yes"&&s!=="device-width"&&s!=="device-height"){const d=parseFloat(s);(Number.isNaN(d)||d>-1&&d<1)&&m.push("user-scalable="+s)}const c=p["maximum-scale"];if(c!==void 0&&c!=="device-width"&&c!=="device-height"){const d=parseFloat(c);(Number.isNaN(d)||d>=0&&d<2)&&m.push("maximum-scale="+c)}m.length&&k.push(n.reportOccurrence(v,{summary:"This viewport meta tag restricts the user’s ability to zoom.",hint:"Remove user-scalable=no and any maximum-scale below 2 from the viewport meta content.",i18n:{summaryKey:"metaViewportZoomEnabled_summary_fail",hintKey:"metaViewportZoomEnabled_hint_fail",params:{reasons:m.join(", ")}},data:{details:{reasonCode:"VIEWPORT_ZOOM_RESTRICTED",reasons:m}}}))}return h===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:k.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"serious",occurrences:k}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"meter-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(d){return String(d||"").replace(/\s+/g," ").trim()}function k(d,f){try{return!d||!d.getAttribute?"":u(d.getAttribute(f))}catch{return""}}function h(d,f,g){const i=k(f,"aria-labelledby");if(!i)return"";if(n.getTextFromIdRefs)try{const a=n.getTextFromIdRefs(i,o,{maxRefs:g||8});return u(a&&a.text)}catch{}return""}function v(d,f,g){const i=d&&typeof d.isIncludedInAccessibilityTree=="function"?d.isIncludedInAccessibilityTree:d&&typeof d.isAccTreeEligible=="function"?d.isAccTreeEligible:null;if(!i)return!0;try{const a=i(f,g);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const A=[];let p=0;const m='[role="meter"]',s=n.queryAllSmart?n.queryAllSmart(m):n.queryAll(m);function c(d){return k(d,"aria-label")?{ok:!0,method:"aria-label"}:h(t,d,8)?{ok:!0,method:"aria-labelledby"}:k(d,"title")?{ok:!0,method:"title"}:{ok:!1,method:"none"}}for(const d of s){if(!d||!v(n,d,o)||k(d,"role").toLowerCase()!=="meter")continue;p+=1;const g=c(d);if(g.ok)continue;const i=w?(()=>{try{return w(d,o,{targetSet:"acc"})}catch{return null}})():null;A.push(n.reportOccurrence(d,{summary:"This meter has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this meter's accessible name.",i18n:{summaryKey:"meterNamePresent_summary_fail",hintKey:"meterNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"meter",methodTried:g.method},visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return p===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:A.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:A}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"mouse-only-event-handlers":{run:(function(o){const{helpers:t,rule:n}=o,e=["onmouseover","onmouseout","onmousedown","onmouseup","ondblclick","onmousemove","onmouseenter","onmouseleave"],w=["onkeydown","onkeyup","onkeypress","onfocus","onblur"];function u(p){return(p==null?"":String(p)).trim()}const k=e.map(p=>`[${p}]`).join(", "),h=t.queryAllSmart?t.queryAllSmart(k):t.queryAll(k),v=[];let A=0;for(const p of h){if(!p||!p.getAttribute)continue;const m=e.filter(g=>u(p.getAttribute(g)));if(!m.length)continue;const s=t.isAccTreeEligible?t.isAccTreeEligible(p,o):!0;if(!(typeof s=="boolean"?s:!!(s&&s.eligible))||(A+=1,w.some(g=>u(p.getAttribute(g)))))continue;const f=t.getEligibilityInfo?t.getEligibilityInfo(p,o,{targetSet:"acc"}):null;v.push(t.reportOccurrence(p,{summary:`This element has ${m.join(", ")} but no keyboard-reachable equivalent handler.`,hint:"Add onkeydown/onkeyup/onkeypress (or onfocus/onblur for hover-triggered behavior) so this functionality is also reachable by keyboard.",i18n:{summaryKey:"mouseOnlyEventHandlers_summary_cantTell",hintKey:"mouseOnlyEventHandlers_hint_cantTell",params:{attrs:m.join(", ")}},data:{details:{reasonCode:"MOUSE_ONLY_HANDLER_NO_KEYBOARD_EQUIVALENT",mouseAttrs:m},visibilityFilter:f||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return A===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:v.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:v}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"nested-interactive-controls-absent":{run:(function(o){const{helpers:t,rule:n}=o,e=["a[href]","button",'input:not([type="hidden"])',"select","textarea",'[role="button"]','[role="link"]','[role="checkbox"]','[role="radio"]','[role="switch"]','[role="tab"]','[role="textbox"]','[role="combobox"]','[role="listbox"]','[role="menuitem"]','[role="menuitemcheckbox"]','[role="menuitemradio"]','[role="option"]','[role="slider"]','[role="spinbutton"]','[role="searchbox"]','[role="treeitem"]'].join(", "),w=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null,u=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo:null;function k(i){if(!w)return!0;try{const a=w(i,o);return!!(a&&a.eligible)}catch{return!0}}function h(i){return!!(i&&i.nodeType===1&&typeof i.matches=="function"&&i.matches(e))}const v={option:["listbox","combobox"],tab:["tablist"],treeitem:["tree"],menuitem:["menu","menubar"],menuitemcheckbox:["menu","menubar"],menuitemradio:["menu","menubar"],radio:["radiogroup"]};function A(i){if(!i||i.nodeType!==1||typeof i.getAttribute!="function")return"";const a=i.getAttribute("role");if(!a)return"";const r=a.trim().split(/\s+/)[0];return r?r.toLowerCase():""}function p(i){if(!i)return null;if(i.parentElement)return i.parentElement;const a=i.parentNode;return a&&a.nodeType===1?a:null}function m(i){const a=A(i),r=v[a];if(!r)return!1;let l=p(i);for(;l&&l.nodeType===1;){if(r.indexOf(A(l))!==-1)return!0;l=p(l)}return!1}function s(i){if(!h(i)||!k(i))return!1;if(!u)return!0;try{const a=u(i,o);return!!(a&&a.focusable)}catch{return!0}}function c(i){const a=[],r=i&&i.children;if(!r||!r.length)return a;const l=[];for(let y=r.length-1;y>=0;y--)l.push(r[y]);for(;l.length;){const y=l.pop();if(y&&y.nodeType===1){if(m(y))continue;if(s(y)){a.push(y);continue}}const b=y&&y.children;if(b&&b.length)for(let _=b.length-1;_>=0;_--)l.push(b[_])}return a}const d=t.queryAllSmart?t.queryAllSmart(e):t.queryAll(e),f=[];let g=0;for(const i of d){if(!i||i.nodeType!==1||!k(i))continue;g+=1;const a=c(i);if(!a.length)continue;const r=a.map(b=>b&&b.tagName?b.tagName.toLowerCase():"unknown"),l=[...new Set(r)],y=i.tagName.toLowerCase();f.push(t.reportOccurrence(i,{summary:"This interactive control contains one or more other interactive controls.",hint:"Move the nested interactive control(s) outside this element; nested interactive controls are not reliably operable via assistive technology.",i18n:{summaryKey:"nestedInteractiveControlsAbsent_summary_fail",hintKey:"nestedInteractiveControlsAbsent_hint_fail",params:{element:y,nestedElements:l.join(", ")}},data:{details:{reasonCode:"NESTED_INTERACTIVE_CONTROL",element:y,nestedElements:r}}}))}return g===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:f.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:f}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"no-autoplay-audio":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("audio[autoplay], video[autoplay]"):t.queryAll("audio[autoplay], video[autoplay]"),w=[];let u=0;for(const k of e){if(!k||!k.hasAttribute||k.hasAttribute("muted")||(u+=1,k.hasAttribute("controls")))continue;const h=(k.tagName||"").toLowerCase(),v=t.buildSelector?t.buildSelector(k):"html",A=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(k):k.outerHTML||"",p={selector:v,html:A,summary:"This element autoplays audio without a native pause/stop or volume-control mechanism.",hint:"If this clip plays for more than 3 seconds, add a `controls` attribute (or an equivalent custom mechanism) so users can pause/stop it or control its volume independently of the system volume.",i18n:{summaryKey:"noAutoplayAudio_summary_cantTell",hintKey:"noAutoplayAudio_hint_cantTell",params:{element:h}},data:{details:{reasonCode:"AUTOPLAY_NO_CONTROLS_MECHANISM",mediaTag:h}}};t&&typeof t.reportOccurrence=="function"?w.push(t.reportOccurrence(k,p)):w.push(p)}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:w}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"object-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:a=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(a)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isIncludedInAccessibilityTree=="function"?e.isIncludedInAccessibilityTree:e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,m=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null,s=(()=>{try{return Array.from((k?k("object"):h("object"))||[])}catch{return h("object")}})();if(!s.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const c=[];let d=0;const f=a=>(a==null?"":String(a)).trim();function g(a){const r=[];let l=null;if(m&&(l=(()=>{try{return m(a,o)}catch{return null}})()),l&&l.present&&f(l.value))return{present:!0,value:f(l.value),mechanism:l.mechanism||"aria",flags:(l.flags||[]).slice(0)};const y=f(a.getAttribute&&a.getAttribute("title"));if(y)return r.push("title-used"),{present:!0,value:y,mechanism:"title",flags:r};if(l&&l.flags&&l.flags.length)for(const b of l.flags)r.push(b);return{present:!1,value:"",mechanism:"none",flags:r}}function i(a){try{const r=f(a.textContent||""),l=r.length>1e3?r.slice(0,1e3):r;return{present:!!l,value:l,mechanism:"fallback",flags:l?[]:["empty"]}}catch{return{present:!1,value:"",mechanism:"fallback",flags:["error"]}}}for(const a of s){if(!a||!a.getAttribute)continue;if(A){const x=(()=>{try{return A(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(x===!1||x&&x.eligible===!1)continue}const r=(()=>{try{return String(a.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(r==="presentation"||r==="none"){let x;if(p){const C=(()=>{try{return p(a,o)}catch{return null}})();x=!!(C&&C.focusable)}else{const C=a.getAttribute("tabindex");x=C!=null&&String(C).trim()!==""&&!Number.isNaN(Number(String(C).trim()))}if(!x)continue}d+=1;const l=g(a),y=l.present?{present:!1,value:"",mechanism:"fallback",flags:["skipped-name-present"]}:i(a);if(!!(l.present||y.present))continue;const _=v?v(a,o,{targetSet:"acc"}):null,I={summary:"Missing text alternative for <object>.",hint:"Provide meaningful fallback content inside <object>, add an accessible name (aria-label/aria-labelledby), or use a title attribute as a best-effort fallback.",i18n:{summaryKey:"object_textAltPresent_summary_fail",hintKey:"object_textAltPresent_hint_fail",params:{element:"object"}},data:{visibilityFilter:_||{targetSet:"acc",accEligible:null,reasons:[]},fallback:y,name:l}};e&&typeof e.reportOccurrence=="function"?c.push(e.reportOccurrence(a,I)):c.push({selector:"",html:"",...I})}return d===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:c.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:c}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"object-text-alternative-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:f=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(f)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function m(f){const g=(()=>{try{return String(f.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(g!=="presentation"&&g!=="none")return!1;let i;if(p){const a=(()=>{try{return p(f,o)}catch{return null}})();i=!!(a&&a.focusable)}else{const a=f.getAttribute("tabindex");i=a!=null&&String(a).trim()!==""&&!Number.isNaN(Number(String(a).trim()))}return!i}const s=(()=>{try{return Array.from((k?k("object"):h("object"))||[])}catch{return h("object")}})();if(!s.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const c=[];let d=0;for(const f of s){if(!f||!f.getAttribute)continue;if(A){const C=(()=>{try{return A(f,o)}catch{return{eligible:!0,reasons:[]}}})();if(C&&C.eligible===!1)continue}if(m(f))continue;const g=C=>(C==null?"":String(C)).trim();let i="",a="",r="",l="",y="";try{i=g(f.textContent||""),a=g(f.getAttribute("aria-label")),r=g(f.getAttribute("aria-labelledby")),l=g(f.getAttribute("title"))}catch{}if(!a&&r&&e&&typeof e.getTextFromIdRefs=="function")try{const C=e.getTextFromIdRefs(r,o);y=g(C&&C.text)}catch{}const b={fallbackText:i||null,ariaLabel:a||null,ariaLabelledBy:r||null,ariaLabelledByText:y||null,title:l||null};if(!!!(b.fallbackText||b.ariaLabel||b.ariaLabelledByText||b.title))continue;d+=1;const I=v?v(f,o,{targetSet:"acc"}):null,x={summary:"Review text alternative for <object> for equivalence and appropriateness.",hint:"Confirm the fallback content or ARIA name provides an equivalent alternative for the embedded content.",i18n:{summaryKey:"object_textAltQuality_summary_cantTell",hintKey:"object_textAltQuality_hint_cantTell",params:{element:"object"}},data:{visibilityFilter:I||{targetSet:"acc",accEligible:null,reasons:[]},details:b}};e&&typeof e.reportOccurrence=="function"?c.push(e.reportOccurrence(f,x)):c.push({selector:"",html:"",...x})}return d===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:c}}),applicability:null},"option-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(f){return String(f||"").replace(/\s+/g," ").trim()}function k(f,g){try{return!f||!f.getAttribute?"":u(f.getAttribute(g))}catch{return""}}function h(f,g){if(n.getContentNameInfo){const a=n.getContentNameInfo(g,o);return a&&a.present?a.value:""}return(g&&g.textContent?String(g.textContent):"").replace(/\s+/g," ").trim()}function v(f,g,i){const a=k(g,"aria-labelledby");if(!a)return"";if(n.getTextFromIdRefs)try{const r=n.getTextFromIdRefs(a,o,{maxRefs:i||8});return u(r&&r.text)}catch{}return""}function A(f,g,i){const a=f&&typeof f.isIncludedInAccessibilityTree=="function"?f.isIncludedInAccessibilityTree:f&&typeof f.isAccTreeEligible=="function"?f.isAccTreeEligible:null;if(!a)return!0;try{const r=a(g,i);return typeof r=="boolean"?r:!!(r&&r.eligible)}catch{return!0}}const p=[];let m=0;const s='[role="option"]',c=n.queryAllSmart?n.queryAllSmart(s):n.queryAll(s);function d(f){return k(f,"aria-label")?{ok:!0,method:"aria-label"}:v(t,f,8)?{ok:!0,method:"aria-labelledby"}:k(f,"title")?{ok:!0,method:"title"}:h(t,f)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const f of c){if(!f||!A(n,f,o))continue;m+=1;const g=d(f);if(g.ok)continue;const i=w?(()=>{try{return w(f,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(f,{summary:"This element has no accessible name.",hint:"Provide aria-label or aria-labelledby (preferred), or provide visible text that is not hidden from assistive technologies.",i18n:{summaryKey:"optionNamePresent_summary_fail",hintKey:"optionNamePresent_hint_fail",params:{controlType:"option"}},data:{details:{reasonCode:"name_missing",controlType:"option",methodTried:g.method},visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"p-as-heading":{run:(function(o){const{helpers:t,rule:n}=o,e=120,w=18;function u(c){return(c==null?"":String(c)).trim()}function k(c){try{if(!c||c.nodeType!==1)return null;if(t&&typeof t.computedStyle=="function"){const f=t.computedStyle(c);if(f)return f}const d=c.ownerDocument&&c.ownerDocument.defaultView?c.ownerDocument.defaultView:null;if(d&&typeof d.getComputedStyle=="function")return d.getComputedStyle(c)}catch{}return null}function h(c){if(!c)return!1;const d=u(c.fontWeight).toLowerCase();if(d==="bold"||d==="bolder")return!0;const f=Number.parseInt(d,10);return Number.isFinite(f)&&f>=700}function v(c,d){const f=k(c);if(h(f))return!0;const g=Array.from(c.children||[]),i=g.find(a=>{const r=(a.tagName||"").toLowerCase();return r==="strong"||r==="b"});if(i&&g.length===1){const a=u(i.textContent||"");if(a&&a===d)return!0}return!1}function A(c){const d=k(c);if(!d)return 0;const f=Number.parseFloat(d.fontSize);return Number.isFinite(f)?f:0}const p=t.queryAllSmart?t.queryAllSmart("p"):t.queryAll("p"),m=[];let s=0;for(const c of p){if(!c||!c.getAttribute)continue;const d=u(c.textContent||"");if(!d||d.length>e||(s+=1,!v(c,d)))continue;const f=A(c);if(f<w)continue;const g=t.buildSelector?t.buildSelector(c):"html",i=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(c):c.outerHTML||"",a={selector:g,html:i,summary:"This paragraph is entirely bold and rendered at a heading-like size.",hint:'If this text introduces a new section, use a real heading element (<h1>-<h6> or role="heading") instead of styling a paragraph to look like one.',i18n:{summaryKey:"pAsHeading_summary_cantTell",hintKey:"pAsHeading_hint_cantTell",params:{fontSizePx:String(f)}},data:{details:{reasonCode:"BOLD_LARGE_PARAGRAPH",fontSizePx:f}}};t&&typeof t.reportOccurrence=="function"?m.push(t.reportOccurrence(c,a)):m.push(a)}return s===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:m.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:m}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"page-has-heading-one":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.body?t.body:null;if(!w)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function u(s){return String(s||"").replace(/\s+/g," ").trim()}function k(s){const c=u(s.getAttribute&&s.getAttribute("role"));return c?c.split(/\s+/)[0].toLowerCase():""}function h(s){const c=k(s);return c?c!=="heading"?!1:u(s.getAttribute&&s.getAttribute("aria-level"))==="1":(s.tagName?s.tagName.toLowerCase():"")==="h1"}const v=n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null;function A(s){if(!v)return!0;try{const c=v(s,o);return typeof c=="boolean"?c:!!(c&&c.eligible)}catch{return!0}}let p;try{p=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart("h1, [role]"):t.querySelectorAll("h1, [role]")}catch{p=[]}return Array.from(p).some(s=>s&&h(s)&&A(s))?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:[n.reportOccurrence(w,{summary:"This page has no level-one heading.",hint:`Add a level-one heading (<h1> or role="heading" aria-level="1") that identifies the page's main content.`,i18n:{summaryKey:"pageHasHeadingOne_summary_cantTell",hintKey:"pageHasHeadingOne_hint_cantTell",params:{}},data:{details:{reasonCode:"HEADING_ONE_MISSING"}}})]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"page-title-patterns":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=o&&o.inputs&&o.inputs.probes&&typeof o.inputs.probes=="object"?o.inputs.probes:null,u=w&&w["crawl.pageTitles"]&&typeof w["crawl.pageTitles"]=="object"?w["crawl.pageTitles"]:null,k=[];let h=1;const v=t.querySelector("head > title"),p=(t.title||"").replace(/\s+/g," ").trim(),m=p.toLowerCase();if(u&&Array.isArray(u.pages)){const g=u.pages.filter(r=>r&&typeof r=="object"),i=10,a=g.map(r=>({url:r.url?String(r.url):null,title:typeof r.title=="string"?r.title.replace(/\s+/g," ").trim():""})).filter(r=>r.url&&r.title);if(a.length>=i){let b=function(D,F){const E=Math.min(D.length,F.length);let P=0;for(;P<E&&D[P]===F[P];P++);return D.slice(0,P)},_=function(D,F){const E=D.split("").reverse().join(""),P=F.split("").reverse().join("");return b(E,P).split("").reverse().join("")};const r=new Map;for(const D of a){const F=D.title.toLowerCase();r.has(F)||r.set(F,{title:D.title,urls:[]}),r.get(F).urls.push(D.url)}const l=Array.from(r.values()).filter(D=>D.urls.length>=2),y=a.map(D=>D.title);let I=y[0]||"",x=y[0]||"";for(let D=1;D<y.length&&(I=b(I,y[D]),x=_(x,y[D]),!(I.length===0&&x.length===0));D++);const C=I.trim().length,N=x.trim().length,L=(C>=12||N>=12)&&(C>=12?I.trim().length:0)+(N>=12?x.trim().length:0)>=12;if(l.length||L){const D=l.length?"duplicateTitlesAcrossPages":"templatedTitlesAcrossPages",F=l.length&&l.map(H=>String(H.title||"").replace(/\s+/g," ").trim()).filter(Boolean).sort((H,W)=>H.localeCompare(W,void 0,{sensitivity:"base"}))[0]||"",E=l.length?"pageTitlePatterns_summary_cantTell_duplicateAcrossPages":"pageTitlePatterns_summary_cantTell_templatedAcrossPages",P=l.length?{reasonCode:D,pagesAnalyzed:a.length,duplicateGroups:l.length,exampleTitle:F}:{reasonCode:D,pagesAnalyzed:a.length},z={selector:"head > title",html:"",summary:"The set of page titles may not be descriptive enough to distinguish pages by topic or purpose.",hint:"Ensure each page title is sufficiently descriptive and helps users distinguish pages (avoid identical or overly templated titles across many pages).",i18n:{summaryKey:E,hintKey:"pageTitlePatterns_hint_cantTell",params:P},data:{details:{reasonCode:D,metrics:{pagesAnalyzed:a.length,duplicateGroups:l.length,largestDuplicateGroupSize:l.length?Math.max(...l.map(H=>H.urls.length)):0,sharedPrefix:C>=12?I.trim():"",sharedSuffix:N>=12?x.trim():""},refs:{exampleDuplicateTitles:l.slice(0,3).map(H=>({title:H.title,urls:H.urls.slice(0,5)}))}},visibilityFilter:{targetSet:"acc",accEligible:null,reasons:[]}}};return v&&n&&typeof n.reportOccurrence=="function"?k.push(n.reportOccurrence(v,z)):k.push({...z,html:v&&v.outerHTML?String(v.outerHTML).slice(0,2e3):"<title>(unknown)</title>"}),{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:k}}return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}}if(!v||p.length===0)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const s=new Set(["home","homepage","welcome","untitled","page","document"]),c=p.length>0&&p.length<8,d=s.has(m),f=/\b(home|homepage|welcome)\b\s*(\||-|—|:)\s*.+/i.test(p)||/.+\s*(\||-|—|:)\s*\b(home|homepage|welcome)\b/i.test(p);if(d||c||f){const g=d?"genericTitle":c?"veryShortTitle":"templateLikeTitle",a={selector:"head > title",html:"",summary:"The page title may not be descriptive enough to identify the page topic or purpose.",hint:"Use a more specific title that identifies the page topic or purpose (for example, include the section name or task).",i18n:{summaryKey:g==="genericTitle"?"pageTitlePatterns_summary_cantTell_generic":g==="veryShortTitle"?"pageTitlePatterns_summary_cantTell_veryShort":"pageTitlePatterns_summary_cantTell_templateLike",hintKey:"pageTitlePatterns_hint_cantTell",params:{}},data:{details:{reasonCode:g,titleText:p},visibilityFilter:{targetSet:"acc",accEligible:null,reasons:[]}}};v&&n&&typeof n.reportOccurrence=="function"?k.push(n.reportOccurrence(v,a)):k.push({...a,html:v&&v.outerHTML?String(v.outerHTML).slice(0,2e3):"<title>(unknown)</title>"})}return h===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:k.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:k}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"page-title-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=[];let u=1;const k=t.querySelector("title"),h=(t.title||"").replace(/\s+/g," ").trim(),v=!k,A=!v&&h.length===0;if(v||A){const m={selector:"head > title",html:"",summary:v?"The page is missing a <title> element.":"The page has an empty <title>.",hint:"Provide a descriptive, non-empty <title> that identifies the page topic or purpose.",i18n:{summaryKey:v?"pageTitlePresent_summary_fail_missing":"pageTitlePresent_summary_fail_empty",hintKey:"pageTitlePresent_hint_fail",params:{}},data:{details:{reasonCode:v?"missingTitleElement":"emptyTitleText",titleText:h},visibilityFilter:{targetSet:"acc",accEligible:null,reasons:[]}}};!v&&k&&n&&typeof n.reportOccurrence=="function"?w.push(n.reportOccurrence(k,m)):w.push({...m,html:"<title>(missing)</title>"})}return u===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:w}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"password-paste-enabled":{run:(function(o){const{helpers:t,rule:n}=o,e=["current-password","new-password","one-time-code"];function w(c){return String(c||"").replace(/\s+/g," ").trim()}function u(c){return w(c.getAttribute&&c.getAttribute("autocomplete")).toLowerCase().split(" ").filter(Boolean)}function k(c){const d=c.tagName?c.tagName.toLowerCase():"";if(d!=="input"&&d!=="textarea")return!1;const f=u(c);if(e.some(a=>f.includes(a)))return!0;const g=w(c.getAttribute&&c.getAttribute("type")).toLowerCase();return d!=="input"||g!=="password"?!1:!f.some(a=>a!=="on"&&a!=="off"&&!e.includes(a))}function h(c){return!(c.hasAttribute&&(c.hasAttribute("disabled")||c.hasAttribute("readonly")))}function v(c){const d=String(c||"").trim();if(!d)return"none";const f=[/\breturn\s+false\b/gi,/\breturn\s*!1\b/gi,/\bpreventDefault\s*\(\s*\)/gi,/\breturnValue\s*=\s*(?:false|!1)\b/gi],g=[/\breturn\s+true\b/gi,/\breturn\s*!0\b/gi],i=[/\bstop(?:Immediate)?Propagation\s*\(\s*\)/gi,/\breturn\b/gi],a=/\b(?:window|document|this|event|evt|ev|e|arguments\[0\])\b/gi,r=/^[\s;.,()[\]{}]*$/;let l=d,y=!1;for(const b of f){const _=l.replace(b," ");_!==l&&(y=!0),l=_}if(!y){for(const b of g)l=l.replace(b," ");for(const b of i)l=l.replace(b," ");return l=l.replace(a," "),r.test(l)?"none":"opaque"}for(const b of i)l=l.replace(b," ");return l=l.replace(a," "),r.test(l)?"cancelOnly":"opaque"}const A=t.queryAllSmart?t.queryAllSmart("input, textarea"):t.queryAll("input, textarea"),p=[],m=[];for(const c of A){if(!c||!c.getAttribute||!k(c)||!h(c))continue;const d=t.isAccTreeEligible?t.isAccTreeEligible(c,o):!0;if(!(typeof d=="boolean"?d:!!(d&&d.eligible)))continue;const g=c.getAttribute("onpaste");if(g===null)continue;const i=v(g);if(i==="none")continue;const a=t.getEligibilityInfo?t.getEligibilityInfo(c,o,{targetSet:"acc"}):{targetSet:"acc",accEligible:null,reasons:[]};if(i==="cancelOnly"){p.push(t.reportOccurrence(c,{summary:"This authentication field has a paste handler whose only effect is to cancel the paste.",hint:"Confirm by hand whether pasting still works. If it is blocked, remove the handler so a password manager, or the clipboard for a one-time code, can fill the field.",i18n:{summaryKey:"passwordPasteEnabled_summary_fail",hintKey:"passwordPasteEnabled_hint_fail",params:{}},data:{visibilityFilter:a,details:{reasonCode:"PASTE_CANCELLED",handler:w(g)}}}));continue}m.push(t.reportOccurrence(c,{summary:"This authentication field has a paste handler, and whether it cancels pasting could not be determined.",hint:"Check by hand that pasting into the field still works, so a password manager or the clipboard can fill it.",i18n:{summaryKey:"passwordPasteEnabled_summary_cantTell",hintKey:"passwordPasteEnabled_hint_cantTell",params:{}},data:{visibilityFilter:a,details:{reasonCode:"PASTE_HANDLER_OPAQUE",handler:w(g)}}}))}const s=p.concat(m);return s.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"serious",occurrences:s}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"presentation-role-conflict":{run:(function(o){const{helpers:t,rule:n}=o,e=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"],w=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo:null,u=t&&t.aria?t.aria:null;function k(p){const m=p.getAttribute?p.getAttribute("role"):null;if(!m)return"";const s=String(m).trim().toLowerCase().split(/\s+/);for(const c of s){if(!c)continue;if(c==="presentation"||c==="none"||(u?u.isValidConcreteRole(c):!0))return c}return""}const h=t.queryAllSmart?t.queryAllSmart('[role="presentation"], [role="none"], img[alt=""]'):t.queryAll('[role="presentation"], [role="none"], img[alt=""]'),v=[];let A=0;for(const p of h){if(!p||!p.getAttribute)continue;const m=k(p);if(m&&m!=="presentation"&&m!=="none")continue;A+=1;let s=e.filter(g=>p.hasAttribute?p.hasAttribute(g):p.getAttribute(g)!=null);p.getAttribute("aria-hidden")==="true"&&(s=[]);let c=!1;if(w)try{const g=w(p,o);c=!!(g&&g.focusable)}catch{c=!1}if(!s.length&&!c)continue;const d=s.slice();c&&d.push("focusable");const f=m||"presentation";v.push(t.reportOccurrence(p,{summary:`This role="${f}" element also has a conflicting condition (${d.join(", ")}), which restores its implicit role and cancels the presentational intent.`,hint:'Remove the conflicting naming attribute(s) and/or focusability (tabindex/native) if the element should stay presentational, or remove role="presentation"/"none" if it should be exposed to assistive technology.',i18n:{summaryKey:"presentationRoleConflict_summary_cantTell",hintKey:"presentationRoleConflict_hint_cantTell",params:{role:f,attrs:d.join(", ")}},data:{details:{reasonCode:"PRESENTATION_ROLE_CONFLICT",role:f,conflictingAttrs:s,focusable:c}}}))}return A===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:v.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:v}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"presentational-children-focusable-absent":{run:(function(o){const{helpers:t,rule:n}=o,e=["button","checkbox","doc-pagebreak","graphics-symbol","img","menuitemcheckbox","menuitemradio","meter","option","progressbar","radio","scrollbar","separator","slider","switch","tab"],w={button:"button",meter:"meter",option:"option",progress:"progressbar"},u=t&&t.aria?t.aria:null,k=t&&typeof t.getFocusableInfo=="function"?t.getFocusableInfo:null,h=t&&typeof t.isDomVisibleEligible=="function"?t.isDomVisibleEligible:null,v=t&&typeof t.getEligibilityInfo=="function"?t.getEligibilityInfo:null,A=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null,p=new Set(e);function m(_){return(_==null?"":String(_)).trim().toLowerCase()}function s(_){const I=_.getAttribute?_.getAttribute("role"):null;if(I){const C=m(I).split(/\s+/);for(const N of C){if(!N)continue;if(p.has(N))return N;if(u?u.isValidConcreteRole(N):!0)return""}}const x=m(_.tagName);return Object.prototype.hasOwnProperty.call(w,x)?w[x]:""}function c(_){if(!A)return!0;try{const I=A(_,o);return typeof I=="boolean"?I:!!(I&&I.eligible)}catch{return!0}}const d=t&&typeof t.composedParent=="function"?t.composedParent:function(_){return _&&_.parentElement?_.parentElement:null};function f(_){let I=_,x=0;for(;I&&x++<200;){if(m(I.getAttribute&&I.getAttribute("aria-hidden"))==="true")return!0;I=d(I)}return!1}function g(_){if(!h)return!0;try{const I=h(_,o,{visibilityMode:"styleOnly",disableGeometry:!0});return!(I&&I.eligible===!1)}catch{return!0}}function i(_){if(!k)return!1;try{const I=k(_,o);return!!(I&&I.tabbable)}catch{return!1}}function a(_){const I=[],x=_&&_.children;if(!x||!x.length)return I;const C=[];for(let N=x.length-1;N>=0;N--)C.push(x[N]);for(;C.length;){const N=C.pop();if(!N||N.nodeType!==1||m(N.getAttribute&&N.getAttribute("aria-hidden"))==="true"||!g(N))continue;if(i(N)){I.push(N);continue}if(s(N))continue;const L=N.children;if(L&&L.length)for(let D=L.length-1;D>=0;D--)C.push(L[D])}return I}const r="[role], button, meter, option, progress",l=t.queryAllSmart?t.queryAllSmart(r):t.queryAll(r),y=[];let b=0;for(const _ of l){if(!_||_.nodeType!==1)continue;const I=s(_);if(!I||!c(_)||f(_))continue;b+=1;const x=a(_);if(!x.length)continue;const C=x.map(D=>D&&D.tagName?m(D.tagName):"unknown"),N=[...new Set(C)],L=v?(()=>{try{return v(_,o,{targetSet:"acc"})}catch{return null}})():null;y.push(t.reportOccurrence(_,{summary:`This role="${I}" element makes its children presentational, but it contains content that is still part of sequential focus navigation (${N.join(", ")}).`,hint:"Move the focusable content outside this element, or remove the role that makes the children presentational, since focus landing inside it has no role or name to announce.",i18n:{summaryKey:"presentationalChildrenFocusableAbsent_summary_fail",hintKey:"presentationalChildrenFocusableAbsent_hint_fail",params:{role:I,focusableElements:N.join(", ")}},data:{visibilityFilter:L||{targetSet:"acc",accEligible:null,reasons:[]},details:{reasonCode:"PRESENTATIONAL_CHILDREN_FOCUSABLE_CONTENT",role:I,element:m(_.tagName),focusableElements:C}}}))}return b===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:y.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:y}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"progressbar-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(d){return String(d||"").replace(/\s+/g," ").trim()}function k(d,f){try{return!d||!d.getAttribute?"":u(d.getAttribute(f))}catch{return""}}function h(d,f,g){const i=k(f,"aria-labelledby");if(!i)return"";if(n.getTextFromIdRefs)try{const a=n.getTextFromIdRefs(i,o,{maxRefs:g||8});return u(a&&a.text)}catch{}return""}function v(d,f,g){const i=d&&typeof d.isIncludedInAccessibilityTree=="function"?d.isIncludedInAccessibilityTree:d&&typeof d.isAccTreeEligible=="function"?d.isAccTreeEligible:null;if(!i)return!0;try{const a=i(f,g);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const A=[];let p=0;const m='[role="progressbar"]',s=n.queryAllSmart?n.queryAllSmart(m):n.queryAll(m);function c(d){return k(d,"aria-label")?{ok:!0,method:"aria-label"}:h(t,d,8)?{ok:!0,method:"aria-labelledby"}:k(d,"title")?{ok:!0,method:"title"}:{ok:!1,method:"none"}}for(const d of s){if(!d||!v(n,d,o)||k(d,"role").toLowerCase()!=="progressbar")continue;p+=1;const g=c(d);if(g.ok)continue;const i=w?(()=>{try{return w(d,o,{targetSet:"acc"})}catch{return null}})():null;A.push(n.reportOccurrence(d,{summary:"This progress bar has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this progress bar's accessible name.",i18n:{summaryKey:"progressbarNamePresent_summary_fail",hintKey:"progressbarNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"progressbar",methodTried:g.method},visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return p===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:A.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:A}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},region:{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=t&&t.body?t.body:null;if(!w)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};function u(P){return String(P||"").replace(/\s+/g," ").trim()}function k(P){return String(P||"").toLowerCase()}function h(P){try{if(n&&typeof n.getLandmarkNameInfo=="function"){const z=n.getLandmarkNameInfo(P,o);if(z&&z.present&&z.value)return u(z.value)}}catch{}return""}function v(P){const z=u(P.getAttribute&&P.getAttribute("role"));return z?k(z.split(/\s+/)[0]):""}function A(P,z){return n&&typeof n.hasLandmarkScopingAncestor=="function"?n.hasLandmarkScopingAncestor(P,{includeMain:z}):!1}function p(P){const z=P.tagName?k(P.tagName):"";return z==="header"?A(P,!0)?"":"banner":z==="footer"?A(P,!0)?"":"contentinfo":z==="main"?"main":z==="nav"?"navigation":z==="aside"?A(P,!1)?h(P)?"complementary":"":"complementary":z==="section"?h(P)?"region":"":z==="form"&&h(P)?"form":""}const m=new Set(["banner","contentinfo","main","navigation","complementary","region","form","search"]);function s(P){if(!P||!P.getAttribute)return!1;const z=v(P);return z?m.has(z):!!p(P)}const c=new Set(["script","style","template","noscript","link","meta","title"]),d=new Set(["alert","status","log","marquee","timer"]);function f(P){const z=k(u(P.getAttribute&&P.getAttribute("aria-live")));return z==="polite"||z==="assertive"}function g(P){if((P.tagName?k(P.tagName):"")==="dialog")return!0;const H=v(P);return H==="dialog"||H==="alertdialog"}function i(P){const z=v(P);if(z)return z==="button";const H=P.tagName?k(P.tagName):"";if(H==="button"||H==="summary")return!0;if(H==="input"){const W=k(u(P.getAttribute&&P.getAttribute("type")));return W==="button"||W==="submit"||W==="reset"||W==="image"}return!1}function a(P){if((P.tagName?k(P.tagName):"")!=="a")return!1;const H=P.getAttribute&&P.getAttribute("href");if(!H||H.charAt(0)!=="#"||H.length<2)return!1;try{return!!(t.getElementById&&t.getElementById(H.slice(1)))}catch{return!1}}function r(P){if(s(P)||f(P))return!0;const z=v(P);if(z&&d.has(z)||g(P)||i(P))return!0;const H=P.tagName?k(P.tagName):"";return!!(H==="svg"||H==="iframe"||H==="frame"||a(P))}const l=new Set(["img","video","audio","canvas","object","embed"]);function y(P){const z=P.childNodes||[];for(let W=0;W<z.length;W++){const X=z[W];if(X.nodeType===3&&u(X.nodeValue))return!0}const H=P.tagName?k(P.tagName):"";return!!(l.has(H)||H==="input"&&k(u(P.getAttribute&&P.getAttribute("type")))!=="hidden"||u(P.getAttribute&&P.getAttribute("aria-label")))}const b=2e4;let _=0,I=!1;const x=[],C=new WeakSet;function N(P){let z=P;for(;z&&!(C.has(z)||(C.add(z),z===w));)z=z.parentElement}function L(P){if(I||!P||P.nodeType!==1)return;if(_+=1,_>b){I=!0;return}const z=P.tagName?k(P.tagName):"";if(c.has(z))return;const H=n.isAccTreeEligible?n.isAccTreeEligible(P):{eligible:!0};if(!(H&&H.eligible)){N(P);return}if(r(P)){N(P),(z==="iframe"||z==="frame")&&x.push(P);return}if(y(P)){x.push(P);return}const W=P.children||[];for(let X=0;X<W.length;X++)if(L(W[X]),I)return}for(const P of w.children||[])L(P);const D=[],F=new Set;for(const P of x){let z=P;for(;z.parentElement&&z.parentElement!==w&&!C.has(z.parentElement);)z=z.parentElement;F.has(z)||(F.add(z),D.push(z))}const E=D.map(P=>{const z=P.tagName?k(P.tagName):"",H={summary:"This content is not contained within a landmark region.",hint:"Move this content inside a landmark region (main, nav, aside, a labeled section, etc.).",i18n:{summaryKey:"region_summary_cantTell",hintKey:"region_hint_cantTell",params:{element:z}},data:{details:{reasonCode:"CONTENT_OUTSIDE_LANDMARK",element:z}}};return n&&typeof n.reportOccurrence=="function"?n.reportOccurrence(P,H):{selector:n.buildSelector?n.buildSelector(P):"html",html:n.getOuterHtmlSnippet?n.getOuterHtmlSnippet(P):P.outerHTML||"",...H}});return E.length===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:E}}),applicability:(function(o){return o.helpers.isWholeDocumentScope?o.helpers.isWholeDocumentScope():!0})},"role-img-text-alternative-present":{run:(function(o){const{root:t,helpers:n,rule:e}=o,w=t||document,u=n&&typeof n.queryAllSmart=="function"?n.queryAllSmart:null,k=n&&typeof n.queryAll=="function"?n.queryAll:d=>{try{return w&&w.querySelectorAll?Array.from(w.querySelectorAll(d)):[]}catch{return[]}},h=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null,v=d=>{try{return String(d??"").replace(/\s+/g," ").trim()}catch{return""}},A=(()=>{const d='[role="img" i]:not(img), [role="graphics-symbol" i], [role="graphics-document" i]';try{return Array.from((u?u(d):k(d))||[])}catch{return k(d)}})();if(!A.length)return{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const p=[];let m=0;const s=n&&typeof n.isIncludedInAccessibilityTree=="function"?n.isIncludedInAccessibilityTree:n&&typeof n.isAccTreeEligible=="function"?n.isAccTreeEligible:null,c=n&&typeof n.getAccessibleNameInfo=="function"?n.getAccessibleNameInfo:null;for(const d of A){if(!d||!d.getAttribute)continue;if(s){const z=(()=>{try{return s(d,o)}catch{return{eligible:!0,reasons:[]}}})();if(z&&z.eligible===!1||typeof z=="boolean"&&z===!1)continue}m+=1;const f=(()=>{try{return v(d.getAttribute("role")).split(/\s+/)[0].toLowerCase()}catch{return"img"}})(),g=(()=>{try{return d.getAttribute("aria-label")}catch{return null}})(),i=v(g),a=(()=>{try{return d.getAttribute("aria-labelledby")}catch{return null}})(),r=v(a),l=g!==null,y=a!==null,b=l&&i.length>0,_=y&&r.length>0,I=(()=>{try{return d.getAttribute("title")}catch{return null}})(),x=I!==null&&v(I).length>0,C=(()=>{try{if(!(d.namespaceURI==="http://www.w3.org/2000/svg"))return"";const H=d.firstElementChild;return(H?(H.localName||H.tagName||"").toLowerCase():"")!=="title"?"":v(H.textContent)}catch{return""}})(),N=x||!!C;let L=null,D="",F=!1;if(!l&&!y?N?F=!0:D="missingTextAlternative":l&&!b?N?F=!0:D="emptyAriaLabel":y&&!_?N?F=!0:D="emptyAriaLabelledby":c?(L=(()=>{try{return c(d,o)}catch{return null}})(),!!(L&&L.present&&v(L.value))?F=!0:D="nameNotResolved"):F=!0,F)continue;const E=h?h(d,o,{targetSet:"acc"}):null,P={summary:`Missing text alternative on element with role="${f}".`,hint:"Provide aria-label or aria-labelledby (referencing non-empty text) to give this element a text alternative.",i18n:{summaryKey:"roleImg_textAlternativePresent_summary_fail",hintKey:"roleImg_textAlternativePresent_hint_fail",params:{role:f}},data:{details:{reasonCode:D,ariaLabel:g===null?null:i,ariaLabelledby:a===null?null:r,accessibleNameInfo:L||null},visibilityFilter:E||{targetSet:"acc",accEligible:null,reasons:[]}}};n&&typeof n.reportOccurrence=="function"?p.push(n.reportOccurrence(d,P)):p.push({selector:"",html:"",...P})}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"scope-attr-valid":{run:(function(o){const{helpers:t,rule:n}=o,e=new Set(["row","col","rowgroup","colgroup"]),w=t.queryAllSmart?t.queryAllSmart("[scope]"):t.queryAll("[scope]"),u=[];let k=0;for(const h of w){if(!h||!h.getAttribute)continue;const v=String(h.getAttribute("scope")||"").trim();v&&(k+=1,!e.has(v.toLowerCase())&&u.push(t.reportOccurrence(h,{summary:"This scope attribute value is not recognized.",hint:"Use one of row, col, rowgroup, or colgroup for the scope attribute.",i18n:{summaryKey:"scopeAttrValid_summary_cantTell",hintKey:"scopeAttrValid_hint_cantTell",params:{value:v}},data:{details:{reasonCode:"SCOPE_ATTR_INVALID",value:v}}})))}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"scrollable-region-focusable":{run:(function(o){const{helpers:t,rule:n}=o;function e(s){try{if(!s||s.nodeType!==1)return null;if(t&&typeof t.computedStyle=="function"){const d=t.computedStyle(s);if(d)return d}const c=s.ownerDocument&&s.ownerDocument.defaultView?s.ownerDocument.defaultView:null;if(c&&typeof c.getComputedStyle=="function")return c.getComputedStyle(s)}catch{}return null}function w(s){if(!s)return!1;const c=String(s.overflowX||"").trim().toLowerCase(),d=String(s.overflowY||"").trim().toLowerCase();return c==="auto"||c==="scroll"||d==="auto"||d==="scroll"}function u(s){try{const c=s.getAttribute?s.getAttribute("tabindex"):null;if(c!=null){const d=Number.parseInt(c,10);if(Number.isFinite(d)&&d>=0)return!0}}catch{}return!1}const k='a[href], button, input, select, textarea, [tabindex], iframe, [contenteditable]:not([contenteditable="false"])';function h(s){try{return!!(s.querySelector&&s.querySelector(k))}catch{return!1}}const v="div, section, article, aside, main, nav, pre, table, blockquote, ul, ol, textarea",A=t.queryAllSmart?t.queryAllSmart(v):t.queryAll(v),p=[];let m=0;for(const s of A){if(!s||!s.getAttribute)continue;const c=e(s);if(!w(c)||(m+=1,u(s))||h(s))continue;const d=(s.tagName||"").toLowerCase(),f=t.buildSelector?t.buildSelector(s):"html",g=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(s):s.outerHTML||"",i={selector:f,html:g,summary:"This element declares overflow:auto/scroll, has no focusable descendant, and is not itself keyboard-focusable.",hint:'If this region’s content actually overflows, add tabindex="0" (and a suitable label) so keyboard users can focus it and scroll with the arrow keys.',i18n:{summaryKey:"scrollableRegionFocusable_summary_cantTell",hintKey:"scrollableRegionFocusable_hint_cantTell",params:{element:d}},data:{details:{reasonCode:"SCROLLABLE_OVERFLOW_NOT_FOCUSABLE",element:d}}};t&&typeof t.reportOccurrence=="function"?p.push(t.reportOccurrence(s,i)):p.push(i)}return m===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:p}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"searchbox-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function v(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=h(t,r);return l||k(r,"title")}function A(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function p(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}function m(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}const s=[];let c=0;const d='[role="searchbox"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=m(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?v(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=v(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?v(y):"";if(b)return b}}catch{}return""}function a(r){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:A(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!p(n,r,o))continue;c+=1;const l=a(r);if(l.ok)continue;const y=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This element has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this searchbox's accessible name.",i18n:{summaryKey:"searchboxNamePresent_summary_fail",hintKey:"searchboxNamePresent_hint_fail",params:{controlType:"searchbox"}},data:{details:{reasonCode:"name_missing",controlType:"searchbox",methodTried:l.method},visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"server-side-image-map-absent":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("img[ismap]"):t.queryAll("img[ismap]"),w=[];let u=0;for(const k of e)k&&(u+=1,w.push(t.reportOccurrence(k,{summary:"This image uses a server-side image map, which has no keyboard-operable equivalent.",hint:"Replace the server-side image map (ismap) with a client-side image map (<map>/<area>) or separate accessible links/buttons.",i18n:{summaryKey:"serverSideImageMapAbsent_summary_fail",hintKey:"serverSideImageMapAbsent_hint_fail",params:{}},data:{details:{reasonCode:"SERVER_SIDE_IMAGE_MAP"}}})));return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"skip-link":{run:(function(o){const{document:t,helpers:n,rule:e}=o;function w(s){return String(s||"").replace(/\s+/g," ").trim()}function u(s){const c=w(s.getAttribute&&s.getAttribute("aria-label"));if(c)return c;const d=w(s.getAttribute&&s.getAttribute("aria-labelledby"));if(d){const f=[];for(const i of d.split(/\s+/).filter(Boolean))try{const a=t.getElementById(i);if(a){const r=w(a.textContent);r&&f.push(r)}}catch{}const g=w(f.join(" "));if(g)return g}return w(s.textContent)}function k(){const s=t.documentElement||t.body||null;if(!s||!s.getClientRects||!s.getBoundingClientRect)return!1;try{const c=s.getClientRects(),d=c?c.length:0,f=s.getBoundingClientRect(),g=f&&Number.isFinite(f.width)?f.width:0,i=f&&Number.isFinite(f.height)?f.height:0;return d>0&&(g>0||i>0)}catch{return!1}}function h(s){return{eligible:!!(s&&s.eligible),reasons:s&&Array.isArray(s.reasons)?s.reasons.slice(0):[]}}const v=k(),A=n.queryAllSmart?n.queryAllSmart("a[href]"):n.queryAll("a[href]"),p=[];let m=0;for(const s of A){if(!s||!s.getAttribute)continue;const c=String(s.getAttribute("href")||"").trim();if(c.length<2||c.charAt(0)!=="#")continue;const d=u(s);if(!/skip/i.test(d)&&!/jump\s*to/i.test(d))continue;m+=1;let f=c.slice(1);try{f=decodeURIComponent(f)}catch{}f=f.trim();let g=null;if(f){try{g=t.getElementById(f)}catch{g=null}if(!g)try{g=t.querySelector('a[name="'+f.replace(/"/g,'\\"')+'"]')}catch{g=null}}if(g){const i=h(n.getEligibilityInfo?n.getEligibilityInfo(g,o,{targetSet:"acc"}):n.isAccTreeEligible?n.isAccTreeEligible(g,o):{eligible:!0,reasons:[]});let a=null,r=null;v&&n.isDomVisibleEligible&&(a=h(n.isDomVisibleEligible(g,o,{visibilityMode:"styleAndGeometry",ignoreOpacity:!0})),!a.eligible&&a.reasons.includes("noClientRects")?r="NO_CLIENT_RECTS":!a.eligible&&a.reasons.includes("zeroArea")&&(r="ZERO_AREA_TARGET"));const l=!i.eligible;if(!l&&!!!r)continue;p.push(n.reportOccurrence(s,{summary:"This skip link points to a target that exists but is not currently usable.",hint:"Point this skip link to a target that is exposed and usable as a navigation destination.",i18n:{summaryKey:"skipLink_summary_unusableTarget_cantTell",hintKey:"skipLink_hint_unusableTarget_cantTell",params:{href:c}},data:{details:{reasonCode:"SKIP_LINK_TARGET_UNUSABLE",href:c,unusableReasonCode:l?"ACC_TREE_INELIGIBLE":r,targetSelector:n.buildSelector?n.buildSelector(g):null,geometryCheckEnabled:v},visibilityFilter:{targetSet:"acc",accEligible:i.eligible,reasons:i.reasons},targetGeometry:a?{eligible:a.eligible,reasons:a.reasons}:{eligible:null,reasons:[]}}}));continue}p.push(n.reportOccurrence(s,{summary:"This skip link's target does not exist.",hint:"Point the skip link's href at an id that exists in the document, or add the missing target element.",i18n:{summaryKey:"skipLink_summary_cantTell",hintKey:"skipLink_hint_cantTell",params:{href:c}},data:{details:{reasonCode:"SKIP_LINK_TARGET_MISSING",href:c}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"cantTell",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"slider-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}function v(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function A(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=v(t,r);return l||k(r,"title")}function p(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function m(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}const s=[];let c=0;const d='[role="slider"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=h(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?A(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=A(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?A(y):"";if(b)return b}}catch{}return""}function a(r,l){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:p(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:l==="native-slider"?i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!m(n,r,o))continue;const l=(r.tagName||"").toLowerCase(),y=k(r,"type").toLowerCase(),b=k(r,"role").toLowerCase();let _;if(l==="input"&&y==="range")_="native-slider";else if(b==="slider")_="aria-slider";else continue;c+=1;const I=a(r,_);if(I.ok)continue;const x=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This slider has no accessible name.",hint:"Provide a label, aria-label, or aria-labelledby so assistive technologies can identify the slider.",i18n:{summaryKey:"sliderNamePresent_summary_fail",hintKey:"sliderNamePresent_hint_fail",params:{kind:_}},data:{details:{reasonCode:"name_missing",controlType:_,methodTried:I.method},visibilityFilter:x||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"spinbutton-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function v(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=h(t,r);return l||k(r,"title")}function A(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function p(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}function m(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}const s=[];let c=0;const d='[role="spinbutton"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=m(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?v(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=v(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?v(y):"";if(b)return b}}catch{}return""}function a(r){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:A(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!p(n,r,o))continue;c+=1;const l=a(r);if(l.ok)continue;const y=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This element has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this spinbutton's accessible name.",i18n:{summaryKey:"spinbuttonNamePresent_summary_fail",hintKey:"spinbuttonNamePresent_hint_fail",params:{controlType:"spinbutton"}},data:{details:{reasonCode:"name_missing",controlType:"spinbutton",methodTried:l.method},visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"summary-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(d){return String(d||"").replace(/\s+/g," ").trim()}function k(d,f){try{return!d||!d.getAttribute?"":u(d.getAttribute(f))}catch{return""}}function h(d,f){if(n.getContentNameInfo){const i=n.getContentNameInfo(f,o);return i&&i.present?i.value:""}return(f&&f.textContent?String(f.textContent):"").replace(/\s+/g," ").trim()}function v(d,f,g){const i=k(f,"aria-labelledby");if(!i)return"";if(n.getTextFromIdRefs)try{const a=n.getTextFromIdRefs(i,o,{maxRefs:g||8});return u(a&&a.text)}catch{}return""}function A(d,f,g){const i=d&&typeof d.isIncludedInAccessibilityTree=="function"?d.isIncludedInAccessibilityTree:d&&typeof d.isAccTreeEligible=="function"?d.isAccTreeEligible:null;if(!i)return!0;try{const a=i(f,g);return typeof a=="boolean"?a:!!(a&&a.eligible)}catch{return!0}}const p=[];let m=0;const s=n.queryAllSmart?n.queryAllSmart("summary"):n.queryAll("summary");function c(d){return k(d,"aria-label")?{ok:!0,method:"aria-label"}:v(t,d,8)?{ok:!0,method:"aria-labelledby"}:k(d,"title")?{ok:!0,method:"title"}:h(t,d)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const d of s){if(!d||!A(n,d,o))continue;m+=1;const f=c(d);if(f.ok)continue;const g=w?(()=>{try{return w(d,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(d,{summary:"This summary has no accessible name.",hint:"Provide summary text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",i18n:{summaryKey:"summaryNamePresent_summary_fail",hintKey:"summaryNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"summary",methodTried:f.method},visibilityFilter:g||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"svg-image-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:r=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(r)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,m=e&&typeof e.getAccessibleNameInfo=="function"?e.getAccessibleNameInfo:null;function s(r){return(r==null?"":String(r)).trim()}function c(r){try{if(!r)return"";const l=r.firstElementChild;if((l?(l.localName||l.tagName||"").toLowerCase():"")==="title"){const b=s(l.textContent);if(b)return b}}catch{}return""}function d(r){try{if(!r)return"";const l=r.firstElementChild,y=l?(l.localName||l.tagName||"").toLowerCase():"";if(y==="desc"){const b=s(l.textContent);if(b)return b}else if(y==="title"&&l.nextElementSibling){const b=l.nextElementSibling;if((b.localName||b.tagName||"").toLowerCase()==="desc"){const I=s(b.textContent);if(I)return I}}}catch{}return""}const g=(()=>{try{return Array.from((k?k("image"):h("image"))||[])}catch{return h("svg image")}})().filter(r=>{try{return r&&r.namespaceURI==="http://www.w3.org/2000/svg"&&String(r.localName).toLowerCase()==="image"}catch{return!1}});if(!g.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];let a=0;for(const r of g){if(!r||!r.getAttribute)continue;if(A){const H=(()=>{try{return A(r,o)}catch{return{eligible:!0,reasons:[]}}})();if(H&&H.eligible===!1)continue}const l=s(r.getAttribute("role")).toLowerCase();if(l==="presentation"||l==="none"){let H;if(p){const W=(()=>{try{return p(r,o)}catch{return null}})();H=!!(W&&W.focusable)}else{const W=r.getAttribute("tabindex");H=W!=null&&s(W)!==""&&!Number.isNaN(Number(s(W)))}if(!H)continue}if(a+=1,c(r)||d(r))continue;const _=(()=>{try{return r.getAttribute("aria-label")}catch{return null}})(),I=(()=>{try{return r.getAttribute("aria-labelledby")}catch{return null}})(),x=(()=>{try{return r.getAttribute("title")}catch{return null}})(),C=s(_),N=s(I),L=s(x),D=_!==null&&C.length>0||I!==null&&N.length>0||x!==null&&L.length>0;let F,E=!1;if(D&&(m?(F=(()=>{try{return m(r,o)}catch{return null}})(),E=!!(F&&F.present&&s(F.value))):E=!0),E)continue;const P=v?v(r,o,{targetSet:"acc"}):null,z={summary:"Missing text alternative on SVG <image>.",hint:"Add a <title> (and optionally <desc>) inside <image>, or provide aria-label/aria-labelledby.",i18n:{summaryKey:"svgImage_textAltPresent_summary_fail",hintKey:"svgImage_textAltPresent_hint_fail",params:{element:"image"}},data:{visibilityFilter:P||{targetSet:"acc",accEligible:null,reasons:[]}}};e&&typeof e.reportOccurrence=="function"?i.push(e.reportOccurrence(r,z)):i.push({selector:"",html:"",...z})}return a===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:i.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:i}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"svg-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:r=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(r)):[]}catch{return[]}},v=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,A=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,p=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,m=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null;function s(r){try{return(r==null?"":String(r)).trim()}catch{return""}}function c(r){try{const l=r.firstElementChild;if((l?(l.localName||l.tagName||"").toLowerCase():"")==="title"){const b=s(l.textContent);if(b)return b}}catch{}return""}function d(r){try{const l=r.firstElementChild,y=l?(l.localName||l.tagName||"").toLowerCase():"";if(y==="desc"){const b=s(l.textContent);if(b)return b}else if(y==="title"&&l.nextElementSibling){const b=l.nextElementSibling;if((b.localName||b.tagName||"").toLowerCase()==="desc"){const I=s(b.textContent);if(I)return I}}}catch{}return""}function f(r){if(p){const l=(()=>{try{return p(r,o)}catch{return null}})();return!!(l&&l.focusable)}try{const l=r&&r.getAttribute?r.getAttribute("tabindex"):null;return l!=null&&String(l).trim()!==""&&!Number.isNaN(Number(String(l).trim()))}catch{return!1}}const g=(()=>{try{return Array.from((k?k("svg"):h("svg"))||[])}catch{return h("svg")}})();if(!g.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const i=[];let a=0;for(const r of g){if(!r||!r.getAttribute)continue;if(A){const E=(()=>{try{return A(r,o)}catch{return{eligible:!0,reasons:[]}}})();if(E&&E.eligible===!1)continue}const l=(()=>{try{return String(r.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})(),y=f(r);if((l==="presentation"||l==="none")&&!y)continue;let b=!1;try{b=r.getAttribute("aria-label")!=null||r.getAttribute("aria-labelledby")!=null}catch{}const _=c(r),I=_?"":d(r);if(!(l==="img"||l==="graphics-symbol"||l==="graphics-document"||b||!!(_||I)||y))continue;a+=1;let N=!1;if(b)if(m){const E=(()=>{try{return m(r,o)}catch{return null}})();N=!!(E&&E.present&&s(E.value))}else{const E=s((()=>{try{return r.getAttribute("aria-label")}catch{return""}})()),P=s((()=>{try{return r.getAttribute("aria-labelledby")}catch{return""}})());N=!!(E||P)}if(!!_||N)continue;let D=null;if(v)try{D=v(r,o,{targetSet:"acc"})}catch{D=null}const F={summary:"Missing text alternative for <svg>.",hint:"Provide a <title> element with text, or an ARIA name (aria-label/aria-labelledby); a <desc> element alone does not provide an accessible name.",i18n:{summaryKey:"svg_textAltPresent_summary_fail",hintKey:"svg_textAltPresent_hint_fail",params:{element:"svg"}},data:{visibilityFilter:D||{targetSet:"acc",accEligible:null,reasons:[]}}};e&&typeof e.reportOccurrence=="function"?i.push(e.reportOccurrence(r,F)):i.push({selector:"",html:"",...F})}return a===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:i.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:i}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"svg-text-alternative-quality":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,h=e&&typeof e.queryAll=="function"?e.queryAll:a=>{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll(a)):[]}catch{return[]}},v=e&&typeof e.buildSelector=="function"?e.buildSelector:a=>{try{if(!a||!a.tagName)return"html";const r=(a.tagName||"html").toLowerCase();return a.id?`${r}#${a.id}`:r}catch{return"html"}},A=e&&typeof e.getOuterHtmlSnippet=="function"?e.getOuterHtmlSnippet:a=>{try{return a&&a.outerHTML?String(a.outerHTML).slice(0,2e3):""}catch{return""}},p=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,m=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,s=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null;function c(a){const r=(()=>{try{return String(a.getAttribute("role")||"").trim().toLowerCase()}catch{return""}})();if(r!=="presentation"&&r!=="none")return!1;let l;if(s){const y=(()=>{try{return s(a,o)}catch{return null}})();l=!!(y&&y.focusable)}else{const y=a.getAttribute("tabindex");l=y!=null&&String(y).trim()!==""&&!Number.isNaN(Number(String(y).trim()))}return!l}const d=(()=>{try{return Array.from((k?k("svg"):h("svg"))||[])}catch{return h("svg")}})();if(!d.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const f=[];let g=0;const i=a=>(a==null?"":String(a)).trim();for(const a of d){if(!a||!a.getAttribute)continue;if(m){const E=(()=>{try{return m(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(E&&E.eligible===!1)continue}if(c(a))continue;let r="",l="",y="",b="",_="";try{const E=a.querySelector?a.querySelector("title"):null,P=a.querySelector?a.querySelector("desc"):null;r=i(E&&E.textContent),l=i(P&&P.textContent),y=i(a.getAttribute("aria-label")),b=i(a.getAttribute("aria-labelledby"))}catch{}if(!y&&b&&e&&typeof e.getTextFromIdRefs=="function")try{const E=e.getTextFromIdRefs(b,o);_=i(E&&E.text)}catch{}const I=!!r,x=!!l;if(!(I||x||!!y||!!_))continue;g+=1;const D=p?p(a,o,{targetSet:"acc"}):null,F={summary:"Review text alternative for <svg> for accuracy and appropriateness.",hint:"Confirm the <title>/<desc> or ARIA name conveys the meaning/purpose of the graphic in context.",i18n:{summaryKey:"svg_textAltQuality_summary_cantTell",hintKey:"svg_textAltQuality_hint_cantTell",params:{element:"svg"}},data:{visibilityFilter:D||{targetSet:"acc",accEligible:null,reasons:[]},details:{hasNonEmptyTitle:I,hasNonEmptyDesc:x,ariaLabel:y||null,ariaLabelledBy:b||null,ariaLabelledByText:_?_.slice(0,120):null}}};if(e&&typeof e.reportOccurrence=="function")f.push(e.reportOccurrence(a,F));else{const E=(()=>{try{return v(a)}catch{return"html"}})(),P=A(a);f.push({selector:E,html:P,...F})}}return g===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:{ruleId:w.ruleId,outcome:"cantTell",severity:"minor",occurrences:f}}),applicability:null},"tab-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(f){return String(f||"").replace(/\s+/g," ").trim()}function k(f,g){try{return!f||!f.getAttribute?"":u(f.getAttribute(g))}catch{return""}}function h(f,g){if(n.getContentNameInfo){const a=n.getContentNameInfo(g,o);return a&&a.present?a.value:""}return(g&&g.textContent?String(g.textContent):"").replace(/\s+/g," ").trim()}function v(f,g,i){const a=k(g,"aria-labelledby");if(!a)return"";if(n.getTextFromIdRefs)try{const r=n.getTextFromIdRefs(a,o,{maxRefs:i||8});return u(r&&r.text)}catch{}return""}function A(f,g,i){const a=f&&typeof f.isIncludedInAccessibilityTree=="function"?f.isIncludedInAccessibilityTree:f&&typeof f.isAccTreeEligible=="function"?f.isAccTreeEligible:null;if(!a)return!0;try{const r=a(g,i);return typeof r=="boolean"?r:!!(r&&r.eligible)}catch{return!0}}const p=[];let m=0;const s='[role="tab"]',c=n.queryAllSmart?n.queryAllSmart(s):n.queryAll(s);function d(f){return k(f,"aria-label")?{ok:!0,method:"aria-label"}:v(t,f,8)?{ok:!0,method:"aria-labelledby"}:k(f,"title")?{ok:!0,method:"title"}:h(t,f)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const f of c){if(!f||!A(n,f,o)||k(f,"role").toLowerCase()!=="tab")continue;m+=1;const i=d(f);if(i.ok)continue;const a=w?(()=>{try{return w(f,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(f,{summary:"This tab has no accessible name.",hint:"Provide tab text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",i18n:{summaryKey:"tabNamePresent_summary_fail",hintKey:"tabNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"tab",methodTried:i.method},visibilityFilter:a||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},tabindex:{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("[tabindex]"):t.queryAll("[tabindex]"),w=[];let u=0;for(const k of e){if(!k||!k.getAttribute)continue;const h=String(k.getAttribute("tabindex")||"").trim();if(!h)continue;const v=Number(h);Number.isInteger(v)&&(u+=1,!(v<=0)&&w.push(t.reportOccurrence(k,{summary:"This element has a positive tabindex, overriding the natural tab order.",hint:'Use tabindex="0" (or a negative value to remove from tab order) instead of a positive number; fix the DOM order if a different tab order is needed.',i18n:{summaryKey:"tabindex_summary_cantTell",hintKey:"tabindex_hint_cantTell",params:{value:String(v)}},data:{details:{reasonCode:"TABINDEX_POSITIVE",value:v}}})))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:w}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"table-duplicate-name":{run:(function(o){const{helpers:t,rule:n}=o;function e(h){return String(h||"").replace(/\s+/g," ").trim()}const w=t.queryAllSmart?t.queryAllSmart("table[summary]"):t.queryAll("table[summary]"),u=[];let k=0;for(const h of w){if(!h||!h.getAttribute)continue;const v=e(h.getAttribute("summary"));if(!v)continue;const A=h.querySelector?h.querySelector("caption"):null,p=A?e(A.textContent):"";p&&(k+=1,p.toLowerCase()===v.toLowerCase()&&u.push(t.reportOccurrence(h,{summary:"This table's caption duplicates its summary attribute.",hint:"Remove the redundant summary attribute, or make it provide different information than the caption.",i18n:{summaryKey:"tableDuplicateName_summary_cantTell",hintKey:"tableDuplicateName_hint_cantTell",params:{}},data:{details:{reasonCode:"TABLE_CAPTION_SUMMARY_DUPLICATE"}}})))}return k===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:u.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:u}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"table-fake-caption":{run:(function(o){const{helpers:t,rule:n}=o;function e(A){return(A==null?"":String(A)).trim()}const w=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;function u(A){if(!w)return!0;try{const p=w(A,o);return!!(p&&p.eligible)}catch{return!0}}const k=t.queryAllSmart?t.queryAllSmart("table"):t.queryAll("table"),h=[];let v=0;for(const A of k){if(!A||!A.rows||!!(A.querySelector&&A.querySelector("caption")))continue;const m=Array.from(A.rows).filter(u);if(m.length<2)continue;v+=1;const s=m[0],c=Array.from(s.cells||[]).filter(u);if(c.length!==1)continue;const d=c[0];if(!e(d.textContent||"")||!m.slice(1).some(l=>Array.from(l.cells||[]).filter(u).length>1))continue;const i=t.buildSelector?t.buildSelector(A):"html",a=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(A):A.outerHTML||"",r={selector:i,html:a,summary:"This table has no <caption>, but its first row is a single cell sitting above multi-cell rows, so it may be acting as a fake caption.",hint:"If this cell is meant to describe the table, use a real <caption> element instead of a lone first-row cell.",i18n:{summaryKey:"tableFakeCaption_summary_cantTell",hintKey:"tableFakeCaption_hint_cantTell",params:{}},data:{details:{reasonCode:"SINGLE_CELL_FIRST_ROW_NO_CAPTION"}}};t&&typeof t.reportOccurrence=="function"?h.push(t.reportOccurrence(A,r)):h.push(r)}return v===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:h.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"minor",occurrences:h}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"table-headers-attr-valid":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&n.aria?n.aria:null;function u(A){const p=A&&A.getAttribute?A.getAttribute("role"):null;if(!p)return"";const m=String(p).trim().toLowerCase().split(/\s+/);for(const s of m){if(!s)continue;if(s==="presentation"||s==="none"||(w?w.isValidConcreteRole(s):!0))return s}return""}const k=n.queryAllSmart?n.queryAllSmart("td[headers], th[headers]"):n.queryAll("td[headers], th[headers]"),h=[];let v=0;for(const A of k){if(!A||!A.getAttribute)continue;const p=String(A.getAttribute("headers")||"").trim();if(!p)continue;const m=p.split(/\s+/).filter(Boolean);if(!m.length)continue;const s=A.closest?A.closest("table"):null,c=s?u(s):"";if(c&&c!=="table"&&c!=="grid"&&c!=="treegrid")continue;v+=1;const d=[];for(const i of m){let a;try{a=t.getElementById(i)}catch{a=null}if(!a){d.push({id:i,reason:"missing"});continue}if(a===A){d.push({id:i,reason:"self-reference"});continue}const r=a.tagName?a.tagName.toLowerCase():"";if(r!=="th"&&r!=="td"){d.push({id:i,reason:"not-a-cell"});continue}s&&(!a.closest||a.closest("table")!==s)&&d.push({id:i,reason:"different-table"})}if(!d.length)continue;const f=[...new Set(d.map(i=>i.id))],g=A.tagName.toLowerCase();h.push(n.reportOccurrence(A,{summary:"This cell’s headers attribute references one or more invalid header cells.",hint:"Update the headers attribute so every id refers to a cell (<td> or <th>) within the same table.",i18n:{summaryKey:"tableHeadersAttrValid_summary_fail",hintKey:"tableHeadersAttrValid_hint_fail",params:{element:g,invalidIds:f.join(", ")}},data:{details:{reasonCode:"TABLE_HEADERS_ATTR_INVALID",element:g,invalid:d}}}))}return v===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:h.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"serious",occurrences:h}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"table-th-has-data-cells":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("table"):t.queryAll("table"),w=[];let u=0;function k(m){try{return String(m&&m.getAttribute&&m.getAttribute("role")||"").trim().toLowerCase().split(/\s+/)[0]}catch{return""}}function h(m){const s=t&&typeof t.isIncludedInAccessibilityTree=="function"?t.isIncludedInAccessibilityTree:null;if(!s)return!0;try{const c=s(m,o);return typeof c=="boolean"?c:!!(c&&c.eligible)}catch{return!0}}function v(m){const s=k(m);return s==="presentation"||s==="none"||s&&s!=="table"&&s!=="grid"&&s!=="treegrid"?!1:h(m)}function A(m){if(!m)return!1;const s=k(m);if(s&&s!=="rowheader"&&s!=="columnheader")return!1;if(t.isDomVisibleEligible)try{if(!t.isDomVisibleEligible(m,o,{targetSet:"dom"}).eligible)return!1}catch{}return h(m)}for(const m of e){if(!m||!m.querySelectorAll||!v(m))continue;let s;try{s=m.querySelectorAll("th")}catch{s=[]}const c=Array.from(s).filter(A);if(!c.length)continue;u+=1;let d;try{d=m.querySelectorAll("td").length>0}catch{d=!1}if(!d)for(const f of c)f&&w.push(t.reportOccurrence(f,{summary:"This table has header cells but no data cells for them to describe.",hint:"Add data cells (<td>) to the table, or remove the header cells if the table has no data.",i18n:{summaryKey:"tableThHasDataCells_summary_fail",hintKey:"tableThHasDataCells_hint_fail",params:{}},data:{details:{reasonCode:"TABLE_TH_NO_DATA_CELLS"}}}))}const p=t.queryAllSmart?t.queryAllSmart('[role="grid"], [role="treegrid"]'):t.queryAll('[role="grid"], [role="treegrid"]');for(const m of p){if(!m||!m.querySelectorAll||m.tagName&&m.tagName.toLowerCase()==="table"||!h(m))continue;let s;try{s=m.querySelectorAll('[role="columnheader"], [role="rowheader"]')}catch{s=[]}const c=Array.from(s).filter(A);if(!c.length)continue;u+=1;let d;try{d=m.querySelectorAll('[role="gridcell"], [role="cell"]').length>0}catch{d=!1}if(!d)for(const f of c)f&&w.push(t.reportOccurrence(f,{summary:"This table has header cells but no data cells for them to describe.",hint:"Add data cells (<td>) to the table, or remove the header cells if the table has no data.",i18n:{summaryKey:"tableThHasDataCells_summary_fail",hintKey:"tableThHasDataCells_hint_fail",params:{}},data:{details:{reasonCode:"TABLE_TH_NO_DATA_CELLS"}}}))}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:w}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"target-size-minimum":{run:(function(o){"use strict";const{document:t,helpers:n,rule:e}=o,w=e&&e.ruleId||"target-size-minimum",u=24,k=u/2;function h(q){try{return n&&typeof n.queryAllSmart=="function"?Array.from(n.queryAllSmart(q)||[]):n&&typeof n.queryAll=="function"?Array.from(n.queryAll(q)||[]):[]}catch{return[]}}function v(q){try{if(n&&typeof n.buildSelector=="function")return n.buildSelector(q)}catch{}try{if(q&&q.id)return`#${q.id}`}catch{}return"html"}function A(q){try{if(!q||q.nodeType!==1)return!1;const O=(q.tagName||"").toLowerCase(),B=q.getAttribute&&String(q.getAttribute("role")||"").trim().toLowerCase()||"";if(!(O==="a"&&q.getAttribute&&q.getAttribute("href")||B==="link"))return!1;const ne=a(q),ie=ne&&ne.display?String(ne.display):"";return ie==="inline"||ie==="inline-block"||ie==="inline-flex"||ie==="inline-grid"||ie==="inline-table"?(q.textContent||"").trim().length>0:!1}catch{return!1}}function p(q){try{if(!A(q))return!1;if(d(q,"p, li, dd, dt, blockquote, figcaption, caption, td, th"))return!0;const B=d(q,"span, em, strong, small, label");return!!(B&&d(B,"p, li, dd, dt, blockquote, figcaption, caption, td, th"))}catch{return!1}}function m(q){try{if(!q||typeof q.getClientRects!="function")return[];const O=q.getClientRects();return O?Array.from(O):[]}catch{return[]}}function s(q){try{return!q||typeof q.getBoundingClientRect!="function"?null:q.getBoundingClientRect()}catch{return null}}function c(q){try{return!!(q&&q.hasAttribute&&q.hasAttribute("hidden"))}catch{return!1}}function d(q,O){try{return q&&typeof q.closest=="function"?q.closest(O):null}catch{return null}}function f(q){const O=d(q,"details");if(!O)return!1;try{return!(O.hasAttribute("open")||(q&&q.tagName?String(q.tagName).toLowerCase():"")==="summary")}catch{return!1}}function g(q){try{return!!d(q,"[inert]")}catch{return!1}}const i=new WeakMap;function a(q){if(i.has(q))return i.get(q);let O;try{O=t&&t.defaultView&&t.defaultView.getComputedStyle?t.defaultView.getComputedStyle(q):null}catch{O=null}return i.set(q,O),O}function r(q){if(!q||q.nodeType!==1||c(q)||g(q)||f(q))return!1;try{if(typeof q.matches=="function"&&q.matches(":disabled"))return!1}catch{}try{if((q.getAttribute&&String(q.getAttribute("aria-disabled")||"").trim().toLowerCase())==="true")return!1}catch{}const O=m(q);if(!O||O.length===0)return!1;const B=a(q),G=B&&B.display?String(B.display):"block",ne=B&&B.visibility?String(B.visibility):"visible",ie=B&&B.contentVisibility?String(B.contentVisibility):"visible",ue=B&&B.pointerEvents?String(B.pointerEvents):"auto";return!(G==="none"||ne==="hidden"||ne==="collapse"||ie==="hidden"||ue==="none")}function l(q){return{cx:q.left+q.width/2,cy:q.top+q.height/2}}function y(q,O){const B=q.cx-O.cx,G=q.cy-O.cy;return Math.sqrt(B*B+G*G)}function b(q,O){try{if(t&&typeof t.elementFromPoint=="function")return t.elementFromPoint(q,O)}catch{}return null}function _(q,O){try{return!q||!O?!1:!!(q===O||typeof q.contains=="function"&&q.contains(O)||typeof O.contains=="function"&&O.contains(q))}catch{return!1}}const I='button, summary, a[href], area[href], input, select, textarea, [role="button"], [role="link"]',x=h(I),C=[];for(const q of x)r(q)&&C.push(q);if(C.length===0)return{ruleId:w,outcome:"notApplicable",severity:"minor",occurrences:[]};const N=[];for(const q of C){const O=s(q);if(!O)continue;const B=Number(O.width),G=Number(O.height);!Number.isFinite(B)||!Number.isFinite(G)||B<=0||G<=0||N.push({el:q,rect:{left:O.left,top:O.top,width:B,height:G,right:O.left+B,bottom:O.top+G},center:l({left:O.left,top:O.top,width:B,height:G})})}if(N.length===0)return{ruleId:w,outcome:"notApplicable",severity:"minor",occurrences:[]};const L=N.filter(q=>q.rect.width<u||q.rect.height<u),D=new Map;function F(q,O){return q+","+O}for(const q of N){const O=Math.floor(q.center.cx/u),B=Math.floor(q.center.cy/u),G=F(O,B);let ne=D.get(G);ne||(ne=[],D.set(G,ne)),ne.push(q)}function E(q){const O=Math.floor(q.cx/u),B=Math.floor(q.cy/u),G=[];for(let ne=-1;ne<=1;ne++)for(let ie=-1;ie<=1;ie++){const ue=D.get(F(O+ne,B+ie));if(ue)for(const fe of ue)G.push(fe)}return G}function P(q){for(const ue of E(q.center))if(!(!ue||!ue.el||_(q.el,ue.el))&&!p(ue.el)&&y(q.center,ue.center)<u)return{conflict:!0,confident:!0,hitCount:0,conflictEl:ue.el};const O=3,B=5;let G=0,ne=null;const ie=16;for(let ue=0;ue<ie;ue++){const fe=Math.PI*2*ue/ie,we=q.center.cx+k*Math.cos(fe),te=q.center.cy+k*Math.sin(fe),be=b(we,te);if(!be)continue;let Ve=null;try{Ve=be.closest?be.closest(I):null}catch{}Ve&&(_(Ve,q.el)||r(Ve)&&(p(Ve)||(G++,ne||(ne=Ve))))}return G>=B?{conflict:!0,confident:!0,hitCount:G,conflictEl:ne}:G>=O-1?{conflict:!1,confident:!1,hitCount:G,conflictEl:ne}:{conflict:!1,confident:!0,hitCount:G,conflictEl:null}}function z(q){try{if(!q||q.nodeType!==1||(q.tagName||"").toLowerCase()!=="input")return!1;const B=q.getAttribute&&String(q.getAttribute("type")||"").trim().toLowerCase()||"";if(B!=="checkbox"&&B!=="radio")return!1;const G=a(q);let ne="";try{G&&typeof G.getPropertyValue=="function"?ne=G.getPropertyValue("appearance")||G.getPropertyValue("-webkit-appearance")||"":G&&(ne=G.appearance||G.webkitAppearance||"")}catch{}return ne=String(ne).trim().toLowerCase(),ne!=="none"}catch{return!1}}function H(q){try{return!q||q.nodeType!==1?!1:!!((q.tagName||"").toLowerCase()==="area"||d(q,"svg, canvas, map"))}catch{return!1}}const W=[],X=[];for(const q of L){if(p(q.el)||z(q.el))continue;const O=P(q);if(!O.conflict&&O.confident===!1){X.push(n.reportOccurrence(q.el,{occurrenceOutcome:"cantTell",summary:"Target may be too small and too close to another target, but the overlap is near the detection threshold and could not be confidently measured.",hint:"Manually verify the effective spacing between this target and its neighbor; increase target size or spacing if the overlap is real.",i18n:{summaryKey:"targetSizeMinimum_summary_cantTell_ambiguousSpacing",hintKey:"targetSizeMinimum_hint_cantTell_ambiguousSpacing",params:{}},uncertainty:{code:"not-computable",needed:"A reliable measurement of the spacing between this target and its neighbour.",evidence:{measured:{width:q.rect.width,height:q.rect.height},conflictHitCount:O.hitCount}},data:{details:{measured:{width:q.rect.width,height:q.rect.height},reasonCode:"undersized-ambiguous-spacing",conflictHitCount:O.hitCount,conflictWith:O.conflictEl?v(O.conflictEl):null}}}));continue}if(O.conflict){if(H(q.el)){X.push(n.reportOccurrence(q.el,{occurrenceOutcome:"cantTell",summary:"Target is too small and too close to another target, but may be exempt as part of an essential graphic or image-map region.",hint:"Verify whether this target’s size is essential to its function (e.g. part of an SVG/canvas/image map); if not, increase target size or spacing.",i18n:{summaryKey:"targetSizeMinimum_summary_cantTell_plausiblyEssential",hintKey:"targetSizeMinimum_hint_cantTell_plausiblyEssential",params:{}},uncertainty:{code:"judgement-required",needed:"Whether this target’s size is essential, which WCAG exempts.",evidence:{measured:{width:q.rect.width,height:q.rect.height},conflictHitCount:O.hitCount}},data:{details:{measured:{width:q.rect.width,height:q.rect.height},reasonCode:"undersized-plausibly-essential",conflictHitCount:O.hitCount,conflictWith:O.conflictEl?v(O.conflictEl):null}}}));continue}if(A(q.el)&&O.conflictEl&&A(O.conflictEl)){X.push(n.reportOccurrence(q.el,{occurrenceOutcome:"cantTell",summary:"Target is smaller than 24×24 CSS px and close to another inline link in the same run of text, where the inline exception may apply.",hint:"Confirm whether these links form a run of inline text (which is exempt); otherwise increase the target size to at least 24×24 CSS px or add spacing.",i18n:{summaryKey:"targetSizeMinimum_summary_cantTell_inlineLinkRun",hintKey:"targetSizeMinimum_hint_cantTell_inlineLinkRun",params:{}},uncertainty:{code:"judgement-required",needed:"Whether this target is a link in a sentence, which WCAG exempts.",evidence:{measured:{width:q.rect.width,height:q.rect.height},conflictHitCount:O.hitCount}},data:{details:{measured:{width:q.rect.width,height:q.rect.height},reasonCode:"undersized-inline-link-run",conflictHitCount:O.hitCount,conflictWith:O.conflictEl?v(O.conflictEl):null}}}));continue}W.push(n.reportOccurrence(q.el,{occurrenceOutcome:"fail",summary:"Target is too small and too close to another target.",hint:"Increase target size to at least 24 by 24 CSS pixels, or add sufficient spacing.",i18n:{summaryKey:"targetSizeMinimum_summary_fail",hintKey:"targetSizeMinimum_hint_fail",params:{}},data:{details:{measured:{width:q.rect.width,height:q.rect.height},reasonCode:"undersized-and-too-close",conflictHitCount:O.hitCount,conflictWith:O.conflictEl?v(O.conflictEl):null}}}))}}const oe=n.resolveTieredOutcome(W,X,e&&e.defaultSeverity||"minor");return{ruleId:w,...oe}}),applicability:null},"td-has-header":{run:(function(o){const{helpers:t,rule:n}=o,e=4;function w(p){return(p==null?"":String(p)).trim()}const u=t&&typeof t.isAccTreeEligible=="function"?t.isAccTreeEligible:null;function k(p){if(!u)return!0;try{const m=u(p,o);return!!(m&&m.eligible)}catch{return!0}}const h=t.queryAllSmart?t.queryAllSmart("table"):t.queryAll("table"),v=[];let A=0;for(const p of h){let f=function(i){return!!(i&&i.tagName&&i.tagName.toLowerCase()==="th"&&k(i))};if(!p||!p.rows)continue;const m=Array.from(p.rows);if(m.length<e)continue;const s=m.map(i=>Array.from(i.cells||[])),c=s.reduce((i,a)=>Math.max(i,a.length),0);if(c<e||s.some(i=>i.some(a=>{const r=Number.parseInt(a.getAttribute("colspan")||"1",10),l=Number.parseInt(a.getAttribute("rowspan")||"1",10);return Number.isFinite(r)&&r>1||Number.isFinite(l)&&l>1})))continue;A+=1;const g=new Array(c).fill(!1);for(let i=0;i<s.length;i++){const a=s[i];let r=!1;for(let l=0;l<a.length;l++){const y=a[l];if(!y)continue;if(f(y)){g[l]=!0,r=!0;continue}!k(y)||w(y.getAttribute("headers"))||g[l]||r||v.push(t.reportOccurrence(y,{summary:"This data cell has no associated header (no headers attribute, no column <th> above it, no row <th> to its left).",hint:"Add a headers attribute referencing the relevant <th> id(s), or restructure the table so this cell has an implicit row/column header.",i18n:{summaryKey:"tdHasHeader_summary_fail",hintKey:"tdHasHeader_hint_fail",params:{row:String(i),column:String(l)}},data:{details:{reasonCode:"TD_NO_ASSOCIATED_HEADER",row:i,column:l}}}))}}}return A===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:v.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"serious",occurrences:v}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"textbox-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(r){return String(r||"").replace(/\s+/g," ").trim()}function k(r,l){try{return!r||!r.getAttribute?"":u(r.getAttribute(l))}catch{return""}}function h(r,l){if(n.getContentNameInfo){const b=n.getContentNameInfo(l,o);return b&&b.present?b.value:""}return(l&&l.textContent?String(l.textContent):"").replace(/\s+/g," ").trim()}function v(r){if(n.getAriaNameInfo)try{const y=n.getAriaNameInfo(r,o);if(y&&y.present&&y.value)return u(y.value)}catch{}const l=h(t,r);return l||k(r,"title")}function A(r,l,y){const b=k(l,"aria-labelledby");if(!b)return"";if(n.getTextFromIdRefs)try{const _=n.getTextFromIdRefs(b,o,{maxRefs:y||8});return u(_&&_.text)}catch{}return""}function p(r,l,y){const b=r&&typeof r.isIncludedInAccessibilityTree=="function"?r.isIncludedInAccessibilityTree:r&&typeof r.isAccTreeEligible=="function"?r.isAccTreeEligible:null;if(!b)return!0;try{const _=b(l,y);return typeof _=="boolean"?_:!!(_&&_.eligible)}catch{return!0}}function m(r){const l=new Map;try{const y=r&&r.getElementsByTagName?r.getElementsByTagName("label"):[];for(let b=0;b<y.length;b+=1){const _=y[b];if(!_||!_.getAttribute)continue;const I=u(_.getAttribute("for"));I&&(l.has(I)||l.set(I,_))}}catch{}return l}const s=[];let c=0;const d='[role="textbox"]',f=n.queryAllSmart?n.queryAllSmart(d):n.queryAll(d),g=m(t);function i(r){try{if("labels"in r&&r.labels&&r.labels.length){const l=[],y=Math.min(4,r.labels.length);for(let _=0;_<y;_+=1){const I=r.labels[_],x=I?v(I):"";x&&l.push(x)}const b=u(l.join(" "));if(b)return b}}catch{}try{if(r.closest){const l=r.closest("label");if(l){const y=v(l);if(y)return y}}}catch{}try{const l=k(r,"id");if(l&&g.has(l)){const y=g.get(l),b=y?v(y):"";if(b)return b}}catch{}return""}function a(r){return k(r,"aria-label")?{ok:!0,method:"aria-label"}:A(t,r,8)?{ok:!0,method:"aria-labelledby"}:k(r,"title")?{ok:!0,method:"title"}:i(r)?{ok:!0,method:"label"}:{ok:!1,method:"none"}}for(const r of f){if(!r||!p(n,r,o))continue;c+=1;const l=a(r);if(l.ok)continue;const y=w?(()=>{try{return w(r,o,{targetSet:"acc"})}catch{return null}})():null;s.push(n.reportOccurrence(r,{summary:"This element has no accessible name.",hint:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this textbox's accessible name.",i18n:{summaryKey:"textboxNamePresent_summary_fail",hintKey:"textboxNamePresent_hint_fail",params:{controlType:"textbox"}},data:{details:{reasonCode:"name_missing",controlType:"textbox",methodTried:l.method},visibilityFilter:y||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return c===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:s.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:s}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"tooltip-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(f){return String(f||"").replace(/\s+/g," ").trim()}function k(f,g){try{return!f||!f.getAttribute?"":u(f.getAttribute(g))}catch{return""}}function h(f,g){if(n.getContentNameInfo){const a=n.getContentNameInfo(g,o);return a&&a.present?a.value:""}return(g&&g.textContent?String(g.textContent):"").replace(/\s+/g," ").trim()}function v(f,g,i){const a=k(g,"aria-labelledby");if(!a)return"";if(n.getTextFromIdRefs)try{const r=n.getTextFromIdRefs(a,o,{maxRefs:i||8});return u(r&&r.text)}catch{}return""}function A(f,g,i){const a=f&&typeof f.isIncludedInAccessibilityTree=="function"?f.isIncludedInAccessibilityTree:f&&typeof f.isAccTreeEligible=="function"?f.isAccTreeEligible:null;if(!a)return!0;try{const r=a(g,i);return typeof r=="boolean"?r:!!(r&&r.eligible)}catch{return!0}}const p=[];let m=0;const s='[role="tooltip"]',c=n.queryAllSmart?n.queryAllSmart(s):n.queryAll(s);function d(f){return k(f,"aria-label")?{ok:!0,method:"aria-label"}:v(t,f,8)?{ok:!0,method:"aria-labelledby"}:k(f,"title")?{ok:!0,method:"title"}:h(t,f)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const f of c){if(!f||!A(n,f,o)||k(f,"role").toLowerCase()!=="tooltip")continue;m+=1;const i=d(f);if(i.ok)continue;const a=w?(()=>{try{return w(f,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(f,{summary:"This tooltip has no accessible name.",hint:"Provide tooltip text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",i18n:{summaryKey:"tooltipNamePresent_summary_fail",hintKey:"tooltipNamePresent_hint_fail",params:{}},data:{details:{reasonCode:"name_missing",controlType:"tooltip",methodTried:i.method},visibilityFilter:a||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"treeitem-name-present":{run:(function(o){const{document:t,helpers:n,rule:e}=o,w=n&&typeof n.getEligibilityInfo=="function"?n.getEligibilityInfo:null;function u(f){return String(f||"").replace(/\s+/g," ").trim()}function k(f,g){try{return!f||!f.getAttribute?"":u(f.getAttribute(g))}catch{return""}}function h(f,g){if(n.getContentNameInfo){const a=n.getContentNameInfo(g,o);return a&&a.present?a.value:""}return(g&&g.textContent?String(g.textContent):"").replace(/\s+/g," ").trim()}function v(f,g,i){const a=k(g,"aria-labelledby");if(!a)return"";if(n.getTextFromIdRefs)try{const r=n.getTextFromIdRefs(a,o,{maxRefs:i||8});return u(r&&r.text)}catch{}return""}function A(f,g,i){const a=f&&typeof f.isIncludedInAccessibilityTree=="function"?f.isIncludedInAccessibilityTree:f&&typeof f.isAccTreeEligible=="function"?f.isAccTreeEligible:null;if(!a)return!0;try{const r=a(g,i);return typeof r=="boolean"?r:!!(r&&r.eligible)}catch{return!0}}const p=[];let m=0;const s='[role="treeitem"]',c=n.queryAllSmart?n.queryAllSmart(s):n.queryAll(s);function d(f){return k(f,"aria-label")?{ok:!0,method:"aria-label"}:v(t,f,8)?{ok:!0,method:"aria-labelledby"}:k(f,"title")?{ok:!0,method:"title"}:h(t,f)?{ok:!0,method:"content"}:{ok:!1,method:"none"}}for(const f of c){if(!f||!A(n,f,o))continue;m+=1;const g=d(f);if(g.ok)continue;const i=w?(()=>{try{return w(f,o,{targetSet:"acc"})}catch{return null}})():null;p.push(n.reportOccurrence(f,{summary:"This element has no accessible name.",hint:"Provide aria-label or aria-labelledby (preferred), or provide visible text that is not hidden from assistive technologies.",i18n:{summaryKey:"treeitemNamePresent_summary_fail",hintKey:"treeitemNamePresent_hint_fail",params:{controlType:"treeitem"}},data:{details:{reasonCode:"name_missing",controlType:"treeitem",methodTried:g.method},visibilityFilter:i||{targetSet:"acc",accEligible:null,reasons:[]}}}))}return m===0?{ruleId:e.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:p.length?{ruleId:e.ruleId,outcome:"fail",severity:e.defaultSeverity||"minor",occurrences:p}:{ruleId:e.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"valid-lang":{run:(function(o){const{helpers:t,rule:n}=o,e=/^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$/,w=typeof t.isValidLanguageTag=="function"?t.isValidLanguageTag:c=>e.test(String(c||""));function u(c){return c?t.isDomVisibleEligible?!!t.isDomVisibleEligible(c,o,{targetSet:"dom"}).eligible:t.getEligibilityInfo?!!t.getEligibilityInfo(c,o,{targetSet:"dom"}).eligible:!0:!1}function k(c){try{const d=c.getAttribute?c.getAttribute("lang"):null;return d!=null&&d.trim()!==""}catch{return!1}}function h(c){const d=(c.tagName||"").toLowerCase();if(d==="img"||d==="area")return!0;if(d!=="input")return!1;try{return(c.getAttribute("type")||"").toLowerCase()==="image"}catch{return!1}}const v=5e3;function A(c){let d=!1,f=0;function g(i,a){if(d||f++>v||!i||i.nodeType!==1||!a&&k(i))return;if(h(i)){const l=i.getAttribute?i.getAttribute("alt"):null;l!=null&&l.trim()!==""&&u(i)&&(d=!0);return}if(!u(i))return;const r=i.childNodes?Array.from(i.childNodes):[];for(const l of r){if(d)return;if(l.nodeType===3){if(String(l.nodeValue||"").trim()){d=!0;return}}else l.nodeType===1&&g(l,!1)}}return g(c,!0),d}const p=t.queryAllSmart?t.queryAllSmart("[lang]"):t.queryAll("[lang]"),m=[];let s=0;for(const c of p){if(!c||!c.getAttribute||c.tagName&&c.tagName.toLowerCase()==="html")continue;const d=c.getAttribute("lang");if(d===null||d===""||!A(c))continue;s+=1;const f=String(d).trim();if(w(f))continue;const g=c.tagName.toLowerCase();m.push(t.reportOccurrence(c,{summary:`This lang attribute value ("${f}") is not a syntactically valid language tag.`,hint:'Use a valid BCP47 language tag (e.g. "fr", "es-MX").',i18n:{summaryKey:"validLang_summary_fail",hintKey:"validLang_hint_fail",params:{element:g,value:f}},data:{details:{reasonCode:"ELEMENT_LANG_INVALID",element:g,value:f}}}))}return s===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:m.length?{ruleId:n.ruleId,outcome:"fail",severity:n.defaultSeverity||"moderate",occurrences:m}:{ruleId:n.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null},"video-caption":{run:(function(o){const{helpers:t,rule:n}=o,e=t.queryAllSmart?t.queryAllSmart("video"):t.queryAll("video"),w=[];let u=0;for(const k of e){if(!k||!k.querySelectorAll)continue;u+=1;let h=!1;const v=k.querySelectorAll("track");for(const s of v){const c=(s.getAttribute("kind")||"").trim().toLowerCase(),d=(s.getAttribute("src")||"").trim();if((c==="captions"||c==="subtitles")&&d){h=!0;break}}if(h)continue;const A=t.buildSelector?t.buildSelector(k):"html",p=t.getOuterHtmlSnippet?t.getOuterHtmlSnippet(k):k.outerHTML||"",m={selector:A,html:p,summary:"This video has no captions (or subtitles) track.",hint:'If this video has an audio track that conveys information, add a <track kind="captions" src="..."> with the captioned content.',i18n:{summaryKey:"videoCaption_summary_cantTell",hintKey:"videoCaption_hint_cantTell",params:{}},data:{details:{reasonCode:"CAPTIONS_TRACK_NOT_DETECTED"}}};t&&typeof t.reportOccurrence=="function"?w.push(t.reportOccurrence(k,m)):w.push(m)}return u===0?{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:w.length?{ruleId:n.ruleId,outcome:"cantTell",severity:n.defaultSeverity||"moderate",occurrences:w}:{ruleId:n.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}}),applicability:null},"video-poster-text-alternative-present":{run:(function(o){const{document:t,root:n,helpers:e,rule:w}=o,u=n||t,k=e&&typeof e.reportOccurrence=="function"?e.reportOccurrence:null,h=e&&typeof e.queryAllSmart=="function"?e.queryAllSmart:null,v=e&&typeof e.queryAll=="function"?e.queryAll:null,A=e&&typeof e.getEligibilityInfo=="function"?e.getEligibilityInfo:null,p=e&&typeof e.isAccTreeEligible=="function"?e.isAccTreeEligible:null,m=e&&typeof e.getFocusableInfo=="function"?e.getFocusableInfo:null,s=e&&typeof e.getAriaNameInfo=="function"?e.getAriaNameInfo:null;function c(a){return(a==null?"":String(a)).trim()}function d(a){const r=[];let l=null;if(s&&(l=(()=>{try{return s(a,o)}catch{return null}})()),l&&l.present&&c(l.value))return{present:!0,value:c(l.value),mechanism:l.mechanism||"aria",flags:(l.flags||[]).slice(0)};const y=c(a.getAttribute&&a.getAttribute("title"));if(y)return r.push("title-used"),{present:!0,value:y,mechanism:"title",flags:r};if(l&&l.flags&&l.flags.length)for(const b of l.flags)r.push(b);return{present:!1,value:"",mechanism:"none",flags:r}}const f=(()=>{try{return h?Array.from(h("video")||[]):v?Array.from(v("video")||[]):u&&u.querySelectorAll?Array.from(u.querySelectorAll("video")):[]}catch{try{return u&&u.querySelectorAll?Array.from(u.querySelectorAll("video")):[]}catch{return[]}}})();if(!f.length)return{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]};const g=[];let i=0;for(const a of f){if(!a||!a.getAttribute)continue;const r=c(a.getAttribute("poster"));if(!r)continue;if(p){const I=(()=>{try{return p(a,o)}catch{return{eligible:!0,reasons:[]}}})();if(I&&I.eligible===!1)continue}const l=c(a.getAttribute("role")).toLowerCase();if(l==="presentation"||l==="none"){let I;if(m){const x=(()=>{try{return m(a,o)}catch{return null}})();I=!!(x&&x.focusable)}else{const x=a.getAttribute("tabindex");I=x!=null&&c(x)!==""&&!Number.isNaN(Number(c(x)))}if(!I)continue}i+=1;const y=d(a);if(y.present)continue;let b=null;if(A)try{b=A(a,o,{targetSet:"acc"})}catch{b=null}const _={summary:"Missing text alternative for <video> poster.",hint:"Provide an accessible name for the poster image (aria-label/aria-labelledby preferred, or a title attribute as a fallback).",i18n:{summaryKey:"videoPoster_textAltPresent_summary_fail",hintKey:"videoPoster_textAltPresent_hint_fail",params:{element:"video"}},data:{poster:r,visibilityFilter:b||{targetSet:"acc",accEligible:null,reasons:[]},nameInfo:y||null}};k?g.push(k(a,_)):g.push({selector:"",html:"",..._})}return i===0?{ruleId:w.ruleId,outcome:"notApplicable",severity:"minor",occurrences:[]}:g.length?{ruleId:w.ruleId,outcome:"fail",severity:w.defaultSeverity||"minor",occurrences:g}:{ruleId:w.ruleId,outcome:"pass",severity:"minor",occurrences:[]}}),applicability:null}},mr={allowedOutcomes:["fail","pass","cantTell","notApplicable"],allowedConfidence:["high","medium","low"],coerceManualFailToCantTell:!0},at={en:{img_altPresent_title:"<img> must have an alt attribute",img_altPresent_description:"Checks that <img> elements provide an alt attribute to support a text alternative mechanism.",img_altPresent_summary_fail:"Missing alt attribute on <img>.",img_altPresent_hint_fail:'Add an alt attribute (use alt="" only for decorative images).',area_altPresent_title:"<area> must have an alt attribute",area_altPresent_description:"Checks that <area> elements provide an alt attribute to support a text alternative mechanism.",area_altPresent_summary_fail:"Missing alt attribute on <area>.",area_altPresent_hint_fail:'Add an alt attribute (use alt="" only for decorative areas).',inputImage_altPresent_title:'<input type="image"> must have an alt attribute',inputImage_altPresent_description:'Checks that <input type="image"> elements provide an alt attribute to support a text alternative mechanism.',inputImage_altPresent_summary_fail:'Missing alt attribute on <input type="image">.',inputImage_altPresent_hint_fail:'Add an alt attribute (use alt="" only when a separate accessible name is provided).',inputImage_altPresent_summary_defaultName:"Accessible name is the browser default for an image button, which conveys nothing.",inputImage_altPresent_hint_defaultName:'Replace it with text describing what the button does, for example "Search".',inputImage_altPresent_summary_emptyAlt:'Empty alt="" on <input type="image"> leaves the control unnamed.',inputImage_altPresent_hint_emptyAlt:"Describe the action in alt, or name the control with aria-label or aria-labelledby.",ariaHidden_programmaticFocus_review_title:"Review aria-hidden programmatic focus",ariaHidden_programmaticFocus_review_description:"Flags elements that are aria-hidden but considered eligible due to programmatic focus (e.g., tabindex < 0). Verify intended focus management and assistive technology exposure.",ariaHidden_programmaticFocus_review_summary:"Review: aria-hidden element is programmatically focusable.",ariaHidden_programmaticFocus_review_hint:"Check that focus management is intentional and that the element should remain hidden from assistive technologies.",canvas_textAltPresent_title:"<canvas> must provide a text alternative",canvas_textAltPresent_description:"Checks that <canvas> elements provide a text alternative via fallback content or an accessible name.",canvas_textAltPresent_summary_fail:"Missing text alternative for <canvas>.",canvas_textAltPresent_hint_fail:"Provide fallback text inside <canvas> or an accessible name (e.g., aria-label/aria-labelledby).",svg_textAltPresent_title:"<svg> must provide a text alternative",svg_textAltPresent_description:"Checks that inline <svg> elements provide a text alternative via a <title> element or an ARIA name (a <desc> element alone does not count).",svg_textAltPresent_summary_fail:"Missing text alternative for <svg>.",svg_textAltPresent_hint_fail:"Provide a <title> element with text, or an ARIA name (aria-label/aria-labelledby); a <desc> element alone does not provide an accessible name.",object_textAltPresent_title:"<object> must provide a text alternative",object_textAltPresent_description:"Checks that <object> elements provide a text alternative via fallback content or an accessible name.",object_textAltPresent_summary_fail:"Missing text alternative for <object>.",object_textAltPresent_hint_fail:"Provide meaningful fallback content inside <object>, add an accessible name (aria-label/aria-labelledby), or use a title attribute as a best-effort fallback.",embed_textAltPresent_title:"<embed> must provide a text alternative",embed_textAltPresent_description:"Checks that <embed> elements provide a text alternative via an accessible name.",embed_textAltPresent_summary_fail:"Missing text alternative for <embed>.",embed_textAltPresent_hint_fail:"Add an accessible name to <embed> (aria-label/aria-labelledby preferred, or a title attribute as a best-effort fallback).",img_altQuality_title:"<img> alt text must be appropriate (manual review)",img_altQuality_description:"Flags <img> elements with non-empty alt text for human review of appropriateness.",img_altQuality_summary_cantTell:"Review alt text on <img> for accuracy and appropriateness.",img_altQuality_hint_cantTell:"Ensure the alt text conveys the image’s purpose/information in context (not redundant, not filename-like).",img_altDecorative_title:"Excluded <img>/<canvas>/<svg> must be decorative (manual review)",img_altDecorative_description:'Flags <img>, <canvas> and <svg> elements excluded from the accessibility tree (aria-hidden, role="none"/"presentation", empty alt, or an unlabeled svg/canvas) for human review that they are purely decorative.',img_altDecorative_summary_cantTell:"Review whether this <{{element}}> is decorative.",img_altDecorative_hint_cantTell:"Confirm the element is purely decorative. If it conveys information or function, give it a real text alternative (or an accessible name) instead of excluding it.",area_altQuality_title:"<area> alt text must be appropriate (manual review)",area_altQuality_description:"Flags <area> elements with non-empty alt text for human review of appropriateness.",area_altQuality_summary_cantTell:"Review alt text on <area> for accuracy and appropriateness.",area_altQuality_hint_cantTell:"Ensure the alt text identifies the destination/action of the image map area in context.",area_altDecorative_title:'<area> with alt="" must be decorative (manual review)',area_altDecorative_description:"Flags <area> elements with empty alt for human review that they are decorative/non-informative.",area_altDecorative_summary_cantTell:'Review whether <area> is decorative (alt="").',area_altDecorative_hint_cantTell:"Confirm the area does not convey information or function. If it is interactive or meaningful, provide meaningful alt text.",inputImage_altQuality_title:'<input type="image"> alt text must be appropriate (manual review)',inputImage_altQuality_description:'Flags <input type="image"> elements with non-empty alt text for human review of appropriateness.',inputImage_altQuality_summary_cantTell:'Review alt text on <input type="image"> for accuracy and appropriateness.',inputImage_altQuality_hint_cantTell:"Ensure the alt text describes the control’s action (e.g., “Search”, “Submit order”) in context.",inputImage_altDecorative_title:'<input type="image"> with alt="" must be appropriate (manual review)',inputImage_altDecorative_description:'Flags <input type="image"> elements with empty alt for human review (usually not appropriate for functional controls).',inputImage_altDecorative_summary_cantTell:'Review <input type="image"> with alt="".',inputImage_altDecorative_hint_cantTell:"This control is typically functional. Confirm it has an equivalent accessible name elsewhere, or provide meaningful alt text.",canvas_textAltQuality_title:"<canvas> text alternative must be appropriate (manual review)",canvas_textAltQuality_description:"Flags <canvas> elements with a detected text alternative for human review of equivalence and appropriateness.",canvas_textAltQuality_summary_cantTell:"Review text alternative for <canvas> for equivalence and appropriateness.",canvas_textAltQuality_hint_cantTell:"Confirm the fallback text or accessible name conveys the same information/function as the canvas content.",svg_textAltQuality_title:"<svg> text alternative must be appropriate (manual review)",svg_textAltQuality_description:"Flags applicable <svg> graphics with a detected text alternative for human review of appropriateness.",svg_textAltQuality_summary_cantTell:"Review text alternative for <svg> for accuracy and appropriateness.",svg_textAltQuality_hint_cantTell:"Confirm the <title>/<desc> or ARIA name conveys the meaning/purpose of the graphic in context.",object_textAltQuality_title:"<object> text alternative must be appropriate (manual review)",object_textAltQuality_description:"Flags <object> elements with detected fallback or name for human review of equivalence and appropriateness.",object_textAltQuality_summary_cantTell:"Review text alternative for <object> for equivalence and appropriateness.",object_textAltQuality_hint_cantTell:"Confirm the fallback content or ARIA name provides an equivalent alternative for the embedded content.",embed_textAltQuality_title:"<embed> text alternative must be appropriate (manual review)",embed_textAltQuality_description:"Flags <embed> elements with a detected name for human review of appropriateness.",embed_textAltQuality_summary_cantTell:"Review text alternative for <embed> for accuracy and appropriateness.",embed_textAltQuality_hint_cantTell:"Confirm the ARIA name or title accurately identifies the embedded content in context.",videoPoster_textAltPresent_title:"<video> poster must have a text alternative",videoPoster_textAltPresent_description:"Checks that <video> elements with a poster image provide a text alternative (accessible name).",videoPoster_textAltPresent_summary_fail:"Missing text alternative for <video> poster.",videoPoster_textAltPresent_hint_fail:"Provide an accessible name for the poster image (aria-label/aria-labelledby preferred, or a title attribute as a fallback).",svgImage_textAltPresent_title:"SVG <image> must have a text alternative",svgImage_textAltPresent_description:"Checks that SVG <image> elements provide a text alternative via <title>/<desc> or an ARIA accessible name.",svgImage_textAltPresent_summary_fail:"Missing text alternative on SVG <image>.",svgImage_textAltPresent_hint_fail:"Add a <title> (and optionally <desc>) inside <image>, or provide aria-label/aria-labelledby.",formControl_programmaticLabelPresent_title:"Form controls must have a programmatic label",formControl_programmaticLabelPresent_description:"Checks that form controls have a programmatic label via <label>, aria-label, aria-labelledby, title, or placeholder.",formControl_programmaticLabelPresent_summary_fail:"Form control is missing a programmatic label.",formControl_programmaticLabelPresent_hint_fail:"Provide a <label> association, aria-label, or aria-labelledby (placeholder/title do not count as labels).",formControlAccessibleName_description:"Fails when an applicable form control has no accessible name (e.g., label, aria-label, aria-labelledby).",formControlAccessibleName_hint_fail:"Provide an accessible name via a <label>, aria-label, or aria-labelledby.",formControlAccessibleName_summary_fail:"Form control has no accessible name.",formControlAccessibleName_title:"Form controls must have an accessible name",linksTargetBlankNoopener_description:'Ensures links with target="_blank" mitigate reverse tabnabbing risks.',linksTargetBlankNoopener_hint_cantTell:"See guidance for this rule.",linksTargetBlankNoopener_summary_cantTell:'Links that open in a new tab should use rel="noopener"',linksTargetBlankNoopener_title:'Links that open in a new tab should use rel="noopener"',manualReview_description:"Flags that a manual review of keyboard navigation and focus order is required.",manualReview_hint_cantTell:"See guidance for this rule.",manualReview_summary_cantTell:"Manual review: keyboard navigation and focus order",manualReview_title:"Manual review: keyboard navigation and focus order","rules.img-alt-suspicious.meta.title":"Suspicious alt text requires verification","rules.img-alt-suspicious.meta.description":"Identifies images whose alt text matches common suspicious patterns (such as filenames, URLs, placeholders, or generic terms) and requires manual verification.","rules.img-alt-suspicious.occurrence.cantTell.summary":'Image alt text appears suspicious ("{{alt}}" looks like {{pattern}}) and requires verification.',"rules.img-alt-suspicious.occurrence.cantTell.hint":"Review the alt text. Avoid filenames, URLs, placeholders, or generic terms, and ensure the text alternative describes the image’s purpose or function in context.",formControlLabelQuality_title:"Form field labels should be descriptive and distinguishable",formControlLabelQuality_description:`Flags a visible form-field label that is a placeholder ("Label", "Field"), or that repeats another field's label with no visible context (heading, legend, or row) telling the two apart.`,formControlLabelQuality_summary_cantTell_placeholder:`This field's visible label ("{{label}}") is a placeholder rather than a description of what the field is for.`,formControlLabelQuality_summary_cantTell_duplicate:`This field's visible label ("{{label}}") is shared with {{count}} other field(s), with no visible heading, legend or row text telling them apart.`,formControlLabelQuality_hint_cantTell_placeholder:"Replace the label with one naming the information the field collects.",formControlLabelQuality_summary_cantTell_partiallyHidden:`This field's label is split: "{{label}}" is what renders, while {{hiddenCount}} other part(s) of the label are hidden from sight.`,formControlLabelQuality_hint_cantTell_partiallyHidden:"Confirm the visible part alone identifies the field, or make the rest of the label visible.",formControlLabelQuality_hint_cantTell_duplicate:"Give each field a label of its own, or put the distinguishing context on screen: a visible heading or a fieldset legend above each group.",formControl_programmaticLabelQuality_title:"Form controls should not rely on placeholder or title as the primary label",formControl_programmaticLabelQuality_description:"Flags form controls whose computed accessible name relies on placeholder or title as the primary labeling method. Prefer <label> or aria-labelledby.",formControl_programmaticLabelQuality_summary_cantTell:"Form control’s primary label is derived from {{method}}.",formControl_programmaticLabelQuality_hint_cantTell:"Prefer a persistent <label> or aria-labelledby. Avoid relying on placeholder/title as the primary label.",html_lang_attr_title:"Page language is declared",html_lang_attr_description:"Checks that the default language of the page is programmatically declared.",html_lang_attr_missing_absent:"The default language of the page is not declared.",html_lang_attr_hint_missing_absent:'Add a lang attribute to the <html> element (for example: <html lang="en">).',html_lang_attr_missing_empty:"The default language of the page is declared but empty.",html_lang_attr_hint_missing_empty:'Set a valid language value in the lang attribute of the <html> element (for example: <html lang="en">).',html_lang_attr_invalid:'The default language of the page is declared, but the value "{{lang}}" is not a valid language tag.',html_lang_attr_hint_invalid:'Use a valid BCP 47 language tag in <html lang="…"> (for example: "en", "fr", "en-US").',mediaTranscriptPresent_title:"Time-based media: transcript or text alternative evidence",mediaTranscriptPresent_description:"Finds audio and video elements where a transcript or other text alternative is not strongly evidenced in the page content. This rule is conservative and reports cantTell when evidence is missing or cannot be verified.",mediaTranscriptPresent_summary_cantTell_missing:"A transcript or other text alternative for this <{{element}}> is not strongly evidenced on the page.",mediaTranscriptPresent_hint_cantTell_missing:"Provide a clearly identified transcript or other text alternative for prerecorded audio-only or video-only media, for example a visible “Transcript” section or link.",mediaTranscriptPresent_summary_cantTell_unverified:"A transcript or other text alternative may be available for this time-based media, but it could not be verified from the page content.",mediaTranscriptPresent_hint_cantTell_unverified:"Ensure a clearly identified transcript or other text alternative is available and visibly or programmatically associated with the media on the page.",pageTitlePresent_title:"Page has a non-empty title",pageTitlePresent_description:"Checks that the page includes a non-empty <title> element.",pageTitlePresent_summary_fail:"The page does not have a non-empty title.",pageTitlePresent_hint_fail:"Add a <title> element with text that describes the page topic or purpose.",pageTitlePatterns_title:"Page title patterns that may be insufficiently descriptive",pageTitlePatterns_description:"Identifies page title patterns that may indicate low descriptiveness, such as generic, duplicated, or overly templated titles. This rule provides review signals and does not fail automatically.",pageTitlePatterns_summary_cantTell:"The page title may not be descriptive enough to identify the page topic or purpose.",pageTitlePresent_summary_fail_missing:"The page is missing a <title> element.",pageTitlePresent_summary_fail_empty:"The page has an empty <title>.",pageTitlePatterns_summary_cantTell_duplicateAcrossPages:"Several pages share the same title, which may make it harder to distinguish pages ({{duplicateGroups}} duplicate groups across {{pagesAnalyzed}} pages). Example: “{{exampleTitle}}”.",pageTitlePatterns_summary_cantTell_templatedAcrossPages:"Many page titles appear highly templated, which may reduce how well titles distinguish pages ({{pagesAnalyzed}} pages).",pageTitlePatterns_summary_cantTell_generic:"The page title is generic and may not identify the page topic or purpose.",pageTitlePatterns_summary_cantTell_veryShort:"The page title is very short and may not identify the page topic or purpose.",pageTitlePatterns_summary_cantTell_templateLike:"The page title appears templated and may not identify the page topic or purpose.",pageTitlePatterns_hint_cantTell:"Review the page title and ensure it clearly identifies the page topic or purpose and helps distinguish the page from others.",contrastComputable_title:"Color contrast is computable for rendered text",contrastComputable_description:"Determines whether sufficient information is available to compute WCAG color contrast for visible text (e.g., no gradients/images/blend modes that make background indeterminate).",contrastComputable_pass_allComputable:"Contrast is computable for all eligible text ({{eligibleTextCount}} text node(s)).",contrastComputable_cantTell_generic:"Contrast may not be computable ({{reasonCode}}).",contrastComputable_cantTell_bgImageOrGradient:"Contrast is not computable because the background uses an image or gradient ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_bgImage:"Contrast is not computable because the background uses an image ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_bgGradient:"Contrast is not computable because the background uses a gradient ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_bgImageAndGradient:"Contrast is not computable because the background uses an image and a gradient ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_mixBlendMode:"Contrast is not computable because mix-blend-mode is used ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_filter:"Contrast is not computable because filter/backdrop-filter is used ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_rootNotOpaque:"Contrast is not computable because the effective background is not fully opaque at the root (alpha={{backgroundAlpha}}).",contrastComputable_cantTell_foregroundUnparsable:"Contrast is not computable because the computed foreground color could not be parsed.",contrastComputable_cantTell_engineFailure:"Contrast computability could not be determined due to an internal engine error ({{reasonCode}}).",contrastComputable_cantTell_backdropFilter:"Contrast is not computable because backdrop-filter is used ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_filterOrBackdropFilter:"Contrast is not computable because filter is used ({{blockerProperty}}={{blockerValue}}).",contrastComputable_cantTell_textShadow:"Contrast is not computable because a text-shadow is used, which may add contrast this calculation does not account for ({{blockerProperty}}={{blockerValue}}).",contrastMinimum_title:"Text meets minimum color contrast (AA)",contrastMinimum_description:"Checks that visible text has a contrast ratio of at least 4.5:1 (normal) or 3:1 (large), when contrast is computable from CSS.",contrastMinimum_fail_belowThreshold:"Element has insufficient color contrast of {{ratio}}:1 (foreground: {{foregroundHex}}, background: {{backgroundHex}}, font size: {{fontSizePx}}px, font weight: {{fontWeightLabel}}). Expected contrast ratio of {{threshold}}:1 ({{#isLargeText}}large text{{/isLargeText}}{{^isLargeText}}normal text{{/isLargeText}}).",contrastMinimum_pass_allAboveThreshold:"All computable text meets minimum contrast (AA). Eligible text nodes: {{eligibleTextCount}}. Computable: {{computableTextCount}}.",contrastMinimum_notApplicable_noComputableText:"No eligible text had computable contrast (eligible text nodes: {{eligibleTextCount}}). See the contrast computability rule for details.",contrastMinimum_cantTell_engineFailure:"Minimum contrast (AA) could not be determined due to an internal engine error ({{reasonCode}}).",contrastEnhanced_title:"Text meets enhanced color contrast (AAA)",contrastEnhanced_description:"Checks that visible text has a contrast ratio of at least 7:1 (normal) or 4.5:1 (large), when contrast is computable from CSS.",contrastEnhanced_fail_belowThreshold:"Element has insufficient color contrast (AAA) of {{ratio}}:1 (foreground: {{foregroundHex}}, background: {{backgroundHex}}, font size: {{fontSizePx}}px, font weight: {{fontWeightLabel}}). Expected contrast ratio of {{threshold}}:1 ({{#isLargeText}}large text{{/isLargeText}}{{^isLargeText}}normal text{{/isLargeText}}).",contrastEnhanced_pass_allAboveThreshold:"All computable text meets enhanced contrast (AAA). Eligible text nodes: {{eligibleTextCount}}. Computable: {{computableTextCount}}.",contrastEnhanced_notApplicable_noComputableText:"No eligible text had computable contrast (eligible text nodes: {{eligibleTextCount}}). See the contrast computability rule for details.",contrastEnhanced_cantTell_engineFailure:"Enhanced contrast (AAA) could not be determined due to an internal engine error ({{reasonCode}}).",dom_textContrastMinimum_title:"Text must have sufficient contrast (minimum)",dom_textContrastMinimum_description:"Checks visible text contrast against its computed background per WCAG 2.2 SC 1.4.3 (AA), using rendered styles (font size/weight) to determine the required ratio.",dom_textContrastMinimum_summary_fail:"Insufficient text contrast: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} on background {{bgColor}}. Font {{fontSizePx}}px, weight {{fontWeight}}{{#isBold}}, bold{{/isBold}}{{#isLargeText}} (large text){{/isLargeText}}.",dom_textContrastMinimum_hint_fail:"Adjust the foreground or background color so the contrast ratio is at least {{requiredRatio}}:1 for this text size/weight.",dom_textContrastMinimum_summary_pass:"Text contrast OK: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} on background {{bgColor}}. Font {{fontSizePx}}px, weight {{fontWeight}}{{#isBold}}, bold{{/isBold}}{{#isLargeText}} (large text){{/isLargeText}}.",dom_textContrastMinimum_summary_cantTell:"Could not reliably compute text contrast because the effective background is not deterministically resolvable (e.g. image, gradient, video, canvas, complex transparency, or blending).",dom_textContrastMinimum_hint_cantTell:"Manually verify contrast where text overlays imagery/gradients/transparency; ensure it meets {{requiredRatio}}:1 for the computed text size/weight.",dom_textContrastEnhanced_title:"Text must have sufficient contrast (enhanced)",dom_textContrastEnhanced_description:"Checks visible text contrast against its computed background per WCAG 2.2 SC 1.4.6 (AAA), using rendered styles (font size/weight) to determine the required ratio.",dom_textContrastEnhanced_summary_fail:"Insufficient enhanced text contrast: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} on background {{bgColor}}. Font {{fontSizePx}}px, weight {{fontWeight}}{{#isBold}}, bold{{/isBold}}{{#isLargeText}} (large text){{/isLargeText}}.",dom_textContrastEnhanced_hint_fail:"Adjust the foreground or background color so the contrast ratio is at least {{requiredRatio}}:1 for enhanced (AAA) contrast.",dom_textContrastEnhanced_summary_pass:"Enhanced text contrast OK: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} on background {{bgColor}}. Font {{fontSizePx}}px, weight {{fontWeight}}{{#isBold}}, bold{{/isBold}}{{#isLargeText}} (large text){{/isLargeText}}.",dom_textContrastEnhanced_summary_cantTell:"Could not reliably compute enhanced text contrast because the effective background is not deterministically resolvable (e.g. image, gradient, video, canvas, complex transparency, or blending).",dom_textContrastEnhanced_hint_cantTell:"Manually verify enhanced (AAA) contrast where text overlays imagery/gradients/transparency; ensure it meets {{requiredRatio}}:1 for the computed text size/weight.",dom_nonTextContrast_title:"UI components and graphics must have sufficient contrast",dom_nonTextContrast_description:"Checks contrast for non-text visual information (UI component boundaries, states, and meaningful graphical objects) per WCAG 2.2 SC 1.4.11 (AA).",dom_nonTextContrast_summary_fail:"Insufficient non-text contrast: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} against background {{bgColor}}. Component: {{componentKind}}{{#componentState}} (state: {{componentState}}){{/componentState}}.",dom_nonTextContrast_hint_fail:"Adjust the component/graphic colors so the contrast ratio is at least {{requiredRatio}}:1 for the perceivable boundary or essential visual information.",dom_nonTextContrast_summary_pass:"Non-text contrast OK: {{contrastRatio}}:1 (required {{requiredRatio}}:1). Foreground {{fgColor}} against background {{bgColor}}. Component: {{componentKind}}{{#componentState}} (state: {{componentState}}){{/componentState}}.",dom_nonTextContrast_summary_cantTell:"Could not reliably compute non-text contrast because the effective background or painted pixels are not deterministically resolvable (e.g. image/gradient/video/canvas, complex transparency, or blending).",dom_nonTextContrast_hint_cantTell:"Manually verify the component/graphic contrast against adjacent colors; ensure it meets {{requiredRatio}}:1 for essential non-text visual information.",contrastEnhanced_pass_allTextMeetsThreshold:"All computable text meets enhanced contrast (AAA).",contrastMinimum_pass_allTextMeetsThreshold:"All computable text meets minimum contrast (AA).",contrastComputable_cantTell_notComputable:"Contrast could not be computed for this text ({{reasonCode}}).",roleImg_textAlternativePresent_title:'[role="img"/"graphics-symbol"/"graphics-document"] must have an accessible text alternative',roleImg_textAlternativePresent_description:'Checks that elements with role="img", "graphics-symbol" or "graphics-document" provide an accessible text alternative using aria-label, aria-labelledby, a title attribute, or (for SVG elements) a first-child <title>.',roleImg_textAlternativePresent_summary_fail:'The element with role="{{role}}" does not have an accessible text alternative.',roleImg_textAlternativePresent_hint_fail:"Provide a text alternative using aria-label, or aria-labelledby that references non-empty text.",targetSizeMinimum_title:"Pointer targets must be at least 24x24px large, or leave sufficient distance to other targets",targetSizeMinimum_description:"Checks that pointer-operable targets have an effective hit region of at least 24 by 24 CSS pixels, or meet an allowed exception (e.g. sufficient spacing).",targetSizeMinimum_summary_fail:"One or more pointer targets are smaller than 24×24 CSS px and are too close to another target.",targetSizeMinimum_hint_fail:"Increase the target size to at least 24×24 CSS px or add sufficient spacing from neighboring targets.",targetSizeMinimum_summary_cantTell_ambiguousSpacing:"Target may be too small and too close to another target, but the overlap is near the detection threshold and could not be confidently measured.",targetSizeMinimum_hint_cantTell_ambiguousSpacing:"Manually verify the effective spacing between this target and its neighbor; increase target size or spacing if the overlap is real.",targetSizeMinimum_summary_cantTell_plausiblyEssential:"Target is too small and too close to another target, but may be exempt as part of an essential graphic or image-map region.",targetSizeMinimum_hint_cantTell_plausiblyEssential:"Verify whether this target’s size is essential to its function (e.g. part of an SVG/canvas/image map); if not, increase target size or spacing.",targetSizeMinimum_summary_cantTell_inlineLinkRun:"Target is smaller than 24×24 CSS px and close to another inline link in the same run of text, where the inline exception may apply.",targetSizeMinimum_hint_cantTell_inlineLinkRun:"Confirm whether these links form a run of inline text (which is exempt); otherwise increase the target size to at least 24×24 CSS px or add spacing.",targetSizeMinimum_notApplicable_noTargets:"No pointer-operable targets were eligible for evaluation.",targetSizeMinimum_pass_allOk:"All eligible pointer targets meet the minimum size or a permitted exception.",ariaHidden_focus_title:"ARIA hidden elements must not be focusable",ariaHidden_focus_description:'Checks that aria-hidden="true" elements are not focusable and do not contain focusable descendants.',ariaHidden_focus_summary_fail_desc:"aria-hidden {{element}} contains {{focusableCount}} focusable element(s).",ariaHidden_focus_summary_fail_self:"aria-hidden {{element}} is focusable ({{focusableCount}} focusable element(s)).",ariaHidden_focus_summary_fail_self_and_desc:"aria-hidden {{element}} is focusable and contains {{descendantFocusableCount}} focusable descendant(s) ({{focusableCount}} focusable element(s) total).",ariaHidden_focus_hint_fail:"Remove focusability from descendants or remove aria-hidden; ensure focus and accessibility trees stay aligned.",ariaHidden_focus_summary_cantTell_redirect:"aria-hidden {{element}} received focus but focus moved immediately to another element. Verify sentinel/focus-trap behavior.",ariaHidden_focus_hint_cantTell_redirect:"Verify this is an intentional focus sentinel/focus-trap handoff and that keyboard users never remain on hidden focus targets.",ariaHidden_focus_summary_cantTell_modal:"aria-hidden {{element}} contains {{focusableCount}} focusable element(s) while a modal dialog is open. If the modal keeps keyboard focus trapped they may be unreachable; verify focus cannot land on them.",ariaHidden_focus_hint_cantTell_modal:"A modal dialog appears to be open. Prefer making the background inert (or a native <dialog> opened with showModal()) so it leaves the tab order, then verify keyboard focus stays within the dialog.",cssFocusIndicatorSuppressed_title:"Focus indicator must not be removed without a replacement",cssFocusIndicatorSuppressed_description:"Flags elements in the tab order whose focus outline is removed by a :focus/:focus-visible rule with no replacement indicator (border, box-shadow, background, ...) in any other focus rule matching them.",cssFocusIndicatorSuppressed_summary_cantTell:'This element takes a tab stop, and "{{selectors}}" removes its focus outline with no replacement indicator in any other focus rule matching it.',cssFocusIndicatorSuppressed_hint_cantTell:"Draw a replacement indicator in the same rule (a visible outline, border, box-shadow, or background change), or drop the outline reset. If the indicator is applied from script instead, confirm it appears for keyboard users.",cssHidden_focus_title:"Focusable elements must not be visually hidden",cssHidden_focus_description:"Checks that keyboard-focusable elements are not visually hidden by CSS techniques that can leave them in the tab order.",cssHidden_focus_summary_cantTell:"Focusable {{element}} is visually hidden ({{visibilityHints}}).",cssHidden_focus_hint_cantTell:"Make the element visible when it can receive keyboard focus, or remove it from the tab order until it is visible.",linkNamePresent_title:"Links have an accessible name",linkNamePresent_description:"Checks that links expose a non-empty accessible name.",linkNamePresent_summary_fail:"This link has no accessible name.",linkNamePresent_hint_fail:"Provide link text or an accessible-name mechanism (for example aria-label) so assistive technologies can identify the link.",buttonNamePresent_title:"Buttons have an accessible name",buttonNamePresent_description:"Checks that buttons expose a non-empty accessible name.",buttonNamePresent_summary_fail:"This button has no accessible name.",buttonNamePresent_hint_fail:"Provide visible button text or a programmatic accessible-name mechanism (for example aria-label) so assistive technologies can identify the button.",binaryControlNamePresent_title:"Binary controls have an accessible name",binaryControlNamePresent_description:"Checks that checkbox, radio, and switch controls expose a non-empty accessible name.",binaryControlNamePresent_summary_fail:"This control has no accessible name.",binaryControlNamePresent_hint_fail:"Provide a label, aria-label, aria-labelledby, or other accessible-name mechanism so assistive technologies can identify the control.",comboboxNamePresent_title:"Comboboxes have an accessible name",comboboxNamePresent_description:'Checks that elements with role="combobox" expose a non-empty accessible name.',comboboxNamePresent_summary_fail:"This combobox has no accessible name.",comboboxNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this combobox's accessible name.",dialogNamePresent_title:"Dialogs have an accessible name",dialogNamePresent_description:'Checks that elements with role="dialog" or role="alertdialog" expose a non-empty accessible name.',dialogNamePresent_summary_fail:"This dialog has no accessible name.",dialogNamePresent_hint_fail:"Provide aria-labelledby (preferred) or aria-label so assistive technologies can announce the dialog.",menuitemNamePresent_title:"Menu items have an accessible name",menuitemNamePresent_description:'Checks that menu items (role="menuitem*", including checkbox/radio variants) expose a non-empty accessible name.',menuitemNamePresent_summary_fail:"This menu item has no accessible name.",menuitemNamePresent_hint_fail:"Provide visible text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",tabNamePresent_title:"Tabs have an accessible name",tabNamePresent_description:'Checks that elements with role="tab" expose a non-empty accessible name.',tabNamePresent_summary_fail:"This tab has no accessible name.",tabNamePresent_hint_fail:"Provide tab text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",sliderNamePresent_title:"Sliders have an accessible name",sliderNamePresent_description:'Checks that sliders (input[type="range"] and role="slider") expose a non-empty accessible name.',sliderNamePresent_summary_fail:"This slider has no accessible name.",sliderNamePresent_hint_fail:"Provide a label, aria-label, or aria-labelledby so assistive technologies can identify the slider.",textboxNamePresent_title:"Textboxes have an accessible name",textboxNamePresent_description:'Checks that elements with role="textbox" expose a non-empty accessible name.',textboxNamePresent_summary_fail:"This textbox has no accessible name.",textboxNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this textbox's accessible name.",searchboxNamePresent_title:"Searchboxes have an accessible name",searchboxNamePresent_description:'Checks that elements with role="searchbox" expose a non-empty accessible name.',searchboxNamePresent_summary_fail:"This searchbox has no accessible name.",searchboxNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this searchbox's accessible name.",spinbuttonNamePresent_title:"Spinbuttons have an accessible name",spinbuttonNamePresent_description:'Checks that elements with role="spinbutton" expose a non-empty accessible name.',spinbuttonNamePresent_summary_fail:"This spinbutton has no accessible name.",spinbuttonNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this spinbutton's accessible name.",listboxNamePresent_title:"Listboxes have an accessible name",listboxNamePresent_description:'Checks that elements with role="listbox" expose a non-empty accessible name.',listboxNamePresent_summary_fail:"This listbox has no accessible name.",listboxNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this listbox's accessible name.",optionNamePresent_title:"Options have an accessible name",optionNamePresent_description:'Checks that elements with role="option" expose a non-empty accessible name.',optionNamePresent_summary_fail:"This option has no accessible name.",optionNamePresent_hint_fail:"Provide option text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",treeitemNamePresent_title:"Tree items have an accessible name",treeitemNamePresent_description:'Checks that elements with role="treeitem" expose a non-empty accessible name.',treeitemNamePresent_summary_fail:"This tree item has no accessible name.",treeitemNamePresent_hint_fail:"Provide tree item text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",ariaRoleNamePresent_title:"ARIA roles that require an accessible name have one",ariaRoleNamePresent_description:"Checks that the ARIA roles WAI-ARIA requires an accessible name for expose a non-empty one.",ariaRoleNamePresent_summary_fail:"This element has no accessible name.",ariaRoleNamePresent_hint_fail:"Provide aria-label or aria-labelledby (preferred), or a non-empty title attribute.",composite_rollup_summary:"Composite rule result: {{reasonCode}} ({{testCount}} checks)","catalog.rules.wcag_111_non_text_content.title":"Non-text content: text alternatives","catalog.rules.wcag_111_non_text_content.description":"Rollup of checks ensuring non-text content has an appropriate text alternative.","catalog.rules.wcag_121_prerecorded_transcript.title":"Audio-only and video-only (prerecorded): transcript","catalog.rules.wcag_121_prerecorded_transcript.description":"Rollup of checks for transcript availability for prerecorded audio-only or video-only media.","catalog.rules.wcag_143_contrast_minimum.title":"Contrast: minimum","catalog.rules.wcag_143_contrast_minimum.description":"Rollup of checks for minimum text contrast.","catalog.rules.wcag_146_contrast_enhanced.title":"Contrast: enhanced","catalog.rules.wcag_146_contrast_enhanced.description":"Rollup of checks for enhanced text contrast.","catalog.rules.wcag_242_page_titled.title":"Page titled","catalog.rules.wcag_242_page_titled.description":"Rollup of checks ensuring documents have a meaningful page title.","catalog.rules.wcag_247_focus_visible.title":"Focus visible","catalog.rules.wcag_247_focus_visible.description":"Rollup of checks ensuring keyboard focus is not hidden and remains perceivable.","catalog.rules.wcag_258_target_size_minimum.title":"Target size: minimum","catalog.rules.wcag_258_target_size_minimum.description":"Rollup of checks ensuring pointer targets meet minimum size requirements.","catalog.rules.wcag_311_language_of_page.title":"Language of page","catalog.rules.wcag_311_language_of_page.description":"Rollup of checks ensuring the page language is specified.","catalog.rules.wcag_412_name.title":"Name, role, value: accessible name","catalog.rules.wcag_412_name.description":"Rollup of checks that common interactive elements expose a non-empty accessible name.",labelInName_title:"Label in Name: accessible name contains visible text",labelInName_description:"Checks that when a control has a visible text label, the accessible name contains that visible label text (WCAG 2.5.3).",labelInName_summary_fail:'{{element}}: visible label "{{visibleLabel}}" (from {{labelSource}}) is not included in the accessible name (from {{nameMechanism}}).',labelInName_hint_fail:"Update aria-label/aria-labelledby (or the visible label text) so the accessible name includes the visible label wording.",labelInName_summary_cantTell:'{{element}}: visible label "{{visibleLabel}}" (from {{labelSource}}) differs from the accessible name (from {{nameMechanism}}) only by an abbreviation or by hyphenation.',labelInName_hint_cantTell:"Check by hand whether the two wordings match: markup cannot tell an intended abbreviation from a mismatch.",labelInName_summary_cantTell_symbolic:'{{element}}: visible label "{{visibleLabel}}" (from {{labelSource}}) may render as an icon or symbol rather than literal text, so it may not need to appear in the accessible name (from {{nameMechanism}}).',labelInName_hint_cantTell_symbolic:"Check by hand: if the visible text renders as an icon or symbol, this is not a defect; if it renders as literal words, update the accessible name to include them.",ariaRolesValid_title:"role attribute must be a valid, non-abstract ARIA role",ariaRolesValid_description:'Checks that an explicit role="" attribute resolves to a real, non-abstract WAI-ARIA role.',ariaRolesValid_summary_invalid:'role="{{role}}" is not a recognized ARIA role.',ariaRolesValid_hint_invalid:"Use a valid ARIA role token, or remove the role attribute if none applies.",ariaRolesValid_summary_abstract:'role="{{role}}" is an abstract ARIA role, which must not be used directly.',ariaRolesValid_hint_abstract:"Replace this abstract role with a concrete role appropriate for the widget/structure.",ariaRolesValid_summary_cantTell:'The role attribute value is not usable, so this element is still exposed as its native role="{{nativeRole}}".',ariaRolesValid_hint_cantTell:"Fix or remove the role token; assistive technology is using the native role in the meantime.",ariaDeprecatedRole_title:"role attribute should not use a deprecated or author-discouraged ARIA role",ariaDeprecatedRole_description:'Checks that an explicit role="" attribute does not use a role deprecated by the WAI-ARIA specification, or one reserved for user-agent-internal use (e.g. role="generic").',ariaDeprecatedRole_summary_fail:'This element uses role="{{role}}", which authors must not explicitly declare.',ariaDeprecatedRole_summary_cantTell:'This element uses role="{{role}}", which is deprecated in WAI-ARIA (still valid, but discouraged).',ariaDeprecatedRole_summary_cantTell_discouraged:'This element uses role="{{role}}", which is reserved for user agents (still valid, but discouraged).',ariaDeprecatedRole_guidance_directory:'Replace it with role="list" (its recommended replacement).',ariaDeprecatedRole_guidance_generic:'Remove it: this role is reserved for user-agent-internal use, not authors. Use role="presentation"/"none" to strip semantics, a semantic role like "group" to convey grouping, or a plain element (which already carries the implicit generic role) instead.',ariaDeprecatedRole_guidance_default:"Replace the deprecated role with its recommended replacement.",ariaValidAttr_title:"aria-* attributes must be real, defined ARIA attributes",ariaValidAttr_description:"Checks that every aria-* attribute name present in the DOM is a real attribute defined by the WAI-ARIA specification.",ariaValidAttr_summary_fail:"{{attr}} is not a recognized ARIA attribute.",ariaValidAttr_hint_fail:"Correct the attribute name (check for typos), or remove it if not needed.",ariaValidAttrValue_title:"aria-* attribute values must match their declared type",ariaValidAttrValue_description:"Checks that every recognized aria-* attribute has a value conforming to its WAI-ARIA-declared value type (boolean, tristate, token, integer, number, or ID reference).",ariaValidAttrValue_summary_fail:'{{attr}}="{{value}}" is not a valid value for this attribute.',ariaValidAttrValue_hint_fail:"Use a value that matches the attribute’s expected type (see the WAI-ARIA specification for this attribute).",ariaValidAttrValue_summary_cantTell_idref:'{{attr}}="{{value}}" points to an id that no element currently has, so this reference cannot be checked statically.',ariaValidAttrValue_hint_cantTell_idref:"Confirm the controlled element is created when the widget opens; if it never exists, remove or correct the reference.",ariaAllowedAttr_title:"aria-* attributes must be permitted for the element’s role",ariaAllowedAttr_description:"Checks that every recognized aria-* attribute present on an element with an explicit role is either globally supported or supported by that role.",ariaAllowedAttr_summary_fail:'{{attr}} is not permitted on role="{{role}}".',ariaAllowedAttr_hint_fail:"Remove this attribute, or use a role that supports it.",ariaAllowedAttr_summary_fail_roleless:"<{{element}}> has no ARIA role, so nothing supports the {{attr}} attribute on it.",ariaAllowedAttr_hint_fail_roleless:"Remove {{attr}}, or move it to an element whose role supports it. A role-specific ARIA attribute on an element with no role is ignored by assistive technology.",ariaAllowedAttr_summary_cantTell:'{{attr}} is deprecated on role="{{role}}" (still allowed, but discouraged).',ariaAllowedAttr_hint_cantTell:"This attribute was removed from the ARIA global set in 1.2; remove it or use a role that supports it, as a future ARIA version may disallow it.",ariaProhibitedAttr_title:"ARIA naming attributes must not be used on roles that prohibit them",ariaProhibitedAttr_description:"Checks that aria-label/aria-labelledby are not present on WAI-ARIA roles whose specification explicitly prohibits ARIA naming (e.g. generic, emphasis, strong, paragraph).",ariaProhibitedAttr_summary_fail:'{{attr}} is prohibited on role="{{role}}".',ariaProhibitedAttr_hint_fail:"Remove this attribute; this role must not carry an accessible name.",ariaProhibitedAttr_summary_fail_roleless:"This {{element}} has no role and no other accessible-name source, so {{attr}} is not reliably exposed to assistive technology.",ariaProhibitedAttr_hint_fail_roleless:'Give this element a role that supports an accessible name (e.g. role="img"/"button"), or remove this attribute if it serves no purpose without one.',ariaProhibitedAttr_summary_cantTell_roleless:"This {{element}} has no role, so {{attr}} may not be exposed as its accessible name by assistive technology, but the element's own content already provides one.",ariaProhibitedAttr_hint_cantTell_roleless:`Verify whether the existing text content already serves as this element's label; if so the naming attribute is redundant, otherwise give the element a role that supports naming (e.g. role="img").`,ariaRequiredAttr_title:"Roles with a required ARIA state/property must carry it",ariaRequiredAttr_description:'Checks that elements with an explicit role carry every unambiguous, context-independent required aria-* state/property for that role (e.g. role="checkbox" must have aria-checked).',ariaRequiredAttr_summary_fail:'{{attr}} is required for role="{{role}}", but is missing.',ariaRequiredAttr_hint_fail:"Add this attribute with a valid value for this role.",ariaRequiredAttr_summary_cantTell:'This attribute is required for role="{{role}}" and is missing, but ARIA falls back to "{{implicit}}".',ariaRequiredAttr_hint_cantTell:'Set {{attr}} explicitly if "{{implicit}}" is not the state you mean.',ariaAllowedRole_title:"Explicit role must be permitted for its host element",ariaAllowedRole_description:'Checks that an explicit role="" attribute is one of the roles the ARIA-in-HTML specification permits for the host element (e.g. role="tab" is not permitted on <nav>).',ariaAllowedRole_summary_fail:'role="{{role}}" is not permitted on <{{element}}>.',ariaAllowedRole_hint_fail:"Use a role permitted for this element, or change the host element.",ariaRequiredChildren_title:"Container roles must own at least one required child role",ariaRequiredChildren_description:'Checks that container roles with a documented "required owned elements" entry (list, listbox, menu, radiogroup, table, grid, tablist, tree, row, ...) contain at least one descendant or aria-owns-referenced element with an acceptable owned role.',ariaRequiredChildren_summary_fail:'role="{{role}}" has no owned child with one of the required roles: {{requiredRoles}}.',ariaRequiredChildren_hint_fail:"Add a descendant (or aria-owns-referenced element) with one of the required owned roles.",ariaProhibitedChildren_title:"Container roles must not own a child with a disallowed role",ariaProhibitedChildren_description:"Checks that every accessible-tree-owned child of a container role (list, listbox, menu, menubar, radiogroup, rowgroup, table, grid, treegrid, tablist, tree, row) has one of that role's allowed owned roles.",ariaProhibitedChildren_summary_fail:'This element has role="{{childRole}}", which is not an allowed owned child of the enclosing role="{{containerRole}}" container.',ariaProhibitedChildren_hint_fail:"Remove or change this role so it matches one of the container's allowed owned roles ({{allowedRoles}}), or move this element outside the {{containerRole}} container.",ariaProhibitedChildren_summary_fail_roleless:'This element has no explicit role but carries {{attr}}, making it a real accessible-tree node that is not an allowed owned child of the enclosing role="{{containerRole}}" container.',ariaProhibitedChildren_hint_fail_roleless:`Remove {{attr}} (or the role="{{containerRole}}" container ownership), or give this element role="presentation"/"none" if it isn't meant to be its own accessible-tree node.`,ariaProhibitedChildren_summary_fail_native_focusable:'This element has no explicit role but is natively focusable, making it a real accessible-tree node that is not an allowed owned child of the enclosing role="{{containerRole}}" container.',ariaProhibitedChildren_hint_fail_native_focusable:'Give this element role="presentation"/"none", remove its native focusability (e.g. drop the href/tabindex-granting attribute), or move it outside the {{containerRole}} container.',ariaRequiredParent_title:"Roles requiring a specific context role must be in that context",ariaRequiredParent_description:'Checks that roles with a documented "required context role" entry (listitem, option, tab, treeitem, row, cell, ...) have an ancestor or aria-owns owner with an acceptable context role.',ariaRequiredParent_summary_fail:'role="{{role}}" requires a context role of one of: {{requiredRoles}}, which was not found.',ariaRequiredParent_hint_fail:"Place this element inside (or aria-owns-reference it from) an element with an acceptable context role.",deprecatedElements_title:"Obsolete non-stoppable elements (<blink>, <marquee>) must not be used",deprecatedElements_description:"Checks that deprecated, non-standard HTML elements whose blinking/scrolling content cannot be paused, stopped, or hidden by the user (<blink>, <marquee>) are not present.",deprecatedElements_summary_fail:"<{{element}}> content cannot be paused, stopped, or hidden by the user.",deprecatedElements_hint_fail:"Remove this element; use static content, or an animation with a user-facing pause/stop control, instead.",iframeNamePresent_title:"Frames have an accessible name",iframeNamePresent_description:"Checks that <iframe>/<frame> elements expose a non-empty accessible name via aria-label, aria-labelledby, or the title attribute.",iframeNamePresent_summary_fail:"This <{{element}}> has no accessible name.",iframeNamePresent_hint_fail:"Add a title attribute (or aria-label/aria-labelledby) describing the frame’s content or purpose.",iframeTitleUnique_title:"Frame titles must be unique",iframeTitleUnique_description:"Checks that no two <iframe>/<frame> elements in scope share the same title attribute value.",iframeTitleUnique_summary_fail:`This <{{element}}>'s title "{{title}}" is not unique among the frames on this page.`,iframeTitleUnique_hint_fail:"Give each frame a distinct title describing its specific content or purpose.",identicalIframesSamePurpose_title:"Frames with the same name embed the same resource",identicalIframesSamePurpose_description:"Checks that <iframe>/<frame> elements sharing an accessible name embed the same resource, since one name can only describe one resource.",identicalIframesSamePurpose_summary_cantTell:"This <{{element}}> shares the name “{{name}}” with another frame that embeds a different resource.",identicalIframesSamePurpose_hint_cantTell:"Give each frame a name describing the resource it embeds, or point them at the same resource.",iframeFocusableContent_title:'Frames with tabindex="-1" must not contain focusable content',iframeFocusableContent_description:'Checks that same-origin <iframe>/<frame> elements with tabindex="-1" do not contain focusable content, since browsers do not propagate that restriction into the frame’s embedded document.',iframeFocusableContent_summary_fail:'This <{{element}}> has tabindex="-1" but its content contains focusable elements, which remain reachable by keyboard.',iframeFocusableContent_hint_fail:'Remove focusable content from the frame, or remove tabindex="-1" if the frame is meant to be reachable.',tableHeadersAttrValid_title:'Table cell "headers" attribute must reference valid header cells',tableHeadersAttrValid_description:"Checks that each id in a <td>/<th> headers attribute resolves to a cell (<td> or <th>) within the same table (not missing, not a non-cell element, not itself).",tableHeadersAttrValid_summary_fail:"This <{{element}}>'s headers attribute references invalid header cell(s): {{invalidIds}}.",tableHeadersAttrValid_hint_fail:"Update the headers attribute so every id refers to a <th> element within the same table.",tableThHasDataCells_title:"<th> elements must describe at least one data cell",tableThHasDataCells_description:"Checks that a table containing <th> elements also contains at least one <td> data cell for those headers to describe.",tableThHasDataCells_summary_fail:"This table has header cells but no data cells for them to describe.",tableThHasDataCells_hint_fail:"Add data cells (<td>) to the table, or remove the header cells if the table has no data.",ariaHiddenBody_title:"The document <body> must not be aria-hidden",ariaHiddenBody_description:'Checks that <body> does not have aria-hidden="true", which would remove the entire page from the accessibility tree.',ariaHiddenBody_summary_fail:'The document body has aria-hidden="true", which hides the entire page from assistive technologies.',ariaHiddenBody_hint_fail:"Remove aria-hidden from <body>. Hide specific elements instead, if that was the intent.",listChildrenValid_title:"Lists must only directly contain list items",listChildrenValid_description:"Checks that <ul>/<ol> elements only have <li>, <script>, or <template> as direct children.",listChildrenValid_summary_fail:"This <{{element}}> contains a direct child that is not a list item: {{invalidChildren}}.",listChildrenValid_hint_fail:"Only use <li> (or <script>/<template>) as direct children of <ul>/<ol>; move other markup inside an <li>.",listitemParentValid_title:"List items must be inside a list container",listitemParentValid_description:'Checks that <li> elements are contained by <ul>, <ol>, or an element with role="list".',listitemParentValid_summary_fail:"This list item's parent (<{{parentElement}}>) is not a list container.",listitemParentValid_hint_fail:'Place this <li> inside a <ul>/<ol>, or give its parent role="list".',definitionListChildrenValid_title:"Description lists must be structured correctly",definitionListChildrenValid_description:"Checks that <dl> elements only directly contain <dt>/<dd> groups (optionally wrapped in one <div>), <script>, <template>, or <style>.",definitionListChildrenValid_summary_fail_invalidChild:"This description list contains a direct or wrapped child that is not part of a dt/dd group: {{invalidChildren}}.",definitionListChildrenValid_hint_fail_invalidChild:"Only use <dt>/<dd> (optionally wrapped in one <div>), <script>, <template>, or <style> inside <dl>.",definitionListChildrenValid_summary_fail_noDtDd:"This description list has no <dt>/<dd> term-definition group.",definitionListChildrenValid_hint_fail_noDtDd:"Add at least one <dt>/<dd> pair inside this <dl>.",dlitemParentValid_title:"Description-list items must be inside a description list",dlitemParentValid_description:"Checks that <dt>/<dd> elements are contained by a <dl>, directly or via one wrapping <div>.",dlitemParentValid_summary_fail:"This <{{element}}>'s parent (<{{parentElement}}>) is not a description list.",dlitemParentValid_hint_fail:"Place this <dt>/<dd> inside a <dl>, directly or wrapped in a single <div>.",duplicateId_title:"IDs must be unique",duplicateId_description:"Checks that every non-empty id attribute value is unique within its own document or shadow tree (WCAG 2.0/2.1 SC 4.1.1, removed in WCAG 2.2).",duplicateId_summary_fail:'The id "{{id}}" is used on {{count}} elements in the same tree.',duplicateId_hint_fail:"Give each element its own id. A duplicate breaks <label for>, fragment links, getElementById and every ID-reference attribute, all of which resolve to the first match only.",duplicateIdAria_title:"IDs referenced by ARIA must be unique",duplicateIdAria_description:"Checks that any id value referenced by an ARIA ID-reference attribute (aria-labelledby, aria-describedby, aria-owns, aria-controls, aria-activedescendant, aria-flowto, aria-errormessage, aria-details) is unique in the document.",duplicateIdAria_summary_cantTell:'The id "{{id}}" is referenced by an ARIA attribute but is used by {{duplicateCount}} elements; the reference resolves to the first one.',duplicateIdAria_hint_cantTell:"Confirm the first element carrying this id is the intended target, or make the id unique within the document.",summaryNamePresent_title:"Summary elements have an accessible name",summaryNamePresent_description:"Checks that <summary> elements expose a non-empty accessible name.",summaryNamePresent_summary_fail:"This summary has no accessible name.",summaryNamePresent_hint_fail:"Provide summary text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",metaViewportZoomEnabled_title:"Viewport meta tag must not disable zoom",metaViewportZoomEnabled_description:'Checks that <meta name="viewport"> does not set user-scalable=no or maximum-scale below 2 (200%).',metaViewportZoomEnabled_summary_fail:"This viewport meta tag restricts the user's ability to zoom ({{reasons}}).",metaViewportZoomEnabled_hint_fail:"Remove user-scalable=no and any maximum-scale below 2 from the viewport meta content.",metaRefreshTimingAbsent_title:"Page must not use a timed meta refresh",metaRefreshTimingAbsent_description:'Checks that <meta http-equiv="refresh"> does not impose a positive delay of 20 hours or less.',metaRefreshTimingAbsent_summary_fail:"This page refreshes itself automatically after {{delay}} seconds.",metaRefreshTimingAbsent_hint_fail:"Remove the timed meta refresh, or provide a way for users to turn it off, extend it, or pause it before it triggers.",meterNamePresent_title:"Meters have an accessible name",meterNamePresent_description:'Checks that elements with role="meter" expose a non-empty accessible name.',meterNamePresent_summary_fail:"This meter has no accessible name.",meterNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this meter's accessible name.",progressbarNamePresent_title:"Progress bars have an accessible name",progressbarNamePresent_description:'Checks that elements with role="progressbar" expose a non-empty accessible name.',progressbarNamePresent_summary_fail:"This progress bar has no accessible name.",progressbarNamePresent_hint_fail:"Provide aria-label, aria-labelledby, or a title attribute. Visible text content is not exposed as this progress bar's accessible name.",tooltipNamePresent_title:"Tooltips have an accessible name",tooltipNamePresent_description:'Checks that elements with role="tooltip" expose a non-empty accessible name.',tooltipNamePresent_summary_fail:"This tooltip has no accessible name.",tooltipNamePresent_hint_fail:"Provide tooltip text that is not hidden from assistive technologies, or provide aria-label or aria-labelledby.",serverSideImageMapAbsent_title:"Images must not use a server-side image map",serverSideImageMapAbsent_description:"Checks that <img> elements do not carry the ismap attribute (server-side image maps have no keyboard-operable equivalent).",serverSideImageMapAbsent_summary_fail:"This image uses a server-side image map, which has no keyboard-operable equivalent.",serverSideImageMapAbsent_hint_fail:"Replace the server-side image map (ismap) with a client-side image map (<map>/<area>) or separate accessible links/buttons.",formControlSingleLabel_title:"Form controls must not have multiple labels",formControlSingleLabel_description:"Checks that a form control is associated with at most one <label> (by wrapping or by label[for]).",formControlSingleLabel_summary_fail:"This <{{element}}> is associated with {{labelCount}} labels.",formControlSingleLabel_hint_fail:"Keep only one <label> per form control (either wrapping it or referencing it via for/id).",formControlSingleLabel_summary_cantTell:"This <{{element}}> has one labelling <label> plus an extra empty <label> association; verify how it is announced.",formControlSingleLabel_hint_cantTell:"Remove the redundant empty <label> so exactly one <label> is associated with the control.",nestedInteractiveControlsAbsent_title:"Interactive controls must not be nested",nestedInteractiveControlsAbsent_description:"Checks that an interactive control (link, button, form control, or ARIA widget role) does not contain another interactive control.",nestedInteractiveControlsAbsent_summary_fail:"This <{{element}}> contains one or more nested interactive controls: {{nestedElements}}.",nestedInteractiveControlsAbsent_hint_fail:"Move the nested interactive control(s) outside this element; nested interactive controls are not reliably operable via assistive technology.",presentationalChildrenFocusableAbsent_title:"Roles with presentational children must not contain focusable content",presentationalChildrenFocusableAbsent_description:"Checks that an element whose role makes its children presentational (button, checkbox, img, option, radio, slider, switch, tab, ...) contains no descendant that takes a tab stop.",presentationalChildrenFocusableAbsent_summary_fail:'This role="{{role}}" element makes its children presentational, but it contains content that is still part of sequential focus navigation ({{focusableElements}}).',presentationalChildrenFocusableAbsent_hint_fail:"Move the focusable content outside this element, or remove the role that makes the children presentational, since focus landing inside it has no role or name to announce.",bypassBlocksPresent_title:"Page must provide a way to bypass repeated blocks",bypassBlocksPresent_description:"Checks that the page has at least one recognized WCAG 2.4.1 bypass-blocks mechanism: a main landmark, a working same-page anchor link, or a heading.",bypassBlocksPresent_summary_cantTell:"No recognized way to bypass repeated blocks of content was detected on this page. Verify a bypass mechanism exists.",bypassBlocksPresent_hint_cantTell:'Confirm the page offers a bypass mechanism: a main landmark (<main> or role="main"), a working "skip to content" link, or heading elements that assistive technology can use to jump past repeated content. (A mechanism may be temporarily hidden, e.g. while a modal dialog makes the page inert, or provided on a per-site basis; this needs human confirmation.)',landmarkBannerIsTopLevel_title:"Banner landmark must be top-level",landmarkBannerIsTopLevel_description:'Checks that the banner landmark (role="banner" or a non-nested <header>) is not nested inside another landmark region.',landmarkBannerIsTopLevel_summary_cantTell:"This banner landmark is nested inside another landmark region.",landmarkBannerIsTopLevel_hint_cantTell:'Move the banner landmark (header/role="banner") so it is not contained by another landmark; a banner should be a top-level region of the page.',landmarkContentinfoIsTopLevel_title:"Contentinfo landmark must be top-level",landmarkContentinfoIsTopLevel_description:'Checks that the contentinfo landmark (role="contentinfo" or a non-nested <footer>) is not nested inside another landmark region.',landmarkContentinfoIsTopLevel_summary_cantTell:"This contentinfo landmark is nested inside another landmark region.",landmarkContentinfoIsTopLevel_hint_cantTell:'Move the contentinfo landmark (footer/role="contentinfo") so it is not contained by another landmark; contentinfo should be a top-level region of the page.',landmarkComplementaryIsTopLevel_title:"Complementary landmark must be top-level",landmarkComplementaryIsTopLevel_description:'Checks that the complementary landmark (role="complementary" or an <aside> that keeps its implicit role) is not nested inside another landmark region.',landmarkComplementaryIsTopLevel_summary_cantTell:"This complementary landmark is nested inside another landmark region.",landmarkComplementaryIsTopLevel_hint_cantTell:'Move the complementary landmark (<aside>/role="complementary") so it is not contained by another landmark; complementary content belongs beside the main content, not inside another region.',landmarkMainIsTopLevel_title:"Main landmark must be top-level",landmarkMainIsTopLevel_description:'Checks that the main landmark (role="main" or <main>) is not nested inside another landmark region.',landmarkMainIsTopLevel_summary_cantTell:"This main landmark is nested inside another landmark region.",landmarkMainIsTopLevel_hint_cantTell:'Move the main landmark (<main>/role="main") so it is not contained by another landmark; main should be a top-level region of the page.',landmarkNoDuplicateBanner_title:"Page must not have more than one banner landmark",landmarkNoDuplicateBanner_description:'Checks that at most one banner landmark (role="banner" or a non-nested <header>) exists on the page.',landmarkNoDuplicateBanner_summary_cantTell:"This page has more than one banner landmark.",landmarkNoDuplicateBanner_hint_cantTell:'Keep only one banner landmark (header/role="banner") per page.',landmarkNoDuplicateContentinfo_title:"Page must not have more than one contentinfo landmark",landmarkNoDuplicateContentinfo_description:'Checks that at most one contentinfo landmark (role="contentinfo" or a non-nested <footer>) exists on the page.',landmarkNoDuplicateContentinfo_summary_cantTell:"This page has more than one contentinfo landmark.",landmarkNoDuplicateContentinfo_hint_cantTell:'Keep only one contentinfo landmark (footer/role="contentinfo") per page.',landmarkNoDuplicateMain_title:"Page must not have more than one main landmark",landmarkNoDuplicateMain_description:'Checks that at most one main landmark (role="main" or <main>) exists on the page.',landmarkNoDuplicateMain_summary_cantTell:"This page has more than one main landmark.",landmarkNoDuplicateMain_hint_cantTell:'Keep only one main landmark (<main>/role="main") per page.',landmarkOneMain_title:"Page should have a main landmark",landmarkOneMain_description:'Checks that the page has at least one main landmark (role="main" or <main>).',landmarkOneMain_summary_cantTell_missing:"This page has no main landmark.",landmarkOneMain_hint_cantTell_missing:`Add a main landmark (<main> or role="main") around the page's primary content.`,landmarkUnique_title:"Landmarks with the same role must have unique names",landmarkUnique_description:"Checks that when two or more landmarks share the same role, each has a distinct accessible name.",landmarkUnique_summary_cantTell_duplicateName:"This {{role}} landmark shares its accessible name with another {{role}} landmark.",landmarkUnique_summary_cantTell_bothUnnamed:"This {{role}} landmark has no accessible name, and more than one unnamed {{role}} landmark exists on this page.",landmarkUnique_hint_cantTell:"Give each {{role}} landmark a distinct name via aria-label or aria-labelledby.",emptyHeading_title:"Headings must not be empty",emptyHeading_description:'Checks that heading elements (<h1>-<h6> or role="heading") have a non-empty accessible name.',emptyHeading_summary_cantTell:"This heading has no accessible name.",emptyHeading_hint_cantTell:"Add text content (or aria-label/aria-labelledby) to this heading, or remove it if it is not needed.",headingOrder_title:"Heading levels must not skip a level",headingOrder_description:"Checks that heading levels increase by at most one at a time in document order.",headingOrder_summary_cantTell:"This heading jumps from level {{fromLevel}} to level {{toLevel}}, skipping a level.",headingOrder_hint_cantTell:"Use consecutive heading levels (do not skip a level when going deeper) so the document outline stays predictable.",pageHasHeadingOne_title:"Page should have a level-one heading",pageHasHeadingOne_description:'Checks that the page has at least one level-one heading (<h1> or role="heading" with aria-level="1").',pageHasHeadingOne_summary_cantTell:"This page has no level-one heading.",pageHasHeadingOne_hint_cantTell:`Add a level-one heading (<h1> or role="heading" aria-level="1") that identifies the page's main content.`,accesskeys_title:"accesskey values must be unique",accesskeys_description:"Checks that no two elements on the page share the same accesskey attribute value.",accesskeys_summary_cantTell:"This element's accesskey is shared with another element on the page.",accesskeys_hint_cantTell:"Make each accesskey value unique across the page.",scopeAttrValid_title:"scope attribute must have a valid value",scopeAttrValid_description:'Checks that scope="..." is one of row, col, rowgroup, or colgroup.',scopeAttrValid_summary_cantTell:"This scope attribute value is not recognized.",scopeAttrValid_hint_cantTell:"Use one of row, col, rowgroup, or colgroup for the scope attribute.",tabindex_title:"tabindex should not be greater than 0",tabindex_description:"Checks that tabindex values are 0 or negative, not a positive number.",tabindex_summary_cantTell:"This element has a positive tabindex, overriding the natural tab order.",tabindex_hint_cantTell:'Use tabindex="0" (or a negative value to remove from tab order) instead of a positive number; fix the DOM order if a different tab order is needed.',emptyTableHeader_title:"Table header cells must not be empty",emptyTableHeader_description:'Checks that table header cells (<th>, or any element with role="columnheader"/"rowheader") have visible text content. A header named only via aria-label/aria-labelledby is also flagged, since real screen-reader/browser support for that is inconsistent.',emptyTableHeader_summary_cantTell:"This table header cell has no accessible name.",emptyTableHeader_hint_cantTell:"Add text content (or aria-label/aria-labelledby) to this header cell, or remove it if it is not needed.",emptyTableHeader_summary_cantTell_ariaOnly:"This table header cell has no visible text. Its only accessible name comes from aria-label/aria-labelledby, which real screen-reader/browser combinations (e.g. NVDA+Firefox, iOS VoiceOver+Safari) are known to ignore on <th> elements.",emptyTableHeader_hint_cantTell_ariaOnly:"Add visible text content to this header cell (in addition to, or instead of, aria-label/aria-labelledby); visible text is the only naming mechanism confirmed to work across tested screen readers.",labelTitleOnly_title:"Form controls should not use title as their only label",labelTitleOnly_description:"Checks that a form control with a title attribute also has a real label (label element, aria-label, or aria-labelledby).",labelTitleOnly_summary_cantTell:"This form control relies on the title attribute as its only label.",labelTitleOnly_hint_cantTell:"Add a visible <label> (or aria-label/aria-labelledby) in addition to, or instead of, the title attribute.",imageRedundantAlt_title:"Image alt text must not duplicate adjacent visible text",imageRedundantAlt_description:"Checks that an <img> alt text is not identical to other visible text already present in its immediate parent element.",imageRedundantAlt_summary_cantTell:"This image's alt text duplicates other visible text right next to it.",imageRedundantAlt_hint_cantTell:'Make the alt text empty (alt="") if the image is purely decorative alongside the text, or remove the redundant duplication.',tableDuplicateName_title:"Table caption must not duplicate its summary attribute",tableDuplicateName_description:"Checks that a <table>'s <caption> text is not identical to its (deprecated) summary attribute.",tableDuplicateName_summary_cantTell:"This table's caption duplicates its summary attribute.",tableDuplicateName_hint_cantTell:"Remove the redundant summary attribute, or make it provide different information than the caption.",metaViewportLarge_title:"Viewport meta tag should allow zooming up to 500%",metaViewportLarge_description:'Checks that <meta name="viewport"> does not set user-scalable=no or maximum-scale below 5 (500%).',metaViewportLarge_summary_cantTell:"This viewport meta tag restricts zoom below the 500% best-practice target.",metaViewportLarge_hint_cantTell:"Remove user-scalable=no and raise maximum-scale to at least 5 (500%) if possible.",presentationRoleConflict_title:"Presentational role must not conflict with a global ARIA attribute or focusability",presentationRoleConflict_description:'Checks that role="presentation"/"none" (including an <img alt=""> implicit presentation role) is not combined with a global ARIA attribute (aria-label, aria-hidden, aria-describedby, ...) or focusability (tabindex/native).',presentationRoleConflict_summary_cantTell:'This role="{{role}}" element also has a conflicting condition ({{attrs}}), which restores its implicit role and cancels the presentational intent.',presentationRoleConflict_hint_cantTell:'Remove the conflicting naming attribute(s) and/or focusability (tabindex/native) if the element should stay presentational, or remove role="presentation"/"none" if it should be exposed to assistive technology.',region_title:"Page content should be inside a landmark region",region_description:"Checks that content under <body> is contained within a landmark region.",region_summary_cantTell:"This content is not contained within a landmark region.",region_hint_cantTell:"Move this content inside a landmark region (main, nav, aside, a labeled section, etc.).",skipLink_title:"Skip link must have a resolvable, usable target",skipLink_description:`Checks that a "skip to ..." link's href fragment resolves to a real, currently usable element in the document.`,skipLink_summary_cantTell:"This skip link's target does not exist.",skipLink_hint_cantTell:"Point the skip link's href at an id that exists in the document, or add the missing target element.",skipLink_summary_unusableTarget_cantTell:"This skip link points to a target that exists but is not currently usable.",skipLink_hint_unusableTarget_cantTell:"Point this skip link to a target that is exposed and usable as a navigation destination.",autocompleteValid_title:"autocomplete attribute must be a valid autofill value",autocompleteValid_description:'Checks that a non-empty autocomplete attribute is "on"/"off" or a well-formed autofill detail token list.',autocompleteValid_summary_fail:"This autocomplete attribute value is not a valid autofill value.",autocompleteValid_hint_fail:'Use "on"/"off", or a valid autofill token list (e.g. "shipping street-address", "cc-number").',passwordPasteEnabled_title:"Authentication fields must not block pasting",passwordPasteEnabled_description:"Checks that a password or one-time-code field carries no inline paste handler that cancels the paste, which would remove the password manager or clipboard that WCAG 3.3.8 relies on as the assisting mechanism.",passwordPasteEnabled_summary_fail:"This authentication field has a paste handler whose only effect is to cancel the paste.",passwordPasteEnabled_hint_fail:"Confirm by hand whether pasting still works. If it is blocked, remove the handler so a password manager, or the clipboard for a one-time code, can fill the field.",passwordPasteEnabled_summary_cantTell:"This authentication field has a paste handler, and whether it cancels pasting could not be determined.",passwordPasteEnabled_hint_cantTell:"Check by hand that pasting into the field still works, so a password manager or the clipboard can fill it.",htmlXmlLangMismatch_title:"lang and xml:lang must not disagree",htmlXmlLangMismatch_description:"Checks that the <html> element's lang and xml:lang attributes declare the same primary language, when both are present.",htmlXmlLangMismatch_summary_fail:'The lang ("{{lang}}") and xml:lang ("{{xmlLang}}") attributes declare different languages.',htmlXmlLangMismatch_hint_fail:"Make lang and xml:lang declare the same primary language, or remove the deprecated xml:lang attribute.",avoidInlineSpacing_title:"Inline style must not force text spacing below the WCAG metric",avoidInlineSpacing_description:"Checks that where inline style forces line-height, letter-spacing or word-spacing with !important, the value already meets WCAG 1.4.12, so the user has nothing left to override.",avoidInlineSpacing_summary_fail:"This element's inline style forces {{properties}} with !important, blocking user text-spacing overrides.",avoidInlineSpacing_hint_fail:"Remove !important from line-height/letter-spacing/word-spacing in inline styles so users can override text spacing.",avoidInlineSpacing_summary_cantTell:"This element's inline style sets {{properties}} with !important, but the value could not be resolved, so whether it meets the WCAG text-spacing metric could not be determined.",avoidInlineSpacing_hint_cantTell:"Check this value by hand against the metric (line-height 1.5, letter-spacing 0.12em, word-spacing 0.16em), or express it in a unit the engine can resolve against the element’s computed font size.",avoidInlineSpacing_summary_cantTell_noSoftWrap:"This element's inline style forces {{properties}} with !important, but its text does not appear able to wrap, so the text-spacing criterion may not apply to it.",avoidInlineSpacing_hint_cantTell_noSoftWrap:"Confirm whether this text ever wraps. If it cannot, the criterion does not apply; if it can, remove !important or set a value that already meets the metric.",metaRefreshNoExceptions_title:"Page must not use a meta refresh at all (AAA)",metaRefreshNoExceptions_description:'Checks that <meta http-equiv="refresh"> is not present at all, regardless of delay. This is the stricter AAA-level counterpart of the A-level positive-delay-only check.',metaRefreshNoExceptions_summary_fail:"This page uses a meta refresh, which is an automatic context change not initiated by the user.",metaRefreshNoExceptions_hint_fail:"Remove the meta refresh; trigger the redirect/refresh only in response to a user action instead.",validLang_title:"Element lang attribute must be syntactically valid",validLang_description:"Checks that any element (other than the root <html>) with a non-empty lang attribute uses a syntactically valid language tag.",validLang_summary_fail:'This lang attribute value ("{{value}}") is not a syntactically valid language tag.',validLang_hint_fail:'Use a valid BCP47 language tag (e.g. "fr", "es-MX").',linkInTextBlock_title:"Links in text blocks must be distinguishable from surrounding text without relying on color alone",linkInTextBlock_description:"Checks that a link inside a run of text is visually distinguishable from the surrounding text by underline, a font-weight/style difference, or a sufficient (>=3:1) color-contrast difference, not by color alone.",linkInTextBlock_summary_fail:"This link in a block of text relies on color alone to be distinguished from the surrounding text.",linkInTextBlock_hint_fail:"Add an underline, a font-weight/style difference, or increase the color contrast between the link and surrounding text to at least 3:1.",linkInTextBlock_summary_cantTell:"Whether this link is distinguishable from the surrounding text by non-color means could not be determined.",linkInTextBlock_hint_cantTell:"Confirm by eye that the link carries an underline, a font-weight or font-style difference, or at least 3:1 contrast against the surrounding text. Running the engine in a real browser rather than a DOM emulator resolves most cases automatically.",noAutoplayAudio_title:"Autoplaying audio should provide a pause/stop or volume-control mechanism",noAutoplayAudio_description:"Flags <audio>/<video> elements that autoplay unmuted with no native controls attribute, for manual review against the 3-second exemption in WCAG 1.4.2.",noAutoplayAudio_summary_cantTell:"This element autoplays audio without a native pause/stop or volume-control mechanism.",noAutoplayAudio_hint_cantTell:"If this clip plays for more than 3 seconds, add a controls attribute (or an equivalent custom mechanism) so users can pause/stop it or control its volume independently of the system volume.",videoCaption_title:"Prerecorded video should provide a captions track",videoCaption_description:'Flags <video> elements with no <track kind="captions"|"subtitles"> child, for manual review of whether the video has an audio track that needs captions.',videoCaption_summary_cantTell:"This video has no captions (or subtitles) track.",videoCaption_hint_cantTell:'If this video has an audio track that conveys information, add a <track kind="captions" src="..."> with the captioned content.',scrollableRegionFocusable_title:"Scrollable regions with no focusable content should be keyboard-focusable",scrollableRegionFocusable_description:"Flags elements whose CSS declares overflow:auto/scroll, contain no focusable descendant, and are not themselves keyboard-focusable, for manual review of whether their content actually overflows and needs keyboard scroll access.",scrollableRegionFocusable_summary_cantTell:"This element declares overflow:auto/scroll, has no focusable descendant, and is not itself keyboard-focusable.",scrollableRegionFocusable_hint_cantTell:`If this region's content actually overflows, add tabindex="0" (and a suitable label) so keyboard users can focus it and scroll with the arrow keys.`,identicalLinksSamePurpose_title:"Links with the same accessible name should lead to the same destination",identicalLinksSamePurpose_description:"Flags groups of links that share the same accessible name but resolve to more than one distinct destination, for manual review of whether they serve the same purpose.",identicalLinksSamePurpose_summary_cantTell:"This link shares an accessible name with other links on the page that lead to a different destination.",identicalLinksSamePurpose_hint_cantTell:"Ensure links with the same text serve the same purpose, or make the link text distinct enough to describe each destination.",ariaBrailleEquivalent_title:"aria-braillelabel/aria-brailleroledescription must have a non-braille equivalent",ariaBrailleEquivalent_description:"Checks that elements using aria-braillelabel also have a regular accessible name, and elements using aria-brailleroledescription also have aria-roledescription.",ariaBrailleEquivalent_summary_fail:"This element has {{attr}} but no {{requires}}, its non-braille equivalent.",ariaBrailleEquivalent_hint_fail:"{{attr}} is a Braille-specific supplement, not a replacement, so also provide {{requires}}.",ariaConditionalAttr_title:"aria-errormessage requires aria-invalid to be set to a non-false value",ariaConditionalAttr_description:'Checks that elements with aria-errormessage also have aria-invalid set to "true", "grammar", or "spelling"; otherwise the error message is dropped from the accessibility tree.',ariaConditionalAttr_summary_fail:'This element has aria-errormessage but aria-invalid is missing or "false", so the error message is not exposed.',ariaConditionalAttr_hint_fail:'Set aria-invalid to "true" (or "grammar"/"spelling") whenever aria-errormessage should be exposed to assistive technology.',ariaCheckedStateMismatch_title:"Native checkbox/radio aria-checked should match its actual state",ariaCheckedStateMismatch_description:'Flags a native <input type="checkbox">/<input type="radio"> whose explicit aria-checked value disagrees with its actual checked/indeterminate state, for manual review.',ariaCheckedStateMismatch_summary_cantTell:"This element’s aria-checked value does not match its actual checked/indeterminate state.",ariaCheckedStateMismatch_hint_cantTell:"Set aria-checked to match the element’s real state, or remove it; a native checkbox/radio already exposes this state without it.",cssOrientationLock_title:"CSS must not lock the page to a single orientation",cssOrientationLock_description:"Checks that no @media (orientation: portrait|landscape) rule sets a transform: rotate(...) on the page, a known technique for defeating device orientation.",cssOrientationLock_summary_fail:'A "{{mediaText}}" media query rotates "{{selectorText}}", locking the page to one orientation.',cssOrientationLock_summary_fail_unknownSelector:'A "{{mediaText}}" media query rotates an element with no readable selector, locking the page to one orientation.',cssOrientationLock_hint_fail:"Remove the rotate() transform from the orientation media query; let the page respond naturally to device orientation instead of forcing a visual rotation.",cssOrientationLock_summary_cantTell_unreadableSheets:"{{count}} stylesheet(s) could not be read, so whether this page locks its orientation could not be determined.",cssOrientationLock_hint_cantTell_unreadableSheets:"Cross-origin stylesheets are not inspectable from the page. Check any third-party CSS for an orientation media query containing a rotate() transform, or re-run the scan with those stylesheets served same-origin.",ariaText_title:'role="text" elements should have no focusable descendants',ariaText_description:'Checks that elements with role="text" contain no focusable descendant (link, button, form control, tabindex, iframe, or contenteditable).',ariaText_summary_cantTell:'This role="text" element contains a focusable descendant.',ariaText_hint_cantTell:'Remove role="text" (or remove the focusable descendant); a "plain text" region should not contain focusable content.',focusOrderSemantics_title:"Elements added to the tab order should have interactive semantics",focusOrderSemantics_description:"Flags elements with tabindex >= 0 whose explicit role is a non-interactive structural/document role (e.g. heading, list, region, presentation), for manual review.",focusOrderSemantics_summary_cantTell:'This element is in the tab order (tabindex="{{tabindex}}") but has a non-interactive role ("{{role}}").',focusOrderSemantics_hint_cantTell:"Remove tabindex if this element is not meant to be interactive, or use an interactive role that matches its actual behavior.",pAsHeading_title:"A <p> styled to look like a heading should probably be a real heading",pAsHeading_description:"Flags short <p> elements whose entire text is bold and rendered at >=18px, for manual review of whether a real heading element should be used instead.",pAsHeading_summary_cantTell:"This paragraph is entirely bold and rendered at a heading-like size.",pAsHeading_hint_cantTell:'If this text introduces a new section, use a real heading element (<h1>-<h6> or role="heading") instead of styling a paragraph to look like one.',tableFakeCaption_title:"A table's first row should not stand in for a real <caption>",tableFakeCaption_description:"Flags tables with no <caption> whose first row has a single non-empty cell while other rows have multiple cells, for manual review of whether that cell is acting as a fake caption.",tableFakeCaption_summary_cantTell:"This table has no <caption>, but its first row is a single cell sitting above multi-cell rows, so it may be acting as a fake caption.",tableFakeCaption_hint_cantTell:"If this cell is meant to describe the table, use a real <caption> element instead of a lone first-row cell.",tdHasHeader_title:"Data cells in large tables must have an associated header",tdHasHeader_description:"Checks that every <td> in a large, simple (no colspan/rowspan) table has an associated header, via a headers attribute, an implicit column <th> above it, or an implicit row <th> to its left.",tdHasHeader_summary_fail:"This data cell has no associated header (no headers attribute, no column <th> above it, no row <th> to its left).",tdHasHeader_hint_fail:"Add a headers attribute referencing the relevant <th> id(s), or restructure the table so this cell has an implicit row/column header.",mouseOnlyEventHandlers_title:"Pointer-only inline event handlers should have a keyboard-reachable equivalent",mouseOnlyEventHandlers_description:"Flags elements with an inline pointer-only event handler (onmouseover, onmouseout, onmousedown, onmouseup, ondblclick, onmousemove, onmouseenter, onmouseleave) and no keyboard-reachable equivalent (onkeydown/onkeyup/onkeypress/onfocus/onblur), for manual review.",mouseOnlyEventHandlers_summary_cantTell:"This element has {{attrs}} but no keyboard-reachable equivalent handler.",mouseOnlyEventHandlers_hint_cantTell:"Add onkeydown/onkeyup/onkeypress (or onfocus/onblur for hover-triggered behavior) so this functionality is also reachable by keyboard.",headingQuality_title:"Heading text should be descriptive, not a placeholder",headingQuality_description:'Flags headings whose accessible name is a placeholder rather than a description of the content that follows: a generic word ("Heading", "Untitled"), a numbered template slot ("Section 2"), a filename, or a URL.',headingQuality_summary_cantTell_placeholder:`This heading's accessible name ("{{name}}") is a placeholder rather than a description of the content it introduces.`,headingQuality_summary_cantTell_filename:`This heading's accessible name ("{{name}}") is a filename rather than a description of the content it introduces.`,headingQuality_summary_cantTell_url:`This heading's accessible name ("{{name}}") is a URL rather than a description of the content it introduces.`,headingQuality_hint_cantTell:"Rewrite the heading so it names the topic or purpose of the content that follows it.",linkNameQuality_title:"Link text should be descriptive, not generic",linkNameQuality_description:'Flags links whose full accessible name is a known non-descriptive phrase (e.g. "click here", "read more", "more") or a bare file-format name (e.g. "HTML", "PDF") with no adjacent context naming what it leads to, for manual review of whether the purpose is clear.',linkNameQuality_summary_cantTell:`This link's accessible name ("{{name}}") is a generic, non-descriptive phrase.`,linkNameQuality_hint_cantTell:'Make the link text itself describe its destination/purpose (e.g. "Download the 2026 pricing guide" instead of "Download"), or confirm the surrounding context already makes the purpose clear.',linkNameQuality_summary_cantTell_formatName:`This link's accessible name ("{{name}}") names a file format/type but not the document it belongs to.`,linkNameQuality_hint_cantTell_formatName:'Name the document in the link text or in nearby text/a heading the link is associated with (e.g. "Download the annual report (HTML)" instead of a bare "HTML").'}},un=["de","en","es","fr"];function gt(T){if(typeof T!="string")return"en";const o=T.trim();return o||"en"}function Vt(T){const o=T&&T.messages;return o&&typeof o=="object"&&!Array.isArray(o)?o:null}function At(T,o){if(!T||!Object.prototype.hasOwnProperty.call(T,o))return null;const t=T[o];return t&&typeof t=="object"&&!Array.isArray(t)?t:null}function Jt(T,o){return At(Vt(o),T)||At(at,T)}function dn(T,o){if(!T)return null;const t=o.toLowerCase();for(const n in T)if(n.toLowerCase()===t&&At(T,n))return n;return null}function mn(T,o){return Jt(T,o)?T:dn(Vt(o),T)||dn(at,T)}function en(T,o){const t=mn(T,o);if(t)return t;const n=T.split("-")[0];return n.toLowerCase()===T.toLowerCase()?null:mn(n,o)}function fr(T){const o=gt(T&&T.locale),t=en(o,T);return t?Jt(t,T):at&&at.en?at.en:{}}function Et(T,o){return!T||!Object.prototype.hasOwnProperty.call(T,o)?null:typeof T[o]=="string"&&T[o]?T[o]:null}function En(T,o){const t=en(gt(o&&o.locale),o);return t?Et(At(Vt(o),t),T)||Et(At(at,t),T):null}function qn(T){if(un.indexOf(T)!==-1)return!0;const o=T.split("-")[0].toLowerCase();return o!==T&&un.indexOf(o)!==-1}function Nn(T){const o=gt(T&&T.locale),t=en(o,T);if(!t)return{requested:o,resolved:"en",reason:qn(o)?"dictionary-not-loaded":"unknown-locale"};const n=at&&at.en?at.en:{},e=Jt(t,T);if(!e)return{requested:o,resolved:"en",reason:"unknown-locale"};if(e!==n){const w=At(Vt(T),t),u=At(at,t);for(const k in n)if(!Et(w,k)&&!Et(u,k))return{requested:o,resolved:t,reason:"partial-dictionary"}}return{requested:o,resolved:t,reason:t.toLowerCase()===o.toLowerCase()?"ok":"primary-subtag"}}function Ln(T){return T===!1||T===null||T===void 0?!1:typeof T=="number"?T!==0&&!Number.isNaN(T):typeof T=="string"||Array.isArray(T)?T.length>0:!0}function Rn(T,o){const t=typeof T=="string"?T:"",n=o&&typeof o=="object"?o:null;if(!t||!n)return t;const e=/\{\{\s*([#^/]?)([^}\s]+)\s*\}\}/g,w={type:"root",key:null,inverted:!1,parts:[]},u=[w];let k=0,h;for(;(h=e.exec(t))!==null;){const p=t.slice(k,h.index);p&&u[u.length-1].parts.push({type:"text",value:p});const m=h[1],s=h[2]||"",c=String(s).trim();if(!c){u[u.length-1].parts.push({type:"text",value:h[0]}),k=e.lastIndex;continue}if(m==="#"){const d={type:"section",key:c,inverted:!1,parts:[]};u[u.length-1].parts.push(d),u.push(d)}else if(m==="^"){const d={type:"section",key:c,inverted:!0,parts:[]};u[u.length-1].parts.push(d),u.push(d)}else if(m==="/"){const d=u[u.length-1];d&&d.type==="section"&&d.key===c?u.pop():u[u.length-1].parts.push({type:"text",value:h[0]})}else u[u.length-1].parts.push({type:"var",key:c});k=e.lastIndex}const v=t.slice(k);v&&u[u.length-1].parts.push({type:"text",value:v});function A(p){let m="";for(const s of p)if(!(!s||typeof s!="object")){if(s.type==="text")m+=s.value||"";else if(s.type==="var"){const c=Object.prototype.hasOwnProperty.call(n,s.key)?n[s.key]:"";m+=c==null?"":String(c)}else if(s.type==="section"){const c=Object.prototype.hasOwnProperty.call(n,s.key)?n[s.key]:void 0,d=Ln(c);(s.inverted?!d:d)&&(m+=A(s.parts||[]))}}return m}return A(w.parts)}function Pn(T,o){return Rn(T,o)}function It(T,o,t,n){if(typeof T!="string"||!T.trim())return typeof o=="string"?o:"";const e=En(T,n),w=Et(at&&at.en,T);return Pn(e||w||(typeof o=="string"?o:""),t)}function fn(T,o){if(!T||typeof T!="object")return T;const t={...T};return t.i18n&&typeof t.i18n=="object"&&(t.title=It(t.i18n.titleKey,t.title,null,o),t.description=It(t.i18n.descriptionKey,t.description,null,o)),t}const On={a11y:{id:"a11y",allowedOutcomes:["fail","pass","cantTell","notApplicable"],allowedConfidence:["high","medium","low"],coerceManualFailToCantTell:!0},generic:{id:"generic",allowedOutcomes:["fail","pass","cantTell","notApplicable"],allowedConfidence:["high","medium","low"],coerceManualFailToCantTell:!1}},Mn=(function(o,t){function n(h,v,A){const p=h[A]||h.a11y;if(typeof v=="string")return h[v]||p;if(v&&typeof v=="object"){const m=Array.isArray(v.allowedOutcomes)?v.allowedOutcomes.slice():p.allowedOutcomes.slice(),s=Array.isArray(v.allowedConfidence)?v.allowedConfidence.slice():p.allowedConfidence.slice();return{id:typeof v.id=="string"&&v.id.trim()?v.id.trim():p.id||A||"custom",allowedOutcomes:m,allowedConfidence:s,coerceManualFailToCantTell:typeof v.coerceManualFailToCantTell=="boolean"?v.coerceManualFailToCantTell:!!p.coerceManualFailToCantTell}}return p}function e(h){const v=h&&typeof h=="object"?h:{};return{allowedOutcomes:Array.isArray(v.allowedOutcomes)?v.allowedOutcomes.slice():null,allowedConfidence:Array.isArray(v.allowedConfidence)?v.allowedConfidence.slice():null,coerceManualFailToCantTell:typeof v.coerceManualFailToCantTell=="boolean"?v.coerceManualFailToCantTell:null}}const w=t&&typeof t=="object"?t:{},u=n(o,w.policyContract,"a11y"),k=e(w.policy);return{contractId:u.id,allowedOutcomes:k.allowedOutcomes||u.allowedOutcomes.slice(),allowedConfidence:k.allowedConfidence||u.allowedConfidence.slice(),coerceManualFailToCantTell:k.coerceManualFailToCantTell!==null?k.coerceManualFailToCantTell:!!u.coerceManualFailToCantTell}});function Je(T,{lower:o=!1}={}){if(T==null)return[];if(Array.isArray(T)){const u=T.map(String).map(A=>A.trim()).filter(Boolean),k=o?u.map(A=>A.toLowerCase()):u.slice(),h=new Set,v=[];for(const A of k)h.has(A)||(h.add(A),v.push(A));return v}if(typeof T!="string")return[];const t=T.split(",").map(u=>String(u).trim()).filter(Boolean),n=o?t.map(u=>u.toLowerCase()):t.slice(),e=new Set,w=[];for(const u of n)e.has(u)||(e.add(u),w.push(u));return w}function tn(T){return(typeof T=="string"?T.trim().toLowerCase():"")==="or"?"or":"and"}function jn(T){if(!T||typeof T!="object")return!1;const o=T.type==="tag"&&Array.isArray(T.values)&&T.values.length>0,t=e=>Je(e).length>0;return o||t(T.tags)||t(T.excludeTags)||t(T.includeRuleIds)||t(T.excludeRuleIds)||t(T.includeTestIds)||t(T.excludeTestIds)}function pn(T){const o={includeMode:"and",tags:[],excludeTags:[],includeRuleIds:[],excludeRuleIds:[],includeTestIds:[],excludeTestIds:[]};return!T||typeof T!="object"?o:(o.includeMode=tn(T.includeMode),T.type==="tag"&&Array.isArray(T.values)?(o.tags=Je(T.values,{lower:!0}),o):(o.tags=Je(T.tags,{lower:!0}),o.excludeTags=Je(T.excludeTags,{lower:!0}),o.includeRuleIds=Je(T.includeRuleIds,{lower:!1}),o.excludeRuleIds=Je(T.excludeRuleIds,{lower:!1}),o.includeTestIds=Je(T.includeTestIds,{lower:!1}),o.excludeTestIds=Je(T.excludeTestIds,{lower:!1}),o))}function zn(T,o){if(jn(o))return pn(o);const t=T&&typeof T=="object"?T:{},n=tn(t.includeMode),e=t.rules&&typeof t.rules=="object"?t.rules:null,w=t.tags&&typeof t.tags=="object"?t.tags:null,u=t.tests&&typeof t.tests=="object"?t.tests:null,k=Je(e&&e.include,{lower:!1}),h=Je(e&&e.exclude,{lower:!1}),v=Je(w&&w.include,{lower:!0}),A=Je(w&&w.exclude,{lower:!0}),p=Je(u&&u.include,{lower:!1}),m=Je(u&&u.exclude,{lower:!1});return{includeMode:n,tags:v,excludeTags:A,includeRuleIds:k,excludeRuleIds:h,includeTestIds:p,excludeTestIds:m}}function Kt(T,o,t){if(!T||!o)return!1;if(T===o)return!0;const n=(t?String(t):"")+"-";return!!(o.startsWith(n)&&T===o.slice(n.length)||T.startsWith(n)&&T.slice(n.length)===o)}function Fn(){const T=Object.create(null);if(!Array.isArray(Zt))return T;for(const o of Zt){if(!o||typeof o!="object")continue;const t=typeof o.id=="string"?o.id.trim():String(o.id||"").trim();if(!t)continue;const n=Array.isArray(o.checksIds)?o.checksIds.map(String).map(e=>e.trim()).filter(Boolean):[];n.length&&(T[t]=n)}return T}const Vn=Fn();function gn(T){const o=typeof T=="string"?T.trim():"";if(!o)return null;const t=Vn[o];return Array.isArray(t)&&t.length?t:null}function hn(T,o,t){const n=pn(o),e=tn(n.includeMode),w=Array.isArray(T.tags)?T.tags.map(m=>String(m).toLowerCase()):[],u=n.includeRuleIds.length>0,k=n.includeTestIds.length>0,h=n.tags.length>0;let v=!0,A=!0;if(u&&(v=n.includeRuleIds.some(m=>{if(Kt(m,T.ruleId,t||Tt))return!0;const s=gn(m);return s?s.includes(T.ruleId):!1})),k){const m=n.includeTestIds.some(s=>Kt(s,T.ruleId,t||Tt));v=u?v&&m:m}h&&(A=w.some(m=>n.tags.includes(m)));const p=u||k;if(p||h){if(e==="or"&&p&&h){if(!(v||A))return!1}else if(p&&!v||h&&!A)return!1}return!(n.excludeRuleIds.length&&n.excludeRuleIds.some(s=>{if(Kt(s,T.ruleId,t||Tt))return!0;const c=gn(s);return c?c.includes(T.ruleId):!1})||n.excludeTestIds.length&&n.excludeTestIds.some(s=>Kt(s,T.ruleId,t||Tt))||n.excludeTags.length&&w.some(s=>n.excludeTags.includes(s)))}function Bt(T,o,t,n,e){if(!n||typeof n!="object")throw new Error("normalizeRuleResult requires a resolved policy");const w=n,u=o&&typeof o=="object"?{...o}:{};u.ruleId=T.ruleId,u.title=T.title,u.description=T.description,u.i18n=T.i18n||null,w.allowedOutcomes.includes(u.outcome)||(u.outcome="cantTell"),u.outcomeNormalized=u.outcome==="notApplicable"?"inapplicable":u.outcome;const k=u.engineOptions&&u.engineOptions.output&&typeof u.engineOptions.output=="object"?u.engineOptions.output:null,h=!(k&&k.includeSelector===!1),v=!(k&&k.includeHtml===!1),A=u.outcome==="fail"||u.outcome==="cantTell";w.coerceManualFailToCantTell&&(T.type==="manual"||u.type==="manual")&&u.outcome==="fail"&&(u.outcome="cantTell",u.outcomeNormalized="cantTell",u.error=(u.error?String(u.error)+" | ":"")+"Manual rules cannot return outcome=fail; coerced to cantTell."),u.severity=u.severity||T.defaultSeverity;let p=o&&o.confidence;w.allowedConfidence.includes(p)||(p=T.defaultConfidence),u.confidence=p,u.type=T.type,u.meta={ruleId:T.ruleId,ruleInterfaceVersion:T.ruleInterfaceVersion,ruleVersion:T.ruleVersion,normative:T.normative,atomic:T.atomic,deprecated:!!T.deprecated,deprecation:T.deprecation||null,category:T.category||null,normativeMappings:Array.isArray(T.normativeMappings)?T.normativeMappings.map(d=>({...d})):[],standard:T.standard||null,applicability:T.applicability||"",expectation:T.expectation||"",references:Array.isArray(T.references)?T.references.slice():[],requirements:T.requirements||null,mappings:T.mappings||null},u.schemaVersion=t;const m=Array.isArray(u.occurrences)?u.occurrences:[];let s=0,c=0;return u.occurrences=m.map(d=>{const f=d&&typeof d=="object"?{...d}:{},g=f.__node||null;if(g&&delete f.__node,g&&e&&typeof e.hasTruncatedAncestorWalk=="function"){try{e.hasTruncatedAncestorWalk(g)&&(s+=1)}catch{}c+=1}if(A&&g&&e&&typeof e=="object"){if(h&&(!f.selector||typeof f.selector!="string"))try{f.selector=typeof e.buildSelector=="function"?String(e.buildSelector(g)||""):""}catch{f.selector=""}if(v&&(!f.html||typeof f.html!="string"))try{f.html=typeof e.getOuterHtmlSnippet=="function"?String(e.getOuterHtmlSnippet(g)||""):""}catch{f.html=""}}if(A&&e&&typeof e.buildStructuralPath=="function")try{f.structuralPath=e.buildStructuralPath(g,f.selector)}catch{f.structuralPath=null}else f.structuralPath=null;typeof f.selector!="string"&&(f.selector=""),typeof f.summary!="string"&&(f.summary=""),typeof f.hint!="string"&&(f.hint=""),typeof f.html!="string"&&(f.html="");const a=(f.occurrenceOutcome==="fail"||f.occurrenceOutcome==="cantTell"?f.occurrenceOutcome:u.outcome)==="cantTell"?Gn(f.uncertainty):null;if(a?f.uncertainty=a:delete f.uncertainty,f.i18n&&typeof f.i18n=="object"&&!Array.isArray(f.i18n)){const r={...f.i18n};typeof r.summaryKey!="string"&&(r.summaryKey=""),typeof r.hintKey!="string"&&(r.hintKey=""),r.params&&typeof r.params=="object"&&!Array.isArray(r.params)?r.params={...r.params}:r.params={},f.i18n=r,r.summaryKey&&(f.summary=It(r.summaryKey,f.summary,r.params,u.engineOptions||null)),r.hintKey&&(f.hint=It(r.hintKey,f.hint,r.params,u.engineOptions||null))}else f.i18n=null;return f}),u.outcome==="fail"&&c>0&&s===c&&(u.outcome="cantTell",u.outcomeNormalized="cantTell",u.error=(u.error?String(u.error)+" | ":"")+"Ancestor walk hit its depth limit, so the engine could not confirm this content is exposed; coerced to cantTell."),o&&o.error&&(u.error=String(o.error)),u}function pr(T,o){return{ruleId:T.ruleId,title:T&&T.i18n?It(T.i18n.titleKey,T.title,null,o):T.title,description:T&&T.i18n?It(T.i18n.descriptionKey,T.description,null,o):T.description,i18n:T.i18n||null,helpUrl:T.helpUrl,tags:Array.isArray(T.tags)?T.tags.slice():[],wcagSc:Array.isArray(T.wcagSc)?T.wcagSc.slice():[],normativeMappings:Array.isArray(T.normativeMappings)?T.normativeMappings.map(t=>({...t})):[],defaultSeverity:T.defaultSeverity,defaultConfidence:T.defaultConfidence,type:T.type,coverage:T.coverage||null,data:T.data===void 0?null:T.data,ruleInterfaceVersion:T.ruleInterfaceVersion,ruleVersion:T.ruleVersion,normative:T.normative,atomic:T.atomic,deprecated:!!T.deprecated,deprecation:T.deprecation||null,category:T.category||null,standard:T.standard||null,applicability:T.applicability||"",expectation:T.expectation||"",references:Array.isArray(T.references)?T.references.slice():[],requirements:T.requirements||null,mappings:T.mappings||null}}const Kn=(function(o,t){const n=o&&o.window?o.window:null,e=t.trim,w=t.computedStyle,u=t.composedParent,k=t.buildSimpleSelector,h=V=>{const U=Number(V);return Number.isNaN(U)||U<0?0:U>1?1:U},v=V=>{const U=Number(V);return Number.isNaN(U)||U<0?0:U>255?255:U};function A(V){try{const U=t&&t.__contrastSharedCache?t.__contrastSharedCache:null;if(!U)return null;const ee=U[V];if(ee&&typeof ee.get=="function"&&typeof ee.set=="function")return ee;const le=new WeakMap;return U[V]=le,le}catch{return null}}function p(){try{const V=t&&t.__contrastSharedCache?t.__contrastSharedCache:null;if(!V)return null;if(V.__textScanCache&&typeof V.__textScanCache.get=="function"&&typeof V.__textScanCache.set=="function"&&typeof V.__textScanCache.has=="function")return V.__textScanCache;try{Object.defineProperty(V,"__textScanCache",{value:new Map,writable:!1,enumerable:!1,configurable:!0})}catch{V.__textScanCache=new Map}return V.__textScanCache}catch{return null}}function m(){try{const V=t&&t.__contrastSharedCache?t.__contrastSharedCache:null;if(!V)return null;if(V.__colorParseCache&&typeof V.__colorParseCache.get=="function")return V.__colorParseCache;const U=new Map;return V.__colorParseCache=U,U}catch{return null}}const s=new WeakMap,c=A("__computedStyleCache")||s;function d(V){try{if(!V||V.nodeType!==1)return w(V);if(c.has(V))return c.get(V);const U=w(V);return c.set(V,U),U}catch{try{const U=w(V);return V&&V.nodeType===1&&c.set(V,U),U}catch{return{}}}}const f=new WeakMap,g=new WeakMap,i=new WeakMap,a=new WeakMap,r=A("__hasBgImgCache")||f,l=A("__hasBlendModeCache")||g,y=A("__hasFilterCache")||i,b=A("__textShadowInfoCache")||a;function _(V){return(V&&typeof V.visibilityMode=="string"?V.visibilityMode:"")||"styleOnly"}function I(V,U,ee,le){if(typeof U=="string")return U;const _e=[U,V&&V.engineOptions,V&&V.options&&V.options.engineOptions,V&&V.options,V&&V.opts&&V.opts.engineOptions,V&&V.opts,V&&V.policyOverrides&&V.policyOverrides.engineOptions,V&&V.policyOverrides,V&&V.policy&&V.policy.engineOptions,V&&V.policy,V,o&&o.engineOptions,o&&o.options&&o.options.engineOptions,o&&o.options,o&&o.opts&&o.opts.engineOptions,o&&o.opts,o&&o.policyOverrides&&o.policyOverrides.engineOptions,o&&o.policyOverrides,o&&o.policy&&o.policy.engineOptions,o&&o.policy,le&&le.__a11ycoreEngineOptions,ee&&ee.__a11ycoreEngineOptions];for(const ce of _e)if(!(!ce||typeof ce!="object")){if(typeof ce.visibilityMode=="string")return ce.visibilityMode;if(ce.engineOptions&&typeof ce.engineOptions=="object"&&typeof ce.engineOptions.visibilityMode=="string")return ce.engineOptions.visibilityMode;if(ce.options&&typeof ce.options=="object"&&ce.options.engineOptions&&typeof ce.options.engineOptions=="object"&&typeof ce.options.engineOptions.visibilityMode=="string")return ce.options.engineOptions.visibilityMode;if(ce.policy&&typeof ce.policy=="object"&&ce.policy.engineOptions&&typeof ce.policy.engineOptions=="object"&&typeof ce.policy.engineOptions.visibilityMode=="string")return ce.policy.engineOptions.visibilityMode;if(ce.policyOverrides&&typeof ce.policyOverrides=="object"&&ce.policyOverrides.engineOptions&&typeof ce.policyOverrides.engineOptions=="object"&&typeof ce.policyOverrides.engineOptions.visibilityMode=="string")return ce.policyOverrides.engineOptions.visibilityMode}return"styleOnly"}function x(V){return typeof V=="boolean"?V:V&&typeof V=="object"&&typeof V.eligible=="boolean"?V.eligible:!!V}function C(V){try{if(typeof V.matches=="function"&&V.matches(":disabled"))return!0}catch{}try{if((V.getAttribute?String(V.getAttribute("aria-disabled")||"").trim().toLowerCase():"")==="true")return!0}catch{}return!1}function N(V){let U=V,ee=0,le=null;for(;U&&U.nodeType===1&&ee++<100;){if(C(U))return!0;!le&&String(U.tagName||"").toLowerCase()==="label"&&(le=U),U=U.parentElement}if(le){try{const _e=typeof le.control<"u"?le.control:le.htmlFor&&le.ownerDocument?le.ownerDocument.getElementById(le.htmlFor):null;if(_e&&C(_e))return!0}catch{}try{const _e=le.ownerDocument,ce=le.id;if(_e&&ce){const ke=_e.querySelectorAll('[aria-labelledby~="'+ce+'"]');for(const Ie of ke)if(C(Ie))return!0}}catch{}}return!1}function L(V,U,ee){try{let Ze=function(Le){if(!Ie)return Le;const ze=[],Fe=new Set,He=Le.slice();let Ue=0;for(;He.length&&Ue++<1e4;){const rt=He.shift();if(!rt||Fe.has(rt))continue;Fe.add(rt),ze.push(rt);let Qt;try{Qt=rt.querySelectorAll?rt.querySelectorAll("*"):[]}catch{continue}for(const kt of Qt)kt&&kt.shadowRoot&&!Fe.has(kt.shadowRoot)&&He.push(kt.shadowRoot)}return ze};const le=V&&V.document||o&&o.document||null,_e=V&&V.window||le&&le.defaultView||n||null,ce=I(V,ee,le,_e),ke=_({visibilityMode:ce})==="styleAndGeometry"?"styleAndGeometry":"styleOnly";if(!le||typeof le.createTreeWalker!="function")return{eligibleTextCount:0,elements:[],visibilityMode:ke};const Ie=!(ee&&ee.includeShadowDom===!1),Se=p(),ye=`visibilityMode=${ke}|sd=${Ie?1:0}`;if(Se&&Se.has(ye))return Se.get(ye);const Ge=(V&&V.root?Array.isArray(V.root)?V.root:[V.root]:[le.body||le.documentElement||le]).map(Le=>Le&&Le.nodeType===9&&(Le.body||Le.documentElement)||Le).filter(Boolean),$e=Ze(Ge),Be=_e&&_e.NodeFilter&&typeof _e.NodeFilter.SHOW_TEXT=="number"?_e.NodeFilter.SHOW_TEXT:4,Ye=Le=>{if(Le==null)return!1;const ze=String(Le);return/\S/.test(ze)&&/[\p{L}\p{N}]/u.test(ze)},nt=new WeakMap,dt=[];let Ot=0;const Mt=new WeakMap,jt=new WeakMap,zt=new WeakMap,rn=Le=>{if(!U||typeof U.getVisibilityHintsInfo!="function")return!1;if(zt.has(Le))return zt.get(Le);let ze=!1;try{let Fe=Le,He=0;for(;Fe&&Fe.nodeType===1&&He++<100;){const Ue=U.getVisibilityHintsInfo(Fe,V,{});if(Ue&&Array.isArray(Ue.hints)&&Ue.hints.indexOf("clipped")!==-1){ze=!0;break}Fe=u?u(Fe):Fe.parentElement}}catch{ze=!1}return zt.set(Le,ze),ze},Wt=Le=>{if(!U||typeof U.isDomVisibleEligible!="function")return!0;if(Mt.has(Le))return Mt.get(Le);let ze;try{const Fe=U.isDomVisibleEligible(Le,V,{visibilityMode:ke});ze=x(Fe),ze&&rn(Le)&&(ze=!1)}catch{ze=!1}return Mt.set(Le,ze),ze},ot=Le=>{if(jt.has(Le))return jt.get(Le);let ze;try{ze=N(Le)}catch{ze=!1}return jt.set(Le,ze),ze},yt=ee&&typeof ee.contrast=="object"&&ee.contrast?ee.contrast:{},an={contrast:{mode:yt.mode==="auditorAssist"?"auditorAssist":"strictConformance",rootCanvasFallback:typeof yt.rootCanvasFallback=="string"&&yt.rootCanvasFallback.trim()?yt.rootCanvasFallback.trim():"#ffffff"},collectStack:!1},wt=new WeakMap,Ut=Le=>{if(wt.has(Le))return wt.get(Le);let ze=!1;try{const Fe=tt(Le);if(Fe&&Fe.rgba&&Fe.alpha===1){const He=Lt(Le,an);He&&He.ok&&He.rgba&&He.alpha===1&&(ze=Fe.rgba.r===He.rgba.r&&Fe.rgba.g===He.rgba.g&&Fe.rgba.b===He.rgba.b)}}catch{ze=!1}return wt.set(Le,ze),ze};let mt=null,xt=0;const Gt=new Set;for(const Le of $e){if(xt>=5e5)break;let ze;try{ze=le.createTreeWalker(Le,Be,null)}catch{continue}for(;(mt=ze.nextNode())&&xt++<5e5;){if(Gt.has(mt))continue;Gt.add(mt);const Fe=mt&&mt.nodeValue;if(!Ye(Fe))continue;const He=mt.parentNode,Ue=mt.parentElement||(He&&He.nodeType===1?He:null)||(He&&He.nodeType===11&&He.host?He.host:null);if(!Ue)continue;try{if(U&&typeof U.isExcluded=="function"&&U.isExcluded(Ue))continue}catch{}if(!Wt(Ue)||ot(Ue)||Ut(Ue))continue;Ot++;const rt=nt.get(Ue);rt===void 0?(nt.set(Ue,1),dt.push(Ue)):nt.set(Ue,rt+1)}}const $t=new Set;for(const Le of $e){let ze;try{ze=Le.querySelectorAll('input[type="submit" i], input[type="button" i], input[type="reset" i]')}catch{continue}for(const Fe of ze){if($t.has(Fe))continue;$t.add(Fe);const He=Fe.getAttribute?Fe.getAttribute("value"):Fe.value;if(!Ye(He))continue;try{if(U&&typeof U.isExcluded=="function"&&U.isExcluded(Fe))continue}catch{}if(!Wt(Fe)||ot(Fe)||Ut(Fe))continue;Ot++;const Ue=nt.get(Fe);Ue===void 0?(nt.set(Fe,1),dt.push(Fe)):nt.set(Fe,Ue+1)}}const St=Object.freeze({eligibleTextCount:Ot,visibilityMode:ke,elements:Object.freeze(dt.map(Le=>Object.freeze({el:Le,textCount:nt.get(Le)||0})))});return Se&&Se.set(ye,St),St}catch{return{eligibleTextCount:0,elements:[],visibilityMode:"styleOnly"}}}function D(V){const ee=v(V).toString(16).toLowerCase();return ee.length===1?"0"+ee:ee}function F(V){try{return!V||typeof V!="object"?"":"#"+D(V.r)+D(V.g)+D(V.b)}catch{return""}}function E(V){const U=parseFloat(V);return Number.isFinite(U)?(U*.75).toFixed(1):""}function P(V){const U=Number(V);return Number.isFinite(U)&&U>=700?"bold":"normal"}function z(V){const U=Number(V);return Number.isFinite(U)?(Math.round(U*100)/100).toFixed(2):"0.00"}function H(V){if(!V||typeof V!="object")return"";const U=v(V.r),ee=v(V.g),le=v(V.b),_e=h(V.a);return`rgba(${U}, ${ee}, ${le}, ${_e.toFixed(2)})`}function W(V){if(V==null)return null;if(typeof V=="number"&&Number.isFinite(V))return V;const U=String(V).trim().toLowerCase();if(!U)return null;const ee=parseFloat(U);return Number.isFinite(ee)?U.endsWith("px")?ee:U.endsWith("pt")?ee*(96/72):U.endsWith("rem")||U.endsWith("em")?ee*16:U.endsWith("%")?ee/100*16:ee:null}function X(V){const U=e(V).toLowerCase();if(!U||U==="normal")return 400;if(U==="bold"||U==="bolder")return 700;if(U==="lighter")return 300;const ee=Number.parseInt(U,10);return Number.isFinite(ee)?ee:400}function oe(V,U){const ee=parseFloat(V),le=Number(U);if(!Number.isFinite(ee))return!1;if(ee>=24)return!0;const _e=W("14pt");return!!(ee>=_e&&Number.isFinite(le)&&le>=700)}function q(V,U){return String(V||"").toUpperCase()==="AAA"?U?4.5:7:U?3:4.5}const O=new Map,B=m()||O;function G(V){const U=V==null?"":String(V);let ee=e(U).toLowerCase();return ee?(ee=ee.replace(/\s+/g," "),ee=ee.replace(/\s*,\s*/g,","),ee=ee.replace(/\(\s+/g,"("),ee=ee.replace(/\s+\)/g,")"),ee=ee.replace(/\s*\/\s*/g,"/"),ee=ee.replace(/\s*%/g,"%"),ee):""}function ne(V){const U=e(V).toLowerCase();if(!U)return null;if(U==="transparent")return{r:0,g:0,b:0,a:0};if(U[0]==="#"){const le=U.slice(1);if(!/^[0-9a-f]+$/i.test(le))return null;const ce=ke=>Number.parseInt(ke,16);try{if(le.length===3){const ke=ce(le[0]+le[0]),Ie=ce(le[1]+le[1]),Se=ce(le[2]+le[2]);return{r:ke,g:Ie,b:Se,a:1}}if(le.length===4){const ke=ce(le[0]+le[0]),Ie=ce(le[1]+le[1]),Se=ce(le[2]+le[2]),ye=ce(le[3]+le[3])/255;return{r:ke,g:Ie,b:Se,a:h(ye)}}if(le.length===6){const ke=ce(le.slice(0,2)),Ie=ce(le.slice(2,4)),Se=ce(le.slice(4,6));return{r:ke,g:Ie,b:Se,a:1}}if(le.length===8){const ke=ce(le.slice(0,2)),Ie=ce(le.slice(2,4)),Se=ce(le.slice(4,6)),ye=ce(le.slice(6,8))/255;return{r:ke,g:Ie,b:Se,a:h(ye)}}}catch{}return null}const ee=U.match(/^rgba?\((.*)\)$/);if(ee&&ee[1]&&ee[1].indexOf(",")===-1){const _e=e(ee[1]).split("/").map(Se=>e(Se)),ce=_e[0]||"",ke=_e[1]||"",Ie=ce.split(/\s+/).map(Se=>e(Se)).filter(Boolean);if(Ie.length>=3){const Se=$e=>{if(!$e)return null;if($e.endsWith("%")){const Ye=Number.parseFloat($e);return Number.isFinite(Ye)?v(Math.round(Ye/100*255)):null}const Be=Number.parseFloat($e);return Number.isFinite(Be)?v(Math.round(Be)):null},ye=Se(Ie[0]),Pe=Se(Ie[1]),Ge=Se(Ie[2]);if(ye==null||Pe==null||Ge==null)return null;let Ze=1;if(ke)if(ke.endsWith("%")){const $e=Number.parseFloat(ke);Number.isFinite($e)&&(Ze=h($e/100))}else{const $e=Number.parseFloat(ke);Number.isFinite($e)&&(Ze=h($e))}return{r:ye,g:Pe,b:Ge,a:Ze}}}if(ee&&ee[1]){const le=ee[1].split(",").map(ye=>e(ye));if(le.length<3)return null;const _e=ye=>{if(!ye)return null;if(ye.endsWith("%")){const Ge=Number.parseFloat(ye);return Number.isFinite(Ge)?v(Math.round(Ge/100*255)):null}const Pe=Number.parseFloat(ye);return Number.isFinite(Pe)?v(Math.round(Pe)):null},ce=_e(le[0]),ke=_e(le[1]),Ie=_e(le[2]);if(ce==null||ke==null||Ie==null)return null;let Se=1;if(le.length>=4){const ye=le[3];if(ye&&ye.endsWith("%")){const Pe=Number.parseFloat(ye);Number.isFinite(Pe)&&(Se=h(Pe/100))}else{const Pe=Number.parseFloat(ye);Number.isFinite(Pe)&&(Se=h(Pe))}}return{r:ce,g:ke,b:Ie,a:Se}}try{const le=n||null,_e=le&&le.document?le.document:null;if(le&&_e&&typeof _e.createElement=="function"&&typeof le.getComputedStyle=="function"){const ce=_e.createElement("span");ce.style.position="absolute",ce.style.left="-9999px",ce.style.top="-9999px",ce.style.opacity="0",ce.style.color=String(V);const ke=_e.body||_e.documentElement;ke&&typeof ke.appendChild=="function"&&ke.appendChild(ce);let Ie="";try{Ie=le.getComputedStyle(ce)&&le.getComputedStyle(ce).color||""}catch{Ie=""}try{ce&&ce.parentNode&&ce.parentNode.removeChild(ce)}catch{}const Se=G(Ie);if(Se&&Se!==G(V)){const ye=ne(Se);if(ye)return ye}}}catch{}return null}function ie(V){const U=G(V);if(!U)return null;if(B.has(U))return B.get(U);const ee=ne(U);return B.set(U,ee),ee}function ue(V,U){const ee=V&&typeof V=="object"?V:{r:0,g:0,b:0,a:0},le=U&&typeof U=="object"?U:{r:0,g:0,b:0,a:0},_e=h(ee.a),ce=h(le.a),ke=_e+ce*(1-_e);if(ke<=0)return{r:0,g:0,b:0,a:0};const Ie=v(ee.r),Se=v(ee.g),ye=v(ee.b),Pe=v(le.r),Ge=v(le.g),Ze=v(le.b),$e=(Ie*_e+Pe*ce*(1-_e))/ke,Be=(Se*_e+Ge*ce*(1-_e))/ke,Ye=(ye*_e+Ze*ce*(1-_e))/ke;return{r:v(Math.round($e)),g:v(Math.round(Be)),b:v(Math.round(Ye)),a:h(ke)}}function fe(V){const U=Number(V)/255;return U<=.03928?U/12.92:Math.pow((U+.055)/1.055,2.4)}function we(V){const U=fe(v(V.r)),ee=fe(v(V.g)),le=fe(v(V.b));return .2126*U+.7152*ee+.0722*le}function te(V,U){const ee=we(V),le=we(U),_e=Math.max(ee,le),ce=Math.min(ee,le);return(_e+.05)/(ce+.05)}function be(V,U){const ee=e(V),le=(Number(U)|0)>10?Number(U)|0:80;return ee.length<=le?ee:ee.slice(0,le-3)+"..."}function Ve(V){try{const U=V&&V.backgroundImage;return!!(U&&String(U).trim()&&String(U).trim().toLowerCase()!=="none")}catch{return!1}}function Ne(V){try{const U=V&&V.mixBlendMode;return!!(U&&String(U).trim()&&String(U).trim().toLowerCase()!=="normal")}catch{return!1}}function Me(V){try{const U=V&&V.filter,ee=V&&V.backdropFilter,le=U&&String(U).trim().toLowerCase()!=="none",_e=ee&&String(ee).trim().toLowerCase()!=="none";return!!(le||_e)}catch{return!1}}function We(V){try{const U=V==null?"":String(V).trim();if(!U||U.toLowerCase()==="none")return!1;const ee=ie(U);return!(ee&&typeof ee.a=="number"&&ee.a===0)}catch{return!1}}function De(V,U){try{if(!V||V.nodeType!==1)return Ve(U);if(r.has(V))return r.get(V);const ee=Ve(U);return r.set(V,ee),ee}catch{return!1}}function Xe(V,U){try{if(!V||V.nodeType!==1)return Ne(U);if(l.has(V))return l.get(V);const ee=Ne(U);return l.set(V,ee),ee}catch{return!1}}function _t(V,U){try{if(!V||V.nodeType!==1)return Me(U);if(y.has(V))return y.get(V);const ee=Me(U);return y.set(V,ee),ee}catch{return!1}}function re(V,U){try{if(!V||V.nodeType!==1){const ce=U&&U.textShadow,ke=ce==null?"":String(ce);return{has:We(ke),value:ke}}if(b.has(V))return b.get(V);const ee=U&&U.textShadow,le=ee==null?"":String(ee),_e={has:We(le),value:le};return b.set(V,_e),_e}catch{return{has:!1,value:""}}}const Ae=new WeakMap,xe=A("__opacityProductCache")||Ae;function Ee(V){try{if(!V||typeof V!="object"&&typeof V!="function")return 1;if(xe.has(V))return xe.get(V);let U=1,ee=V,le=0;for(;ee&&le++<200;){if(ee.nodeType!==1){ee=u(ee);continue}const ce=d(ee),ke=h(Number.parseFloat(ce&&ce.opacity!=null?ce.opacity:"1"));if(U*=ke,ee=u(ee),U<=0)break}const _e=h(U);return xe.set(V,_e),_e}catch{return 1}}const je=new WeakMap,Re=A("__effectiveForegroundCache")||je;function tt(V){try{if(V&&Re.has(V))return Re.get(V)}catch{}const U=d(V),ee=ie(U&&U.color);if(!ee){const ce={rgba:null,alpha:0,opacityProduct:Ee(V)};try{V&&Re.set(V,ce)}catch{}return ce}const le=Ee(V),_e={rgba:{r:ee.r,g:ee.g,b:ee.b,a:h(ee.a*le)},alpha:h(ee.a*le),opacityProduct:le};try{V&&Re.set(V,_e)}catch{}return _e}const et=new WeakMap,it=A("__effectiveBackgroundCache")||et;function Dt(V){const U=V&&V.contrast&&typeof V.contrast=="object"?V.contrast:{},ee=U.mode==="auditorAssist"?"auditorAssist":"strictConformance",le=typeof U.rootCanvasFallback=="string"&&U.rootCanvasFallback.trim()?U.rootCanvasFallback.trim():"#ffffff";return`${ee}|${le}`}function Lt(V,U){const ee=Dt(U),le=!!(U&&U.collectStack);if(!le)try{if(V&&it.has(V)){const Be=it.get(V);if(Be&&typeof Be.get=="function"&&Be.has(ee))return Be.get(ee)}}catch{}const _e=U&&U.contrast&&typeof U.contrast=="object"?U.contrast:{},ce=_e.mode==="auditorAssist"?"auditorAssist":"strictConformance",ke=typeof _e.rootCanvasFallback=="string"&&_e.rootCanvasFallback.trim()?_e.rootCanvasFallback.trim():"#ffffff",Ie=!!(U&&U.collectStack),Se=Ie?[]:null;let ye={r:0,g:0,b:0,a:0},Pe=V,Ge=0;for(;Pe&&Ge++<200;){if(Pe.nodeType!==1){Pe=u(Pe);continue}const Be=d(Pe),Ye=ie(Be&&Be.backgroundColor),nt=h(Number.parseFloat(Be&&Be.opacity!=null?Be.opacity:"1"));if(Ye){const dt={r:Ye.r,g:Ye.g,b:Ye.b,a:h(Ye.a)};Ie&&Se.push({selector:ht(Pe,(Pe.tagName||"").toLowerCase()||"html"),bg:{r:dt.r,g:dt.g,b:dt.b,a:dt.a},opacity:nt}),ye=ue(ye,dt)}nt<1&&(ye={r:ye.r,g:ye.g,b:ye.b,a:h(ye.a*nt)}),Pe=u(Pe)}let Ze;const $e=ce==="auditorAssist";if(ye.a<1)if($e){const Be=ie(ke)||{r:255,g:255,b:255,a:1},Ye={r:Be.r,g:Be.g,b:Be.b,a:1};ye=ue(Ye,ye),Ze={ok:!0,rgba:{r:ye.r,g:ye.g,b:ye.b,a:1},alpha:1,stack:Se||[],reasonCode:null,assumptionsApplied:["ROOT_CANVAS_FALLBACK"],assumedRootCanvasColor:ke}}else Ze={ok:!1,rgba:ye,alpha:ye.a,stack:Se||[],reasonCode:"BACKGROUND_NOT_OPAQUE_AT_ROOT"};else Ze={ok:!0,rgba:ye,alpha:ye.a,stack:Se||[],reasonCode:null};if(!le&&V)try{let Be=it.get(V);Be||(Be=new Map,it.set(V,Be)),Be.set(ee,Ze)}catch{}return Ze}const Rt=new WeakMap,Pt=A("__simpleSelectorCache")||Rt;function ht(V,U){try{if(!V||V.nodeType!==1)return"";if(Pt.has(V))return Pt.get(V)||"";const ee=k(V,U);return Pt.set(V,ee||""),ee||""}catch{return""}}function bt(V){try{const U=V==null?"":String(V).trim();if(!U)return"unknown";const ee=U.toLowerCase();if(ee==="none")return"unknown";const le=/gradient\s*\(/i.test(ee),_e=/\burl\s*\(/i.test(ee),ce=/\bimage-set\s*\(/i.test(ee),ke=_e||ce,Ie=le;return ke&&Ie?"imageAndGradient":ke?"image":Ie?"gradient":"unknown"}catch{return"unknown"}}const Ht=new WeakMap,ut=A("__computabilityBlockerCache")||Ht;function pt(V){try{if(V&&ut.has(V))return ut.get(V)}catch{}let U=V,ee=0,le=!1;for(;U&&ee++<200;){if(U.nodeType!==1){U=u(U);continue}const ce=d(U);if(Xe(U,ce)){const Ie={ok:!1,reasonCode:"MIX_BLEND_MODE",blockerSelector:ht(U,(U.tagName||"").toLowerCase()||"html"),blockerProperty:"mix-blend-mode",blockerValue:be(ce&&ce.mixBlendMode,80)};try{V&&ut.set(V,Ie)}catch{}return Ie}if(_t(U,ce)){const Ie=ce&&ce.filter&&String(ce.filter).trim().toLowerCase()!=="none";if(!(le&&!Ie)){const Se={ok:!1,reasonCode:"BACKGROUND_FILTER_OR_BACKDROP_FILTER",blockerSelector:ht(U,(U.tagName||"").toLowerCase()||"html"),blockerProperty:Ie?"filter":"backdrop-filter",blockerValue:be((Ie?ce.filter:ce.backdropFilter)||"",80)};try{V&&ut.set(V,Se)}catch{}return Se}}const ke=U===V?re(U,ce):null;if(ke&&ke.has){const Ie={ok:!1,reasonCode:"TEXT_SHADOW",blockerSelector:ht(U,(U.tagName||"").toLowerCase()||"html"),blockerProperty:"text-shadow",blockerValue:be(ke.value,80)};try{V&&ut.set(V,Ie)}catch{}return Ie}if(!le&&De(U,ce)){const Ie=ce&&ce.backgroundImage||"",Se={ok:!1,reasonCode:"BACKGROUND_IMAGE_OR_GRADIENT",blockerSelector:ht(U,(U.tagName||"").toLowerCase()||"html"),blockerProperty:"background-image",blockerValue:be(Ie,80),backgroundFillType:bt(Ie)};try{V&&ut.set(V,Se)}catch{}return Se}if(U!==V&&h(Number.parseFloat(ce&&ce.opacity!=null?ce.opacity:"1"))<1){const Se={ok:!1,reasonCode:"ANCESTOR_OPACITY",blockerSelector:ht(U,(U.tagName||"").toLowerCase()||"html"),blockerProperty:"opacity",blockerValue:be(String(ce&&ce.opacity!=null?ce.opacity:"1"),80)};try{V&&ut.set(V,Se)}catch{}return Se}if(!le){const Ie=ie(ce&&ce.backgroundColor);Ie&&h(Ie.a)>=1&&(le=!0)}U=u(U)}const _e={ok:!0,reasonCode:null,blockerSelector:"",blockerProperty:"",blockerValue:""};try{V&&ut.set(V,_e)}catch{}return _e}return{clamp01:h,clamp255:v,round2:z,rgbaToString:H,parsePx:W,normalizeFontWeight:X,isLargeText:oe,requiredRatio:q,parseCssColorToRgba:ie,compositeRgba:ue,relativeLuminance:we,contrastRatio:te,toHex2:D,rgbToHex:F,pxToPt:E,fontWeightLabel:P,hasBackgroundImageOrGradient:Ve,hasBlendMode:Ne,hasFilter:Me,computeOpacityProduct:Ee,computeEffectiveForeground:tt,computeEffectiveBackground:Lt,getComputabilityBlocker:pt,getTextScan:L,isInactiveUiComponent:N}}),Bn=(function(o,t){const n=t&&t.trim||(re=>(re==null?"":String(re)).trim()),e=re=>n(re).toLowerCase(),w=o&&o.document,u=(()=>{const re=o&&o.root;return Array.isArray(re)?re.filter(Ae=>Ae&&typeof Ae=="object"):re&&typeof re=="object"?[re]:[]})();function k(re){if(!w||typeof w.getElementById!="function")return!0;try{return!!w.getElementById(re)}catch{return!0}}function h(re){if(n(z(re,"aria-label")))return!0;const xe=n(z(re,"aria-labelledby"));if(xe&&w&&typeof w.getElementById=="function")for(const je of xe.split(/\s+/).filter(Boolean))try{const Re=w.getElementById(je);if(Re&&n(Re.textContent))return!0}catch{}return!!n(z(re,"title"))}const v=new Set(["article","aside","nav","section"]),A=new Set(["article","complementary","navigation","region"]);function p(re,Ae){const xe=e(re.tagName||""),Ee=z(re,"role");if(Ee==null)return v.has(xe)?!0:Ae&&xe==="main";const je=n(Ee).split(/\s+/)[0].toLowerCase();return A.has(je)?!0:Ae&&je==="main"}function m(re,Ae){if(!P(re))return!1;const xe=!!(Ae&&Ae.includeMain);let Ee=re.parentElement,je=0;for(;Ee&&je++<200;){if(p(Ee,xe))return!0;if(u.includes(Ee))break;Ee=Ee.parentElement}return!1}const s=new Set(["command","composite","input","landmark","range","roletype","section","sectionhead","select","structure","widget","window"]),c=new Set(["directory"]),d=new Set(["generic"]),f=new Set([]),g=new Set(["aria-disabled","aria-errormessage","aria-haspopup","aria-invalid"]),i={directory:{key:"ariaDeprecatedRole_guidance_directory",text:'Replace it with role="list" (its recommended replacement).'},generic:{key:"ariaDeprecatedRole_guidance_generic",text:'Remove it: this role is reserved for user-agent-internal use, not authors. Use role="presentation"/"none" to strip semantics, a semantic role like "group" to convey grouping, or a plain element (which already carries the implicit generic role) instead.'}},a={key:"ariaDeprecatedRole_guidance_default",text:"Replace the deprecated role with its recommended replacement."};function r(re){const Ae=e(re);return Object.prototype.hasOwnProperty.call(i,Ae)?i[Ae]:a}const l=new Set(["alert","alertdialog","application","article","banner","blockquote","button","caption","cell","checkbox","code","columnheader","combobox","comment","complementary","contentinfo","definition","deletion","dialog","directory","doc-abstract","doc-acknowledgments","doc-afterword","doc-appendix","doc-backlink","doc-biblioentry","doc-bibliography","doc-biblioref","doc-chapter","doc-colophon","doc-conclusion","doc-cover","doc-credit","doc-credits","doc-dedication","doc-endnote","doc-endnotes","doc-epigraph","doc-epilogue","doc-errata","doc-example","doc-footnote","doc-foreword","doc-glossary","doc-glossref","doc-index","doc-introduction","doc-noteref","doc-notice","doc-pagebreak","doc-pagefooter","doc-pageheader","doc-pagelist","doc-part","doc-preface","doc-prologue","doc-pullquote","doc-qna","doc-subtitle","doc-tip","doc-toc","document","emphasis","feed","figure","form","generic","graphics-document","graphics-object","graphics-symbol","grid","gridcell","group","heading","img","insertion","link","list","listbox","listitem","log","main","mark","marquee","math","menu","menubar","menuitem","menuitemcheckbox","menuitemradio","meter","navigation","none","note","option","paragraph","presentation","progressbar","radio","radiogroup","region","row","rowgroup","rowheader","scrollbar","search","searchbox","separator","slider","spinbutton","status","strong","subscript","suggestion","superscript","switch","tab","table","tablist","tabpanel","term","text","textbox","time","timer","toolbar","tooltip","tree","treegrid","treeitem"]),y={"aria-activedescendant":"idref","aria-atomic":"boolean","aria-autocomplete":"token","aria-braillelabel":"string","aria-brailleroledescription":"string","aria-busy":"boolean","aria-checked":"tristate","aria-colcount":"integer","aria-colindex":"integer","aria-colindextext":"string","aria-colspan":"integer","aria-controls":"idref-list","aria-current":"token","aria-describedby":"idref-list","aria-description":"string","aria-details":"idref-list","aria-disabled":"boolean","aria-dropeffect":"token-list","aria-errormessage":"idref","aria-expanded":"boolean-undefined","aria-flowto":"idref-list","aria-grabbed":"boolean-undefined","aria-haspopup":"token","aria-hidden":"boolean-undefined","aria-invalid":"token","aria-keyshortcuts":"string","aria-label":"string","aria-labelledby":"idref-list","aria-level":"integer","aria-live":"token","aria-modal":"boolean","aria-multiline":"boolean","aria-multiselectable":"boolean","aria-orientation":"token","aria-owns":"idref-list","aria-placeholder":"string","aria-posinset":"integer","aria-pressed":"tristate","aria-readonly":"boolean","aria-relevant":"token-list","aria-required":"boolean","aria-roledescription":"string","aria-rowcount":"integer","aria-rowindex":"integer","aria-rowindextext":"string","aria-rowspan":"integer","aria-selected":"boolean-undefined","aria-setsize":"integer","aria-sort":"token","aria-valuemax":"number","aria-valuemin":"number","aria-valuenow":"number","aria-valuetext":"string"},b={"aria-autocomplete":new Set(["inline","list","both","none"]),"aria-current":new Set(["page","step","location","date","time","true","false"]),"aria-dropeffect":new Set(["copy","execute","link","move","none","popup"]),"aria-haspopup":new Set(["false","true","menu","listbox","tree","grid","dialog"]),"aria-invalid":new Set(["grammar","false","spelling","true"]),"aria-live":new Set(["off","polite","assertive"]),"aria-orientation":new Set(["horizontal","vertical","undefined"]),"aria-relevant":new Set(["additions","removals","text","all"]),"aria-sort":new Set(["ascending","descending","none","other"])},_={checkbox:["aria-checked"],combobox:["aria-expanded"],heading:["aria-level"],menuitemcheckbox:["aria-checked"],menuitemradio:["aria-checked"],meter:["aria-valuenow"],radio:["aria-checked"],scrollbar:["aria-valuenow"],slider:["aria-valuenow"],switch:["aria-checked"]},I={combobox:{"aria-expanded":"false"},heading:{"aria-level":"2"},option:{"aria-selected":"false"}},x={list:["listitem"],listbox:["option","group"],menu:["menuitem","menuitemcheckbox","menuitemradio","group"],menubar:["menuitem","menuitemcheckbox","menuitemradio","group"],radiogroup:["radio"],rowgroup:["row"],table:["row","rowgroup"],grid:["row","rowgroup"],treegrid:["row","rowgroup"],tablist:["tab"],tree:["treeitem","group"],row:["cell","gridcell","columnheader","rowheader"]},C={listitem:["list"],option:["listbox","group"],menuitem:["menu","menubar","group"],menuitemcheckbox:["menu","menubar","group"],menuitemradio:["menu","menubar","group"],tab:["tablist"],tabpanel:[],treeitem:["tree","group"],row:["rowgroup","grid","table","treegrid"],cell:["row"],gridcell:["row"],columnheader:["row"],rowheader:["row"],rowgroup:["grid","table","treegrid"]},N={"a[href]":["button","checkbox","menuitem","menuitemcheckbox","menuitemradio","option","radio","switch","tab","treeitem","doc-backlink","doc-biblioref","doc-glossref","doc-noteref"],article:["feed","presentation","none","document","application","main","region"],"area[href]":[],area:["button","link"],html:[],picture:[],button:["checkbox","combobox","gridcell","link","menuitem","menuitemcheckbox","menuitemradio","option","radio","separator","slider","switch","tab","treeitem"],h1:["tab","presentation","none"],h2:["tab","presentation","none"],h3:["tab","presentation","none"],h4:["tab","presentation","none"],h5:["tab","presentation","none"],h6:["tab","presentation","none"],hr:["none","presentation"],aside:["feed","none","note","presentation","region","search"],form:["form","search","none","presentation"],"header[toplevel]":["group","none","presentation","doc-footnote"],header:["group","none","presentation","doc-footnote"],"label[associated]":[],"img[alt]":["button","checkbox","link","math","menuitem","menuitemcheckbox","menuitemradio","meter","option","progressbar","radio","scrollbar","separator","slider","switch","tab","treeitem"],img:["presentation","none"],li:["menuitem","menuitemcheckbox","menuitemradio","option","radio","separator","tab","treeitem","listitem","presentation","none"],nav:["doc-index","doc-pagelist","doc-toc","menu","menubar","none","presentation","tablist"],video:["application"],object:["application","img","document"],"section[named]":["alert","alertdialog","application","banner","complementary","contentinfo","dialog","document","feed","group","log","main","marquee","navigation","none","note","presentation","region","search","status","tabpanel"],section:["alert","alertdialog","application","banner","complementary","contentinfo","dialog","document","feed","group","log","main","marquee","navigation","none","note","presentation","search","status","tabpanel"],ol:["group","listbox","menu","menubar","radiogroup","tablist","toolbar","tree","presentation","none"],ul:["group","listbox","menu","menubar","radiogroup","tablist","toolbar","tree","presentation","none"],"input[type=checkbox][aria-pressed]":["button","menuitemcheckbox","option","switch"],"input[type=checkbox]":["menuitemcheckbox","option","switch"],"input[type=radio]":["menuitemradio"],"input[type=image]":["button","link","menuitem","menuitemcheckbox","menuitemradio","radio","switch"],"input[type=text]":["combobox","searchbox","spinbutton"],"input[type=search]":["combobox","spinbutton"],"input[type=tel]":["combobox","spinbutton"],"input[type=url]":["combobox","spinbutton"],"input[type=email]":["combobox","spinbutton"],select:["menu"],"select[multiple]":[],table:null,td:null,th:null,tr:null},L={"a[href]":"link","area[href]":"link",article:"article",aside:"complementary",button:"button",form:"form","header[toplevel]":"banner",h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",hr:"separator","img[alt]":"img",img:"img",li:"listitem",nav:"navigation",ol:"list",ul:"list","input[type=checkbox][aria-pressed]":"checkbox","input[type=checkbox]":"checkbox","input[type=radio]":"radio","input[type=image]":"button","input[type=text]":"textbox","input[type=search]":"searchbox","input[type=tel]":"textbox","input[type=url]":"textbox","input[type=email]":"textbox",select:"combobox","select[multiple]":"listbox",table:"table",td:"cell",th:"columnheader",tr:"row"},D={li:"listitem",option:"option",tr:"row",td:"cell",th:"columnheader",thead:"rowgroup",tbody:"rowgroup",tfoot:"rowgroup",ul:"list",ol:"list",table:"table",select:"listbox","input[type=radio]":"radio"},F={li:{tags:["ul","ol","menu"],directParent:!0},option:{tags:["select","datalist","optgroup"],directParent:!0},thead:{tags:["table"],directParent:!0},tbody:{tags:["table"],directParent:!0},tfoot:{tags:["table"],directParent:!0},tr:{tags:["table"],directParent:!1},td:{tags:["table"],directParent:!1},th:{tags:["table"],directParent:!1}};function E(re,Ae){const xe=Ae.tags;let Ee=re&&re.parentElement?re.parentElement:null,je=0;for(;Ee&&je++<200;){const Re=e(Ee.tagName||"");if(xe.indexOf(Re)!==-1)return!0;if(Ae.directParent)return!1;Ee=Ee.parentElement}return!1}function P(re){return!!(re&&re.nodeType===1)}function z(re,Ae){try{return re&&re.getAttribute?re.getAttribute(Ae):null}catch{return null}}function H(re){if(!P(re))return"";const Ae=n(z(re,"role"));if(!Ae)return"";const xe=Ae.split(/\s+/).filter(Boolean);return xe.length?e(xe[0]):""}function W(re){if(!P(re))return[];const Ae=n(z(re,"role"));return Ae?Ae.split(/\s+/).filter(Boolean).map(e):[]}function X(re){return s.has(e(re))}function oe(re){return c.has(e(re))}function q(re){return d.has(e(re))}function O(re){return f.has(e(re))}function B(re){return g.has(e(re))}function G(re){const Ae=e(re);return s.has(Ae)||l.has(Ae)}function ne(re){return l.has(e(re))}function ie(re){const Ae=e(re);return!Ae||Ae.slice(0,5)!=="aria-"?!1:Object.prototype.hasOwnProperty.call(y,Ae)}function ue(re){return y[e(re)]||null}function fe(re){return e(z(re,"aria-expanded"))==="false"||e(z(re,"aria-selected"))==="false"}function we(re,Ae,xe){const Ee=ue(re);if(!Ee)return{valid:!0,reason:"unknown-attr-skip"};const je=n(Ae);if(je.length===0)return{valid:!0,reason:""};switch(Ee){case"boolean":{const Re=je==="true"||je==="false";return{valid:Re,reason:Re?"":"expected-true-false"}}case"boolean-undefined":{const Re=je==="true"||je==="false"||je==="undefined";return{valid:Re,reason:Re?"":"expected-true-false-undefined"}}case"tristate":{const Re=je==="true"||je==="false"||je==="mixed";return{valid:Re,reason:Re?"":"expected-true-false-mixed"}}case"integer":{const Re=/^-?\d+$/.test(je);return{valid:Re,reason:Re?"":"expected-integer"}}case"number":{const Re=Number.isFinite(Number(je));return{valid:Re,reason:Re?"":"expected-number"}}case"token":{const Re=b[e(re)];if(!Re)return{valid:!0,reason:"no-token-set-defined"};const tt=Re.has(e(je));return{valid:tt,reason:tt?"":"invalid-token"}}case"token-list":{const Re=b[e(re)];if(!Re)return{valid:!0,reason:"no-token-set-defined"};const et=je.split(/\s+/).filter(Boolean).map(e).every(it=>Re.has(it));return{valid:et,reason:et?"":"invalid-token"}}case"idref":return/\s/.test(je)?{valid:!1,reason:"expected-single-idref"}:e(re)==="aria-errormessage"?{valid:!0,reason:""}:k(je)?{valid:!0,reason:""}:{valid:!1,reason:"idref-not-found"};case"idref-list":return je.split(/\s+/).filter(Boolean).some(tt=>k(tt))?{valid:!0,reason:""}:e(re)==="aria-controls"?fe(xe)?{valid:!0,reason:"idref-controls-unrendered"}:{valid:!1,review:!0,reason:"idref-controls-not-found"}:{valid:!1,reason:"idref-list-none-found"};default:return{valid:!0,reason:""}}}function te(re){return _[e(re)]?_[e(re)].slice(0):[]}function be(re,Ae){const xe=I[e(re)];if(!xe)return null;const Ee=xe[e(Ae)];return typeof Ee=="string"?Ee:null}function Ve(re){return x[e(re)]?x[e(re)].slice(0):null}function Ne(re){return Object.prototype.hasOwnProperty.call(C,e(re))?C[e(re)].slice(0):null}function Me(re){if(!P(re))return"";const Ae=e(re.tagName||"");if(Ae==="a"||Ae==="area"){const xe=z(re,"href");return xe!=null&&n(xe)!==""?Ae+"[href]":Ae==="area"?"area":""}if(Ae==="section")return h(re)?"section[named]":"section";if(Ae==="header")return m(re,{includeMain:!0})?"header":"header[toplevel]";if(Ae==="label"){let xe=!1;try{xe=!!re.control}catch{}return xe?"label[associated]":""}if(Ae==="img"){const xe=z(re,"alt");return xe!=null&&n(xe)!==""?"img[alt]":"img"}if(Ae==="input"){const xe=e(z(re,"type")||"text");if(xe==="checkbox"){let Ee=!1;try{Ee=!!(re.hasAttribute&&re.hasAttribute("aria-pressed"))}catch{}return Ee?"input[type=checkbox][aria-pressed]":"input[type=checkbox]"}return"input[type="+xe+"]"}if(Ae==="select"){let xe;try{if(xe=!!(re.hasAttribute&&re.hasAttribute("multiple")),!xe){const Ee=z(re,"size"),je=Ee!=null?parseInt(Ee,10):NaN;xe=Number.isFinite(je)&&je>1}}catch{xe=!1}return xe?"select[multiple]":"select"}return Ae}function We(re){const Ae=Me(re);if(Ae)return Object.prototype.hasOwnProperty.call(N,Ae)?N[Ae]:void 0}function De(re){const Ae=Me(re);return Ae&&Object.prototype.hasOwnProperty.call(L,Ae)?L[Ae]:""}function Xe(re,Ae){const xe=We(re);if(xe===void 0)return{constrained:!1,allowed:!0};if(xe===null)return{constrained:!0,allowed:!0};const Ee=e(Ae);return Ee&&Ee===De(re)?{constrained:!0,allowed:!0}:{constrained:!0,allowed:xe.indexOf(Ee)!==-1}}function _t(re){const Ae=H(re);if(Ae&&ne(Ae))return Ae;if(!P(re))return"";const xe=e(re.tagName||"");if(xe==="input"){const Re="input[type="+e(z(re,"type")||"text")+"]";return Object.prototype.hasOwnProperty.call(D,Re)?D[Re]:""}if(!Object.prototype.hasOwnProperty.call(D,xe))return"";const Ee=F[xe];return Ee&&!E(re,Ee)?"":D[xe]}return{isValidAriaAttrName:ie,getAttrValueType:ue,validateAttrValue:we,getExplicitRole:H,getAllRoleTokens:W,isAbstractRole:X,isDeprecatedRole:oe,isAuthorDiscouragedRole:q,isAuthorProhibitedRole:O,isDeprecatedAttr:B,getDeprecatedRoleGuidance:r,isKnownRole:G,isValidConcreteRole:ne,getRequiredAttrsForRole:te,getRequiredAttrImplicitValue:be,getRequiredOwnedRoles:Ve,getRequiredContextRoles:Ne,isRoleAllowedOnElement:Xe,getContainmentRole:_t,getNativeRoleForElement:De,hasLandmarkScopingAncestor:m}}),bn=(function(o){return o?Array.isArray(o)?o.map(String).map(t=>t.trim()).filter(Boolean):typeof o=="string"?o.split(",").map(t=>t.trim()).filter(Boolean):[]:[]}),Dn=(function(o,t){const n=Array.isArray(t)?(()=>{const w=t.map(u=>typeof u=="string"?u.trim():"").filter(Boolean);return w.length?w:null})():typeof t=="string"&&t.trim()?t.trim():null;let e=[];{const w=Array.isArray(n)?n:n?[n]:[],u=new Set;for(const k of w){let h;try{h=o.querySelectorAll(k)}catch{h=[]}for(const v of h)v&&!u.has(v)&&(u.add(v),e.push(v))}}if(!e.length){const w=o.documentElement||o.body||o.querySelector("html");w&&(e=[w])}return{ctxSelector:n,roots:e}}),Hn=(function(o){const t="aa aaa aab aac aad aae aaf aag aah aai aak aal aam aan aao aap aaq aas aat aau aav aaw aax aaz ab aba abb abc abd abe abf abg abh abi abj abl abm abn abo abp abq abr abs abt abu abv abw abx aby abz aca acb acd ace acf ach aci ack acl acm acn acp acq acr acs act acu acv acw acx acy acz ada adb add ade adf adg adh adi adj adl adn ado adp adq adr ads adt adu adw adx ady adz ae aea aeb aec aed aee aek ael aem aen aeq aer aes aeu aew aey aez af afa afb afd afe afg afh afi afk afn afo afp afs aft afu afz aga agb agc agd age agf agg agh agi agj agk agl agm agn ago agp agq agr ags agt agu agv agw agx agy agz aha ahb ahg ahh ahi ahk ahl ahm ahn aho ahp ahr ahs aht aia aib aic aid aie aif aig aih aii aij aik ail aim ain aio aip aiq air ais ait aiw aix aiy aja ajg aji ajn ajp ajs ajt aju ajw ajz ak akb akc akd ake akf akg akh aki akj akk akl akm ako akp akq akr aks akt aku akv akw akx aky akz ala alc ald ale alf alg alh ali alj alk all alm aln alo alp alq alr als alt alu alv alw alx aly alz am ama amb amc ame amf amg ami amj amk aml amm amn amo amp amq amr ams amt amu amv amw amx amy amz an ana anb anc and ane anf ang anh ani anj ank anl anm ann ano anp anq anr ans ant anu anv anw anx any anz aoa aob aoc aod aoe aof aog aoh aoi aoj aok aol aom aon aor aos aot aou aox aoz apa apb apc apd ape apf apg aph api apj apk apl apm apn apo app apq apr aps apt apu apv apw apx apy apz aqa aqc aqd aqg aqk aql aqm aqn aqp aqr aqt aqz ar arb arc ard are arh ari arj ark arl arn aro arp arq arr ars art aru arv arw arx ary arz as asa asb asc asd ase asf asg ash asi asj ask asl asn aso asp asq asr ass ast asu asv asw asx asy asz ata atb atc atd ate atg ath ati atj atk atl atm atn ato atp atq atr ats att atu atv atw atx aty atz aua aub auc aud aue auf aug auh aui auj auk aul aum aun auo aup auq aur aus aut auu auw aux auy auz av avb avd avi avk avl avm avn avo avs avt avu avv awa awb awc awd awe awg awh awi awk awm awn awo awr aws awt awu awv aww awx awy axb axe axg axk axl axm axx ay aya ayb ayc ayd aye ayg ayh ayi ayk ayl ayn ayo ayp ayq ayr ays ayt ayu ayx ayy ayz az aza azb azc azd azg azj azm azn azo azt azz ba baa bab bac bad bae baf bag bah bai baj bal ban bao bap bar bas bat bau bav baw bax bay baz bba bbb bbc bbd bbe bbf bbg bbh bbi bbj bbk bbl bbm bbn bbo bbp bbq bbr bbs bbt bbu bbv bbw bbx bby bbz bca bcb bcc bcd bce bcf bcg bch bci bcj bck bcl bcm bcn bco bcp bcq bcr bcs bct bcu bcv bcw bcy bcz bda bdb bdc bdd bde bdf bdg bdh bdi bdj bdk bdl bdm bdn bdo bdp bdq bdr bds bdt bdu bdv bdw bdx bdy bdz be bea beb bec bed bee bef beg beh bei bej bek bem beo bep beq ber bes bet beu bev bew bex bey bez bfa bfb bfc bfd bfe bff bfg bfh bfi bfj bfk bfl bfm bfn bfo bfp bfq bfr bfs bft bfu bfw bfx bfy bfz bg bga bgb bgc bgd bge bgf bgg bgi bgj bgk bgl bgm bgn bgo bgp bgq bgr bgs bgt bgu bgv bgw bgx bgy bgz bh bha bhb bhc bhd bhe bhf bhg bhh bhi bhj bhk bhl bhm bhn bho bhp bhq bhr bhs bht bhu bhv bhw bhx bhy bhz bi bia bib bic bid bie bif big bij bik bil bim bin bio bip biq bir bit biu biv biw bix biy biz bja bjb bjc bjd bje bjf bjg bjh bji bjj bjk bjl bjm bjn bjo bjp bjq bjr bjs bjt bju bjv bjw bjx bjy bjz bka bkb bkc bkd bkf bkg bkh bki bkj bkk bkl bkm bkn bko bkp bkq bkr bks bkt bku bkv bkw bkx bky bkz bla blb blc bld ble blf blg blh bli blj blk bll blm bln blo blp blq blr bls blt blv blw blx bly blz bm bma bmb bmc bmd bme bmf bmg bmh bmi bmj bmk bml bmm bmn bmo bmp bmq bmr bms bmt bmu bmv bmw bmx bmy bmz bn bna bnb bnc bnd bne bnf bng bni bnj bnk bnl bnm bnn bno bnp bnq bnr bns bnt bnu bnv bnw bnx bny bnz bo boa bob boe bof bog boh boi boj bok bol bom bon boo bop boq bor bot bou bov bow box boy boz bpa bpb bpc bpd bpe bpg bph bpi bpj bpk bpl bpm bpn bpo bpp bpq bpr bps bpt bpu bpv bpw bpx bpy bpz bqa bqb bqc bqd bqf bqg bqh bqi bqj bqk bql bqm bqn bqo bqp bqq bqr bqs bqt bqu bqv bqw bqx bqy bqz br bra brb brc brd brf brg brh bri brj brk brl brm brn bro brp brq brr brs brt bru brv brw brx bry brz bs bsa bsb bsc bse bsf bsg bsh bsi bsj bsk bsl bsm bsn bso bsp bsq bsr bss bst bsu bsv bsw bsx bsy bta btb btc btd bte btf btg bth bti btj btk btl btm btn bto btp btq btr bts btt btu btv btw btx bty btz bua bub buc bud bue buf bug buh bui buj buk bum bun buo bup buq bus but buu buv buw bux buy buz bva bvb bvc bvd bve bvf bvg bvh bvi bvj bvk bvl bvm bvn bvo bvp bvq bvr bvt bvu bvv bvw bvx bvy bvz bwa bwb bwc bwd bwe bwf bwg bwh bwi bwj bwk bwl bwm bwn bwo bwp bwq bwr bws bwt bwu bww bwx bwy bwz bxa bxb bxc bxd bxe bxf bxg bxh bxi bxj bxk bxl bxm bxn bxo bxp bxq bxr bxs bxu bxv bxw bxx bxz bya byb byc byd bye byf byg byh byi byj byk byl bym byn byo byp byq byr bys byt byv byw byx byy byz bza bzb bzc bzd bze bzf bzg bzh bzi bzj bzk bzl bzm bzn bzo bzp bzq bzr bzs bzt bzu bzv bzw bzx bzy bzz ca caa cab cac cad cae caf cag cah cai caj cak cal cam can cao cap caq car cas cau cav caw cax cay caz cba cbb cbc cbd cbe cbg cbh cbi cbj cbk cbl cbn cbo cbq cbr cbs cbt cbu cbv cbw cby cca ccc ccd cce ccg cch ccj ccl ccm ccn cco ccp ccq ccr ccs cda cdc cdd cde cdf cdg cdh cdi cdj cdm cdn cdo cdr cds cdy cdz ce cea ceb ceg cek cel cen cet cey cfa cfd cfg cfm cga cgc cgg cgk ch chb chc chd chf chg chh chj chk chl chm chn cho chp chq chr cht chw chx chy chz cia cib cic cid cie cih cik cim cin cip cir ciw ciy cja cje cjh cji cjk cjm cjn cjo cjp cjr cjs cjv cjy cka ckb ckh ckl ckm ckn cko ckq ckr cks ckt cku ckv ckx cky ckz cla clc cld cle clh cli clj clk cll clm clo cls clt clu clw cly cma cmc cme cmg cmi cmk cml cmm cmn cmo cmr cms cmt cna cnb cnc cng cnh cni cnk cnl cno cnp cnq cnr cns cnt cnu cnw cnx co coa cob coc cod coe cof cog coh coj cok col com con coo cop coq cot cou cov cow cox coy coz cpa cpb cpc cpe cpf cpg cpi cpn cpo cpp cps cpu cpx cpy cqd cqu cr cra crb crc crd crf crg crh cri crj crk crl crm crn cro crp crq crr crs crt crv crw crx cry crz cs csa csb csc csd cse csf csg csh csi csj csk csl csm csn cso csp csq csr css cst csu csv csw csx csy csz cta ctc ctd cte ctg cth ctl ctm ctn cto ctp cts ctt ctu cty ctz cu cua cub cuc cug cuh cui cuj cuk cul cum cuo cup cuq cur cus cut cuu cuv cuw cux cuy cv cvg cvn cwa cwb cwd cwe cwg cwt cxh cy cya cyb cyo czh czk czn czo czt da daa dac dad dae daf dag dah dai daj dak dal dam dao dap daq dar das dau dav daw dax day daz dba dbb dbd dbe dbf dbg dbi dbj dbl dbm dbn dbo dbp dbq dbr dbt dbu dbv dbw dby dcc dcr dda ddd dde ddg ddi ddj ddn ddo ddr dds ddw de dec ded dee def deg deh dei dek del dem den dep deq der des dev dez dga dgb dgc dgd dge dgg dgh dgi dgk dgl dgn dgo dgr dgs dgt dgu dgw dgx dgz dha dhd dhg dhi dhl dhm dhn dho dhr dhs dhu dhv dhw dhx dia dib dic did dif dig dih dii dij dik dil dim din dio dip diq dir dis dit diu diw dix diy diz dja djb djc djd dje djf dji djj djk djl djm djn djo djr dju djw dka dkg dkk dkl dkr dks dkx dlg dlk dlm dln dma dmb dmc dmd dme dmf dmg dmk dml dmm dmn dmo dmr dms dmu dmv dmw dmx dmy dna dnd dne dng dni dnj dnk dnn dno dnr dnt dnu dnv dnw dny doa dob doc doe dof doh doi dok dol don doo dop doq dor dos dot dov dow dox doy doz dpp dra drb drc drd dre drg drh dri drl drn dro drq drr drs drt dru drw dry dsb dse dsh dsi dsk dsl dsn dso dsq dsz dta dtb dtd dth dti dtk dtm dtn dto dtp dtr dts dtt dtu dty dua dub duc dud due duf dug duh dui duj duk dul dum dun duo dup duq dur dus duu duv duw dux duy duz dv dva dwa dwk dwl dwr dws dwu dww dwy dwz dya dyb dyd dyg dyi dym dyn dyo dyr dyu dyy dz dza dzd dze dzg dzl dzn eaa ebc ebg ebk ebo ebr ebu ecr ecs ecy ee eee efa efe efi ega egl egm ego egx egy ehs ehu eip eit eiv eja eka ekc eke ekg eki ekk ekl ekm eko ekp ekr eky el ele elh eli elk elm elo elp elu elx ema emb eme emg emi emk emm emn emo emp emq ems emu emw emx emy emz en ena enb enc end enf enh enl enm enn eno enq enr enu env enw enx eo eot epi era erg erh eri erk ero err ers ert erw es ese esg esh esi esk esl esm esn eso esq ess esu esx esy et etb etc eth etn eto etr ets ett etu etx etz eu eud euq eve evh evn ewo ext eya eyo eza eze fa faa fab fad faf fag fah fai faj fak fal fam fan fap far fat fau fax fay faz fbl fcs fer ff ffi ffm fgr fi fia fie fif fil fip fir fit fiu fiw fj fkk fkv fla flh fli fll fln flr fly fmp fmu fnb fng fni fo fod foi fom fon for fos fox fpe fqs fr frc frd frk frm fro frp frq frr frs frt fse fsl fss fub fuc fud fue fuf fuh fui fuj fum fun fuq fur fut fuu fuv fuy fvr fwa fwe fy ga gaa gab gac gad gae gaf gag gah gai gaj gak gal gam gan gao gap gaq gar gas gat gau gav gaw gax gay gaz gba gbb gbc gbd gbe gbf gbg gbh gbi gbj gbk gbl gbm gbn gbo gbp gbq gbr gbs gbu gbv gbw gbx gby gbz gcc gcd gce gcf gcl gcn gcr gct gd gda gdb gdc gdd gde gdf gdg gdh gdi gdj gdk gdl gdm gdn gdo gdq gdr gds gdt gdu gdx gea geb gec ged gef geg geh gei gej gek gel gem geq ges gev gew gex gey gez gfk gft gfx gga ggb ggd gge ggg ggk ggl ggn ggo ggr ggt ggu ggw gha ghc ghe ghh ghk ghl ghn gho ghr ghs ght gia gib gic gid gie gig gih gii gil gim gin gio gip giq gir gis git giu giw gix giy giz gji gjk gjm gjn gjr gju gka gkd gke gkn gko gkp gku gl glb glc gld glh gli glj glk gll glo glr glu glw gly gma gmb gmd gme gmg gmh gml gmm gmn gmq gmr gmu gmv gmw gmx gmy gmz gn gna gnb gnc gnd gne gng gnh gni gnj gnk gnl gnm gnn gno gnq gnr gnt gnu gnw gnz goa gob goc god goe gof gog goh goi goj gok gol gom gon goo gop goq gor gos got gou gov gow gox goy goz gpa gpe gpn gqa gqi gqn gqr gqu gra grb grc grd grg grh gri grj grk grm gro grq grr grs grt gru grv grw grx gry grz gse gsg gsl gsm gsn gso gsp gss gsw gta gti gtu gu gua gub guc gud gue guf gug guh gui guk gul gum gun guo gup guq gur gus gut guu guv guw gux guz gv gva gvc gve gvf gvj gvl gvm gvn gvo gvp gvr gvs gvy gwa gwb gwc gwd gwe gwf gwg gwi gwj gwm gwn gwr gwt gwu gww gwx gxx gya gyb gyd gye gyf gyg gyi gyl gym gyn gyo gyr gyy gyz gza gzi gzn ha haa hab hac had hae haf hag hah hai haj hak hal ham han hao hap haq har has hav haw hax hay haz hba hbb hbn hbo hbu hca hch hdn hds hdy he hea hed heg heh hei hem hgm hgw hhi hhr hhy hi hia hib hid hif hig hih hii hij hik hil him hio hir hit hiw hix hji hka hke hkh hkk hkn hks hla hlb hld hle hlt hlu hma hmb hmc hmd hme hmf hmg hmh hmi hmj hmk hml hmm hmn hmp hmq hmr hms hmt hmu hmv hmw hmx hmy hmz hna hnd hne hng hnh hni hnj hnm hnn hno hns hnu ho hoa hob hoc hod hoe hoh hoi hoj hok hol hom hoo hop hor hos hot hov how hoy hoz hpo hps hr hra hrc hre hrk hrm hro hrp hrr hrt hru hrw hrx hrz hsb hsh hsl hsn hss ht hti hto hts htu htx hu hub huc hud hue huf hug huh hui huj huk hul hum huo hup huq hur hus hut huu huv huw hux huy huz hvc hve hvk hvn hvv hwa hwc hwo hy hya hyw hyx hz ia iai ian iap iar iba ibb ibd ibe ibg ibh ibi ibl ibm ibn ibr ibu iby ica ich icl icr id ida idb idc idd ide idi idr ids idt idu ie ifa ifb ife iff ifk ifm ifu ify ig igb ige igg igl igm ign igo igs igw ihb ihi ihp ihw ii iin iir ijc ije ijj ijn ijo ijs ik ike ikh iki ikk ikl iko ikp ikr iks ikt ikv ikw ikx ikz ila ilb ilg ili ilk ill ilm ilo ilp ils ilu ilv ilw ima ime imi iml imn imo imr ims imt imy in inb inc ine ing inh inj inl inm inn ino inp ins int inz io ior iou iow ipi ipo iqu iqw ira ire irh iri irk irn iro irr iru irx iry is isa isc isd ise isg ish isi isk ism isn iso isr ist isu isv it itb itc itd ite iti itk itl itm ito itr its itt itv itw itx ity itz iu ium ivb ivv iw iwk iwm iwo iws ixc ixl iya iyo iyx izh izi izm izr izz ja jaa jab jac jad jae jaf jah jaj jak jal jam jan jao jaq jar jas jat jau jax jay jaz jbe jbi jbj jbk jbm jbn jbo jbr jbt jbu jbw jcs jct jda jdg jdt jeb jee jeg jeh jei jek jel jen jer jet jeu jgb jge jgk jgo jhi jhs ji jia jib jic jid jie jig jih jii jil jim jio jiq jit jiu jiv jiy jje jjr jka jkm jko jkp jkr jks jku jle jls jma jmb jmc jmd jmi jml jmn jmr jms jmw jmx jna jnd jng jni jnj jnl jns job jod jog jor jos jow jpa jpr jpx jqr jra jrb jrr jrt jru jsl jua jub juc jud juh jui juk jul jum jun juo jup jur jus jut juu juw juy jv jvd jvn jw jwi jya jye jyy ka kaa kab kac kad kae kaf kag kah kai kaj kak kam kao kap kaq kar kav kaw kax kay kba kbb kbc kbd kbe kbf kbg kbh kbi kbj kbk kbl kbm kbn kbo kbp kbq kbr kbs kbt kbu kbv kbw kbx kby kbz kca kcb kcc kcd kce kcf kcg kch kci kcj kck kcl kcm kcn kco kcp kcq kcr kcs kct kcu kcv kcw kcx kcy kcz kda kdc kdd kde kdf kdg kdh kdi kdj kdk kdl kdm kdn kdo kdp kdq kdr kdt kdu kdv kdw kdx kdy kdz kea keb kec ked kee kef keg keh kei kej kek kel kem ken keo kep keq ker kes ket keu kev kew kex key kez kfa kfb kfc kfd kfe kff kfg kfh kfi kfj kfk kfl kfm kfn kfo kfp kfq kfr kfs kft kfu kfv kfw kfx kfy kfz kg kga kgb kgc kgd kge kgf kgg kgh kgi kgj kgk kgl kgm kgn kgo kgp kgq kgr kgs kgt kgu kgv kgw kgx kgy kha khb khc khd khe khf khg khh khi khj khk khl khn kho khp khq khr khs kht khu khv khw khx khy khz ki kia kib kic kid kie kif kig kih kii kij kil kim kio kip kiq kis kit kiu kiv kiw kix kiy kiz kj kja kjb kjc kjd kje kjf kjg kjh kji kjj kjk kjl kjm kjn kjo kjp kjq kjr kjs kjt kju kjv kjx kjy kjz kk kka kkb kkc kkd kke kkf kkg kkh kki kkj kkk kkl kkm kkn kko kkp kkq kkr kks kkt kku kkv kkw kkx kky kkz kl kla klb klc kld kle klf klg klh kli klj klk kll klm kln klo klp klq klr kls klt klu klv klw klx kly klz km kma kmb kmc kmd kme kmf kmg kmh kmi kmj kmk kml kmm kmn kmo kmp kmq kmr kms kmt kmu kmv kmw kmx kmy kmz kn kna knb knc knd kne knf kng kni knj knk knl knm knn kno knp knq knr kns knt knu knv knw knx kny knz ko koa koc kod koe kof kog koh koi koj kok kol koo kop koq kos kot kou kov kow kox koy koz kpa kpb kpc kpd kpe kpf kpg kph kpi kpj kpk kpl kpm kpn kpo kpp kpq kpr kps kpt kpu kpv kpw kpx kpy kpz kqa kqb kqc kqd kqe kqf kqg kqh kqi kqj kqk kql kqm kqn kqo kqp kqq kqr kqs kqt kqu kqv kqw kqx kqy kqz kr kra krb krc krd kre krf krh kri krj krk krl krm krn kro krp krr krs krt kru krv krw krx kry krz ks ksa ksb ksc ksd kse ksf ksg ksh ksi ksj ksk ksl ksm ksn kso ksp ksq ksr kss kst ksu ksv ksw ksx ksy ksz kta ktb ktc ktd kte ktf ktg kth kti ktj ktk ktl ktm ktn kto ktp ktq ktr kts ktt ktu ktv ktw ktx kty ktz ku kub kuc kud kue kuf kug kuh kui kuj kuk kul kum kun kuo kup kuq kus kut kuu kuv kuw kux kuy kuz kv kva kvb kvc kvd kve kvf kvg kvh kvi kvj kvk kvl kvm kvn kvo kvp kvq kvr kvs kvt kvu kvv kvw kvx kvy kvz kw kwa kwb kwc kwd kwe kwf kwg kwh kwi kwj kwk kwl kwm kwn kwo kwp kwq kwr kws kwt kwu kwv kww kwx kwy kwz kxa kxb kxc kxd kxe kxf kxh kxi kxj kxk kxl kxm kxn kxo kxp kxq kxr kxs kxt kxu kxv kxw kxx kxy kxz ky kya kyb kyc kyd kye kyf kyg kyh kyi kyj kyk kyl kym kyn kyo kyp kyq kyr kys kyt kyu kyv kyw kyx kyy kyz kza kzb kzc kzd kze kzf kzg kzh kzi kzj kzk kzl kzm kzn kzo kzp kzq kzr kzs kzt kzu kzv kzw kzx kzy kzz la laa lab lac lad lae laf lag lah lai laj lak lal lam lan lap laq lar las lau law lax lay laz lb lba lbb lbc lbe lbf lbg lbi lbj lbk lbl lbm lbn lbo lbq lbr lbs lbt lbu lbv lbw lbx lby lbz lcc lcd lce lcf lch lcl lcm lcp lcq lcs lda ldb ldd ldg ldh ldi ldj ldk ldl ldm ldn ldo ldp ldq lea leb lec led lee lef leg leh lei lej lek lel lem len leo lep leq ler les let leu lev lew lex ley lez lfa lfn lg lga lgb lgg lgh lgi lgk lgl lgm lgn lgo lgq lgr lgs lgt lgu lgz lha lhh lhi lhl lhm lhn lhp lhs lht lhu li lia lib lic lid lie lif lig lih lii lij lik lil lio lip liq lir lis liu liv liw lix liy liz lja lje lji ljl ljp ljw ljx lka lkb lkc lkd lke lkh lki lkj lkl lkm lkn lko lkr lks lkt lku lky lla llb llc lld lle llf llg llh lli llj llk lll llm lln llo llp llq lls llu llx lma lmb lmc lmd lme lmf lmg lmh lmi lmj lmk lml lmm lmn lmo lmp lmq lmr lmu lmv lmw lmx lmy lmz ln lna lnb lnd lng lnh lni lnj lnl lnm lnn lno lns lnu lnw lnz lo loa lob loc loe lof log loh loi loj lok lol lom lon loo lop loq lor los lot lou lov low lox loy loz lpa lpe lpn lpo lpx lqr lra lrc lre lrg lri lrk lrl lrm lrn lro lrr lrt lrv lrz lsa lsb lsc lsd lse lsg lsh lsi lsl lsm lsn lso lsp lsr lss lst lsv lsw lsy lt ltc ltg lth lti ltn lto lts ltu lu lua luc lud lue luf luh lui luj luk lul lum lun luo lup luq lur lus lut luu luv luw luy luz lv lva lvi lvk lvl lvs lvu lwa lwe lwg lwh lwl lwm lwo lws lwt lwu lww lxm lya lyg lyn lzh lzl lzn lzz maa mab mad mae maf mag mai maj mak mam man map maq mas mat mau mav maw max maz mba mbb mbc mbd mbe mbf mbh mbi mbj mbk mbl mbm mbn mbo mbp mbq mbr mbs mbt mbu mbv mbw mbx mby mbz mca mcb mcc mcd mce mcf mcg mch mci mcj mck mcl mcm mcn mco mcp mcq mcr mcs mct mcu mcv mcw mcx mcy mcz mda mdb mdc mdd mde mdf mdg mdh mdi mdj mdk mdl mdm mdn mdp mdq mdr mds mdt mdu mdv mdw mdx mdy mdz mea meb mec med mee mef meg meh mei mej mek mel mem men meo mep meq mer mes met meu mev mew mey mez mfa mfb mfc mfd mfe mff mfg mfh mfi mfj mfk mfl mfm mfn mfo mfp mfq mfr mfs mft mfu mfv mfw mfx mfy mfz mg mga mgb mgc mgd mge mgf mgg mgh mgi mgj mgk mgl mgm mgn mgo mgp mgq mgr mgs mgt mgu mgv mgw mgx mgy mgz mh mha mhb mhc mhd mhe mhf mhg mhh mhi mhj mhk mhl mhm mhn mho mhp mhq mhr mhs mht mhu mhw mhx mhy mhz mi mia mib mic mid mie mif mig mih mii mij mik mil mim min mio mip miq mir mis mit miu miw mix miy miz mja mjb mjc mjd mje mjg mjh mji mjj mjk mjl mjm mjn mjo mjp mjq mjr mjs mjt mju mjv mjw mjx mjy mjz mk mka mkb mkc mke mkf mkg mkh mki mkj mkk mkl mkm mkn mko mkp mkq mkr mks mkt mku mkv mkw mkx mky mkz ml mla mlb mlc mld mle mlf mlh mli mlj mlk mll mlm mln mlo mlp mlq mlr mls mlu mlv mlw mlx mlz mma mmb mmc mmd mme mmf mmg mmh mmi mmj mmk mml mmm mmn mmo mmp mmq mmr mmt mmu mmv mmw mmx mmy mmz mn mna mnb mnc mnd mne mnf mng mnh mni mnj mnk mnl mnm mnn mno mnp mnq mnr mns mnt mnu mnv mnw mnx mny mnz mo moa moc mod moe mof mog moh moi moj mok mom moo mop moq mor mos mot mou mov mow mox moy moz mpa mpb mpc mpd mpe mpg mph mpi mpj mpk mpl mpm mpn mpo mpp mpq mpr mps mpt mpu mpv mpw mpx mpy mpz mqa mqb mqc mqe mqf mqg mqh mqi mqj mqk mql mqm mqn mqo mqp mqq mqr mqs mqt mqu mqv mqw mqx mqy mqz mr mra mrb mrc mrd mre mrf mrg mrh mrj mrk mrl mrm mrn mro mrp mrq mrr mrs mrt mru mrv mrw mrx mry mrz ms msb msc msd mse msf msg msh msi msj msk msl msm msn mso msp msq msr mss mst msu msv msw msx msy msz mt mta mtb mtc mtd mte mtf mtg mth mti mtj mtk mtl mtm mtn mto mtp mtq mtr mts mtt mtu mtv mtw mtx mty mua mub muc mud mue mug muh mui muj muk mul mum mun muo mup muq mur mus mut muu muv mux muy muz mva mvb mvd mve mvf mvg mvh mvi mvk mvl mvm mvn mvo mvp mvq mvr mvs mvt mvu mvv mvw mvx mvy mvz mwa mwb mwc mwd mwe mwf mwg mwh mwi mwj mwk mwl mwm mwn mwo mwp mwq mwr mws mwt mwu mwv mww mwx mwy mwz mxa mxb mxc mxd mxe mxf mxg mxh mxi mxj mxk mxl mxm mxn mxo mxp mxq mxr mxs mxt mxu mxv mxw mxx mxy mxz my myb myc myd mye myf myg myh myi myj myk myl mym myn myo myp myq myr mys myt myu myv myw myx myy myz mza mzb mzc mzd mze mzg mzh mzi mzj mzk mzl mzm mzn mzo mzp mzq mzr mzs mzt mzu mzv mzw mzx mzy mzz na naa nab nac nad nae naf nag nah nai naj nak nal nam nan nao nap naq nar nas nat naw nax nay naz nb nba nbb nbc nbd nbe nbf nbg nbh nbi nbj nbk nbm nbn nbo nbp nbq nbr nbs nbt nbu nbv nbw nbx nby nca ncb ncc ncd nce ncf ncg nch nci ncj nck ncl ncm ncn nco ncp ncq ncr ncs nct ncu ncx ncz nd nda ndb ndc ndd ndf ndg ndh ndi ndj ndk ndl ndm ndn ndp ndq ndr nds ndt ndu ndv ndw ndx ndy ndz ne nea neb nec ned nee nef neg neh nei nej nek nem nen neo neq ner nes net neu nev new nex ney nez nfa nfd nfl nfr nfu ng nga ngb ngc ngd nge ngf ngg ngh ngi ngj ngk ngl ngm ngn ngo ngp ngq ngr ngs ngt ngu ngv ngw ngx ngy ngz nha nhb nhc nhd nhe nhf nhg nhh nhi nhk nhm nhn nho nhp nhq nhr nht nhu nhv nhw nhx nhy nhz nia nib nic nid nie nif nig nih nii nij nik nil nim nin nio niq nir nis nit niu niv niw nix niy niz nja njb njd njh nji njj njl njm njn njo njr njs njt nju njx njy njz nka nkb nkc nkd nke nkf nkg nkh nki nkj nkk nkm nkn nko nkp nkq nkr nks nkt nku nkv nkw nkx nkz nl nla nlc nle nlg nli nlj nlk nll nlm nln nlo nlq nlr nlu nlv nlw nlx nly nlz nma nmb nmc nmd nme nmf nmg nmh nmi nmj nmk nml nmm nmn nmo nmp nmq nmr nms nmt nmu nmv nmw nmx nmy nmz nn nna nnb nnc nnd nne nnf nng nnh nni nnj nnk nnl nnm nnn nnp nnq nnr nns nnt nnu nnv nnw nnx nny nnz no noa noc nod noe nof nog noh noi noj nok nol nom non noo nop noq nos not nou nov now noy noz npa npb npg nph npi npl npn npo nps npu npx npy nqg nqk nql nqm nqn nqo nqq nqt nqy nr nra nrb nrc nre nrf nrg nri nrk nrl nrm nrn nrp nrr nrt nru nrx nrz nsa nsb nsc nsd nse nsf nsg nsh nsi nsk nsl nsm nsn nso nsp nsq nsr nss nst nsu nsv nsw nsx nsy nsz ntd nte ntg nti ntj ntk ntm nto ntp ntr nts ntu ntw ntx nty ntz nua nub nuc nud nue nuf nug nuh nui nuj nuk nul num nun nuo nup nuq nur nus nut nuu nuv nuw nux nuy nuz nv nvh nvm nvo nwa nwb nwc nwe nwg nwi nwm nwo nwr nww nwx nwy nxa nxd nxe nxg nxi nxk nxl nxm nxn nxo nxq nxr nxu nxx ny nyb nyc nyd nye nyf nyg nyh nyi nyj nyk nyl nym nyn nyo nyp nyq nyr nys nyt nyu nyv nyw nyx nyy nza nzb nzd nzi nzk nzm nzr nzs nzu nzy nzz oaa oac oak oar oav obi obk obl obm obo obr obt obu oc oca och ocm oco ocu oda odk odt odu ofo ofs ofu ogb ogc oge ogg ogo ogu oht ohu oia oie oin oj ojb ojc ojg ojp ojs ojv ojw oka okb okc okd oke okg okh oki okj okk okl okm okn oko okr oks oku okv okx okz ola old ole olk olm olo olr olt olu om oma omb omc ome omg omi omk oml omn omo omp omq omr omt omu omv omw omx omy ona onb one ong oni onj onk onn ono onp onr ons ont onu onw onx ood oog oon oor oos opa opk opm opo opt opy or ora orc ore org orh orn oro orr ors ort oru orv orw orx ory orz os osa osc osi osn oso osp ost osu osx ota otb otd ote oti otk otl otm otn oto otq otr ots ott otu otw otx oty otz oua oub oue oui oum oun ovd owi owl oyb oyd oym oyy ozm pa paa pab pac pad pae paf pag pah pai pak pal pam pao pap paq par pas pat pau pav paw pax pay paz pbb pbc pbe pbf pbg pbh pbi pbl pbm pbn pbo pbp pbr pbs pbt pbu pbv pby pbz pca pcb pcc pcd pce pcf pcg pch pci pcj pck pcl pcm pcn pcp pcr pcw pda pdc pdi pdn pdo pdt pdu pea peb ped pee pef peg peh pei pej pek pel pem peo pep peq pes pev pex pey pez pfa pfe pfl pga pgd pgg pgi pgk pgl pgn pgs pgu pgy pgz pha phd phg phh phi phj phk phl phm phn pho phq phr pht phu phv phw pi pia pib pic pid pie pif pig pih pii pij pil pim pin pio pip pir pis pit piu piv piw pix piy piz pjt pka pkb pkc pkg pkh pkn pko pkp pkr pks pkt pku pl pla plb plc pld ple plf plg plh plj plk pll pln plo plp plq plr pls plt plu plv plw ply plz pma pmb pmc pmd pme pmf pmh pmi pmj pmk pml pmm pmn pmo pmq pmr pms pmt pmu pmw pmx pmy pmz pna pnb pnc pnd pne png pnh pni pnj pnk pnl pnm pnn pno pnp pnq pnr pns pnt pnu pnv pnw pnx pny pnz poc pod poe pof pog poh poi pok pom pon poo pop poq pos pot pov pow pox poy poz ppa ppe ppi ppk ppl ppm ppn ppo ppp ppq ppr pps ppt ppu pqa pqe pqm pqw pra prb prc prd pre prf prg prh pri prk prl prm prn pro prp prq prr prs prt pru prw prx pry prz ps psa psc psd pse psg psh psi psl psm psn pso psp psq psr pss pst psu psw psy pt pta pth pti ptn pto ptp ptq ptr ptt ptu ptv ptw pty pua pub puc pud pue puf pug pui puj puk pum puo pup puq pur put puu puw pux puy puz pwa pwb pwg pwi pwm pwn pwo pwr pww pxm pye pym pyn pys pyu pyx pyy pze pzh pzn qaa..qtz qu qua qub quc qud quf qug quh qui quk qul qum qun qup quq qur qus quv quw qux quy quz qva qvc qve qvh qvi qvj qvl qvm qvn qvo qvp qvs qvw qvy qvz qwa qwc qwe qwh qwm qws qwt qxa qxc qxh qxl qxn qxo qxp qxq qxr qxs qxt qxu qxw qya qyp raa rab rac rad raf rag rah rai raj rak ral ram ran rao rap raq rar ras rat rau rav raw rax ray raz rbb rbk rbl rbp rcf rdb rea reb ree reg rei rej rel rem ren rer res ret rey rga rge rgk rgn rgr rgs rgu rhg rhp ria rib rie rif ril rim rin rir rit riu rjg rji rjs rka rkb rkh rki rkm rkt rkw rm rma rmb rmc rmd rme rmf rmg rmh rmi rmk rml rmm rmn rmo rmp rmq rmr rms rmt rmu rmv rmw rmx rmy rmz rn rna rnb rnd rng rnl rnn rnp rnr rnw ro roa rob roc rod roe rof rog rol rom roo rop ror rou row rpn rpt rri rrm rro rrt rsb rsi rsk rsl rsm rsn rsw rtc rth rtm rts rtw ru rub ruc rue ruf rug ruh rui ruk ruo rup ruq rut ruu ruy ruz rw rwa rwk rwl rwm rwo rwr rxd rxw ryn rys ryu rzh sa saa sab sac sad sae saf sah sai saj sak sal sam sao sap saq sar sas sat sau sav saw sax say saz sba sbb sbc sbd sbe sbf sbg sbh sbi sbj sbk sbl sbm sbn sbo sbp sbq sbr sbs sbt sbu sbv sbw sbx sby sbz sc sca scb sce scf scg sch sci sck scl scn sco scp scq scs sct scu scv scw scx sd sda sdb sdc sde sdf sdg sdh sdj sdk sdl sdm sdn sdo sdp sdq sdr sds sdt sdu sdv sdx sdz se sea seb sec sed see sef seg seh sei sej sek sel sem sen seo sep seq ser ses set seu sev sew sey sez sfb sfe sfm sfs sfw sg sga sgb sgc sgd sge sgg sgh sgi sgj sgk sgl sgm sgn sgo sgp sgr sgs sgt sgu sgw sgx sgy sgz sh sha shb shc shd she shg shh shi shj shk shl shm shn sho shp shq shr shs sht shu shv shw shx shy shz si sia sib sid sie sif sig sih sii sij sik sil sim sio sip siq sir sis sit siu siv siw six siy siz sja sjb sjc sjd sje sjg sjk sjl sjm sjn sjo sjp sjr sjs sjt sju sjw sk ska skb skc skd ske skf skg skh ski skj skk skm skn sko skp skq skr sks skt sku skv skw skx sky skz sl sla slc sld sle slf slg slh sli slj sll slm sln slp slq slr sls slt slu slw slx sly slz sm sma smb smc smd smf smg smh smi smj smk sml smm smn smp smq smr sms smt smu smv smw smx smy smz sn snb snc sne snf sng snh sni snj snk snl snm snn sno snp snq snr sns snu snv snw snx sny snz so soa sob soc sod soe sog soh soi soj sok sol son soo sop soq sor sos sou sov sow sox soy soz spb spc spd spe spg spi spk spl spm spn spo spp spq spr sps spt spu spv spx spy sq sqa sqh sqj sqk sqm sqn sqo sqq sqr sqs sqt squ sqx sr sra srb src sre srf srg srh sri srk srl srm srn sro srq srr srs srt sru srv srw srx sry srz ss ssa ssb ssc ssd sse ssf ssg ssh ssi ssj ssk ssl ssm ssn sso ssp ssq ssr sss sst ssu ssv ssx ssy ssz st sta stb std ste stf stg sth sti stj stk stl stm stn sto stp stq str sts stt stu stv stw sty su sua sub suc sue sug sui suj suk sul sum suo suq sur sus sut suv suw sux suy suz sv sva svb svc sve svk svm svr svs svx sw swb swc swf swg swh swi swj swk swl swm swn swo swp swq swr sws swt swu swv sww swx swy sxb sxc sxe sxg sxk sxl sxm sxn sxo sxr sxs sxu sxw sya syb syc syd syi syk syl sym syn syo syr sys syw syx syy sza szb szc szd sze szg szl szn szp szs szv szw szy ta taa tab tac tad tae taf tag tai taj tak tal tan tao tap taq tar tas tau tav taw tax tay taz tba tbb tbc tbd tbe tbf tbg tbh tbi tbj tbk tbl tbm tbn tbo tbp tbq tbr tbs tbt tbu tbv tbw tbx tby tbz tca tcb tcc tcd tce tcf tcg tch tci tck tcl tcm tcn tco tcp tcq tcs tct tcu tcw tcx tcy tcz tda tdb tdc tdd tde tdf tdg tdh tdi tdj tdk tdl tdm tdn tdo tdq tdr tds tdt tdu tdv tdx tdy te tea teb tec ted tee tef teg teh tei tek tem ten teo tep teq ter tes tet teu tev tew tex tey tez tfi tfn tfo tfr tft tg tga tgb tgc tgd tge tgf tgg tgh tgi tgj tgn tgo tgp tgq tgr tgs tgt tgu tgv tgw tgx tgy tgz th thc thd the thf thh thi thk thl thm thn thp thq thr ths tht thu thv thw thx thy thz ti tia tic tid tie tif tig tih tii tij tik til tim tin tio tip tiq tis tit tiu tiv tiw tix tiy tiz tja tjg tji tjj tjl tjm tjn tjo tjp tjs tju tjw tk tka tkb tkd tke tkf tkg tkk tkl tkm tkn tkp tkq tkr tks tkt tku tkv tkw tkx tkz tl tla tlb tlc tld tlf tlg tlh tli tlj tlk tll tlm tln tlo tlp tlq tlr tls tlt tlu tlv tlw tlx tly tma tmb tmc tmd tme tmf tmg tmh tmi tmj tmk tml tmm tmn tmo tmp tmq tmr tms tmt tmu tmv tmw tmy tmz tn tna tnb tnc tnd tne tnf tng tnh tni tnk tnl tnm tnn tno tnp tnq tnr tns tnt tnu tnv tnw tnx tny tnz to tob toc tod toe tof tog toh toi toj tok tol tom too top toq tor tos tou tov tow tox toy toz tpa tpc tpe tpf tpg tpi tpj tpk tpl tpm tpn tpo tpp tpq tpr tpt tpu tpv tpw tpx tpy tpz tqb tql tqm tqn tqo tqp tqq tqr tqt tqu tqw tr tra trb trc trd tre trf trg trh tri trj trk trl trm trn tro trp trq trr trs trt tru trv trw trx try trz ts tsa tsb tsc tsd tse tsf tsg tsh tsi tsj tsk tsl tsm tsp tsq tsr tss tst tsu tsv tsw tsx tsy tsz tt tta ttb ttc ttd tte ttf ttg tth tti ttj ttk ttl ttm ttn tto ttp ttq ttr tts ttt ttu ttv ttw tty ttz tua tub tuc tud tue tuf tug tuh tui tuj tul tum tun tuo tup tuq tus tut tuu tuv tuw tux tuy tuz tva tvd tve tvi tvk tvl tvm tvn tvo tvs tvt tvu tvw tvx tvy tw twa twb twc twd twe twf twg twh twl twm twn two twp twq twr twt twu tww twx twy txa txb txc txe txg txh txi txj txm txn txo txq txr txs txt txu txx txy ty tya tye tyh tyi tyj tyl tyn typ tyr tys tyt tyu tyv tyx tyy tyz tza tzh tzj tzl tzm tzn tzo tzx uam uan uar uba ubi ubl ubr ubu uby uda ude udg udi udj udl udm udu ues ufi ug uga ugb uge ugh ugn ugo ugy uha uhn uis uiv uji uk uka ukg ukh uki ukk ukl ukp ukq uks uku ukv ukw uky ula ulb ulc ule ulf uli ulk ull ulm uln ulu ulw uly uma umb umc umd umg umi umm umn umo ump umr ums umu una und une ung uni unk unm unn unp unr unu unx unz uok uon upi upv ur ura urb urc ure urf urg urh uri urj urk url urm urn uro urp urr urt uru urv urw urx ury urz usa ush usi usk usp uss usu uta ute uth utp utr utu uum uun uur uuu uve uvh uvl uwa uya uz uzn uzs vaa vae vaf vag vah vai vaj val vam van vao vap var vas vau vav vay vbb vbk ve vec ved vel vem veo vep ver vgr vgt vi vic vid vif vig vil vin vis vit viv vjk vka vki vkj vkk vkl vkm vkn vko vkp vkt vku vkz vlp vls vma vmb vmc vmd vme vmf vmg vmh vmi vmj vmk vml vmm vmp vmq vmr vms vmu vmv vmw vmx vmy vmz vnk vnm vnp vo vor vot vra vro vrs vrt vsi vsl vsn vsv vto vum vun vut vwa wa waa wab wac wad wae waf wag wah wai waj wak wal wam wan wao wap waq war was wat wau wav waw wax way waz wba wbb wbe wbf wbh wbi wbj wbk wbl wbm wbp wbq wbr wbs wbt wbv wbw wca wci wdd wdg wdj wdk wdt wdu wdy wea wec wed weg weh wei wem wen weo wep wer wes wet weu wew wfg wga wgb wgg wgi wgo wgu wgw wgy wha whg whk whu wib wic wie wif wig wih wii wij wik wil wim win wir wit wiu wiv wiw wiy wja wji wka wkb wkd wkl wkr wku wkw wky wla wlc wle wlg wlh wli wlk wll wlm wlo wlr wls wlu wlv wlw wlx wly wma wmb wmc wmd wme wmg wmh wmi wmm wmn wmo wms wmt wmw wmx wnb wnc wnd wne wng wni wnk wnm wnn wno wnp wnu wnw wny wo woa wob woc wod woe wof wog woi wok wom won woo wor wos wow woy wpc wra wrb wrd wrg wrh wri wrk wrl wrm wrn wro wrp wrr wrs wru wrv wrw wrx wry wrz wsa wsg wsi wsk wsr wss wsu wsv wtb wtf wth wti wtk wtm wtw wua wub wud wuh wul wum wun wur wut wuu wuv wux wuy wwa wwb wwo wwr www wxa wxw wya wyb wyi wym wyn wyr wyy xaa xab xac xad xae xag xai xaj xak xal xam xan xao xap xaq xar xas xat xau xav xaw xay xba xbb xbc xbd xbe xbg xbi xbj xbm xbn xbo xbp xbr xbw xbx xby xcb xcc xce xcg xch xcl xcm xcn xco xcr xct xcu xcv xcw xcy xda xdc xdk xdm xdo xdq xdy xeb xed xeg xel xem xep xer xes xet xeu xfa xga xgb xgd xgf xgg xgi xgl xgm xgn xgr xgu xgw xh xha xhc xhd xhe xhm xhr xht xhu xhv xia xib xii xil xin xip xir xis xiv xiy xjb xjt xka xkb xkc xkd xke xkf xkg xkh xki xkj xkk xkl xkn xko xkp xkq xkr xks xkt xku xkv xkw xkx xky xkz xla xlb xlc xld xle xlg xli xln xlo xlp xls xlu xly xma xmb xmc xmd xme xmf xmg xmh xmj xmk xml xmm xmn xmo xmp xmq xmr xms xmt xmu xmv xmw xmx xmy xmz xna xnb xnd xng xnh xni xnj xnk xnm xnn xno xnq xnr xns xnt xnu xny xnz xoc xod xog xoi xok xom xon xoo xop xor xow xpa xpb xpc xpd xpe xpf xpg xph xpi xpj xpk xpl xpm xpn xpo xpp xpq xpr xps xpt xpu xpv xpw xpx xpy xpz xqa xqt xra xrb xrd xre xrg xri xrm xrn xrq xrr xrt xru xrw xsa xsb xsc xsd xse xsh xsi xsj xsl xsm xsn xso xsp xsq xsr xss xsu xsv xsy xta xtb xtc xtd xte xtg xth xti xtj xtl xtm xtn xto xtp xtq xtr xts xtt xtu xtv xtw xty xtz xua xub xud xug xuj xul xum xun xuo xup xur xut xuu xve xvi xvn xvo xvs xwa xwc xwd xwe xwg xwj xwk xwl xwo xwr xwt xww xxb xxk xxm xxr xxt xya xyb xyj xyk xyl xyt xyy xzh xzm xzp yaa yab yac yad yae yaf yag yah yai yaj yak yal yam yan yao yap yaq yar yas yat yau yav yaw yax yay yaz yba ybb ybd ybe ybh ybi ybj ybk ybl ybm ybn ybo ybx yby ych ycl ycn ycp ycr yda ydd yde ydg ydk yds yea yec yee yei yej yel yen yer yes yet yeu yev yey yga ygi ygl ygm ygp ygr ygs ygu ygw yha yhd yhl yhs yi yia yif yig yih yii yij yik yil yim yin yip yiq yir yis yit yiu yiv yix yiy yiz yka ykg ykh yki ykk ykl ykm ykn yko ykr ykt yku yky yla ylb yle ylg yli yll ylm yln ylo ylr ylu yly yma ymb ymc ymd yme ymg ymh ymi ymk yml ymm ymn ymo ymp ymq ymr yms ymt ymx ymz yna ynb ynd yne yng ynh ynk ynl ynn yno ynq yns ynu yo yob yog yoi yok yol yom yon yos yot yox yoy ypa ypb ypg yph ypk ypm ypn ypo ypp ypz yra yrb yre yri yrk yrl yrm yrn yro yrs yrw yry ysc ysd ysg ysl ysm ysn yso ysp ysr yss ysy yta ytl ytp ytw yty yua yub yuc yud yue yuf yug yui yuj yuk yul yum yun yup yuq yur yut yuu yuw yux yuy yuz yva yvt ywa ywg ywl ywn ywq ywr ywt ywu yww yxa yxg yxl yxm yxu yxy yyr yyu yyz yzg yzk za zaa zab zac zad zae zaf zag zah zai zaj zak zal zam zao zap zaq zar zas zat zau zav zaw zax zay zaz zba zbc zbe zbl zbt zbu zbw zca zcd zch zdj zea zeg zeh zem zen zga zgb zgh zgm zgn zgr zh zhb zhd zhi zhn zhw zhx zia zib zik zil zim zin zir ziw ziz zka zkb zkd zkg zkh zkk zkn zko zkp zkr zkt zku zkv zkz zla zle zlj zlm zln zlq zls zlu zlw zma zmb zmc zmd zme zmf zmg zmh zmi zmj zmk zml zmm zmn zmo zmp zmq zmr zms zmt zmu zmv zmw zmx zmy zmz zna znd zne zng znk zns zoc zoh zom zoo zoq zor zos zpa zpb zpc zpd zpe zpf zpg zph zpi zpj zpk zpl zpm zpn zpo zpp zpq zpr zps zpt zpu zpv zpw zpx zpy zpz zqe zra zrg zrn zro zrp zrs zsa zsk zsl zsm zsr zsu zte ztg ztl ztm ztn ztp ztq zts ztt ztu ztx zty zu zua zuh zum zun zuy zwa zxx zyb zyg zyj zyn zyp zza zzj";let n=null;function e(S){return n||(n=new Set(t.split(" "))),n.has(String(S||"").toLowerCase())}function w(S){const R=String(S??"").trim();return!R||!/^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{1,8})*$/.test(R)?!1:e(R.split("-")[0])}const u=o&&o.document?o.document:null,k=o&&o.window?o.window:null,h=k||u&&u.defaultView||null,v=(()=>{const S=o&&o.root;return Array.isArray(S)?S.filter(R=>R&&typeof R=="object"):S&&typeof S=="object"?[S]:[]})(),A=!(o&&o.includeShadowDom===!1),p=!!(o&&o.includeHiddenElements===!0),m=Array.isArray(o&&o.excludeSelectors)?o.excludeSelectors:[],s=!!(o&&o.fragment===!0);var c=[];function d(){return c.length?m.concat(c):m}function f(S){c=bn(S)}function g(){return(A?"sd1":"sd0")+"|"+d().slice().sort().join(",")}var i={},a=null,r=null,l=null,y=null,b=null,_=null,I=null,x=null,C=null,N=0,L=40;const D=!!(o&&o.perfStats),F=D?{enabled:!0,counters:Object.create(null)}:null;function E(S,R){if(!D||!F)return;const M=String(S),j=R==null?1:Number(R)||0;F.counters[M]=(F.counters[M]||0)+j}function P(){return!D||!F?{enabled:!1,counters:{}}:{enabled:!0,counters:{...F.counters}}}function z(){!D||!F||(F.counters=Object.create(null))}const H=h||k,W=S=>{try{return H&&H.CSS&&typeof H.CSS.escape=="function"?H.CSS.escape(String(S)):String(S)}catch{return String(S)}};function X(S){const R=String(S),M=R.length,j=R.charCodeAt(0);if(M===1&&j===45)return"\\"+R;let K="";for(let Z=0;Z<M;Z++){const J=R.charCodeAt(Z);if(J===0){K+="�";continue}if(J>=1&&J<=31||J===127||Z===0&&J>=48&&J<=57||Z===1&&J>=48&&J<=57&&j===45){K+="\\"+J.toString(16)+" ";continue}if(J>=128||J===45||J===95||J>=48&&J<=57||J>=65&&J<=90||J>=97&&J<=122){K+=R.charAt(Z);continue}K+="\\"+R.charAt(Z)}return K}const oe=S=>{try{if(H&&H.CSS&&typeof H.CSS.escape=="function")return H.CSS.escape(String(S))}catch{}return X(S)},q=S=>String(S).replace(/\\/g,"\\\\").replace(/"/g,'\\"'),O=S=>!!S&&S.nodeType===1,B=S=>{const R=Ge();let M=null;try{if(U&&R&&S&&typeof S=="object"&&(M=U.get(R)||null,M&&M.has(S))){E("computedStyle.hit");const K=M.get(S);return K&&typeof K=="object"?K:{}}}catch{}E("computedStyle.miss");let j;try{const K=h||k;j=K&&K.getComputedStyle?K.getComputedStyle(S):S&&S.style||{}}catch{j={}}try{U&&R&&S&&typeof S=="object"&&(M||(M=U.get(R)||null,M||(M=new WeakMap,U.set(R,M))),M.set(S,j))}catch{E("computedStyle.nocache")}return j&&typeof j=="object"?j:{}},G=()=>{if(!u||!u.querySelectorAll)return[];ee||E("modalDialogs.nocache");try{if(ee){const R=ee.get(u);if(R)return E("modalDialogs.hit"),R;E("modalDialogs.miss")}}catch{E("modalDialogs.nocache")}let S=[];try{const R=u.querySelectorAll('dialog[open][aria-modal="true"]');for(const M of R)S.push(M)}catch{S=[]}try{ee&&ee.set(u,S)}catch{}return S},ne=S=>S?S.assignedSlot?S.assignedSlot:S.parentNode?S.parentNode:S.host||null:null,ie=S=>{if(!S)return[];try{if(bt&&typeof bt.get=="function"){const K=bt.get(S);if(K)return E("ancestorsIncludingSelf.hit"),K;E("ancestorsIncludingSelf.miss");const Z=[];let J=S,$=0;for(;J&&$++<200;)Z.push(J),J=ne(J);return J&&(Z.truncated=!0,E("ancestorsIncludingSelf.truncated")),bt.set(S,Z),Z}}catch{}E("ancestorsIncludingSelf.nocache");const R=[];let M=S,j=0;for(;M&&j++<200;)R.push(M),M=ne(M);return M&&(R.truncated=!0,E("ancestorsIncludingSelf.truncated")),R};function ue(S){try{return!S||typeof S!="object"?!1:ie(S).truncated===!0}catch{return!1}}function fe(S){try{return O(S)&&S.closest?S.closest("map"):null}catch{return null}}function we(S){if(!O(S))return!1;const M=(S.tagName||"").toLowerCase()==="area";let j=null;M&&(j=fe(S));const K=ie(S);for(const Z of K)if(O(Z)&&!(M&&(Z===S||j&&Z===j))&&Z.hasAttribute&&Z.hasAttribute("inert"))return!0;return!1}const te=S=>(S==null?"":String(S)).trim(),be=(S,R)=>{try{return S&&S.getAttribute?S.getAttribute(R):null}catch{return null}};function Ve(S){const R=be(S,"tabindex"),M=te(R);if(R==null||M==="")return{has:!1,value:null,valid:!1};const j=Number(M);return Number.isNaN(j)?{has:!0,value:null,valid:!1}:{has:!0,value:j,valid:!0}}function Ne(S){try{if(pt&&S&&typeof S=="object"&&pt.has(S)){E("focusability.hit");const M=pt.get(S);if(M&&typeof M=="object")return{focusable:!!M.focusable,tabbable:!!M.tabbable,mechanism:M.mechanism||"none",flags:Array.isArray(M.flags)?M.flags.slice(0):[]}}}catch{}E("focusability.miss");let R;if(!O(S))R={focusable:!1,tabbable:!1,mechanism:"none",flags:["notElement"]};else if(we(S))R={focusable:!1,tabbable:!1,mechanism:"none",flags:["inert"]};else{const M=[];if(!!(S.matches&&S.matches(":disabled")))R={focusable:!1,tabbable:!1,mechanism:"disabled",flags:["disabled"]};else{const K=Ve(S);K.has?K.valid?K.value<0?R={focusable:!0,tabbable:!1,mechanism:"tabindex",flags:["tabindex-negative"]}:R={focusable:!0,tabbable:!0,mechanism:"tabindex",flags:["tabindex-nonnegative"]}:R={focusable:!1,tabbable:!1,mechanism:"tabindex",flags:["tabindex-invalid"]}:je(S)?R={focusable:!0,tabbable:!0,mechanism:"native",flags:M}:R={focusable:!1,tabbable:!1,mechanism:"none",flags:M}}}try{pt&&S&&typeof S=="object"&&pt.set(S,{focusable:!!R.focusable,tabbable:!!R.tabbable,mechanism:R.mechanism||"none",flags:Array.isArray(R.flags)?R.flags.slice(0):[]})}catch{}return{focusable:!!R.focusable,tabbable:!!R.tabbable,mechanism:R.mechanism||"none",flags:Array.isArray(R.flags)?R.flags.slice(0):[]}}function Me(S,R){const M=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const j=te(be(S,R));return j?{present:!0,value:j,mechanism:R,flags:M}:{present:!1,value:"",mechanism:R,flags:["empty"]}}function We(S){const R=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const M=te(be(S,"aria-label"));return M?{present:!0,value:M,mechanism:"aria-label",flags:R}:{present:!1,value:"",mechanism:"aria-label",flags:["empty"]}}function De(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const K=te(be(S,"aria-labelledby"));if(!K)return{present:!1,value:"",mechanism:"aria-labelledby",flags:["missing"]};const Z=xt(K,R,M);for(const J of Z.flags)j.push(J);return Z.text||j.push("empty"),{present:!!Z.text,value:Z.text||"",mechanism:"aria-labelledby",refsCount:Z.refsCount,missing:Z.missing?Z.missing.slice(0):[],flags:j}}function Xe(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const K=De(S,R,M);if(K.present&&K.value)return{present:!0,value:K.value,mechanism:"aria-labelledby",flags:j.concat(K.flags||[])};const Z=We(S);return Z.present&&Z.value?{present:!0,value:Z.value,mechanism:"aria-label",flags:j.concat(Z.flags||[])}:(te(be(S,"aria-labelledby"))&&j.push("aria-labelledby-empty-or-unresolvable"),be(S,"aria-label")!=null&&!te(be(S,"aria-label"))&&j.push("aria-label-empty"),{present:!1,value:"",mechanism:"none",flags:j})}function _t(S,R){if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const M=Xe(S,R);if(M.present&&M.value)return M;const j=te(be(S,"title"));return j?{present:!0,value:j,mechanism:"title",flags:M.flags||[]}:{present:!1,value:"",mechanism:"none",flags:(M.flags||[]).concat(j===""&&be(S,"title")!=null?["title-empty"]:[])}}const re=S=>te(S).toLowerCase(),Ae=S=>{const R=te(S);if(!R)return null;try{if(l&&l.has(R))return E("idLookup.doc.hit"),l.get(R)||null}catch{}E("idLookup.doc.miss");let M=null;try{u&&u.getElementById&&(M=u.getElementById(R))}catch{M=null}try{l&&l.set(R,M||null)}catch{}return M||null},xe=S=>{const R=te(S);if(!R||!v.length)return null;try{const j="#"+R;if(y&&y.has(j))return E("idLookup.root.hit"),y.get(j)||null}catch{}E("idLookup.root.miss");let M=null;for(const j of v)if(!(!j||!j.querySelector)){try{M=j.querySelector("#"+R)}catch{M=null}if(M)break}try{const j="#"+R;y&&y.set(j,M||null)}catch{}return M||null};function Ee(S){try{if(!O(S))return!1;const R=S.closest&&S.closest("summary");if(R&&R.contains(S))return!1;const M=S.closest&&S.closest("details");if(M&&M!==S&&!M.hasAttribute("open"))return!0}catch{}return!1}function je(S){if(!O(S)||we(S))return!1;const R=(S.tagName||"").toLowerCase(),M=S.getAttribute&&(S.getAttribute("type")||"").toLowerCase()||"";if(!!(S.matches&&S.matches(":disabled")))return!1;if(R==="a"){const Z=S.getAttribute&&S.getAttribute("href");if(Z&&Z.trim())return!0}if(R==="area"){const Z=fe(S);if(Z){const J=(Z.getAttribute&&(Z.getAttribute("name")||Z.getAttribute("id")||"")).trim();if(J&&u&&u.querySelector){const Y=W(J),Q=[`img[usemap="#${Y}" i]`,`img[usemap="${Y}" i]`];for(const se of Q)try{if(u.querySelector(se))return!0}catch{}}}}if(R==="input"&&M!=="hidden"||R==="select"||R==="textarea"||R==="button"||R==="summary"||S.hasAttribute&&S.hasAttribute("contenteditable")&&re(be(S,"contenteditable"))!=="false")return!0;const K=S.getAttribute&&S.getAttribute("tabindex");return K!=null&&String(K).trim()!==""&&!Number.isNaN(Number(K))}function Re(S){if(!S||!S.querySelectorAll)return null;if(!_)return E("idrefReverseIndex.nocache"),null;try{const j=_.get(S);if(j)return E("idrefReverseIndex.hit"),j}catch{return E("idrefReverseIndex.nocache"),null}E("idrefReverseIndex.miss");const R=new Map;let M;try{M=Array.from(S.querySelectorAll("[aria-labelledby],[aria-describedby]"))}catch{M=[]}for(const j of M){if(!O(j))continue;const K=te(be(j,"aria-labelledby")),Z=te(be(j,"aria-describedby")),J=new Set;if(K){const $=K.split(/\s+/).filter(Boolean);for(const Y of $){const Q=te(Y);if(!Q||J.has(Q))continue;J.add(Q);const se=R.get(Q);se?se.push(j):R.set(Q,[j])}}if(Z){const $=Z.split(/\s+/).filter(Boolean);for(const Y of $){const Q=te(Y);if(!Q||J.has(Q))continue;J.add(Q);const se=R.get(Q);se?se.push(j):R.set(Q,[j])}}}try{_.set(S,R),E("idrefReverseIndex.build")}catch{}return R}function tt(S){if(!u||!O(S))return!1;const R=S.getAttribute&&S.getAttribute("id"),M=R&&R.trim?R.trim():"";if(!M)return!1;const j=Re(u);if(j&&typeof j.get=="function"){let $;try{$=j.get(M)||null}catch{$=null}if($&&$.length){for(const Y of $){if(!O(Y))continue;const Q=ot(Y);if(Q&&Q.eligible)return!0}return!1}return!1}const Z=W(M);let J;try{J=[...Array.from(u.querySelectorAll('[aria-labelledby~="'+Z+'"]')),...Array.from(u.querySelectorAll('[aria-describedby~="'+Z+'"]'))]}catch{J=[]}for(const $ of J){if(!O($))continue;const Y=ot($);if(Y&&Y.eligible)return!0}return!1}function et(S){const R=d();if(!R.length||!S||!S.matches)return!1;const M=ht();if(M){const K=M.get(S);if(K!==void 0)return E("excluded.hit"),K;E("excluded.miss")}let j=!1;for(let K=0;K<R.length;K++)try{if(S.matches(R[K])){j=!0;break}}catch{}if(!j){const K=S.parentElement;j=K?et(K):!1}if(M)try{M.set(S,j)}catch{}return j}function it(S){if(!v.length)return[];const R=[],M=new Set;for(const j of v)if(j){if(j.nodeType===1&&typeof j.matches=="function"&&!M.has(j))try{j.matches(S)&&(M.add(j),R.push(j))}catch{}try{const K=j.querySelectorAll(S);for(const Z of K)Z&&!M.has(Z)&&(M.add(Z),R.push(Z))}catch{}}return R}function Dt(S){if(!v.length)return[];const R=[],M=new Set,j=new Set,K=$=>{if(!$||!$.querySelectorAll)return;let Y;try{Y=$.querySelectorAll(S)}catch{Y=[]}for(const Q of Y)Q&&!M.has(Q)&&!et(Q)&&(M.add(Q),R.push(Q));if($.nodeType===1&&typeof $.matches=="function"&&!M.has($)&&!et($))try{$.matches(S)&&(M.add($),R.push($))}catch{}},Z=$=>{if(!$||!$.querySelectorAll)return[];if(!d().length&&x)try{const se=x.get($);if(se)return E("shadowRoots.hit"),se;E("shadowRoots.miss");let ae=[];try{ae=$.querySelectorAll("*")}catch{ae=[]}const ge=[];for(const me of ae){if(!me||me.nodeType!==1)continue;const ve=me.shadowRoot;ve&&ge.push(ve)}try{x.set($,ge)}catch{E("shadowRoots.nocache")}return ge}catch{E("shadowRoots.nocache")}else E("shadowRoots.nocache");let Y;try{Y=$.querySelectorAll("*")}catch{Y=[]}const Q=[];for(const se of Y){if(!se||se.nodeType!==1||et(se))continue;const ae=se.shadowRoot;ae&&Q.push(ae)}return Q},J=v.slice();for(let $=0;$<J.length;$++){const Y=J[$];if(!Y||j.has(Y))continue;j.add(Y),K(Y);const Q=Z(Y);for(const se of Q)J.push(se)}return R}const Lt=new Set(["displayNone","hiddenAttr","detailsClosed","templateContent","nonRenderedElement","inputHidden","visibilityHidden","contentVisibilityHidden"]);function Rt(S){let R=A?Dt(S):it(S);return p||(R=R.filter(M=>{try{const j=ot(M);if(!j||j.eligible!==!1)return!0;const K=Array.isArray(j.reasons)?j.reasons:[];for(const Z of K)if(Lt.has(Z))return!1;if(K.includes("inert")){const Z=yt(M,null,{visibilityMode:"styleOnly",disableGeometry:!0,ignoreOpacity:!0}),J=Array.isArray(Z&&Z.reasons)?Z.reasons:[];for(const $ of J)if(Lt.has($))return!1}return!0}catch{return!0}})),d().length?R.filter(M=>!et(M)):R}try{const S=h||u&&u.defaultView||(typeof vt<"u"&&vt.window?vt.window:null);S&&(S.__a11ycoreSharedCache||(S.__a11ycoreSharedCache={}),S.__a11ycoreSharedCache.dom||(S.__a11ycoreSharedCache.dom={}),i=S.__a11ycoreSharedCache.dom)}catch{i={}}try{a=i.selectorCache instanceof Map?i.selectorCache:i.selectorCache=new Map}catch{a=null}function Pt(){if(!a)return null;try{const S=g();let R=a.get(S);return R instanceof WeakMap||(R=new WeakMap,a.set(S,R)),R}catch{return null}}try{C=i.excludedCache instanceof Map?i.excludedCache:i.excludedCache=new Map}catch{C=null}function ht(){if(!C)return null;try{const S=g();let R=C.get(S);return R instanceof WeakMap||(R=new WeakMap,C.set(S,R)),R}catch{return null}}try{r=i.outerHtmlCache instanceof WeakMap?i.outerHtmlCache:i.outerHtmlCache=new WeakMap}catch{r=null}try{l=i.idLookupDocCache instanceof Map?i.idLookupDocCache:i.idLookupDocCache=new Map}catch{l=null}try{y=i.idLookupRootCache instanceof Map?i.idLookupRootCache:i.idLookupRootCache=new Map}catch{y=null}try{b=i.idRefCacheByRoot instanceof WeakMap?i.idRefCacheByRoot:i.idRefCacheByRoot=new WeakMap}catch{b=null}try{_=i.idRefReverseIndexByScope instanceof WeakMap?i.idRefReverseIndexByScope:i.idRefReverseIndexByScope=new WeakMap}catch{_=null}try{I=i.uniqIndexByScope instanceof WeakMap?i.uniqIndexByScope:i.uniqIndexByScope=new WeakMap}catch{I=null}try{x=i.shadowRootsByRoot instanceof WeakMap?i.shadowRootsByRoot:i.shadowRootsByRoot=new WeakMap}catch{x=null}let bt=null,Ht=null,ut=null,pt=null,V=null,U=null,ee=null,le=null,_e=null,ce=null,ke=null,Ie=null,Se=null,ye=null,Pe=null;try{bt=i.ancestorsIncludingSelfCache instanceof WeakMap?i.ancestorsIncludingSelfCache:i.ancestorsIncludingSelfCache=new WeakMap}catch{bt=null}try{Ht=i.eligibilityAccCache instanceof WeakMap?i.eligibilityAccCache:i.eligibilityAccCache=new WeakMap}catch{Ht=null}try{ut=i.eligibilityDomCacheByMode instanceof Map?i.eligibilityDomCacheByMode:i.eligibilityDomCacheByMode=new Map}catch{ut=null}try{pt=i.focusabilityCache instanceof WeakMap?i.focusabilityCache:i.focusabilityCache=new WeakMap}catch{pt=null}try{V=i.visibilityHintsCache instanceof WeakMap?i.visibilityHintsCache:i.visibilityHintsCache=new WeakMap}catch{V=null}try{U=i.computedStyleCacheByScope instanceof WeakMap?i.computedStyleCacheByScope:i.computedStyleCacheByScope=new WeakMap}catch{U=null}try{ee=i.openModalDialogsByDoc instanceof WeakMap?i.openModalDialogsByDoc:i.openModalDialogsByDoc=new WeakMap}catch{ee=null}try{le=i.ancestorBlockerAccByScope instanceof WeakMap?i.ancestorBlockerAccByScope:i.ancestorBlockerAccByScope=new WeakMap}catch{le=null}try{_e=i.ancestorBlockerDomByScope instanceof WeakMap?i.ancestorBlockerDomByScope:i.ancestorBlockerDomByScope=new WeakMap}catch{_e=null}try{ce=i.ancestorBlockerDomStructFinalByScope instanceof WeakMap?i.ancestorBlockerDomStructFinalByScope:i.ancestorBlockerDomStructFinalByScope=new WeakMap}catch{ce=null}try{ke=i.labelAssociationCache instanceof WeakMap?i.labelAssociationCache:i.labelAssociationCache=new WeakMap}catch{ke=null}try{Ie=i.labelMethodCache instanceof WeakMap?i.labelMethodCache:i.labelMethodCache=new WeakMap}catch{Ie=null}try{Se=i.labelElementsByForIdIndexByDoc instanceof WeakMap?i.labelElementsByForIdIndexByDoc:i.labelElementsByForIdIndexByDoc=new WeakMap}catch{Se=null}try{ye=i.accessibleNameCacheByKey instanceof Map?i.accessibleNameCacheByKey:i.accessibleNameCacheByKey=new Map}catch{ye=null}try{Pe=i.accessibleDescCacheByKey instanceof Map?i.accessibleDescCacheByKey:i.accessibleDescCacheByKey=new Map}catch{Pe=null}function Ge(){return v.length===1?v[0]:v.length>1?v:u&&typeof u=="object"?u:null}function Ze(S){const R=te(S);if(!R||!u||!u.querySelectorAll)return[];function M(){const K=new Map;try{for(const Z of u.querySelectorAll("label[for]")){const J=te(Z.getAttribute("for"));if(!J)continue;const $=K.get(J);$?$.push(Z):K.set(J,[Z])}}catch{}return K}if(!Se)return M().get(R)||[];let j=Se.get(u);return j instanceof Map||(j=M(),Se.set(u,j)),j.get(R)||[]}const $e='input:not([type="hidden"]), select, textarea, button, meter, output, progress';function Be(S){const R=[],M=te(be(S,"id"));if(M){const j=Ze(M);for(const K of j)R.push(K)}try{const j=S.closest?S.closest("label"):null;if(j&&O(j)&&!(j.hasAttribute&&j.hasAttribute("for"))&&R.indexOf(j)===-1){let K=null;try{K=j.querySelector?j.querySelector($e):null}catch{K=null}K===S&&R.push(j)}}catch{}if(R.length>1)try{R.sort((j,K)=>{const Z=j.compareDocumentPosition(K);return Z&4?-1:Z&2?1:0})}catch{}return R}function Ye(){const S=Ge();if(!S||!i)return null;try{const R=i.eligibilityAccCacheByScope instanceof WeakMap?i.eligibilityAccCacheByScope:i.eligibilityAccCacheByScope=new WeakMap;let M=R.get(S);return M instanceof WeakMap||(M=new WeakMap,R.set(S,M)),M}catch{return null}}function nt(S){const R=Ge();if(!R||!i)return null;try{const M=i.eligibilityDomCacheByScope instanceof WeakMap?i.eligibilityDomCacheByScope:i.eligibilityDomCacheByScope=new WeakMap;let j=M.get(R);j instanceof Map||(j=new Map,M.set(R,j));let K=j.get(S);return K instanceof WeakMap||(K=new WeakMap,j.set(S,K)),K}catch{return null}}function dt(){const S=Ge();if(!S||!le)return null;try{let R=le.get(S);return R instanceof WeakMap||(R=new WeakMap,le.set(S,R)),R}catch{return null}}function Ot(){const S=Ge();if(!S||!_e)return null;try{let R=_e.get(S);return R instanceof WeakMap||(R=new WeakMap,_e.set(S,R)),R}catch{return null}}function Mt(){const S=Ge();if(!S||!ce)return null;try{let R=ce.get(S);return R instanceof WeakMap||(R=new WeakMap,ce.set(S,R)),R}catch{return null}}function jt(S){const R=S&&S.visibilityMode==="styleAndGeometry"?"styleAndGeometry":"styleOnly",M=!!(S&&S.disableGeometry===!0);return R+"|"+(M?"dg1":"dg0")}function zt(S){const R=!!(S&&S.disallowContents===!0),M=S&&S.maxRefs!=null?Number(S.maxRefs)|0:-1;return(R?"dc1":"dc0")+"|mr"+String(M)}function rn(S){const R=!!(S&&S.allowTitle===!0),M=S&&S.maxRefs!=null?Number(S.maxRefs)|0:-1;return(R?"at1":"at0")+"|mr"+String(M)}function Wt(S){if(!S||typeof S!="object")return"";try{if(r&&r.has(S))return E("outerHtml.hit"),r.get(S)||""}catch{}E("outerHtml.miss");let R;try{const M=S.outerHTML||"";M.length>2e3?R=M.slice(0,2e3)+"…":R=M}catch{R=""}try{r&&S&&typeof S=="object"&&r.set(S,R)}catch{}return R}function ot(S){const R=Ye(),M=dt();if(!O(S))return{eligible:!1,reasons:["notElement"]};try{if(R&&S&&typeof S=="object"&&R.has(S)){const $=R.get(S);if($&&typeof $=="object")return{eligible:!!$.eligible,reasons:Array.isArray($.reasons)?$.reasons.slice(0):[]}}}catch{}const j=[];function K($){const Y={eligible:!!($&&$.eligible),reasons:$&&Array.isArray($.reasons)?$.reasons.slice(0):[]};try{R&&S&&typeof S=="object"&&R.set(S,{eligible:Y.eligible,reasons:Y.reasons.slice(0)})}catch{}return Y}const Z=ie(S);for(const $ of Z){if(!O($))continue;let Y=null;try{if(M&&M.has($)){E("ancestorBlockerAcc.struct.hit");const Q=M.get($);Y=Q&&Q.struct?String(Q.struct):null}else{E("ancestorBlockerAcc.struct.miss");const Q=($.tagName||"").toLowerCase();$.hasAttribute&&$.hasAttribute("hidden")?Y="hiddenAttr":Q==="template"?Y="templateContent":Q==="script"||Q==="style"||Q==="meta"||Q==="link"||Q==="noscript"?Y="nonRenderedElement":Q==="input"&&($.getAttribute&&($.getAttribute("type")||"").toLowerCase()||"")==="hidden"&&(Y="inputHidden");try{try{if(M){const se=M.has($)&&M.get($)||null;M.set($,{struct:Y,css:se&&se.css?se.css:null,cssKnown:!!(se&&se.cssKnown===!0)})}}catch{E("ancestorBlockerAcc.struct.nocache")}}catch{E("ancestorBlockerAcc.struct.nocache")}}}catch{}if(Y==="hiddenAttr"&&$===S&&String($.getAttribute&&$.getAttribute("hidden")||"").trim().toLowerCase()==="until-found"&&(Y=null),Y)return K({eligible:!1,reasons:[Y]})}if(Ee(S))return K({eligible:!1,reasons:["detailsClosed"]});if(we(S))return K({eligible:!1,reasons:["inert"]});try{const $=G();if($.length){let Y=!1;for(const Q of $)if(Q&&Q.contains&&Q.contains(S)){Y=!0;break}if(!Y)return K({eligible:!1,reasons:["modalInert"]})}}catch{}for(const $ of Z){if(!O($)||$===S&&($.tagName||"").toLowerCase()==="area")continue;let Y=null,Q=!1;try{if(M&&M.has($)){const se=M.get($);se&&se.cssKnown===!0?(E("ancestorBlockerAcc.css.hit"),Q=!0,Y=se.css?String(se.css):null):E("ancestorBlockerAcc.css.miss")}else E("ancestorBlockerAcc.css.miss")}catch{}if(!Q){const se=B($);se&&se.display==="none"?Y="displayNone":se&&se.contentVisibility==="hidden"?Y="contentVisibilityHidden":Y=null;try{if(M){const ae=M.has($)&&M.get($)||null;M.set($,{struct:ae&&ae.struct?ae.struct:null,css:Y||null,cssKnown:!0})}}catch{E("ancestorBlockerAcc.css.nocache")}}if(Y==="contentVisibilityHidden"&&$===S&&(Y=null),Y)return K({eligible:!1,reasons:[Y]})}if((S.tagName||"").toLowerCase()!=="area"){const Y=B(S);if(Y&&(Y.visibility==="hidden"||Y.visibility==="collapse"))return K({eligible:!1,reasons:["visibilityHidden"]})}let J=!1;for(const $ of Z){if(!O($))continue;const Y=$.getAttribute&&$.getAttribute("aria-hidden");if(Y!=null&&String(Y).trim().toLowerCase()==="true"){J=!0;break}}if(J){if(tt(S))return K({eligible:!0,reasons:["ariaHiddenOverriddenIdref"]});const Y=Ve(S);if(Y.has&&Y.valid&&Y.value>=0)return K({eligible:!0,reasons:["ariaHiddenOverriddenTabbable"]});if(Y.has&&Y.valid&&Y.value<0)return K({eligible:!1,reasons:["ariaHiddenProgrammaticFocusExcluded"]});const Q=(S.tagName||"").toLowerCase(),se=Q==="input"&&S.getAttribute&&(S.getAttribute("type")||"").toLowerCase()||"";if(Q==="area"||(Q==="select"||Q==="textarea"||Q==="input"&&se!=="hidden")||(Q==="button"||Q==="summary"||Q==="a")){const me=Ne(S);if(me&&me.tabbable)return K({eligible:!0,reasons:["ariaHiddenOverriddenTabbable"]})}return K({eligible:!1,reasons:["ariaHidden"]})}return K({eligible:!0,reasons:j})}function yt(S,R,M){const j=[],K=(pe,de,he)=>({eligible:!!pe,reasons:de.slice(0),metrics:he&&typeof he=="object"?{...he}:{}});if(!O(S))return K(!1,["notElement"],{});const Z=jt(M),J=nt(Z),$=Ot(),Y=Mt();try{if(J&&S&&typeof S=="object"&&J.has(S)){const pe=J.get(S);if(pe&&typeof pe=="object")return{eligible:!!pe.eligible,reasons:Array.isArray(pe.reasons)?pe.reasons.slice(0):[],metrics:pe.metrics&&typeof pe.metrics=="object"?{...pe.metrics}:{}}}}catch{}function Q(pe){const de={eligible:!!(pe&&pe.eligible),reasons:pe&&Array.isArray(pe.reasons)?pe.reasons.slice(0):[],metrics:pe&&pe.metrics&&typeof pe.metrics=="object"?{...pe.metrics}:{}};try{J&&S&&typeof S=="object"&&J.set(S,{eligible:de.eligible,reasons:de.reasons.slice(0),metrics:{...de.metrics}})}catch{}return de}try{if(Y&&Y.has(S)){E("ancestorBlockerDom.structFinal.hit");const pe=Y.get(S),de=pe!=null&&pe!==""?String(pe):null;if(de)return Q(K(!1,[de],{}))}else E("ancestorBlockerDom.structFinal.miss")}catch{}const se=ie(S),ae=[];for(const pe of se){if(!O(pe))continue;ae.push(pe);try{if(Y&&Y.has(pe)){E("ancestorBlockerDom.structFinal.hit");const he=Y.get(pe),Ce=he!=null&&he!==""?String(he):null;if(Ce){try{for(const Te of ae)Y.has(Te)||Y.set(Te,Ce)}catch{}return Q(K(!1,[Ce],{}))}}}catch{}let de=null;try{if($&&$.has(pe)){E("ancestorBlockerDom.struct.hit");const he=$.get(pe);de=he&&he.struct?String(he.struct):null}else{E("ancestorBlockerDom.struct.miss");const he=(pe.tagName||"").toLowerCase();pe.hasAttribute&&pe.hasAttribute("hidden")?de="hiddenAttr":he==="template"?de="templateContent":he==="script"||he==="style"||he==="meta"||he==="link"||he==="noscript"?de="nonRenderedElement":he==="input"&&(pe.getAttribute&&(pe.getAttribute("type")||"").toLowerCase()||"")==="hidden"&&(de="inputHidden");try{if($){const Ce=$.has(pe)&&$.get(pe)||null;$.set(pe,{struct:de,css:Ce&&Ce.css?Ce.css:null,cssKnown:!!(Ce&&Ce.cssKnown===!0),visibility:Ce&&Ce.visibility?Ce.visibility:null,contentVisHidden:Ce&&Ce.contentVisHidden===!0?!0:null,opacity:Ce&&typeof Ce.opacity=="number"?Ce.opacity:null})}}catch{E("ancestorBlockerDom.struct.nocache")}}}catch{}if(de){try{if(Y)for(const he of ae)Y.has(he)||Y.set(he,de)}catch{}return Q(K(!1,[de],{}))}}try{if(Y)for(const pe of ae)Y.has(pe)||Y.set(pe,null)}catch{}if(Ee(S))return Q(K(!1,["detailsClosed"],{}));const ge=M&&M.visibilityMode==="pointer"?"pointer":M&&M.visibilityMode==="styleAndGeometry"?"styleAndGeometry":"styleOnly";{const pe=B(S);if(pe&&(pe.visibility==="hidden"||pe.visibility==="collapse"))return Q(K(!1,["visibilityHidden"],{visibility:pe.visibility}))}const me=new Map;for(const pe of se){if(!O(pe))continue;let de=null,he=!1,Ce=null,Te=null,Oe=null,lt=null,Ct=!1,Qe;try{if($&&$.has(pe)){const qe=$.get(pe);qe&&(qe.cssKnown===!0?(E("ancestorBlockerDom.css.hit"),he=!0,de=qe.css?String(qe.css):null):E("ancestorBlockerDom.css.miss"),Ce=qe.visibility!=null?String(qe.visibility):null,Te=qe.contentVisHidden===!0?!0:null,Oe=qe&&typeof qe.opacity=="number"&&Number.isFinite(qe.opacity)?qe.opacity:null,lt=qe.pointerEventsNone===!0?!0:null,Ct=qe.pointerEventsKnown===!0)}else E("ancestorBlockerDom.css.miss")}catch{}if(!he&&Te!==!0){if(Qe=B(pe),Qe&&Qe.display==="none"?de="displayNone":Qe&&(Qe.visibility==="hidden"||Qe.visibility==="collapse")?(de="visibilityHidden",Ce=Qe.visibility):Qe&&Qe.contentVisibility==="hidden"&&(de="contentVisibilityHidden",Te=!0),Oe==null)try{const qe=Qe&&Qe.opacity!=null?String(Qe.opacity).trim():"",ft=Number.parseFloat(qe);Number.isFinite(ft)&&(Oe=ft)}catch{}if(ge==="pointer"&&!Ct)try{const qe=Qe&&Qe.pointerEvents!=null?String(Qe.pointerEvents).trim():"";Ct=!0,qe==="none"&&(lt=!0)}catch{}try{if($){const qe=$.has(pe)&&$.get(pe)||null;$.set(pe,{struct:qe&&qe.struct?qe.struct:null,css:de||null,cssKnown:!0,visibility:Ce||(qe&&qe.visibility?qe.visibility:null),contentVisHidden:Te===!0||qe&&qe.contentVisHidden===!0?!0:null,opacity:Oe??(qe&&typeof qe.opacity=="number"?qe.opacity:null),pointerEventsNone:lt===!0||qe&&qe.pointerEventsNone===!0?!0:null,pointerEventsKnown:Ct===!0?!0:!!(qe&&qe.pointerEventsKnown===!0)})}}catch{E("ancestorBlockerDom.css.nocache")}}if(me.set(pe,{cssBlock:de,cachedOpacity:Oe,cachedPointerEventsNone:lt,cachedPointerEventsKnown:Ct}),de==="displayNone")return Q(K(!1,["displayNone"],{}));if(de==="contentVisibilityHidden")return Q(K(!1,["contentVisibilityHidden"],{}))}let ve=1;for(const pe of se){if(!O(pe))continue;const de=me.get(pe)||{};let he=de.cachedOpacity,Ce=de.cachedPointerEventsNone,Te=de.cachedPointerEventsKnown,Oe=null;if(ge==="pointer"){if(Te===!0&&Ce===!0)return Q(K(!1,["pointerEventsNone"],{}));if(Te!==!0)try{Oe||(Oe=B(pe));const Qe=Oe&&Oe.pointerEvents!=null?String(Oe.pointerEvents).trim():"";Te=!0,Qe==="none"&&(Ce=!0);try{if($){const qe=$.has(pe)&&$.get(pe)||null;qe?$.set(pe,{struct:qe.struct||null,css:qe.css||null,cssKnown:qe.cssKnown===!0,visibility:qe.visibility||null,contentVisHidden:qe.contentVisHidden===!0?!0:null,opacity:typeof qe.opacity=="number"?qe.opacity:null,pointerEventsNone:Ce===!0?!0:null,pointerEventsKnown:Te===!0}):$.set(pe,{struct:null,css:null,cssKnown:!1,visibility:null,contentVisHidden:null,opacity:null,pointerEventsNone:Ce===!0?!0:null,pointerEventsKnown:Te===!0})}}catch{}}catch{}if(Ce===!0)return Q(K(!1,["pointerEventsNone"],{}))}if(he==null)try{Oe||(Oe=B(pe));const Qe=Oe&&Oe.opacity!=null?String(Oe.opacity).trim():"",qe=Number.parseFloat(Qe);if(Number.isFinite(qe)){he=qe;try{if($){const ft=$.has(pe)&&$.get(pe)||null;ft?$.set(pe,{struct:ft.struct||null,css:ft.css||null,visibility:ft.visibility||null,contentVisHidden:ft.contentVisHidden===!0?!0:null,opacity:he,pointerEventsNone:ft.pointerEventsNone===!0?!0:null,pointerEventsKnown:ft.pointerEventsKnown===!0}):$.set(pe,{struct:null,css:null,visibility:null,contentVisHidden:null,opacity:he,pointerEventsNone:null,pointerEventsKnown:!1})}}catch{}}}catch{}if(ve*=he??1,!!!(M&&M.ignoreOpacity===!0)&&ge!=="pointer"&&ve<=1e-4)return Q(K(!1,["opacityZero"],{opacity:ve}))}if((ge==="pointer"||ge==="styleAndGeometry")&&!(M&&M.disableGeometry===!0))try{if(S.getClientRects){const pe=S.getClientRects(),de=pe?pe.length:0;if(!de)return Q(K(!1,["noClientRects"],{rectCount:0}));const he=S.getBoundingClientRect?S.getBoundingClientRect():null,Ce=he&&Number.isFinite(he.width)?he.width:0,Te=he&&Number.isFinite(he.height)?he.height:0;return Ce<=0||Te<=0?Q(K(!1,["zeroArea"],{rectCount:de,width:Ce,height:Te})):Q(K(!0,j,{rectCount:de,width:Ce,height:Te,opacity:ve}))}}catch{}return Q(K(!0,j,{opacity:ve}))}function an(S,R,M){const j=M&&(M.targetSet==="acc"||M.targetSet==="dom")?M.targetSet:"dom",K=j==="dom"?yt(S,R,M):ot(S);return{eligible:!!(K&&K.eligible),reasons:K&&Array.isArray(K.reasons)?K.reasons.slice(0):[],targetSet:j,accEligible:j==="acc"?!!(K&&K.eligible):null}}function wt(S,R,M){const j=te(S);if(!j)return{refs:[],missing:[],flags:["empty"]};const K=j.split(/\s+/).filter(Boolean),Z=K.join(" ");let J=null;if(b){const ae=Ge();if(ae)try{J=b.get(ae)||null,J||(J=new Map,b.set(ae,J))}catch{J=null}}if(J)try{const ae=J.get(Z);if(ae&&ae.refs&&ae.missing&&ae.flags){const ge=Array.isArray(ae.refs)?ae.refs.slice(0):[],me=Array.isArray(ae.missing)?ae.missing.slice(0):[],ve=Array.isArray(ae.flags)?ae.flags.slice(0):[];return M&&M.maxRefs&&ge.length>M.maxRefs&&(ge.length=Math.max(0,Number(M.maxRefs)|0),ve.push("truncated")),E("idref.resolve.hit"),{refs:ge,missing:me,flags:ve}}}catch{}E(J?"idref.resolve.miss":"idref.resolve.nocache");const $=[],Y=[],Q=new Set;for(const ae of K){const ge=te(ae);if(!ge)continue;let me=Ae(ge);if(me||(me=xe(ge)),!me||!O(me)){Y.push(ge);continue}Q.has(me)||(Q.add(me),$.push(me))}const se=[];if(Y.length&&se.push("idref-missing"),K.length!==$.length+Y.length&&se.push("deduped"),J)try{J.set(Z,{refs:$.slice(0),missing:Y.slice(0),flags:se.slice(0),partsLen:K.length})}catch{}return M&&M.maxRefs&&$.length>M.maxRefs&&($.length=Math.max(0,Number(M.maxRefs)|0),se.push("truncated")),{refs:$,missing:Y,flags:se}}function Ut(S){if(!O(S))return"";const R=(S.tagName||"").toLowerCase();if(R==="img"||R==="area"){const M=be(S,"alt");if(M!=null){const j=te(M);if(j)return j}return""}if(R==="input"){const M=re(be(S,"type")||"text");if(M==="button"||M==="submit"||M==="reset"||M==="image"){const j=be(S,"value");if(j!=null){const K=te(j);if(K)return K}if(M==="submit")return"Submit";if(M==="reset")return"Reset"}}return""}function mt(S,R,M,j){if(!O(S)||R.has(S)||(R.add(S),N>=L))return"";let K=j;if(!j||j.includeHidden===void 0){let Z;try{const J=ot(S);Z=!(J&&J.eligible)}catch{Z=!1}K=Object.assign({},j,{includeHidden:Z})}K=Object.assign({},K,{__idrefVisited:R}),N+=1;try{const Z=te(be(S,"aria-labelledby"));if(Z){const se=Z.split(/\s+/).filter(Boolean),ae=[];for(const me of se){let ve=Ae(me);if(ve||(ve=xe(me)),ve&&O(ve)){const Ke=mt(ve,R,M,K);Ke&&ae.push(Ke)}}const ge=te(ae.join(" "));if(ge)return ge}const J=te(be(S,"aria-label"));if(J)return J;try{for(const se of Be(S)){const ae=St(se,S,M,K);if(ae.present&&ae.value)return ae.value}}catch{}const $=Ut(S);if($)return $;const Y=rt(S,M,K);if(Y&&Y.present&&Y.value)return Y.value;const Q=te(be(S,"title"));return Q||""}finally{N-=1}}function xt(S,R,M){const j=wt(S,R,M),K=[],Z=M&&M.__idrefVisited instanceof Set?M.__idrefVisited:new Set;for(const Y of j.refs)try{const Q=mt(Y,Z,R,M);Q&&K.push(Q)}catch{}const J=te(K.join(" ")),$=j.flags.slice(0);return!J&&j.refs.length&&$.push("resolved-empty-text"),{text:J,refsCount:j.refs.length,missing:j.missing.slice(0),flags:$}}function Gt(S){return O(S)?we(S)?{eligible:!1,reasons:["inert"]}:{eligible:!0,reasons:[]}:{eligible:!1,reasons:["notElement"]}}function $t(S,R,M){const j=wt(S,R,M),K=[],Z=[],J=M&&M.__idrefVisited instanceof Set?M.__idrefVisited:new Set;for(const Q of j.refs){const se=Gt(Q);if(!se.eligible){const ae=te(Q.getAttribute&&Q.getAttribute("id"));Z.push({id:ae||null,reasons:se.reasons.slice(0)});continue}try{const ae=mt(Q,J,R,M);ae&&K.push(ae)}catch{}}const $=te(K.join(" ")),Y=j.flags.slice(0);return!$&&j.refs.length&&Y.push("resolved-empty-text"),Z.length&&Y.push("idref-excluded"),{text:$,refsCount:j.refs.length,missing:j.missing.slice(0),excluded:Z,flags:Y}}function St(S,R,M,j){if(!O(S))return{present:!1,value:"",mechanism:"none",flags:[]};const K=[];let Z=0;function J(Q){const se=re(Q.tagName),ae=se==="input"?re(be(Q,"type")):"";return se==="img"||se==="area"||se==="input"&&ae==="image"}function $(Q){if(Q===R||(Z+=1,Z>5e3))return;if(Q.nodeType===3){const ve=te(Q.nodeValue);ve&&K.push(ve);return}if(!O(Q))return;let se;try{const ve=ot(Q);se=!!(ve&&ve.eligible)}catch{se=!0}if(!se)return;const ae=We(Q);if(ae&&ae.present&&ae.value){K.push(ae.value);return}const ge=De(Q,M,j);if(ge&&ge.present&&ge.value){K.push(ge.value);return}if(J(Q)){const ve=Ue(Q,M,j);ve&&ve.present&&ve.value&&K.push(ve.value);return}const me=Q.childNodes?Array.from(Q.childNodes):[];for(const ve of me)$(ve)}try{const Q=S.childNodes?Array.from(S.childNodes):[];for(const se of Q)$(se)}catch{}const Y=te(K.join(" ").replace(/\s+/g," "));return{present:!!Y,value:Y,mechanism:"label",flags:Y?[]:["empty"]}}function Le(S){const R=ot(S);return!R||!R.eligible?!1:!(Array.isArray(R.reasons)?R.reasons:[]).some(j=>typeof j=="string"&&j.indexOf("ariaHiddenOverridden")===0)}function ze(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const K=zt(M);try{if(ye&&ye.has(K)){const ae=ye.get(K);if(ae&&ae instanceof WeakMap&&ae.has(S)){const ge=ae.get(S);if(ge&&typeof ge=="object")return E("accessibleName.hit"),{present:!!ge.present,value:ge.value==null?"":String(ge.value),mechanism:ge.mechanism||"none",flags:Array.isArray(ge.flags)?ge.flags.slice(0):[]}}}}catch{}E("accessibleName.miss");const Z=Xe(S,R,M);if(Z&&Z.present&&Z.value){const ae={present:!0,value:Z.value,mechanism:Z.mechanism,flags:j.concat(Z.flags||[])};try{if(ye&&N===0){const ge=ye.get(K)||(ye.set(K,new WeakMap),ye.get(K));ge&&ge instanceof WeakMap&&ge.set(S,{present:!!ae.present,value:ae.value,mechanism:ae.mechanism,flags:ae.flags.slice(0)})}}catch{}return ae}if(Z&&Z.flags&&Z.flags.length)for(const ae of Z.flags)j.push(ae);try{const ae=Object.assign({},M,{__idrefVisited:new Set([S])});for(const ge of Be(S)){const me=St(ge,S,R,ae);if(me.present&&me.value){const ve={present:!0,value:me.value,mechanism:"label",flags:j};try{if(ye&&N===0){const Ke=ye.get(K)||(ye.set(K,new WeakMap),ye.get(K));Ke&&Ke instanceof WeakMap&&Ke.set(S,{present:!0,value:ve.value,mechanism:ve.mechanism,flags:ve.flags.slice(0)})}}catch{}return ve}}}catch{}const J=re(S.tagName),$=J==="input"?re(be(S,"type")):"";if(J==="img"||J==="area"||J==="input"&&$==="image"){const ae=te(be(S,"alt"));if(ae){const ge={present:!0,value:ae,mechanism:"alt",flags:j};try{if(ye&&N===0){const me=ye.get(K)||(ye.set(K,new WeakMap),ye.get(K));me&&me instanceof WeakMap&&me.set(S,{present:!0,value:ge.value,mechanism:ge.mechanism,flags:ge.flags.slice(0)})}}catch{}return ge}}const Q=te(be(S,"title"));if(Q){j.push("title-used");const ae={present:!0,value:Q,mechanism:"title",flags:j};try{if(ye&&N===0){const ge=ye.get(K)||(ye.set(K,new WeakMap),ye.get(K));ge&&ge instanceof WeakMap&&ge.set(S,{present:!0,value:ae.value,mechanism:ae.mechanism,flags:ae.flags.slice(0)})}}catch{}return ae}const se={present:!1,value:"",mechanism:"none",flags:j};try{if(ye&&N===0){const ae=ye.get(K)||(ye.set(K,new WeakMap),ye.get(K));ae&&ae instanceof WeakMap&&ae.set(S,{present:!1,value:"",mechanism:"none",flags:se.flags.slice(0)})}}catch{}return se}function Fe(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};const K=rn(M);try{if(Pe&&Pe.has(K)){const Y=Pe.get(K);if(Y&&Y instanceof WeakMap&&Y.has(S)){const Q=Y.get(S);if(Q&&typeof Q=="object")return E("accessibleDesc.hit"),{present:!!Q.present,value:Q.value==null?"":String(Q.value),mechanism:Q.mechanism||"none",flags:Array.isArray(Q.flags)?Q.flags.slice(0):[]}}}}catch{}E("accessibleDesc.miss");const Z=te(be(S,"aria-describedby"));if(Z){const Y=xt(Z,R,M);for(const Q of Y.flags)j.push(Q);if(Y.text){const Q={present:!0,value:Y.text,mechanism:"aria-describedby",flags:j};try{if(Pe){const se=Pe.get(K)||(Pe.set(K,new WeakMap),Pe.get(K));se&&se instanceof WeakMap&&se.set(S,{present:!0,value:Q.value,mechanism:Q.mechanism,flags:Q.flags.slice(0)})}}catch{}return Q}j.push("empty")}if(!!(M&&M.allowTitle===!0)){const Y=te(be(S,"title"));if(Y){j.push("title-used");const Q={present:!0,value:Y,mechanism:"title",flags:j};try{if(Pe){const se=Pe.get(K)||(Pe.set(K,new WeakMap),Pe.get(K));se&&se instanceof WeakMap&&se.set(S,{present:!0,value:Q.value,mechanism:Q.mechanism,flags:Q.flags.slice(0)})}}catch{}return Q}}const $={present:!1,value:"",mechanism:"none",flags:j};try{if(Pe){const Y=Pe.get(K)||(Pe.set(K,new WeakMap),Pe.get(K));Y&&Y instanceof WeakMap&&Y.set(S,{present:!1,value:"",mechanism:"none",flags:$.flags.slice(0)})}}catch{}return $}function He(S){try{if(!S||!S.querySelectorAll)return!1;const R=S.querySelectorAll("img[alt]");for(const K of R)if(te(K.getAttribute&&K.getAttribute("alt")))return!0;const M=S.querySelectorAll("area[alt]");for(const K of M)if(te(K.getAttribute&&K.getAttribute("alt")))return!0;const j=S.querySelectorAll("[aria-label]");for(const K of j)if(te(K.getAttribute&&K.getAttribute("aria-label")))return!0;return!1}catch{return!1}}function Ue(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",requiredMechanism:"unknown",flags:["notElement"]};const K=re(S.tagName),Z=K==="input"?re(be(S,"type")):"";if(K==="img"||K==="area"||K==="input"&&Z==="image"){const $=be(S,"alt"),Y=$!=null,Q=te($);if(Y)return Q||j.push("alt-empty"),{present:!0,value:Q,mechanism:"alt",requiredMechanism:"alt",flags:j};const se=ze(S,R,M);return se&&se.present&&se.value&&j.push("name-present-but-alt-missing"),j.push("alt-missing"),{present:!1,value:se&&se.present&&se.value||"",mechanism:se&&se.present?"accessible-name":"none",requiredMechanism:"alt",flags:j.concat(se&&se.flags?se.flags.slice(0):[])}}if(K==="canvas"){const $=te(S.textContent||"");if($||He(S))return{present:!0,value:$||"fallback-content",mechanism:"canvas-fallback",requiredMechanism:"fallback-or-name",flags:j};const Y=Xe(S,R,M);if(Y&&Y.present&&Y.value)return{present:!0,value:Y.value,mechanism:Y.mechanism||"aria",requiredMechanism:"fallback-or-name",flags:j.concat(Y.flags?Y.flags.slice(0):[])};const Q=te(be(S,"title"));return Q?{present:!0,value:Q,mechanism:"title",requiredMechanism:"fallback-or-name",flags:j.concat(["title-used"])}:{present:!1,value:"",mechanism:"none",requiredMechanism:"fallback-or-name",flags:j.concat(Y&&Y.flags?Y.flags.slice(0):[])}}return{present:!1,value:"",mechanism:"unsupported",requiredMechanism:"unknown",flags:["unsupported-element"]}}function rt(S,R,M){const j=[];if(!O(S))return{present:!1,value:"",mechanism:"unsupported",flags:["notElement"]};if(N>=L)return{present:!1,value:"",mechanism:"none",flags:["depth-limit"]};const K=M&&Number.isFinite(M.maxContentNodes)?Math.max(1,M.maxContentNodes):5e3;let Z=0,J=!1;const $=["aria-atomic","aria-braillelabel","aria-brailleroledescription","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];function Y(me){const ve=re(me.tagName),Ke=ve==="input"?re(be(me,"type")):"";return ve==="img"||ve==="area"||ve==="input"&&Ke==="image"}function Q(me,ve){if(J)return;if(Z+=1,Z>K){J=!0,j.indexOf("truncated")===-1&&j.push("truncated");return}if(me.nodeType===3){const de=te(me.nodeValue);de&&ve.push(de);return}if(!O(me))return;if(M&&M.includeHidden){const de=re(me.tagName);if(de==="script"||de==="style"||de==="noscript"||de==="template")return}else{let de;try{const he=ot(me);de=!!(he&&he.eligible)}catch{de=!0}if(!de)return}if(Y(me)){const de=re(be(me,"role")||"").split(/\s+/)[0];if(de==="presentation"||de==="none"){let Te=!1;try{Te=!!(kt(me,R,M)||{}).focusable}catch{}if(!Te){for(const Oe of $)if(be(me,Oe)!=null){Te=!0;break}}if(!Te)return}const he=Xe(me,R,M);if(he&&he.present&&he.value){ve.push(he.value),j.indexOf("descendant-name-used:image-aria")===-1&&j.push("descendant-name-used:image-aria");return}if(re(me.tagName)==="input")try{if(me.labels&&me.labels.length)for(const Te of Array.from(me.labels)){const Oe=St(Te,me,R,M);if(Oe.present&&Oe.value){ve.push(Oe.value),j.indexOf("descendant-name-used:image-label")===-1&&j.push("descendant-name-used:image-label");return}}}catch{}const Ce=Ue(me,R,M);if(Ce&&Ce.value){const Te=Ce.present?"descendant-alt-used":"descendant-name-used:image-title-fallback";ve.push(Ce.value),j.indexOf(Te)===-1&&j.push(Te)}return}const Ke=ze(me,R,M),pe=!!(Ke&&Ke.present&&Ke.value&&Ke.mechanism==="title");if(Ke&&Ke.present&&Ke.value&&!pe){ve.push(Ke.value);const de=`descendant-name-used:${Ke.mechanism||"unknown"}`;j.indexOf(de)===-1&&j.push(de);return}if(pe){const de=ve.length;se(me,ve),te(ve.slice(de).join(" "))?j.indexOf("descendant-title-superseded-by-content")===-1&&j.push("descendant-title-superseded-by-content"):(ve.length=de,ve.push(Ke.value),j.indexOf("descendant-name-used:title-fallback")===-1&&j.push("descendant-name-used:title-fallback"));return}se(me,ve)}function se(me,ve){if(re(me.tagName)==="slot"&&typeof me.assignedNodes=="function"){let pe;try{pe=me.assignedNodes({flatten:!0})||[]}catch{pe=[]}const de=pe.length?pe:me.childNodes?Array.from(me.childNodes):[];for(const he of de)if(Q(he,ve),J)break;return}const Ke=me.childNodes?Array.from(me.childNodes):[];for(const pe of Ke)if(Q(pe,ve),J)break}const ae=[];N+=1;try{const me=S.childNodes?Array.from(S.childNodes):[];for(const ve of me)if(Q(ve,ae),J)break}finally{N-=1}const ge=te(ae.join(" ").replace(/\s+/g," "));return{present:!!ge,value:ge,mechanism:ge?"content":"none",flags:j}}function Qt(S,R,M){const j=[];if(!O(S))return{role:"",source:"none",flags:["notElement"]};const K=te(be(S,"role"));if(K){const se=K,ae=se.toLowerCase();return(ae==="presentation"||ae==="none")&&j.push("presentation"),/\s/.test(se)&&j.push("multiple-roles"),{role:se,source:"explicit",flags:j}}if(!!(M&&M.disallowImplicit===!0))return{role:"",source:"none",flags:j};const J=re(S.tagName),$=J==="input"?re(be(S,"type")):"",Y=J==="a"||J==="area"?te(be(S,"href")):"";let Q="";return(J==="a"||J==="area")&&Y?Q="link":J==="button"||J==="summary"?Q="button":J==="input"?$==="checkbox"?Q="checkbox":$==="radio"?Q="radio":$==="range"?Q="slider":$==="button"||$==="submit"||$==="reset"||$==="image"?Q="button":$!=="hidden"&&(Q="textbox"):J==="select"?Q="combobox":J==="textarea"&&(Q="textbox"),Q?{role:Q,source:"implicit",flags:j}:{role:"",source:"none",flags:j}}function kt(S,R,M){if(!O(S))return{focusable:!1,tabbable:!1,mechanism:"none",flags:["notElement"]};const j=Ne(S),K=[];if(j&&Array.isArray(j.flags)&&j.flags.length)for(let Z=0;Z<j.flags.length;Z++)K.push(j.flags[Z]);return{focusable:!!(j&&j.focusable),tabbable:!!(j&&j.tabbable),mechanism:j&&j.mechanism||"none",flags:K}}function Yn(S,R,M){if(!O(S))return{hints:[],metrics:{},flags:["notElement"]};try{if(V&&V.has(S)){E("visibilityHints.hit");const ae=V.get(S);if(ae&&typeof ae=="object")return{hints:Array.isArray(ae.hints)?ae.hints.slice(0):[],metrics:ae.metrics&&typeof ae.metrics=="object"?{...ae.metrics}:{},flags:Array.isArray(ae.flags)?ae.flags.slice(0):[]}}}catch{}E("visibilityHints.miss");const j=[],K={},Z=[],J=B(S)||{};try{const ae=J.opacity!=null?String(J.opacity).trim():"",ge=ae?Number.parseFloat(ae):1;Number.isFinite(ge)&&(K.opacity=ge),Number.isFinite(ge)&&ge<=1e-4&&j.push("opacityZero")}catch{Z.push("opacity-parse-failed")}try{const ae=J.clip!=null?String(J.clip).trim():"",ge=J.clipPath!=null?String(J.clipPath).trim():"",me=ae.toLowerCase(),ve=ge.toLowerCase();if(me&&me!=="auto"){const Ke=me.replace(/\s+/g,"");Ke.indexOf("rect(")!==-1&&Ke.indexOf("rect(0")!==-1&&j.push("clipped")}ve&&ve!=="none"&&ve.indexOf("inset(")!==-1&&(ve.indexOf("50%")!==-1||ve.indexOf("100%")!==-1)&&j.push("clipped"),ae&&(K.clip=ae),ge&&(K.clipPath=ge)}catch{Z.push("clip-parse-failed")}try{const ae=J.width!=null?String(J.width).trim():"",ge=J.height!=null?String(J.height).trim():"",me=J.overflow!=null?String(J.overflow).trim().toLowerCase():"";K.width=ae||null,K.height=ge||null,K.overflow=me||null,(ae==="0px"||ae==="0"||(ge==="0px"||ge==="0"))&&(me==="hidden"||me==="clip")&&j.push("zeroSizeOverflowHidden")}catch{Z.push("size-parse-failed")}try{const ae=J.position!=null?String(J.position).trim().toLowerCase():"",ge=J.left!=null?String(J.left).trim().toLowerCase():"",me=J.top!=null?String(J.top).trim().toLowerCase():"",ve=J.textIndent!=null?String(J.textIndent).trim().toLowerCase():"";K.position=ae||null,K.left=ge||null,K.top=me||null,K.textIndent=ve||null;const Ke=Ce=>{if(!Ce||Ce==="auto")return null;const Te=String(Ce).match(/-?\d+(\.\d+)?(em|rem|px)?/);if(!Te)return null;const Oe=Number.parseFloat(Te[0]);if(!Number.isFinite(Oe))return null;const lt=Te[2];return lt==="em"||lt==="rem"?Oe*16:Oe},pe=Ke(ge),de=Ke(me),he=Ke(ve);(ae==="absolute"||ae==="fixed")&&(pe!=null&&pe<=-5e3||de!=null&&de<=-5e3)&&j.push("offscreen"),he!=null&&he<=-5e3&&j.push("offscreen")}catch{Z.push("offscreen-parse-failed")}const $=["opacityZero","offscreen","clipped","zeroSizeOverflowHidden"],Y=new Set,Q=[];for(const ae of $)j.indexOf(ae)!==-1&&!Y.has(ae)&&(Y.add(ae),Q.push(ae));const se={hints:Q,metrics:K,flags:Z};try{V&&V.set(S,{hints:Q.slice(0),metrics:{...K},flags:Z.slice(0)})}catch{E("visibilityHints.nocache")}return se}function Zn(S){const R=ze(S);return!!(R&&R.present&&te(R.value))}function on(){const S=new Map,R=new Map,M=new Map,j=new Map,K=new Map,Z="[id],[data-testid],[data-test],[data-cy],[data-qa],[name],[aria-label],[role]";let J;if(typeof Rt=="function")J=Rt(Z)||[];else{J=[];const Y=new Set;for(const Q of v)if(!(!Q||!Q.querySelectorAll))for(const se of Q.querySelectorAll(Z))se&&!Y.has(se)&&(Y.add(se),J.push(se));!J.length&&!v.length&&u&&(J=Array.from(u.querySelectorAll(Z)))}const $=(Y,Q)=>Y.set(Q,(Y.get(Q)||0)+1);for(const Y of J){if(!Y||Y.nodeType!==1)continue;const Q=(Y.tagName||"").toLowerCase(),se=Y.getAttribute("id");se&&se.trim()&&$(S,se.trim());for(const ve of["data-testid","data-test","data-cy","data-qa"]){const Ke=Y.getAttribute(ve);Ke&&Ke.trim()&&$(R,ve+"="+Ke.trim())}const ae=Y.getAttribute("name");ae&&ae.trim()&&Q&&$(M,Q+"|"+ae.trim());const ge=Y.getAttribute("aria-label");ge&&ge.trim()&&Q&&$(j,Q+"|"+ge.trim());const me=Y.getAttribute("role");me&&me.trim()&&ge&&ge.trim()&&$(K,me.trim()+"|"+ge.trim())}return{idCount:S,testIdCount:R,nameCount:M,ariaLabelCount:j,roleAriaLabelCount:K}}function ln(S,R){try{if(!S||S.nodeType!==1)return R||"html";const M=(S.tagName||R||"html").toLowerCase(),j=oe,K=q,Z=S.getAttribute&&S.getAttribute("id");if(Z&&Z.trim())return"#"+j(Z);for(const $ of["data-testid","data-test","data-cy","data-qa"]){const Y=S.getAttribute&&S.getAttribute($);if(Y&&Y.trim())return"["+$+'="'+K(Y)+'"]'}const J=S.getAttribute&&S.getAttribute("name");return J&&J.trim()?M+'[name="'+K(J)+'"]':M}catch{return R||"html"}}function Jn(){const S=Ge();if(!S||!I)return E("uniqIndex.nocache"),on();let R;try{R=I.get(S),R instanceof Map||(R=new Map,I.set(S,R))}catch{return E("uniqIndex.nocache"),on()}const M=g(),j=R.get(M);if(j)return E("uniqIndex.hit"),j;E("uniqIndex.miss");const K=on();try{R.set(M,K)}catch{}return E("uniqIndex.build"),K}function er(S){const R=q;try{let ge=function(de){const he=(de.tagName||"").toLowerCase()||"*";if(!de.parentElement)return he;let Te=1,Oe=de.previousElementSibling;for(;Oe;)(Oe.tagName||"").toLowerCase()===he&&Te++,Oe=Oe.previousElementSibling;let lt=Te>1;if(!lt)for(Oe=de.nextElementSibling;Oe;){if((Oe.tagName||"").toLowerCase()===he){lt=!0;break}Oe=Oe.nextElementSibling}return lt?he+":nth-of-type("+Te+")":he};if(!S||S.nodeType!==1)return"html";const M=oe,j=Jn(),K=(S.tagName||"").toLowerCase(),Z=()=>{const de=S.getAttribute("id");return!de||!de.trim()?null:j&&(j.idCount.get(de.trim())||0)===1?"#"+M(de):null},J=()=>{for(const de of["data-testid","data-test","data-cy","data-qa"]){const he=S.getAttribute(de);if(!he||!he.trim())continue;const Ce=de+"="+he.trim();if(j&&(j.testIdCount.get(Ce)||0)===1)return"["+de+'="'+R(he)+'"]'}return null},$=()=>{const de=S.getAttribute("name");if(!de||!de.trim()||!K)return null;const he=K+"|"+de.trim();return j&&(j.nameCount.get(he)||0)===1?K+'[name="'+R(de)+'"]':null},Y=()=>{const de=S.getAttribute("aria-label");if(!de||!de.trim()||!K)return null;const he=K+"|"+de.trim();return j&&(j.ariaLabelCount.get(he)||0)===1?K+'[aria-label="'+R(de)+'"]':null},Q=()=>{const de=S.getAttribute("role"),he=S.getAttribute("aria-label");if(!de||!de.trim()||!he||!he.trim())return null;const Ce=de.trim()+"|"+he.trim();return j&&(j.roleAriaLabelCount.get(Ce)||0)===1?'[role="'+R(de)+'"][aria-label="'+R(he)+'"]':null},se=Z()||J()||Q()||$()||Y();if(se)return se;const ae=[];let me=S,ve=0;const Ke=v.length<=1;for(;me&&me.nodeType===1&&ve++<20;){let de=null;if(me!==S){const he=(me.tagName||"").toLowerCase(),Ce=me.getAttribute("id");if(Ce&&Ce.trim()&&j&&(j.idCount.get(Ce.trim())||0)===1&&(de="#"+M(Ce)),!de)for(const Te of["data-testid","data-test","data-cy","data-qa"]){const Oe=me.getAttribute(Te);if(Oe&&Oe.trim()&&j&&(j.testIdCount.get(Te+"="+Oe.trim())||0)===1){de="["+Te+'="'+R(Oe)+'"]';break}}if(!de){const Te=me.getAttribute("name");Te&&Te.trim()&&he&&j&&(j.nameCount.get(he+"|"+Te.trim())||0)===1&&(de=he+'[name="'+R(Te)+'"]')}if(!de){const Te=me.getAttribute("aria-label");Te&&Te.trim()&&he&&j&&(j.ariaLabelCount.get(he+"|"+Te.trim())||0)===1&&(de=he+'[aria-label="'+R(Te)+'"]')}}if(me===S)ae.unshift(ge(me));else if(de){ae.unshift(de);break}else ae.unshift(ge(me));if(!me.parentElement||Ke&&v.includes(me))break;me=me.parentElement}const pe=ae.join(" > ")||K||"html";try{if(S&&typeof S.matches=="function"&&S.matches(pe))return pe}catch{}return ln(S,K||"html")}catch{return"html"}}function tr(S){const R=Pt();try{if(R&&S&&typeof S=="object"&&R.has(S))return E("selector.hit"),R.get(S)||"html"}catch{}E("selector.miss");const M=er(S);try{R&&S&&typeof S=="object"&&R.set(S,M)}catch{}return M}function vn(S){if(!S||typeof S!="object")return null;const R=[];let M=S,j=0;try{for(;M&&M.parentElement;){if(j++>=1e4)return null;const K=M.parentElement,Z=Array.prototype.indexOf.call(K.children,M);if(Z<0)return null;R.unshift(Z),M=K}}catch{return null}return R}function nr(S,R){if(S&&typeof S=="object"){const M=vn(S);if(M)return M}if(R&&typeof R=="string"&&u&&typeof u.querySelector=="function"){E("structuralPath.selectorFallback");let M;try{M=u.querySelector(R)}catch{M=null}if(M)return vn(M)}return null}function An(S){if(!Me)return null;try{const R=Me(S,"title"),M=R&&R.present?te(R.value):"";return M||null}catch{return null}}function rr(S){try{if(!O(S))return!1;const R=(S.tagName||"").toLowerCase();if(R==="textarea")return!0;if(R!=="input")return!1;const j=(S.getAttribute&&(S.getAttribute("type")||"text")||"text").toLowerCase().trim()||"text";return j==="text"||j==="search"||j==="tel"||j==="url"||j==="email"||j==="password"||j==="number"}catch{return!1}}function ar(S){if(!Me||!rr(S))return null;try{const R=Me(S,"placeholder"),M=R&&R.present?te(R.value):"";return M||null}catch{return null}}function _n(S){try{const R=Xe(S,null,{});if(R&&R.present&&te(R.value))return!0}catch{}try{const R=rt(S,null,{});if(R&&R.present&&te(R.value))return!0}catch{return!0}try{return!!An(S)}catch{return!1}}function ir(S){if(!O(S))return!1;try{if(ke&&S&&typeof S=="object"&&ke.has(S))return E("labelAssociation.hit"),!!ke.get(S)}catch{}E("labelAssociation.miss");const R=Be(S),M=R.length?R.some(_n):!1;try{ke&&S&&typeof S=="object"&&ke.set(S,!!M)}catch{}return M}function or(S,R,M){if(!O(S))return{method:"none",value:null};try{if(Ie&&S&&typeof S=="object"&&Ie.has(S)){E("labelMethod.hit");const K=Ie.get(S);if(K&&typeof K=="object")return{method:K.method||"none",value:K.value==null?null:String(K.value)}}}catch{}E("labelMethod.miss");let j={method:"none",value:null};if(ir(S))j={method:"label",value:null};else if(De)try{const K=De(S,R,{maxRefs:8}),Z=K&&K.present?te(K.value):"";Z&&(j={method:"aria-labelledby",value:Z})}catch{}if(j.method==="none"&&We)try{const K=We(S),Z=K&&K.present?te(K.value):"";Z&&(j={method:"aria-label",value:Z})}catch{}if(j.method==="none"){const K=An(S);K&&(j={method:"title",value:K})}if(j.method==="none"){const K=ar(S);K&&(j={method:"placeholder",value:K})}try{Ie&&S&&typeof S=="object"&&Ie.set(S,{method:j.method,value:j.value})}catch{}return j}function lr(S){return S==="label"||S==="aria-labelledby"?"strong":S==="aria-label"?"medium":S==="title"||S==="placeholder"?"weak":"none"}function sr(S,R){const M=R&&typeof R=="object"&&!Array.isArray(R)?{...R}:{};return M.__node=S||null,M}function cr(S,R,M){function j(Y,Q){return Y.map(se=>!se||typeof se!="object"||Array.isArray(se)||se.occurrenceOutcome==="fail"||se.occurrenceOutcome==="cantTell"?se:{...se,occurrenceOutcome:Q})}const K=Array.isArray(S)?S:[],Z=Array.isArray(R)?R:[],J=j(K,"fail"),$=j(Z,"cantTell");return K.length?{outcome:"fail",severity:M,occurrences:J.concat($)}:Z.length?{outcome:"cantTell",severity:M,occurrences:$}:{outcome:"pass",severity:"minor",occurrences:[]}}let sn={};try{const S=h||u&&u.defaultView||(typeof vt<"u"&&vt.window?vt.window:null);S&&(S.__a11ycoreSharedCache||(S.__a11ycoreSharedCache={}),S.__a11ycoreSharedCache.contrast||(S.__a11ycoreSharedCache.contrast={}),sn=S.__a11ycoreSharedCache.contrast)}catch{sn={}}const wn={trim:te,computedStyle:B,composedParent:ne,buildSimpleSelector:ln,__contrastSharedCache:sn},kn=Kn({window:h||k,document:u,root:v,includeShadowDom:A,excludeSelectors:m},wn);kn.sharedCache=wn.__contrastSharedCache;const In=Bn({window:h||k,document:u,root:v},{trim:te});function ur(){return s?!1:v.includes(u.documentElement)}return{isValidLanguageTag:w,isRegisteredLanguageSubtag:e,queryAll:it,queryAllDeep:Dt,queryAllSmart:Rt,getOuterHtmlSnippet:Wt,buildSimpleSelector:ln,buildSelector:tr,buildStructuralPath:nr,hasAccessibleName:Zn,isExcluded:et,isAccTreeEligible:ot,isIncludedInAccessibilityTree:Le,isDomVisibleEligible:yt,isWholeDocumentScope:ur,__setActiveRuleExcludeSelectors:f,getEligibilityInfo:an,resolveIdRefs:wt,getTextFromIdRefs:xt,getTextFromIdRefsIdrefEligible:$t,getAriaLabelInfo:We,getAriaLabelledByInfo:De,getAriaNameInfo:Xe,getLandmarkNameInfo:_t,hasLandmarkScopingAncestor:In.hasLandmarkScopingAncestor,getAccessibleNameInfo:ze,getAccessibleDescriptionInfo:Fe,getTextAlternativeInfo:Ue,getContentNameInfo:rt,getRoleInfo:Qt,getFocusableInfo:kt,getVisibilityHintsInfo:Yn,getAttributeInfo:Me,getLabelMethod:or,getLabelStrength:lr,getAssociatedLabelElements:Be,labelContributesAccessibleName:_n,composedParent:ne,hasTruncatedAncestorWalk:ue,getPerfStats:P,resetPerfStats:z,reportOccurrence:sr,resolveTieredOutcome:cr,contrast:kn,aria:In}}),Wn=["not-computable","runtime-dependent","spec-only","equivalence-unknown","judgement-required","out-of-scope"],Un=(function(o){return Wn.indexOf(o)!==-1}),Gn=(function(o){if(!o||typeof o!="object"||Array.isArray(o)||!Un(o.code))return null;const t={code:o.code};return typeof o.needed=="string"&&o.needed.trim()&&(t.needed=o.needed.trim()),o.evidence&&typeof o.evidence=="object"&&!Array.isArray(o.evidence)&&(t.evidence={...o.evidence}),t}),$n=(function(o,t,n,e){function w(z){return Array.isArray(z)?z.map(String).map(H=>H.trim()).filter(Boolean):[]}function u(z){return Array.isArray(z)?z.filter(H=>H&&typeof H=="object"&&!Array.isArray(H)).map(H=>({...H})):[]}function k(z){const H=Array.isArray(z)?z:[],W=new Set;for(const X of H){if(!X||typeof X!="object"||String(X.standard||"").toUpperCase()!=="WCAG")continue;const oe=String(X.requirement||"").trim();oe&&W.add(oe)}return Array.from(W).sort()}const h=n&&typeof n=="object"?n:{},v=typeof h.title=="string"&&h.title.trim()?h.title.trim():t,A=typeof h.description=="string"?h.description:"",p=typeof h.helpUrl=="string"?h.helpUrl:"",m=h.i18n&&typeof h.i18n=="object"&&!Array.isArray(h.i18n)?{...h.i18n}:null,s=w(h.tags).map(z=>z.toLowerCase());s.includes(e)||s.push(e);const c=u(h.normativeMappings),d=k(c),f=u(h.informativeReferences),g=typeof h.defaultSeverity=="string"&&h.defaultSeverity.trim()?h.defaultSeverity.trim():"moderate",i=typeof h.defaultConfidence=="string"&&h.defaultConfidence.trim()?h.defaultConfidence.trim():"medium",a=h.type==="manual"||h.type==="automatic"?h.type:"automatic",r=h.coverage===null||typeof h.coverage=="string"||typeof h.coverage=="object"?h.coverage:null,l=typeof h.ruleInterfaceVersion=="string"&&h.ruleInterfaceVersion.trim()?h.ruleInterfaceVersion.trim():"1.0.0",y=typeof h.ruleVersion=="string"&&h.ruleVersion.trim()?h.ruleVersion.trim():"0.0.0",b=typeof h.normative=="boolean"?h.normative:!0,_=typeof h.atomic=="boolean"?h.atomic:!0,I=typeof h.deprecated=="boolean"?h.deprecated:!1,x=I&&h.deprecation&&typeof h.deprecation=="object"&&!Array.isArray(h.deprecation)?{replacedBy:typeof h.deprecation.replacedBy=="string"&&h.deprecation.replacedBy.trim()?h.deprecation.replacedBy.trim():null,reason:typeof h.deprecation.reason=="string"?h.deprecation.reason.trim():"",sinceVersion:typeof h.deprecation.sinceVersion=="string"?h.deprecation.sinceVersion.trim():""}:null;if(I&&(!x||!x.reason||!x.sinceVersion))throw new Error(`Rule ${o}: meta.deprecated:true requires meta.deprecation.reason and meta.deprecation.sinceVersion`);const C=typeof h.category=="string"&&h.category.trim()?h.category.trim():null,N=typeof h.standard=="string"&&h.standard.trim()?h.standard.trim():null,L=typeof h.applicability=="string"?h.applicability:"",D=typeof h.expectation=="string"?h.expectation:"",F=Array.isArray(h.references)?h.references.slice():[],E=h.requirements===null||typeof h.requirements=="string"||typeof h.requirements=="object"?h.requirements:null,P=h.mappings===null||typeof h.mappings=="string"||typeof h.mappings=="object"?h.mappings:null;if(m){if(typeof m.titleKey!="string"||!m.titleKey.trim())throw new Error(`Rule ${o}: meta.i18n.titleKey must be a non-empty string`);if(m.descriptionKey!=null&&(typeof m.descriptionKey!="string"||!m.descriptionKey.trim()))throw new Error(`Rule ${o}: meta.i18n.descriptionKey must be a non-empty string when provided`)}return{title:v,description:A,i18n:m,helpUrl:p,tags:s,wcagSc:d,normativeMappings:c,informativeReferences:f,defaultSeverity:g,defaultConfidence:i,type:a,coverage:r,ruleInterfaceVersion:l,ruleVersion:y,normative:b,atomic:_,deprecated:I,deprecation:x,category:C,standard:N,applicability:L,expectation:D,references:F,requirements:E,mappings:P}}),Qn=(function(o,t,n,e,w,u,k,h){const v=[];try{let m=function(y){const b=y&&Array.isArray(y.tags)?y.tags:[];return b.includes("wcag2aaa")||b.includes("wcag22aaa")||b.includes("wcag21aaa")?"AAA":b.includes("wcag2aa")||b.includes("wcag22aa")||b.includes("wcag21aa")?"AA":b.includes("wcag2a")||b.includes("wcag22a")||b.includes("wcag21a")?"A":null},s=function(y){const b=typeof y=="string"?y.trim().toUpperCase():"";return b==="A"||b==="AA"||b==="AAA"?b:null},c=function(y,b){if(!b)return!0;const _=p[y],I=p[b];return!_||!I?!1:_<=I},g=function(y){const b=typeof y=="string"?y.trim().toLowerCase():"";return f[b]?b:null},i=function(y,b){return y?b?f[b]>f[y]?b:y:y||null:b||null},r=function(y){return typeof y=="string"&&!!y.trim()},l=function(y){if(!y||typeof y!="object")return null;const b=r(y.id)?y.id.trim():String(y.id||"").trim();if(!b)return null;const _=y.meta&&typeof y.meta=="object"&&!Array.isArray(y.meta)?y.meta:{},I=typeof _.titleKey=="string"&&_.titleKey.trim()?_.titleKey.trim():"",x=typeof _.descriptionKey=="string"&&_.descriptionKey.trim()?_.descriptionKey.trim():"",C=Array.isArray(_.wcagSc)?_.wcagSc.map(String).map(X=>X.trim()).filter(Boolean):[],N=[];N.push(String(k||"a11ycore").toLowerCase()),N.push("composite");const L=["1.3.4","1.3.5","1.3.6","1.4.10","1.4.11","1.4.12","1.4.13","2.1.4","2.2.6","2.3.3","2.5.1","2.5.2","2.5.3","2.5.4","2.5.5","2.5.6","4.1.3"],D=["2.4.11","2.4.12","2.4.13","2.5.7","2.5.8","3.2.6","3.3.7","3.3.8","3.3.9"],F=C.some(X=>D.includes(X)),E=!F&&C.some(X=>L.includes(X)),P=F?"wcag22":E?"wcag21":"wcag2",z=typeof _.level=="string"?_.level.trim().toUpperCase():"";z==="A"?N.push(P+"a"):z==="AA"?N.push(P+"a",P+"aa"):z==="AAA"&&N.push(P+"a",P+"aa",P+"aaa");const H=C.map(X=>{const oe={standard:"WCAG",requirement:X};return(z==="A"||z==="AA"||z==="AAA")&&(oe.level=z),oe}),W=Array.isArray(y.checksIds)?y.checksIds.map(String).map(X=>X.trim()).filter(Boolean):[];return{ruleId:b,title:_.title||b,description:_.description||"",i18n:I||x?{titleKey:I||"",descriptionKey:x||""}:null,helpUrl:"",tags:N,normativeMappings:H,defaultSeverity:"serious",defaultConfidence:"medium",type:"automatic",coverage:null,ruleInterfaceVersion:"1.0.0",ruleVersion:"0.0.0",normative:!0,atomic:!1,deprecated:!1,deprecation:null,category:null,standard:null,applicability:"",expectation:"",references:[],requirements:null,mappings:null,data:{details:{kind:"compositeRule",wcagSc:C,level:typeof _.level=="string"&&_.level.trim()?_.level.trim():null}},__checksIds:W}};const A=Array.isArray(t)?t:[],p={A:1,AA:2,AAA:3},d=m(n),f={minor:1,moderate:2,serious:3,critical:4},a=Object.create(null);for(const y of o)y&&typeof y=="object"&&typeof y.ruleId=="string"&&y.ruleId&&(a[y.ruleId]=y);for(let y=0;y<A.length;y++){const b=A[y],_=l(b);if(!_)continue;const I=_&&_.data&&_.data.details&&s(_.data.details.level);if(!c(I,d))continue;const x=fn(_,e);if(!hn(x,n,k))continue;const C=Array.isArray(_.__checksIds)?_.__checksIds:[];let N=0,L=0,D=0,F=0,E=0;const P=[];let z=null,H=null;for(let q=0;q<C.length;q++){const O=C[q],B=O?a[O]:null;if(!B){E+=1,P.push({testId:O,outcome:"missing"});continue}const G=B.outcome,ne=g(B&&B.severity);P.push({testId:O,outcome:G,severity:ne||null}),G==="fail"&&ne?z=i(z,ne):G==="cantTell"&&ne&&(H=i(H,ne)),G==="fail"?N+=1:G==="cantTell"?L+=1:G==="notApplicable"?D+=1:G==="pass"&&(F+=1)}let W="pass",X="composite.rollup.pass.otherwise";N>0?(W="fail",X="composite.rollup.fail.anyFail"):L>0?(W="cantTell",X="composite.rollup.cantTell.anyCantTell"):E>0?(W="cantTell",X="composite.rollup.cantTell.missingChild"):C.length>0&&D===C.length?(W="notApplicable",X="composite.rollup.notApplicable.allInapplicable"):C.length===0&&(W="cantTell",X="composite.rollup.cantTell.emptyComposite");const oe={outcome:W,occurrences:[],summaryKey:"Composite rule rollup",i18nKey:"composite_rollup_summary",i18nParams:{reasonCode:X,testCount:String(C.length)},data:{details:{reasonCode:X,checksIds:C.slice(),contributors:P,metrics:{failCount:N,cantTellCount:L,notApplicableCount:D,passCount:F,missingCount:E}}},engineOptions:{...e||{},locale:gt(e&&e.locale)}};W==="fail"&&z?oe.severity=z:W==="cantTell"&&H&&(oe.severity=H),v.push(Bt(x,oe,h,w,u))}}catch{}return v}),Xn=(function(o,t,n,e,w,u,k,h,v){function A(B){const G=B&&typeof B=="object"?B:{},ne=G.contrast&&typeof G.contrast=="object"?G.contrast:{},ie=ne.mode==="auditorAssist"?"auditorAssist":"strictConformance",ue=typeof ne.rootCanvasFallback=="string"&&ne.rootCanvasFallback.trim()?ne.rootCanvasFallback.trim():"#ffffff";return{mode:ie,rootCanvasFallback:ue}}const p=n&&typeof n=="object"?{...n,contrast:A(n)}:{contrast:A(null)},m=Mn(On,p),{ctxSelector:s,roots:c}=Dn(document,t),d=!(p&&p.includeShadowDom===!1),f=!!(p&&p.includeHiddenElements===!0),g=bn(p&&p.excludeSelectors),i=!!(p&&p.fragment===!0),a=o||document.location&&document.location.href||null,r=document.title||null,l=p&&typeof p.timestamp=="string"&&p.timestamp.trim()?p.timestamp.trim():null;try{window&&window.__a11ycoreSharedCache&&(window.__a11ycoreSharedCache={})}catch{}const y=Hn({document,window,root:c,includeShadowDom:d,includeHiddenElements:f,excludeSelectors:g,fragment:i,perfStats:!!(p&&p.perfStats)}),_=!!(p&&p.profileRules)?Object.create(null):null;function I(){try{if(typeof performance<"u"&&performance&&typeof performance.now=="function")return performance.now()}catch{}return Date.now()}function x(B,G){if(G<=0||B==null)return null;const ne=typeof B;if(ne==="string")return B.length>2e3?B.slice(0,2e3):B;if(ne==="number")return Number.isFinite(B)?B:null;if(ne==="boolean")return B;if(ne==="function")return null;if(Array.isArray(B)){const ie=[],ue=Math.min(B.length,200);for(let fe=0;fe<ue;fe++)ie.push(x(B[fe],G-1));return ie}if(ne==="object"){const ie={},ue=Object.keys(B).sort(),fe=Math.min(ue.length,50);for(let we=0;we<fe;we++){const te=ue[we];typeof te=="string"&&(ie[te]=x(B[te],G-1))}return ie}return null}let C;try{const B=p&&typeof p.probes=="object"?p.probes:null;C=B?x(B,6):null,(!C||typeof C!="object"||Array.isArray(C))&&(C=null)}catch{C=null}let N=w,L=u,D=[];const F=Array.isArray(p.customRules)?p.customRules:[];if(F.length){let B=function(ie){if(typeof ie=="function")return ie;if(typeof ie=="string"&&ie.trim())try{const ue=new Function("return ("+ie+")")();if(typeof ue=="function")return ue}catch{return null}return null};const G=new Map,ne={};for(const ie of F){if(!ie||typeof ie!="object")continue;const ue=typeof ie.id=="string"?ie.id.trim():"";if(!ue)continue;const fe=B(ie.runInPage);if(typeof fe!="function")continue;const we=B(ie.applicability),te=$n(ue,ue,ie.meta,k);w.some(be=>be&&be.ruleId===ue)&&D.push(ue),G.set(ue,{ruleId:ue,title:te.title,description:te.description,i18n:te.i18n,helpUrl:te.helpUrl,tags:te.tags,wcagSc:te.wcagSc,normativeMappings:te.normativeMappings,defaultSeverity:te.defaultSeverity,defaultConfidence:te.defaultConfidence,type:te.type,coverage:te.coverage,data:ie.data===void 0?null:ie.data,ruleInterfaceVersion:te.ruleInterfaceVersion,ruleVersion:te.ruleVersion,normative:te.normative,atomic:te.atomic,deprecated:te.deprecated,deprecation:te.deprecation,category:te.category,standard:te.standard,applicability:te.applicability,expectation:te.expectation,references:te.references,requirements:te.requirements,mappings:te.mappings}),ne[ue]={run:fe,applicability:we||null}}if(G.size&&(N=w.filter(ie=>!G.has(ie.ruleId)).concat(Array.from(G.values())),L={...u,...ne}),D.length)try{console.warn("[surea11y] customRules overriding built-in rule id(s) for this scan: "+D.join(", "))}catch{}}const E="wcag22-removed",P="2.2";function z(B){const G=typeof B=="string"?B.trim():"";return G==="2.0"||G==="2.1"||G==="2.2"?G:null}function H(B){const G=B&&Array.isArray(B.tags)?B.tags:[];return G.length?G.includes("wcag22a")||G.includes("wcag22aa")||G.includes("wcag22aaa")?"2.2":G.includes("wcag21a")||G.includes("wcag21aa")||G.includes("wcag21aaa")?"2.1":G.includes("wcag2a")||G.includes("wcag2aa")||G.includes("wcag2aaa")?"2.0":null:null}const W=z(p&&p.wcagVersion)||H(e)||P;function X(B,G){if(W!=="2.2"||!G||typeof G!="object"||G.outcome!=="fail"||!(B&&Array.isArray(B.tags)?B.tags:[]).some(fe=>String(fe).toLowerCase()===E))return G;const ie=B&&Array.isArray(B.wcagSc)?B.wcagSc.slice():[],ue=Array.isArray(G.occurrences)?G.occurrences.map(fe=>{if(!fe||typeof fe!="object"||Array.isArray(fe))return fe;const we=fe.occurrenceOutcome==="fail"?{...fe,occurrenceOutcome:"cantTell"}:{...fe};return we.uncertainty||(we.uncertainty={code:"out-of-scope",needed:`Whether this still matters under WCAG ${W}, which removed the criterion it was found against.`,evidence:{removedSc:ie,target:W,findingStands:!0}}),we}):G.occurrences;return{...G,outcome:"cantTell",occurrences:ue,wcagVersionScope:{target:W,removedSc:ie,coercedFrom:"fail"}}}const oe=[];for(const B of N){const G=_?I():0,ne=fn(B,p);if(!hn(ne,e,k))continue;const ie=L[ne.ruleId],ue=ie&&typeof ie.run=="function"?ie.run:null,fe=ie&&typeof ie.applicability=="function"?ie.applicability:null;if(typeof ue!="function")continue;const we=p&&p.rules&&p.rules[ne.ruleId]?p.rules[ne.ruleId]:null;typeof y.__setActiveRuleExcludeSelectors=="function"&&y.__setActiveRuleExcludeSelectors(we&&we.excludeSelectors);const te={document,window,root:c,rule:ne,config:we,helpers:y,engineTag:k,contextSelector:s,engineOptions:p&&typeof p=="object"?p:{},inputs:{probes:C}};if(typeof fe=="function"){let Ve=!0;try{const Ne=fe(te);typeof Ne=="boolean"?Ve=Ne:Ne&&typeof Ne=="object"&&typeof Ne.applicable=="boolean"&&(Ve=Ne.applicable)}catch(Ne){const Me={outcome:"cantTell",occurrences:[],error:String(Ne&&Ne.message?Ne.message:Ne),engineOptions:{...te.engineOptions||{},locale:gt(p&&p.locale)}};oe.push(Bt(ne,Me,h,m,y)),_&&(_[ne.ruleId]=(_[ne.ruleId]||0)+(I()-G));continue}if(!Ve){const Ne={outcome:"notApplicable",occurrences:[],engineOptions:{...te.engineOptions||{},locale:gt(p&&p.locale)}};oe.push(Bt(ne,Ne,h,m,y)),_&&(_[ne.ruleId]=(_[ne.ruleId]||0)+(I()-G));continue}}let be;try{be=ue(te)}catch(Ve){be={outcome:"cantTell",occurrences:[],error:String(Ve&&Ve.message?Ve.message:Ve),engineOptions:{...te.engineOptions||{},locale:gt(p&&p.locale)}}}if(!be||typeof be!="object"){_&&(_[ne.ruleId]=(_[ne.ruleId]||0)+(I()-G));continue}be.engineOptions||(be.engineOptions={...te.engineOptions||{},locale:gt(p&&p.locale)}),oe.push(Bt(ne,X(ne,be),h,m,y)),_&&(_[ne.ruleId]=(_[ne.ruleId]||0)+(I()-G))}typeof y.__setActiveRuleExcludeSelectors=="function"&&y.__setActiveRuleExcludeSelectors(null);const q=Qn(oe,v,e,p,m,y,k,h);let O=null;try{p&&p.perfStats&&y&&typeof y.getPerfStats=="function"&&(O=y.getPerfStats())}catch{O=null}return _&&O&&p&&p.profileRules&&(O.ruleTimings=_),{engine:{tag:k,schemaVersion:h,locale:Nn(p),wcagVersion:W},url:a,title:r,timestamp:l,perfStats:O,contextSelector:s,checksResults:oe,rulesResults:q,overriddenBuiltinIds:D}}),qt="__frame_rpc_v1__",Nt=(function(o){return o.__a11yCoreFrameRpc__||(o.__a11yCoreFrameRpc__={pending:new Map,seq:0,responder:null,listening:!1}),o.__a11yCoreFrameRpc__}),nn=(function(o,t){const n=Nt(o);return n.listening||(o.addEventListener("message",function(w){const u=w&&w.data;if(!u||u.__a11ycore!==!0||u.channel!==t)return;if(u.type==="ping"){try{w.source&&w.source.postMessage({__a11ycore:!0,channel:t,requestId:u.requestId,type:"pong"},"*")}catch{}return}if(u.type==="run"){const h=n.responder;if(typeof h!="function")return;let v;try{v=o.parent&&o.parent!==o?o.parent:null}catch{v=null}if(!v||w.source!==v)return;Promise.resolve().then(function(){return h(u.payload)}).then(function(A){try{w.source&&w.source.postMessage({__a11ycore:!0,channel:t,requestId:u.requestId,type:"result",payload:A},"*")}catch{}}).catch(function(A){try{w.source&&w.source.postMessage({__a11ycore:!0,channel:t,requestId:u.requestId,type:"error",payload:String(A&&A.message?A.message:A)},"*")}catch{}});return}const k=n.pending.get(u.requestId);if(k&&!(k.target&&w.source!==k.target)){if(u.type==="pong"){k.onPong();return}n.pending.delete(u.requestId),u.type==="result"?k.resolve(u.payload):k.reject(new Error(typeof u.payload=="string"?u.payload:"surea11y frame RPC error"))}}),n.listening=!0),n}),yn=(function(o){const t=Nt(o);return t.seq+=1,"req_"+Date.now().toString(36)+"_"+t.seq+"_"+Math.random().toString(36).slice(2,8)}),gr=(function(o,t,n){nn(o,qt);const e=Nt(o),w=yn(o),u=typeof n=="number"?n:500;return new Promise(function(k){let h=!1;const v=setTimeout(function(){h||(h=!0,e.pending.delete(w),k(!1))},u);e.pending.set(w,{target:t,onPong:function(){h||(h=!0,clearTimeout(v),e.pending.delete(w),k(!0))},resolve:function(){},reject:function(){}});try{t.postMessage({__a11ycore:!0,channel:qt,requestId:w,type:"ping"},"*")}catch{h||(h=!0,clearTimeout(v),e.pending.delete(w),k(!1))}})}),hr=(function(o,t,n,e){nn(o,qt);const w=Nt(o),u=yn(o),k=typeof e=="number"?e:6e4;return new Promise(function(h,v){const A=setTimeout(function(){w.pending.delete(u),v(new Error("surea11y frame RPC timed out waiting for a run result"))},k);w.pending.set(u,{target:t,onPong:function(){},resolve:function(p){clearTimeout(A),h(p)},reject:function(p){clearTimeout(A),v(p)}});try{t.postMessage({__a11ycore:!0,channel:qt,requestId:u,type:"run",payload:n},"*")}catch(p){clearTimeout(A),w.pending.delete(u),v(p)}})}),br=(function(o,t){nn(o,qt);const n=Nt(o);return n.responder=t,function(){n.responder===t&&(n.responder=null)}});return Xn(st,ct,Ft,zn(Ft,Yt),cn,Tn,Tt,Cn,Zt)}const Xt=Object.create(null);function Sn(st){const ct=st&&typeof st=="object"?st:{};return Object.keys(Xt).length===0?ct:Object.assign({},ct,{messages:Object.assign({},Xt,ct.messages)})}vt.a11ycore={ENGINE_TAG:"a11ycore",SCHEMA_VERSION:"1.0.0",registerMessages:function(st,ct){typeof st!="string"||!st.trim()||!ct||typeof ct!="object"||(Xt[st.trim()]=ct)},runa11yCoreInPage:function(st,ct,Ft,Yt){return xn(st,ct,Sn(Ft),Yt)}}})(typeof window<"u"?window:this);