@wcag-checkr/ci 1.0.0-rc.98 → 1.0.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 (117) hide show
  1. package/dist/assets/ErrorBoundary-C_dGDDCo.js +594 -0
  2. package/dist/assets/ai-usage-log-CYyG5MT2.js +1 -0
  3. package/dist/assets/content-script.ts-DUFtdkRn.js +217 -0
  4. package/dist/assets/{content-script.ts-loader-BjJqq5Xq.js → content-script.ts-loader-BhZWdOHh.js} +1 -1
  5. package/dist/assets/copy-ai-fixer-prompt-B-MMXqXA.js +19 -0
  6. package/dist/assets/crash-reporter-KD5f4utB.js +4 -0
  7. package/dist/assets/design-system-audit-DpxJrxnb.js +1 -0
  8. package/dist/assets/devtools-panel-BmQF2Qi9.js +1 -0
  9. package/dist/assets/diff-RnwNJg4F.js +1 -0
  10. package/dist/assets/dom-criterion-analyzers-DoUaJV5C.js +8 -0
  11. package/dist/assets/fraunces-latin-400-normal-6IfK1voy.woff2 +0 -0
  12. package/dist/assets/fraunces-latin-400-normal-NUPT2cO8.woff +0 -0
  13. package/dist/assets/fraunces-latin-500-normal-BTR4KCeb.woff +0 -0
  14. package/dist/assets/fraunces-latin-500-normal-DnGCNyPD.woff2 +0 -0
  15. package/dist/assets/fraunces-latin-600-normal-BFCDtZfi.woff2 +0 -0
  16. package/dist/assets/fraunces-latin-600-normal-DL5QCzvS.woff +0 -0
  17. package/dist/assets/fraunces-latin-ext-400-normal-D8gbi3Gu.woff2 +0 -0
  18. package/dist/assets/fraunces-latin-ext-400-normal-UihxqfOe.woff +0 -0
  19. package/dist/assets/fraunces-latin-ext-500-normal-BMcFk1Xs.woff +0 -0
  20. package/dist/assets/fraunces-latin-ext-500-normal-Z5DV8IzT.woff2 +0 -0
  21. package/dist/assets/fraunces-latin-ext-600-normal-B0Dy4lqi.woff +0 -0
  22. package/dist/assets/fraunces-latin-ext-600-normal-BtzmzP0X.woff2 +0 -0
  23. package/dist/assets/fraunces-vietnamese-400-normal-B65MOf9T.woff +0 -0
  24. package/dist/assets/fraunces-vietnamese-400-normal-CvGt0Ybw.woff2 +0 -0
  25. package/dist/assets/fraunces-vietnamese-500-normal-B-KbxExq.woff +0 -0
  26. package/dist/assets/fraunces-vietnamese-500-normal-GOH_-EGq.woff2 +0 -0
  27. package/dist/assets/fraunces-vietnamese-600-normal-BjlAJixd.woff2 +0 -0
  28. package/dist/assets/fraunces-vietnamese-600-normal-DlAl5EAR.woff +0 -0
  29. package/dist/assets/geist-sans-latin-400-normal-BOaIZNA2.woff +0 -0
  30. package/dist/assets/geist-sans-latin-400-normal-gapTbOY8.woff2 +0 -0
  31. package/dist/assets/geist-sans-latin-500-normal-CN2lyvyL.woff +0 -0
  32. package/dist/assets/geist-sans-latin-500-normal-uokXdC-Q.woff2 +0 -0
  33. package/dist/assets/geist-sans-latin-600-normal-CA1yjETN.woff +0 -0
  34. package/dist/assets/geist-sans-latin-600-normal-DFOURf8L.woff2 +0 -0
  35. package/dist/assets/geist-sans-latin-700-normal-BmN9tIp5.woff2 +0 -0
  36. package/dist/assets/geist-sans-latin-700-normal-CjScfYeH.woff +0 -0
  37. package/dist/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  38. package/dist/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  39. package/dist/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
  40. package/dist/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
  41. package/dist/assets/jetbrains-mono-cyrillic-600-normal-8K4wrrwR.woff +0 -0
  42. package/dist/assets/jetbrains-mono-cyrillic-600-normal-EVf6-Yzo.woff2 +0 -0
  43. package/dist/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  44. package/dist/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  45. package/dist/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
  46. package/dist/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
  47. package/dist/assets/jetbrains-mono-greek-600-normal-H7WoG9Et.woff2 +0 -0
  48. package/dist/assets/jetbrains-mono-greek-600-normal-mc2nkWzM.woff +0 -0
  49. package/dist/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  50. package/dist/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  51. package/dist/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
  52. package/dist/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
  53. package/dist/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff +0 -0
  54. package/dist/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2 +0 -0
  55. package/dist/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  56. package/dist/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  57. package/dist/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
  58. package/dist/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
  59. package/dist/assets/jetbrains-mono-latin-ext-600-normal-BfB_LPfz.woff2 +0 -0
  60. package/dist/assets/jetbrains-mono-latin-ext-600-normal-DObL3zCW.woff +0 -0
  61. package/dist/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  62. package/dist/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
  63. package/dist/assets/jetbrains-mono-vietnamese-600-normal-OWROknRo.woff +0 -0
  64. package/dist/assets/offscreen-BAvM-6sh.js +1 -0
  65. package/dist/assets/options-D_6nRFjj.js +6 -0
  66. package/dist/assets/parallel-tab-flow-DjD6Nlor.js +1 -0
  67. package/dist/assets/pdf-DfaD4CCm.js +13 -0
  68. package/dist/assets/pdf.worker-B4IDxXWI.js +1 -0
  69. package/dist/assets/pdf.worker-ByF8NTMy.mjs +62201 -0
  70. package/dist/assets/rubric-config-client-DvjbA4nG.js +1 -0
  71. package/dist/assets/scheduled-audit-runner-ZCuDk8-r.js +2019 -0
  72. package/dist/assets/service-worker.ts-CvO1EqpM.js +2 -0
  73. package/dist/assets/side-panel-Cq-w2yTn.css +1 -0
  74. package/dist/assets/side-panel-DaVp_XgU.js +4 -0
  75. package/dist/assets/site-report-renderer-MWuVmKOh.js +248 -0
  76. package/dist/assets/styles-BJICDw6s.css +1 -0
  77. package/dist/assets/{styles-DhnON7zr.js → styles-B_kTykZT.js} +12 -12
  78. package/dist/assets/tier-config-client-85XOCE5d.js +1 -0
  79. package/dist/assets/zip-encoder-CtULHXx_.js +1 -0
  80. package/dist/devtools/panel.html +9 -7
  81. package/dist/manifest.json +10 -11
  82. package/dist/offscreen/offscreen.html +12 -0
  83. package/dist/options/options.html +6 -6
  84. package/dist/service-worker-loader.js +1 -1
  85. package/dist/side-panel/side-panel.html +13 -7
  86. package/package.json +2 -1
  87. package/wcagcheckr-ci.mjs +238 -39
  88. package/dist/assets/ErrorBoundary-C2WBadbU.js +0 -544
  89. package/dist/assets/ai-usage-log-Dj9Ub_DT.js +0 -1
  90. package/dist/assets/content-script.ts-vGsvD70K.js +0 -181
  91. package/dist/assets/copy-ai-fixer-prompt-DDYcXAe7.js +0 -19
  92. package/dist/assets/crash-reporter-Dc5lvxvY.js +0 -4
  93. package/dist/assets/devtools-panel-CSy65hq-.js +0 -1
  94. package/dist/assets/diff-DIBMr3fQ.js +0 -1
  95. package/dist/assets/dom-criterion-analyzers-C2gMp3xS.js +0 -1
  96. package/dist/assets/forensic-log-D-KXUwm8.js +0 -129
  97. package/dist/assets/options-Byz5A0JD.js +0 -6
  98. package/dist/assets/parallel-tab-flow-BUjkjlHH.js +0 -1
  99. package/dist/assets/service-worker.ts-DwSYhM1S.js +0 -954
  100. package/dist/assets/side-panel-DIo5JGlH.js +0 -1
  101. package/dist/assets/site-report-renderer-D8y25osg.js +0 -147
  102. package/dist/assets/state-BIsozXtc.js +0 -1
  103. package/dist/assets/styles-Bh3rgVbO.css +0 -1
  104. package/dist/side-panel/App.tsx +0 -193
  105. package/dist/side-panel/README.md +0 -57
  106. package/dist/side-panel/audit-launcher.test.ts +0 -56
  107. package/dist/side-panel/audit-launcher.ts +0 -65
  108. package/dist/side-panel/format-component-id.test.ts +0 -89
  109. package/dist/side-panel/format-component-id.ts +0 -40
  110. package/dist/side-panel/github-issue.test.ts +0 -102
  111. package/dist/side-panel/github-issue.ts +0 -66
  112. package/dist/side-panel/jira-issue.ts +0 -64
  113. package/dist/side-panel/main.tsx +0 -19
  114. package/dist/side-panel/store.ts +0 -289
  115. package/dist/side-panel/styles.css +0 -16
  116. package/dist/side-panel/wire-messaging.test.ts +0 -202
  117. package/dist/side-panel/wire-messaging.ts +0 -288
