@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.
- package/build/client/_app/immutable/assets/0.DBVVEjy9.css +2 -0
- package/build/client/_app/immutable/assets/2.BhBfHqja.css +1 -0
- package/build/client/_app/immutable/chunks/{Dk9aRp2m.js → 4B6J_kM2.js} +1 -1
- package/build/client/_app/immutable/chunks/{ANnPTMPF.js → 4cwyag_I.js} +1 -1
- package/build/client/_app/immutable/chunks/{D7-uGicP.js → 7FnrqGK9.js} +1 -1
- package/build/client/_app/immutable/chunks/{CIH5Juz4.js → AcmOeh2U.js} +1 -1
- package/build/client/_app/immutable/chunks/{BqX9BB0G.js → B2jrDnt8.js} +1 -1
- package/build/client/_app/immutable/chunks/{A5Iiq81h.js → B4F5liKq.js} +1 -1
- package/build/client/_app/immutable/chunks/{D3rUyYDm.js → B6bTO8_7.js} +1 -1
- package/build/client/_app/immutable/chunks/{2XtVrxH4.js → BBd0nTHG.js} +1 -1
- package/build/client/_app/immutable/chunks/BHDqH9nE.js +1 -0
- package/build/client/_app/immutable/chunks/{-izoh3h0.js → BO99LSSA.js} +1 -1
- package/build/client/_app/immutable/chunks/{BjafRUyA.js → BQC6O_RV.js} +1 -1
- package/build/client/_app/immutable/chunks/{BJsp4NMH.js → BWRXzjmQ.js} +1 -1
- package/build/client/_app/immutable/chunks/{crRp5OG4.js → BXKc4uuX.js} +1 -1
- package/build/client/_app/immutable/chunks/{j2lJ25s0.js → BenkQ_4r.js} +1 -1
- package/build/client/_app/immutable/chunks/{Dso_gKeU.js → BkYT72a1.js} +1 -1
- package/build/client/_app/immutable/chunks/{CCWXLdgd.js → BlwWx85l.js} +1 -1
- package/build/client/_app/immutable/chunks/{DCmONIPx.js → BmDADyfH.js} +1 -1
- package/build/client/_app/immutable/chunks/{DYfx-RRD.js → Bpd0I3U7.js} +1 -1
- package/build/client/_app/immutable/chunks/{B-V7Vlsz.js → Bqwvv7Vf.js} +4 -4
- package/build/client/_app/immutable/chunks/{CQTGR8fW.js → BsBBq-Qk.js} +1 -1
- package/build/client/_app/immutable/chunks/{IBXFCASw.js → Byu_teLA.js} +1 -1
- package/build/client/_app/immutable/chunks/{CzXb6qus.js → C0tWPpc3.js} +2 -2
- package/build/client/_app/immutable/chunks/{Cx8YXmgi.js → C4gs6zoI.js} +1 -1
- package/build/client/_app/immutable/chunks/CAneZX4t.js +8 -0
- package/build/client/_app/immutable/chunks/{olUfRNXS.js → CB55Rp7-.js} +1 -1
- package/build/client/_app/immutable/chunks/{C1dC47iq.js → CH_bR_0j.js} +1 -1
- package/build/client/_app/immutable/chunks/{CFofWD1C.js → CJ1fzlPC.js} +1 -1
- package/build/client/_app/immutable/chunks/{DfIqw6WM.js → CK5vhXvt.js} +1 -1
- package/build/client/_app/immutable/chunks/{0HT0ILkA.js → CRFuOqJI.js} +1 -1
- package/build/client/_app/immutable/chunks/{gXyYVhfn.js → CZoElI5B.js} +1 -1
- package/build/client/_app/immutable/chunks/{dcghWWmq.js → CajOZJDl.js} +1 -1
- package/build/client/_app/immutable/chunks/{BImoJlJo.js → CdaJvl_A.js} +1 -1
- package/build/client/_app/immutable/chunks/{CNJYmM8n.js → CeLBjOd9.js} +1 -1
- package/build/client/_app/immutable/chunks/{IoX9lmZK.js → CevKuuic.js} +1 -1
- package/build/client/_app/immutable/chunks/{B_Gknb5_.js → Cf0aMC4n.js} +1 -1
- package/build/client/_app/immutable/chunks/{C_MwBDNt.js → CnxoqrkQ.js} +1 -1
- package/build/client/_app/immutable/chunks/{ChC4viXw.js → Cr2ck_ss.js} +1 -1
- package/build/client/_app/immutable/chunks/{fJBuRi-A.js → Czc4_W7v.js} +1 -1
- package/build/client/_app/immutable/chunks/{CHYEvS-6.js → Czey8tDK.js} +1 -1
- package/build/client/_app/immutable/chunks/D-Rolhzs.js +1 -0
- package/build/client/_app/immutable/chunks/{bpkmZ_Dv.js → D0ChUnpi.js} +1 -1
- package/build/client/_app/immutable/chunks/{B5S0Wke9.js → D0uxHECr.js} +1 -1
- package/build/client/_app/immutable/chunks/{2M1KS72j.js → D6KenyiF.js} +1 -1
- package/build/client/_app/immutable/chunks/{DT1b6JaK.js → DBKMIEwD.js} +1 -1
- package/build/client/_app/immutable/chunks/{Bq4mG8qS.js → DEVxi5CK.js} +1 -1
- package/build/client/_app/immutable/chunks/{Bh_Z0-Fh.js → DFBKiA2Z.js} +1 -1
- package/build/client/_app/immutable/chunks/{DSqRqQNp.js → DIxy2USu.js} +1 -1
- package/build/client/_app/immutable/chunks/{D4I0Dqwh.js → DJQr4efH.js} +1 -1
- package/build/client/_app/immutable/chunks/DQXo7qdJ.js +1 -0
- package/build/client/_app/immutable/chunks/{3E8jbhSl.js → DU8C5thd.js} +1 -1
- package/build/client/_app/immutable/chunks/{D7eKc9ur.js → DUCaFYlx.js} +1 -1
- package/build/client/_app/immutable/chunks/{CbtU_GW3.js → DdI16loP.js} +1 -1
- package/build/client/_app/immutable/chunks/{DykTZ90H.js → DdJNsJBH.js} +1 -1
- package/build/client/_app/immutable/chunks/{C6zqVyWx.js → DfUgh5E_.js} +1 -1
- package/build/client/_app/immutable/chunks/{Ch7rc-L7.js → DmRY6FWm.js} +4 -4
- package/build/client/_app/immutable/chunks/{D7XrPGMK.js → DuRZnRVw.js} +1 -1
- package/build/client/_app/immutable/chunks/{Do0VAo0_.js → DuiFyTVb.js} +1 -1
- package/build/client/_app/immutable/chunks/{Ck2086Sr.js → DwcY-69G.js} +1 -1
- package/build/client/_app/immutable/chunks/K3xyLTzZ.js +1 -0
- package/build/client/_app/immutable/chunks/NcOjFWr3.js +6 -0
- package/build/client/_app/immutable/chunks/{BZ6uvzU8.js → O6xxeEm8.js} +1 -1
- package/build/client/_app/immutable/chunks/{DrVddB75.js → OW5Q7tGb.js} +1 -1
- package/build/client/_app/immutable/chunks/{CW2uYEvb.js → SN3Efo-Q.js} +1 -1
- package/build/client/_app/immutable/chunks/{Bf1I5ROF.js → ap4GAVq-.js} +1 -1
- package/build/client/_app/immutable/chunks/{DWYSL4om.js → at6PQqQ4.js} +1 -1
- package/build/client/_app/immutable/chunks/cHj8EuyS.js +3 -0
- package/build/client/_app/immutable/chunks/{l3etNtOh.js → eFcFJ9Ld.js} +1 -1
- package/build/client/_app/immutable/chunks/gZFoJ-NI.js +1 -0
- package/build/client/_app/immutable/chunks/{Bx68-tOf.js → kzciT-3i.js} +1 -1
- package/build/client/_app/immutable/chunks/{DNf96C-O.js → lF8CNVOA.js} +1 -1
- package/build/client/_app/immutable/chunks/o7DVZODA.js +1 -0
- package/build/client/_app/immutable/chunks/pdYhlwhf.js +1 -0
- package/build/client/_app/immutable/chunks/{q1Yj7q99.js → q5PRaRZk.js} +1 -1
- package/build/client/_app/immutable/chunks/xkjLeSzJ.js +1 -0
- package/build/client/_app/immutable/chunks/{BKU5-8Td.js → zypfUZYM.js} +1 -1
- package/build/client/_app/immutable/entry/app.DP0oSUf-.js +2 -0
- package/build/client/_app/immutable/entry/start.mBp3LB6J.js +1 -0
- package/build/client/_app/immutable/nodes/0.Dm_ry-Pr.js +1 -0
- package/build/client/_app/immutable/nodes/1.UuScj-IS.js +1 -0
- package/build/client/_app/immutable/nodes/2.CJRPZhbe.js +340 -0
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +6 -6
- package/build/index.js +6 -6
- package/build/server/chunks/chunks/{app-config.svelte.js-D7wkLUkK.js → app-config.svelte.js-BM4WbMFB.js} +5 -3
- package/build/server/chunks/chunks/{config.js-B0w1-uCA.js → config.js-vThvQeMn.js} +12 -3
- package/build/server/chunks/chunks/{db.js-BmnKaIBo.js → db.js-B8BUpxGM.js} +2 -2
- package/build/server/chunks/chunks/{db2.js-CpSDQEUB.js → db2.js-CNe3I_g2.js} +2 -2
- package/build/server/chunks/chunks/{dsh-connection.js-CE6s1mIM.js → dsh-connection.js-xltcocWy.js} +181 -4
- package/build/server/chunks/chunks/{git-probe.js-DBbLffkp.js → git-probe.js-CUsTmhmV.js} +2 -2
- package/build/server/chunks/chunks/{index-server.js-CV2lq-ha.js → index-server.js-DmIEbDVz.js} +2 -2
- package/build/server/chunks/chunks/{insight-config.js-DZBwKFH9.js → insight-config.js-CaHHJpFK.js} +12 -5
- package/build/server/chunks/chunks/{internal2.js-DgxNmZhS.js → internal2.js-Pv5iygVN.js} +4 -4
- package/build/server/chunks/chunks/{registry.js-D0ldrcNB.js → registry.js-BTiJ1Kaj.js} +2 -2
- package/build/server/chunks/chunks/{server.js-DqHGsQU2.js → server.js-B1bDXhHu.js} +47 -2
- package/build/server/chunks/chunks/{settings-document.js-BRTO59Al.js → settings-document.js-Gw1puaik.js} +2 -2
- package/build/server/chunks/chunks/{state.js-DPoVCoAg.js → state.js-BCaKzPy6.js} +5 -5
- package/build/server/chunks/chunks/{watcher.js-Ck2BsXQf.js → watcher.js-DcT3cS4v.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-B7qOvtA5.js → _server.ts.js-19pFOjH8.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DBLFNFXT.js → _server.ts.js-BcUn6axe.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-COyQSOOR.js → _server.ts.js-oMpzLZoy.js} +7 -7
- package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-CJjvHo1Z.js → _server.ts.js-DC3qPMQS.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-_XEUfVid.js → _server.ts.js-CHNcK7BH.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-e7j-kKSK.js → _server.ts.js-CYkOJL2O.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-BYiU0Wvv.js → _server.ts.js-DHTDi8KR.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-RL1-uaVR.js → _server.ts.js-Y5khEC2l.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-Cxc2r0BD.js → _server.ts.js-BmjgfZD2.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-DQ1jgFuc.js → _server.ts.js-IxS-goi1.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-DfbmPmUH.js → _server.ts.js-6STmJ7FD.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-CfcgdS1G.js → _server.ts.js-BVyx8gPc.js} +6 -5
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BOgNWE9k.js → _server.ts.js-CNJbv6CC.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-DExfzwju.js → _server.ts.js-CDWmXDJX.js} +37 -5
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/_server.ts.js-BDXQcQSL.js +56 -0
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-vuxSBOKD.js → _server.ts.js-CgedtzOg.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-DYh0lUVR.js → _server.ts.js-ut2pK15B.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CzmMoP9-.js → _server.ts.js-Ct2W7g4c.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CXnfYfR4.js → _server.ts.js-Rke3V_qh.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-CF2s7GwI.js → _server.ts.js-BYHm5WBA.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-DKw9ktIO.js → _server.ts.js-B_bEUKkt.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-pT2AO2S0.js → _server.ts.js-D78fGUQk.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-D4H2h6fc.js → _server.ts.js-CgB_c7zG.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-iwuADbdv.js → _server.ts.js-dVaW22_K.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-C36DpiRX.js → _server.ts.js-Dl8SBXdH.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-WApWfRu-.js → _server.ts.js-BKDiwMIE.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B8DQEsx6.js → _server.ts.js-D3FY2Wxt.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-B0ACEjPX.js → _server.ts.js-BWuIEdjl.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CmYfLvHD.js → _server.ts.js-CeiQFOGP.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-DrZveeFq.js → _server.ts.js-lMofZOns.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-C-nVpTN7.js → _server.ts.js-CNalVHrK.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-C-cuYV40.js → _server.ts.js-I2s8qvcV.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-BoiybbwX.js → _server.ts.js-DTKELD7v.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-DDqjDxoc.js → _server.ts.js-BXSD__Gg.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-DG0MHUkj.js → _server.ts.js-C9IZl2Qh.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-Cz4XSEfb.js → _server.ts.js-BRXu3UtL.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DV4wF7XG.js → _server.ts.js-DmnpiaD2.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-X0mwkV_4.js → _server.ts.js-C5qCdsdm.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-D_AEj6qx.js → _server.ts.js-BVUn49yf.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-Cj3S-2MC.js → _server.ts.js-DuCOsoF0.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-DuuhbcTE.js → _server.ts.js-2mcRY7IP.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-C72akYlH.js → _server.ts.js-DZjaHZxU.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-CEO2aw-C.js → _server.ts.js-DTVmsohJ.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-BhR4Cblt.js → _server.ts.js-DZXTArj7.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BFdpm_he.js → _server.ts.js-LSc5EKH7.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-D5eW-2fL.js → _server.ts.js-DNjiScBe.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-iax8K9x8.js → _server.ts.js-CHMbLoSn.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CdfiRwgl.js → _server.ts.js-BgM4JEAm.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-CBU0ug30.js → _server.ts.js-BH0cLS8o.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-CLozZQT3.js → _server.ts.js-BzlV3cVT.js} +6 -6
- package/build/server/chunks/entries/{hooks.server.js-BSnc9oHw.js → hooks.server.js-B-e4_ekh.js} +3 -3
- package/build/server/chunks/entries/pages/{_error.svelte.js-B9CGiiZy.js → _error.svelte.js-BRyCyR0c.js} +6 -6
- package/build/server/chunks/entries/pages/{_page.server.ts.js-yB-zbLkm.js → _page.server.ts.js-DttLUwdf.js} +2 -2
- package/build/server/chunks/entries/pages/{_page.svelte.js-D3F2fiR4.js → _page.svelte.js-CKY8hz9T.js} +10372 -9586
- package/build/server/chunks/{handler-CF16q5dY.js → handler-D1oqmwyy.js} +3 -3
- package/build/server/chunks/{index.js-DsT3Sxoa.js → index.js-BZ8zP9wS.js} +4 -4
- package/build/server/chunks/{manifest.js-CW2r9Rb1.js → manifest.js-CA6PuZTD.js} +61 -54
- package/build/server/chunks/nodes/{0.js-gr8Z-ETs.js → 0.js-DtkNHIFx.js} +3 -3
- package/build/server/chunks/nodes/1.js-Q6zZupRG.js +9 -0
- package/build/server/chunks/nodes/{2.js-Cif5vNvc.js → 2.js-P1boc94A.js} +9 -9
- package/package.json +1 -1
- package/skills/dsi-pattern-thin/SKILL.md +116 -0
- package/skills/dsi-pattern-thin/references/case-study-2026-10-21-conversation-feed-host.md +64 -0
- package/skills/dsi-pattern-thin/references/case-study-2026-10-21-tool-run-row-host.md +66 -0
- package/template/.dsi/prompts.sqlite-shm +0 -0
- package/template/.dsi/prompts.sqlite-wal +0 -0
- package/build/client/_app/immutable/assets/0.CrT3Lf0L.css +0 -2
- package/build/client/_app/immutable/assets/2.ByYVysCj.css +0 -1
- package/build/client/_app/immutable/chunks/BBDOLPkB.js +0 -1
- package/build/client/_app/immutable/chunks/BMgyB-Sy.js +0 -1
- package/build/client/_app/immutable/chunks/BYHxHjHc.js +0 -1
- package/build/client/_app/immutable/chunks/BwNsQhd8.js +0 -1
- package/build/client/_app/immutable/chunks/CMByLjfJ.js +0 -1
- package/build/client/_app/immutable/chunks/CW7JStOk.js +0 -1
- package/build/client/_app/immutable/chunks/D6mTYwDH.js +0 -6
- package/build/client/_app/immutable/chunks/DlfWhx6l.js +0 -1
- package/build/client/_app/immutable/chunks/DmLHHlla.js +0 -3
- package/build/client/_app/immutable/chunks/DwWy6K0V.js +0 -1
- package/build/client/_app/immutable/chunks/da2fibLv.js +0 -8
- package/build/client/_app/immutable/entry/app.DID8VW1I.js +0 -2
- package/build/client/_app/immutable/entry/start.CkxDcwJy.js +0 -1
- package/build/client/_app/immutable/nodes/0.oyzYR3-4.js +0 -1
- package/build/client/_app/immutable/nodes/1.2U7ECroT.js +0 -1
- package/build/client/_app/immutable/nodes/2.D1lz0hMu.js +0 -337
- 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}}
|