[{"data":1,"prerenderedAt":1400},["ShallowReactive",2],{"site-header-nav":3,"page-\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Finterpreting-lighthouse-accessibility-scores\u002F":314,"content-navigation":1248},[4,84,88,216],{"title":5,"path":6,"stem":7,"children":8},"Core Accessibility Principles For Modern Frameworks","\u002Fcore-accessibility-principles-for-modern-frameworks","core-accessibility-principles-for-modern-frameworks",[9,12,18,24,36,48,66,78],{"title":10,"path":6,"stem":11},"Core Accessibility Principles for Modern Frameworks","core-accessibility-principles-for-modern-frameworks\u002Findex",{"title":13,"path":14,"stem":15,"children":16},"Accessible Color Contrast & Theming","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Faccessible-color-contrast-theming","core-accessibility-principles-for-modern-frameworks\u002Faccessible-color-contrast-theming\u002Findex",[17],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21,"children":22},"Accessible Form Validation & Error States","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Faccessible-form-validation-error-states","core-accessibility-principles-for-modern-frameworks\u002Faccessible-form-validation-error-states\u002Findex",[23],{"title":19,"path":20,"stem":21},{"title":25,"path":26,"stem":27,"children":28},"Focus Management Strategies for SPAs","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Ffocus-management-strategies-for-spas","core-accessibility-principles-for-modern-frameworks\u002Ffocus-management-strategies-for-spas\u002Findex",[29,30],{"title":25,"path":26,"stem":27},{"title":31,"path":32,"stem":33,"children":34},"Handling Focus Restoration After Dynamic Route Changes","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Ffocus-management-strategies-for-spas\u002Fhandling-focus-restoration-after-dynamic-route-changes","core-accessibility-principles-for-modern-frameworks\u002Ffocus-management-strategies-for-spas\u002Fhandling-focus-restoration-after-dynamic-route-changes\u002Findex",[35],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39,"children":40},"Keyboard Navigation Patterns for Modals","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Fkeyboard-navigation-patterns-for-modals","core-accessibility-principles-for-modern-frameworks\u002Fkeyboard-navigation-patterns-for-modals\u002Findex",[41,42],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45,"children":46},"Building Accessible Dropdowns Without External UI Kits","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Fkeyboard-navigation-patterns-for-modals\u002Fbuilding-accessible-dropdowns-without-external-ui-kits","core-accessibility-principles-for-modern-frameworks\u002Fkeyboard-navigation-patterns-for-modals\u002Fbuilding-accessible-dropdowns-without-external-ui-kits\u002Findex",[47],{"title":43,"path":44,"stem":45},{"title":49,"path":50,"stem":51,"children":52},"Reduced Motion & Animation Accessibility","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility","core-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility\u002Findex",[53,54,60],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57,"children":58},"Accessible Loading Skeletons and Spinners","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility\u002Faccessible-loading-skeletons-and-spinners","core-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility\u002Faccessible-loading-skeletons-and-spinners\u002Findex",[59],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63,"children":64},"Respecting prefers-reduced-motion in React and CSS","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility\u002Frespecting-prefers-reduced-motion-in-react-and-css","core-accessibility-principles-for-modern-frameworks\u002Freduced-motion-and-animation-accessibility\u002Frespecting-prefers-reduced-motion-in-react-and-css\u002Findex",[65],{"title":61,"path":62,"stem":63},{"title":67,"path":68,"stem":69,"children":70},"Screen Reader Compatibility Testing","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Fscreen-reader-compatibility-testing","core-accessibility-principles-for-modern-frameworks\u002Fscreen-reader-compatibility-testing\u002Findex",[71,72],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75,"children":76},"Testing ARIA Live Regions with Jest and Testing Library","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Fscreen-reader-compatibility-testing\u002Ftesting-aria-live-regions-with-jest-and-testing-library","core-accessibility-principles-for-modern-frameworks\u002Fscreen-reader-compatibility-testing\u002Ftesting-aria-live-regions-with-jest-and-testing-library\u002Findex",[77],{"title":73,"path":74,"stem":75},{"title":79,"path":80,"stem":81,"children":82},"Semantic HTML vs ARIA in Component Trees","\u002Fcore-accessibility-principles-for-modern-frameworks\u002Fsemantic-html-vs-aria-in-component-trees","core-accessibility-principles-for-modern-frameworks\u002Fsemantic-html-vs-aria-in-component-trees\u002Findex",[83],{"title":79,"path":80,"stem":81},{"title":85,"path":86,"stem":87},"Modern Framework Accessibility","\u002F","index",{"title":89,"path":90,"stem":91,"children":92},"React Nextjs Accessibility Patterns","\u002Freact-nextjs-accessibility-patterns","react-nextjs-accessibility-patterns",[93,96,108,132,156,162,180,204],{"title":94,"path":90,"stem":95},"React & Next.js Accessibility Patterns","react-nextjs-accessibility-patterns\u002Findex",{"title":97,"path":98,"stem":99,"children":100},"Accessible Component Libraries in React","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-component-libraries-in-react","react-nextjs-accessibility-patterns\u002Faccessible-component-libraries-in-react\u002Findex",[101,102],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105,"children":106},"Building Accessible Tabs in React Without Radix UI","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-component-libraries-in-react\u002Fbuilding-accessible-tabs-in-react-without-radix-ui","react-nextjs-accessibility-patterns\u002Faccessible-component-libraries-in-react\u002Fbuilding-accessible-tabs-in-react-without-radix-ui\u002Findex",[107],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111,"children":112},"Accessible Data Tables & Grids in React","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids","react-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Findex",[113,114,120,126],{"title":109,"path":110,"stem":111},{"title":115,"path":116,"stem":117,"children":118},"Accessible Pagination for React Data Tables","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Faccessible-pagination-for-react-data-tables","react-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Faccessible-pagination-for-react-data-tables\u002Findex",[119],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123,"children":124},"Building a Sortable Accessible Data Table in React","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Fbuilding-a-sortable-accessible-data-table-in-react","react-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Fbuilding-a-sortable-accessible-data-table-in-react\u002Findex",[125],{"title":121,"path":122,"stem":123},{"title":127,"path":128,"stem":129,"children":130},"Virtualizing Long Lists Accessibly in React","\u002Freact-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Fvirtualizing-long-lists-accessibly-in-react","react-nextjs-accessibility-patterns\u002Faccessible-data-tables-and-grids\u002Fvirtualizing-long-lists-accessibly-in-react\u002Findex",[131],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135,"children":136},"Dynamic Content & State Announcements","\u002Freact-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements","react-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Findex",[137,138,144,150],{"title":133,"path":134,"stem":135},{"title":139,"path":140,"stem":141,"children":142},"Accessible Toast Notifications in React","\u002Freact-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Faccessible-toast-notifications-in-react","react-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Faccessible-toast-notifications-in-react\u002Findex",[143],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"children":148},"Announcing Client-Side Route Changes in React","\u002Freact-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Fannouncing-client-side-route-changes-in-react","react-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Fannouncing-client-side-route-changes-in-react\u002Findex",[149],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153,"children":154},"React Context for Accessibility Preferences","\u002Freact-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Freact-context-for-global-accessibility-preferences","react-nextjs-accessibility-patterns\u002Fdynamic-content-state-announcements\u002Freact-context-for-global-accessibility-preferences\u002Findex",[155],{"title":151,"path":152,"stem":153},{"title":157,"path":158,"stem":159,"children":160},"Form Handling with React Hook Form & A11y","\u002Freact-nextjs-accessibility-patterns\u002Fform-handling-with-react-hook-form-a11y","react-nextjs-accessibility-patterns\u002Fform-handling-with-react-hook-form-a11y\u002Findex",[161],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165,"children":166},"Next.js App Router Accessibility","\u002Freact-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y","react-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y\u002Findex",[167,168,174],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171,"children":172},"Skip Links in Next.js App Router","\u002Freact-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y\u002Fimplementing-skip-links-in-nextjs-app-router","react-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y\u002Fimplementing-skip-links-in-nextjs-app-router\u002Findex",[173],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177,"children":178},"Next.js Dynamic Imports & Keyboard Navigation","\u002Freact-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y\u002Fnextjs-dynamic-imports-and-keyboard-navigation","react-nextjs-accessibility-patterns\u002Fnextjs-app-router-a11y\u002Fnextjs-dynamic-imports-and-keyboard-navigation\u002Findex",[179],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183,"children":184},"React Hooks for Accessibility","\u002Freact-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility","react-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Findex",[185,186,192,198],{"title":181,"path":182,"stem":183},{"title":187,"path":188,"stem":189,"children":190},"Building a useAnnouncer Hook for Live Regions","\u002Freact-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Fbuilding-a-useannouncer-hook-for-live-regions","react-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Fbuilding-a-useannouncer-hook-for-live-regions\u002Findex",[191],{"title":187,"path":188,"stem":189},{"title":193,"path":194,"stem":195,"children":196},"Fixing Focus Trap Issues in React Portals","\u002Freact-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Ffixing-focus-trap-issues-in-react-portals","react-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Ffixing-focus-trap-issues-in-react-portals\u002Findex",[197],{"title":193,"path":194,"stem":195},{"title":199,"path":200,"stem":201,"children":202},"Making React useEffect Accessible for Screen Readers","\u002Freact-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Fmaking-react-useeffect-accessible-for-screen-readers","react-nextjs-accessibility-patterns\u002Freact-hooks-for-accessibility\u002Fmaking-react-useeffect-accessible-for-screen-readers\u002Findex",[203],{"title":199,"path":200,"stem":201},{"title":205,"path":206,"stem":207,"children":208},"Server Components & Client-Side Interactivity","\u002Freact-nextjs-accessibility-patterns\u002Fserver-components-client-side-interactivity","react-nextjs-accessibility-patterns\u002Fserver-components-client-side-interactivity\u002Findex",[209,210],{"title":205,"path":206,"stem":207},{"title":211,"path":212,"stem":213,"children":214},"Accessible Modals in Next.js 14 Server Components","\u002Freact-nextjs-accessibility-patterns\u002Fserver-components-client-side-interactivity\u002Fhandling-accessible-modals-in-nextjs-14-server-components","react-nextjs-accessibility-patterns\u002Fserver-components-client-side-interactivity\u002Fhandling-accessible-modals-in-nextjs-14-server-components\u002Findex",[215],{"title":211,"path":212,"stem":213},{"title":217,"path":218,"stem":219,"children":220},"Testing And Automating Accessibility","\u002Ftesting-and-automating-accessibility","testing-and-automating-accessibility",[221,224,242,260,278,296],{"title":222,"path":218,"stem":223},"Testing & Automating Accessibility","testing-and-automating-accessibility\u002Findex",{"title":225,"path":226,"stem":227,"children":228},"Accessibility Audits with Lighthouse","\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse","testing-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Findex",[229,230,236],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233,"children":234},"Interpreting Lighthouse Accessibility Scores","\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Finterpreting-lighthouse-accessibility-scores","testing-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Finterpreting-lighthouse-accessibility-scores\u002Findex",[235],{"title":231,"path":232,"stem":233},{"title":237,"path":238,"stem":239,"children":240},"Setting Lighthouse CI Accessibility Budgets","\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Fsetting-lighthouse-ci-accessibility-budgets","testing-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Fsetting-lighthouse-ci-accessibility-budgets\u002Findex",[241],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245,"children":246},"Automated Accessibility Testing with axe-core","\u002Ftesting-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core","testing-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002Findex",[247,248,254],{"title":243,"path":244,"stem":245},{"title":249,"path":250,"stem":251,"children":252},"Catching Color Contrast Failures with axe-core","\u002Ftesting-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002Fcatching-color-contrast-failures-with-axe-core","testing-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002Fcatching-color-contrast-failures-with-axe-core\u002Findex",[253],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257,"children":258},"Writing Custom axe-core Rules","\u002Ftesting-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002Fwriting-custom-axe-core-rules","testing-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002Fwriting-custom-axe-core-rules\u002Findex",[259],{"title":255,"path":256,"stem":257},{"title":261,"path":262,"stem":263,"children":264},"Component Testing with jest-axe","\u002Ftesting-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe","testing-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe\u002Findex",[265,266,272],{"title":261,"path":262,"stem":263},{"title":267,"path":268,"stem":269,"children":270},"Debugging jest-axe Violations in CI","\u002Ftesting-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe\u002Fdebugging-jest-axe-violations-in-ci","testing-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe\u002Fdebugging-jest-axe-violations-in-ci\u002Findex",[271],{"title":267,"path":268,"stem":269},{"title":273,"path":274,"stem":275,"children":276},"Testing React Components with jest-axe","\u002Ftesting-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe\u002Ftesting-react-components-with-jest-axe","testing-and-automating-accessibility\u002Fcomponent-testing-with-jest-axe\u002Ftesting-react-components-with-jest-axe\u002Findex",[277],{"title":273,"path":274,"stem":275},{"title":279,"path":280,"stem":281,"children":282},"End-to-End Accessibility Testing with Playwright","\u002Ftesting-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright","testing-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002Findex",[283,284,290],{"title":279,"path":280,"stem":281},{"title":285,"path":286,"stem":287,"children":288},"Asserting Focus Order in Playwright","\u002Ftesting-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002Fasserting-focus-order-in-playwright","testing-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002Fasserting-focus-order-in-playwright\u002Findex",[289],{"title":285,"path":286,"stem":287},{"title":291,"path":292,"stem":293,"children":294},"Keyboard Navigation Tests in Playwright","\u002Ftesting-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002Fkeyboard-navigation-tests-in-playwright","testing-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002Fkeyboard-navigation-tests-in-playwright\u002Findex",[295],{"title":291,"path":292,"stem":293},{"title":297,"path":298,"stem":299,"children":300},"Gating Accessibility in CI\u002FCD Pipelines","\u002Ftesting-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines","testing-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines\u002Findex",[301,302,308],{"title":297,"path":298,"stem":299},{"title":303,"path":304,"stem":305,"children":306},"Accessibility Regression Testing in GitHub Actions","\u002Ftesting-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines\u002Faccessibility-regression-testing-in-github-actions","testing-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines\u002Faccessibility-regression-testing-in-github-actions\u002Findex",[307],{"title":303,"path":304,"stem":305},{"title":309,"path":310,"stem":311,"children":312},"Failing Pull Requests on axe Violations","\u002Ftesting-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines\u002Ffailing-pull-requests-on-axe-violations","testing-and-automating-accessibility\u002Fgating-accessibility-in-ci-cd-pipelines\u002Ffailing-pull-requests-on-axe-violations\u002Findex",[313],{"title":309,"path":310,"stem":311},{"id":315,"title":231,"body":316,"date":1241,"description":1242,"extension":1243,"image":1241,"meta":1244,"modifiedAt":1241,"navigation":555,"noindex":1245,"path":232,"publishedAt":1241,"seo":1246,"stem":233,"updatedAt":1241,"__hash__":1247},"content\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Finterpreting-lighthouse-accessibility-scores\u002Findex.md",{"type":317,"value":318,"toc":1229},"minimark",[319,323,332,338,382,385,390,393,457,464,466,470,481,489,496,610,613,651,660,662,666,669,702,716,723,725,729,732,834,882,892,894,898,901,972,979,981,985,988,1002,1065,1068,1074,1076,1080,1112,1114,1118,1121,1123,1127,1133,1154,1172,1194,1204,1206,1210,1225],[320,321,231],"h1",{"id":322},"interpreting-lighthouse-accessibility-scores",[324,325,326,327,331],"p",{},"A Lighthouse accessibility score is a single number between 0 and 100, and that compression is exactly why it gets misread. Teams celebrate a 100 as \"we're accessible\" and panic at an 88 without knowing whether the gap is one stray icon button or a systemic contrast failure. This guide explains precisely how the number is computed, why the weighting matters for triage, where pass\u002Ffail automated audits end and Lighthouse's own manual audit list begins, and what a paired manual checklist must cover so the score becomes a useful signal instead of a misleading trophy. It builds on the broader ",[328,329,225],"a",{"href":330},"\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002F",".",[324,333,334],{},[335,336,337],"strong",{},"Mapped WCAG 2.1\u002F2.2 Success Criteria:",[339,340,341,353,370,376],"ul",{},[342,343,344,348,349,352],"li",{},[345,346,347],"code",{},"1.4.3 Contrast (Minimum)"," – The ",[345,350,351],{},"color-contrast"," audit is one of the most heavily weighted contributors to the score.",[342,354,355,358,359,362,363,362,366,369],{},[345,356,357],{},"4.1.2 Name, Role, Value"," – Accessible-name audits (",[345,360,361],{},"button-name",", ",[345,364,365],{},"link-name",[345,367,368],{},"image-alt",") carry significant weight.",[342,371,372,375],{},[345,373,374],{},"2.4.3 Focus Order"," – Listed as a manual audit; it never affects the number.",[342,377,378,381],{},[345,379,380],{},"2.1.1 Keyboard"," – Also manual; keyboard operability is invisible to the score.",[383,384],"hr",{},[386,387,389],"h2",{"id":388},"prerequisites","Prerequisites",[324,391,392],{},"Before interpreting a score, generate a JSON report so you can read the underlying data rather than the rounded headline. Run an accessibility-only audit and keep the raw output:",[394,395,400],"pre",{"className":396,"code":397,"language":398,"meta":399,"style":399},"language-bash shiki shiki-themes github-light github-dark","# Produce a JSON report you can inspect for weights and node counts\nnpx lighthouse https:\u002F\u002Fstaging.example.com \\\n  --only-categories=accessibility \\\n  --output=json --output-path=.\u002Flh-a11y.json \\\n  --chrome-flags=\"--headless=new\"\n","bash","",[345,401,402,411,429,437,448],{"__ignoreMap":399},[403,404,407],"span",{"class":405,"line":406},"line",1,[403,408,410],{"class":409},"sJ8bj","# Produce a JSON report you can inspect for weights and node counts\n",[403,412,414,418,422,425],{"class":405,"line":413},2,[403,415,417],{"class":416},"sScJk","npx",[403,419,421],{"class":420},"sZZnC"," lighthouse",[403,423,424],{"class":420}," https:\u002F\u002Fstaging.example.com",[403,426,428],{"class":427},"sj4cs"," \\\n",[403,430,432,435],{"class":405,"line":431},3,[403,433,434],{"class":427},"  --only-categories=accessibility",[403,436,428],{"class":427},[403,438,440,443,446],{"class":405,"line":439},4,[403,441,442],{"class":427},"  --output=json",[403,444,445],{"class":427}," --output-path=.\u002Flh-a11y.json",[403,447,428],{"class":427},[403,449,451,454],{"class":405,"line":450},5,[403,452,453],{"class":427},"  --chrome-flags=",[403,455,456],{"class":420},"\"--headless=new\"\n",[324,458,459,460,463],{},"You should also be comfortable with the idea that Lighthouse's Accessibility category runs ",[345,461,462],{},"axe-core"," under the hood—so every score is ultimately an axe result wearing a Lighthouse hat.",[383,465],{},[386,467,469],{"id":468},"how-the-score-is-computed","How the Score Is Computed",[324,471,472,473,476,477,480],{},"The score is a ",[335,474,475],{},"weighted average of automated audits",", where each audit is a ",[335,478,479],{},"binary pass (1) or fail (0)",". There is no partial credit within an audit. The arithmetic is:",[394,482,487],{"className":483,"code":485,"language":486},[484],"language-text","score = Σ(weightᵢ × passᵢ) \u002F Σ(weightᵢ)   →  scaled to 0–100\n","text",[345,488,485],{"__ignoreMap":399},[324,490,491,492,495],{},"Every audit in the Accessibility category has a weight defined in ",[345,493,494],{},"categories.accessibility.auditRefs",". Read it straight from your report:",[394,497,499],{"className":396,"code":498,"language":398,"meta":399,"style":399},"# List each audit, its weight, and whether it passed — sorted by weight, highest first\nnpx -y jq -r '\n  .categories.accessibility.auditRefs as $refs\n  | $refs | sort_by(-.weight)[]\n  | \"\\(.weight)\\t\\(.id)\\t\\(.weight)\"' lh-a11y.json | head -20\n\n# Cross-reference each ref id with the audit result to see pass\u002Ffail\nnpx -y jq -r '\n  .categories.accessibility.auditRefs[] as $r\n  | (.audits[$r.id]) as $a\n  | select($a.score != null)\n  | \"\\($r.weight)\\t\\($a.score)\\t\\($r.id)\\t\\($a.title)\"' lh-a11y.json | sort -rn\n",[345,500,501,506,522,527,532,550,557,563,576,582,588,594],{"__ignoreMap":399},[403,502,503],{"class":405,"line":406},[403,504,505],{"class":409},"# List each audit, its weight, and whether it passed — sorted by weight, highest first\n",[403,507,508,510,513,516,519],{"class":405,"line":413},[403,509,417],{"class":416},[403,511,512],{"class":427}," -y",[403,514,515],{"class":420}," jq",[403,517,518],{"class":427}," -r",[403,520,521],{"class":420}," '\n",[403,523,524],{"class":405,"line":431},[403,525,526],{"class":420},"  .categories.accessibility.auditRefs as $refs\n",[403,528,529],{"class":405,"line":439},[403,530,531],{"class":420},"  | $refs | sort_by(-.weight)[]\n",[403,533,534,537,540,544,547],{"class":405,"line":450},[403,535,536],{"class":420},"  | \"\\(.weight)\\t\\(.id)\\t\\(.weight)\"'",[403,538,539],{"class":420}," lh-a11y.json",[403,541,543],{"class":542},"szBVR"," |",[403,545,546],{"class":416}," head",[403,548,549],{"class":427}," -20\n",[403,551,553],{"class":405,"line":552},6,[403,554,556],{"emptyLinePlaceholder":555},true,"\n",[403,558,560],{"class":405,"line":559},7,[403,561,562],{"class":409},"# Cross-reference each ref id with the audit result to see pass\u002Ffail\n",[403,564,566,568,570,572,574],{"class":405,"line":565},8,[403,567,417],{"class":416},[403,569,512],{"class":427},[403,571,515],{"class":420},[403,573,518],{"class":427},[403,575,521],{"class":420},[403,577,579],{"class":405,"line":578},9,[403,580,581],{"class":420},"  .categories.accessibility.auditRefs[] as $r\n",[403,583,585],{"class":405,"line":584},10,[403,586,587],{"class":420},"  | (.audits[$r.id]) as $a\n",[403,589,591],{"class":405,"line":590},11,[403,592,593],{"class":420},"  | select($a.score != null)\n",[403,595,597,600,602,604,607],{"class":405,"line":596},12,[403,598,599],{"class":420},"  | \"\\($r.weight)\\t\\($a.score)\\t\\($r.id)\\t\\($a.title)\"'",[403,601,539],{"class":420},[403,603,543],{"class":542},[403,605,606],{"class":416}," sort",[403,608,609],{"class":427}," -rn\n",[324,611,612],{},"Three facts fall out of this formula, and each one shapes how you should react to a given number:",[614,615,616,636,645],"ol",{},[342,617,618,621,622,625,626,629,630,632,633,635],{},[335,619,620],{},"Audits are all-or-nothing."," One ",[345,623,624],{},"\u003Cimg>"," missing ",[345,627,628],{},"alt"," fails the entire ",[345,631,368],{}," audit. A page with 99 perfectly labeled images and one bare one loses the full ",[345,634,368],{}," weight—not one percent of it.",[342,637,638,641,642,644],{},[335,639,640],{},"Weights are uneven, so the score is a triage signal, not an effort meter."," Restoring one heavily weighted audit (",[345,643,351],{},") can lift the score more than fixing several light ones. That makes the weighting genuinely useful for prioritization.",[342,646,647,650],{},[335,648,649],{},"The denominator is automated audits only."," Manual audits and not-applicable audits are excluded entirely, which is the root reason 100 ≠ compliant.",[652,653,654],"blockquote",{},[324,655,656,659],{},[335,657,658],{},"Testing Hook:"," Sort your failing audits by weight before touching code. The highest-weight failure is both the biggest score gain and, usually, the broadest user-facing defect.",[383,661],{},[386,663,665],{"id":664},"passfail-audits-vs-lighthouses-manual-audits","Pass\u002FFail Audits vs. Lighthouse's Manual Audits",[324,667,668],{},"Lighthouse splits its accessibility results into four buckets, and only one of them feeds the number:",[339,670,671,677,683,693],{},[342,672,673,676],{},[335,674,675],{},"Passed audits"," — automated checks that succeeded. Counted in the denominator.",[342,678,679,682],{},[335,680,681],{},"Failed audits"," — automated checks that found a provable defect. These are what lower your score.",[342,684,685,688,689,692],{},[335,686,687],{},"Not applicable"," — audits with no relevant elements on the page (no tables, so ",[345,690,691],{},"td-headers-attr"," is N\u002FA). Excluded from the score.",[342,694,695,698,699],{},[335,696,697],{},"Additional items to manually check"," — the manual audits. ",[335,700,701],{},"These never affect the score at all.",[324,703,704,705,707,708,710,711,715],{},"That last bucket is the crux of interpretation. Lighthouse surfaces manual audits like keyboard operability (",[345,706,380],{},"), logical focus order (",[345,709,374],{},"), and meaningful interactive controls because it knows a static engine cannot verify them. A page can score 100 while being completely unusable by keyboard, because every manual concern sits outside the calculation. The standalone ",[328,712,714],{"href":713},"\u002Ftesting-and-automating-accessibility\u002Fautomated-accessibility-testing-with-axe-core\u002F","axe-core workflow"," draws the same line—automation proves the provable and stays silent on the rest.",[652,717,718],{},[324,719,720,722],{},[335,721,658],{}," After reading the score, scroll to the manual audit list and treat every item as an open question, not a passed check. The score's silence on these is not approval.",[383,724],{},[386,726,728],{"id":727},"common-high-weight-failures","Common High-Weight Failures",[324,730,731],{},"When a score drops, a handful of heavily weighted audits are usually responsible. Recognizing them lets you predict the fix before opening the node list:",[339,733,734,745,761,778,796,815],{},[342,735,736,744],{},[335,737,738,740,741,743],{},[345,739,351],{}," (",[345,742,347],{},")"," — the single most common score-killer. Foreground\u002Fbackground pairs below 4.5:1 (or 3:1 for large text). The report gives you the exact hex pair and failing ratio. A theme token regression can fail this across hundreds of nodes at once.",[342,746,747,756,757,760],{},[335,748,749,751,752,740,754,743],{},[345,750,361],{}," \u002F ",[345,753,365],{},[345,755,357],{}," — icon-only buttons and links with no text and no ",[345,758,759],{},"aria-label",". Common in toolbars, card actions, and pagination.",[342,762,763,770,771,773,774,777],{},[335,764,765,740,767,743],{},[345,766,368],{},[345,768,769],{},"1.1.1 Non-text Content"," — images with no ",[345,772,628],{},". Decorative images need ",[345,775,776],{},"alt=\"\"",", not a missing attribute.",[342,779,780,791,792,795],{},[335,781,782,740,785,362,788,743],{},[345,783,784],{},"label",[345,786,787],{},"1.3.1",[345,789,790],{},"4.1.2"," — form inputs with no associated ",[345,793,794],{},"\u003Clabel>"," or accessible name.",[342,797,798,806,807,810,811,814],{},[335,799,800,740,803,743],{},[345,801,802],{},"heading-order",[345,804,805],{},"1.3.1 Info and Relationships"," — skipped heading levels (an ",[345,808,809],{},"\u003Ch2>"," followed directly by an ",[345,812,813],{},"\u003Ch4>",").",[342,816,817,825,826,829,830,833],{},[335,818,819,740,822,743],{},[345,820,821],{},"html-has-lang",[345,823,824],{},"3.1.1 Language of Page"," — a missing ",[345,827,828],{},"lang"," attribute on ",[345,831,832],{},"\u003Chtml>","; cheap to fix, surprisingly common in SSR shells.",[394,835,837],{"className":396,"code":836,"language":398,"meta":399,"style":399},"# Surface the highest-weight failing audits with their offending node counts\nnpx -y jq -r '\n  .categories.accessibility.auditRefs[] as $r\n  | (.audits[$r.id]) as $a\n  | select($a.score != null and $a.score \u003C 1)\n  | \"\\($r.weight)\\t\\($a.id)\\t\\($a.details.items | length \u002F\u002F 0) nodes\"' lh-a11y.json | sort -rn\n",[345,838,839,844,856,860,864,869],{"__ignoreMap":399},[403,840,841],{"class":405,"line":406},[403,842,843],{"class":409},"# Surface the highest-weight failing audits with their offending node counts\n",[403,845,846,848,850,852,854],{"class":405,"line":413},[403,847,417],{"class":416},[403,849,512],{"class":427},[403,851,515],{"class":420},[403,853,518],{"class":427},[403,855,521],{"class":420},[403,857,858],{"class":405,"line":431},[403,859,581],{"class":420},[403,861,862],{"class":405,"line":439},[403,863,587],{"class":420},[403,865,866],{"class":405,"line":450},[403,867,868],{"class":420},"  | select($a.score != null and $a.score \u003C 1)\n",[403,870,871,874,876,878,880],{"class":405,"line":552},[403,872,873],{"class":420},"  | \"\\($r.weight)\\t\\($a.id)\\t\\($a.details.items | length \u002F\u002F 0) nodes\"'",[403,875,539],{"class":420},[403,877,543],{"class":542},[403,879,606],{"class":416},[403,881,609],{"class":427},[652,883,884],{},[324,885,886,888,889,891],{},[335,887,658],{}," A ",[345,890,351],{}," failure with a high node count almost always traces to a single design token, not many separate bugs. Fix the token and re-audit before chasing individual nodes.",[383,893],{},[386,895,897],{"id":896},"a-manual-checklist-to-pair-with-the-score","A Manual Checklist to Pair with the Score",[324,899,900],{},"The score covers the automated layer; this checklist covers the layer it cannot reach. Run it on every key flow regardless of how green the number is:",[339,902,903,912,921,930,939,954,963],{},[342,904,905,740,908,911],{},[335,906,907],{},"Keyboard reach",[345,909,910],{},"2.1.1",") — Can you reach and operate every interactive control with Tab, Enter, Space, and arrow keys? No mouse.",[342,913,914,740,917,920],{},[335,915,916],{},"No keyboard trap",[345,918,919],{},"2.1.2",") — Can focus always leave a component (modal, menu, embedded widget)?",[342,922,923,740,926,929],{},[335,924,925],{},"Focus order",[345,927,928],{},"2.4.3",") — Does the tab sequence match the visual\u002Freading order?",[342,931,932,740,935,938],{},[335,933,934],{},"Visible focus",[345,936,937],{},"2.4.7",") — Is the focus indicator always visible and high-contrast?",[342,940,941,740,944,362,946,948,949,953],{},[335,942,943],{},"Screen-reader meaning",[345,945,787],{},[345,947,790],{},") — Do controls announce a ",[950,951,952],"em",{},"useful"," name and role, not just a technically present one? \"Button\" and \"Click here\" pass automation but fail users.",[342,955,956,740,959,962],{},[335,957,958],{},"Status messages",[345,960,961],{},"4.1.3",") — Do dynamic updates (toasts, form errors, loading states) announce via live regions at the right moment?",[342,964,965,740,968,971],{},[335,966,967],{},"Zoom and reflow",[345,969,970],{},"1.4.10",") — Does content reflow without horizontal scrolling at 400% zoom?",[324,973,974,975,331],{},"For driving the interaction-heavy items in automation rather than by hand, layer in ",[328,976,978],{"href":977},"\u002Ftesting-and-automating-accessibility\u002Fend-to-end-accessibility-testing-with-playwright\u002F","Playwright-based end-to-end accessibility tests",[383,980],{},[386,982,984],{"id":983},"how-to-verify","How to Verify",[324,986,987],{},"Verify your interpretation with both a tool reading and a manual pass:",[324,989,990,993,994,997,998,1001],{},[335,991,992],{},"Tool check."," Confirm the score's composition matches your understanding. The score in ",[345,995,996],{},"categories.accessibility.score"," (0–1) should equal the weighted pass ratio you can reconstruct from ",[345,999,1000],{},"auditRefs",":",[394,1003,1005],{"className":396,"code":1004,"language":398,"meta":399,"style":399},"# Reconstruct the score from weights and pass\u002Ffail, then compare to the reported value\nnpx -y jq -r '\n  (.categories.accessibility.auditRefs\n    | map(select(.weight > 0))\n    | { num: (map(.weight * ((.audits \u002F\u002F {})[.id].score \u002F\u002F 0)) | add),\n        den: (map(.weight) | add) }) ' lh-a11y.json\n# Reported value for comparison:\nnpx -y jq '.categories.accessibility.score' lh-a11y.json\n",[345,1006,1007,1012,1024,1029,1034,1039,1047,1052],{"__ignoreMap":399},[403,1008,1009],{"class":405,"line":406},[403,1010,1011],{"class":409},"# Reconstruct the score from weights and pass\u002Ffail, then compare to the reported value\n",[403,1013,1014,1016,1018,1020,1022],{"class":405,"line":413},[403,1015,417],{"class":416},[403,1017,512],{"class":427},[403,1019,515],{"class":420},[403,1021,518],{"class":427},[403,1023,521],{"class":420},[403,1025,1026],{"class":405,"line":431},[403,1027,1028],{"class":420},"  (.categories.accessibility.auditRefs\n",[403,1030,1031],{"class":405,"line":439},[403,1032,1033],{"class":420},"    | map(select(.weight > 0))\n",[403,1035,1036],{"class":405,"line":450},[403,1037,1038],{"class":420},"    | { num: (map(.weight * ((.audits \u002F\u002F {})[.id].score \u002F\u002F 0)) | add),\n",[403,1040,1041,1044],{"class":405,"line":552},[403,1042,1043],{"class":420},"        den: (map(.weight) | add) }) '",[403,1045,1046],{"class":420}," lh-a11y.json\n",[403,1048,1049],{"class":405,"line":559},[403,1050,1051],{"class":409},"# Reported value for comparison:\n",[403,1053,1054,1056,1058,1060,1063],{"class":405,"line":565},[403,1055,417],{"class":416},[403,1057,512],{"class":427},[403,1059,515],{"class":420},[403,1061,1062],{"class":420}," '.categories.accessibility.score'",[403,1064,1046],{"class":420},[324,1066,1067],{},"If the reconstructed ratio and the reported score agree, you have read the weighting correctly.",[324,1069,1070,1073],{},[335,1071,1072],{},"Manual check."," Take any page scoring 100 and run the manual checklist above with the keyboard only, then with NVDA (Windows) or VoiceOver (macOS). If you find an unreachable control or a meaningless announcement on a \"perfect\" page, you have proven the central point: the number measures the automated subset, and conformance lives beyond it.",[383,1075],{},[386,1077,1079],{"id":1078},"common-a11y-mistakes","Common a11y Mistakes",[614,1081,1082,1088,1094,1100,1106],{},[342,1083,1084,1087],{},[335,1085,1086],{},"Reading 100 as \"compliant.\""," It means automated audits passed. Manual audits—keyboard, focus order, screen-reader meaning—are excluded from the number by design.",[342,1089,1090,1093],{},[335,1091,1092],{},"Treating the score as linear."," A 7-point drop from one heavy audit is not \"7% broken.\" Binary audits and uneven weights make the score a triage signal, not a defect percentage.",[342,1095,1096,1099],{},[335,1097,1098],{},"Ignoring the manual audit list."," It sits right under the score and contains the checks most likely to break real users.",[342,1101,1102,1105],{},[335,1103,1104],{},"Chasing node counts instead of root causes."," A 200-node contrast failure is usually one token; fix the source, not each node.",[342,1107,1108,1111],{},[335,1109,1110],{},"Comparing scores across different DOM states."," A pre-hydration audit and a post-hydration audit of an SSR app are not comparable; pin the state.",[383,1113],{},[386,1115,1117],{"id":1116},"conclusion","Conclusion",[324,1119,1120],{},"A Lighthouse accessibility score is a weighted, binary, automated-only signal. Read correctly—sorted by weight, with the manual audit list treated as open work and a keyboard\u002Fscreen-reader pass run on every flow—it is a sharp triage tool. Read naively, it is a trophy that hides exactly the failures users feel most. Interpret the number, don't worship it, and pair every score with the manual checklist that the formula can never include.",[383,1122],{},[386,1124,1126],{"id":1125},"frequently-asked-questions","Frequently Asked Questions",[324,1128,1129,1132],{},[335,1130,1131],{},"Why isn't a Lighthouse accessibility score of 100 the same as WCAG compliance?","\nBecause the score only averages automated audits. WCAG conformance also requires success criteria that no static engine can verify—keyboard operability, logical focus order, meaningful screen-reader output, and correctly timed status messages. Lighthouse lists these as manual audits and deliberately excludes them from the number. A 100 is a clean automated baseline; compliance requires the manual layer on top.",[324,1134,1135,1138,1139,1141,1142,1145,1146,362,1148,1150,1151,1153],{},[335,1136,1137],{},"How are audits weighted in the Lighthouse accessibility score?","\nEach automated audit has a weight stored in ",[345,1140,494],{},". The score is the sum of ",[345,1143,1144],{},"weight × pass"," (where pass is 1 or 0) divided by the sum of all weights. Heavily weighted audits like ",[345,1147,351],{},[345,1149,361],{},", and ",[345,1152,368],{}," move the score more than narrow checks, which makes the weighting useful for prioritizing fixes by impact.",[324,1155,1156,1159,1160,1162,1163,1165,1166,1168,1169,1171],{},[335,1157,1158],{},"Why does one missing alt attribute drop my score so much?","\nAudits are binary. The ",[345,1161,368],{}," audit passes only if every relevant image has an accessible alternative; a single bare ",[345,1164,624],{}," fails the whole audit, costing its full weight rather than a proportional fraction. The fix is to add ",[345,1167,628],{}," text (or ",[345,1170,776],{}," for decorative images) to every offending node, then re-audit.",[324,1173,1174,1177,1178,1180,1181,1183,1184,1186,1187,1190,1191,1193],{},[335,1175,1176],{},"Which Lighthouse audits should I fix first to raise the score?","\nSort your failing audits by weight and start at the top—usually ",[345,1179,351],{},", then accessible-name audits like ",[345,1182,361],{}," and ",[345,1185,365],{},". High-weight failures give the largest score gain and typically represent the broadest user-facing defects. Use ",[345,1188,1189],{},"jq"," to list ",[345,1192,1000],{}," by weight against your failing audits to build the priority order.",[324,1195,1196,1199,1200,1203],{},[335,1197,1198],{},"Can I trust automated scores from tools other than Lighthouse?","\nThey share the same fundamental limit. Lighthouse, the standalone ",[328,1201,1202],{"href":713},"axe-core tooling",", and similar engines can only verify what is statically provable. Any automated number—Lighthouse's included—must be paired with manual keyboard and screen-reader testing to claim accessibility.",[383,1205],{},[386,1207,1209],{"id":1208},"related-guides","Related guides",[339,1211,1212,1216,1221],{},[342,1213,1214],{},[328,1215,225],{"href":330},[342,1217,1218],{},[328,1219,237],{"href":1220},"\u002Ftesting-and-automating-accessibility\u002Faccessibility-audits-with-lighthouse\u002Fsetting-lighthouse-ci-accessibility-budgets\u002F",[342,1222,1223],{},[328,1224,243],{"href":713},[1226,1227,1228],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":399,"searchDepth":413,"depth":413,"links":1230},[1231,1232,1233,1234,1235,1236,1237,1238,1239,1240],{"id":388,"depth":413,"text":389},{"id":468,"depth":413,"text":469},{"id":664,"depth":413,"text":665},{"id":727,"depth":413,"text":728},{"id":896,"depth":413,"text":897},{"id":983,"depth":413,"text":984},{"id":1078,"depth":413,"text":1079},{"id":1116,"depth":413,"text":1117},{"id":1125,"depth":413,"text":1126},{"id":1208,"depth":413,"text":1209},null,"Understand what a Lighthouse accessibility score really tells you—how audits are weighted, why a 100 isn't full compliance, and which manual checks the number can't replace.","md",{},false,{"title":231,"description":1242},"Yiq1VLzy9yLt0NIWwbe5LydXTuNp7Oq313xQYxjuY0o",[1249,1288,1289,1352],{"title":5,"path":6,"stem":7,"children":1250},[1251,1252,1255,1258,1264,1270,1279,1285],{"title":10,"path":6,"stem":11},{"title":13,"path":14,"stem":15,"children":1253},[1254],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21,"children":1256},[1257],{"title":19,"path":20,"stem":21},{"title":25,"path":26,"stem":27,"children":1259},[1260,1261],{"title":25,"path":26,"stem":27},{"title":31,"path":32,"stem":33,"children":1262},[1263],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39,"children":1265},[1266,1267],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45,"children":1268},[1269],{"title":43,"path":44,"stem":45},{"title":49,"path":50,"stem":51,"children":1271},[1272,1273,1276],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57,"children":1274},[1275],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63,"children":1277},[1278],{"title":61,"path":62,"stem":63},{"title":67,"path":68,"stem":69,"children":1280},[1281,1282],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75,"children":1283},[1284],{"title":73,"path":74,"stem":75},{"title":79,"path":80,"stem":81,"children":1286},[1287],{"title":79,"path":80,"stem":81},{"title":85,"path":86,"stem":87},{"title":89,"path":90,"stem":91,"children":1290},[1291,1292,1298,1310,1322,1325,1334,1346],{"title":94,"path":90,"stem":95},{"title":97,"path":98,"stem":99,"children":1293},[1294,1295],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105,"children":1296},[1297],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111,"children":1299},[1300,1301,1304,1307],{"title":109,"path":110,"stem":111},{"title":115,"path":116,"stem":117,"children":1302},[1303],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123,"children":1305},[1306],{"title":121,"path":122,"stem":123},{"title":127,"path":128,"stem":129,"children":1308},[1309],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135,"children":1311},[1312,1313,1316,1319],{"title":133,"path":134,"stem":135},{"title":139,"path":140,"stem":141,"children":1314},[1315],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"children":1317},[1318],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153,"children":1320},[1321],{"title":151,"path":152,"stem":153},{"title":157,"path":158,"stem":159,"children":1323},[1324],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165,"children":1326},[1327,1328,1331],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171,"children":1329},[1330],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177,"children":1332},[1333],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183,"children":1335},[1336,1337,1340,1343],{"title":181,"path":182,"stem":183},{"title":187,"path":188,"stem":189,"children":1338},[1339],{"title":187,"path":188,"stem":189},{"title":193,"path":194,"stem":195,"children":1341},[1342],{"title":193,"path":194,"stem":195},{"title":199,"path":200,"stem":201,"children":1344},[1345],{"title":199,"path":200,"stem":201},{"title":205,"path":206,"stem":207,"children":1347},[1348,1349],{"title":205,"path":206,"stem":207},{"title":211,"path":212,"stem":213,"children":1350},[1351],{"title":211,"path":212,"stem":213},{"title":217,"path":218,"stem":219,"children":1353},[1354,1355,1364,1373,1382,1391],{"title":222,"path":218,"stem":223},{"title":225,"path":226,"stem":227,"children":1356},[1357,1358,1361],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233,"children":1359},[1360],{"title":231,"path":232,"stem":233},{"title":237,"path":238,"stem":239,"children":1362},[1363],{"title":237,"path":238,"stem":239},{"title":243,"path":244,"stem":245,"children":1365},[1366,1367,1370],{"title":243,"path":244,"stem":245},{"title":249,"path":250,"stem":251,"children":1368},[1369],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257,"children":1371},[1372],{"title":255,"path":256,"stem":257},{"title":261,"path":262,"stem":263,"children":1374},[1375,1376,1379],{"title":261,"path":262,"stem":263},{"title":267,"path":268,"stem":269,"children":1377},[1378],{"title":267,"path":268,"stem":269},{"title":273,"path":274,"stem":275,"children":1380},[1381],{"title":273,"path":274,"stem":275},{"title":279,"path":280,"stem":281,"children":1383},[1384,1385,1388],{"title":279,"path":280,"stem":281},{"title":285,"path":286,"stem":287,"children":1386},[1387],{"title":285,"path":286,"stem":287},{"title":291,"path":292,"stem":293,"children":1389},[1390],{"title":291,"path":292,"stem":293},{"title":297,"path":298,"stem":299,"children":1392},[1393,1394,1397],{"title":297,"path":298,"stem":299},{"title":303,"path":304,"stem":305,"children":1395},[1396],{"title":303,"path":304,"stem":305},{"title":309,"path":310,"stem":311,"children":1398},[1399],{"title":309,"path":310,"stem":311},1781785524257]