@@ -0,0 +1,248 @@
1
+ import{T as y,aM as C,aN as R}from"./scheduled-audit-runner-ZCuDk8-r.js";import"./preload-helper-D7HrI6pR.js";import"./crash-reporter-KD5f4utB.js";import"./diff-RnwNJg4F.js";import"./ai-usage-log-CYyG5MT2.js";const x={A:"#15803d",B:"#4d7c0f",C:"#a16207",D:"#dc2626",F:"#7f1d1d"},S={low:"#15803d",moderate:"#a16207",high:"#dc2626",critical:"#7f1d1d"},f={critical:"#7f1d1d",serious:"#dc2626",moderate:"#a16207",minor:"#4d7c0f"},$={critical:"#fca5a5",serious:"#fdba74",moderate:"#fcd34d",minor:"#bef264"};function n(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function v(e){if(e<1e3)return`${e}ms`;const t=Math.round(e/100)/10;if(t<60)return`${t}s`;const a=Math.floor(t/60),s=Math.round(t-a*60);return`${a}m ${s}s`}function F(e){return`<span style="display:inline-block;background:${x[e]};color:#fff;font-weight:700;padding:2px 10px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${e}</span>`}const u={A:"#047857",C:"#a16207",D:"#c2410c",F:"#be123c"};function G(e){return`<span style="display:inline-block;background:${u[e]};color:#fff;font-weight:700;padding:2px 10px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${e}</span>`}function D(e){return y(e.findingGroups??[]).map(t=>{const a=[...new Set(t.pages.map(s=>s.url))];return{ruleId:t.ruleId,description:t.axeDescription,impact:t.impact,urlsAffected:a.length,totalOccurrences:t.totalOccurrences,sampleUrls:a.slice(0,5)}}).sort((t,a)=>a.urlsAffected-t.urlsAffected||a.totalOccurrences-t.totalOccurrences)}function h(e){return`<span style="display:inline-block;background:${S[e]};color:#fff;font-weight:600;padding:2px 10px;border-radius:12px;font-size:11px;text-transform:uppercase;letter-spacing:0.05em;">${e}</span>`}function I(e){return`<span style="display:inline-block;background:${f[e]};color:#fff;font-weight:600;padding:1px 8px;border-radius:10px;font-size:11px;">${e}</span>`}function O(e,t){var s;const a=`
2
+ ${e.pagesAudited} page${e.pagesAudited===1?"":"s"} audited
3
+ ${e.pagesFailed>0?`· <span style="color:#fca5a5;">${e.pagesFailed} failed</span>`:""}
4
+ · ${v(e.totalDurationMs)}
5
+ · started ${new Date(e.startedAt).toLocaleString()}`;if(t){const i=y(e.findingGroups??[]),d={critical:0,serious:0,moderate:0,minor:0};for(const o of i)d[o.impact]+=1;return`
6
+ <section style="background:#0f172a;color:#fff;padding:32px 40px;border-radius:8px;margin-bottom:24px;">
7
+ <div style="display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;">
8
+ <div>
9
+ <p style="margin:0 0 8px;font-size:13px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.08em;">Lawsuit-target risk · whole site</p>
10
+ <h1 style="margin:0 0 6px;font-size:24px;">${n(e.startUrl)}</h1>
11
+ <p style="margin:0;font-size:13px;color:#cbd5e1;">${a}</p>
12
+ </div>
13
+ <div style="text-align:right;">
14
+ <div style="display:inline-block;background:${u[t.letter]};color:#fff;font-size:64px;font-weight:800;width:96px;height:96px;line-height:96px;text-align:center;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${t.letter}</div>
15
+ <div style="margin-top:8px;">${h(t.tier)}</div>
16
+ </div>
17
+ </div>
18
+ <div style="margin-top:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;">
19
+ ${["critical","serious","moderate","minor"].map(o=>`
20
+ <div style="background:#1e293b;padding:10px 14px;border-radius:6px;">
21
+ <div style="font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.06em;">${o}</div>
22
+ <div style="font-size:24px;font-weight:700;color:${$[o]};">${d[o]}</div>
23
+ </div>
24
+ `).join("")}
25
+ <div style="background:#1e293b;padding:10px 14px;border-radius:6px;">
26
+ <div style="font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.06em;">Lawsuit-target findings</div>
27
+ <div style="font-size:24px;font-weight:700;color:${i.length>0?"#fca5a5":"#fff"};">${i.length}</div>
28
+ </div>
29
+ </div>
30
+ <p style="margin:18px 0 0;font-size:12px;color:#cbd5e1;line-height:1.5;">
31
+ <strong>${n(t.tier)} risk.</strong> ${n(t.headline)}<br/>
32
+ This is a <strong>lawsuit-target exposure</strong> grade — how easily automated demand-letter scanners flag this site — <strong>not</strong> a WCAG conformance grade. For a full WCAG 2.1 AA assessment across every criterion, switch to Power or Dev mode in the extension.
33
+ </p>
34
+ </section>
35
+ `}return`
36
+ <section style="background:#0f172a;color:#fff;padding:32px 40px;border-radius:8px;margin-bottom:24px;">
37
+ <div style="display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;">
38
+ <div>
39
+ <p style="margin:0 0 8px;font-size:13px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.08em;">Site-wide audit</p>
40
+ <h1 style="margin:0 0 6px;font-size:24px;">${n(e.startUrl)}</h1>
41
+ <p style="margin:0;font-size:13px;color:#cbd5e1;">${a}</p>
42
+ </div>
43
+ <div style="text-align:right;">
44
+ <div style="display:inline-block;background:${x[e.siteGrade]};color:#fff;font-size:64px;font-weight:800;width:96px;height:96px;line-height:96px;text-align:center;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${e.siteGrade}</div>
45
+ <div style="margin-top:8px;">${h(e.siteRisk)}</div>
46
+ </div>
47
+ </div>
48
+ <div style="margin-top:20px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;">
49
+ ${["critical","serious","moderate","minor"].map(i=>`
50
+ <div style="background:#1e293b;padding:10px 14px;border-radius:6px;">
51
+ <div style="font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.06em;">${i}</div>
52
+ <div style="font-size:24px;font-weight:700;color:${$[i]};">${e.totals[i]}</div>
53
+ </div>
54
+ `).join("")}
55
+ <div style="background:#1e293b;padding:10px 14px;border-radius:6px;">
56
+ <div style="font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.06em;">Axe violations</div>
57
+ <div style="font-size:24px;font-weight:700;color:#fff;">${e.totalUniqueViolations}</div>
58
+ </div>
59
+ <div style="background:#1e293b;padding:10px 14px;border-radius:6px;">
60
+ <div style="font-size:11px;color:#94a3b8;text-transform:uppercase;letter-spacing:0.06em;">AI walkthrough findings</div>
61
+ <div style="font-size:24px;font-weight:700;color:${e.totalWalkthroughFindings>0?"#fca5a5":"#fff"};">${e.totalWalkthroughFindings??0}</div>
62
+ </div>
63
+ </div>
64
+ <p style="margin:18px 0 0;font-size:12px;color:#cbd5e1;line-height:1.5;">
65
+ <strong>Grade:</strong> ${n(C(e.siteGrade,{moderateCount:e.totals.moderate,blockingCriteriaCount:((s=e.blockingCriteria)==null?void 0:s.length)??0}))}<br/>
66
+ <strong>Risk:</strong> ${n(R[e.siteRisk])}
67
+ </p>
68
+ </section>
69
+ `}function T(e,t=!1){const a=t?"Top lawsuit-target findings":"Top site-wide violations";if(e.length===0)return`
70
+ <section style="margin-bottom:24px;">
71
+ <h2 style="margin:0 0 8px;font-size:18px;">${a}</h2>
72
+ <p style="color:#16a34a;font-weight:500;">${t?"No findings of the kind automated demand-letter scanners commonly flag (missing alt text, low contrast, unlabeled controls, missing page language/title, link/button names). That keeps this site off the easy-target list — but it is not a WCAG conformance claim. For a full WCAG 2.1 AA assessment across every criterion, switch to Power or Dev mode.":"No violations detected across the layers that ran: axe-core (rule-based automation), wcagcheckr DOM analyzers (state-matrix + structural heuristics), AI walkthroughs (keyboard / vision / DOM-walk over 6 hard-to-automate criteria), and cross-page comparators (consistency criteria on crawls). All 50 applicable WCAG 2.1 AA criteria have at least one evaluation path here. Some criteria still benefit from human spot-checks: caption accuracy, audio-description quality, sensory cues, and complex screen-reader narrative — see the manual checklist if pursuing a formal conformance claim."}</p>
73
+ </section>
74
+ `;const s=e.slice(0,20).map(i=>`
75
+ <tr style="border-top:1px solid #e2e8f0;">
76
+ <td style="padding:8px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;">${n(i.ruleId)}</td>
77
+ <td style="padding:8px 12px;">${I(i.impact)}</td>
78
+ <td style="padding:8px 12px;text-align:right;font-weight:600;">${i.urlsAffected}</td>
79
+ <td style="padding:8px 12px;text-align:right;">${i.totalOccurrences}</td>
80
+ <td style="padding:8px 12px;font-size:13px;color:#475569;">${n(i.description)}</td>
81
+ </tr>
82
+ `).join("");return`
83
+ <section style="margin-bottom:24px;">
84
+ <h2 style="margin:0 0 8px;font-size:18px;">${a}</h2>
85
+ <p style="color:#64748b;font-size:13px;margin:0 0 12px;">
86
+ Sorted by blast radius — fix these first to clear the most pages with the least work.
87
+ </p>
88
+ <table style="width:100%;border-collapse:collapse;font-size:13px;">
89
+ <thead>
90
+ <tr style="background:#f1f5f9;text-align:left;">
91
+ <th style="padding:8px 12px;">Rule</th>
92
+ <th style="padding:8px 12px;">Impact</th>
93
+ <th style="padding:8px 12px;text-align:right;">URLs affected</th>
94
+ <th style="padding:8px 12px;text-align:right;">Total nodes</th>
95
+ <th style="padding:8px 12px;">Description</th>
96
+ </tr>
97
+ </thead>
98
+ <tbody>${s}</tbody>
99
+ </table>
100
+ </section>
101
+ `}function L(e,t,a){const s=new Map;for(const o of t)if(!o.needsReview)for(const p of o.pages){const l=s.get(p.url)??[];l.push({ruleId:o.ruleId,impact:o.impact,selector:p.selector,description:o.axeDescription,wcagCriterion:o.wcagCriterion}),s.set(p.url,l)}const i={critical:0,serious:1,moderate:2,minor:3};for(const o of s.values())o.sort((p,l)=>(i[p.impact]??99)-(i[l.impact]??99));const d=e.map((o,p)=>{const l=s.get(o.url)??[],c=a?[]:o.walkthroughFindings??[],g=a?[]:o.walkthroughAcknowledgements??[],m=l.length+c.length>0||g.length>0||!!o.error,b=`
102
+ <summary style="cursor:${m?"pointer":"default"};list-style:${m?"revert":"none"};padding:10px 12px;display:flex;align-items:center;gap:12px;border-top:1px solid #e2e8f0;">
103
+ <span style="color:#64748b;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;min-width:28px;">${p+1}</span>
104
+ ${a?G(a.perUrlLetter[o.url]??"A"):F(o.grade)}
105
+ ${a?"":h(o.risk)}
106
+ <!-- rc.390 — URL is plain text here (the page-open link moved into the
107
+ expanded detail). An <a> inside <summary> is nested-interactive +
108
+ a sub-24px touch target. -->
109
+ <span
110
+ style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#475569;flex:1;word-break:break-all;"
111
+ >${n(o.url)}</span>
112
+ <span style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;color:#475569;white-space:nowrap;">
113
+ ${l.length>0?`<strong style="color:#b91c1c;">${l.length} axe</strong>`:'<span style="color:#475569;">0 axe</span>'}
114
+ ${c.length>0?` · <strong style="color:#b91c1c;">${c.length} walkthru</strong>`:g.length>0?` · <span style="color:#15803d;">${g.length} ✓ack</span>`:""}
115
+ </span>
116
+ <span style="color:#475569;font-size:11px;white-space:nowrap;">${v(o.durationMs)}</span>
117
+ </summary>`;if(!m)return`<details>${b}</details>`;const w=o.error?`<p style="color:#dc2626;font-size:13px;margin:0;padding:8px 12px 0;">⚠ ${n(o.error)}</p>`:"",k=l.length===0?"":`
118
+ <h4 style="margin:12px 12px 4px;font-size:13px;color:#475569;">Axe findings (${l.length})</h4>
119
+ <ul style="margin:0;padding:0 12px 8px 28px;font-size:12px;line-height:1.5;">
120
+ ${l.map(r=>`
121
+ <li style="margin-bottom:4px;">
122
+ <span style="display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;color:${f[r.impact]??"#475569"};margin-right:6px;">${n(r.impact)}</span>
123
+ <code style="background:#f1f5f9;padding:1px 4px;border-radius:2px;">${n(r.ruleId)}</code>
124
+ ${r.wcagCriterion?` · <span style="color:#64748b;">${n(r.wcagCriterion)}</span>`:""}
125
+ <br>
126
+ <span style="color:#475569;">${n(r.description)}</span><br>
127
+ <code style="font-size:11px;color:#475569;word-break:break-all;">${n(r.selector)}</code>
128
+ </li>
129
+ `).join("")}
130
+ </ul>`,A=c.length===0?"":`
131
+ <h4 style="margin:12px 12px 4px;font-size:13px;color:#475569;">AI walkthrough findings (${c.length})</h4>
132
+ <ul style="margin:0;padding:0 12px 8px 28px;font-size:12px;line-height:1.5;">
133
+ ${c.map(r=>`
134
+ <li style="margin-bottom:6px;">
135
+ <span style="display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600;color:${r.verdict==="fail"?f.serious:f.moderate};margin-right:6px;">${n(r.verdict)}</span>
136
+ <code style="background:#f1f5f9;padding:1px 4px;border-radius:2px;">${n(r.criterionId)}</code>
137
+ <br>
138
+ <span style="color:#475569;">${n(r.reasoning)}</span>
139
+ </li>
140
+ `).join("")}
141
+ </ul>`,z=g.length===0?"":`
142
+ <h4 style="margin:12px 12px 4px;font-size:13px;color:#059669;">Human verified (${g.length})</h4>
143
+ <ul style="margin:0;padding:0 12px 8px 28px;font-size:12px;line-height:1.5;color:#065f46;">
144
+ ${g.map(r=>`
145
+ <li><code style="background:#ecfdf5;padding:1px 4px;border-radius:2px;">${n(r.criterionId)}</code> — original AI verdict: ${n(r.verdict)}; human verification recorded.</li>
146
+ `).join("")}
147
+ </ul>`,M=`
148
+ <div style="padding:8px 12px 12px;font-size:12px;color:#475569;">
149
+ <a href="${n(o.url)}" target="_blank" rel="noopener noreferrer"
150
+ style="color:#1d4ed8;font-weight:600;display:inline-block;padding:4px 0;">Open this page in a new tab →</a><br>
151
+ Then use the wcagcheckr side panel for per-finding acknowledgements and re-runs.
152
+ </div>`;return`
153
+ <details style="border-top:1px solid #e2e8f0;background:#fff;">
154
+ ${b}
155
+ <div style="background:#f8fafc;padding:0 0 4px;">
156
+ ${w}
157
+ ${k}
158
+ ${A}
159
+ ${z}
160
+ ${M}
161
+ </div>
162
+ </details>`}).join("");return`
163
+ <section style="margin-bottom:24px;">
164
+ <h2 style="margin:0 0 8px;font-size:18px;">Pages (${e.length})</h2>
165
+ <p style="color:#64748b;font-size:13px;margin:0 0 12px;">
166
+ Sorted worst-first. Errored pages bubble to the top with grade F. <strong>Click any row</strong>
167
+ to expand and see what's wrong on that page; click the URL itself to open the audited page
168
+ in a new browser tab.
169
+ </p>
170
+ <div style="border:1px solid #e2e8f0;border-radius:6px;overflow:hidden;font-size:13px;">
171
+ ${d}
172
+ </div>
173
+ </section>
174
+ `}function U(e){const t=e.blockingCriteria??[];if(t.length===0)return"";const a={untested:{label:"no evidence",bg:"#64748b"},inconclusive:{label:"inconclusive",bg:"#a16207"},failing:{label:"failing",bg:"#dc2626"}};return`
175
+ <section style="margin-top:24px;padding:16px 18px;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc;">
176
+ <h2 style="margin:0 0 8px;font-size:16px;color:#0f172a;">
177
+ Criteria still needing your judgment
178
+ <span style="font-weight:400;font-size:13px;color:#64748b;">(${t.length})</span>
179
+ </h2>
180
+ <p style="margin:0 0 12px;font-size:12px;color:#475569;line-height:1.5;">
181
+ These WCAG 2.1 AA criteria do not yet have affirmative pass/N/A evidence. Open the extension side panel and expand the "Coverage gaps" panel under the grade to record a verdict for each. Once every blocker has a verdict, the site grade lifts to A.
182
+ </p>
183
+ <ol style="margin:0;padding-left:18px;font-size:12px;color:#0f172a;">
184
+ ${t.map(s=>{const i=a[s.state];return`<li style="margin-bottom:6px;">
185
+ <span style="display:inline-block;padding:1px 6px;border-radius:3px;background:${i.bg};color:#fff;font-size:10px;font-weight:600;text-transform:lowercase;">${n(i.label)}</span>
186
+ <code style="font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;">WCAG ${n(s.criterionId)}</code>
187
+ <span style="color:#334155;">— ${n(s.title)}</span>
188
+ </li>`}).join("")}
189
+ </ol>
190
+ </section>
191
+ `}function j(e,t){const a=e.pages.length||1;if(t){const i={A:0,C:0,D:0,F:0};for(const o of e.pages)i[t.perUrlLetter[o.url]??"A"]+=1;return`
192
+ <section style="margin-bottom:24px;">
193
+ <h2 style="margin:0 0 8px;font-size:18px;">Pages by lawsuit-target grade</h2>
194
+ ${["A","C","D","F"].map(o=>{const p=i[o],l=p/a*100;return`
195
+ <div style="display:flex;align-items:center;gap:10px;font-size:13px;margin:4px 0;">
196
+ <div style="width:24px;font-weight:700;color:${u[o]};font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${o}</div>
197
+ <div style="flex:1;background:#e2e8f0;border-radius:3px;height:18px;overflow:hidden;">
198
+ <div style="height:100%;width:${l}%;background:${u[o]};"></div>
199
+ </div>
200
+ <div style="width:60px;text-align:right;color:#475569;">${p} page${p===1?"":"s"}</div>
201
+ </div>`}).join("")}
202
+ </section>
203
+ `}return`
204
+ <section style="margin-bottom:24px;">
205
+ <h2 style="margin:0 0 8px;font-size:18px;">Pages by grade</h2>
206
+ ${["A","B","C","D","F"].map(i=>{const d=e.pagesByGrade[i],o=d/a*100;return`
207
+ <div style="display:flex;align-items:center;gap:10px;font-size:13px;margin:4px 0;">
208
+ <div style="width:24px;font-weight:700;color:${x[i]};font-family:ui-monospace,SFMono-Regular,Menlo,monospace;">${i}</div>
209
+ <div style="flex:1;background:#e2e8f0;border-radius:3px;height:18px;overflow:hidden;">
210
+ <div style="height:100%;width:${o}%;background:${x[i]};"></div>
211
+ </div>
212
+ <div style="width:60px;text-align:right;color:#475569;">${d} page${d===1?"":"s"}</div>
213
+ </div>
214
+ `}).join("")}
215
+ </section>
216
+ `}function N(e,t){const a=t?`Lawsuit-target risk · ${n(e.startUrl)}`:`WCAG site audit · ${n(e.startUrl)}`,s=t?D(e):e.topViolations,i=t?"":U(e),d=t?y(e.findingGroups??[]):e.findingGroups??[],o=t?`Generated by wcagcheckr · owner / lawsuit-target lens · site-mode crawl from ${n(e.startUrl)} · finished ${new Date(e.finishedAt).toLocaleString()}.
217
+ <br/>This report covers <strong>only</strong> the issues automated demand-letter scanners commonly flag (the lawsuit-target lens). It is <strong>not</strong> a WCAG 2.1 AA conformance assessment — for that, switch the extension to Power or Dev mode, which grades every applicable criterion across all pages.`:`Generated by wcagcheckr · site-mode crawl from ${n(e.startUrl)} · finished ${new Date(e.finishedAt).toLocaleString()}.
218
+ <br/>Three evaluation layers: <strong>axe-core</strong> (rule-based automation), <strong>wcagcheckr DOM analyzers</strong> (state-matrix iteration + structural heuristics for criteria axe doesn't cover), and <strong>AI walkthroughs</strong> (real keyboard input + screenshot-by-screenshot judgment for the 6 criteria neither rule-based nor static-DOM analysis can decide). All 50 applicable WCAG 2.1 AA criteria have an evaluation path here; criteria that depend on content meaning — caption accuracy, audio-description quality, alt-text semantic correctness, complex screen-reader narrative — benefit from human spot-checks before a formal conformance claim. See MANUAL_A11Y_CHECKLIST.md for the recommended human checks.`;return`<!doctype html>
219
+ <html lang="en">
220
+ <head>
221
+ <meta charset="utf-8" />
222
+ <title>${a}</title>
223
+ <meta name="generator" content="wcagcheckr — site mode${t?" (lawsuit-target lens)":""}" />
224
+ <style>
225
+ body { margin: 0; background: #f8fafc; color: #0f172a; font: 14px/1.5 ui-sans-serif, system-ui, -apple-system, sans-serif; }
226
+ .container { max-width: 1100px; margin: 0 auto; padding: 24px 32px 80px; }
227
+ h2 { color: #0f172a; }
228
+ p { margin: 4px 0; }
229
+ table { background: #fff; border: 1px solid #e2e8f0; border-radius: 6px; overflow: hidden; }
230
+ @media print {
231
+ body { background: #fff; }
232
+ .container { padding: 0; }
233
+ }
234
+ </style>
235
+ </head>
236
+ <body>
237
+ <main class="container">
238
+ ${O(e,t)}
239
+ ${T(s,!!t)}
240
+ ${i}
241
+ ${j(e,t)}
242
+ ${L(e.pages,d,t)}
243
+ <footer style="margin-top:32px;padding-top:16px;border-top:1px solid #e2e8f0;color:#475569;font-size:12px;">
244
+ ${o}
245
+ </footer>
246
+ </main>
247
+ </body>
248
+ </html>`}export{N as renderSiteReportHtml};
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI Variable Text,Segoe UI,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:IBM Plex Mono,ui-monospace,JetBrains Mono,SF Mono,Consolas,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-0\.5{right:.125rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-3{top:.75rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.float-right{float:right}.-m-4{margin:-1rem}.m-0{margin:0}.m-2{margin:.5rem}.m-4{margin:1rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-3{margin-left:-.75rem;margin-right:-.75rem}.-mx-3\.5{margin-left:-.875rem;margin-right:-.875rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-mb-px{margin-bottom:-1px}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-7{margin-left:1.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-72{max-height:18rem}.max-h-96{max-height:24rem}.max-h-\[420px\]{max-height:420px}.max-h-\[500px\]{max-height:500px}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90vh\]{max-height:90vh}.min-h-\[200px\]{min-height:200px}.min-h-\[24px\]{min-height:24px}.min-h-\[540px\]{min-height:540px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\/3{width:33.333333%}.w-12{width:3rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[260px\]{width:260px}.w-\[min\(28rem\,90vw\)\]{width:min(28rem,90vw)}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[140px\]{min-width:140px}.min-w-\[24px\]{min-width:24px}.max-w-2xl{max-width:42rem}.max-w-\[180px\]{max-width:180px}.max-w-\[280px\]{max-width:280px}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bell-pulse{0%,to{transform:rotate(0)}20%{transform:rotate(12deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(8deg)}80%{transform:rotate(-6deg)}}.animate-bell-pulse{animation:bell-pulse .9s ease-in-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[1fr_1fr_70px_70px_auto\]{grid-template-columns:1fr 1fr 70px 70px auto}.grid-cols-\[1fr_1fr_auto\]{grid-template-columns:1fr 1fr auto}.grid-cols-\[1fr_70px_70px_auto_auto\]{grid-template-columns:1fr 70px 70px auto auto}.grid-cols-\[400px_1fr\]{grid-template-columns:400px 1fr}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1{row-gap:.25rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-slate-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(241 245 249 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-amber-500{--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-brand-500{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.border-emerald-100{--tw-border-opacity: 1;border-color:rgb(209 250 229 / var(--tw-border-opacity, 1))}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity, 1))}.border-emerald-400{--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity, 1))}.border-emerald-600{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-rose-100{--tw-border-opacity: 1;border-color:rgb(255 228 230 / var(--tw-border-opacity, 1))}.border-rose-200{--tw-border-opacity: 1;border-color:rgb(254 205 211 / var(--tw-border-opacity, 1))}.border-rose-300{--tw-border-opacity: 1;border-color:rgb(253 164 175 / var(--tw-border-opacity, 1))}.border-rose-400{--tw-border-opacity: 1;border-color:rgb(251 113 133 / var(--tw-border-opacity, 1))}.border-rose-500{--tw-border-opacity: 1;border-color:rgb(244 63 94 / var(--tw-border-opacity, 1))}.border-rose-600{--tw-border-opacity: 1;border-color:rgb(225 29 72 / var(--tw-border-opacity, 1))}.border-sky-200{--tw-border-opacity: 1;border-color:rgb(186 230 253 / var(--tw-border-opacity, 1))}.border-slate-100{--tw-border-opacity: 1;border-color:rgb(241 245 249 / var(--tw-border-opacity, 1))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-200{--tw-bg-opacity: 1;background-color:rgb(253 230 138 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-brand-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-brand-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-brand-50\/40{background-color:#eef2ff66}.bg-brand-500{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity, 1))}.bg-brand-600{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-emerald-200{--tw-bg-opacity: 1;background-color:rgb(167 243 208 / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-50\/50{background-color:#ecfdf580}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-lime-100{--tw-bg-opacity: 1;background-color:rgb(236 252 203 / var(--tw-bg-opacity, 1))}.bg-lime-500{--tw-bg-opacity: 1;background-color:rgb(132 204 22 / var(--tw-bg-opacity, 1))}.bg-lime-600{--tw-bg-opacity: 1;background-color:rgb(101 163 13 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-200{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-rose-100{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity, 1))}.bg-rose-200{--tw-bg-opacity: 1;background-color:rgb(254 205 211 / var(--tw-bg-opacity, 1))}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-rose-50\/40{background-color:#fff1f266}.bg-rose-50\/50{background-color:#fff1f280}.bg-rose-500{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity, 1))}.bg-rose-600{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity, 1))}.bg-sky-100{--tw-bg-opacity: 1;background-color:rgb(224 242 254 / var(--tw-bg-opacity, 1))}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity, 1))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-50\/50{background-color:#f8fafc80}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/40{background-color:#0f172a66}.bg-violet-100{--tw-bg-opacity: 1;background-color:rgb(237 233 254 / var(--tw-bg-opacity, 1))}.bg-violet-500{--tw-bg-opacity: 1;background-color:rgb(139 92 246 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/50{background-color:#ffffff80}.bg-white\/60{background-color:#fff9}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-brand-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-white{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-white{--tw-gradient-to: #fff var(--tw-gradient-to-position)}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pr-2{padding-right:.5rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-display{font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI Variable Display,Segoe UI,system-ui,sans-serif}.font-mono{font-family:IBM Plex Mono,ui-monospace,JetBrains Mono,SF Mono,Consolas,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.not-italic{font-style:normal}.ordinal{--tw-ordinal: ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.06em\]{letter-spacing:.06em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-brand-600{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-brand-700{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-800{--tw-text-opacity: 1;color:rgb(6 95 70 / var(--tw-text-opacity, 1))}.text-emerald-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-lime-700{--tw-text-opacity: 1;color:rgb(77 124 15 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-rose-500{--tw-text-opacity: 1;color:rgb(244 63 94 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-rose-800{--tw-text-opacity: 1;color:rgb(159 18 57 / var(--tw-text-opacity, 1))}.text-rose-900{--tw-text-opacity: 1;color:rgb(136 19 55 / var(--tw-text-opacity, 1))}.text-rose-900\/90{color:#881337e6}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-sky-800{--tw-text-opacity: 1;color:rgb(7 89 133 / var(--tw-text-opacity, 1))}.text-sky-900{--tw-text-opacity: 1;color:rgb(12 74 110 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_8px_-2px_rgba\(120\,53\,15\,0\.12\)\]{--tw-shadow: 0 2px 8px -2px rgba(120,53,15,.12);--tw-shadow-colored: 0 2px 8px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_8px_-2px_rgba\(159\,18\,57\,0\.16\)\]{--tw-shadow: 0 2px 8px -2px rgba(159,18,57,.16);--tw-shadow-colored: 0 2px 8px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_2px_8px_-2px_rgba\(6\,78\,59\,0\.12\)\]{--tw-shadow: 0 2px 8px -2px rgba(6,78,59,.12);--tw-shadow-colored: 0 2px 8px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_4px_16px_-4px_rgba\(31\,41\,55\,0\.14\)\]{--tw-shadow: 0 4px 16px -4px rgba(31,41,55,.14);--tw-shadow-colored: 0 4px 16px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-brand-500\/30{--tw-ring-color: rgb(79 70 229 / .3)}.ring-rose-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(253 164 175 / var(--tw-ring-opacity, 1))}.ring-rose-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(244 63 94 / var(--tw-ring-opacity, 1))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[2px\]{--tw-blur: blur(2px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}html,body,#root{height:100%}html{font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI Variable Text,Segoe UI,system-ui,sans-serif;font-feature-settings:"tnum" 1,"ss01" 1,"cv11" 1;-webkit-font-smoothing:antialiased}code,kbd,samp,pre,.font-mono{font-family:IBM Plex Mono,ui-monospace,JetBrains Mono,SF Mono,Consolas,monospace;font-feature-settings:"tnum" 1}:focus-visible{outline:2px solid #3730a3;outline-offset:2px}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:border-r-0:last-child{border-right-width:0px}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:border-slate-200:hover{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.hover\:border-slate-300:hover{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.hover\:border-slate-400:hover{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity, 1))}.hover\:bg-amber-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.hover\:bg-amber-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.hover\:bg-amber-600:hover{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-100:hover{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-600:hover{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity, 1))}.hover\:bg-brand-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 48 163 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-100:hover{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-50:hover{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-rose-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 228 230 / var(--tw-bg-opacity, 1))}.hover\:bg-rose-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.hover\:bg-rose-600:hover{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity, 1))}.hover\:bg-rose-700:hover{--tw-bg-opacity: 1;background-color:rgb(190 18 60 / var(--tw-bg-opacity, 1))}.hover\:bg-sky-700:hover{--tw-bg-opacity: 1;background-color:rgb(3 105 161 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-200:hover{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-300:hover{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-50:hover{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-700:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:text-amber-700:hover{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.hover\:text-amber-950:hover{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity, 1))}.hover\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\:text-brand-600:hover{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.hover\:text-emerald-900:hover{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity, 1))}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-red-900:hover{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.hover\:text-rose-600:hover{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.hover\:text-rose-700:hover{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.hover\:text-rose-900:hover{--tw-text-opacity: 1;color:rgb(136 19 55 / var(--tw-text-opacity, 1))}.hover\:text-slate-700:hover{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.hover\:text-slate-800:hover{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.hover\:text-slate-900:hover{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-70:hover{opacity:.7}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:fixed:focus{position:fixed}.focus\:left-2:focus{left:.5rem}.focus\:top-2:focus{top:.5rem}.focus\:z-50:focus{z-index:50}.focus\:rounded:focus{border-radius:.25rem}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.focus\:px-3:focus{padding-left:.75rem;padding-right:.75rem}.focus\:py-1\.5:focus{padding-top:.375rem;padding-bottom:.375rem}.focus\:text-slate-900:focus{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.focus\:shadow:focus{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:outline:focus{outline-style:solid}.focus\:outline-2:focus{outline-width:2px}.focus\:outline-brand-500:focus{outline-color:#4f46e5}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-brand-500:focus-visible{outline-color:#4f46e5}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-brand-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width: 1px}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-slate-50:disabled{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.disabled\:text-slate-500:disabled{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-white:hover:disabled{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.data-\[state\=active\]\:border-b-2[data-state=active]{border-bottom-width:2px}.data-\[state\=active\]\:border-brand-500[data-state=active]{--tw-border-opacity: 1;border-color:rgb(79 70 229 / var(--tw-border-opacity, 1))}.data-\[state\=active\]\:text-brand-700[data-state=active]{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}@media (prefers-reduced-motion: reduce){.motion-reduce\:animate-none{animation:none}}@media (min-width: 640px){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:p-6{padding:1.5rem}}