@deepseek-insight/dsi 0.7.0 → 0.8.1

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 (184) hide show
  1. package/build/client/_app/immutable/assets/0.DBVVEjy9.css +2 -0
  2. package/build/client/_app/immutable/assets/2.BhBfHqja.css +1 -0
  3. package/build/client/_app/immutable/chunks/{Dk9aRp2m.js → 4B6J_kM2.js} +1 -1
  4. package/build/client/_app/immutable/chunks/{ANnPTMPF.js → 4cwyag_I.js} +1 -1
  5. package/build/client/_app/immutable/chunks/{D7-uGicP.js → 7FnrqGK9.js} +1 -1
  6. package/build/client/_app/immutable/chunks/{CIH5Juz4.js → AcmOeh2U.js} +1 -1
  7. package/build/client/_app/immutable/chunks/{BqX9BB0G.js → B2jrDnt8.js} +1 -1
  8. package/build/client/_app/immutable/chunks/{A5Iiq81h.js → B4F5liKq.js} +1 -1
  9. package/build/client/_app/immutable/chunks/{D3rUyYDm.js → B6bTO8_7.js} +1 -1
  10. package/build/client/_app/immutable/chunks/{2XtVrxH4.js → BBd0nTHG.js} +1 -1
  11. package/build/client/_app/immutable/chunks/BHDqH9nE.js +1 -0
  12. package/build/client/_app/immutable/chunks/{-izoh3h0.js → BO99LSSA.js} +1 -1
  13. package/build/client/_app/immutable/chunks/{BjafRUyA.js → BQC6O_RV.js} +1 -1
  14. package/build/client/_app/immutable/chunks/{BJsp4NMH.js → BWRXzjmQ.js} +1 -1
  15. package/build/client/_app/immutable/chunks/{crRp5OG4.js → BXKc4uuX.js} +1 -1
  16. package/build/client/_app/immutable/chunks/{j2lJ25s0.js → BenkQ_4r.js} +1 -1
  17. package/build/client/_app/immutable/chunks/{Dso_gKeU.js → BkYT72a1.js} +1 -1
  18. package/build/client/_app/immutable/chunks/{CCWXLdgd.js → BlwWx85l.js} +1 -1
  19. package/build/client/_app/immutable/chunks/{DCmONIPx.js → BmDADyfH.js} +1 -1
  20. package/build/client/_app/immutable/chunks/{DYfx-RRD.js → Bpd0I3U7.js} +1 -1
  21. package/build/client/_app/immutable/chunks/{B-V7Vlsz.js → Bqwvv7Vf.js} +4 -4
  22. package/build/client/_app/immutable/chunks/{CQTGR8fW.js → BsBBq-Qk.js} +1 -1
  23. package/build/client/_app/immutable/chunks/{IBXFCASw.js → Byu_teLA.js} +1 -1
  24. package/build/client/_app/immutable/chunks/{CzXb6qus.js → C0tWPpc3.js} +2 -2
  25. package/build/client/_app/immutable/chunks/{Cx8YXmgi.js → C4gs6zoI.js} +1 -1
  26. package/build/client/_app/immutable/chunks/CAneZX4t.js +8 -0
  27. package/build/client/_app/immutable/chunks/{olUfRNXS.js → CB55Rp7-.js} +1 -1
  28. package/build/client/_app/immutable/chunks/{C1dC47iq.js → CH_bR_0j.js} +1 -1
  29. package/build/client/_app/immutable/chunks/{CFofWD1C.js → CJ1fzlPC.js} +1 -1
  30. package/build/client/_app/immutable/chunks/{DfIqw6WM.js → CK5vhXvt.js} +1 -1
  31. package/build/client/_app/immutable/chunks/{0HT0ILkA.js → CRFuOqJI.js} +1 -1
  32. package/build/client/_app/immutable/chunks/{gXyYVhfn.js → CZoElI5B.js} +1 -1
  33. package/build/client/_app/immutable/chunks/{dcghWWmq.js → CajOZJDl.js} +1 -1
  34. package/build/client/_app/immutable/chunks/{BImoJlJo.js → CdaJvl_A.js} +1 -1
  35. package/build/client/_app/immutable/chunks/{CNJYmM8n.js → CeLBjOd9.js} +1 -1
  36. package/build/client/_app/immutable/chunks/{IoX9lmZK.js → CevKuuic.js} +1 -1
  37. package/build/client/_app/immutable/chunks/{B_Gknb5_.js → Cf0aMC4n.js} +1 -1
  38. package/build/client/_app/immutable/chunks/{C_MwBDNt.js → CnxoqrkQ.js} +1 -1
  39. package/build/client/_app/immutable/chunks/{ChC4viXw.js → Cr2ck_ss.js} +1 -1
  40. package/build/client/_app/immutable/chunks/{fJBuRi-A.js → Czc4_W7v.js} +1 -1
  41. package/build/client/_app/immutable/chunks/{CHYEvS-6.js → Czey8tDK.js} +1 -1
  42. package/build/client/_app/immutable/chunks/D-Rolhzs.js +1 -0
  43. package/build/client/_app/immutable/chunks/{bpkmZ_Dv.js → D0ChUnpi.js} +1 -1
  44. package/build/client/_app/immutable/chunks/{B5S0Wke9.js → D0uxHECr.js} +1 -1
  45. package/build/client/_app/immutable/chunks/{2M1KS72j.js → D6KenyiF.js} +1 -1
  46. package/build/client/_app/immutable/chunks/{DT1b6JaK.js → DBKMIEwD.js} +1 -1
  47. package/build/client/_app/immutable/chunks/{Bq4mG8qS.js → DEVxi5CK.js} +1 -1
  48. package/build/client/_app/immutable/chunks/{Bh_Z0-Fh.js → DFBKiA2Z.js} +1 -1
  49. package/build/client/_app/immutable/chunks/{DSqRqQNp.js → DIxy2USu.js} +1 -1
  50. package/build/client/_app/immutable/chunks/{D4I0Dqwh.js → DJQr4efH.js} +1 -1
  51. package/build/client/_app/immutable/chunks/DQXo7qdJ.js +1 -0
  52. package/build/client/_app/immutable/chunks/{3E8jbhSl.js → DU8C5thd.js} +1 -1
  53. package/build/client/_app/immutable/chunks/{D7eKc9ur.js → DUCaFYlx.js} +1 -1
  54. package/build/client/_app/immutable/chunks/{CbtU_GW3.js → DdI16loP.js} +1 -1
  55. package/build/client/_app/immutable/chunks/{DykTZ90H.js → DdJNsJBH.js} +1 -1
  56. package/build/client/_app/immutable/chunks/{C6zqVyWx.js → DfUgh5E_.js} +1 -1
  57. package/build/client/_app/immutable/chunks/{Ch7rc-L7.js → DmRY6FWm.js} +4 -4
  58. package/build/client/_app/immutable/chunks/{D7XrPGMK.js → DuRZnRVw.js} +1 -1
  59. package/build/client/_app/immutable/chunks/{Do0VAo0_.js → DuiFyTVb.js} +1 -1
  60. package/build/client/_app/immutable/chunks/{Ck2086Sr.js → DwcY-69G.js} +1 -1
  61. package/build/client/_app/immutable/chunks/K3xyLTzZ.js +1 -0
  62. package/build/client/_app/immutable/chunks/NcOjFWr3.js +6 -0
  63. package/build/client/_app/immutable/chunks/{BZ6uvzU8.js → O6xxeEm8.js} +1 -1
  64. package/build/client/_app/immutable/chunks/{DrVddB75.js → OW5Q7tGb.js} +1 -1
  65. package/build/client/_app/immutable/chunks/{CW2uYEvb.js → SN3Efo-Q.js} +1 -1
  66. package/build/client/_app/immutable/chunks/{Bf1I5ROF.js → ap4GAVq-.js} +1 -1
  67. package/build/client/_app/immutable/chunks/{DWYSL4om.js → at6PQqQ4.js} +1 -1
  68. package/build/client/_app/immutable/chunks/cHj8EuyS.js +3 -0
  69. package/build/client/_app/immutable/chunks/{l3etNtOh.js → eFcFJ9Ld.js} +1 -1
  70. package/build/client/_app/immutable/chunks/gZFoJ-NI.js +1 -0
  71. package/build/client/_app/immutable/chunks/{Bx68-tOf.js → kzciT-3i.js} +1 -1
  72. package/build/client/_app/immutable/chunks/{DNf96C-O.js → lF8CNVOA.js} +1 -1
  73. package/build/client/_app/immutable/chunks/o7DVZODA.js +1 -0
  74. package/build/client/_app/immutable/chunks/pdYhlwhf.js +1 -0
  75. package/build/client/_app/immutable/chunks/{q1Yj7q99.js → q5PRaRZk.js} +1 -1
  76. package/build/client/_app/immutable/chunks/xkjLeSzJ.js +1 -0
  77. package/build/client/_app/immutable/chunks/{BKU5-8Td.js → zypfUZYM.js} +1 -1
  78. package/build/client/_app/immutable/entry/app.DP0oSUf-.js +2 -0
  79. package/build/client/_app/immutable/entry/start.mBp3LB6J.js +1 -0
  80. package/build/client/_app/immutable/nodes/0.Dm_ry-Pr.js +1 -0
  81. package/build/client/_app/immutable/nodes/1.UuScj-IS.js +1 -0
  82. package/build/client/_app/immutable/nodes/2.CJRPZhbe.js +340 -0
  83. package/build/client/_app/version.json +1 -1
  84. package/build/handler.js +6 -6
  85. package/build/index.js +6 -6
  86. package/build/server/chunks/chunks/{app-config.svelte.js-D7wkLUkK.js → app-config.svelte.js-BM4WbMFB.js} +5 -3
  87. package/build/server/chunks/chunks/{config.js-B0w1-uCA.js → config.js-vThvQeMn.js} +12 -3
  88. package/build/server/chunks/chunks/{db.js-BmnKaIBo.js → db.js-B8BUpxGM.js} +2 -2
  89. package/build/server/chunks/chunks/{db2.js-CpSDQEUB.js → db2.js-CNe3I_g2.js} +2 -2
  90. package/build/server/chunks/chunks/{dsh-connection.js-CE6s1mIM.js → dsh-connection.js-xltcocWy.js} +181 -4
  91. package/build/server/chunks/chunks/{git-probe.js-DBbLffkp.js → git-probe.js-CUsTmhmV.js} +2 -2
  92. package/build/server/chunks/chunks/{index-server.js-CV2lq-ha.js → index-server.js-DmIEbDVz.js} +2 -2
  93. package/build/server/chunks/chunks/{insight-config.js-DZBwKFH9.js → insight-config.js-CaHHJpFK.js} +12 -5
  94. package/build/server/chunks/chunks/{internal2.js-DgxNmZhS.js → internal2.js-Pv5iygVN.js} +4 -4
  95. package/build/server/chunks/chunks/{registry.js-D0ldrcNB.js → registry.js-BTiJ1Kaj.js} +2 -2
  96. package/build/server/chunks/chunks/{server.js-DqHGsQU2.js → server.js-B1bDXhHu.js} +47 -2
  97. package/build/server/chunks/chunks/{settings-document.js-BRTO59Al.js → settings-document.js-Gw1puaik.js} +2 -2
  98. package/build/server/chunks/chunks/{state.js-DPoVCoAg.js → state.js-BCaKzPy6.js} +5 -5
  99. package/build/server/chunks/chunks/{watcher.js-Ck2BsXQf.js → watcher.js-DcT3cS4v.js} +4 -4
  100. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-B7qOvtA5.js → _server.ts.js-19pFOjH8.js} +5 -5
  101. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DBLFNFXT.js → _server.ts.js-BcUn6axe.js} +7 -7
  102. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-COyQSOOR.js → _server.ts.js-oMpzLZoy.js} +7 -7
  103. package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-CJjvHo1Z.js → _server.ts.js-DC3qPMQS.js} +5 -5
  104. package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-_XEUfVid.js → _server.ts.js-CHNcK7BH.js} +5 -5
  105. package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-e7j-kKSK.js → _server.ts.js-CYkOJL2O.js} +5 -5
  106. package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-BYiU0Wvv.js → _server.ts.js-DHTDi8KR.js} +5 -5
  107. package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-RL1-uaVR.js → _server.ts.js-Y5khEC2l.js} +5 -5
  108. package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-Cxc2r0BD.js → _server.ts.js-BmjgfZD2.js} +5 -5
  109. package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-DQ1jgFuc.js → _server.ts.js-IxS-goi1.js} +5 -5
  110. package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-DfbmPmUH.js → _server.ts.js-6STmJ7FD.js} +5 -5
  111. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-CfcgdS1G.js → _server.ts.js-BVyx8gPc.js} +6 -5
  112. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BOgNWE9k.js → _server.ts.js-CNJbv6CC.js} +5 -5
  113. package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-DExfzwju.js → _server.ts.js-CDWmXDJX.js} +37 -5
  114. package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/_server.ts.js-BDXQcQSL.js +56 -0
  115. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-vuxSBOKD.js → _server.ts.js-CgedtzOg.js} +5 -5
  116. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-DYh0lUVR.js → _server.ts.js-ut2pK15B.js} +5 -5
  117. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CzmMoP9-.js → _server.ts.js-Ct2W7g4c.js} +5 -5
  118. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CXnfYfR4.js → _server.ts.js-Rke3V_qh.js} +5 -5
  119. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-CF2s7GwI.js → _server.ts.js-BYHm5WBA.js} +5 -5
  120. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-DKw9ktIO.js → _server.ts.js-B_bEUKkt.js} +5 -5
  121. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-pT2AO2S0.js → _server.ts.js-D78fGUQk.js} +5 -5
  122. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-D4H2h6fc.js → _server.ts.js-CgB_c7zG.js} +5 -5
  123. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-iwuADbdv.js → _server.ts.js-dVaW22_K.js} +5 -5
  124. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-C36DpiRX.js → _server.ts.js-Dl8SBXdH.js} +5 -5
  125. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-WApWfRu-.js → _server.ts.js-BKDiwMIE.js} +5 -5
  126. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B8DQEsx6.js → _server.ts.js-D3FY2Wxt.js} +5 -5
  127. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-B0ACEjPX.js → _server.ts.js-BWuIEdjl.js} +4 -4
  128. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CmYfLvHD.js → _server.ts.js-CeiQFOGP.js} +5 -5
  129. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-DrZveeFq.js → _server.ts.js-lMofZOns.js} +5 -5
  130. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-C-nVpTN7.js → _server.ts.js-CNalVHrK.js} +5 -5
  131. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-C-cuYV40.js → _server.ts.js-I2s8qvcV.js} +5 -5
  132. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-BoiybbwX.js → _server.ts.js-DTKELD7v.js} +5 -5
  133. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-DDqjDxoc.js → _server.ts.js-BXSD__Gg.js} +5 -5
  134. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-DG0MHUkj.js → _server.ts.js-C9IZl2Qh.js} +5 -5
  135. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-Cz4XSEfb.js → _server.ts.js-BRXu3UtL.js} +5 -5
  136. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DV4wF7XG.js → _server.ts.js-DmnpiaD2.js} +5 -5
  137. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-X0mwkV_4.js → _server.ts.js-C5qCdsdm.js} +5 -5
  138. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-D_AEj6qx.js → _server.ts.js-BVUn49yf.js} +5 -5
  139. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-Cj3S-2MC.js → _server.ts.js-DuCOsoF0.js} +5 -5
  140. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-DuuhbcTE.js → _server.ts.js-2mcRY7IP.js} +5 -5
  141. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-C72akYlH.js → _server.ts.js-DZjaHZxU.js} +5 -5
  142. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-CEO2aw-C.js → _server.ts.js-DTVmsohJ.js} +5 -5
  143. package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-BhR4Cblt.js → _server.ts.js-DZXTArj7.js} +4 -4
  144. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BFdpm_he.js → _server.ts.js-LSc5EKH7.js} +6 -6
  145. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-D5eW-2fL.js → _server.ts.js-DNjiScBe.js} +6 -6
  146. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-iax8K9x8.js → _server.ts.js-CHMbLoSn.js} +6 -6
  147. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CdfiRwgl.js → _server.ts.js-BgM4JEAm.js} +6 -6
  148. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-CBU0ug30.js → _server.ts.js-BH0cLS8o.js} +6 -6
  149. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-CLozZQT3.js → _server.ts.js-BzlV3cVT.js} +6 -6
  150. package/build/server/chunks/entries/{hooks.server.js-BSnc9oHw.js → hooks.server.js-B-e4_ekh.js} +3 -3
  151. package/build/server/chunks/entries/pages/{_error.svelte.js-B9CGiiZy.js → _error.svelte.js-BRyCyR0c.js} +6 -6
  152. package/build/server/chunks/entries/pages/{_page.server.ts.js-yB-zbLkm.js → _page.server.ts.js-DttLUwdf.js} +2 -2
  153. package/build/server/chunks/entries/pages/{_page.svelte.js-D3F2fiR4.js → _page.svelte.js-CKY8hz9T.js} +10372 -9586
  154. package/build/server/chunks/{handler-CF16q5dY.js → handler-D1oqmwyy.js} +3 -3
  155. package/build/server/chunks/{index.js-DsT3Sxoa.js → index.js-BZ8zP9wS.js} +4 -4
  156. package/build/server/chunks/{manifest.js-CW2r9Rb1.js → manifest.js-CA6PuZTD.js} +61 -54
  157. package/build/server/chunks/nodes/{0.js-gr8Z-ETs.js → 0.js-DtkNHIFx.js} +3 -3
  158. package/build/server/chunks/nodes/1.js-Q6zZupRG.js +9 -0
  159. package/build/server/chunks/nodes/{2.js-Cif5vNvc.js → 2.js-P1boc94A.js} +9 -9
  160. package/package.json +1 -1
  161. package/skills/dsi-pattern-thin/SKILL.md +116 -0
  162. package/skills/dsi-pattern-thin/references/case-study-2026-10-21-conversation-feed-host.md +64 -0
  163. package/skills/dsi-pattern-thin/references/case-study-2026-10-21-tool-run-row-host.md +66 -0
  164. package/template/.dsi/prompts.sqlite-shm +0 -0
  165. package/template/.dsi/prompts.sqlite-wal +0 -0
  166. package/build/client/_app/immutable/assets/0.CrT3Lf0L.css +0 -2
  167. package/build/client/_app/immutable/assets/2.ByYVysCj.css +0 -1
  168. package/build/client/_app/immutable/chunks/BBDOLPkB.js +0 -1
  169. package/build/client/_app/immutable/chunks/BMgyB-Sy.js +0 -1
  170. package/build/client/_app/immutable/chunks/BYHxHjHc.js +0 -1
  171. package/build/client/_app/immutable/chunks/BwNsQhd8.js +0 -1
  172. package/build/client/_app/immutable/chunks/CMByLjfJ.js +0 -1
  173. package/build/client/_app/immutable/chunks/CW7JStOk.js +0 -1
  174. package/build/client/_app/immutable/chunks/D6mTYwDH.js +0 -6
  175. package/build/client/_app/immutable/chunks/DlfWhx6l.js +0 -1
  176. package/build/client/_app/immutable/chunks/DmLHHlla.js +0 -3
  177. package/build/client/_app/immutable/chunks/DwWy6K0V.js +0 -1
  178. package/build/client/_app/immutable/chunks/da2fibLv.js +0 -8
  179. package/build/client/_app/immutable/entry/app.DID8VW1I.js +0 -2
  180. package/build/client/_app/immutable/entry/start.CkxDcwJy.js +0 -1
  181. package/build/client/_app/immutable/nodes/0.oyzYR3-4.js +0 -1
  182. package/build/client/_app/immutable/nodes/1.2U7ECroT.js +0 -1
  183. package/build/client/_app/immutable/nodes/2.D1lz0hMu.js +0 -337
  184. package/build/server/chunks/nodes/1.js-BrruRgxj.js +0 -9
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: dsi-pattern-thin
3
+ description: Use when refactoring Svelte markup that duplicates component wiring across branches (twin prop-ladders), or when a route/panel acts as a state machine in its template — detects the duplication pattern, runs the ADR→spec→task ASDLC, and extracts one owning host component or service per pattern, whole-src. Pattern-driven counterpart to dsi-thin (which is size-driven).
4
+ ---
5
+
6
+ # dsi-pattern-thin — The Pattern Dies, One Host Is Born
7
+
8
+ Pattern-driven Svelte thinning. Where `dsi-thin` takes a **SLOC report** and
9
+ batches files by size, this skill takes a **duplication pattern** and extracts
10
+ one owner per pattern family. They compose: `dsi-sloc` finds the fat files,
11
+ this skill names the *why* inside them.
12
+
13
+ ## When to use
14
+
15
+ - The same child component is invoked twice or more in one template with mostly identical props.
16
+ - A template branch chain reads service state (`if service.x … else if service.y …`) to pick markup — a state machine written in markup.
17
+ - A route or panel file keeps growing despite services holding the state (the *markup machine* residue ADR-0019 left behind).
18
+
19
+ ## The pattern catalog (detect → extract)
20
+
21
+ The catalog stays in this file — it is the detection core and must be in
22
+ context on every run. A pattern graduates to its own
23
+ `references/pattern-*.md` only when its detail exceeds ~50 lines or the
24
+ catalog passes ~6 entries.
25
+
26
+ 1. **Twin prop-ladder.** Detect: two invocations of one component, ≥60%
27
+ prop-name overlap, differences confined to one concern (feed/data source).
28
+ Extract: one **host component** between caller and child; shared props
29
+ computed once; differences folded into ONE object prop (the "feed object"
30
+ rule). Rejected alternatives to record in the ADR: props-spread,
31
+ lint-synced lists.
32
+ 2. **Markup state machine.** Detect: `{#if}` chains keyed on service
33
+ dictionaries/Sets. Extract: the ladder decision into a pure
34
+ `resolve*State()` function (unit-testable) + a host that renders per state.
35
+ Stubs and error cards move with it.
36
+ 3. **Helper called N times per render.** Detect: the same `*For(id)` helper
37
+ invoked in multiple branches. Extract: compute once in the host.
38
+ 4. **Page-as-registry.** Detect: a route owning mutators/arrays other
39
+ components need (regression of ADR-0019). Extract: floor-registry service —
40
+ see ADR-0019; this skill only re-detects the drift.
41
+ 5. **Stair-stepped block / orphan close.** Detect: ONE block whose open tag,
42
+ children, and close tag sit at ≥2 distinct depths (e.g. `{#each}` at 2
43
+ tabs, children at 4, `{/each}` at 3), or a close tag shallower than its
44
+ own open (`</PanelsZoom>` at 1 tab vs `<PanelsZoom>` at 2). Cause: a
45
+ wrapper added/removed — or a block re-homed — without re-indenting the
46
+ body. **svelte-autofixer does NOT flag whitespace**, so this survives
47
+ every existing gate; it is found by reading, not by tooling. Fix:
48
+ mechanical re-indent — children at open+1, close at open — as a
49
+ whitespace-only diff (proof: `git diff --stat` line count equals the
50
+ re-indented line count, zero content bytes changed), then autofixer
51
+ findings + unit tests byte-identical to baseline as the
52
+ no-behavior-change evidence. Case study: `+page.svelte` L480–498
53
+ (2026-10-21, `{#each panels}`/`PanelColumn`/`{/each}` at three depths
54
+ plus the `</PanelsZoom>` orphan close, residue of earlier re-homes).
55
+
56
+ Worked case study (hard-coded evidence, grows with each run):
57
+ `references/case-study-2026-10-21-conversation-feed-host.md` — the
58
+ `+page.svelte` conversation ladder, ADR-0032, measured overlap, and the
59
+ before/after. Read it before your first extraction; append the next case study
60
+ file after each completed run.
61
+
62
+ ## Pipeline (ASDLC, per pattern instance)
63
+
64
+ 1. **Measure** — script the overlap: for each twin pair, diff prop-name sets;
65
+ print the shared set and the drift set. Drift found = evidence for the
66
+ ADR's fact section.
67
+ 2. **Decide** — invoke `dsi-adr`: one ADR per pattern family (not per file),
68
+ D1–Dn with the host's home domain, the explicit-props rule, and the
69
+ single-object rule; name the rejected spread/lint alternatives.
70
+ 3. **Spec** — invoke `dsi-spec` with the Module Map updated (host lives in
71
+ the child's own domain — never a new cross-domain import, ADR-0018 D1).
72
+ 4. **Execute** — invoke `dsi-task`: host lands un-consumed first (wave 1 +
73
+ unit tests, fake-based), caller swaps second (wave 2 + Playwright gate),
74
+ paperwork third (wave 3).
75
+ 5. **Gates** — `svelte-autofixer` on every written `.svelte`; unit tests
76
+ enumerate every prop reaching the child (the passthrough test kills
77
+ re-drift); visual parity pinned by existing Playwright specs.
78
+
79
+ ## Hard rules
80
+
81
+ - The host NEVER imports the caller's registry/mutator singleton — wiring
82
+ crosses as props (testability).
83
+ - The child component is untouched; the swap is additive (wave 1) then
84
+ subtractive (wave 2).
85
+ - One pattern family, one ADR, one branch; waves ship standalone value.
86
+ - No pattern, no refactor: if the overlap measurement shows <60% shared props
87
+ and differences span concerns, the block is honest branching — leave it and
88
+ say so in the report.
89
+
90
+ ## Whole-src runbook
91
+
92
+ ```bash
93
+ # 1. candidate scan (twin invocation detector, rough)
94
+ grep -rn '<ConversationPanel' src --include='*.svelte' # repeat per suspect child
95
+ # 2. overlap evidence per pair (the measure step prints shared/drift prop sets)
96
+ # 3. rank by (lines duplicated x drift count); top of the list is the first ADR
97
+ ```
98
+
99
+ Done instances in today's DSI: the `+page.svelte` conversation ladder
100
+ (ADR-0032) and the transcript's six `InlineToolCalls` twins (ADR-0033,
101
+ `InlineToolRunRow`) — both 2026-10-21. Next candidate: the `ToolCallChip`
102
+ x5 ladder in `InlineToolCalls.svelte` (80% overlap, drift `{status, ok}`).
103
+ Measured honest branching — no pattern, no refactor: `DsiEntry` x6 and
104
+ `ChipPopup` x4 (0% shared), `PromptBubble` x2 (60%, drift spans concerns).
105
+
106
+ ## Definition of done (per instance)
107
+
108
+ Twin invocations gone (grep proves one call site); ladder states unit-tested
109
+ without a page render; Playwright specs green; ADR amended to Implemented;
110
+ overlap measurement re-run shows zero twins for the family; a case-study
111
+ reference file exists for the run.
112
+
113
+ ## Install locations
114
+
115
+ - Repo (versioned source of truth): `skills/dsi-pattern-thin/SKILL.md` + `references/`
116
+ - Mirror (slash-menu visibility on every host, RCA 2026-09-03): `~/.agents/skills/dsi-pattern-thin/` — re-copy after every repo-side edit.
@@ -0,0 +1,64 @@
1
+ # Case Study — 2026-10-21 — The Conversation Feed Host (pattern 1: twin prop-ladder)
2
+
3
+ The worked instance this skill was born from. Read before your first
4
+ extraction; every completed run appends one file like this.
5
+
6
+ ## The target
7
+
8
+ `src/routes/+page.svelte` L435–506 (inside the `panelBody` snippet, L292),
9
+ on a 650-line route that ADR-0019 had already thinned from 2,109 lines.
10
+
11
+ ## What the pattern looked like (raw numbers)
12
+
13
+ - `{#key p.sessionId}` wrapping a four-branch chain:
14
+ - `pageFeeds.deadSessions[p.sessionId]` → error card (L435–445)
15
+ - `pageFeeds.coldCache[p.sessionId]` → `ConversationPanel` (~30 props, L448–478)
16
+ - `pageFeeds.coldInFlight.has(...)` → loading stub (L479–480)
17
+ - else → `ConversationPanel` (~24 props, L482–505)
18
+ - **~20 props byte-identical** across the two invocations; differences confined
19
+ to feed sourcing (cold spreads 10 cache fields; live hardcodes
20
+ `lastSeq={-1} running={false}` + `onNeedCold`).
21
+ - **Drift was live, not latent:** `deliverables`, `knobEvents`,
22
+ `pendingAnswers`, `settledAnswers`, `imageLimits`, `hasMore` existed ONLY
23
+ on the cold branch — a behavioral asymmetry born of copy-paste.
24
+ - 7 `floor-reads` helpers (`panelTitleFor`, `panelWorkspaceFor`, `agentFor`,
25
+ `agentLabelFor`, `panelParentFor`, `a2aRowsFor`, lineage lookups) called
26
+ twice per render.
27
+
28
+ ## What was decided (ADR-0032, 2026-10-21)
29
+
30
+ - **D1** one `ConversationFeedHost.svelte` owns the ladder (conversation
31
+ domain). REJECTED: props-spread (halves lines, none of the risk); folding the
32
+ ladder into `ConversationPanel` (couples presentation to a page service).
33
+ - **D2** wiring crosses as explicit props, never a grabbed `floorApi`.
34
+ REJECTED: host imports the registry (untestable, re-couples the floor).
35
+ - **D3** feed differences become ONE `feed` object. REJECTED: lint-synced
36
+ twin lists; a `feed?` prop on the panel itself.
37
+ - **D4** error card + loading stub move into the host. REJECTED: stubs stay in
38
+ the page (splits one visual contract across two files).
39
+
40
+ ## The shape of the fix
41
+
42
+ Route block: ~72 lines → ~10 (one host tag). Shared props computed once in the
43
+ host; the four states render error card / panel(cached feed) / stub /
44
+ panel(default feed + onNeedCold). `{#key}` moved inside the host;
45
+ `ConversationPanel.svelte`, `page-feeds.svelte`, `floor-registry.svelte`
46
+ untouched; no new cross-domain import.
47
+
48
+ ## Gates that pinned it
49
+
50
+ - Unit: `tests/unit/components/conversation/conversation-feed.test.ts`
51
+ (derivation + dead-wins-first precedence) and
52
+ `.../conversation-feed-host.test.ts` (one test per state + prop-passthrough).
53
+ - Playwright conversation/floor specs green after the swap (wave 2 gate).
54
+ - `svelte-autofixer` clean on both written `.svelte` files.
55
+ - Spec set: `dev/specs/2026-10/2026-10-21 - Conversation Feed Host/` (PRD,
56
+ Tasks.md/.json, karpathy context); decision: ADR-0032.
57
+
58
+ ## Lessons
59
+
60
+ 1. The drift set (props on one twin only) is the strongest ADR evidence —
61
+ measure it before writing a word.
62
+ 2. Dead-wins-first precedence (L435 branch order) is easy to lose when
63
+ re-homing; write it as an explicit `resolveLadderState()` unit test.
64
+ 3. The host must stay wiring-only; fake-based unit tests are the guardrail.
@@ -0,0 +1,66 @@
1
+ # Case Study — 2026-10-21 — The Tool Run Row Host (pattern 1: twin prop-ladder, second instance)
2
+
3
+ The ADR-0032 feed-ladder host worked; this is the same pattern one level
4
+ down, inside the turn body. Read with the Conversation Feed Host study.
5
+
6
+ ## The target
7
+
8
+ `src/lib/components/conversation/panel/ConversationScrollArea.svelte`,
9
+ six `<InlineToolCalls>` invocations (L371–486 pre-swap): the two
10
+ closed-fold escape strips, the open-fold injection cluster, the folded
11
+ work runs, the trailing runs, the flat path.
12
+
13
+ ## What the pattern looked like (raw numbers)
14
+
15
+ - **10 shared prop names across all six sites** (entries, runKey,
16
+ openChipId, peekOpen, allEntries, ontoggleChip, ontogglePeek,
17
+ autoThinkId, autoPlanId, onFileOpen). The script measure reported 6 —
18
+ it counts only `=`-written props and misses the Svelte shorthand
19
+ quartet `{openChipId} {autoThinkId} {autoPlanId} {onFileOpen}`;
20
+ reading the sites recovered the true overlap.
21
+ - Drift: `peekIcon="context"` on the two injection rows only. Every
22
+ other difference was a VALUE (entries source, runKey string).
23
+ - `peekOpen` was always `peekOpenRunKey === runKey` and
24
+ `ontogglePeek` always `() => ontogglepeek(runKey)` at every site —
25
+ the derivation itself was part of the duplication.
26
+
27
+ ## What was decided (ADR-0033, 2026-10-21)
28
+
29
+ - **D1** one wiring-only host `InlineToolRunRow.svelte` in the child's
30
+ own domain (message/assistant); child untouched. REJECTED:
31
+ props-spread; folding a `session` prop into the child.
32
+ - **D2** session wiring crosses as ONE `run` object. REJECTED: eight
33
+ explicit props (same ladder one level up); lint-synced lists.
34
+ - **D3** peek pair derived in the host. REJECTED: keeping the
35
+ derivation at six sites.
36
+ - **D4** passthrough unit tests over screenshots. REJECTED: Playwright
37
+ alone (one fold state per run).
38
+
39
+ ## The shape of the fix
40
+
41
+ Six ~12-line invocations → one line each (`run={turnRun} entries=…
42
+ runKey=… peekIcon=…`); net −56 lines. The wiring const is `turnRun`
43
+ because the fold-replay `{#each fold.folded as run}` loop owns `run`
44
+ — name collisions are a real hazard when the host prop is generic.
45
+
46
+ ## Gates that pinned it
47
+
48
+ - Unit: `tests/unit/components/message/inline-tool-run-row.test.ts` —
49
+ 10 tests rendering the REAL child: peek derivation ×3, both callbacks
50
+ through the DOM, openChipId/autoThinkId/allEntries passthrough via
51
+ the child's own seats (reasoning-body, cross-run result pairing),
52
+ peekIcon glyph (wrench vs book-open lucide class).
53
+ - Playwright: conversation 23/23, panel-floor 30/30.
54
+ - svelte-check caught the `{turnRun}` shorthand passing a wrongly
55
+ NAMED prop (type error, not a lint) — shorthand props at swap sites
56
+ are a live failure mode; the check gate earns its keep.
57
+
58
+ ## Lessons
59
+
60
+ 1. Shorthand-prop overlap is invisible to naive regex measures —
61
+ measure, then VERIFY by reading before writing the ADR facts.
62
+ 2. Mount the real child and assert through its existing DOM seats;
63
+ a mocked stub must imitate Svelte 5 component internals and fails
64
+ the whole file.
65
+ 3. A stale `vite preview` on the Playwright port will run your gate
66
+ against an OLD build — kill it before trusting green.
Binary file
Binary file
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-amber-400:oklch(82.8% .189 84.429);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-500:oklch(69.6% .17 162.48);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-surface:#f8f9fa;--color-surface-alt:#f1f3f5;--color-surface-hover:#e9ecef;--color-surface-border:#dee2e6;--color-surface-elevated:#fff;--color-subagent-tint-1:beige;--color-subagent-tint-2:#e9e3c9;--color-subagent-tint-3:#ddd3b0;--color-text-primary:#212529;--color-text-secondary:#6c757d;--color-text-muted:#adb5bd;--color-accent-blue:#3b82f6;--color-accent-purple:#8b5cf6;--color-accent-purple-soft:#9f88fb;--color-accent-purple-ink:#2e1065;--color-accent-amber:#f59e0b;--color-accent-rose:#f43f5e;--color-accent-cyan:#06b6d4;--color-status-pass:#10b981;--color-status-fail:#ef4444;--color-status-pending:#f59e0b;--color-status-fail-ink:#fff;--color-tree-repo:#ff4500;--color-tree-child:#d2691e;--color-tree-amber:#f7ad31;--color-accent-deep:#7c3aed;--color-success-ink:#1a7f37;--color-success-soft:#27ae60;--color-green-verify:#16a34a;--color-accent-orange:#e67e22;--color-accent-amber-ink:#d97706;--color-accent-amber-ink-deep:#b45309;--color-danger-madrid:#e74c3c;--color-danger-github:#cf222e;--color-danger-editor-surface:#45161c;--color-danger-editor-ink:#ffb4bb;--color-doc-child:maroon;--color-navy-focus:#1e3a8a;--color-header-wash:#fdf5e6;--color-slate-neutral:#52606d;--color-danger-wash:#fef2f2;--color-danger-wash-border:#fee2e2;--color-danger-wash-ink:#991b1b;--color-ws-violet:#9400d3;--color-ws-green:#00a802;--color-ws-blue:#06c}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--si-run:#b91c1c;--color-surface-primary:var(--color-surface-elevated);--color-surface-secondary:var(--color-surface-alt);--color-border:var(--color-surface-border);--color-text:var(--color-text-primary);--color-bg:var(--color-surface)}svg{color:var(--color-accent-purple)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.-top-3{top:calc(var(--spacing) * -3)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-5{top:calc(var(--spacing) * 5)}.top-8{top:calc(var(--spacing) * 8)}.top-full{top:100%}.-right-3{right:calc(var(--spacing) * -3)}.right-0{right:0}.right-1{right:var(--spacing)}.right-1\.5{right:calc(var(--spacing) * 1.5)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-5{right:calc(var(--spacing) * 5)}.right-full{right:100%}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-1\/2{bottom:50%}.bottom-\[50vh\]{bottom:50vh}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.z-1000,.z-\[1000\]{z-index:1000}.z-auto{z-index:auto}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:var(--spacing)}.mx-auto{margin-inline:auto}.my-0\.5{margin-block:calc(var(--spacing) * .5)}.my-1{margin-block:var(--spacing)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-px{margin-top:1px}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.ml-1{margin-left:var(--spacing)}.ml-\[-2px\]{margin-left:-2px}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-5{height:calc(var(--spacing) * 5)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[50px\]{height:50px}.h-\[62px\]{height:62px}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[30rem\]{max-height:30rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[500px\]{max-height:500px}.max-h-\[calc\(100vh-80px\)\]{max-height:calc(100vh - 80px)}.min-h-0{min-height:0}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[2\.75rem\]{min-height:2.75rem}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-5{width:calc(var(--spacing) * 5)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-15{width:calc(var(--spacing) * 15)}.w-24{width:calc(var(--spacing) * 24)}.w-36{width:calc(var(--spacing) * 36)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[62px\]{width:62px}.w-\[200px\]{width:200px}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-\[16rem\]{max-width:16rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[80vw\]{max-width:80vw}.max-w-\[85\%\]{max-width:85%}.max-w-\[min\(100\%\,1600px\)\]{max-width:min(100%,1600px)}.max-w-full{max-width:100%}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-72{min-width:calc(var(--spacing) * 72)}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.resize{resize:both}.resize-none{resize:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-0\.5{column-gap:calc(var(--spacing) * .5)}.gap-x-1{column-gap:var(--spacing)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[16px\]{border-radius:16px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-br-sm{border-bottom-right-radius:var(--radius-sm)}.rounded-bl-sm{border-bottom-left-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-none{--tw-border-style:none;border-style:none}.border-\[var\(--color-accent-deep\)\]{border-color:var(--color-accent-deep)}.border-\[var\(--color-accent-deep\)\]\/30{border-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-accent-deep\)\]\/30{border-color:color-mix(in oklab, var(--color-accent-deep) 30%, transparent)}}.border-\[var\(--color-surface-border\)\]{border-color:var(--color-surface-border)}.border-accent-blue\/20{border-color:#3b82f633}@supports (color:color-mix(in lab, red, red)){.border-accent-blue\/20{border-color:color-mix(in oklab, var(--color-accent-blue) 20%, transparent)}}.border-accent-blue\/30{border-color:#3b82f64d}@supports (color:color-mix(in lab, red, red)){.border-accent-blue\/30{border-color:color-mix(in oklab, var(--color-accent-blue) 30%, transparent)}}.border-accent-purple\/30{border-color:#8b5cf64d}@supports (color:color-mix(in lab, red, red)){.border-accent-purple\/30{border-color:color-mix(in oklab, var(--color-accent-purple) 30%, transparent)}}.border-danger-wash-border{border-color:var(--color-danger-wash-border)}.border-slate-800{border-color:var(--color-slate-800)}.border-status-fail\/30{border-color:#ef44444d}@supports (color:color-mix(in lab, red, red)){.border-status-fail\/30{border-color:color-mix(in oklab, var(--color-status-fail) 30%, transparent)}}.border-status-pass{border-color:var(--color-status-pass)}.border-status-pass\/30{border-color:#10b9814d}@supports (color:color-mix(in lab, red, red)){.border-status-pass\/30{border-color:color-mix(in oklab, var(--color-status-pass) 30%, transparent)}}.border-status-pending\/30{border-color:#f59e0b4d}@supports (color:color-mix(in lab, red, red)){.border-status-pending\/30{border-color:color-mix(in oklab, var(--color-status-pending) 30%, transparent)}}.border-surface-border{border-color:var(--color-surface-border)}.border-surface-border\/30{border-color:#dee2e64d}@supports (color:color-mix(in lab, red, red)){.border-surface-border\/30{border-color:color-mix(in oklab, var(--color-surface-border) 30%, transparent)}}.border-surface-border\/50{border-color:#dee2e680}@supports (color:color-mix(in lab, red, red)){.border-surface-border\/50{border-color:color-mix(in oklab, var(--color-surface-border) 50%, transparent)}}.border-text-muted\/15{border-color:#adb5bd26}@supports (color:color-mix(in lab, red, red)){.border-text-muted\/15{border-color:color-mix(in oklab, var(--color-text-muted) 15%, transparent)}}.border-text-muted\/20{border-color:#adb5bd33}@supports (color:color-mix(in lab, red, red)){.border-text-muted\/20{border-color:color-mix(in oklab, var(--color-text-muted) 20%, transparent)}}.bg-\[var\(--color-accent-deep\)\]{background-color:var(--color-accent-deep)}.bg-\[var\(--color-accent-deep\)\]\/10{background-color:#7c3aed1a}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-accent-deep\)\]\/10{background-color:color-mix(in oklab, var(--color-accent-deep) 10%, transparent)}}.bg-\[var\(--color-subagent-tint-1\)\]{background-color:var(--color-subagent-tint-1)}.bg-\[var\(--color-subagent-tint-2\)\]{background-color:var(--color-subagent-tint-2)}.bg-\[var\(--color-subagent-tint-3\)\]{background-color:var(--color-subagent-tint-3)}.bg-\[var\(--color-surface-elevated\)\]{background-color:var(--color-surface-elevated)}.bg-accent-blue{background-color:var(--color-accent-blue)}.bg-accent-blue\/10{background-color:#3b82f61a}@supports (color:color-mix(in lab, red, red)){.bg-accent-blue\/10{background-color:color-mix(in oklab, var(--color-accent-blue) 10%, transparent)}}.bg-accent-blue\/15{background-color:#3b82f626}@supports (color:color-mix(in lab, red, red)){.bg-accent-blue\/15{background-color:color-mix(in oklab, var(--color-accent-blue) 15%, transparent)}}.bg-accent-blue\/20{background-color:#3b82f633}@supports (color:color-mix(in lab, red, red)){.bg-accent-blue\/20{background-color:color-mix(in oklab, var(--color-accent-blue) 20%, transparent)}}.bg-accent-blue\/30{background-color:#3b82f64d}@supports (color:color-mix(in lab, red, red)){.bg-accent-blue\/30{background-color:color-mix(in oklab, var(--color-accent-blue) 30%, transparent)}}.bg-accent-cyan\/10{background-color:#06b6d41a}@supports (color:color-mix(in lab, red, red)){.bg-accent-cyan\/10{background-color:color-mix(in oklab, var(--color-accent-cyan) 10%, transparent)}}.bg-accent-purple-ink{background-color:var(--color-accent-purple-ink)}.bg-accent-purple-soft{background-color:var(--color-accent-purple-soft)}.bg-accent-purple\/15{background-color:#8b5cf626}@supports (color:color-mix(in lab, red, red)){.bg-accent-purple\/15{background-color:color-mix(in oklab, var(--color-accent-purple) 15%, transparent)}}.bg-accent-purple\/20{background-color:#8b5cf633}@supports (color:color-mix(in lab, red, red)){.bg-accent-purple\/20{background-color:color-mix(in oklab, var(--color-accent-purple) 20%, transparent)}}.bg-amber-400{background-color:var(--color-amber-400)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-danger-wash{background-color:var(--color-danger-wash)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-green-500{background-color:var(--color-green-500)}.bg-header-wash{background-color:var(--color-header-wash)}.bg-red-500{background-color:var(--color-red-500)}.bg-slate-700{background-color:var(--color-slate-700)}.bg-slate-800{background-color:var(--color-slate-800)}.bg-slate-800\/90{background-color:#1d293de6}@supports (color:color-mix(in lab, red, red)){.bg-slate-800\/90{background-color:color-mix(in oklab, var(--color-slate-800) 90%, transparent)}}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-900\/40{background-color:#0f172b66}@supports (color:color-mix(in lab, red, red)){.bg-slate-900\/40{background-color:color-mix(in oklab, var(--color-slate-900) 40%, transparent)}}.bg-slate-950{background-color:var(--color-slate-950)}.bg-status-fail{background-color:var(--color-status-fail)}.bg-status-fail\/10{background-color:#ef44441a}@supports (color:color-mix(in lab, red, red)){.bg-status-fail\/10{background-color:color-mix(in oklab, var(--color-status-fail) 10%, transparent)}}.bg-status-pass{background-color:var(--color-status-pass)}.bg-status-pass\/10{background-color:#10b9811a}@supports (color:color-mix(in lab, red, red)){.bg-status-pass\/10{background-color:color-mix(in oklab, var(--color-status-pass) 10%, transparent)}}.bg-status-pass\/100{background-color:var(--color-status-pass)}.bg-status-pending{background-color:var(--color-status-pending)}.bg-status-pending\/10{background-color:#f59e0b1a}@supports (color:color-mix(in lab, red, red)){.bg-status-pending\/10{background-color:color-mix(in oklab, var(--color-status-pending) 10%, transparent)}}.bg-status-pending\/100{background-color:var(--color-status-pending)}.bg-surface{background-color:var(--color-surface)}.bg-surface-alt{background-color:var(--color-surface-alt)}.bg-surface-border{background-color:var(--color-surface-border)}.bg-surface-elevated{background-color:var(--color-surface-elevated)}.bg-surface\/60{background-color:#f8f9fa99}@supports (color:color-mix(in lab, red, red)){.bg-surface\/60{background-color:color-mix(in oklab, var(--color-surface) 60%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-\[linear-gradient\(90deg\,color-mix\(in_srgb\,var\(--color-status-pass\)_18\%\,var\(--color-surface\)\)\,var\(--color-header-wash\)_65\%\,var\(--color-surface\)\)\]{background-image:linear-gradient(90deg,#ceede4,var(--color-header-wash) 65%,var(--color-surface))}@supports (color:color-mix(in lab, red, red)){.bg-\[linear-gradient\(90deg\,color-mix\(in_srgb\,var\(--color-status-pass\)_18\%\,var\(--color-surface\)\)\,var\(--color-header-wash\)_65\%\,var\(--color-surface\)\)\]{background-image:linear-gradient(90deg,color-mix(in srgb,var(--color-status-pass) 18%,var(--color-surface)),var(--color-header-wash) 65%,var(--color-surface))}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\[padding\:0_10px\]{padding:0 10px}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-10{padding:calc(var(--spacing) * 10)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-px{padding-block:1px}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-0\.5{padding-bottom:calc(var(--spacing) * .5)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1{padding-left:var(--spacing)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-bottom{vertical-align:bottom}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6875rem\]{font-size:.6875rem}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[color\:var\(--color-text-secondary\,\#6c757d\)\]{color:var(--color-text-secondary,#6c757d)}.text-\[var\(--color-accent-deep\)\]{color:var(--color-accent-deep)}.text-\[var\(--color-accent-purple\)\]{color:var(--color-accent-purple)}.text-\[var\(--color-text-primary\)\]{color:var(--color-text-primary)}.text-\[var\(--color-text-secondary\)\]{color:var(--color-text-secondary)}.text-accent-blue{color:var(--color-accent-blue)}.text-accent-purple{color:var(--color-accent-purple)}.text-accent-purple-ink{color:var(--color-accent-purple-ink)}.text-accent-purple\/80{color:#8b5cf6cc}@supports (color:color-mix(in lab, red, red)){.text-accent-purple\/80{color:color-mix(in oklab, var(--color-accent-purple) 80%, transparent)}}.text-green-500{color:var(--color-green-500)}.text-red-500{color:var(--color-red-500)}.text-slate-100{color:var(--color-slate-100)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-status-fail{color:var(--color-status-fail)}.text-status-fail-ink{color:var(--color-status-fail-ink)}.text-status-pass{color:var(--color-status-pass)}.text-status-pending{color:var(--color-status-pending)}.text-status-pending\/80{color:#f59e0bcc}@supports (color:color-mix(in lab, red, red)){.text-status-pending\/80{color:color-mix(in oklab, var(--color-status-pending) 80%, transparent)}}.text-text-muted{color:var(--color-text-muted)}.text-text-muted\/60{color:#adb5bd99}@supports (color:color-mix(in lab, red, red)){.text-text-muted\/60{color:color-mix(in oklab, var(--color-text-muted) 60%, transparent)}}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.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,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-surface-border{-webkit-text-decoration-color:var(--color-surface-border);-webkit-text-decoration-color:var(--color-surface-border);-webkit-text-decoration-color:var(--color-surface-border);text-decoration-color:var(--color-surface-border)}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring,.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent-purple-ink\/30{--tw-ring-color:#2e10654d}@supports (color:color-mix(in lab, red, red)){.ring-accent-purple-ink\/30{--tw-ring-color:color-mix(in oklab, var(--color-accent-purple-ink) 30%, transparent)}}.ring-danger-wash-border{--tw-ring-color:var(--color-danger-wash-border)}.ring-status-fail\/30{--tw-ring-color:#ef44444d}@supports (color:color-mix(in lab, red, red)){.ring-status-fail\/30{--tw-ring-color:color-mix(in oklab, var(--color-status-fail) 30%, transparent)}}.ring-status-pending\/30{--tw-ring-color:#f59e0b4d}@supports (color:color-mix(in lab, red, red)){.ring-status-pending\/30{--tw-ring-color:color-mix(in oklab, var(--color-status-pending) 30%, transparent)}}.ring-surface-border{--tw-ring-color:var(--color-surface-border)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.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,)}.grayscale{--tw-grayscale:grayscale(100%);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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[background-color\,transform\]{transition-property:background-color,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\/bubble\:text-\[var\(--color-accent-deep\)\]:is(:where(.group\/bubble):hover *){color:var(--color-accent-deep)}.group-hover\/bubble\:opacity-100:is(:where(.group\/bubble):hover *),.group-hover\/diagram\:opacity-100:is(:where(.group\/diagram):hover *),.group-hover\/featurespec\:opacity-100:is(:where(.group\/featurespec):hover *),.group-hover\/markdown\:opacity-100:is(:where(.group\/markdown):hover *),.group-hover\/reasoning\:opacity-100:is(:where(.group\/reasoning):hover *),.group-hover\/table\:opacity-100:is(:where(.group\/table):hover *),.group-hover\/terminal\:opacity-100:is(:where(.group\/terminal):hover *){opacity:1}}.placeholder\:text-text-muted::placeholder{color:var(--color-text-muted)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-surface-border:hover{border-color:var(--color-surface-border)}.hover\:bg-\[var\(--color-accent-deep\)\]\/20:hover{background-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--color-accent-deep\)\]\/20:hover{background-color:color-mix(in oklab, var(--color-accent-deep) 20%, transparent)}}.hover\:bg-accent-blue:hover{background-color:var(--color-accent-blue)}.hover\:bg-accent-purple\/5:hover{background-color:#8b5cf60d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-purple\/5:hover{background-color:color-mix(in oklab, var(--color-accent-purple) 5%, transparent)}}.hover\:bg-danger-wash-border:hover{background-color:var(--color-danger-wash-border)}.hover\:bg-slate-600:hover{background-color:var(--color-slate-600)}.hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}.hover\:bg-status-fail:hover{background-color:var(--color-status-fail)}.hover\:bg-status-pass:hover{background-color:var(--color-status-pass)}.hover\:bg-status-pending\/20:hover{background-color:#f59e0b33}@supports (color:color-mix(in lab, red, red)){.hover\:bg-status-pending\/20:hover{background-color:color-mix(in oklab, var(--color-status-pending) 20%, transparent)}}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-surface-alt:hover{background-color:var(--color-surface-alt)}.hover\:bg-surface-border\/20:hover{background-color:#dee2e633}@supports (color:color-mix(in lab, red, red)){.hover\:bg-surface-border\/20:hover{background-color:color-mix(in oklab, var(--color-surface-border) 20%, transparent)}}.hover\:bg-surface-hover:hover{background-color:var(--color-surface-hover)}.hover\:text-\[color\:var\(--color-text-primary\,\#212529\)\]:hover{color:var(--color-text-primary,#212529)}.hover\:text-accent-purple:hover{color:var(--color-accent-purple)}.hover\:text-slate-200:hover{color:var(--color-slate-200)}.hover\:text-status-pending:hover{color:var(--color-status-pending)}.hover\:text-text-muted:hover{color:var(--color-text-muted)}.hover\:text-text-primary:hover{color:var(--color-text-primary)}.hover\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\:ring-accent-purple\/40:hover{--tw-ring-color:#8b5cf666}@supports (color:color-mix(in lab, red, red)){.hover\:ring-accent-purple\/40:hover{--tw-ring-color:color-mix(in oklab, var(--color-accent-purple) 40%, transparent)}}@media (hover:hover){.hover\:group-hover\/bubble\:text-\[var\(--color-accent-deep\)\]:hover:is(:where(.group\/bubble):hover *){color:var(--color-accent-deep)}}}.focus\:border-text-muted:focus{border-color:var(--color-text-muted)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-text-muted:focus{--tw-ring-color:var(--color-text-muted)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:opacity-100:focus-visible{opacity:1}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-surface:disabled{background-color:var(--color-surface)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media (pointer:coarse){.pointer-coarse\:opacity-100{opacity:1}}}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}[data-theme=dark]{--color-surface:#16181d;--color-surface-alt:#1d2026;--color-surface-hover:#262a32;--color-surface-border:#333842;--color-surface-elevated:#21252c;--color-text-primary:#e9ecef;--color-text-secondary:#9aa3ad;--color-text-muted:#757e89;--color-accent-blue:#60a5fa;--color-accent-purple:#a78bfa;--color-accent-purple-soft:#4c1d95;--color-accent-purple-ink:#ede9fe;--color-accent-emerald:#34d399;--color-accent-amber:#fbbf24;--color-accent-rose:#fb7185;--color-accent-cyan:#22d3ee;--color-accent-pink:#f48bb4;--color-accent-pink-strong:#f7a8c4;--color-status-pass:#34d399;--color-status-fail:#f87171;--color-status-pending:#fbbf24;--color-status-fail-ink:#450a0a;--color-tree-repo:#ff7a4d;--color-tree-child:#f0a05c;--color-tree-amber:#ffc95c;--color-accent-deep:#a78bfa;--color-success-ink:#4ade80;--color-success-soft:#34d399;--color-green-verify:#4ade80;--color-accent-orange:#fb923c;--color-accent-amber-ink:#fbbf24;--color-accent-amber-ink-deep:#fcd34d;--color-danger-madrid:#ff6b6b;--color-danger-github:#ff8181;--color-danger-editor-surface:#3b1218;--color-danger-editor-ink:#ffb4bb;--color-doc-child:#ff9b9b;--color-navy-focus:#93c5fd;--color-header-wash:#2b2620;--color-slate-neutral:#9aa3ad;--color-danger-wash:#2a1215;--color-danger-wash-border:#45161c;--color-danger-wash-ink:#ffb4bb;--color-ws-violet:#c084fc;--color-ws-green:#4ade80;--color-ws-blue:#6cb8ff;--color-subagent-tint-1:#2e2c25;--color-subagent-tint-2:#35332a;--color-subagent-tint-3:#3c3a2f;--si-run:#f87171}[data-theme=dark] pre code.hljs{padding:1em;display:block;overflow-x:auto}[data-theme=dark] code.hljs{padding:3px 5px}[data-theme=dark] .hljs{color:#c9d1d9;background:#0d1117}[data-theme=dark] .hljs-doctag,[data-theme=dark] .hljs-keyword,[data-theme=dark] .hljs-meta .hljs-keyword,[data-theme=dark] .hljs-template-tag,[data-theme=dark] .hljs-template-variable,[data-theme=dark] .hljs-type,[data-theme=dark] .hljs-variable.language_{color:#ff7b72}[data-theme=dark] .hljs-title,[data-theme=dark] .hljs-title.class_,[data-theme=dark] .hljs-title.class_.inherited__,[data-theme=dark] .hljs-title.function_{color:#d2a8ff}[data-theme=dark] .hljs-attr,[data-theme=dark] .hljs-attribute,[data-theme=dark] .hljs-literal,[data-theme=dark] .hljs-meta,[data-theme=dark] .hljs-number,[data-theme=dark] .hljs-operator,[data-theme=dark] .hljs-variable,[data-theme=dark] .hljs-selector-attr,[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-selector-id{color:#79c0ff}[data-theme=dark] .hljs-regexp,[data-theme=dark] .hljs-string,[data-theme=dark] .hljs-meta .hljs-string{color:#a5d6ff}[data-theme=dark] .hljs-built_in,[data-theme=dark] .hljs-symbol{color:#ffa657}[data-theme=dark] .hljs-comment,[data-theme=dark] .hljs-code,[data-theme=dark] .hljs-formula{color:#8b949e}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-quote,[data-theme=dark] .hljs-selector-tag,[data-theme=dark] .hljs-selector-pseudo{color:#7ee787}[data-theme=dark] .hljs-subst{color:#c9d1d9}[data-theme=dark] .hljs-section{color:#1f6feb;font-weight:700}[data-theme=dark] .hljs-bullet{color:#f2cc60}[data-theme=dark] .hljs-emphasis{color:#c9d1d9;font-style:italic}[data-theme=dark] .hljs-strong{color:#c9d1d9;font-weight:700}[data-theme=dark] .hljs-addition{color:#aff5b4;background-color:#033a16}[data-theme=dark] .hljs-deletion{color:#ffdcd7;background-color:#67060c}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-surface)}::-webkit-scrollbar-thumb{background:var(--color-surface-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.scrollbar-none{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-none::-webkit-scrollbar{display:none}body{background-color:var(--color-surface);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.md-content{overflow-wrap:break-word;word-break:break-word;min-width:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.md-content table{border-collapse:collapse;white-space:normal;background:#8b5cf60a;border:1px solid #8b5cf633;border-radius:.5em;width:100%;margin:.5em 0;display:block;overflow:auto hidden}.md-content table th,.md-content table td{white-space:normal;word-break:normal;overflow-wrap:break-word}.md-content table th:first-child,.md-content table td:first-child{white-space:nowrap;width:1%}.md-content p{margin-top:.5em;margin-bottom:.25em}.md-content ul{margin:.2em 0;padding-left:1.5em;list-style-type:disc}.md-content ol{margin:.2em 0;padding-left:1.5em;list-style-type:decimal}.md-content li{display:list-item}.md-content h1,.md-content h2,.md-content h3{color:var(--color-text-primary);margin:.75em 0 .3em;font-weight:800}.md-content h1{font-size:1.25em}.md-content h2{font-size:1.1em}.md-content h3{font-size:1em}.md-content blockquote{color:var(--color-text-secondary);border-left:3px solid #8b5cf666;margin:.5em 0;padding:.3em .75em}.md-content strong{color:var(--color-text-primary);font-weight:600}.md-content em{color:var(--color-accent-deep)}.md-content hr{border:none;border-top:1px solid var(--color-surface-border);margin:.5em 0}.md-content a{color:var(--color-accent-blue);text-underline-offset:2px;text-decoration:underline}.md-content th{color:var(--color-text-primary);background:#8b5cf61f}.md-content th,.md-content td{text-align:left;border:1px solid #8b5cf626;padding:.35em .6em}.md-content tbody tr:nth-child(2n){background:#8b5cf608}.md-content tbody tr:hover{background:#8b5cf614}.md-content code:not(pre code),.md-content :not(pre)>code{color:var(--color-accent-deep);background:#8b5cf614;border-radius:.3em;padding:.15em .35em;font-family:SF Mono,Fira Code,JetBrains Mono,monospace;font-size:.8em}.md-content pre{background:var(--color-surface-alt);border:1px solid var(--color-surface-border);border-radius:.5em;max-width:100%;margin:.5em 0;padding:.5em;font-size:.8em;overflow-x:auto}.md-content pre code{color:var(--color-text-primary);font-family:SF Mono,Fira Code,JetBrains Mono,monospace}[data-testid=assistant-turn] .md-content>:last-child{margin-bottom:.25em}[data-testid=assistant-turn] .md-content>:first-child{margin-top:.5em}.md-content .mermaid-diagram{justify-content:center;margin:.5em 0;padding:.5em;display:flex;overflow-x:auto}.md-content .mermaid-diagram svg{max-width:100%;height:auto}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}