@juspay/shooter 1.17.0 → 1.18.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/build/client/_app/immutable/assets/{0.B0O0vCnX.css → 0.NV8k8wxG.css} +1 -1
- package/build/client/_app/immutable/assets/0.NV8k8wxG.css.br +0 -0
- package/build/client/_app/immutable/assets/{0.B0O0vCnX.css.gz → 0.NV8k8wxG.css.gz} +0 -0
- package/build/client/_app/immutable/chunks/{BctvtE4d.js → 8lO1IL7u.js} +1 -1
- package/build/client/_app/immutable/chunks/8lO1IL7u.js.br +0 -0
- package/build/client/_app/immutable/chunks/{BctvtE4d.js.gz → 8lO1IL7u.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/B9WQy_3X.js +1 -0
- package/build/client/_app/immutable/chunks/B9WQy_3X.js.br +0 -0
- package/build/client/_app/immutable/chunks/B9WQy_3X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BdtLzPpO.js +1 -0
- package/build/client/_app/immutable/chunks/BdtLzPpO.js.br +0 -0
- package/build/client/_app/immutable/chunks/BdtLzPpO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{CjfxuHdN.js → DJvX78LW.js} +1 -1
- package/build/client/_app/immutable/chunks/DJvX78LW.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJvX78LW.js.gz +0 -0
- package/build/client/_app/immutable/chunks/nWG9RHyB.js +3 -0
- package/build/client/_app/immutable/chunks/nWG9RHyB.js.br +0 -0
- package/build/client/_app/immutable/chunks/nWG9RHyB.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CNaTe-zm.js → app.f46Ko1hu.js} +2 -2
- package/build/client/_app/immutable/entry/app.f46Ko1hu.js.br +0 -0
- package/build/client/_app/immutable/entry/app.f46Ko1hu.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js +1 -0
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BVDjNnXt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.C3ELOf4c.js → 0.D_9EwVmq.js} +1 -1
- package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.Fqso94b3.js → 1.C4eFlqSB.js} +1 -1
- package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.BusCVJWk.js → 2.CdC092Za.js} +1 -1
- package/build/client/_app/immutable/nodes/2.CdC092Za.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CdC092Za.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{3.DUlpocIc.js → 3.Dhf4ZWW0.js} +1 -1
- package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{6.CG4eKRH0.js → 6.B3SEB_li.js} +1 -1
- package/build/client/_app/immutable/nodes/6.B3SEB_li.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.B3SEB_li.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{7.DHilxD1o.js → 7.DV8cJ1lX.js} +1 -1
- package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{8.BjKgvSie.js → 8.Bs362gyb.js} +2 -2
- package/build/client/_app/immutable/nodes/8.Bs362gyb.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.Bs362gyb.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{9.BRT6HOXB.js → 9.Cf7_3uqT.js} +1 -1
- package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.Cf7_3uqT.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/server/chunks/{0-BWFSL107.js → 0-Cd7jY0a7.js} +3 -3
- package/build/server/chunks/{0-BWFSL107.js.map → 0-Cd7jY0a7.js.map} +1 -1
- package/build/server/chunks/{1-Bw5KlAjL.js → 1-C4BOGoJY.js} +2 -2
- package/build/server/chunks/{1-Bw5KlAjL.js.map → 1-C4BOGoJY.js.map} +1 -1
- package/build/server/chunks/{2-CQ3yYSVK.js → 2-Ba0mNwJ6.js} +2 -2
- package/build/server/chunks/{2-CQ3yYSVK.js.map → 2-Ba0mNwJ6.js.map} +1 -1
- package/build/server/chunks/{3-DZ4H9hPs.js → 3-Pg8t1uJU.js} +2 -2
- package/build/server/chunks/{3-DZ4H9hPs.js.map → 3-Pg8t1uJU.js.map} +1 -1
- package/build/server/chunks/{6-BZ0enR6b.js → 6-D8xbnTSo.js} +2 -2
- package/build/server/chunks/{6-BZ0enR6b.js.map → 6-D8xbnTSo.js.map} +1 -1
- package/build/server/chunks/{7-Lg8imTZn.js → 7-CkVK06S0.js} +2 -2
- package/build/server/chunks/{7-Lg8imTZn.js.map → 7-CkVK06S0.js.map} +1 -1
- package/build/server/chunks/{8-DKs4yOL7.js → 8-C8qVhrds.js} +2 -2
- package/build/server/chunks/{8-DKs4yOL7.js.map → 8-C8qVhrds.js.map} +1 -1
- package/build/server/chunks/{9-UNmpUWDY.js → 9-fL5zqN0T.js} +2 -2
- package/build/server/chunks/{9-UNmpUWDY.js.map → 9-fL5zqN0T.js.map} +1 -1
- package/build/server/chunks/{_server.ts-B1z0q6qZ.js → _server.ts-BA_uWcPw.js} +4 -5
- package/build/server/chunks/_server.ts-BA_uWcPw.js.map +1 -0
- package/build/server/chunks/{_server.ts-5wx4ZppI.js → _server.ts-Bu3s5hfv.js} +3 -3
- package/build/server/chunks/{_server.ts-5wx4ZppI.js.map → _server.ts-Bu3s5hfv.js.map} +1 -1
- package/build/server/chunks/{_server.ts-CKXVBbwb.js → _server.ts-CwAjt91u.js} +8 -8
- package/build/server/chunks/_server.ts-CwAjt91u.js.map +1 -0
- package/build/server/chunks/{_server.ts-CgHc1Zpx.js → _server.ts-DZP2lhaY.js} +3 -3
- package/build/server/chunks/{_server.ts-CgHc1Zpx.js.map → _server.ts-DZP2lhaY.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BMMTS86y.js → _server.ts-DZgfQKiH.js} +3 -4
- package/build/server/chunks/{_server.ts-BMMTS86y.js.map → _server.ts-DZgfQKiH.js.map} +1 -1
- package/build/server/chunks/{_server.ts-Bt7EAfjo.js → _server.ts-MbnroWEF.js} +25 -48
- package/build/server/chunks/_server.ts-MbnroWEF.js.map +1 -0
- package/build/server/chunks/{pty-manager-RmhVe2Ez.js → pty-manager-DmNSCKAr.js} +99 -2
- package/build/server/chunks/pty-manager-DmNSCKAr.js.map +1 -0
- package/build/server/chunks/qwen-reader-DGfUbKaJ.js +2112 -0
- package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -0
- package/build/server/chunks/{registry-DzJj2E6I.js → registry-Kcw2UCMv.js} +55 -23
- package/build/server/chunks/registry-Kcw2UCMv.js.map +1 -0
- package/build/server/index.js +1 -1
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +15 -15
- package/build/server/manifest.js.map +1 -1
- package/package.json +2 -2
- package/scripts/e2e-all-features.sh +165 -0
- package/scripts/e2e-cross-terminal.sh +168 -0
- package/server.ts +12 -0
- package/src/lib/modules/client/common/provider.ts +0 -2
- package/src/lib/modules/client/terminal/ChatView.svelte +9 -2
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +3 -0
- package/src/lib/modules/server/sessions/amp-reader.ts +439 -0
- package/src/lib/modules/server/sessions/copilot-reader.ts +542 -0
- package/src/lib/modules/server/sessions/cursor-reader.ts +634 -0
- package/src/lib/modules/server/sessions/gemini-reader.ts +48 -25
- package/src/lib/modules/server/sessions/opencode-reader.ts +13 -12
- package/src/lib/modules/server/sessions/process-detector.ts +37 -60
- package/src/lib/modules/server/sessions/provider-paths.ts +173 -0
- package/src/lib/modules/server/sessions/qwen-reader.ts +41 -15
- package/src/lib/modules/server/sessions/registry.ts +55 -14
- package/src/lib/modules/server/terminal/generic-session-watcher.ts +163 -0
- package/src/lib/modules/server/terminal/pty-manager.ts +51 -0
- package/src/lib/modules/server/ws/session-handler.ts +11 -1
- package/src/lib/theme.css +1 -2
- package/src/lib/types/generated/Sessions.ts +1 -4
- package/src/lib/types/server.ts +23 -6
- package/src/lib/types/sessions.ts +1 -10
- package/src/routes/api/sessions/connect/+server.ts +7 -3
- package/build/client/_app/immutable/assets/0.B0O0vCnX.css.br +0 -0
- package/build/client/_app/immutable/chunks/BctvtE4d.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxFShcQO.js +0 -1
- package/build/client/_app/immutable/chunks/BxFShcQO.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxFShcQO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ByzqAuXw.js +0 -3
- package/build/client/_app/immutable/chunks/ByzqAuXw.js.br +0 -0
- package/build/client/_app/immutable/chunks/ByzqAuXw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CjfxuHdN.js.br +0 -0
- package/build/client/_app/immutable/chunks/CjfxuHdN.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Pw0jDB7M.js +0 -1
- package/build/client/_app/immutable/chunks/Pw0jDB7M.js.br +0 -0
- package/build/client/_app/immutable/chunks/Pw0jDB7M.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CNaTe-zm.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CNaTe-zm.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.hxYnjcDu.js +0 -1
- package/build/client/_app/immutable/entry/start.hxYnjcDu.js.br +0 -0
- package/build/client/_app/immutable/entry/start.hxYnjcDu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.Fqso94b3.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.Fqso94b3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.BusCVJWk.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.BusCVJWk.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DUlpocIc.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DUlpocIc.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DHilxD1o.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DHilxD1o.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BjKgvSie.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BjKgvSie.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.gz +0 -0
- package/build/server/chunks/_server.ts-B1z0q6qZ.js.map +0 -1
- package/build/server/chunks/_server.ts-Bt7EAfjo.js.map +0 -1
- package/build/server/chunks/_server.ts-CKXVBbwb.js.map +0 -1
- package/build/server/chunks/opencode-db-path-BwaPufWf.js +0 -411
- package/build/server/chunks/opencode-db-path-BwaPufWf.js.map +0 -1
- package/build/server/chunks/pty-manager-RmhVe2Ez.js.map +0 -1
- package/build/server/chunks/qwen-reader-2fTFuC_D.js +0 -622
- package/build/server/chunks/qwen-reader-2fTFuC_D.js.map +0 -1
- package/build/server/chunks/registry-DzJj2E6I.js.map +0 -1
|
@@ -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-alpha-200: rgba(34, 197, 94, .15);--ds-green-alpha-400: rgba(34, 197, 94, .3);--ds-green-500: #4ade80;--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)}.page-header-content{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.page-actions{display:flex;gap:var(--space-2);flex-shrink:0}@media(max-width:768px){.page-header-content{flex-direction:column;gap:var(--space-4)}}@media(max-width:480px){.page-actions{width:100%}.page-actions>*{flex:1}}.status-dot-active{width:8px;height:8px;border-radius:50%;background:var(--ds-green-500);animation:activity-pulse .6s ease-in-out infinite}.status-dot-idle,.status-dot-static{width:8px;height:8px;border-radius:50%;background:var(--ds-gray-600)}@keyframes activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.connection-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.connection-dot.connected{background:var(--ds-green-500)}.connection-dot.reconnecting{background:var(--ds-amber-700);animation:pulse-dot 1.5s ease-in-out infinite}.connection-dot.disconnected{background:var(--ds-red-700)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.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:linear-gradient(135deg,#141414e6,#1c1c20e6);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-lg, 14px);padding:var(--space-5, 1.25rem) var(--space-5, 1.25rem);cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;min-width:0;gap:var(--space-3, .75rem);position:relative;text-decoration:none;box-shadow:0 1px 3px #0000004d,0 0 0 1px #ffffff08 inset}.session-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#22c55e,#16a34a);border-radius:3px 0 0 3px;opacity:.7;transition:opacity .25s}.session-card:hover{border-color:#22c55e4d;background:linear-gradient(135deg,#19191cf2,#202026f2);transform:translateY(-1px);box-shadow:0 4px 12px #0006,0 0 0 1px #22c55e26 inset}.session-card:hover:before{opacity:1}.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:1.05rem;font-weight:700;color:#f0f0f0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}.session-card-subtitle{font-size:.78rem;color:#a3a3a3b3;font-family:var(--font-mono, monospace);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.session-stats{display:flex;gap:var(--space-4, 1rem);font-size:.82rem;color:var(--text-secondary, #a3a3a3);align-items:center}.session-stats strong{color:#22c55e;font-weight:700;font-size:.95rem}.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: var(--ds-green-alpha-200);--pill-color: var(--ds-green-700);--pill-border: 1px solid var(--ds-green-alpha-400);--pill-font-size: .7rem;--pill-padding: 2px 10px;--pill-hover-background: var(--ds-green-alpha-200);--pill-hover-color: var(--ds-green-700);--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-code{--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}.pill-source-codex{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: inherit}.pill-source-gemini{--pill-background: var(--ds-gray-100);--pill-color: var(--ds-gray-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-gray-100);--pill-hover-color: var(--ds-gray-900);--pill-cursor: inherit}.pill-source-qwen,.pill-source-iflow{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-900);--pill-cursor: inherit}.pill-source-cursor{--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-copilot,.pill-source-amp{--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}.icon-14{--icon-width: 14px;--icon-height: 14px;--icon-padding: 0;--icon-container-paddding: 0}.icon-16{--icon-width: 16px;--icon-height: 16px;--icon-padding: 0;--icon-container-paddding: 0}.icon-18{--icon-width: 18px;--icon-height: 18px;--icon-padding: 0;--icon-container-paddding: 0}.icon-24{--icon-width: 24px;--icon-height: 24px;--icon-padding: 0;--icon-container-paddding: 0}.icon-26{--icon-width: 26px;--icon-height: 26px;--icon-padding: 0;--icon-container-paddding: 0}.terminal-time{--relative-time-font-size: var(--text-xs);--relative-time-color: var(--text-tertiary);--relative-time-font-weight: 400;white-space:nowrap;flex-shrink:0}.pill-status-online{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-offline{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-degraded{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-unknown{--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-gray-300);--pill-hover-color: var(--text-secondary);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-online:before,.pill-status-offline:before,.pill-status-degraded:before,.pill-status-unknown:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentcolor;flex-shrink:0}.shimmer{width:var(--shimmer-width, 100%);height:var(--shimmer-height, 16px);border-radius:var(--shimmer-border-radius, 4px);background-color:var(--shimmer-background, var(--ds-gray-alpha-200, #e0e0e0));opacity:var(--shimmer-opacity, 1);overflow:hidden;position:relative}.shimmer:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--shimmer-highlight, rgba(255, 255, 255, .08)),transparent);animation:shimmer var(--shimmer-duration, 1.5s) infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.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{--button-color: transparent;--button-text-color: var(--text-muted);--button-border: none;--button-padding: 0;--button-height: 36px;--button-width: 36px;--button-border-radius: var(--radius-md);--button-hover-color: var(--component-bg);--button-hover-text-color: var(--text-primary)}.btn-gear:focus-visible{outline:2px solid var(--ds-green-700);outline-offset:2px}.btn-gear-active{--button-color: var(--component-bg);--button-text-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 .icon{flex-shrink:0}@media(max-width:480px){.btn-gear{--button-height: 44px;--button-width: 44px}.bottom-tabs.svelte-12qhfyh{height:60px}.tab-item.svelte-12qhfyh{padding:6px 28px;font-size:10px;gap:3px;min-height:44px}.pill-status-online,.pill-status-offline,.pill-status-degraded,.pill-status-unknown{font-size:10px;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-alpha-200: rgba(34, 197, 94, .15);--ds-green-alpha-400: rgba(34, 197, 94, .3);--ds-green-500: #4ade80;--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)}.page-header-content{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4)}.page-actions{display:flex;gap:var(--space-2);flex-shrink:0}@media(max-width:768px){.page-header-content{flex-direction:column;gap:var(--space-4)}}@media(max-width:480px){.page-actions{width:100%}.page-actions>*{flex:1}}.status-dot-active{width:8px;height:8px;border-radius:50%;background:var(--ds-green-500);animation:activity-pulse .6s ease-in-out infinite}.status-dot-idle,.status-dot-static{width:8px;height:8px;border-radius:50%;background:var(--ds-gray-600)}@keyframes activity-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.7}}.connection-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.connection-dot.connected{background:var(--ds-green-500)}.connection-dot.reconnecting{background:var(--ds-amber-700);animation:pulse-dot 1.5s ease-in-out infinite}.connection-dot.disconnected{background:var(--ds-red-700)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.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:linear-gradient(135deg,#141414e6,#1c1c20e6);border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-lg, 14px);padding:var(--space-5, 1.25rem) var(--space-5, 1.25rem);cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;min-width:0;gap:var(--space-3, .75rem);position:relative;text-decoration:none;box-shadow:0 1px 3px #0000004d,0 0 0 1px #ffffff08 inset}.session-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#22c55e,#16a34a);border-radius:3px 0 0 3px;opacity:.7;transition:opacity .25s}.session-card:hover{border-color:#22c55e4d;background:linear-gradient(135deg,#19191cf2,#202026f2);transform:translateY(-1px);box-shadow:0 4px 12px #0006,0 0 0 1px #22c55e26 inset}.session-card:hover:before{opacity:1}.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:1.05rem;font-weight:700;color:#f0f0f0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}.session-card-subtitle{font-size:.78rem;color:#a3a3a3b3;font-family:var(--font-mono, monospace);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.session-stats{display:flex;gap:var(--space-4, 1rem);font-size:.82rem;color:var(--text-secondary, #a3a3a3);align-items:center}.session-stats strong{color:#22c55e;font-weight:700;font-size:.95rem}.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: var(--ds-green-alpha-200);--pill-color: var(--ds-green-700);--pill-border: 1px solid var(--ds-green-alpha-400);--pill-font-size: .7rem;--pill-padding: 2px 10px;--pill-hover-background: var(--ds-green-alpha-200);--pill-hover-color: var(--ds-green-700);--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-code{--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}.pill-source-codex{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: inherit}.pill-source-gemini{--pill-background: var(--ds-gray-100);--pill-color: var(--ds-gray-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-gray-100);--pill-hover-color: var(--ds-gray-900);--pill-cursor: inherit}.pill-source-qwen{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: 10px;--pill-padding: 2px 8px;--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-900);--pill-cursor: inherit}.pill-source-cursor{--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-copilot,.pill-source-amp{--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}.icon-14{--icon-width: 14px;--icon-height: 14px;--icon-padding: 0;--icon-container-paddding: 0}.icon-16{--icon-width: 16px;--icon-height: 16px;--icon-padding: 0;--icon-container-paddding: 0}.icon-18{--icon-width: 18px;--icon-height: 18px;--icon-padding: 0;--icon-container-paddding: 0}.icon-24{--icon-width: 24px;--icon-height: 24px;--icon-padding: 0;--icon-container-paddding: 0}.icon-26{--icon-width: 26px;--icon-height: 26px;--icon-padding: 0;--icon-container-paddding: 0}.terminal-time{--relative-time-font-size: var(--text-xs);--relative-time-color: var(--text-tertiary);--relative-time-font-weight: 400;white-space:nowrap;flex-shrink:0}.pill-status-online{--pill-background: var(--ds-green-100);--pill-color: var(--ds-green-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-green-100);--pill-hover-color: var(--ds-green-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-offline{--pill-background: var(--ds-red-100);--pill-color: var(--ds-red-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-red-100);--pill-hover-color: var(--ds-red-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-degraded{--pill-background: var(--ds-amber-100);--pill-color: var(--ds-amber-900);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-amber-100);--pill-hover-color: var(--ds-amber-900);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-unknown{--pill-background: var(--ds-gray-300);--pill-color: var(--text-secondary);--pill-font-size: var(--text-xs);--pill-font-weight: 500;--pill-padding: 0 var(--space-3);--pill-border-radius: var(--radius-full);--pill-hover-background: var(--ds-gray-300);--pill-hover-color: var(--text-secondary);--pill-cursor: default;height:26px;text-transform:uppercase;letter-spacing:.02em}.pill-status-online:before,.pill-status-offline:before,.pill-status-degraded:before,.pill-status-unknown:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentcolor;flex-shrink:0}.shimmer{width:var(--shimmer-width, 100%);height:var(--shimmer-height, 16px);border-radius:var(--shimmer-border-radius, 4px);background-color:var(--shimmer-background, var(--ds-gray-alpha-200, #e0e0e0));opacity:var(--shimmer-opacity, 1);overflow:hidden;position:relative}.shimmer:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--shimmer-highlight, rgba(255, 255, 255, .08)),transparent);animation:shimmer var(--shimmer-duration, 1.5s) infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.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{--button-color: transparent;--button-text-color: var(--text-muted);--button-border: none;--button-padding: 0;--button-height: 36px;--button-width: 36px;--button-border-radius: var(--radius-md);--button-hover-color: var(--component-bg);--button-hover-text-color: var(--text-primary)}.btn-gear:focus-visible{outline:2px solid var(--ds-green-700);outline-offset:2px}.btn-gear-active{--button-color: var(--component-bg);--button-text-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 .icon{flex-shrink:0}@media(max-width:480px){.btn-gear{--button-height: 44px;--button-width: 44px}.bottom-tabs.svelte-12qhfyh{height:60px}.tab-item.svelte-12qhfyh{padding:6px 28px;font-size:10px;gap:3px;min-height:44px}.pill-status-online,.pill-status-offline,.pill-status-degraded,.pill-status-unknown{font-size:10px;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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as r,p as e}from"./
|
|
1
|
+
import{s as r,p as e}from"./nWG9RHyB.js";const a={get params(){return e.params},get url(){return e.url}};r.updated.check;const s=a;export{s as p};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as ge,a as r,f as i,d as kt,i as g,g as bt,h as yt,s as K,j as O,b as R}from"./Cg3dlX05.js";import{c as s,O as wt,r as a,t as A,p as Et,s as Se,q as St,F as Tt,g as e,P as It,d as o,b as pe,w as Dt,B as Me,A as P,x as u}from"./DYuMZGL5.js";import{a as zt,s as ce,P as be,B as Ge,e as ye,i as He,A as Ve,I as Ct,h as Te}from"./DZvnhU_8.js";import{r as Ie}from"./BDcFu3l7.js";import{S as Ye}from"./C_9BZILB.js";var Pt=i('<div><div class="accordion-content svelte-14pncvc"><!></div></div>');function De(B,n){let $=ge(n,"expand",3,!1);var ee=Pt();let te;var we=s(ee),ze=s(we);zt(ze,()=>n.children??wt),a(we),a(ee),A(()=>te=ce(ee,1,`accordion ${n.classes??""??""}`,"svelte-14pncvc",te,{expanded:$()})),r(B,ee)}function At(B,n){return B==="Bash"?n.command||n.description||"":B==="Read"||B==="Edit"||B==="Write"?n.file_path||"":B==="Grep"||B==="Glob"?n.pattern||"":B==="Agent"?n.description||n.prompt?.slice(0,50)||"":JSON.stringify(n).slice(0,60)}var Bt=i('<div class="chatview-header svelte-1tpzk7f"><div class="chatview-header-left svelte-1tpzk7f"><!> <span class="chatview-title svelte-1tpzk7f">Session</span></div> <div class="chatview-header-right svelte-1tpzk7f"><span><span class="connection-status-dot"></span> </span> <!></div></div>'),Gt=i('<div class="chatview-empty svelte-1tpzk7f"><p class="chatview-empty-text svelte-1tpzk7f">Waiting for session messages...</p></div>'),Ht=i('<div class="chat-bubble chat-bubble-user"></div>'),Nt=i('<div class="chat-message chat-message-user"><div><!> <div class="chat-timestamp"> </div></div> <!></div>'),Ot=i('<div class="chat-tool-body"> </div>'),Ut=i('<div class="chat-tool-card svelte-1tpzk7f"><div class="chat-tool-header" role="button" tabindex="0"><span>▶</span> <!> <span class="chat-tool-description"> </span></div> <!></div>'),Ft=i('<div class="chat-tool-group-body svelte-1tpzk7f"></div>'),Kt=i('<div class="chat-tool-group svelte-1tpzk7f"><div class="chat-tool-group-header svelte-1tpzk7f" role="button" tabindex="0"><span>▶</span> <span class="chat-tool-group-summary svelte-1tpzk7f"> </span></div> <!></div>'),Rt=i('<div class="chat-bubble chat-bubble-assistant"></div>'),Lt=i('<div class="chat-tool-body"> </div>'),Wt=i('<div class="chat-tool-card"><div class="chat-tool-header" role="button" tabindex="0"><span>▶</span> <!> <span class="chat-tool-description"> </span></div> <!></div>'),jt=i('<div class="chat-thinking-body"></div>'),qt=i('<div class="chat-thinking"><div class="chat-thinking-header" role="button" tabindex="0"> </div> <!></div>'),Jt=i('<div class="chat-message chat-message-assistant"><!> <div><!> <div class="chat-timestamp"> </div></div></div>'),Mt=i("<div> </div>"),Vt=i('<div class="chat-message chat-message-system"><div class="chat-tool-card"><div class="chat-tool-header" role="button" tabindex="0"><span>▶</span> <!></div> <!></div></div>'),Yt=i('<div class="chat-message chat-message-system"><div class="chat-bubble chat-bubble-system"></div></div>'),Qt=i('<div class="chatview-ended svelte-1tpzk7f"><!> <span>Session has ended</span></div>'),Xt=i('<div class="chatview-details-toggle svelte-1tpzk7f"><!></div> <!> <!>',1),Zt=i('<div class="chat-input-bar"><!> <!></div>'),$t=i('<div class="chatview-wrapper svelte-1tpzk7f"><!> <div class="chat-container chatview-scroll svelte-1tpzk7f"><!></div> <!></div>');function oa(B,n){Et(n,!0);const $=ge(n,"connectionState",3,"idle"),ee=ge(n,"newestFirst",3,!1),te=ge(n,"sessionEnded",3,!1),we=ge(n,"showHeader",3,!1),ze=ge(n,"showInput",3,!0),Ne=u(()=>te()||(n.sendDisabled!==void 0?n.sendDisabled:$()!=="connected"));let me=Se(""),q=Se(null),Ce=Se(!0);const ae=new Ye,Ee=new Ye,Oe="shooter:chatview:showDetails";let D=Se(St(localStorage.getItem(Oe)==="true"));function Qe(){pe(D,!e(D)),localStorage.setItem(Oe,String(e(D)))}function Xe(t,l){const _=[];let k=[],z=0;function G(){if(k.length!==0){if(k.length===1)_.push(k[0]);else{const L=k.map(C=>C.toolName),E=[...new Set(L)],v=`Used ${k.length} tools: ${E.join(", ")}`;_.push({groupId:`toolgroup-${l}-${z}`,summary:v,tools:k,type:"tool_group"}),z++}k=[]}}for(const L of t)L.type==="tool_use"?k.push(L):(G(),_.push(L));return G(),_}function Ze(t){return t.type==="tool_group"}function $e(t){return t.parts.every(l=>l.type==="tool_result")}Tt(()=>{n.messages,et()});async function et(){!e(Ce)||!e(q)||(await It(),ee()?e(q).scrollTop=0:e(q).scrollTop=e(q).scrollHeight)}function tt(){if(!e(q))return;const{clientHeight:t,scrollHeight:l,scrollTop:_}=e(q);ee()?pe(Ce,_<100):pe(Ce,l-_-t<100)}function Ue(){const t=e(me).trim();t&&(pe(me,""),n.onSendInput?.(t))}function at(t){t.key==="Enter"&&!t.shiftKey&&(t.preventDefault(),Ue())}function J(t){ae.has(t)?ae.delete(t):ae.add(t)}function Fe(t){Ee.has(t)?Ee.delete(t):Ee.add(t)}function Ke(t){if(!t)return"";const l=new Date(t);return Number.isNaN(l.getTime())?"":l.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function Re(t){return At(t.toolName,t.input)}function Le(t){return JSON.stringify(t,null,2)}function st(t){return t.type==="tool_use"}var Pe=$t(),We=s(Pe);{var rt=t=>{var l=Bt(),_=s(l),k=s(_);be(k,{text:"LIVE",classes:"pill-live"}),Me(2),a(_);var z=o(_,2),G=s(z),L=o(s(G));a(G);var E=o(G,2);{var v=C=>{Ge(C,{classes:"btn-danger btn-sm",onclick:()=>{n.onCancel()},text:"Cancel"})};g(E,C=>{!te()&&n.onCancel&&C(v)})}a(z),a(l),A(()=>{ce(G,1,`connection-status ${$()??""}`,"svelte-1tpzk7f"),K(L,` ${$()==="connected"?"Connected":$()==="connecting"||$()==="reconnecting"?"Connecting...":"Disconnected"}`)}),r(t,l)};g(We,t=>{we()&&t(rt)})}var xe=o(We,2),nt=s(xe);{var ot=t=>{var l=Gt();r(t,l)},it=t=>{var l=Xt(),_=P(l),k=s(_);{let E=u(()=>e(D)?"active":""),v=u(()=>e(D)?"▼":"▶"),C=u(()=>e(D)?"Hide details":"Show details");Ge(k,{get classes(){return`chatview-details-btn ${e(E)??""}`},onclick:Qe,get text(){return`${e(v)??""} ${e(C)??""}`}})}a(_);var z=o(_,2);ye(z,17,()=>n.messages,E=>E.id,(E,v)=>{var C=O(),dt=P(C);{var ct=W=>{var U=Nt(),M=s(U),se=s(M);ye(se,17,()=>e(v).parts,He,(j,c)=>{var m=O(),_e=P(m);{var ke=ne=>{var oe=Ht();Te(oe,()=>Ie(e(c).content),!0),a(oe),r(ne,oe)};g(_e,ne=>{e(c).type==="text"&&ne(ke)})}r(j,m)});var re=o(se,2),V=s(re,!0);a(re),a(M);var ue=o(M,2);Ve(ue,{alt:"User",name:"User",size:"small",classes:"avatar-user"}),a(U),A(j=>K(V,j),[()=>Ke(e(v).timestamp)]),r(W,U)},ut=W=>{var U=Jt(),M=s(U);Ve(M,{alt:"Claude",name:"Claude",size:"small",classes:"avatar-assistant"});var se=o(M,2),re=s(se);ye(re,17,()=>Xe(e(v).parts,e(v).id),He,(j,c)=>{var m=O(),_e=P(m);{var ke=b=>{const f=u(()=>e(D)||Ee.has(e(c).groupId));var x=Kt(),p=s(x),h=s(p);let F;var S=o(h,2),T=s(S,!0);a(S),a(p);var X=o(p,2);{var Z=I=>{var d=Ft();ye(d,21,()=>e(c).tools,H=>H.id,(H,y)=>{const ie=u(()=>e(y).id),le=u(()=>e(D)||ae.has(e(ie)));var N=Ut(),w=s(N),ve=s(w);let he;var je=o(ve,2);be(je,{get text(){return e(y).toolName},classes:"pill-tool-name"});var qe=o(je,2),ft=s(qe,!0);a(qe),a(w);var ht=o(w,2);De(ht,{get expand(){return e(le)},children:(de,ea)=>{var Je=O(),pt=P(Je);{var gt=Ae=>{var Be=Ot(),mt=s(Be,!0);a(Be),A(xt=>K(mt,xt),[()=>Le(e(y).input)]),r(Ae,Be)};g(pt,Ae=>{e(le)&&Ae(gt)})}r(de,Je)},$$slots:{default:!0}}),a(N),A(de=>{he=ce(ve,1,"chat-tool-chevron",null,he,{expanded:e(le)}),K(ft,de)},[()=>Re(e(y))]),R("click",w,()=>{J(e(ie))}),R("keydown",w,de=>{(de.key==="Enter"||de.key===" ")&&(de.preventDefault(),J(e(ie)))}),r(H,N)}),a(d),r(I,d)};g(X,I=>{e(f)&&I(Z)})}a(x),A(()=>{F=ce(h,1,"chat-tool-group-chevron svelte-1tpzk7f",null,F,{expanded:e(f)}),K(T,e(c).summary)}),R("click",p,()=>{Fe(e(c).groupId)}),R("keydown",p,I=>{(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),Fe(e(c).groupId))}),r(b,x)},ne=u(()=>Ze(e(c))),oe=b=>{var f=Rt();Te(f,()=>Ie(e(c).content),!0),a(f),r(b,f)},Y=b=>{const f=u(()=>e(c).id),x=u(()=>e(D)||ae.has(e(f)));var p=Wt(),h=s(p),F=s(h);let S;var T=o(F,2);be(T,{get text(){return e(c).toolName},classes:"pill-tool-name"});var X=o(T,2),Z=s(X,!0);a(X),a(h);var I=o(h,2);De(I,{get expand(){return e(x)},children:(d,H)=>{var y=O(),ie=P(y);{var le=N=>{var w=Lt(),ve=s(w,!0);a(w),A(he=>K(ve,he),[()=>Le(e(c).input)]),r(N,w)};g(ie,N=>{e(x)&&N(le)})}r(d,y)},$$slots:{default:!0}}),a(p),A(d=>{S=ce(F,1,"chat-tool-chevron",null,S,{expanded:e(x)}),K(Z,d)},[()=>Re(e(c))]),R("click",h,()=>{J(e(f))}),R("keydown",h,d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),J(e(f)))}),r(b,p)},Q=u(()=>st(e(c))),fe=b=>{const f=u(()=>`thinking-${e(v).id}`),x=u(()=>e(D)||ae.has(e(f)));var p=qt(),h=s(p),F=s(h);a(h);var S=o(h,2);De(S,{get expand(){return e(x)},children:(T,X)=>{var Z=O(),I=P(Z);{var d=H=>{var y=jt();Te(y,()=>Ie(e(c).content),!0),a(y),r(H,y)};g(I,H=>{e(x)&&H(d)})}r(T,Z)},$$slots:{default:!0}}),a(p),A(()=>K(F,`💭 Thinking... ${e(x)?"▼":"▶"}`)),R("click",h,()=>{J(e(f))}),R("keydown",h,T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),J(e(f)))}),r(b,p)};g(_e,b=>{e(ne)?b(ke):e(c).type==="text"?b(oe,1):e(Q)?b(Y,2):e(c).type==="thinking"&&b(fe,3)})}r(j,m)});var V=o(re,2),ue=s(V,!0);a(V),a(se),a(U),A(j=>K(ue,j),[()=>Ke(e(v).timestamp)]),r(W,U)},_t=W=>{var U=O(),M=P(U);{var se=V=>{var ue=O(),j=P(ue);ye(j,17,()=>e(v).parts,He,(c,m)=>{var _e=O(),ke=P(_e);{var ne=Y=>{var Q=O(),fe=P(Q);{var b=f=>{const x=u(()=>`result-${e(m).toolUseId}`),p=u(()=>ae.has(e(x)));var h=Vt(),F=s(h),S=s(F),T=s(S);let X;var Z=o(T,2);{let d=u(()=>e(m).isError?"❌ Tool Error":"✅ Tool Result"),H=u(()=>e(m).isError?"pill-tool-error":"pill-tool-success");be(Z,{get text(){return e(d)},get classes(){return e(H)}})}a(S);var I=o(S,2);De(I,{get expand(){return e(p)},children:(d,H)=>{var y=O(),ie=P(y);{var le=N=>{var w=Mt();let ve;var he=s(w,!0);a(w),A(()=>{ve=ce(w,1,"chat-tool-result",null,ve,{"chat-tool-result-success":!e(m).isError,"chat-tool-result-error":e(m).isError}),K(he,e(m).output)}),r(N,w)};g(ie,N=>{e(p)&&N(le)})}r(d,y)},$$slots:{default:!0}}),a(F),a(h),A(()=>X=ce(T,1,"chat-tool-chevron",null,X,{expanded:e(p)})),R("click",S,()=>{J(e(x))}),R("keydown",S,d=>{(d.key==="Enter"||d.key===" ")&&(d.preventDefault(),J(e(x)))}),r(f,h)};g(fe,f=>{e(D)&&f(b)})}r(Y,Q)},oe=Y=>{var Q=Yt(),fe=s(Q);Te(fe,()=>Ie(e(m).content),!0),a(fe),a(Q),r(Y,Q)};g(ke,Y=>{e(m).type==="tool_result"?Y(ne):e(m).type==="text"&&Y(oe,1)})}r(c,_e)}),r(V,ue)},re=u(()=>e(D)||!$e(e(v)));g(M,V=>{e(re)&&V(se)})}r(W,U)};g(dt,W=>{e(v).role==="user"?W(ct):e(v).role==="assistant"?W(ut,1):e(v).role==="system"&&W(_t,2)})}r(E,C)});var G=o(z,2);{var L=E=>{var v=Qt(),C=s(v);be(C,{text:"ENDED",classes:"pill-badge-ended"}),Me(2),a(v),r(E,v)};g(G,E=>{te()&&E(L)})}r(t,l)};g(nt,t=>{n.messages.length===0?t(ot):t(it,-1)})}a(xe),bt(xe,t=>pe(q,t),()=>e(q));var lt=o(xe,2);{var vt=t=>{var l=Zt(),_=s(l);{let z=u(()=>te()?"Session ended":"Send a message... (Shift+Enter for new line)");Ct(_,{dataType:"text",useTextArea:!0,get placeholder(){return e(z)},get disable(){return e(Ne)},onKeyDown:at,classes:"chat-input-field",get value(){return e(me)},set value(G){pe(me,G,!0)}})}var k=o(_,2);{let z=u(()=>e(Ne)||!e(me).trim());Ge(k,{classes:"btn-primary btn-sm",get disabled(){return e(z)},onclick:Ue,text:"Send"})}a(l),r(t,l)};g(lt,t=>{ze()&&t(vt)})}a(Pe),yt("scroll",xe,tt),r(B,Pe),Dt()}kt(["click","keydown"]);export{oa as C};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const o={amp:"amp","claude-code":"claude",codex:"codex",copilot:"copilot",cursor:"cursor-agent",gemini:"gemini",opencode:"opencode",qwen:"qwen"},c={amp:"Amp","claude-code":"Claude Code",codex:"Codex",copilot:"Copilot",cursor:"Cursor",gemini:"Gemini",opencode:"OpenCode",qwen:"Qwen"},n=Object.values(o);function d(e){return c[e]??"Claude Code"}function a(e){return o[e]??"claude"}export{n as A,d as a,a as s};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./
|
|
1
|
+
import{s as e}from"./nWG9RHyB.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{bv as Te,v as Ve,s as j,g as P,b as N,P as oe,bw as At}from"./DYuMZGL5.js";class pe{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Le{constructor(t,n){this.status=t,this.location=n}}class je extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function Et(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Rt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ye({href:e}){return e.split("#")[0]}function St(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;const It=new TextDecoder;function Ut(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const Tt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&z.delete(Pe(e)),Tt(e,t));const z=new Map;function Lt(e,t){const n=Pe(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:a,...s}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&z.set(n,{body:a,init:s,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Ut(a)),Promise.resolve(new Response(a,s))}return window.fetch(e,t)}function jt(e,t,n){if(z.size>0){const r=Pe(e,n),a=z.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n?.cache))return new Response(a.body,a.init);z.delete(r)}}return window.fetch(t,n)}function Pe(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t?.headers||t?.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${St(...a)}"]`}return r}const Pt=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Nt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${xt(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const s=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(s)return t.push({name:s[1],matcher:s[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((i,l)=>{if(l%2){if(i.startsWith("x+"))return ve(String.fromCharCode(parseInt(i.slice(2),16)));if(i.startsWith("u+"))return ve(String.fromCharCode(...i.slice(2).split("-").map(g=>parseInt(g,16))));const u=Pt.exec(i),[,d,p,h,f]=u;return t.push({name:h,matcher:f,optional:!!d,rest:!!p,chained:p?l===1&&o[0]==="":!1}),p?"([^]*?)":d?"([^/]*)?":"([^/]+?)"}return ve(i)}).join("")}).join("")}/?$`),params:t}}function Ot(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function xt(e){return e.slice(1).split("/").filter(Ot)}function Ct(e,t,n){const r={},a=e.slice(1),s=a.filter(c=>c!==void 0);let o=0;for(let c=0;c<t.length;c+=1){const i=t[c];let l=a[c-o];if(i.chained&&i.rest&&o&&(l=a.slice(c-o,c+1).filter(u=>u).join("/"),o=0),l===void 0)if(i.rest)l="";else continue;if(!i.matcher||n[i.matcher](l)){r[i.name]=l;const u=t[c+1],d=a[c+1];u&&!u.rest&&u.optional&&d&&i.chained&&(o=0),!u&&!d&&Object.keys(r).length===s.length&&(o=0);continue}if(i.optional&&i.chained){o++;continue}return}if(!o)return r}function ve(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Dt({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([c,[i,l,u]])=>{const{pattern:d,params:p}=Nt(c),h={id:c,exec:f=>{const g=d.exec(f);if(g)return Ct(g,p,r)},errors:[1,...u||[]].map(f=>e[f]),layouts:[0,...l||[]].map(o),leaf:s(i)};return h.errors.length=h.layouts.length=Math.max(h.errors.length,h.layouts.length),h});function s(c){const i=c<0;return i&&(c=~c),[i,e[c]]}function o(c){return c===void 0?c:[a.has(c),e[c]]}}function Qe(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function qe(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const U=globalThis.__sveltekit_1jhhj7f?.base??"",$t=globalThis.__sveltekit_1jhhj7f?.assets??U??"",Bt="1780830864274",et="sveltekit:snapshot",tt="sveltekit:scroll",nt="sveltekit:states",Ft="sveltekit:pageurl",q="sveltekit:history",Q="sveltekit:navigation",B={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},re=location.origin;function Ne(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function M(){return{x:pageXOffset,y:pageYOffset}}function V(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ye={...B,"":B.hover};function rt(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function at(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=rt(e)}}function Ee(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const c=location.hash.split("#")[1]||"/";r.hash=`#${c}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,s=!r||!!a||_e(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=r?.origin===re&&e.hasAttribute("download");return{url:r,external:s,target:a,download:o}}function se(e){let t=null,n=null,r=null,a=null,s=null,o=null,c=e;for(;c&&c!==document.documentElement;)r===null&&(r=V(c,"preload-code")),a===null&&(a=V(c,"preload-data")),t===null&&(t=V(c,"keepfocus")),n===null&&(n=V(c,"noscroll")),s===null&&(s=V(c,"reload")),o===null&&(o=V(c,"replacestate")),c=rt(c);function i(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ye[r??"off"],preload_data:Ye[a??"off"],keepfocus:i(t),noscroll:i(n),reload:i(s),replace_state:i(o)}}function Ge(e){const t=Te(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function s(o){let c;return t.subscribe(i=>{(c===void 0||n&&i!==c)&&o(c=i)})}return{notify:r,set:a,subscribe:s}}const ot={v:()=>{}};function Mt(){const{set:e,subscribe:t}=Te(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${$t}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Bt;return o&&(e(!0),ot.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function _e(e,t,n){return e.origin!==re||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Pn(e){}const Vt=-1,qt=-2,Yt=-3,Gt=-4,Kt=-5,Wt=-6,Ht=-7,st=2**32-1,ke=st-1;function Xt(e){return!(!Number.isInteger(e)||e<0||e>ke)}function zt(e){return!(!Number.isInteger(e)||e<0||e>st)}function Jt(e){return Uint8Array.fromBase64(e).buffer}function Zt(e){return Uint8Array.from(Buffer.from(e,"base64")).buffer}function Qt(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let a=0;a<n;a++)r[a]=t.charCodeAt(a);return r.buffer}const en=typeof Uint8Array.fromBase64=="function",tn=typeof process=="object"&&process.versions?.node!==void 0,nn=en?Jt:tn?Zt:Qt;function rn(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);let a=null;function s(o,c=!1){if(o===Vt)return;if(o===Yt)return NaN;if(o===Gt)return 1/0;if(o===Kt)return-1/0;if(o===Wt)return-0;if(c||typeof o!="number")throw new Error("Invalid input");if(o in r)return r[o];const i=n[o];if(!i||typeof i!="object")r[o]=i;else if(Array.isArray(i))if(typeof i[0]=="string"){const l=i[0],u=t&&Object.hasOwn(t,l)?t[l]:void 0;if(u){let d=i[1];if(typeof d!="number"&&(d=n.push(i[1])-1),a??=new Set,a.has(d))throw new Error("Invalid circular reference");return a.add(d),r[o]=u(s(d)),a.delete(d),r[o]}switch(l){case"Date":r[o]=new Date(i[1]);break;case"Set":const d=new Set;r[o]=d;for(let f=1;f<i.length;f+=1)d.add(s(i[f]));break;case"Map":const p=new Map;r[o]=p;for(let f=1;f<i.length;f+=2)p.set(s(i[f]),s(i[f+1]));break;case"RegExp":r[o]=new RegExp(i[1],i[2]);break;case"Object":{const f=i[1];if(typeof n[f]=="object"&&n[f][0]!=="BigInt")throw new Error("Invalid input");r[o]=Object(s(f));break}case"BigInt":r[o]=BigInt(i[1]);break;case"null":const h=Object.create(null);r[o]=h;for(let f=1;f<i.length;f+=2){if(i[f]==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");h[i[f]]=s(i[f+1])}break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Float16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":case"DataView":{if(n[i[1]][0]!=="ArrayBuffer")throw new Error("Invalid data");const f=globalThis[l],g=s(i[1]);r[o]=i[2]!==void 0?new f(g,i[2],i[3]):new f(g);break}case"ArrayBuffer":{const f=i[1];if(typeof f!="string")throw new Error("Invalid ArrayBuffer encoding");const g=nn(f);r[o]=g;break}case"Temporal.Duration":case"Temporal.Instant":case"Temporal.PlainDate":case"Temporal.PlainTime":case"Temporal.PlainDateTime":case"Temporal.PlainMonthDay":case"Temporal.PlainYearMonth":case"Temporal.ZonedDateTime":{const f=l.slice(9);r[o]=Temporal[f].from(i[1]);break}case"URL":{const f=new URL(i[1]);r[o]=f;break}case"URLSearchParams":{const f=new URLSearchParams(i[1]);r[o]=f;break}default:throw new Error(`Unknown type ${l}`)}}else if(i[0]===Ht){const l=i[1];if(!zt(l))throw new Error("Invalid input");const u=[];r[o]=u,u[ke]=void 0,delete u[ke];for(let d=2;d<i.length;d+=2){const p=i[d];if(!Xt(p)||p>=l)throw new Error("Invalid input");u[p]=s(i[d+1])}u.length=l}else{const l=new Array(i.length);r[o]=l;for(let u=0;u<i.length;u+=1){const d=i[u];d!==qt&&(l[u]=s(d))}}else{const l={};r[o]=l;for(const u of Object.keys(i)){if(u==="__proto__")throw new Error("Cannot parse an object with a `__proto__` property");const d=i[u];l[u]=s(d)}}return r[o]}return s(0)}const it=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...it];const an=new Set([...it]);[...an];function on(e){return e.filter(t=>t!=null)}const sn="x-sveltekit-invalidated",cn="x-sveltekit-trailing-slash";function ie(e){return e instanceof pe||e instanceof je?e.status:500}function ln(e){return e instanceof je?e.text:"Internal Error"}let S,ee,be;const fn=Ve.toString().includes("$$")||/function \w+\(\) \{\}/.test(Ve.toString()),Ke="a:";fn?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(Ke)},ee={current:null},be={current:!1}):(S=new class{#e=j({});get data(){return P(this.#e)}set data(t){N(this.#e,t)}#t=j(null);get form(){return P(this.#t)}set form(t){N(this.#t,t)}#n=j(null);get error(){return P(this.#n)}set error(t){N(this.#n,t)}#r=j({});get params(){return P(this.#r)}set params(t){N(this.#r,t)}#a=j({id:null});get route(){return P(this.#a)}set route(t){N(this.#a,t)}#o=j({});get state(){return P(this.#o)}set state(t){N(this.#o,t)}#s=j(-1);get status(){return P(this.#s)}set status(t){N(this.#s,t)}#i=j(new URL(Ke));get url(){return P(this.#i)}set url(t){N(this.#i,t)}},ee=new class{#e=j(null);get current(){return P(this.#e)}set current(t){N(this.#e,t)}},be=new class{#e=j(!1);get current(){return P(this.#e)}set current(t){N(this.#e,t)}},ot.v=()=>be.current=!0);function un(e){Object.assign(S,e)}const dn="/__data.json",hn=".html__data.json";function pn(e){return e.endsWith(".html")?e.replace(/\.html$/,hn):e.replace(/\/$/,"")+dn}const _n=new Set(["icon","shortcut icon","apple-touch-icon"]);let H=null;const D=Qe(tt)??{},te=Qe(et)??{},C={url:Ge({}),page:Ge({}),navigating:Te(null),updated:Mt()};function Oe(e){D[e]=M()}function gn(e,t){let n=e+1;for(;D[n];)delete D[n],n+=1;for(n=t+1;te[n];)delete te[n],n+=1}function K(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function ct(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(U||"/");e&&await e.update()}}function We(){}let xe,Re,ce,x,Se,A;const le=[],fe=[];let L=null;function Ie(){L?.fork?.then(e=>e?.discard()),L=null}const ae=new Map,lt=new Set,mn=new Set,J=new Set;let w={branch:[],error:null,url:null},Ce=!1,ue=!1,He=!0,ne=!1,X=!1,ft=!1,De=!1,ut,R,I,F;const Z=new Set,Xe=new Map;async function Cn(e,t,n){globalThis.__sveltekit_1jhhj7f?.data&&globalThis.__sveltekit_1jhhj7f.data,document.URL!==location.href&&(location.href=location.href),A=e,await e.hooks.init?.(),xe=Dt(e),x=document.documentElement,Se=t,Re=e.nodes[0],ce=e.nodes[1],Re(),ce(),R=history.state?.[q],I=history.state?.[Q],R||(R=I=Date.now(),history.replaceState({...history.state,[q]:R,[Q]:I},""));const r=D[R];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await Un(Se,n)):(await Y({type:"enter",url:Ne(A.hash?Ln(new URL(location.href)):location.href),replace_state:!0}),a()),In()}function wn(){le.length=0,De=!1}function dt(e){fe.some(t=>t?.snapshot)&&(te[e]=fe.map(t=>t?.snapshot?.capture()))}function ht(e){te[e]?.forEach((t,n)=>{fe[n]?.snapshot?.restore(t)})}function ze(){Oe(R),qe(tt,D),dt(I),qe(et,te)}async function pt(e,t,n,r){let a;t.invalidateAll&&Ie(),await Y({type:"goto",url:Ne(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(De=!0,a=[...Xe.keys()]),t.invalidate&&t.invalidate.forEach(Sn)}}),t.invalidateAll&&oe().then(oe).then(()=>{Xe.forEach(({resource:s},o)=>{a?.includes(o)&&s.refresh?.()})})}async function yn(e){if(e.id!==L?.id){Ie();const t={};Z.add(t),L={id:e.id,token:t,promise:gt({...e,preload:t}).then(n=>(Z.delete(t),n.type==="loaded"&&n.state.error&&Ie(),n)),fork:null}}return L.promise}async function Ae(e){const t=(await me(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(n=>n[1]()))}async function _t(e,t,n){const r={params:w.params,route:{id:w.route?.id??null},url:new URL(location.href)};w={...e.state,nav:r};const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(S,e.props.page),ut=new A.root({target:t,props:{...e.props,stores:C,components:fe},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),ht(I),n){const s={from:null,to:{...r,scroll:D[R]??M()},willUnload:!1,type:"enter",complete:Promise.resolve()};J.forEach(o=>o(s))}ue=!0}async function de({url:e,params:t,branch:n,errors:r,status:a,error:s,route:o,form:c}){let i="never";if(U&&(e.pathname===U||e.pathname===U+"/"))i="always";else for(const f of n)f?.slash!==void 0&&(i=f.slash);e.pathname=Et(e.pathname,i),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:s,route:o},props:{constructors:on(n).map(f=>f.node.component),page:Me(S)}};c!==void 0&&(l.props.form=c);let u={},d=!S,p=0;for(let f=0;f<Math.max(n.length,w.branch.length);f+=1){const g=n[f],b=w.branch[f];g?.data!==b?.data&&(d=!0),g&&(u={...u,...g.data},d&&(l.props[`data_${p}`]=u),p+=1)}return(!w.url||e.href!==w.url.href||w.error!==s||c!==void 0&&c!==S.form||d)&&(l.props.page={error:s,params:t,route:{id:o?.id??null},state:{},status:a,url:new URL(e),form:c??null,data:d?u:S.data}),l}async function $e({loader:e,parent:t,url:n,params:r,route:a,server_data_node:s}){let o=null;const c={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},i=await e();return{node:i,loader:e,server:s,universal:i.universal?.load?{type:"data",data:o,uses:c}:null,data:o??s?.data??null,slash:i.universal?.trailingSlash??s?.slash}}function vn(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const s=ue?jt(r,a.href,t):Lt(r,t);return{resolved:a,promise:s}}function Je(e,t,n,r,a,s){if(De)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(s[o]!==w.params[o])return!0;for(const o of a.dependencies)if(le.some(c=>c(new URL(o))))return!0;return!1}function Be(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function bn(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),s=t.searchParams.getAll(r);a.every(o=>s.includes(o))&&s.every(o=>a.includes(o))&&n.delete(r)}return n}function Ze({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Me(S),constructors:[]}}}async function gt({id:e,invalidating:t,url:n,params:r,route:a,preload:s}){if(L?.id===e)return Z.delete(L.token),L.promise;const{errors:o,layouts:c,leaf:i}=a,l=[...c,i];o.forEach(m=>m?.().catch(()=>{})),l.forEach(m=>m?.[1]().catch(()=>{}));let u=null;const d=w.url?e!==he(w.url):!1,p=w.route?a.id!==w.route.id:!1,h=bn(w.url,n);let f=!1;{const m=l.map((y,E)=>{const k=w.branch[E],v=!!y?.[0]&&(k?.loader!==y[1]||Je(f,p,d,h,k.server?.uses,r));return v&&(f=!0),v});if(m.some(Boolean)){try{u=await yt(n,m)}catch(y){const E=await G(y,{url:n,params:r,route:{id:e}});return Z.has(s)?Ze({error:E,url:n,params:r,route:a}):ge({status:ie(y),error:E,url:n,route:a})}if(u.type==="redirect")return u}}const g=u?.nodes;let b=!1;const _=l.map(async(m,y)=>{if(!m)return;const E=w.branch[y],k=g?.[y];if((!k||k.type==="skip")&&m[1]===E?.loader&&!Je(b,p,d,h,E.universal?.uses,r))return E;if(b=!0,k?.type==="error")throw k;return $e({loader:m[1],url:n,params:r,route:a,parent:async()=>{const O={};for(let $=0;$<y;$+=1)Object.assign(O,(await _[$])?.data);return O},server_data_node:Be(k===void 0&&m[0]?{type:"skip"}:k??null,m[0]?E?.server:void 0)})});for(const m of _)m.catch(()=>{});const T=[];for(let m=0;m<l.length;m+=1)if(l[m])try{T.push(await _[m])}catch(y){if(y instanceof Le)return{type:"redirect",location:y.location};if(Z.has(s))return Ze({error:await G(y,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let E=ie(y),k;if(g?.includes(y))E=y.status??E,k=y.error;else if(y instanceof pe)k=y.body;else{if(await C.updated.check())return await ct(),await K(n);k=await G(y,{params:r,url:n,route:{id:a.id}})}const v=await An(m,T,o);return v?de({url:n,params:r,branch:T.slice(0,v.idx).concat(v.node),errors:o,status:E,error:k,route:a}):await wt(n,{id:a.id},k,E)}else T.push(void 0);return de({url:n,params:r,branch:T,errors:o,status:200,error:null,route:a,form:t?void 0:null})}async function An(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function ge({status:e,error:t,url:n,route:r}){const a={};let s=null;if(A.server_loads[0]===0)try{const c=await yt(n,[!0]);if(c.type!=="data"||c.nodes[0]&&c.nodes[0].type!=="data")throw 0;s=c.nodes[0]??null}catch{(n.origin!==re||n.pathname!==location.pathname||Ce)&&await K(n)}try{const o=await $e({loader:Re,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Be(s)}),c={node:await ce(),loader:ce,universal:null,server:null,data:null};return de({url:n,params:a,branch:[o,c],status:e,error:t,errors:[],route:null})}catch(o){if(o instanceof Le)return pt(new URL(o.location,location.href),{},0);throw o}}async function En(e){const t=e.href;if(ae.has(t))return ae.get(t);let n;try{const r=(async()=>{let a=await A.hooks.reroute({url:new URL(e),fetch:async(s,o)=>vn(s,o,e).promise})??e;if(typeof a=="string"){const s=new URL(e);A.hash?s.hash=a:s.pathname=a,a=s}return a})();ae.set(t,r),n=await r}catch{ae.delete(t);return}return n}async function me(e,t){if(e&&!_e(e,U,A.hash)){const n=await En(e);if(!n)return;const r=kn(n);for(const a of xe){const s=a.exec(r);if(s)return{id:he(e),invalidating:t,route:a,params:Rt(s),url:e}}}}function kn(e){return kt(A.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(U.length))||"/"}function he(e){return(A.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function mt({url:e,type:t,intent:n,delta:r,event:a,scroll:s}){let o=!1;const c=Fe(w,n,e,t,s??null);r!==void 0&&(c.navigation.delta=r),a!==void 0&&(c.navigation.event=a);const i={...c.navigation,cancel:()=>{o=!0,c.reject(new Error("navigation cancelled"))}};return ne||lt.forEach(l=>l(i)),o?null:c}async function Y({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o={},redirect_count:c=0,nav_token:i={},accept:l=We,block:u=We,event:d}){const p=F;F=i;const h=await me(t,!1),f=e==="enter"?Fe(w,h,t,e):mt({url:t,type:e,delta:n?.delta,intent:h,scroll:n?.scroll,event:d});if(!f){u(),F===i&&(F=p);return}const g=R,b=I;l(),ne=!0,ue&&f.navigation.type!=="enter"&&C.navigating.set(ee.current=f.navigation);let _=h&&await gt(h);if(!_){if(_e(t,U,A.hash))return await K(t,s);_=await wt(t,{id:null},await G(new je(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,s)}if(t=h?.url||t,F!==i)return f.reject(new Error("navigation aborted")),!1;if(_.type==="redirect"){if(c<20){await Y({type:e,url:new URL(_.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:s,state:o,redirect_count:c+1,nav_token:i}),f.fulfil(void 0);return}_=await ge({status:500,error:await G(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else _.props.page.status>=400&&await C.updated.check()&&(await ct(),await K(t,s));if(wn(),Oe(g),dt(b),_.props.page.url.pathname!==t.pathname&&(t.pathname=_.props.page.url.pathname),o=n?n.state:o,!n){const v=s?0:1,O={[q]:R+=v,[Q]:I+=v,[nt]:o};(s?history.replaceState:history.pushState).call(history,O,"",t),s||gn(R,I)}const T=h&&L?.id===h.id?L.fork:null;L=null,_.props.page.state=o;let m;if(ue){const v=(await Promise.all(Array.from(mn,W=>W(f.navigation)))).filter(W=>typeof W=="function");if(v.length>0){let W=function(){v.forEach(we=>{J.delete(we)})};v.push(W),v.forEach(we=>{J.add(we)})}const O=f.navigation.to;w={..._.state,nav:{params:O.params,route:O.route,url:O.url}},_.props.page&&(_.props.page.url=t);const $=T&&await T;$?m=$.commit():(H=null,ut.$set(_.props),H&&Object.assign(_.props.page,H),un(_.props.page),m=At?.()),ft=!0}else await _t(_,Se,!1);const{activeElement:y}=document;await m,await oe(),await oe();let E=null;if(He){const v=n?n.scroll:a?M():null;v?scrollTo(v.x,v.y):(E=t.hash&&document.getElementById(bt(t)))?E.scrollIntoView():scrollTo(0,0)}const k=document.activeElement!==y&&document.activeElement!==document.body;!r&&!k&&Tn(t,!E),He=!0,_.props.page&&(H&&Object.assign(_.props.page,H),Object.assign(S,_.props.page)),ne=!1,e==="popstate"&&ht(I),f.fulfil(void 0),f.navigation.to&&(f.navigation.to.scroll=M()),J.forEach(v=>v(f.navigation)),C.navigating.set(ee.current=null)}async function wt(e,t,n,r,a){return e.origin===re&&e.pathname===location.pathname&&!Ce?await ge({status:r,error:n,url:e,route:t}):await K(e,a)}function Rn(){let e,t={element:void 0,href:void 0},n;x.addEventListener("mousemove",c=>{const i=c.target;clearTimeout(e),e=setTimeout(()=>{s(i,B.hover)},20)});function r(c){c.defaultPrevented||s(c.composedPath()[0],B.tap)}x.addEventListener("mousedown",r),x.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(c=>{for(const i of c)i.isIntersecting&&(Ae(new URL(i.target.href)),a.unobserve(i.target))},{threshold:0});async function s(c,i){const l=at(c,x),u=l===t.element&&l?.href===t.href&&i>=n;if(!l||u)return;const{url:d,external:p,download:h}=Ee(l,U,A.hash);if(p||h)return;const f=se(l),g=d&&he(w.url)===he(d);if(!(f.reload||g))if(i<=f.preload_data){t={element:l,href:l.href},n=B.tap;const b=await me(d,!1);if(!b)return;yn(b)}else i<=f.preload_code&&(t={element:l,href:l.href},n=i,Ae(d))}function o(){a.disconnect();for(const c of x.querySelectorAll("a")){const{url:i,external:l,download:u}=Ee(c,U,A.hash);if(l||u)continue;const d=se(c);d.reload||(d.preload_code===B.viewport&&a.observe(c),d.preload_code===B.eager&&Ae(i))}}J.add(o),o()}function G(e,t){if(e instanceof pe)return e.body;const n=ie(e),r=ln(e);return A.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function Dn(e,t={}){return e=new URL(Ne(e)),e.origin!==re?Promise.reject(new Error("goto: invalid URL")):pt(e,t,0)}function Sn(e){if(typeof e=="function")le.push(e);else{const{href:t}=new URL(e,location.href);le.push(n=>n.href===t)}}function In(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(ze(),!ne){const r=Fe(w,void 0,null,"leave"),a={...r.navigation,cancel:()=>{n=!0,r.reject(new Error("navigation cancelled"))}};lt.forEach(s=>s(a))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&ze()}),navigator.connection?.saveData||Rn(),x.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=at(t.composedPath()[0],x);if(!n)return;const{url:r,external:a,target:s,download:o}=Ee(n,U,A.hash);if(!r)return;if(s==="_parent"||s==="_top"){if(window.parent!==window)return}else if(s&&s!=="_self")return;const c=se(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&!(r.protocol==="https:"||r.protocol==="http:")||o)return;const[l,u]=(A.hash?r.hash.replace(/^#/,""):r.href).split("#"),d=l===ye(location);if(a||c.reload&&(!d||!u)){mt({url:r,type:"link",event:t})?ne=!0:t.preventDefault();return}if(u!==void 0&&d){const[,p]=w.url.href.split("#");if(p===u){if(t.preventDefault(),u===""||u==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const h=n.ownerDocument.getElementById(decodeURIComponent(u));h&&(h.scrollIntoView(),h.focus())}return}if(X=!0,Oe(R),e(r),!c.replace_state)return;X=!1}t.preventDefault(),await new Promise(p=>{requestAnimationFrame(()=>{setTimeout(p,0)}),setTimeout(p,100)}),await Y({type:"link",url:r,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??r.href===location.href,event:t})}),x.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),r=t.submitter;if((r?.formTarget||n.target)==="_blank"||(r?.formMethod||n.method)!=="get")return;const o=new URL(r?.hasAttribute("formaction")&&r?.formAction||n.action);if(_e(o,U,!1))return;const c=t.target,i=se(c);if(i.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(c,r);o.search=new URLSearchParams(l).toString(),Y({type:"form",url:o,keepfocus:i.keepfocus,noscroll:i.noscroll,replace_state:i.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Ue){if(t.state?.[q]){const n=t.state[q];if(F={},n===R)return;const r=D[n],a=t.state[nt]??{},s=new URL(t.state[Ft]??location.href),o=t.state[Q],c=w.url?ye(location)===ye(w.url):!1;if(o===I&&(ft||c)){a!==S.state&&(S.state=a),e(s),D[R]=M(),r&&scrollTo(r.x,r.y),R=n;return}const l=n-R;await Y({type:"popstate",url:s,popped:{state:a,scroll:r,delta:l},accept:()=>{R=n,I=o},block:()=>{history.go(-l)},nav_token:F,event:t})}else if(!X){const n=new URL(location.href);e(n),A.hash&&location.reload()}}}),addEventListener("hashchange",()=>{X&&(X=!1,history.replaceState({...history.state,[q]:++R,[Q]:I},"",location.href))});for(const t of document.querySelectorAll("link"))_n.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(ee.current=null)});function e(t){w.url=S.url=t,C.page.set(Me(S)),C.page.notify()}}async function Un(e,{status:t=200,error:n,node_ids:r,params:a,route:s,server_route:o,data:c,form:i}){Ce=!0;const l=new URL(location.href);let u;({params:a={},route:s={id:null}}=await me(l,!1)||{}),u=xe.find(({id:h})=>h===s.id);let d,p=!0;try{const h=r.map(async(g,b)=>{const _=c[b];return _?.uses&&(_.uses=vt(_.uses)),$e({loader:A.nodes[g],url:l,params:a,route:s,parent:async()=>{const T={};for(let m=0;m<b;m+=1)Object.assign(T,(await h[m]).data);return T},server_data_node:Be(_)})}),f=await Promise.all(h);if(u){const g=u.layouts;for(let b=0;b<g.length;b++)g[b]||f.splice(b,0,void 0)}d=await de({url:l,params:a,branch:f,status:t,error:n,errors:u?.errors,form:i,route:u??null})}catch(h){if(h instanceof Le){await K(new URL(h.location,location.href));return}d=await ge({status:ie(h),error:await G(h,{url:l,params:a,route:s}),url:l,route:s}),e.textContent="",p=!1}d.props.page&&(d.props.page.state={}),await _t(d,e,p)}async function yt(e,t){const n=new URL(e);n.pathname=pn(e.pathname),e.pathname.endsWith("/")&&n.searchParams.append(cn,"1"),n.searchParams.append(sn,t.map(s=>s?"1":"0").join(""));const r=window.fetch,a=await r(n.href,{});if(!a.ok){let s;throw a.headers.get("content-type")?.includes("application/json")?s=await a.json():a.status===404?s="Not Found":a.status===500&&(s="Internal Error"),new pe(a.status,s)}return new Promise(async s=>{const o=new Map,c=a.body.getReader();function i(u){return rn(u,{...A.decoders,Promise:d=>new Promise((p,h)=>{o.set(d,{fulfil:p,reject:h})})})}let l="";for(;;){const{done:u,value:d}=await c.read();if(u&&!l)break;for(l+=!d&&l?`
|
|
2
|
+
`:It.decode(d,{stream:!0});;){const p=l.indexOf(`
|
|
3
|
+
`);if(p===-1)break;const h=JSON.parse(l.slice(0,p));if(l=l.slice(p+1),h.type==="redirect")return s(h);if(h.type==="data")h.nodes?.forEach(f=>{f?.type==="data"&&(f.uses=vt(f.uses),f.data=i(f.data))}),s(h);else if(h.type==="chunk"){const{id:f,data:g,error:b}=h,_=o.get(f);o.delete(f),b?_.reject(i(b)):_.fulfil(i(g))}}}})}function vt(e){return{dependencies:new Set(e?.dependencies??[]),params:new Set(e?.params??[]),parent:!!e?.parent,route:!!e?.route,url:!!e?.url,search_params:new Set(e?.search_params??[])}}let Ue=!1;function Tn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=bt(e);if(r&&document.getElementById(r)){const{x:s,y:o}=M();setTimeout(()=>{const c=history.state;Ue=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(c,"",e),t&&scrollTo(s,o),Ue=!1})}else{const s=document.body,o=s.getAttribute("tabindex");s.tabIndex=-1,s.focus({preventScroll:!0,focusVisible:!1}),o!==null?s.setAttribute("tabindex",o):s.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const s=[];for(let o=0;o<a.rangeCount;o+=1)s.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===s.length){for(let o=0;o<a.rangeCount;o+=1){const c=s[o],i=a.getRangeAt(o);if(c.commonAncestorContainer!==i.commonAncestorContainer||c.startContainer!==i.startContainer||c.endContainer!==i.endContainer||c.startOffset!==i.startOffset||c.endOffset!==i.endOffset)return}a.removeAllRanges()}})}}}function Fe(e,t,n,r,a=null){let s,o;const c=new Promise((l,u)=>{s=l,o=u});return c.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:M()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:a},willUnload:!t,type:r,complete:c},fulfil:s,reject:o}}function Me(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Ln(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function bt(e){let t;if(A.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{Cn as a,Dn as g,Pn as l,S as p,C as s};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.
|
|
2
|
-
import{_}from"../chunks/PPVm8Dsz.js";import{j as V,Q as H,f as Q,R as U,S as W,T as X,m as q,l as j,U as z,n as J,b,V as K,g as u,W as Z,X as $,Y as tt,p as et,E as rt,F as at,v as st,P as ot,A as R,d as nt,w as it,s as O,c as ct,r as _t,t as ut,x as p}from"../chunks/DYuMZGL5.js";import{B as mt,k as dt,m as lt,u as ft,p as T,i as A,a as v,j as x,f as k,g as D,t as ht,s as vt}from"../chunks/Cg3dlX05.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);Q(()=>{var e=t()??null;if(V){var r=W(n),c=r===z,P=e!==null;if(c!==P){var g=X();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},U)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return b(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Z(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const xt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Rt=k("<!> <!>",1);function bt(s,t){et(t,!0);let a=T(t,"components",23,()=>[]),n=T(t,"data_0",3,null),o=T(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(b(r,!0),ot().then(()=>{b(c,document.title||"untitled page",!0)}))});return b(e,!0),i});const P=p(()=>t.constructors[1]);var g=Rt(),f=R(g);{var S=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=x(),N=R(L);I(N,()=>u(P),(Y,B)=>{D(B(Y,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},C=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(S):i(C,-1)})}var F=nt(f,2);{var M=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(F,i=>{u(e)&&i(M)})}v(s,g),it()}const Dt=gt(bt),It=[()=>_(()=>import("../nodes/0.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.D_9EwVmq.js","../chunks/Cg3dlX05.js","../chunks/DYuMZGL5.js","../chunks/DZvnhU_8.js","../assets/ColorPicker.CV4IKef4.css","../chunks/nWG9RHyB.js","../chunks/DJvX78LW.js","../chunks/Bn-6X1BO.js","../chunks/CG453M9q.js","../chunks/CSjf4fBs.js","../assets/0.NV8k8wxG.css","../nodes/1.C4eFlqSB.js","../chunks/DZQMsHM5.js","../assets/1.B_AnTlN1.css","../nodes/2.CdC092Za.js","../chunks/BRqaaL5D.js","../chunks/xs1Xl3_e.js","../chunks/gQJcRhou.js","../chunks/BDcFu3l7.js","../chunks/BLszSzTT.js","../chunks/C_9BZILB.js","../chunks/CRkG7oE4.js","../chunks/pRcLbE0d.js","../chunks/C5VOyQCG.js","../assets/2.DjiwkLqE.css","../nodes/3.Dhf4ZWW0.js","../assets/3.DHxQoulp.css","../nodes/4.BSVqdrrD.js","../chunks/DzuS5Nbr.js","../assets/4.D4EDSN4H.css","../nodes/5.Cfj35gpY.js","../assets/5.C5qz-NeI.css","../nodes/6.B3SEB_li.js","../chunks/8lO1IL7u.js","../chunks/BdtLzPpO.js","../assets/6.DzV0p3l-.css","../nodes/7.DV8cJ1lX.js","../chunks/B9WQy_3X.js","../assets/ChatView.Bnlg-oAF.css","../assets/7.CEbRAOOf.css","../nodes/8.Bs362gyb.js","../assets/8.BhoBXADL.css","../nodes/9.Cf7_3uqT.js","../chunks/PPVm8Dsz.js","../assets/9.v5KA95xm.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_}from"../chunks/PPVm8Dsz.js";import{j as V,Q as H,f as Q,R as U,S as W,T as X,m as q,l as j,U as z,n as J,b,V as K,g as u,W as Z,X as $,Y as tt,p as et,E as rt,F as at,v as st,P as ot,A as R,d as nt,w as it,s as O,c as ct,r as _t,t as ut,x as p}from"../chunks/DYuMZGL5.js";import{B as mt,k as dt,m as lt,u as ft,p as T,i as A,a as v,j as x,f as k,g as D,t as ht,s as vt}from"../chunks/Cg3dlX05.js";function I(s,t,a){var n;V&&(n=J,H());var o=new mt(s);Q(()=>{var e=t()??null;if(V){var r=W(n),c=r===z,P=e!==null;if(c!==P){var g=X();q(g),o.anchor=g,j(!1),o.ensure(e,e&&(f=>a(f,e))),j(!0);return}}o.ensure(e,e&&(f=>a(f,e)))},U)}function gt(s){return class extends Et{constructor(t){super({component:s,...t})}}}class Et{#e;#t;constructor(t){var a=new Map,n=(e,r)=>{var c=tt(r,!1,!1);return a.set(e,c),c};const o=new Proxy({...t.props||{},$$events:{}},{get(e,r){return u(a.get(r)??n(r,Reflect.get(e,r)))},has(e,r){return r===K?!0:(u(a.get(r)??n(r,Reflect.get(e,r))),Reflect.has(e,r))},set(e,r,c){return b(a.get(r)??n(r,c),c),Reflect.set(e,r,c)}});this.#t=(t.hydrate?dt:lt)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError}),(!t?.props?.$$host||t.sync===!1)&&Z(),this.#e=o.$$events;for(const e of Object.keys(this.#t))e==="$set"||e==="$destroy"||e==="$on"||$(this,e,{get(){return this.#t[e]},set(r){this.#t[e]=r},enumerable:!0});this.#t.$set=e=>{Object.assign(o,e)},this.#t.$destroy=()=>{ft(this.#t)}}$set(t){this.#t.$set(t)}$on(t,a){this.#e[t]=this.#e[t]||[];const n=(...o)=>a.call(this,...o);return this.#e[t].push(n),()=>{this.#e[t]=this.#e[t].filter(o=>o!==n)}}$destroy(){this.#t.$destroy()}}const xt={};var yt=k('<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"><!></div>'),Rt=k("<!> <!>",1);function bt(s,t){et(t,!0);let a=T(t,"components",23,()=>[]),n=T(t,"data_0",3,null),o=T(t,"data_1",3,null);rt(()=>t.stores.page.set(t.page)),at(()=>{t.stores,t.page,t.constructors,a(),t.form,n(),o(),t.stores.page.notify()});let e=O(!1),r=O(!1),c=O(null);st(()=>{const i=t.stores.page.subscribe(()=>{u(e)&&(b(r,!0),ot().then(()=>{b(c,document.title||"untitled page",!0)}))});return b(e,!0),i});const P=p(()=>t.constructors[1]);var g=Rt(),f=R(g);{var S=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params},children:(y,Ot)=>{var L=x(),N=R(L);I(N,()=>u(P),(Y,B)=>{D(B(Y,{get data(){return o()},get form(){return t.form},get params(){return t.page.params}}),G=>a()[1]=G,()=>a()?.[1])}),v(y,L)},$$slots:{default:!0}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)},C=i=>{const m=p(()=>t.constructors[0]);var d=x(),E=R(d);I(E,()=>u(m),(l,h)=>{D(h(l,{get data(){return n()},get form(){return t.form},get params(){return t.page.params}}),y=>a()[0]=y,()=>a()?.[0])}),v(i,d)};A(f,i=>{t.constructors[1]?i(S):i(C,-1)})}var F=nt(f,2);{var M=i=>{var m=yt(),d=ct(m);{var E=l=>{var h=ht();ut(()=>vt(h,u(c))),v(l,h)};A(d,l=>{u(r)&&l(E)})}_t(m),v(i,m)};A(F,i=>{u(e)&&i(M)})}v(s,g),it()}const Dt=gt(bt),It=[()=>_(()=>import("../nodes/0.D_9EwVmq.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),()=>_(()=>import("../nodes/1.C4eFlqSB.js"),__vite__mapDeps([11,1,2,12,5,6,3,4,13]),import.meta.url),()=>_(()=>import("../nodes/2.CdC092Za.js"),__vite__mapDeps([14,1,2,3,4,12,5,7,15,8,16,17,18,19,20,21,22,23,24]),import.meta.url),()=>_(()=>import("../nodes/3.Dhf4ZWW0.js"),__vite__mapDeps([25,1,2,12,5,3,4,17,18,19,20,21,22,26]),import.meta.url),()=>_(()=>import("../nodes/4.BSVqdrrD.js"),__vite__mapDeps([27,1,2,3,4,12,28,17,18,22,29]),import.meta.url),()=>_(()=>import("../nodes/5.Cfj35gpY.js"),__vite__mapDeps([30,1,2,3,4,21,17,18,22,31]),import.meta.url),()=>_(()=>import("../nodes/6.B3SEB_li.js"),__vite__mapDeps([32,1,2,3,4,12,5,33,28,7,15,16,17,18,34,19,23,35]),import.meta.url),()=>_(()=>import("../nodes/7.DV8cJ1lX.js"),__vite__mapDeps([36,1,2,12,3,4,33,5,16,18,34,37,20,38,39]),import.meta.url),()=>_(()=>import("../nodes/8.Bs362gyb.js"),__vite__mapDeps([40,1,2,3,4,12,5,15,8,9,16,17,18,34,23,41]),import.meta.url),()=>_(()=>import("../nodes/9.Cf7_3uqT.js"),__vite__mapDeps([42,43,1,2,12,3,4,5,6,28,18,34,37,20,38,23,44]),import.meta.url)],Lt=[0],Vt={"/":[-3],"/activity":[-4],"/config":[-5],"/neurolink":[-6],"/project":[6],"/session/[id]":[7],"/terminals":[8],"/terminals/[id]":[9]},w={handleError:(({error:s})=>{console.error(s)}),reroute:(()=>{}),transport:{}},Pt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.decode])),jt=Object.fromEntries(Object.entries(w.transport).map(([s,t])=>[s,t.encode])),kt=!1,wt=(s,t)=>Pt[s](t);export{wt as decode,Pt as decoders,Vt as dictionary,jt as encoders,kt as hash,w as hooks,xt as matchers,It as nodes,Dt as root,Lt as server_loads};
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{l as o,a as r}from"../chunks/nWG9RHyB.js";export{o as load_css,r as start};
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as A,c as F,f as K,e as M}from"../chunks/Cg3dlX05.js";import{p as U,F as V,v as z,t as G,w as H,b as m,c as a,d as i,g as l,r as s,B as w,s as J,x as _}from"../chunks/DYuMZGL5.js";import{P as Q,B as X,a as Y,c as h,s as y}from"../chunks/DZvnhU_8.js";import{g as Z}from"../chunks/
|
|
1
|
+
import{a as A,c as F,f as K,e as M}from"../chunks/Cg3dlX05.js";import{p as U,F as V,v as z,t as G,w as H,b as m,c as a,d as i,g as l,r as s,B as w,s as J,x as _}from"../chunks/DYuMZGL5.js";import{P as Q,B as X,a as Y,c as h,s as y}from"../chunks/DZvnhU_8.js";import{g as Z}from"../chunks/nWG9RHyB.js";import{p as tt}from"../chunks/DJvX78LW.js";import{B as et}from"../chunks/Bn-6X1BO.js";import{S as at}from"../chunks/CG453M9q.js";import{T as st}from"../chunks/CSjf4fBs.js";const rt=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
|
2
2
|
<rect x="3" y="3" width="7" height="7"/>
|
|
3
3
|
<rect x="14" y="3" width="7" height="7"/>
|
|
4
4
|
<rect x="3" y="14" width="7" height="7"/>
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as b,a as c,c as J,f as K,s as k,e as L,t as d}from"../chunks/Cg3dlX05.js";import{D as M,E as N,F as w,G as P,I as y,J as q,g as G,K as z,L as C,M as O,p as Q,t as j,w as R,c as f,d as g,N as U,$ as V,r as v}from"../chunks/DYuMZGL5.js";import{h as W}from"../chunks/DZQMsHM5.js";import{g as X}from"../chunks/
|
|
1
|
+
import{i as b,a as c,c as J,f as K,s as k,e as L,t as d}from"../chunks/Cg3dlX05.js";import{D as M,E as N,F as w,G as P,I as y,J as q,g as G,K as z,L as C,M as O,p as Q,t as j,w as R,c as f,d as g,N as U,$ as V,r as v}from"../chunks/DYuMZGL5.js";import{h as W}from"../chunks/DZQMsHM5.js";import{g as X}from"../chunks/nWG9RHyB.js";import{p as Y}from"../chunks/DJvX78LW.js";import{B as $}from"../chunks/DZvnhU_8.js";function Z(n=!1){const r=M,s=r.l.u;if(!s)return;let p=()=>z(r.s);if(n){let i=0,a={};const _=C(()=>{let l=!1;const m=r.s;for(const o in m)m[o]!==a[o]&&(a[o]=m[o],l=!0);return l&&i++,i});p=()=>G(_)}s.b.length&&N(()=>{B(r,p),y(s.b)}),w(()=>{const i=P(()=>s.m.map(q));return()=>{for(const a of i)typeof a=="function"&&a()}}),s.a.length&&w(()=>{B(r,p),y(s.a)})}function B(n,r){if(n.l.s)for(const s of n.l.s)G(s);r()}O();var ee=K('<main class="error-page svelte-1j96wlh"><div class="error-content svelte-1j96wlh"><div class="error-code svelte-1j96wlh"> </div> <h1 class="error-title svelte-1j96wlh"><!></h1> <p class="error-message svelte-1j96wlh"><!></p> <div class="error-actions svelte-1j96wlh"><!> <!></div></div></main>');function ie(n,r){Q(r,!1);const s=()=>L(Y,"$page",p),[p,i]=J();Z();var a=ee();W("1j96wlh",e=>{U(()=>{V.title="Error - Shooter"})});var _=f(a),l=f(_),m=f(l,!0);v(l);var o=g(l,2),E=f(o);{var S=e=>{var t=d("Page not found");c(e,t)},T=e=>{var t=d("Something went wrong");c(e,t)};b(E,e=>{s().status===404?e(S):e(T,-1)})}v(o);var u=g(o,2),A=f(u);{var D=e=>{var t=d();j(()=>k(t,s().error.message)),c(e,t)},F=e=>{var t=d("The page you're looking for doesn't exist or has been moved.");c(e,t)},H=e=>{var t=d("An unexpected error occurred. Try refreshing or going back.");c(e,t)};b(A,e=>{s().error?.message?e(D):s().status===404?e(F,1):e(H,-1)})}v(u);var h=g(u,2),x=f(h);$(x,{text:"Go Home",classes:"btn-primary",onclick:()=>{X("/")}});var I=g(x,2);$(I,{text:"Go Back",classes:"btn-secondary",onclick:()=>{history.back()}}),v(h),v(_),v(a),j(()=>k(m,s().status)),c(n,a),R(),i()}export{ie as component};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as vt,i as D,s as C,b as Fe,a as h,f as p}from"../chunks/Cg3dlX05.js";import{p as ze,c,r as l,d as v,g as r,t as B,w as je,x as M,A as me,s as q,q as et,b as _,v as ft,y as gt,N as mt,$ as ht,B as Ge}from"../chunks/DYuMZGL5.js";import{P as tt,k as pt,d as Re,s as _t,g as St,e as de,j as Le,B as Te,c as De,b as yt,i as Ue}from"../chunks/DZvnhU_8.js";import{h as bt}from"../chunks/DZQMsHM5.js";import{g as Ve}from"../chunks/
|
|
1
|
+
import{d as vt,i as D,s as C,b as Fe,a as h,f as p}from"../chunks/Cg3dlX05.js";import{p as ze,c,r as l,d as v,g as r,t as B,w as je,x as M,A as me,s as q,q as et,b as _,v as ft,y as gt,N as mt,$ as ht,B as Ge}from"../chunks/DYuMZGL5.js";import{P as tt,k as pt,d as Re,s as _t,g as St,e as de,j as Le,B as Te,c as De,b as yt,i as Ue}from"../chunks/DZvnhU_8.js";import{h as bt}from"../chunks/DZQMsHM5.js";import{g as Ve}from"../chunks/nWG9RHyB.js";import{B as wt}from"../chunks/Bn-6X1BO.js";import{R as Ct,S as We}from"../chunks/BRqaaL5D.js";import{S as xt}from"../chunks/CG453M9q.js";import{c as kt,s as At,g as Et}from"../chunks/xs1Xl3_e.js";import{i as Nt}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as It}from"../chunks/BLszSzTT.js";import{S as Pt}from"../chunks/C_9BZILB.js";import{i as Tt,N as Dt}from"../chunks/CRkG7oE4.js";import{d as Ot}from"../chunks/pRcLbE0d.js";import{E as He}from"../chunks/C5VOyQCG.js";var Rt=p('<p class="goal-text svelte-1qbe2oo"> </p>'),zt=p('<span class="summarizing svelte-1qbe2oo">Analyzing…</span>'),jt=p('<span class="summary-text svelte-1qbe2oo"> </span>'),Lt=p('<span class="summary-fallback svelte-1qbe2oo"> </span>'),Mt=p('<span class="stat stat-error svelte-1qbe2oo"> </span>'),qt=p('<div class="card svelte-1qbe2oo" role="button" tabindex="0"><div class="card-header svelte-1qbe2oo"><span class="project-name svelte-1qbe2oo"> </span> <!></div> <!> <div class="summary-row svelte-1qbe2oo"><!></div> <div class="stats-row svelte-1qbe2oo"><span class="stat svelte-1qbe2oo"><span></span> </span> <span class="stat svelte-1qbe2oo"> </span> <!> <span class="stat stat-path svelte-1qbe2oo"> </span></div></div>');function Je(t,e){ze(e,!0);function s(d){const u=Math.floor(d/1e3);if(u<60)return`${u}s`;const i=Math.floor(u/60);return i<60?`${i}m ${u%60}s`:`${Math.floor(i/60)}h ${i%60}m`}function n(d){const u=d.replace(/\/$/,"").split("/");return u.length<=2?d:u.slice(-2).join("/")}const a=M(()=>e.card.status==="running"&&e.card.isActive?"var(--ds-green-700)":e.card.status==="running"?"var(--ds-blue-700)":e.card.status==="idle"?"var(--ds-amber-700)":e.card.status==="error"?"var(--ds-red-700)":"var(--ds-gray-600)"),o=M(()=>e.card.status==="running"&&e.card.isActive||e.card.status==="running"?"● Running":e.card.status==="idle"?"◎ Idle":e.card.status==="exited"?"○ Done":e.card.status==="error"?"✕ Error":e.card.status),S=M(()=>e.card.status==="running"&&e.card.isActive?"status-pill status-pill--running-active":e.card.status==="running"?"status-pill status-pill--running":e.card.status==="idle"?"status-pill status-pill--idle":e.card.status==="exited"?"status-pill status-pill--exited":e.card.status==="error"?"status-pill status-pill--error":"status-pill"),y=M(()=>e.card.toolCallCount===0?"Waiting for activity…":e.card.toolCallCount===1?"1 tool call so far":`${e.card.toolCallCount} tool calls so far`);function E(d){(d.key==="Enter"||d.key===" ")&&(d.key===" "&&d.preventDefault(),e.onclick?.())}var b=qt(),g=c(b),f=c(g),x=c(f,!0);l(f);var k=v(f,2);tt(k,{get text(){return r(o)},get classes(){return r(S)}}),l(g);var T=v(g,2);{var Se=d=>{var u=Rt(),i=c(u,!0);l(u),B(()=>C(i,e.card.goal)),h(d,u)};D(T,d=>{e.card.goal&&d(Se)})}var $=v(T,2),ye=c($);{var be=d=>{var u=zt();h(d,u)},ee=d=>{var u=jt(),i=c(u,!0);l(u),B(()=>C(i,e.card.summary)),h(d,u)},te=d=>{var u=Lt(),i=c(u,!0);l(u),B(()=>C(i,r(y))),h(d,u)};D(ye,d=>{e.card.isSummarizing?d(be):e.card.summary?d(ee,1):e.card.status==="running"&&d(te,2)})}l($);var W=v($,2),F=c(W),ae=c(F),we=v(ae);l(F);var se=v(F,2),Ce=c(se);l(se);var re=v(se,2);{var xe=d=>{var u=Mt(),i=c(u);l(u),B(()=>C(i,`${e.card.errorCount??""} errors`)),h(d,u)};D(re,d=>{e.card.errorCount>0&&d(xe)})}var oe=v(re,2),ke=c(oe,!0);l(oe),l(W),l(b),B((d,u)=>{pt(b,`--status-color: ${r(a)??""}`),Re(b,"aria-label",`Open ${e.card.projectName??""} session`),C(x,e.card.projectName),_t(ae,1,St(e.card.status==="running"&&e.card.isActive?"status-dot-active":"status-dot-static"),"svelte-1qbe2oo"),C(we,` ${d??""}`),C(Ce,`${e.card.toolCallCount??""} tools`),Re(oe,"title",e.card.cwd),C(ke,u)},[()=>s(e.card.duration),()=>n(e.card.cwd)]),Fe("click",b,function(...d){e.onclick?.apply(this,d)}),Fe("keydown",b,E),h(t,b),je()}vt(["click","keydown"]);var Bt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Active</h3> <!></div>'),Kt=p('<div class="section svelte-14sxgtb"><h3 class="section-label svelte-14sxgtb">Recent</h3> <!></div>'),Yt=p("<!> <!>",1);function Ft(t,e){ze(e,!0);const s=M(()=>e.cards.filter(g=>g.status==="running")),n=M(()=>e.cards.filter(g=>g.status!=="running"));function a(g){e.onCardClick?.(g)}var o=Yt(),S=me(o);{var y=g=>{var f=Bt(),x=v(c(f),2);de(x,17,()=>r(s),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(S,g=>{r(s).length>0&&g(y)})}var E=v(S,2);{var b=g=>{var f=Kt(),x=v(c(f),2);de(x,17,()=>r(n),k=>k.terminalId,(k,T)=>{Je(k,{get card(){return r(T)},onclick:()=>{a(r(T))}})}),l(f),h(g,f)};D(E,g=>{r(n).length>0&&g(b)})}h(t,o),je()}const Gt=new Set(["agent-question","terminal-exited","tool-failed"]);let fe=null,ge=null,he=null;class Ut{async summarize(e){const s=this.chooseTone(e),n=s==="conversational"?this.buildConversationalPrompt(e):this.buildStatusReportPrompt(e);try{const a=await Vt();if(!a)return console.log("[SessionSummarizer] NeuroLink not available, using fallback."),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s};const o=await a.generate({input:{text:n},...he?{model:he.model,provider:he.provider}:{}}),S=Ht(o.content??"").trim()||this.fallbackText(e);return{generatedAt:new Date().toISOString(),text:S,tone:s}}catch(a){return console.warn("[SessionSummarizer] summarize failed:",a instanceof Error?a.message:String(a)),{generatedAt:new Date().toISOString(),text:this.fallbackText(e),tone:s}}}buildConversationalPrompt(e){const s=e.goal??"unknown",n=e.recentEvents.map(a=>{const o=[a.type];return a.tool&&o.push(`tool=${a.tool}`),a.error&&o.push(`error=${a.error}`),a.command&&o.push(`command=${a.command}`),o.join(" ")}).join(", ");return`You are monitoring a coding session. Based on the context below, write ONE sentence (max 100 chars) describing what's happening in plain English. Be specific about what Claude did or is doing.
|
|
2
2
|
|
|
3
3
|
Goal: ${s}
|
|
4
4
|
Recent events: ${n}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/Cg3dlX05.js";import{s as b,q as ke,b as _,g as n,p as Ee,v as Pe,y as Ge,c as u,d as p,r as d,t as E,B as He,w as Ne,x as N,N as Ve,$ as We}from"../chunks/DYuMZGL5.js";import{h as Je}from"../chunks/DZQMsHM5.js";import{g as ce}from"../chunks/
|
|
1
|
+
import{i as P,s as h,a as g,t as Be,f as A}from"../chunks/Cg3dlX05.js";import{s as b,q as ke,b as _,g as n,p as Ee,v as Pe,y as Ge,c as u,d as p,r as d,t as E,B as He,w as Ne,x as N,N as Ve,$ as We}from"../chunks/DYuMZGL5.js";import{h as Je}from"../chunks/DZQMsHM5.js";import{g as ce}from"../chunks/nWG9RHyB.js";import{j as ue,e as le,B as qe,s as Ae,b as Xe}from"../chunks/DZvnhU_8.js";import{g as je,i as Ze}from"../chunks/gQJcRhou.js";import"../chunks/BDcFu3l7.js";import{f as we}from"../chunks/BLszSzTT.js";import{S as Qe}from"../chunks/C_9BZILB.js";import{i as et,N as tt}from"../chunks/CRkG7oE4.js";import{d as ot}from"../chunks/pRcLbE0d.js";const rt=6e4,Se=3;let Q=null,Y=null,L=0,$e=0;async function st(e,t){if(e.length===0)return{error:null,text:""};let i;try{i=await it()}catch{const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"AI SDK failed to load",text:`${e.length} events: ${l.join(", ")}`}}if(!i){const o=e.map(x=>w(x.data.tool)||x.type),l=Array.from(new Set(o));return{error:"No AI provider configured",text:`${e.length} events: ${l.join(", ")}`}}const s=at(e),a=`You are a coding activity summarizer. Given these events from active Claude Code sessions, write a 1-2 sentence summary (max 150 chars) of what's happening. Be specific — mention tool names, file names, and what's being accomplished.
|
|
2
2
|
|
|
3
3
|
${t?`Project: ${t}
|
|
4
4
|
`:""}Events:
|
|
Binary file
|
|
Binary file
|