@juspay/shooter 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/shooter.cjs +182 -31
- package/build/client/_app/immutable/assets/{0.DC5pAwP3.css → 0.BhZOCxO4.css} +1 -1
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css +1 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
- package/build/client/_app/immutable/assets/{3.BoXp0JoS.css → 3.DGDHCVnW.css} +1 -1
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css +1 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css +1 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.br +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.gz +0 -0
- package/build/client/_app/immutable/assets/{7.PyEFVv_s.css → 7.DwS5ZHBh.css} +1 -1
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.br +0 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +1 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js +20 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js +1 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{50RPd5u3.js → B8zoBsv3.js} +1 -1
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js +1 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js +1 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js +1 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CdL99jkG.js → CNmDAqoQ.js} +1 -1
- package/build/client/_app/immutable/chunks/CNmDAqoQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNmDAqoQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{ClK4wZbC.js → CQjSATpv.js} +16 -16
- package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CojFyTPp.js → CSoRdFvv.js} +1 -1
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{tjbnEgXP.js → CZHsSL_X.js} +1 -1
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CrVuYlkB.js +1 -0
- package/build/client/_app/immutable/chunks/CrVuYlkB.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrVuYlkB.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D3Vl-Qqr.js +1 -0
- package/build/client/_app/immutable/chunks/D3Vl-Qqr.js.br +0 -0
- package/build/client/_app/immutable/chunks/D3Vl-Qqr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js +1 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js +41 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js +1 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js +2 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CWzZbNpA.js +2 -0
- package/build/client/_app/immutable/entry/app.CWzZbNpA.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CWzZbNpA.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.t0E4BXrO.js +1 -0
- package/build/client/_app/immutable/entry/start.t0E4BXrO.js.br +2 -0
- package/build/client/_app/immutable/entry/start.t0E4BXrO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.5I21KR7K.js +1 -0
- package/build/client/_app/immutable/nodes/0.5I21KR7K.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.5I21KR7K.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BDCm0X_6.js +1 -0
- package/build/client/_app/immutable/nodes/1.BDCm0X_6.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BDCm0X_6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CKjSEOom.js +1 -0
- package/build/client/_app/immutable/nodes/2.CKjSEOom.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CKjSEOom.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js +3 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.pRflZhvu.js +1 -0
- package/build/client/_app/immutable/nodes/4.pRflZhvu.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.pRflZhvu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.Co1ngwGh.js +4 -0
- package/build/client/_app/immutable/nodes/5.Co1ngwGh.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.Co1ngwGh.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CUnGGKik.js +2 -0
- package/build/client/_app/immutable/nodes/6.CUnGGKik.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CUnGGKik.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.CgvPBG9m.js +2 -0
- package/build/client/_app/immutable/nodes/7.CgvPBG9m.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.CgvPBG9m.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/manifest.json +13 -0
- package/build/client/manifest.json.br +0 -0
- package/build/client/manifest.json.gz +0 -0
- package/build/server/chunks/0-CYsoSMA0.js +9 -0
- package/build/server/chunks/0-CYsoSMA0.js.map +1 -0
- package/build/server/chunks/1-BSsLbzC1.js +9 -0
- package/build/server/chunks/1-BSsLbzC1.js.map +1 -0
- package/build/server/chunks/2-De1V922H.js +9 -0
- package/build/server/chunks/2-De1V922H.js.map +1 -0
- package/build/server/chunks/3-Ck7ewhOX.js +9 -0
- package/build/server/chunks/3-Ck7ewhOX.js.map +1 -0
- package/build/server/chunks/4-Dl1IrE-x.js +9 -0
- package/build/server/chunks/4-Dl1IrE-x.js.map +1 -0
- package/build/server/chunks/5-CkT7yrsJ.js +9 -0
- package/build/server/chunks/{5-D0wB7nfE.js.map → 5-CkT7yrsJ.js.map} +1 -1
- package/build/server/chunks/6-DMkV5QEZ.js +9 -0
- package/build/server/chunks/6-DMkV5QEZ.js.map +1 -0
- package/build/server/chunks/7-b4mtbSZL.js +9 -0
- package/build/server/chunks/7-b4mtbSZL.js.map +1 -0
- package/build/server/chunks/{Button-C7D5W6wV.js → Button-Cs1aE6ka.js} +2 -2
- package/build/server/chunks/{Button-C7D5W6wV.js.map → Button-Cs1aE6ka.js.map} +1 -1
- package/build/server/chunks/{EmptyState-Ci4pSpmY.js → EmptyState-DDFH1K8g.js} +10 -4
- package/build/server/chunks/EmptyState-DDFH1K8g.js.map +1 -0
- package/build/server/chunks/{Icon-DyrkHVnV.js → Icon-CEUrotA6.js} +3 -3
- package/build/server/chunks/{Icon-DyrkHVnV.js.map → Icon-CEUrotA6.js.map} +1 -1
- package/build/server/chunks/{Shimmer-BITK6wrm.js → Shimmer-DB8W1zt6.js} +2 -2
- package/build/server/chunks/{Shimmer-BITK6wrm.js.map → Shimmer-DB8W1zt6.js.map} +1 -1
- package/build/server/chunks/_error.svelte-uCOJNxvr.js +39 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js.map +1 -0
- package/build/server/chunks/{_layout.svelte-CO4f8UD7.js → _layout.svelte-CtWmEJwe.js} +5 -25
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C6bns9aQ.js → _page.svelte-BcZaKdX9.js} +13 -9
- package/build/server/chunks/_page.svelte-BcZaKdX9.js.map +1 -0
- package/build/server/chunks/{_page.svelte-3Cc3NMAP.js → _page.svelte-BdYynOck.js} +18 -14
- package/build/server/chunks/_page.svelte-BdYynOck.js.map +1 -0
- package/build/server/chunks/{_page.svelte-CFCONiDK.js → _page.svelte-BgevQjq1.js} +16 -12
- package/build/server/chunks/_page.svelte-BgevQjq1.js.map +1 -0
- package/build/server/chunks/{_page.svelte-DskND_G9.js → _page.svelte-CVq6tRb3.js} +8 -8
- package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +1 -0
- package/build/server/chunks/{_page.svelte-rTrWmhOp.js → _page.svelte-CxWcQ0Am.js} +8 -8
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +1 -0
- package/build/server/chunks/{_page.svelte-C0p3HsIW.js → _page.svelte-DO4oa_LY.js} +11 -13
- package/build/server/chunks/_page.svelte-DO4oa_LY.js.map +1 -0
- package/build/server/chunks/{_server.ts-CS5H5klP.js → _server.ts-CAxsWKvS.js} +14 -10
- package/build/server/chunks/_server.ts-CAxsWKvS.js.map +1 -0
- package/build/server/chunks/{_server.ts-C8slOHB0.js → _server.ts-CTpcLUH8.js} +3 -2
- package/build/server/chunks/_server.ts-CTpcLUH8.js.map +1 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js +71 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js.map +1 -0
- package/build/server/chunks/{_server.ts-DhTrdlWH.js → _server.ts-DB_Kg97c.js} +14 -3
- package/build/server/chunks/_server.ts-DB_Kg97c.js.map +1 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js +99 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js.map +1 -0
- package/build/server/chunks/{_server.ts-DpEVfp8W.js → _server.ts-Deok2y88.js} +58 -40
- package/build/server/chunks/_server.ts-Deok2y88.js.map +1 -0
- package/build/server/chunks/{_server.ts-uHUi-4cd.js → _server.ts-vekTmWAx.js} +3 -2
- package/build/server/chunks/_server.ts-vekTmWAx.js.map +1 -0
- package/build/server/chunks/{client2-BjxIYuno.js → client-BdGHe_hY.js} +4 -4
- package/build/server/chunks/client-BdGHe_hY.js.map +1 -0
- package/build/server/chunks/client2-CCBGA-2V.js +7 -0
- package/build/server/chunks/client2-CCBGA-2V.js.map +1 -0
- package/build/server/chunks/{index-Cnl871UW.js → index-DwaY1cAm.js} +2 -2
- package/build/server/chunks/{index-Cnl871UW.js.map → index-DwaY1cAm.js.map} +1 -1
- package/build/server/chunks/{index-server-CUC9Jt7r.js → index-server-CrDaL06Y.js} +2 -2
- package/build/server/chunks/{index-server-CUC9Jt7r.js.map → index-server-CrDaL06Y.js.map} +1 -1
- package/build/server/chunks/{index2-HA3VTH7y.js → index2-CgclKpUj.js} +2 -2
- package/build/server/chunks/{index2-HA3VTH7y.js.map → index2-CgclKpUj.js.map} +1 -1
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js +15 -0
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +1 -0
- package/build/server/chunks/{pty-manager-DR0Wt2Ac.js → pty-manager-BQVB7IVj.js} +17 -15
- package/build/server/chunks/pty-manager-BQVB7IVj.js.map +1 -0
- package/build/server/chunks/{root-DhswcH6o.js → root-DDSnEAZv.js} +2 -2
- package/build/server/chunks/{root-DhswcH6o.js.map → root-DDSnEAZv.js.map} +1 -1
- package/build/server/chunks/{state.svelte-2Lellg7t.js → state.svelte-hBbXlUak.js} +3 -3
- package/build/server/chunks/{state.svelte-2Lellg7t.js.map → state.svelte-hBbXlUak.js.map} +1 -1
- package/build/server/chunks/stores-DHNzYNpX.js +28 -0
- package/build/server/chunks/stores-DHNzYNpX.js.map +1 -0
- package/build/server/index.js +5 -5
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +30 -16
- package/build/server/manifest.js.map +1 -1
- package/package.json +1 -1
- package/scripts/setup.cjs +87 -13
- package/server.ts +3 -0
- package/src/app.html +3 -0
- package/src/lib/modules/client/common/cache.ts +10 -2
- package/src/lib/modules/client/common/index.ts +1 -1
- package/src/lib/modules/client/common/markdown.ts +22 -1
- package/src/lib/modules/client/common/time.ts +13 -11
- package/src/lib/modules/client/terminal/ChatView.svelte +324 -67
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +1 -0
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +4 -1
- package/src/lib/modules/server/sessions/jsonl-reader.ts +43 -28
- package/src/lib/modules/server/sessions/opencode-db-path.ts +26 -0
- package/src/lib/modules/server/sessions/opencode-reader.ts +13 -15
- package/src/lib/modules/server/sessions/process-detector.ts +103 -0
- package/src/lib/modules/server/terminal/opencode-watcher.ts +3 -14
- package/src/lib/modules/server/terminal/pty-manager.ts +20 -8
- package/src/lib/modules/server/ws/session-handler.ts +282 -104
- package/src/lib/theme.css +30 -0
- package/src/routes/+error.svelte +94 -0
- package/src/routes/+page.svelte +18 -8
- package/src/routes/api/health/+server.ts +14 -2
- package/src/routes/api/sessions/+server.ts +12 -4
- package/src/routes/api/sessions/connect/+server.ts +125 -0
- package/src/routes/api/sessions/detect/+server.ts +27 -0
- package/src/routes/api/terminals/+server.ts +12 -9
- package/src/routes/config/+page.svelte +22 -1
- package/src/routes/project/+page.svelte +159 -8
- package/src/routes/session/[id]/+page.svelte +477 -299
- package/src/routes/terminals/+page.svelte +14 -3
- package/src/routes/terminals/[id]/+page.svelte +25 -0
- package/svelte.config.js +1 -1
- package/build/client/_app/immutable/assets/0.DC5pAwP3.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DC5pAwP3.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.br +0 -0
- package/build/client/_app/immutable/assets/3.BoXp0JoS.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css +0 -1
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css +0 -1
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.br +0 -0
- package/build/client/_app/immutable/assets/7.PyEFVv_s.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css +0 -1
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
- package/build/client/_app/immutable/chunks/50RPd5u3.js.br +0 -0
- package/build/client/_app/immutable/chunks/50RPd5u3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js +0 -1
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.br +0 -0
- package/build/client/_app/immutable/chunks/BDC7XD4o.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js +0 -2
- package/build/client/_app/immutable/chunks/BeONA6_G.js.br +0 -0
- package/build/client/_app/immutable/chunks/BeONA6_G.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js +0 -1
- package/build/client/_app/immutable/chunks/BygiiMA0.js.br +0 -0
- package/build/client/_app/immutable/chunks/BygiiMA0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js +0 -1
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js +0 -1
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CHvUpVYv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CbqC9BW7.js +0 -1
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.br +0 -2
- package/build/client/_app/immutable/chunks/CbqC9BW7.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CdL99jkG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.br +0 -0
- package/build/client/_app/immutable/chunks/ClK4wZbC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.br +0 -0
- package/build/client/_app/immutable/chunks/CojFyTPp.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js +0 -60
- package/build/client/_app/immutable/chunks/DREFAyhX.js.br +0 -0
- package/build/client/_app/immutable/chunks/DREFAyhX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js +0 -1
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.br +0 -0
- package/build/client/_app/immutable/chunks/K_aHH2KN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js +0 -1
- package/build/client/_app/immutable/chunks/Ona8oofC.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ona8oofC.js.gz +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.br +0 -0
- package/build/client/_app/immutable/chunks/tjbnEgXP.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js +0 -2
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.br +0 -0
- package/build/client/_app/immutable/entry/app.anqwe7ZL.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js +0 -1
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.br +0 -2
- package/build/client/_app/immutable/entry/start.BV2VRv6h.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js +0 -1
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D0i5MqcI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js +0 -1
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DN5n5c6F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js +0 -1
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BTjkNKZJ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js +0 -3
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CEkigHDv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js +0 -1
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.B-8Zsc9k.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js +0 -1
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.shitbtHc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js +0 -2
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CB8Q6eH8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js +0 -2
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D0CrR6pl.js.gz +0 -0
- package/build/server/chunks/0-Cs1dzfRz.js +0 -9
- package/build/server/chunks/0-Cs1dzfRz.js.map +0 -1
- package/build/server/chunks/1-BCSX7oED.js +0 -9
- package/build/server/chunks/1-BCSX7oED.js.map +0 -1
- package/build/server/chunks/2-6gkeO8b4.js +0 -9
- package/build/server/chunks/2-6gkeO8b4.js.map +0 -1
- package/build/server/chunks/3-DH9J9Vsc.js +0 -9
- package/build/server/chunks/3-DH9J9Vsc.js.map +0 -1
- package/build/server/chunks/4-Rzy5TYjl.js +0 -9
- package/build/server/chunks/4-Rzy5TYjl.js.map +0 -1
- package/build/server/chunks/5-D0wB7nfE.js +0 -9
- package/build/server/chunks/6-DR2ABDPq.js +0 -9
- package/build/server/chunks/6-DR2ABDPq.js.map +0 -1
- package/build/server/chunks/7-D-oQJsia.js +0 -9
- package/build/server/chunks/7-D-oQJsia.js.map +0 -1
- package/build/server/chunks/EmptyState-Ci4pSpmY.js.map +0 -1
- package/build/server/chunks/_layout.svelte-CO4f8UD7.js.map +0 -1
- package/build/server/chunks/_page.svelte-3Cc3NMAP.js.map +0 -1
- package/build/server/chunks/_page.svelte-C0p3HsIW.js.map +0 -1
- package/build/server/chunks/_page.svelte-C6bns9aQ.js.map +0 -1
- package/build/server/chunks/_page.svelte-CFCONiDK.js.map +0 -1
- package/build/server/chunks/_page.svelte-DskND_G9.js.map +0 -1
- package/build/server/chunks/_page.svelte-rTrWmhOp.js.map +0 -1
- package/build/server/chunks/_server.ts-C8slOHB0.js.map +0 -1
- package/build/server/chunks/_server.ts-CS5H5klP.js.map +0 -1
- package/build/server/chunks/_server.ts-DhTrdlWH.js.map +0 -1
- package/build/server/chunks/_server.ts-DpEVfp8W.js.map +0 -1
- package/build/server/chunks/_server.ts-uHUi-4cd.js.map +0 -1
- package/build/server/chunks/client-BYT9c0ig.js +0 -7
- package/build/server/chunks/client-BYT9c0ig.js.map +0 -1
- package/build/server/chunks/client2-BjxIYuno.js.map +0 -1
- package/build/server/chunks/error.svelte-BG_yE-Wt.js +0 -27
- package/build/server/chunks/error.svelte-BG_yE-Wt.js.map +0 -1
- package/build/server/chunks/pty-manager-DR0Wt2Ac.js.map +0 -1
package/bin/shooter.cjs
CHANGED
|
@@ -103,6 +103,69 @@ switch (command) {
|
|
|
103
103
|
|
|
104
104
|
// ── start ───────────────────────────────────────────────────────────
|
|
105
105
|
|
|
106
|
+
function hasFlag(flag) {
|
|
107
|
+
return args.includes(flag);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function isCloudflaredAvailable() {
|
|
111
|
+
try {
|
|
112
|
+
execSync('which cloudflared', { stdio: 'ignore' });
|
|
113
|
+
return true;
|
|
114
|
+
} catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function startTunnel(port) {
|
|
120
|
+
const tunnelLog = path.join(LOG_DIR, 'tunnel.log');
|
|
121
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
122
|
+
|
|
123
|
+
const cf = spawn('cloudflared', ['tunnel', '--url', `http://localhost:${port}`], {
|
|
124
|
+
cwd: PKG_ROOT,
|
|
125
|
+
detached: true,
|
|
126
|
+
stdio: ['ignore', fs.openSync(tunnelLog, 'w'), fs.openSync(tunnelLog, 'w')],
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
const tunnelPidFile = path.join(SHOOTER_HOME, 'tunnel.pid');
|
|
130
|
+
fs.writeFileSync(tunnelPidFile, String(cf.pid));
|
|
131
|
+
cf.unref();
|
|
132
|
+
|
|
133
|
+
// Poll for the tunnel URL (up to 15s)
|
|
134
|
+
const tunnelUrlFile = path.join(SHOOTER_HOME, '.tunnel_url');
|
|
135
|
+
let waited = 0;
|
|
136
|
+
const poll = setInterval(() => {
|
|
137
|
+
try {
|
|
138
|
+
const log = fs.readFileSync(tunnelLog, 'utf8');
|
|
139
|
+
const match = log.match(/https:\/\/[a-z0-9-]+\.trycloudflare\.com/);
|
|
140
|
+
if (match) {
|
|
141
|
+
clearInterval(poll);
|
|
142
|
+
fs.writeFileSync(tunnelUrlFile, match[0]);
|
|
143
|
+
console.log(`Tunnel active: ${match[0]}`);
|
|
144
|
+
}
|
|
145
|
+
} catch {}
|
|
146
|
+
waited += 1;
|
|
147
|
+
if (waited > 15) {
|
|
148
|
+
clearInterval(poll);
|
|
149
|
+
console.log('Tunnel is starting in the background. Check logs: ' + tunnelLog);
|
|
150
|
+
}
|
|
151
|
+
}, 1000);
|
|
152
|
+
|
|
153
|
+
return cf.pid;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function stopTunnel() {
|
|
157
|
+
const tunnelPidFile = path.join(SHOOTER_HOME, 'tunnel.pid');
|
|
158
|
+
const tunnelUrlFile = path.join(SHOOTER_HOME, '.tunnel_url');
|
|
159
|
+
try {
|
|
160
|
+
const pid = parseInt(fs.readFileSync(tunnelPidFile, 'utf8').trim(), 10);
|
|
161
|
+
if (!isNaN(pid)) {
|
|
162
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
163
|
+
}
|
|
164
|
+
try { fs.unlinkSync(tunnelPidFile); } catch {}
|
|
165
|
+
try { fs.unlinkSync(tunnelUrlFile); } catch {}
|
|
166
|
+
} catch {}
|
|
167
|
+
}
|
|
168
|
+
|
|
106
169
|
function startServer() {
|
|
107
170
|
const serverEntry = path.join(PKG_ROOT, 'server.ts');
|
|
108
171
|
|
|
@@ -120,36 +183,109 @@ function startServer() {
|
|
|
120
183
|
process.exit(0);
|
|
121
184
|
}
|
|
122
185
|
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
env: {
|
|
127
|
-
...process.env,
|
|
128
|
-
SHOOTER_PKG_ROOT: PKG_ROOT,
|
|
129
|
-
SHOOTER_HOME,
|
|
130
|
-
},
|
|
131
|
-
});
|
|
186
|
+
const daemon = hasFlag('--daemon') || hasFlag('-d');
|
|
187
|
+
const noTunnel = hasFlag('--no-tunnel');
|
|
188
|
+
const port = resolvePort();
|
|
132
189
|
|
|
133
|
-
|
|
134
|
-
|
|
190
|
+
if (daemon) {
|
|
191
|
+
// ── Daemon mode: detach, redirect to log file ──
|
|
192
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
193
|
+
const logFd = fs.openSync(LOG_FILE, 'a');
|
|
194
|
+
|
|
195
|
+
// Use tsx's register hook via --import so the child is the actual server process
|
|
196
|
+
// (not a wrapper that spawns another child)
|
|
197
|
+
const tsxLoader = path.join(PKG_ROOT, 'node_modules', 'tsx', 'dist', 'loader.mjs');
|
|
198
|
+
const tsxPreflight = path.join(PKG_ROOT, 'node_modules', 'tsx', 'dist', 'preflight.cjs');
|
|
199
|
+
const nodeArgs = [];
|
|
200
|
+
if (fs.existsSync(tsxPreflight)) {
|
|
201
|
+
nodeArgs.push('--require', tsxPreflight);
|
|
202
|
+
}
|
|
203
|
+
if (fs.existsSync(tsxLoader)) {
|
|
204
|
+
nodeArgs.push('--import', `file://${tsxLoader}`);
|
|
205
|
+
} else {
|
|
206
|
+
nodeArgs.push('--import', 'tsx');
|
|
207
|
+
}
|
|
208
|
+
nodeArgs.push(serverEntry);
|
|
209
|
+
|
|
210
|
+
const child = spawn(process.execPath, nodeArgs, {
|
|
211
|
+
cwd: PKG_ROOT,
|
|
212
|
+
detached: true,
|
|
213
|
+
stdio: ['ignore', logFd, logFd],
|
|
214
|
+
env: {
|
|
215
|
+
...process.env,
|
|
216
|
+
SHOOTER_PKG_ROOT: PKG_ROOT,
|
|
217
|
+
SHOOTER_HOME,
|
|
218
|
+
},
|
|
219
|
+
});
|
|
135
220
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
221
|
+
writePid(child.pid);
|
|
222
|
+
child.unref();
|
|
223
|
+
fs.closeSync(logFd);
|
|
224
|
+
|
|
225
|
+
console.log(`Shooter started in background (PID ${child.pid}).`);
|
|
226
|
+
console.log(` URL: http://localhost:${port}`);
|
|
227
|
+
console.log(` Logs: ${LOG_FILE}`);
|
|
228
|
+
|
|
229
|
+
// Wait briefly for server to be ready before starting tunnel
|
|
230
|
+
if (!noTunnel && isCloudflaredAvailable()) {
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
startTunnel(port);
|
|
233
|
+
}, 3000);
|
|
234
|
+
// Keep process alive long enough for tunnel URL to appear
|
|
235
|
+
setTimeout(() => process.exit(0), 20000);
|
|
236
|
+
} else {
|
|
237
|
+
if (!noTunnel && !isCloudflaredAvailable()) {
|
|
238
|
+
console.log(' (cloudflared not found — no tunnel. Install: brew install cloudflared)');
|
|
239
|
+
}
|
|
240
|
+
process.exit(0);
|
|
241
|
+
}
|
|
242
|
+
} else {
|
|
243
|
+
// ── Foreground mode: inherit stdio ──
|
|
244
|
+
const child = spawn(process.execPath, ['--import', 'tsx', serverEntry], {
|
|
245
|
+
cwd: PKG_ROOT,
|
|
246
|
+
stdio: 'inherit',
|
|
247
|
+
env: {
|
|
248
|
+
...process.env,
|
|
249
|
+
SHOOTER_PKG_ROOT: PKG_ROOT,
|
|
250
|
+
SHOOTER_HOME,
|
|
251
|
+
},
|
|
252
|
+
});
|
|
141
253
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
254
|
+
writePid(child.pid);
|
|
255
|
+
|
|
256
|
+
// Start tunnel in foreground mode too (unless --no-tunnel)
|
|
257
|
+
let tunnelStarted = false;
|
|
258
|
+
if (!noTunnel && isCloudflaredAvailable()) {
|
|
259
|
+
// Give server 3s to start before launching tunnel
|
|
260
|
+
setTimeout(() => {
|
|
261
|
+
startTunnel(port);
|
|
262
|
+
tunnelStarted = true;
|
|
263
|
+
}, 3000);
|
|
146
264
|
}
|
|
147
|
-
process.exit(code ?? 1);
|
|
148
|
-
});
|
|
149
265
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
266
|
+
child.on('error', (err) => {
|
|
267
|
+
removePid();
|
|
268
|
+
if (tunnelStarted) stopTunnel();
|
|
269
|
+
console.error('Failed to start Shooter server:', err.message);
|
|
270
|
+
process.exit(1);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
child.on('exit', (code, signal) => {
|
|
274
|
+
removePid();
|
|
275
|
+
stopTunnel();
|
|
276
|
+
if (signal) {
|
|
277
|
+
process.exit(128 + (signalCode(signal) || 1));
|
|
278
|
+
}
|
|
279
|
+
process.exit(code ?? 1);
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
// Forward signals to the child so graceful shutdown works
|
|
283
|
+
for (const sig of ['SIGTERM', 'SIGINT', 'SIGHUP']) {
|
|
284
|
+
process.on(sig, () => {
|
|
285
|
+
child.kill(sig);
|
|
286
|
+
stopTunnel();
|
|
287
|
+
});
|
|
288
|
+
}
|
|
153
289
|
}
|
|
154
290
|
}
|
|
155
291
|
|
|
@@ -158,11 +294,14 @@ function startServer() {
|
|
|
158
294
|
function stopServer() {
|
|
159
295
|
const pid = readPid();
|
|
160
296
|
if (!pid) {
|
|
297
|
+
// Still try to stop tunnel even if server isn't running
|
|
298
|
+
stopTunnel();
|
|
161
299
|
console.log('Shooter is not running.');
|
|
162
300
|
process.exit(0);
|
|
163
301
|
}
|
|
164
302
|
|
|
165
303
|
console.log(`Stopping Shooter (PID ${pid})...`);
|
|
304
|
+
stopTunnel();
|
|
166
305
|
try {
|
|
167
306
|
process.kill(pid, 'SIGTERM');
|
|
168
307
|
// Wait briefly for clean shutdown
|
|
@@ -208,11 +347,17 @@ function showStatus() {
|
|
|
208
347
|
const pid = readPid();
|
|
209
348
|
const port = resolvePort();
|
|
210
349
|
const autostartEnabled = isAutostartInstalled();
|
|
350
|
+
const tunnelUrlFile = path.join(SHOOTER_HOME, '.tunnel_url');
|
|
351
|
+
let tunnelUrl = null;
|
|
352
|
+
try { tunnelUrl = fs.readFileSync(tunnelUrlFile, 'utf8').trim(); } catch {}
|
|
211
353
|
|
|
212
354
|
if (pid) {
|
|
213
355
|
console.log(`Shooter is running`);
|
|
214
356
|
console.log(` PID: ${pid}`);
|
|
215
357
|
console.log(` URL: http://localhost:${port}`);
|
|
358
|
+
if (tunnelUrl) {
|
|
359
|
+
console.log(` Tunnel: ${tunnelUrl}`);
|
|
360
|
+
}
|
|
216
361
|
console.log(` Autostart: ${autostartEnabled ? 'enabled' : 'disabled'}`);
|
|
217
362
|
console.log(` Logs: ${LOG_FILE}`);
|
|
218
363
|
console.log(` Home: ${SHOOTER_HOME}`);
|
|
@@ -476,12 +621,12 @@ function showHelp() {
|
|
|
476
621
|
`
|
|
477
622
|
Shooter v${pkg.version}
|
|
478
623
|
|
|
479
|
-
Usage: shooter [command]
|
|
624
|
+
Usage: shooter [command] [options]
|
|
480
625
|
|
|
481
626
|
Commands:
|
|
482
|
-
start Start the server (default)
|
|
483
|
-
stop Stop the running server
|
|
484
|
-
status Show server status
|
|
627
|
+
start Start the server (default, foreground)
|
|
628
|
+
stop Stop the running server and tunnel
|
|
629
|
+
status Show server status and tunnel URL
|
|
485
630
|
autostart on Start automatically on login (macOS/Linux)
|
|
486
631
|
autostart off Disable autostart
|
|
487
632
|
logs Tail server logs
|
|
@@ -489,9 +634,15 @@ Commands:
|
|
|
489
634
|
version Show version number
|
|
490
635
|
help Show this help message
|
|
491
636
|
|
|
637
|
+
Start options:
|
|
638
|
+
-d, --daemon Run in background (detach from terminal)
|
|
639
|
+
--no-tunnel Don't start a Cloudflare Tunnel
|
|
640
|
+
|
|
492
641
|
Examples:
|
|
493
|
-
shooter Start the server
|
|
494
|
-
shooter
|
|
642
|
+
shooter Start the server + tunnel (foreground)
|
|
643
|
+
shooter start -d Start in background (daemon mode)
|
|
644
|
+
shooter start --no-tunnel Start without Cloudflare Tunnel
|
|
645
|
+
shooter status Check status and tunnel URL
|
|
495
646
|
shooter autostart on Enable autostart on login
|
|
496
647
|
shooter logs Follow server logs
|
|
497
648
|
shooter setup Configure credentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--ds-background-100: #0a0a0a;--ds-background-200: #000000;--ds-gray-100: #1a1a1a;--ds-gray-200: #1f1f1f;--ds-gray-300: #292929;--ds-gray-400: #2e2e2e;--ds-gray-500: #454545;--ds-gray-600: #878787;--ds-gray-700: #8f8f8f;--ds-gray-800: #7d7d7d;--ds-gray-900: #a1a1a1;--ds-gray-1000: #ededed;--ds-gray-alpha-100: rgba(255, 255, 255, .06);--ds-gray-alpha-200: rgba(255, 255, 255, .09);--ds-gray-alpha-300: rgba(255, 255, 255, .13);--ds-gray-alpha-400: rgba(255, 255, 255, .14);--ds-blue-100: #0d1d33;--ds-blue-700: #0070f3;--ds-blue-900: #52a8ff;--ds-red-100: #2a1314;--ds-red-700: #e5484d;--ds-red-900: #ff6166;--ds-green-100: #0d1f12;--ds-green-700: #46a758;--ds-green-900: #62c073;--ds-amber-100: #271700;--ds-amber-700: #f5a623;--ds-amber-900: #ffb224;--background: var(--ds-background-100);--background-secondary: var(--ds-background-200);--component-bg: var(--ds-gray-100);--component-bg-hover: var(--ds-gray-200);--component-bg-active: var(--ds-gray-300);--border: var(--ds-gray-400);--border-hover: var(--ds-gray-500);--border-active: var(--ds-gray-600);--text-primary: var(--ds-gray-1000);--text-secondary: var(--ds-gray-900);--text-tertiary: var(--ds-gray-800);--font-sans: "Geist", -apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "Geist Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 15px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--text-4xl: 40px;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--tracking-tighter: -.04em;--tracking-tight: -.02em;--tracking-normal: 0;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--max-width: 1100px;--header-height: 64px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);background:var(--background);color:var(--text-primary);min-height:100vh}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.header{height:var(--header-height);background:var(--background);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-content{max-width:var(--max-width);height:100%;margin:0 auto;padding:0 var(--space-6);display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit}.logo-icon{width:24px;height:24px;flex-shrink:0}.logo-text{font-size:var(--text-md);font-weight:500;letter-spacing:var(--tracking-tight);color:var(--text-primary)}.nav{display:flex;align-items:center;gap:var(--space-1)}.nav-link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:400;color:var(--text-secondary);text-decoration:none;background:transparent;border:none;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast)}.nav-link:hover{color:var(--text-primary);background:var(--component-bg)}.nav-link.active{color:var(--text-primary)}.main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-8) var(--space-6)}.page-header{margin-bottom:var(--space-8)}.page-title{font-size:var(--text-2xl);font-weight:600;letter-spacing:var(--tracking-tighter);color:var(--text-primary);line-height:var(--leading-tight);margin-bottom:var(--space-2)}.page-description{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.card{background:var(--component-bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--ds-gray-alpha-200)}.card-title{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);line-height:var(--leading-tight)}.card-description{font-size:var(--text-sm);color:var(--text-tertiary);margin-top:var(--space-1);line-height:var(--leading-normal)}.card-content{padding:var(--space-5)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-2);height:26px;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.02em}.status-badge.online{background:var(--ds-green-100);color:var(--ds-green-900)}.status-badge.offline{background:var(--ds-red-100);color:var(--ds-red-900)}.status-badge.degraded{background:var(--ds-amber-100);color:var(--ds-amber-900)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-16) var(--space-6)}@media(max-width:768px){.empty-state{padding:var(--space-8) var(--space-4)}}@media(max-width:480px){.empty-state{padding:var(--space-6) var(--space-3)}}.empty-state-icon{width:48px;height:48px;margin:0 auto var(--space-5);background:var(--component-bg);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center}.empty-state-icon svg{width:24px;height:24px;color:var(--text-tertiary)}.empty-state-title{font-size:var(--text-lg);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state-description{font-size:var(--text-sm);color:var(--text-secondary);max-width:320px;margin:0 auto var(--space-6);line-height:var(--leading-relaxed)}.list{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.list-item{display:flex;align-items:center;padding:var(--space-4) var(--space-5);background:var(--component-bg);border-bottom:1px solid var(--ds-gray-alpha-200);transition:background var(--transition-fast)}.list-item:last-child{border-bottom:none}.list-item:hover{background:var(--component-bg-hover)}.code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--component-bg);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-secondary)}.divider{height:1px;background:var(--border);margin:var(--space-6) 0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:768px){:root{--header-height: 56px}.header-content{padding:0 var(--space-4)}.main{padding:var(--space-6) var(--space-4)}.page-title{font-size:var(--text-xl)}.hide-mobile{display:none}}@media(max-width:480px){:root{--header-height: 48px}.main{padding:var(--space-4) var(--space-3)}.header-content{padding:0 var(--space-3)}.logo{gap:var(--space-2)}.logo-text{font-size:var(--text-sm)}.nav{gap:0}.nav-link{padding:var(--space-3) var(--space-2);font-size:13px;min-height:44px;display:inline-flex;align-items:center}.btn{min-height:44px;height:auto;padding:10px 16px}.btn-sm,.input{min-height:44px;height:auto;padding:10px 12px}}.btn:focus-visible,.input:focus-visible,.nav-link:focus-visible{outline:2px solid var(--ds-blue-700);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}::selection{background:var(--ds-blue-700);color:#fff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ds-gray-400);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--ds-gray-500)}.session-card{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);cursor:pointer;transition:border-color var(--transition-fast, .15s),background var(--transition-fast, .15s);display:flex;flex-direction:column;overflow:hidden;min-width:0;gap:var(--space-3, .75rem)}.session-card:hover{border-color:var(--gray-600, #525252);background:var(--bg-tertiary, #1a1a1a)}.session-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3, .75rem);min-width:0;overflow:hidden}.session-card-header>div:first-child{min-width:0;overflow:hidden}.session-card-title{font-size:1rem;font-weight:600;color:var(--text-primary, #fafafa);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-card-subtitle{font-size:.8rem;color:var(--text-tertiary, #737373);font-family:var(--font-mono, monospace);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.session-stats{display:flex;gap:var(--space-4, 1rem);font-size:.8rem;color:var(--text-secondary, #a3a3a3)}.session-stats strong{color:var(--text-primary, #fafafa);font-weight:600}.session-tools{display:flex;flex-wrap:wrap;gap:6px}.session-tool-pill{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);border:1px solid}.session-tool-pill[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.session-tool-pill[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.session-tool-pill[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.session-tool-pill[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.session-tool-pill[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.session-tool-pill[data-tool=Build]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.session-tool-pill[data-tool=Test]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.session-tool-pill-default{background:#6b728026;color:#9ca3af;border-color:#6b72804d}.session-tool-more{padding:3px 8px;border-radius:4px;font-size:.7rem;color:var(--text-tertiary, #737373);background:#ffffff0d}.session-duration{font-size:.75rem;color:var(--text-tertiary, #737373)}.session-chevron{color:var(--text-tertiary, #737373);font-size:1.2rem;align-self:center}.session-detail-header{display:flex;align-items:center;gap:var(--space-3, .75rem);margin-bottom:var(--space-4, 1rem)}.session-back-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md, 8px);background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-secondary, #a3a3a3);cursor:pointer;transition:all var(--transition-fast, .15s);text-decoration:none;font-size:1.1rem}.session-back-btn:hover{background:var(--bg-tertiary, #1a1a1a);color:var(--text-primary, #fafafa);border-color:var(--gray-600, #525252)}.session-info-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border, #2a2a2a);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);overflow:hidden;margin-bottom:var(--space-5, 1.25rem)}.session-info-item{background:var(--bg-secondary, #141414);padding:var(--space-3, .75rem) var(--space-4, 1rem)}.session-info-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary, #737373);margin-bottom:4px}.session-info-value{font-size:.9rem;font-weight:500;color:var(--text-primary, #fafafa)}.session-events-list{display:flex;flex-direction:column;gap:0}.session-event{display:grid;grid-template-columns:60px auto 1fr;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) 0;border-bottom:1px solid var(--border, #2a2a2a);align-items:start}.session-event:last-child{border-bottom:none}.session-event-time{font-family:var(--font-mono, monospace);font-size:.8rem;color:var(--text-tertiary, #737373);padding-top:2px}.session-event-tool{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);text-align:center;min-width:50px;border:1px solid}.session-event-content{min-width:0}.session-event-title{font-size:.9rem;color:var(--text-primary, #fafafa);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-event-message{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-footer{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-4, 1rem);margin-top:var(--space-3, .75rem);border-top:1px solid var(--border, #2a2a2a);font-size:.8rem;color:var(--text-secondary, #a3a3a3)}@media(max-width:768px){.session-card{padding:var(--space-3, .75rem)}.session-card-header{flex-direction:column;gap:var(--space-2, .5rem)}.session-badge{align-self:flex-start}.session-stats{flex-wrap:wrap;gap:var(--space-2, .5rem)}.session-info-bar{grid-template-columns:1fr 1fr}.session-event{grid-template-columns:50px auto 1fr;gap:var(--space-2, .5rem)}.session-event-title{white-space:normal}.session-footer{flex-direction:column;gap:var(--space-2, .5rem);align-items:flex-start}}@media(max-width:480px){.session-info-bar{grid-template-columns:1fr}.session-event{grid-template-columns:1fr;gap:var(--space-1, .25rem)}.session-event-time{font-size:.7rem}.session-card{padding:10px 12px;gap:var(--space-2)}.session-card-subtitle{font-size:.7rem}.session-stats{gap:var(--space-1);font-size:.75rem}}.chat-container{display:flex;flex-direction:column;gap:var(--space-4, 1rem);padding:var(--space-4, 1rem) 0;overflow-y:auto;flex:1;min-height:0}.chat-message{display:flex;gap:var(--space-3, .75rem);max-width:85%;animation:fadeInUp .2s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-message-user{align-self:flex-end;flex-direction:row-reverse}.chat-message-assistant{align-self:flex-start}.chat-message-system{align-self:center;max-width:90%}.chat-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;margin-top:4px}.chat-avatar-user{background:#3b82f633;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.chat-avatar-assistant{background:#f9731633;color:#fb923c;border:1px solid rgba(249,115,22,.3)}.chat-bubble{border-radius:var(--radius-lg, 12px);padding:var(--space-3, .75rem) var(--space-4, 1rem);line-height:1.5;font-size:.9rem;word-break:break-word;overflow-wrap:break-word;min-width:0;overflow:hidden}.chat-bubble-user{background:#1e293b;border:1px solid #334155;color:var(--text-primary, #fafafa);border-bottom-right-radius:4px}.chat-bubble-assistant{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-primary, #fafafa);border-bottom-left-radius:4px}.chat-bubble p{margin:0 0 .5rem}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble code{background:#ffffff14;padding:2px 6px;border-radius:4px;font-family:var(--font-mono, monospace);font-size:.85em}.chat-bubble pre{background:#0000004d;border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);padding:var(--space-3, .75rem);overflow-x:auto;margin:.5rem 0;font-size:.8rem}@media(max-width:768px){.chat-bubble pre{max-width:calc(100vw - 120px)}}.chat-bubble pre code{background:none;padding:0}.chat-bubble h1,.chat-bubble h2,.chat-bubble h3,.chat-bubble h4{margin:.75rem 0 .25rem;font-weight:600;line-height:1.3;color:var(--text-primary, #fafafa)}.chat-bubble h1{font-size:1.15em}.chat-bubble h2{font-size:1.05em}.chat-bubble h3{font-size:.95em}.chat-bubble h4{font-size:.9em}.chat-bubble h1:first-child,.chat-bubble h2:first-child,.chat-bubble h3:first-child{margin-top:0}.chat-bubble ul,.chat-bubble ol{margin:.4rem 0;padding-left:1.4rem}.chat-bubble li{margin-bottom:.2rem;line-height:1.5}.chat-bubble li>ul,.chat-bubble li>ol{margin:.1rem 0}.chat-bubble blockquote{border-left:3px solid var(--gray-600, #525252);margin:.5rem 0;padding:.25rem .75rem;color:var(--text-secondary, #a3a3a3);font-style:italic}.chat-bubble table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.85em}.chat-bubble th,.chat-bubble td{border:1px solid var(--border, #2a2a2a);padding:.35rem .6rem;text-align:left}.chat-bubble th{background:#ffffff0a;font-weight:600}.chat-bubble hr{border:none;border-top:1px solid var(--border, #2a2a2a);margin:.75rem 0}.chat-bubble a{color:#60a5fa;text-decoration:none}.chat-bubble a:hover{text-decoration:underline}.chat-bubble strong{font-weight:600;color:var(--text-primary, #fafafa)}.chat-bubble em{font-style:italic}.chat-bubble img{max-width:100%;border-radius:var(--radius-md, 8px)}.chat-timestamp{font-size:.7rem;color:var(--text-tertiary, #737373);margin-top:4px;padding:0 4px}.chat-message-user .chat-timestamp{text-align:right}.chat-tool-card{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);overflow:hidden;margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-tool-header{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast, .15s)}.chat-tool-header:hover{background:#ffffff08}.chat-tool-chevron{font-size:.7rem;color:var(--text-tertiary, #737373);transition:transform .2s ease}.chat-tool-chevron.expanded{transform:rotate(90deg)}.chat-tool-name{font-family:var(--font-mono, monospace);font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:4px;border:1px solid}.chat-tool-name[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.chat-tool-name[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.chat-tool-name[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.chat-tool-name[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.chat-tool-name[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.chat-tool-name[data-tool=Grep]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.chat-tool-name[data-tool=Glob]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.chat-tool-name[data-tool=Skill]{background:#a855f726;color:#a855f7;border-color:#a855f74d}.chat-tool-description{font-size:.8rem;color:var(--text-secondary, #a3a3a3);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-tool-body{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;color:var(--text-secondary, #a3a3a3);max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result-success{color:#10b981;background:#10b9810d}.chat-tool-result-error{color:#ef4444;background:#ef44440d}.chat-thinking{background:#a855f70d;border:1px dashed rgba(168,85,247,.2);border-radius:var(--radius-md, 8px);padding:var(--space-2, .5rem) var(--space-3, .75rem);margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-thinking-header{display:flex;align-items:center;gap:var(--space-2, .5rem);cursor:pointer;font-size:.75rem;color:#a855f7;font-weight:500}.chat-thinking-body{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:var(--space-2, .5rem);line-height:1.5;max-height:200px;overflow-y:auto}.back-link{display:inline-flex;align-items:center;gap:var(--space-2, .5rem);font-size:.85rem;color:var(--text-secondary, #a3a3a3);text-decoration:none;margin-bottom:var(--space-3, .75rem);transition:color var(--transition-fast, .15s);min-height:44px;padding:8px 4px}.back-link:hover{color:var(--text-primary, #fafafa)}.chat-session-header{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);margin-bottom:var(--space-4, 1rem)}.chat-session-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #fafafa);margin-bottom:var(--space-1, .25rem)}.chat-session-meta{display:flex;flex-wrap:wrap;gap:var(--space-3, .75rem);font-size:.8rem;color:var(--text-tertiary, #737373)}.chat-session-meta-item{display:flex;align-items:center;gap:4px}@media(max-width:768px){.chat-container{overflow-x:hidden}.chat-message{max-width:95%;min-width:0}.chat-tool-card,.chat-thinking{max-width:95%}.chat-avatar{width:24px;height:24px;font-size:.65rem}.chat-bubble{padding:var(--space-2, .5rem) var(--space-3, .75rem);font-size:.85rem;overflow-wrap:break-word;word-break:break-word;min-width:0}.chat-bubble pre{overflow-x:auto;max-width:100%}.chat-bubble table{display:block;overflow-x:auto;max-width:100%}.chat-tool-description{max-width:200px}.chat-tool-body{max-width:100%;overflow-x:auto}.chat-session-meta{flex-direction:column;gap:var(--space-1, .25rem)}}@media(max-width:480px){.chat-message{max-width:100%}.chat-message-user,.chat-message-assistant{align-self:stretch}.chat-tool-card,.chat-thinking{max-width:100%}.chat-tool-description{max-width:150px}}.skeleton{background:linear-gradient(90deg,var(--bg-secondary, #1a1a2e) 25%,var(--bg-tertiary, #252540) 50%,var(--bg-secondary, #1a1a2e) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--radius-sm, 4px)}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.loading-container{display:flex;flex-direction:column;gap:var(--space-3, .75rem);padding:var(--space-4, 1rem) 0}.terminal-topbar{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-4, 1rem);background:#111827;border-bottom:1px solid #1e293b;min-height:48px;flex-shrink:0}.terminal-topbar .btn{flex-shrink:0}.terminal-body{flex:1;background:#0a0a0f;overflow:hidden;position:relative;min-height:0}.terminal-input{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.terminal-input input{flex:1;height:40px;padding:0 var(--space-3, .75rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-md, 6px);color:var(--text-primary, #ededed);font-family:var(--font-mono);font-size:var(--text-sm, 13px);outline:none;transition:border-color var(--transition-fast, .15s)}.terminal-input input:focus{border-color:#334155}.terminal-input input::placeholder{color:var(--text-tertiary, #7d7d7d)}.term-toggle{display:inline-flex;align-items:center;background:#1e293b;border-radius:var(--radius-full, 9999px);padding:2px;flex-shrink:0}.term-toggle button{height:28px;padding:0 var(--space-3, .75rem);border:none;border-radius:var(--radius-full, 9999px);background:transparent;color:var(--text-tertiary, #7d7d7d);font-family:var(--font-sans);font-size:var(--text-xs, 12px);font-weight:500;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.term-toggle button.active{background:#334155;color:var(--text-primary, #ededed)}.term-toggle button:hover:not(.active){color:var(--text-secondary, #a1a1a1)}.badge-ai{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#a78bfa26;color:#a78bfa;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-shell{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live:before{content:"";width:6px;height:6px;border-radius:50%;background:#22c55e;animation:pulse-dot 2s ease-in-out infinite}.badge-ended{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#6b728026;color:#9ca3af;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.connection-status.connected .connection-status-dot{background:#22c55e}.connection-status.reconnecting .connection-status-dot{background:#f59e0b;animation:pulse-dot 1s ease-in-out infinite}.connection-status.disconnected .connection-status-dot{background:#ef4444}.connection-status.connected{color:#22c55e}.connection-status.reconnecting{color:#f59e0b}.connection-status.disconnected{color:#ef4444}.chat-input-bar{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);padding-bottom:calc(var(--space-3, .75rem) + env(safe-area-inset-bottom,0px));background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.chat-input-bar input{flex:1;height:44px;padding:0 var(--space-4, 1rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-lg, 8px);color:var(--text-primary, #ededed);font-family:var(--font-sans);font-size:var(--text-base, 14px);outline:none;transition:border-color var(--transition-fast, .15s)}.chat-input-bar input:focus{border-color:#334155}.chat-input-bar input::placeholder{color:var(--text-tertiary, #7d7d7d)}.chat-input-bar button{height:44px;min-width:44px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-lg, 8px);color:#0a0a0f;font-family:var(--font-sans);font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;flex-shrink:0;transition:background var(--transition-fast, .15s),opacity var(--transition-fast, .15s)}.chat-input-bar button:hover{background:#16a34a}.chat-input-bar button:disabled{opacity:.4;cursor:not-allowed}.chat-permission-inline{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius-lg, 8px);margin:var(--space-2, .5rem) 0}.chat-permission-inline .permission-label{flex:1;font-size:var(--text-sm, 13px);color:#f59e0b;font-weight:500}.chat-permission-inline .btn-allow{height:34px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-md, 6px);color:#0a0a0f;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s)}.chat-permission-inline .btn-allow:hover{background:#16a34a}.chat-permission-inline .btn-deny{height:34px;padding:0 var(--space-4, 1rem);background:transparent;border:1px solid #ef4444;border-radius:var(--radius-md, 6px);color:#ef4444;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.chat-permission-inline .btn-deny:hover{background:#ef444426}@media(max-width:768px){.terminal-topbar{padding:var(--space-2, .5rem) var(--space-3, .75rem);gap:var(--space-2, .5rem);min-height:44px}.terminal-input input,.chat-input-bar input{min-width:0}.chat-permission-inline{flex-wrap:wrap}.chat-permission-inline .permission-label{width:100%;margin-bottom:var(--space-1, .25rem)}}:root{--button-font-family: var(--font-sans);--button-font-size: var(--text-sm);--button-font-weight: 500;--button-color: var(--ds-blue-700);--button-text-color: #fff;--button-padding: 8px 16px;--button-border-radius: var(--radius-md);--button-border: 1px solid transparent;--button-hover-color: var(--ds-blue-900);--button-hover-text-color: #fff;--button-content-gap: 8px;--input-background: var(--ds-gray-100);--input-font-family: var(--font-sans);--input-font-size: var(--text-base);--input-font-weight: 400;--input-radius: var(--radius-md);--input-padding: 10px 12px;--input-height: 40px;--input-width: 100%;--input-margin: 0;--input-box-shadow: none;--input-border: 1px solid var(--border);--input-focus-border: 1px solid var(--ds-blue-700);--input-text-color: var(--text-primary);--input-placeholder-color: var(--text-tertiary);--input-label-msg-text-color: var(--text-secondary);--input-label-msg-text-size: var(--text-sm);--input-label-msg-text-weight: 400;--input-label-msg-margin: 0 0 var(--space-2) 0;--input-error-msg-text-color: var(--ds-red-700);--input-error-msg-text-size: var(--text-xs);--input-info-msg-text-color: var(--text-tertiary);--input-info-msg-text-size: var(--text-xs);--input-info-msg-margin: var(--space-2) 0 0 0;--input-container-margin: 0 0 var(--space-5) 0;--banner-background: var(--ds-gray-100);--banner-color: var(--text-secondary);--banner-font-family: var(--font-sans);--banner-font-size: var(--text-sm);--banner-font-weight: 500;--banner-padding: 12px 16px;--banner-gap: 10px;--banner-justify-content: flex-start;--banner-icon-size: 16px;--banner-link-color: var(--ds-blue-900);--banner-cursor: default;--banner-position: relative;--banner-z-index: auto;--banner-dismiss-hover-background: var(--ds-gray-alpha-200);--banner-dismiss-color: var(--text-tertiary);--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-family: var(--font-sans);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 4px 10px;--pill-border-radius: var(--radius-full);--pill-border: none;--pill-hover-background: var(--ds-gray-400);--pill-hover-color: var(--text-primary);--badge-background: var(--ds-gray-500);--badge-color: #fff;--badge-font-family: var(--font-sans);--badge-font-size: var(--text-xs);--badge-padding: 2px 6px;--badge-border-radius: var(--radius-full);--badge-border: none;--badge-wrap-margin: 0;--badge-wrap-padding: 0;--badge-img-width: 24px;--badge-img-height: 24px;--badge-img-border-radius: var(--radius-sm);--badge-img-icon-shadow: none;--badge-min-width: 6px;--badge-min-height: 6px;--tabs-bar-background: transparent;--tabs-bar-padding: 0;--tabs-bar-gap: 0;--tabs-bar-border-bottom: 1px solid var(--border);--tabs-item-padding: 10px 16px;--tabs-item-font-size: var(--text-sm);--tabs-item-font-weight: 500;--tabs-item-font-family: var(--font-sans);--tabs-item-color: var(--text-tertiary);--tabs-item-background: transparent;--tabs-active-color: var(--text-primary);--tabs-active-font-weight: 600;--tabs-indicator-color: var(--ds-blue-700);--tabs-indicator-height: 2px;--tabs-hover-color: var(--text-secondary);--tabs-hover-background: var(--ds-gray-alpha-100);--tabs-transition: color .15s ease, background .15s ease;--sheet-overlay-background: rgba(0, 0, 0, .6);--sheet-background: var(--ds-gray-100);--sheet-box-shadow: -4px 0 16px rgba(0, 0, 0, .3);--sheet-border: none;--sheet-header-padding: 16px 20px;--sheet-header-background: var(--ds-gray-100);--sheet-header-border-bottom: 1px solid var(--border);--sheet-title-font-size: var(--text-lg);--sheet-title-font-weight: 600;--sheet-title-font-family: var(--font-sans);--sheet-title-color: var(--text-primary);--sheet-close-button-color: var(--text-tertiary);--sheet-close-button-hover-background: var(--ds-gray-300);--sheet-content-padding: 20px;--sheet-footer-padding: 16px 20px;--sheet-footer-background: var(--ds-gray-100);--sheet-footer-border-top: 1px solid var(--border);--select-bgcolor: var(--ds-gray-100);--select-font-family: var(--font-sans);--select-font-size: var(--text-base);--select-radius: var(--radius-md);--select-box-shadow: none;--select-border: 1px solid var(--border);--select-color: var(--text-primary);--select-hover-color: var(--text-primary);--select-hover-bgcolor: var(--ds-gray-200);--item-padding: 10px 12px;--item-background-color: var(--ds-gray-100);--non-selected-hover-bg: var(--ds-gray-200);--non-selected-hover-color: var(--text-primary);--non-selected-item-bgcolor: var(--ds-gray-100);--non-selected-item-color: var(--text-secondary);--non-selected-items-border-radius: var(--radius-md);--selected-item-background-color: var(--ds-gray-200);--selected-item-padding: 10px 12px;--selected-color: var(--text-primary);--selected-hover-bg: var(--ds-gray-200);--label-text-color: var(--text-secondary);--label-text-size: var(--text-xs);--label-text-weight: 500;--shimmer-background: var(--ds-gray-200);--shimmer-highlight: rgba(255, 255, 255, .04);--shimmer-border-radius: var(--radius-md);--shimmer-duration: 1.5s;--avatar-background: var(--ds-gray-300);--avatar-text-color: var(--text-secondary);--avatar-font-family: var(--font-sans);--avatar-border: none;--avatar-small-width: 28px;--avatar-small-height: 28px;--avatar-medium-width: 36px;--avatar-medium-height: 36px;--avatar-large-width: 48px;--avatar-large-height: 48px;--avatar-small-font-size: 11px;--avatar-medium-font-size: 13px;--avatar-large-font-size: 18px;--choicebox-background: var(--ds-gray-100);--choicebox-border: 2px solid var(--border);--choicebox-border-radius: var(--radius-lg);--choicebox-padding: 16px;--choicebox-gap: 12px;--choicebox-hover-border-color: var(--border-hover);--choicebox-hover-background: var(--ds-gray-200);--choicebox-selected-border-color: var(--ds-blue-700);--choicebox-selected-background: var(--ds-blue-100);--choicebox-title-color: var(--text-primary);--choicebox-title-font-size: var(--text-base);--choicebox-title-font-weight: 500;--choicebox-title-font-family: var(--font-sans);--choicebox-description-color: var(--text-tertiary);--choicebox-description-font-size: var(--text-sm);--choicebox-indicator-border: 2px solid var(--ds-gray-500);--choicebox-indicator-selected-color: var(--ds-blue-700);--choicebox-focus-ring: 0 0 0 3px rgba(0, 112, 243, .2);--toast-font-family: var(--font-sans);--toast-font-size: var(--text-sm);--toast-border-radius: var(--radius-lg);--toast-padding: 12px 16px;--toast-background-color: var(--ds-gray-200);--toast-z-index: 1000;--toast-success-background-color: var(--ds-green-100);--toast-success-text: var(--ds-green-900);--toast-error-background-color: var(--ds-red-100);--toast-error-text: var(--ds-red-900);--toast-info-background-color: var(--ds-blue-100);--toast-info-text: var(--ds-blue-900);--toast-warn-background-color: var(--ds-amber-100);--toast-warn-text: var(--ds-amber-900);--background-color: rgba(0, 0, 0, .6);--modal-content-background-color: var(--ds-gray-100);--modal-border-radius: var(--radius-xl);--modal-scrollbar-width: none;--modal-header-background-color: var(--ds-gray-100);--modal-header-padding: 16px 20px;--modal-header-border-bottom: 1px solid var(--border);--modal-footer-background-color: var(--ds-gray-100);--modal-footer-padding: 16px 20px;--modal-footer-border-top: 1px solid var(--border)}.btn-primary{--button-color: var(--ds-gray-1000);--button-text-color: var(--ds-background-100);--button-border: 1px solid var(--ds-gray-1000);--button-hover-color: #fff;--button-hover-text-color: var(--ds-background-100);--button-hover-border: 1px solid #fff}.btn-secondary{--button-color: var(--ds-background-100);--button-text-color: var(--ds-gray-1000);--button-border: 1px solid var(--ds-gray-400);--button-hover-color: var(--ds-gray-100);--button-hover-text-color: var(--ds-gray-1000);--button-hover-border: 1px solid var(--ds-gray-400)}.btn-ghost{--button-color: transparent;--button-text-color: var(--ds-gray-1000);--button-hover-color: var(--ds-gray-alpha-100);--button-hover-text-color: var(--ds-gray-1000)}.btn-danger{--button-color: #d93036;--button-text-color: #fff;--button-hover-color: #ff6166;--button-hover-text-color: #fff}.btn-warning{--button-color: #ff990a;--button-text-color: var(--ds-background-100);--button-hover-color: #ffb224;--button-hover-text-color: var(--ds-background-100)}.btn-sm{--button-height: 32px;--button-padding: 0 10px;--button-font-size: var(--text-base)}.btn-lg{--button-height: 48px;--button-padding: 0 20px;--button-font-size: var(--text-lg);--button-border-radius: var(--radius-lg)}.banner-alert{border-radius:var(--radius-md)}.banner-success{--banner-background: var(--ds-green-100);--banner-color: var(--ds-green-900);--banner-icon-color: var(--ds-green-900);border-radius:var(--radius-md)}.banner-error{--banner-background: var(--ds-red-100);--banner-color: var(--ds-red-900);--banner-icon-color: var(--ds-red-900);border-radius:var(--radius-md)}.banner-warning{--banner-background: var(--ds-amber-100);--banner-color: var(--ds-amber-900);--banner-icon-color: var(--ds-amber-900);border-radius:var(--radius-md)}.banner-info{--banner-background: var(--ds-blue-100);--banner-color: var(--ds-blue-900);--banner-icon-color: var(--ds-blue-900);border-radius:var(--radius-md)}.input-mono{--input-font-family: var(--font-mono);--input-font-size: var(--text-sm)}.avatar-user{--avatar-background: var(--ds-blue-100);--avatar-text-color: var(--ds-blue-900)}.avatar-assistant{--avatar-background: var(--ds-green-100);--avatar-text-color: var(--ds-green-900)}.btn-remove{--button-height: 24px;--button-width: 24px;--button-padding: 0;--button-font-size: 16px;--button-border-radius: var(--radius-sm)}.pill-session-time{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 4px 10px;--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: inherit}.pill-tool-name{--pill-background: var(--ds-gray-300);--pill-color: var(--text-primary);--pill-font-size: var(--text-xs);--pill-font-family: var(--font-mono);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit}.pill-tool-success{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-tool-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-live{--pill-background: rgba(34, 197, 94, .15);--pill-color: #22c55e;--pill-border: 1px solid rgba(34, 197, 94, .3);--pill-font-size: .7rem;--pill-padding: 2px 10px;--pill-hover-background: rgba(34, 197, 94, .15);--pill-hover-color: #22c55e;--pill-cursor: default;font-weight:700;letter-spacing:.05em}.pill-badge-ai{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-blue-100);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-shell{--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-ended{--pill-background: var(--ds-gray-alpha-200);--pill-color: var(--text-tertiary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-alpha-200);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-exit-ok{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-exit-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-source-claude{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-blue-100);--pill-hover-color: var(--ds-blue-900);--pill-cursor: inherit}.pill-source-opencode{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-900);--pill-cursor: inherit}.shimmer-header{--shimmer-height: 80px;--shimmer-border-radius: var(--radius-lg);margin-bottom:1rem}.shimmer-card{--shimmer-height: 120px;--shimmer-border-radius: var(--radius-lg)}.shimmer-bubble{--shimmer-height: 60px;--shimmer-border-radius: var(--radius-lg);margin-bottom:var(--space-3)}.shimmer-bubble-user{--shimmer-width: 60%;margin-left:auto}.shimmer-bubble-assistant{--shimmer-width: 75%}.shimmer-bubble-user-short{--shimmer-width: 50%;margin-left:auto}.shimmer-bubble-assistant-wide{--shimmer-width: 80%}.shimmer-bubble-assistant-short{--shimmer-width: 40%}@media(max-width:768px){.shimmer-card{--shimmer-height: 90px}}.nav-right.svelte-12qhfyh{display:flex;align-items:center;gap:var(--space-2)}.btn-gear.svelte-12qhfyh{background:transparent;color:var(--text-muted);border:none;padding:0;height:36px;width:36px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center}.btn-gear.svelte-12qhfyh:hover{background:var(--component-bg);color:var(--text-primary)}.btn-gear.svelte-12qhfyh:focus-visible{outline:2px solid var(--ds-green-700);outline-offset:2px}.btn-gear-active.svelte-12qhfyh{background:var(--component-bg);color:var(--text-primary)}.content-area.svelte-12qhfyh{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom,0px)}.bottom-tabs.svelte-12qhfyh{height:64px;background:var(--background);border-top:1px solid var(--border);flex-shrink:0;z-index:100;padding-bottom:env(safe-area-inset-bottom,0)}.bottom-tabs-inner.svelte-12qhfyh{max-width:600px;margin:0 auto;padding:6px var(--space-4) 4px;display:flex;align-items:center;justify-content:space-around;height:100%;box-sizing:border-box}.tab-item.svelte-12qhfyh{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--text-muted);font-size:11px;font-weight:500;text-decoration:none;padding:6px 36px;border-radius:var(--radius-md);transition:color var(--transition-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-height:48px}.tab-item.svelte-12qhfyh:hover{color:var(--text-secondary)}.tab-item.active.svelte-12qhfyh{color:var(--ds-green-700)}.tab-item.svelte-12qhfyh svg{width:26px;height:26px;flex-shrink:0}@media(max-width:480px){.btn-gear.svelte-12qhfyh{height:44px;width:44px}.bottom-tabs.svelte-12qhfyh{height:60px}.tab-item.svelte-12qhfyh{padding:6px 28px;font-size:10px;gap:3px;min-height:44px}.tab-item.svelte-12qhfyh svg{width:24px;height:24px}.status-badge{font-size:10px;padding:0 8px;height:22px}.page-header{flex-direction:column!important;gap:var(--space-3)!important}.page-header .btn-group{width:100%}.page-header .btn-group .btn{flex:1;justify-content:center}}
|
|
1
|
+
:root{--ds-background-100: #0a0a0a;--ds-background-200: #000000;--ds-gray-100: #1a1a1a;--ds-gray-200: #1f1f1f;--ds-gray-300: #292929;--ds-gray-400: #2e2e2e;--ds-gray-500: #454545;--ds-gray-600: #878787;--ds-gray-700: #8f8f8f;--ds-gray-800: #7d7d7d;--ds-gray-900: #a1a1a1;--ds-gray-1000: #ededed;--ds-gray-alpha-100: rgba(255, 255, 255, .06);--ds-gray-alpha-200: rgba(255, 255, 255, .09);--ds-gray-alpha-300: rgba(255, 255, 255, .13);--ds-gray-alpha-400: rgba(255, 255, 255, .14);--ds-blue-100: #0d1d33;--ds-blue-700: #0070f3;--ds-blue-900: #52a8ff;--ds-red-100: #2a1314;--ds-red-700: #e5484d;--ds-red-900: #ff6166;--ds-green-100: #0d1f12;--ds-green-700: #46a758;--ds-green-900: #62c073;--ds-amber-100: #271700;--ds-amber-700: #f5a623;--ds-amber-900: #ffb224;--background: var(--ds-background-100);--background-secondary: var(--ds-background-200);--component-bg: var(--ds-gray-100);--component-bg-hover: var(--ds-gray-200);--component-bg-active: var(--ds-gray-300);--border: var(--ds-gray-400);--border-hover: var(--ds-gray-500);--border-active: var(--ds-gray-600);--text-primary: var(--ds-gray-1000);--text-secondary: var(--ds-gray-900);--text-tertiary: var(--ds-gray-800);--font-sans: "Geist", -apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "Geist Mono", "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 15px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--text-4xl: 40px;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--tracking-tighter: -.04em;--tracking-tight: -.02em;--tracking-normal: 0;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--max-width: 1100px;--header-height: 64px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);background:var(--background);color:var(--text-primary);min-height:100vh}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.header{height:var(--header-height);background:var(--background);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-content{max-width:var(--max-width);height:100%;margin:0 auto;padding:0 var(--space-6);display:flex;justify-content:space-between;align-items:center}.logo{display:flex;align-items:center;gap:var(--space-3);text-decoration:none;color:inherit}.logo-icon{width:24px;height:24px;flex-shrink:0}.logo-text{font-size:var(--text-md);font-weight:500;letter-spacing:var(--tracking-tight);color:var(--text-primary)}.nav{display:flex;align-items:center;gap:var(--space-1)}.nav-link{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:400;color:var(--text-secondary);text-decoration:none;background:transparent;border:none;cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast)}.nav-link:hover{color:var(--text-primary);background:var(--component-bg)}.nav-link.active{color:var(--text-primary)}.main{flex:1;max-width:var(--max-width);width:100%;margin:0 auto;padding:var(--space-8) var(--space-6)}.page-header{margin-bottom:var(--space-8)}.page-title{font-size:var(--text-2xl);font-weight:600;letter-spacing:var(--tracking-tighter);color:var(--text-primary);line-height:var(--leading-tight);margin-bottom:var(--space-2)}.page-description{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-normal)}.card{background:var(--component-bg);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.card-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--ds-gray-alpha-200)}.card-title{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);line-height:var(--leading-tight)}.card-description{font-size:var(--text-sm);color:var(--text-tertiary);margin-top:var(--space-1);line-height:var(--leading-normal)}.card-content{padding:var(--space-5)}.status-badge{display:inline-flex;align-items:center;gap:var(--space-2);height:26px;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.02em}.status-badge.online{background:var(--ds-green-100);color:var(--ds-green-900)}.status-badge.offline{background:var(--ds-red-100);color:var(--ds-red-900)}.status-badge.degraded{background:var(--ds-amber-100);color:var(--ds-amber-900)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-16) var(--space-6)}@media(max-width:768px){.empty-state{padding:var(--space-8) var(--space-4)}}@media(max-width:480px){.empty-state{padding:var(--space-6) var(--space-3)}}.empty-state-icon{width:48px;height:48px;margin:0 auto var(--space-5);background:var(--component-bg);border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center}.empty-state-icon svg{width:24px;height:24px;color:var(--text-tertiary)}.empty-state-title{font-size:var(--text-lg);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state-description{font-size:var(--text-sm);color:var(--text-secondary);max-width:320px;margin:0 auto var(--space-6);line-height:var(--leading-relaxed)}.list{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.list-item{display:flex;align-items:center;padding:var(--space-4) var(--space-5);background:var(--component-bg);border-bottom:1px solid var(--ds-gray-alpha-200);transition:background var(--transition-fast)}.list-item:last-child{border-bottom:none}.list-item:hover{background:var(--component-bg-hover)}.code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--component-bg);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-secondary)}.divider{height:1px;background:var(--border);margin:var(--space-6) 0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:768px){:root{--header-height: 56px}.header-content{padding:0 var(--space-4)}.main{padding:var(--space-6) var(--space-4)}.page-title{font-size:var(--text-xl)}.hide-mobile{display:none}}@media(max-width:480px){:root{--header-height: 48px}.main{padding:var(--space-4) var(--space-3)}.header-content{padding:0 var(--space-3)}.logo{gap:var(--space-2)}.logo-text{font-size:var(--text-sm)}.nav{gap:0}.nav-link{padding:var(--space-3) var(--space-2);font-size:13px;min-height:44px;display:inline-flex;align-items:center}.btn{min-height:44px;height:auto;padding:10px 16px}.btn-sm,.input{min-height:44px;height:auto;padding:10px 12px}}.btn:focus-visible,.input:focus-visible,.nav-link:focus-visible{outline:2px solid var(--ds-blue-700);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}::selection{background:var(--ds-blue-700);color:#fff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ds-gray-400);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--ds-gray-500)}.session-card{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);cursor:pointer;transition:border-color var(--transition-fast, .15s),background var(--transition-fast, .15s);display:flex;flex-direction:column;overflow:hidden;min-width:0;gap:var(--space-3, .75rem)}.session-card:hover{border-color:var(--gray-600, #525252);background:var(--bg-tertiary, #1a1a1a)}.session-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3, .75rem);min-width:0;overflow:hidden}.session-card-header>div:first-child{min-width:0;overflow:hidden}.session-card-title{font-size:1rem;font-weight:600;color:var(--text-primary, #fafafa);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-card-subtitle{font-size:.8rem;color:var(--text-tertiary, #737373);font-family:var(--font-mono, monospace);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.session-stats{display:flex;gap:var(--space-4, 1rem);font-size:.8rem;color:var(--text-secondary, #a3a3a3)}.session-stats strong{color:var(--text-primary, #fafafa);font-weight:600}.session-tools{display:flex;flex-wrap:wrap;gap:6px}.session-tool-pill{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);border:1px solid}.session-tool-pill[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.session-tool-pill[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.session-tool-pill[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.session-tool-pill[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.session-tool-pill[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.session-tool-pill[data-tool=Build]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.session-tool-pill[data-tool=Test]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.session-tool-pill-default{background:#6b728026;color:#9ca3af;border-color:#6b72804d}.session-tool-more{padding:3px 8px;border-radius:4px;font-size:.7rem;color:var(--text-tertiary, #737373);background:#ffffff0d}.session-duration{font-size:.75rem;color:var(--text-tertiary, #737373)}.session-chevron{color:var(--text-tertiary, #737373);font-size:1.2rem;align-self:center}.session-detail-header{display:flex;align-items:center;gap:var(--space-3, .75rem);margin-bottom:var(--space-4, 1rem)}.session-back-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md, 8px);background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-secondary, #a3a3a3);cursor:pointer;transition:all var(--transition-fast, .15s);text-decoration:none;font-size:1.1rem}.session-back-btn:hover{background:var(--bg-tertiary, #1a1a1a);color:var(--text-primary, #fafafa);border-color:var(--gray-600, #525252)}.session-info-bar{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border, #2a2a2a);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);overflow:hidden;margin-bottom:var(--space-5, 1.25rem)}.session-info-item{background:var(--bg-secondary, #141414);padding:var(--space-3, .75rem) var(--space-4, 1rem)}.session-info-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary, #737373);margin-bottom:4px}.session-info-value{font-size:.9rem;font-weight:500;color:var(--text-primary, #fafafa)}.session-events-list{display:flex;flex-direction:column;gap:0}.session-event{display:grid;grid-template-columns:60px auto 1fr;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) 0;border-bottom:1px solid var(--border, #2a2a2a);align-items:start}.session-event:last-child{border-bottom:none}.session-event-time{font-family:var(--font-mono, monospace);font-size:.8rem;color:var(--text-tertiary, #737373);padding-top:2px}.session-event-tool{padding:3px 8px;border-radius:4px;font-size:.7rem;font-weight:600;font-family:var(--font-mono, monospace);text-align:center;min-width:50px;border:1px solid}.session-event-content{min-width:0}.session-event-title{font-size:.9rem;color:var(--text-primary, #fafafa);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-event-message{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-footer{display:flex;justify-content:space-between;align-items:center;padding-top:var(--space-4, 1rem);margin-top:var(--space-3, .75rem);border-top:1px solid var(--border, #2a2a2a);font-size:.8rem;color:var(--text-secondary, #a3a3a3)}@media(max-width:768px){.session-card{padding:var(--space-3, .75rem)}.session-card-header{flex-direction:column;gap:var(--space-2, .5rem)}.session-badge{align-self:flex-start}.session-stats{flex-wrap:wrap;gap:var(--space-2, .5rem)}.session-info-bar{grid-template-columns:1fr 1fr}.session-event{grid-template-columns:50px auto 1fr;gap:var(--space-2, .5rem)}.session-event-title{white-space:normal}.session-footer{flex-direction:column;gap:var(--space-2, .5rem);align-items:flex-start}}@media(max-width:480px){.session-info-bar{grid-template-columns:1fr}.session-event{grid-template-columns:1fr;gap:var(--space-1, .25rem)}.session-event-time{font-size:.7rem}.session-card{padding:10px 12px;gap:var(--space-2)}.session-card-subtitle{font-size:.7rem}.session-stats{gap:var(--space-1);font-size:.75rem}}.chat-container{display:flex;flex-direction:column;gap:var(--space-4, 1rem);padding:var(--space-4, 1rem) 0;overflow-y:auto;flex:1;min-height:0}.chat-message{display:flex;gap:var(--space-3, .75rem);max-width:85%;animation:fadeInUp .2s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-message-user{align-self:flex-end;flex-direction:row-reverse}.chat-message-assistant{align-self:flex-start}.chat-message-system{align-self:center;max-width:90%}.chat-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;flex-shrink:0;margin-top:4px}.chat-avatar-user{background:#3b82f633;color:#60a5fa;border:1px solid rgba(59,130,246,.3)}.chat-avatar-assistant{background:#f9731633;color:#fb923c;border:1px solid rgba(249,115,22,.3)}.chat-bubble{border-radius:var(--radius-lg, 12px);padding:var(--space-3, .75rem) var(--space-4, 1rem);line-height:1.5;font-size:.9rem;word-break:break-word;overflow-wrap:break-word;min-width:0;overflow:hidden}.chat-bubble-user{background:#1e293b;border:1px solid #334155;color:var(--text-primary, #fafafa);border-bottom-right-radius:4px}.chat-bubble-assistant{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);color:var(--text-primary, #fafafa);border-bottom-left-radius:4px}.chat-bubble p{margin:0 0 .5rem}.chat-bubble p:last-child{margin-bottom:0}.chat-bubble code{background:#ffffff14;padding:2px 6px;border-radius:4px;font-family:var(--font-mono, monospace);font-size:.85em}.chat-bubble pre{background:#0000004d;border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);padding:var(--space-3, .75rem);overflow-x:auto;margin:.5rem 0;font-size:.8rem}@media(max-width:768px){.chat-bubble pre{max-width:calc(100vw - 120px)}}.chat-bubble pre code{background:none;padding:0}.chat-bubble h1,.chat-bubble h2,.chat-bubble h3,.chat-bubble h4{margin:.75rem 0 .25rem;font-weight:600;line-height:1.3;color:var(--text-primary, #fafafa)}.chat-bubble h1{font-size:1.15em}.chat-bubble h2{font-size:1.05em}.chat-bubble h3{font-size:.95em}.chat-bubble h4{font-size:.9em}.chat-bubble h1:first-child,.chat-bubble h2:first-child,.chat-bubble h3:first-child{margin-top:0}.chat-bubble ul,.chat-bubble ol{margin:.4rem 0;padding-left:1.4rem}.chat-bubble li{margin-bottom:.2rem;line-height:1.5}.chat-bubble li>ul,.chat-bubble li>ol{margin:.1rem 0}.chat-bubble blockquote{border-left:3px solid var(--gray-600, #525252);margin:.5rem 0;padding:.25rem .75rem;color:var(--text-secondary, #a3a3a3);font-style:italic}.chat-bubble table{border-collapse:collapse;width:100%;margin:.5rem 0;font-size:.85em}.chat-bubble th,.chat-bubble td{border:1px solid var(--border, #2a2a2a);padding:.35rem .6rem;text-align:left}.chat-bubble th{background:#ffffff0a;font-weight:600}.chat-bubble hr{border:none;border-top:1px solid var(--border, #2a2a2a);margin:.75rem 0}.chat-bubble a{color:#60a5fa;text-decoration:none}.chat-bubble a:hover{text-decoration:underline}.chat-bubble strong{font-weight:600;color:var(--text-primary, #fafafa)}.chat-bubble em{font-style:italic}.chat-bubble img{max-width:100%;border-radius:var(--radius-md, 8px)}.chat-timestamp{font-size:.7rem;color:var(--text-tertiary, #737373);margin-top:4px;padding:0 4px}.chat-message-user .chat-timestamp{text-align:right}.chat-tool-card{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);overflow:hidden;margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-tool-header{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast, .15s)}.chat-tool-header:hover{background:#ffffff08}.chat-tool-chevron{font-size:.7rem;color:var(--text-tertiary, #737373);transition:transform .2s ease}.chat-tool-chevron.expanded{transform:rotate(90deg)}.chat-tool-name{font-family:var(--font-mono, monospace);font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:4px;border:1px solid}.chat-tool-name[data-tool=Bash]{background:#f59e0b26;color:#f59e0b;border-color:#f59e0b4d}.chat-tool-name[data-tool=Edit]{background:#3b82f626;color:#3b82f6;border-color:#3b82f64d}.chat-tool-name[data-tool=Write]{background:#8b5cf626;color:#8b5cf6;border-color:#8b5cf64d}.chat-tool-name[data-tool=Read]{background:#10b98126;color:#10b981;border-color:#10b9814d}.chat-tool-name[data-tool=Agent]{background:#ef444426;color:#ef4444;border-color:#ef44444d}.chat-tool-name[data-tool=Grep]{background:#06b6d426;color:#06b6d4;border-color:#06b6d44d}.chat-tool-name[data-tool=Glob]{background:#ec489926;color:#ec4899;border-color:#ec48994d}.chat-tool-name[data-tool=Skill]{background:#a855f726;color:#a855f7;border-color:#a855f74d}.chat-tool-description{font-size:.8rem;color:var(--text-secondary, #a3a3a3);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-tool-body{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;color:var(--text-secondary, #a3a3a3);max-height:300px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-3, .75rem);font-family:var(--font-mono, monospace);font-size:.75rem;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.chat-tool-result-success{color:#10b981;background:#10b9810d}.chat-tool-result-error{color:#ef4444;background:#ef44440d}.chat-thinking{background:#a855f70d;border:1px dashed rgba(168,85,247,.2);border-radius:var(--radius-md, 8px);padding:var(--space-2, .5rem) var(--space-3, .75rem);margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-thinking-header{display:flex;align-items:center;gap:var(--space-2, .5rem);cursor:pointer;font-size:.75rem;color:#a855f7;font-weight:500}.chat-thinking-body{font-size:.8rem;color:var(--text-tertiary, #737373);margin-top:var(--space-2, .5rem);line-height:1.5;max-height:200px;overflow-y:auto}.back-link{display:inline-flex;align-items:center;gap:var(--space-2, .5rem);font-size:.85rem;color:var(--text-secondary, #a3a3a3);text-decoration:none;margin-bottom:var(--space-3, .75rem);transition:color var(--transition-fast, .15s);min-height:44px;padding:8px 4px}.back-link:hover{color:var(--text-primary, #fafafa)}.chat-session-header{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-lg, 12px);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);margin-bottom:var(--space-4, 1rem)}.chat-session-title{font-size:1.1rem;font-weight:600;color:var(--text-primary, #fafafa);margin-bottom:var(--space-1, .25rem)}.chat-session-meta{display:flex;flex-wrap:wrap;gap:var(--space-3, .75rem);font-size:.8rem;color:var(--text-tertiary, #737373)}.chat-session-meta-item{display:flex;align-items:center;gap:4px}@media(max-width:768px){.chat-container{overflow-x:hidden}.chat-message{max-width:95%;min-width:0}.chat-tool-card,.chat-thinking{max-width:95%}.chat-avatar{width:24px;height:24px;font-size:.65rem}.chat-bubble{padding:var(--space-2, .5rem) var(--space-3, .75rem);font-size:.85rem;overflow-wrap:break-word;word-break:break-word;min-width:0}.chat-bubble pre{overflow-x:auto;max-width:100%}.chat-bubble table{display:block;overflow-x:auto;max-width:100%}.chat-tool-description{max-width:200px}.chat-tool-body{max-width:100%;overflow-x:auto}.chat-session-meta{flex-direction:column;gap:var(--space-1, .25rem)}}@media(max-width:480px){.chat-message{max-width:100%}.chat-message-user,.chat-message-assistant{align-self:stretch}.chat-tool-card,.chat-thinking{max-width:100%}.chat-tool-description{max-width:150px}}.skeleton{background:linear-gradient(90deg,var(--bg-secondary, #1a1a2e) 25%,var(--bg-tertiary, #252540) 50%,var(--bg-secondary, #1a1a2e) 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--radius-sm, 4px)}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.loading-container{display:flex;flex-direction:column;gap:var(--space-3, .75rem);padding:var(--space-4, 1rem) 0}.terminal-topbar{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-4, 1rem);background:#111827;border-bottom:1px solid #1e293b;min-height:48px;flex-shrink:0}.terminal-topbar .btn{flex-shrink:0}.terminal-body{flex:1;background:#0a0a0f;overflow:hidden;position:relative;min-height:0}.terminal-input{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.terminal-input input{flex:1;height:40px;padding:0 var(--space-3, .75rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-md, 6px);color:var(--text-primary, #ededed);font-family:var(--font-mono);font-size:var(--text-sm, 13px);outline:none;transition:border-color var(--transition-fast, .15s)}.terminal-input input:focus{border-color:#334155}.terminal-input input::placeholder{color:var(--text-tertiary, #7d7d7d)}.term-toggle{display:inline-flex;align-items:center;background:#1e293b;border-radius:var(--radius-full, 9999px);padding:2px;flex-shrink:0}.term-toggle button{height:28px;padding:0 var(--space-3, .75rem);border:none;border-radius:var(--radius-full, 9999px);background:transparent;color:var(--text-tertiary, #7d7d7d);font-family:var(--font-sans);font-size:var(--text-xs, 12px);font-weight:500;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.term-toggle button.active{background:#334155;color:var(--text-primary, #ededed)}.term-toggle button:hover:not(.active){color:var(--text-secondary, #a1a1a1)}.badge-ai{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#a78bfa26;color:#a78bfa;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-shell{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#22c55e26;color:#22c55e;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.badge-live:before{content:"";width:6px;height:6px;border-radius:50%;background:#22c55e;animation:pulse-dot 2s ease-in-out infinite}.badge-ended{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full, 9999px);background:#6b728026;color:#9ca3af;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs, 12px);font-weight:500;white-space:nowrap}.connection-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.connection-status.connected .connection-status-dot{background:#22c55e}.connection-status.reconnecting .connection-status-dot{background:#f59e0b;animation:pulse-dot 1s ease-in-out infinite}.connection-status.disconnected .connection-status-dot{background:#ef4444}.connection-status.connected{color:#22c55e}.connection-status.reconnecting{color:#f59e0b}.connection-status.disconnected{color:#ef4444}.chat-input-bar{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);padding-bottom:calc(var(--space-3, .75rem) + env(safe-area-inset-bottom,0px));background:#111827;border-top:1px solid #1e293b;flex-shrink:0}.chat-input-bar input{flex:1;height:44px;padding:0 var(--space-4, 1rem);background:#0a0a0f;border:1px solid #1e293b;border-radius:var(--radius-lg, 8px);color:var(--text-primary, #ededed);font-family:var(--font-sans);font-size:var(--text-base, 14px);outline:none;transition:border-color var(--transition-fast, .15s)}.chat-input-bar input:focus{border-color:#334155}.chat-input-bar input::placeholder{color:var(--text-tertiary, #7d7d7d)}.chat-input-bar button{height:44px;min-width:44px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-lg, 8px);color:#0a0a0f;font-family:var(--font-sans);font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;flex-shrink:0;transition:background var(--transition-fast, .15s),opacity var(--transition-fast, .15s)}.chat-input-bar button:hover{background:#16a34a}.chat-input-bar button:disabled{opacity:.4;cursor:not-allowed}.chat-permission-inline{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:#f59e0b14;border:1px solid rgba(245,158,11,.2);border-radius:var(--radius-lg, 8px);margin:var(--space-2, .5rem) 0}.chat-permission-inline .permission-label{flex:1;font-size:var(--text-sm, 13px);color:#f59e0b;font-weight:500}.chat-permission-inline .btn-allow{height:34px;padding:0 var(--space-4, 1rem);background:#22c55e;border:none;border-radius:var(--radius-md, 6px);color:#0a0a0f;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s)}.chat-permission-inline .btn-allow:hover{background:#16a34a}.chat-permission-inline .btn-deny{height:34px;padding:0 var(--space-4, 1rem);background:transparent;border:1px solid #ef4444;border-radius:var(--radius-md, 6px);color:#ef4444;font-size:var(--text-sm, 13px);font-weight:600;cursor:pointer;transition:background var(--transition-fast, .15s),color var(--transition-fast, .15s)}.chat-permission-inline .btn-deny:hover{background:#ef444426}@media(max-width:768px){.terminal-topbar{padding:var(--space-2, .5rem) var(--space-3, .75rem);gap:var(--space-2, .5rem);min-height:44px}.terminal-input input,.chat-input-bar input{min-width:0}.chat-permission-inline{flex-wrap:wrap}.chat-permission-inline .permission-label{width:100%;margin-bottom:var(--space-1, .25rem)}}:root{--button-font-family: var(--font-sans);--button-font-size: var(--text-sm);--button-font-weight: 500;--button-color: var(--ds-blue-700);--button-text-color: #fff;--button-padding: 8px 16px;--button-border-radius: var(--radius-md);--button-border: 1px solid transparent;--button-hover-color: var(--ds-blue-900);--button-hover-text-color: #fff;--button-content-gap: 8px;--input-background: var(--ds-gray-100);--input-font-family: var(--font-sans);--input-font-size: var(--text-base);--input-font-weight: 400;--input-radius: var(--radius-md);--input-padding: 10px 12px;--input-height: 40px;--input-width: 100%;--input-margin: 0;--input-box-shadow: none;--input-border: 1px solid var(--border);--input-focus-border: 1px solid var(--ds-blue-700);--input-text-color: var(--text-primary);--input-placeholder-color: var(--text-tertiary);--input-label-msg-text-color: var(--text-secondary);--input-label-msg-text-size: var(--text-sm);--input-label-msg-text-weight: 400;--input-label-msg-margin: 0 0 var(--space-2) 0;--input-error-msg-text-color: var(--ds-red-700);--input-error-msg-text-size: var(--text-xs);--input-info-msg-text-color: var(--text-tertiary);--input-info-msg-text-size: var(--text-xs);--input-info-msg-margin: var(--space-2) 0 0 0;--input-container-margin: 0 0 var(--space-5) 0;--banner-background: var(--ds-gray-100);--banner-color: var(--text-secondary);--banner-font-family: var(--font-sans);--banner-font-size: var(--text-sm);--banner-font-weight: 500;--banner-padding: 12px 16px;--banner-gap: 10px;--banner-justify-content: flex-start;--banner-icon-size: 16px;--banner-link-color: var(--ds-blue-900);--banner-cursor: default;--banner-position: relative;--banner-z-index: auto;--banner-dismiss-hover-background: var(--ds-gray-alpha-200);--banner-dismiss-color: var(--text-tertiary);--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-family: var(--font-sans);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 4px 10px;--pill-border-radius: var(--radius-full);--pill-border: none;--pill-hover-background: var(--ds-gray-400);--pill-hover-color: var(--text-primary);--badge-background: var(--ds-gray-500);--badge-color: #fff;--badge-font-family: var(--font-sans);--badge-font-size: var(--text-xs);--badge-padding: 2px 6px;--badge-border-radius: var(--radius-full);--badge-border: none;--badge-wrap-margin: 0;--badge-wrap-padding: 0;--badge-img-width: 24px;--badge-img-height: 24px;--badge-img-border-radius: var(--radius-sm);--badge-img-icon-shadow: none;--badge-min-width: 6px;--badge-min-height: 6px;--tabs-bar-background: transparent;--tabs-bar-padding: 0;--tabs-bar-gap: 0;--tabs-bar-border-bottom: 1px solid var(--border);--tabs-item-padding: 10px 16px;--tabs-item-font-size: var(--text-sm);--tabs-item-font-weight: 500;--tabs-item-font-family: var(--font-sans);--tabs-item-color: var(--text-tertiary);--tabs-item-background: transparent;--tabs-active-color: var(--text-primary);--tabs-active-font-weight: 600;--tabs-indicator-color: var(--ds-blue-700);--tabs-indicator-height: 2px;--tabs-hover-color: var(--text-secondary);--tabs-hover-background: var(--ds-gray-alpha-100);--tabs-transition: color .15s ease, background .15s ease;--sheet-overlay-background: rgba(0, 0, 0, .6);--sheet-background: var(--ds-gray-100);--sheet-box-shadow: -4px 0 16px rgba(0, 0, 0, .3);--sheet-border: none;--sheet-header-padding: 16px 20px;--sheet-header-background: var(--ds-gray-100);--sheet-header-border-bottom: 1px solid var(--border);--sheet-title-font-size: var(--text-lg);--sheet-title-font-weight: 600;--sheet-title-font-family: var(--font-sans);--sheet-title-color: var(--text-primary);--sheet-close-button-color: var(--text-tertiary);--sheet-close-button-hover-background: var(--ds-gray-300);--sheet-content-padding: 20px;--sheet-footer-padding: 16px 20px;--sheet-footer-background: var(--ds-gray-100);--sheet-footer-border-top: 1px solid var(--border);--select-bgcolor: var(--ds-gray-100);--select-font-family: var(--font-sans);--select-font-size: var(--text-base);--select-radius: var(--radius-md);--select-box-shadow: none;--select-border: 1px solid var(--border);--select-color: var(--text-primary);--select-hover-color: var(--text-primary);--select-hover-bgcolor: var(--ds-gray-200);--item-padding: 10px 12px;--item-background-color: var(--ds-gray-100);--non-selected-hover-bg: var(--ds-gray-200);--non-selected-hover-color: var(--text-primary);--non-selected-item-bgcolor: var(--ds-gray-100);--non-selected-item-color: var(--text-secondary);--non-selected-items-border-radius: var(--radius-md);--selected-item-background-color: var(--ds-gray-200);--selected-item-padding: 10px 12px;--selected-color: var(--text-primary);--selected-hover-bg: var(--ds-gray-200);--label-text-color: var(--text-secondary);--label-text-size: var(--text-xs);--label-text-weight: 500;--shimmer-background: var(--ds-gray-200);--shimmer-highlight: rgba(255, 255, 255, .04);--shimmer-border-radius: var(--radius-md);--shimmer-duration: 1.5s;--avatar-background: var(--ds-gray-300);--avatar-text-color: var(--text-secondary);--avatar-font-family: var(--font-sans);--avatar-border: none;--avatar-small-width: 28px;--avatar-small-height: 28px;--avatar-medium-width: 36px;--avatar-medium-height: 36px;--avatar-large-width: 48px;--avatar-large-height: 48px;--avatar-small-font-size: 11px;--avatar-medium-font-size: 13px;--avatar-large-font-size: 18px;--choicebox-background: var(--ds-gray-100);--choicebox-border: 2px solid var(--border);--choicebox-border-radius: var(--radius-lg);--choicebox-padding: 16px;--choicebox-gap: 12px;--choicebox-hover-border-color: var(--border-hover);--choicebox-hover-background: var(--ds-gray-200);--choicebox-selected-border-color: var(--ds-blue-700);--choicebox-selected-background: var(--ds-blue-100);--choicebox-title-color: var(--text-primary);--choicebox-title-font-size: var(--text-base);--choicebox-title-font-weight: 500;--choicebox-title-font-family: var(--font-sans);--choicebox-description-color: var(--text-tertiary);--choicebox-description-font-size: var(--text-sm);--choicebox-indicator-border: 2px solid var(--ds-gray-500);--choicebox-indicator-selected-color: var(--ds-blue-700);--choicebox-focus-ring: 0 0 0 3px rgba(0, 112, 243, .2);--toast-font-family: var(--font-sans);--toast-font-size: var(--text-sm);--toast-border-radius: var(--radius-lg);--toast-padding: 12px 16px;--toast-background-color: var(--ds-gray-200);--toast-z-index: 1000;--toast-success-background-color: var(--ds-green-100);--toast-success-text: var(--ds-green-900);--toast-error-background-color: var(--ds-red-100);--toast-error-text: var(--ds-red-900);--toast-info-background-color: var(--ds-blue-100);--toast-info-text: var(--ds-blue-900);--toast-warn-background-color: var(--ds-amber-100);--toast-warn-text: var(--ds-amber-900);--background-color: rgba(0, 0, 0, .6);--modal-content-background-color: var(--ds-gray-100);--modal-border-radius: var(--radius-xl);--modal-scrollbar-width: none;--modal-header-background-color: var(--ds-gray-100);--modal-header-padding: 16px 20px;--modal-header-border-bottom: 1px solid var(--border);--modal-footer-background-color: var(--ds-gray-100);--modal-footer-padding: 16px 20px;--modal-footer-border-top: 1px solid var(--border)}.btn-primary{--button-color: var(--ds-gray-1000);--button-text-color: var(--ds-background-100);--button-border: 1px solid var(--ds-gray-1000);--button-hover-color: #fff;--button-hover-text-color: var(--ds-background-100);--button-hover-border: 1px solid #fff}.btn-secondary{--button-color: var(--ds-background-100);--button-text-color: var(--ds-gray-1000);--button-border: 1px solid var(--ds-gray-400);--button-hover-color: var(--ds-gray-100);--button-hover-text-color: var(--ds-gray-1000);--button-hover-border: 1px solid var(--ds-gray-400)}.btn-ghost{--button-color: transparent;--button-text-color: var(--ds-gray-1000);--button-hover-color: var(--ds-gray-alpha-100);--button-hover-text-color: var(--ds-gray-1000)}.btn-danger{--button-color: #d93036;--button-text-color: #fff;--button-hover-color: #ff6166;--button-hover-text-color: #fff}.btn-warning{--button-color: #ff990a;--button-text-color: var(--ds-background-100);--button-hover-color: #ffb224;--button-hover-text-color: var(--ds-background-100)}.btn-connect{--button-color: #0d9488;--button-text-color: #fff;--button-hover-color: #14b8a6;--button-hover-text-color: #fff;--button-border: 1px solid #0d9488;--button-hover-border: 1px solid #14b8a6}.btn-resume{--button-color: transparent;--button-text-color: var(--ds-gray-900);--button-border: 1px solid var(--ds-gray-400);--button-hover-color: var(--ds-gray-100);--button-hover-text-color: var(--ds-gray-1000);--button-hover-border: 1px solid var(--ds-gray-600)}.btn-sm{--button-height: 32px;--button-padding: 0 10px;--button-font-size: var(--text-base)}.btn-xs{--button-height: 28px;--button-padding: 0 8px;--button-font-size: var(--text-xs);--button-border-radius: var(--radius-sm)}.btn-lg{--button-height: 48px;--button-padding: 0 20px;--button-font-size: var(--text-lg);--button-border-radius: var(--radius-lg)}.banner-alert{border-radius:var(--radius-md)}.banner-success{--banner-background: var(--ds-green-100);--banner-color: var(--ds-green-900);--banner-icon-color: var(--ds-green-900);border-radius:var(--radius-md)}.banner-error{--banner-background: var(--ds-red-100);--banner-color: var(--ds-red-900);--banner-icon-color: var(--ds-red-900);border-radius:var(--radius-md)}.banner-warning{--banner-background: var(--ds-amber-100);--banner-color: var(--ds-amber-900);--banner-icon-color: var(--ds-amber-900);border-radius:var(--radius-md)}.banner-info{--banner-background: var(--ds-blue-100);--banner-color: var(--ds-blue-900);--banner-icon-color: var(--ds-blue-900);border-radius:var(--radius-md)}.input-mono{--input-font-family: var(--font-mono);--input-font-size: var(--text-sm)}.avatar-user{--avatar-background: var(--ds-blue-100);--avatar-text-color: var(--ds-blue-900)}.avatar-assistant{--avatar-background: var(--ds-green-100);--avatar-text-color: var(--ds-green-900)}.btn-remove{--button-height: 24px;--button-width: 24px;--button-padding: 0;--button-font-size: 16px;--button-border-radius: var(--radius-sm)}.pill-session-time{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 4px 10px;--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: inherit}.pill-tool-name{--pill-background: var(--ds-gray-300);--pill-color: var(--text-primary);--pill-font-size: var(--text-xs);--pill-font-family: var(--font-mono);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit}.pill-tool-success{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-tool-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: var(--text-xs);--pill-padding: 2px 8px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-live{--pill-background: rgba(34, 197, 94, .15);--pill-color: #22c55e;--pill-border: 1px solid rgba(34, 197, 94, .3);--pill-font-size: .7rem;--pill-padding: 2px 10px;--pill-hover-background: rgba(34, 197, 94, .15);--pill-hover-color: #22c55e;--pill-cursor: default;font-weight:700;letter-spacing:.05em}.pill-badge-ai{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-blue-100);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-shell{--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-300);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-badge-ended{--pill-background: var(--ds-gray-alpha-200);--pill-color: var(--text-tertiary);--pill-font-size: 9px;--pill-padding: 2px 6px;--pill-hover-background: var(--ds-gray-alpha-200);--pill-cursor: inherit;font-weight:700;letter-spacing:.05em}.pill-exit-ok{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-green-100);--pill-cursor: inherit}.pill-exit-error{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: 10px;--pill-font-family: var(--font-mono);--pill-padding: 2px 6px;--pill-hover-background: var(--ds-red-100);--pill-cursor: inherit}.pill-source-claude{--pill-background: var(--ds-blue-100);--pill-color: var(--ds-blue-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-blue-100);--pill-hover-color: var(--ds-blue-900);--pill-cursor: inherit}.pill-source-opencode{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-900);--pill-cursor: inherit}.shimmer-header{--shimmer-height: 80px;--shimmer-border-radius: var(--radius-lg);margin-bottom:1rem}.shimmer-card{--shimmer-height: 120px;--shimmer-border-radius: var(--radius-lg)}.shimmer-bubble{--shimmer-height: 60px;--shimmer-border-radius: var(--radius-lg);margin-bottom:var(--space-3)}.shimmer-bubble-user{--shimmer-width: 60%;margin-left:auto}.shimmer-bubble-assistant{--shimmer-width: 75%}.shimmer-bubble-user-short{--shimmer-width: 50%;margin-left:auto}.shimmer-bubble-assistant-wide{--shimmer-width: 80%}.shimmer-bubble-assistant-short{--shimmer-width: 40%}@media(max-width:768px){.shimmer-card{--shimmer-height: 90px}.btn-xs{min-height:36px;padding:6px 12px}}.nav-right.svelte-12qhfyh{display:flex;align-items:center;gap:var(--space-2)}.btn-gear.svelte-12qhfyh{background:transparent;color:var(--text-muted);border:none;padding:0;height:36px;width:36px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center}.btn-gear.svelte-12qhfyh:hover{background:var(--component-bg);color:var(--text-primary)}.btn-gear.svelte-12qhfyh:focus-visible{outline:2px solid var(--ds-green-700);outline-offset:2px}.btn-gear-active.svelte-12qhfyh{background:var(--component-bg);color:var(--text-primary)}.content-area.svelte-12qhfyh{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-bottom:env(safe-area-inset-bottom,0px)}.bottom-tabs.svelte-12qhfyh{height:64px;background:var(--background);border-top:1px solid var(--border);flex-shrink:0;z-index:100;padding-bottom:env(safe-area-inset-bottom,0)}.bottom-tabs-inner.svelte-12qhfyh{max-width:600px;margin:0 auto;padding:6px var(--space-4) 4px;display:flex;align-items:center;justify-content:space-around;height:100%;box-sizing:border-box}.tab-item.svelte-12qhfyh{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--text-muted);font-size:11px;font-weight:500;text-decoration:none;padding:6px 36px;border-radius:var(--radius-md);transition:color var(--transition-fast);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-height:48px}.tab-item.svelte-12qhfyh:hover{color:var(--text-secondary)}.tab-item.active.svelte-12qhfyh{color:var(--ds-green-700)}.tab-item.svelte-12qhfyh svg{width:26px;height:26px;flex-shrink:0}@media(max-width:480px){.btn-gear.svelte-12qhfyh{height:44px;width:44px}.bottom-tabs.svelte-12qhfyh{height:60px}.tab-item.svelte-12qhfyh{padding:6px 28px;font-size:10px;gap:3px;min-height:44px}.tab-item.svelte-12qhfyh svg{width:24px;height:24px}.status-badge{font-size:10px;padding:0 8px;height:22px}.page-header{flex-direction:column!important;gap:var(--space-3)!important}.page-header .btn-group{width:100%}.page-header .btn-group .btn{flex:1;justify-content:center}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.error-page.svelte-1j96wlh{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:var(--space-6)}.error-content.svelte-1j96wlh{text-align:center;max-width:400px}.error-code.svelte-1j96wlh{font-size:4rem;font-weight:700;color:var(--color-text-tertiary, #555);line-height:1;margin-bottom:var(--space-2)}.error-title.svelte-1j96wlh{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-3)}.error-message.svelte-1j96wlh{color:var(--color-text-secondary, #888);font-size:.875rem;line-height:1.5;margin-bottom:var(--space-5)}.error-actions.svelte-1j96wlh{display:flex;gap:var(--space-3);justify-content:center}.error-btn.svelte-1j96wlh{padding:10px 20px;border-radius:8px;font-size:.875rem;font-weight:500;cursor:pointer;border:none;background:var(--color-accent, #0d9488);color:#fff;min-height:44px}.error-btn-secondary.svelte-1j96wlh{background:transparent;border:1px solid var(--border, #333);color:var(--color-text-secondary, #888)}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.settings-container.svelte-1gp6n77{max-width:900px;margin:0 auto;padding-bottom:var(--space-6)}.page-header.svelte-1gp6n77{margin-bottom:var(--space-8)}.page-title.svelte-1gp6n77{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:var(--space-1)}.page-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary)}.settings-grid.svelte-1gp6n77{display:grid;grid-template-columns:1fr 320px;gap:var(--space-6);align-items:start}.settings-section.svelte-1gp6n77,.settings-sidebar.svelte-1gp6n77{display:flex;flex-direction:column;gap:var(--space-4)}.button-group.svelte-1gp6n77{display:flex;gap:var(--space-3);justify-content:flex-end}.setup-stepper{--container-flex-direction: column;--step-flex-direction: row;--step-index-container-height: 24px;--step-index-container-width: 24px;--step-index-font-size: var(--text-xs);--step-text-font-size: var(--text-sm);--step-text-margin: 0 0 0 var(--space-3);--separator-display: none;--step-text-active-color: var(--text-primary);--step-text-completed-color: var(--ds-green-900);--step-index-container-active-background-color: var(--component-bg-active);--step-index-container-completed-background-color: var(--ds-green-700);--step-index-container-background-color: var(--component-bg-active);--step-index-color: var(--text-secondary);align-items:flex-start;gap:var(--space-3)}.qr-section.svelte-1gp6n77{display:flex;flex-direction:column;gap:var(--space-3)}.qr-section.svelte-1gp6n77 .button-container{align-self:center}.qr-container.svelte-1gp6n77{display:flex;justify-content:center;padding:var(--space-3);background:var(--ds-background-200);border:1px solid var(--border);border-radius:var(--radius-lg)}.qr-image.svelte-1gp6n77{width:200px;height:200px;border-radius:var(--radius-sm);image-rendering:pixelated}.qr-placeholder.svelte-1gp6n77{display:flex;align-items:center;justify-content:center;height:200px;background:var(--ds-background-200);border:1px dashed var(--border);border-radius:var(--radius-lg)}.qr-loading-text.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-tertiary)}.qr-hint.svelte-1gp6n77{font-size:var(--text-xs);color:var(--text-secondary);line-height:var(--leading-relaxed);text-align:center}.qr-server-url.svelte-1gp6n77{font-size:var(--text-xs);color:var(--text-tertiary);text-align:center}.qr-server-url.svelte-1gp6n77 code:where(.svelte-1gp6n77){font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);background:var(--component-bg);padding:1px 4px;border-radius:var(--radius-sm)}.qr-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed)}.qr-error.svelte-1gp6n77{font-size:var(--text-sm);color:var(--ds-red-900);line-height:var(--leading-relaxed)}.settings-sidebar.svelte-1gp6n77 .card:last-child{border-color:#d930364d}.danger-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-4);line-height:var(--leading-relaxed);padding-left:var(--space-3);border-left:3px solid rgba(217,48,54,.5)}@media(max-width:768px){.settings-grid.svelte-1gp6n77{grid-template-columns:1fr}.button-group.svelte-1gp6n77{flex-direction:column}.button-group.svelte-1gp6n77 button,.button-group.svelte-1gp6n77 .button-container{width:100%}}
|
|
1
|
+
.settings-container.svelte-1gp6n77{max-width:900px;margin:0 auto;padding-bottom:var(--space-6)}.page-header.svelte-1gp6n77{margin-bottom:var(--space-8)}.page-title.svelte-1gp6n77{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:var(--space-1)}.page-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary)}.settings-grid.svelte-1gp6n77{display:grid;grid-template-columns:1fr 320px;gap:var(--space-6);align-items:start}.settings-section.svelte-1gp6n77,.settings-sidebar.svelte-1gp6n77{display:flex;flex-direction:column;gap:var(--space-4)}.button-group.svelte-1gp6n77{display:flex;gap:var(--space-3);justify-content:flex-end}.setup-stepper{--container-flex-direction: column;--step-flex-direction: row;--step-index-container-height: 24px;--step-index-container-width: 24px;--step-index-font-size: var(--text-xs);--step-text-font-size: var(--text-sm);--step-text-margin: 0 0 0 var(--space-3);--separator-display: none;--step-text-active-color: var(--text-primary);--step-text-completed-color: var(--ds-green-900);--step-index-container-active-background-color: var(--component-bg-active);--step-index-container-completed-background-color: var(--ds-green-700);--step-index-container-background-color: var(--component-bg-active);--step-index-color: var(--text-secondary);align-items:flex-start;gap:var(--space-3)}.qr-section.svelte-1gp6n77{display:flex;flex-direction:column;gap:var(--space-3)}.qr-section.svelte-1gp6n77 .button-container{align-self:center}.qr-container.svelte-1gp6n77{display:flex;justify-content:center;padding:var(--space-3);background:var(--ds-background-200);border:1px solid var(--border);border-radius:var(--radius-lg)}.qr-image.svelte-1gp6n77{width:200px;height:200px;border-radius:var(--radius-sm);image-rendering:pixelated}.qr-placeholder.svelte-1gp6n77{display:flex;align-items:center;justify-content:center;height:200px;background:var(--ds-background-200);border:1px dashed var(--border);border-radius:var(--radius-lg)}.qr-loading-text.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-tertiary)}.qr-hint.svelte-1gp6n77{font-size:var(--text-xs);color:var(--text-secondary);line-height:var(--leading-relaxed);text-align:center}.qr-server-url.svelte-1gp6n77{font-size:var(--text-xs);color:var(--text-tertiary);text-align:center}.qr-server-url.svelte-1gp6n77 code:where(.svelte-1gp6n77){font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);background:var(--component-bg);padding:1px 4px;border-radius:var(--radius-sm)}.qr-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed)}.qr-error.svelte-1gp6n77{font-size:var(--text-sm);color:var(--ds-red-900);line-height:var(--leading-relaxed)}.settings-sidebar.svelte-1gp6n77 .card:last-child{border-color:#d930364d}.danger-description.svelte-1gp6n77{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-4);line-height:var(--leading-relaxed);padding-left:var(--space-3);border-left:3px solid rgba(217,48,54,.5)}.input-help.svelte-1gp6n77{font-size:var(--text-xs);color:var(--color-text-tertiary, #888);margin-top:var(--space-1);margin-bottom:0}.input-help.svelte-1gp6n77 code:where(.svelte-1gp6n77){background:var(--ds-gray-200, #1a1a1a);padding:1px 4px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs)}@media(max-width:768px){.settings-grid.svelte-1gp6n77{grid-template-columns:1fr}.button-group.svelte-1gp6n77{flex-direction:column}.button-group.svelte-1gp6n77 button,.button-group.svelte-1gp6n77 .button-container{width:100%}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.project-back-row.svelte-urn6fi{margin-bottom:var(--space-5)}.chat-session-header-top.svelte-urn6fi{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2)}.sessions-container.svelte-urn6fi{display:flex;flex-direction:column;gap:var(--space-3)}.session-card-actions.svelte-urn6fi{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.connect-dot.svelte-urn6fi{display:inline-block;width:6px;height:6px;border-radius:50%;background:#4ade80;margin-right:2px;flex-shrink:0}.session-meta-row.svelte-urn6fi{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.session-duration.svelte-urn6fi,.session-modified.svelte-urn6fi{font-size:.75rem;color:var(--color-text-tertiary, #888)}@media(max-width:480px){.chat-session-header-top.svelte-urn6fi{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.session-card-actions.svelte-urn6fi{flex-wrap:wrap}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.session-page-main.svelte-1a2wdfb{display:flex;flex-direction:column;overflow:hidden}.session-back-row.svelte-1a2wdfb{margin-bottom:var(--space-5)}.error-text.svelte-1a2wdfb{color:var(--text-secondary);padding:var(--space-4)}.session-header.svelte-1a2wdfb{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);flex-shrink:0}.session-header-row.svelte-1a2wdfb{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-1)}.session-title.svelte-1a2wdfb{font-size:var(--text-base);font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resume-status.svelte-1a2wdfb{font-size:.75rem;color:var(--text-tertiary, #888);animation:svelte-1a2wdfb-pulse 1.5s ease-in-out infinite}@keyframes svelte-1a2wdfb-pulse{0%,to{opacity:1}50%{opacity:.4}}.connection-dot.svelte-1a2wdfb{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.connection-dot.connected.svelte-1a2wdfb{background:#4ade80}.connection-dot.reconnecting.svelte-1a2wdfb{background:#f59e0b;animation:svelte-1a2wdfb-pulse 1s ease-in-out infinite}.session-chat-container.svelte-1a2wdfb{flex:1;min-height:0;display:flex;flex-direction:column}.load-earlier-row.svelte-1a2wdfb{display:flex;justify-content:center;padding:var(--space-2) var(--space-3);flex-shrink:0;border-bottom:1px solid var(--border)}.load-earlier-btn.svelte-1a2wdfb{font-size:.8rem;color:var(--text-secondary);background:none;border:1px solid var(--border);border-radius:var(--radius-sm, 4px);padding:4px 12px;cursor:pointer}.load-earlier-btn.svelte-1a2wdfb:disabled{opacity:.5;cursor:not-allowed}.load-earlier-btn.svelte-1a2wdfb:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-tertiary, #888)}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.command-palette{--command-menu-overlay-background: rgba(0, 0, 0, .5);--command-menu-background: var(--component-bg);--command-menu-border: 1px solid var(--border);--command-menu-border-radius: var(--radius-lg);--command-menu-width: 500px;--command-menu-max-width: 90vw;--command-menu-input-color: var(--text-primary);--command-menu-input-placeholder-color: var(--text-tertiary);--command-menu-input-font-family: var(--font-mono);--command-menu-separator-color: var(--border);--command-menu-item-color: var(--text-secondary);--command-menu-item-active-background: var(--component-bg-hover);--command-menu-item-active-color: var(--text-primary);--command-menu-empty-color: var(--text-tertiary);--command-menu-z-index: 1001}.connection-status.svelte-1cg9pai{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;line-height:1;flex-shrink:0}.connection-status.connected.svelte-1cg9pai{color:#22c55e}.connection-status.reconnecting.svelte-1cg9pai{color:var(--ds-amber-900)}.connection-status.disconnected.svelte-1cg9pai{color:var(--ds-red-900)}.status-dot.svelte-1cg9pai{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.connected.svelte-1cg9pai{background:#22c55e}.status-dot.reconnecting.svelte-1cg9pai{background:var(--ds-amber-700);animation:svelte-1cg9pai-pulse-dot 1.5s ease-in-out infinite}.status-dot.disconnected.svelte-1cg9pai{background:var(--ds-red-700)}@keyframes svelte-1cg9pai-pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.status-label.svelte-1cg9pai{white-space:nowrap}.btn-retry{--button-height: auto;--button-padding: 2px 8px;--button-font-size: 12px;--button-border: 1px solid currentColor;--button-text-color: inherit;margin-left:2px}@media(max-width:480px){.status-label.svelte-1cg9pai{display:none}}.quick-keys.svelte-64qat5{display:flex;overflow-x:auto;gap:6px;padding:var(--space-2) var(--space-3);scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-shrink:0}.quick-keys.svelte-64qat5::-webkit-scrollbar{display:none}.btn-quick-key{--button-color: #1e293b;--button-text-color: #94a3b8;--button-border: 1px solid var(--ds-gray-400);--button-hover-color: #334155;--button-hover-text-color: #e2e8f0;--button-hover-border: 1px solid var(--ds-gray-400);--button-height: 44px;--button-padding: 0 var(--space-3);--button-border-radius: var(--radius-md);--button-font-family: var(--font-mono);--button-font-size: var(--text-xs);min-width:52px;flex-shrink:0;white-space:nowrap;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.shortcuts-modal{--modal-content-background-color: var(--component-bg);--modal-border-radius: var(--radius-lg);--modal-header-background-color: var(--component-bg);--modal-header-padding: var(--space-4) var(--space-5);--modal-header-border-bottom: 1px solid var(--border);--header-text-size: var(--text-lg);--modal-header-text-weight: 600;--background-color: rgba(0, 0, 0, .5);--modal-z-index: 1000}.shortcuts-modal .modal-content{max-width:420px;width:90vw;min-width:320px}.shortcuts-list.svelte-1u7lstk{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4) var(--space-5)}.shortcut-row.svelte-1u7lstk{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0}.shortcut-desc.svelte-1u7lstk{font-size:var(--text-sm);color:var(--text-secondary)}.shortcut-kbd{--keyboard-input-key-color: var(--text-primary);--keyboard-input-key-background: var(--ds-gray-200);--keyboard-input-key-border: 1px solid var(--ds-gray-400);--keyboard-input-key-box-shadow: 0 1px 0 var(--ds-gray-400);--keyboard-input-font-family: var(--font-mono);--keyboard-input-font-size: var(--text-xs)}.term-page.svelte-1tubujq{display:flex;flex-direction:column;height:calc(100vh - var(--header-height) - 64px);height:calc(100dvh - var(--header-height) - 64px);overflow:hidden;background:var(--ds-background-200)}.term-topbar.svelte-1tubujq{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--ds-background-100);border-bottom:1px solid var(--border);flex-shrink:0;min-height:48px}.term-topbar-left.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-2);min-width:0;overflow:hidden}.term-topbar-right.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-3);flex-shrink:1}.term-back.svelte-1tubujq{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);text-decoration:none;font-size:18px;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.term-back.svelte-1tubujq:hover{background:var(--ds-gray-alpha-100);color:var(--text-primary)}.term-command-name.svelte-1tubujq{font-family:var(--font-mono);font-size:var(--text-base);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-tabs{--tabs-bar-border-bottom: none;--tabs-bar-background: var(--ds-gray-200);--tabs-bar-padding: 2px;--tabs-item-padding: 6px 12px;--tabs-item-font-size: var(--text-xs);--tabs-indicator-height: 0;--tabs-active-color: var(--text-primary);--tabs-item-color: var(--text-tertiary);border-radius:var(--radius-md);border:1px solid var(--ds-gray-400);overflow:hidden}.term-shortcuts-btn.svelte-1tubujq{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-tertiary);font-size:14px;font-weight:600;cursor:pointer;flex-shrink:0}.term-shortcuts-btn.svelte-1tubujq:hover{background:var(--component-bg-hover);color:var(--text-primary)}.term-cwd.svelte-1tubujq{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.activity-dot.svelte-1tubujq{width:8px;height:8px;border-radius:50%;flex-shrink:0}.activity-active.svelte-1tubujq{background:#4ade80;animation:svelte-1tubujq-activity-pulse .6s ease-in-out infinite}.activity-idle.svelte-1tubujq{background:var(--ds-gray-600)}@keyframes svelte-1tubujq-activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.term-body.svelte-1tubujq{flex:1;flex-direction:column;min-height:0;overflow:hidden;padding:var(--space-1);background:#0a0a0f}.term-body.svelte-1tubujq .xterm{height:100%}.term-body.svelte-1tubujq .xterm-viewport{overflow-y:auto!important}.term-body-loading.svelte-1tubujq{flex:1;padding:var(--space-4);min-height:200px}.term-chat-body.svelte-1tubujq{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.term-input-area.svelte-1tubujq{flex-shrink:0;background:var(--ds-background-100);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0px)}.term-input-bar.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.term-input-field{--input-container-margin: 0;--input-height: 44px;flex:1}.btn-send{--button-height: 44px;--button-width: 44px;--button-padding: 0;--button-font-size: 18px;flex-shrink:0}.term-exited-bar.svelte-1tubujq{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom,0px));background:var(--ds-gray-200);border-top:1px solid var(--border);font-size:var(--text-sm);color:var(--text-tertiary);flex-shrink:0}@media(max-width:768px){.term-topbar.svelte-1tubujq{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.term-command-name.svelte-1tubujq{font-size:var(--text-sm);max-width:100px}}@media(max-width:480px){.term-topbar.svelte-1tubujq{min-height:44px;padding:var(--space-1) var(--space-2)}.term-command-name.svelte-1tubujq{max-width:80px;text-overflow:ellipsis}.term-topbar-right.svelte-1tubujq{flex-shrink:1}}
|
|
1
|
+
.command-palette{--command-menu-overlay-background: rgba(0, 0, 0, .5);--command-menu-background: var(--component-bg);--command-menu-border: 1px solid var(--border);--command-menu-border-radius: var(--radius-lg);--command-menu-width: 500px;--command-menu-max-width: 90vw;--command-menu-input-color: var(--text-primary);--command-menu-input-placeholder-color: var(--text-tertiary);--command-menu-input-font-family: var(--font-mono);--command-menu-separator-color: var(--border);--command-menu-item-color: var(--text-secondary);--command-menu-item-active-background: var(--component-bg-hover);--command-menu-item-active-color: var(--text-primary);--command-menu-empty-color: var(--text-tertiary);--command-menu-z-index: 1001}.connection-status.svelte-1cg9pai{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;line-height:1;flex-shrink:0}.connection-status.connected.svelte-1cg9pai{color:#22c55e}.connection-status.reconnecting.svelte-1cg9pai{color:var(--ds-amber-900)}.connection-status.disconnected.svelte-1cg9pai{color:var(--ds-red-900)}.status-dot.svelte-1cg9pai{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.connected.svelte-1cg9pai{background:#22c55e}.status-dot.reconnecting.svelte-1cg9pai{background:var(--ds-amber-700);animation:svelte-1cg9pai-pulse-dot 1.5s ease-in-out infinite}.status-dot.disconnected.svelte-1cg9pai{background:var(--ds-red-700)}@keyframes svelte-1cg9pai-pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.status-label.svelte-1cg9pai{white-space:nowrap}.btn-retry{--button-height: auto;--button-padding: 2px 8px;--button-font-size: 12px;--button-border: 1px solid currentColor;--button-text-color: inherit;margin-left:2px}@media(max-width:480px){.status-label.svelte-1cg9pai{display:none}}.quick-keys.svelte-64qat5{display:flex;overflow-x:auto;gap:6px;padding:var(--space-2) var(--space-3);scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-shrink:0}.quick-keys.svelte-64qat5::-webkit-scrollbar{display:none}.btn-quick-key{--button-color: #1e293b;--button-text-color: #94a3b8;--button-border: 1px solid var(--ds-gray-400);--button-hover-color: #334155;--button-hover-text-color: #e2e8f0;--button-hover-border: 1px solid var(--ds-gray-400);--button-height: 44px;--button-padding: 0 var(--space-3);--button-border-radius: var(--radius-md);--button-font-family: var(--font-mono);--button-font-size: var(--text-xs);min-width:52px;flex-shrink:0;white-space:nowrap;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.shortcuts-modal{--modal-content-background-color: var(--component-bg);--modal-border-radius: var(--radius-lg);--modal-header-background-color: var(--component-bg);--modal-header-padding: var(--space-4) var(--space-5);--modal-header-border-bottom: 1px solid var(--border);--header-text-size: var(--text-lg);--modal-header-text-weight: 600;--background-color: rgba(0, 0, 0, .5);--modal-z-index: 1000}.shortcuts-modal .modal-content{max-width:420px;width:90vw;min-width:320px}.shortcuts-list.svelte-1u7lstk{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-4) var(--space-5)}.shortcut-row.svelte-1u7lstk{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0}.shortcut-desc.svelte-1u7lstk{font-size:var(--text-sm);color:var(--text-secondary)}.shortcut-kbd{--keyboard-input-key-color: var(--text-primary);--keyboard-input-key-background: var(--ds-gray-200);--keyboard-input-key-border: 1px solid var(--ds-gray-400);--keyboard-input-key-box-shadow: 0 1px 0 var(--ds-gray-400);--keyboard-input-font-family: var(--font-mono);--keyboard-input-font-size: var(--text-xs)}.term-page.svelte-1tubujq{display:flex;flex-direction:column;height:calc(100vh - var(--header-height) - 64px);height:calc(100dvh - var(--header-height) - 64px);overflow:hidden;background:var(--ds-background-200)}.term-topbar.svelte-1tubujq{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:var(--ds-background-100);border-bottom:1px solid var(--border);flex-shrink:0;min-height:48px}.term-topbar-left.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-2);min-width:0;overflow:hidden}.term-topbar-right.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-3);flex-shrink:1}.term-back.svelte-1tubujq{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);text-decoration:none;font-size:18px;transition:background var(--transition-fast),color var(--transition-fast);flex-shrink:0}.term-back.svelte-1tubujq:hover{background:var(--ds-gray-alpha-100);color:var(--text-primary)}.term-command-name.svelte-1tubujq{font-family:var(--font-mono);font-size:var(--text-base);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.term-tabs{--tabs-bar-border-bottom: none;--tabs-bar-background: var(--ds-gray-200);--tabs-bar-padding: 2px;--tabs-item-padding: 6px 12px;--tabs-item-font-size: var(--text-xs);--tabs-indicator-height: 0;--tabs-active-color: var(--text-primary);--tabs-item-color: var(--text-tertiary);border-radius:var(--radius-md);border:1px solid var(--ds-gray-400);overflow:hidden}.term-shortcuts-btn.svelte-1tubujq{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--text-tertiary);font-size:14px;font-weight:600;cursor:pointer;flex-shrink:0}.term-shortcuts-btn.svelte-1tubujq:hover{background:var(--component-bg-hover);color:var(--text-primary)}.term-cwd.svelte-1tubujq{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.term-session-link.svelte-1tubujq{font-size:11px;font-weight:500;color:var(--ds-blue-900);text-decoration:none;white-space:nowrap;padding:2px 8px;border-radius:var(--radius-sm);border:1px solid var(--ds-blue-400);transition:background var(--transition-fast),color var(--transition-fast)}.term-session-link.svelte-1tubujq:hover{background:var(--ds-blue-100);color:var(--ds-blue-1000)}.activity-dot.svelte-1tubujq{width:8px;height:8px;border-radius:50%;flex-shrink:0}.activity-active.svelte-1tubujq{background:#4ade80;animation:svelte-1tubujq-activity-pulse .6s ease-in-out infinite}.activity-idle.svelte-1tubujq{background:var(--ds-gray-600)}@keyframes svelte-1tubujq-activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.term-body.svelte-1tubujq{flex:1;flex-direction:column;min-height:0;overflow:hidden;padding:var(--space-1);background:#0a0a0f}.term-body.svelte-1tubujq .xterm{height:100%}.term-body.svelte-1tubujq .xterm-viewport{overflow-y:auto!important}.term-body-loading.svelte-1tubujq{flex:1;padding:var(--space-4);min-height:200px}.term-chat-body.svelte-1tubujq{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.term-input-area.svelte-1tubujq{flex-shrink:0;background:var(--ds-background-100);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0px)}.term-input-bar.svelte-1tubujq{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.term-input-field{--input-container-margin: 0;--input-height: 44px;flex:1}.btn-send{--button-height: 44px;--button-width: 44px;--button-padding: 0;--button-font-size: 18px;flex-shrink:0}.term-exited-bar.svelte-1tubujq{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);padding-bottom:calc(var(--space-2) + env(safe-area-inset-bottom,0px));background:var(--ds-gray-200);border-top:1px solid var(--border);font-size:var(--text-sm);color:var(--text-tertiary);flex-shrink:0}@media(max-width:768px){.term-topbar.svelte-1tubujq{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.term-command-name.svelte-1tubujq{font-size:var(--text-sm);max-width:100px}}@media(max-width:480px){.term-topbar.svelte-1tubujq{min-height:44px;padding:var(--space-1) var(--space-2)}.term-command-name.svelte-1tubujq{max-width:80px;text-overflow:ellipsis}.term-topbar-right.svelte-1tubujq{flex-shrink:1}}
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.chatview-wrapper.svelte-1tpzk7f{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--ds-background-100, #0a0a0a)}.chatview-header.svelte-1tpzk7f{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-4, 1rem);background:#111827;border-bottom:1px solid #1e293b;min-height:48px;flex-shrink:0}.chatview-header-left.svelte-1tpzk7f{display:flex;align-items:center;gap:var(--space-3, .75rem);min-width:0}.chatview-title.svelte-1tpzk7f{font-size:.9rem;font-weight:600;color:var(--text-primary, #ededed);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chatview-header-right.svelte-1tpzk7f{display:flex;align-items:center;gap:var(--space-3, .75rem);flex-shrink:0}.chat-input-field{--input-container-margin: 0;--input-height: 40px;flex:1}.chatview-scroll.svelte-1tpzk7f{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--space-4, 1rem);-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.chatview-empty.svelte-1tpzk7f{display:flex;align-items:center;justify-content:center;padding:var(--space-8, 2rem);height:100%}.chatview-empty-text.svelte-1tpzk7f{font-size:var(--text-sm, .875rem);color:var(--text-tertiary, #7d7d7d)}.chatview-ended.svelte-1tpzk7f{display:flex;align-items:center;justify-content:center;gap:var(--space-2, .5rem);padding:var(--space-4, 1rem);font-size:.85rem;color:var(--text-tertiary, #7d7d7d)}.chatview-details-toggle.svelte-1tpzk7f{display:flex;justify-content:flex-end;padding:0 0 var(--space-2, .5rem) 0;position:sticky;top:0;z-index:5}.chatview-details-btn.svelte-1tpzk7f{display:inline-flex;align-items:center;gap:var(--space-1, .25rem);padding:4px 10px;border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-sm, 4px);background:var(--bg-secondary, #141414);color:var(--text-tertiary, #7d7d7d);font-size:.7rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--transition-fast, .15s),border-color var(--transition-fast, .15s)}.chatview-details-btn.svelte-1tpzk7f:hover,.chatview-details-btn.active.svelte-1tpzk7f{color:var(--text-secondary, #a3a3a3);border-color:var(--text-tertiary, #7d7d7d)}.chatview-details-icon.svelte-1tpzk7f{font-size:.55rem;line-height:1}.chat-tool-group.svelte-1tpzk7f{background:var(--bg-secondary, #141414);border:1px solid var(--border, #2a2a2a);border-radius:var(--radius-md, 8px);overflow:hidden;margin:var(--space-2, .5rem) 0;max-width:90%;align-self:flex-start}.chat-tool-group-header.svelte-1tpzk7f{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast, .15s)}.chat-tool-group-header.svelte-1tpzk7f:hover{background:#ffffff08}.chat-tool-group-chevron.svelte-1tpzk7f{font-size:.7rem;color:var(--text-tertiary, #737373);transition:transform .2s ease}.chat-tool-group-chevron.expanded.svelte-1tpzk7f{transform:rotate(90deg)}.chat-tool-group-summary.svelte-1tpzk7f{font-size:.8rem;color:var(--text-tertiary, #737373);font-weight:500}.chat-tool-group-body.svelte-1tpzk7f{border-top:1px solid var(--border, #2a2a2a);padding:var(--space-2, .5rem)}.chat-tool-group-body.svelte-1tpzk7f .chat-tool-card:where(.svelte-1tpzk7f){margin:var(--space-1, .25rem) 0;max-width:100%}@media(max-width:768px){.chatview-header.svelte-1tpzk7f{padding:var(--space-2, .5rem) var(--space-3, .75rem);gap:var(--space-2, .5rem);min-height:44px}.chatview-title.svelte-1tpzk7f{font-size:.8rem}.chatview-scroll.svelte-1tpzk7f{padding:var(--space-3, .75rem)}}@media(max-width:480px){.chatview-header.svelte-1tpzk7f{flex-wrap:wrap}}
|
|
Binary file
|
|
Binary file
|