vibe64 0.1.34 → 0.1.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/run.js +1919 -1660
- package/bin/server.js +158 -111
- package/bin/upgrade-state.js +5783 -5605
- package/dist/assets/GithubBrowserTabs-BzJF4k9Y.js +1 -0
- package/dist/assets/{StudioErrorNotice-sQfmeR-z.js → StudioErrorNotice-BdllGqRy.js} +1 -1
- package/dist/assets/{Vibe64AsyncModuleState-Dx7YKRPp.js → Vibe64AsyncModuleState-Bi0TqlIu.js} +1 -1
- package/dist/assets/Vibe64AuthSettingsButton-BuvmwGiT.js +5 -0
- package/dist/assets/Vibe64AuthSettingsButton-M44SSmZ9.css +1 -0
- package/dist/assets/{Vibe64DashboardBackButton-yE6cyYg2.js → Vibe64DashboardBackButton-Ccd4hpD6.js} +1 -1
- package/dist/assets/Vibe64DashboardShell-D67m4aWz.js +1 -0
- package/dist/assets/{Vibe64DashboardShell-MBkUHjs-.css → Vibe64DashboardShell-De2mbdpI.css} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-BONJdxBS.js → Vibe64DatabaseWorkspace-D3uK1gDm.js} +3 -3
- package/dist/assets/{Vibe64DatabaseWorkspace-CR4pzzcf.css → Vibe64DatabaseWorkspace-DPDMxhAW.css} +1 -1
- package/dist/assets/Vibe64OutputControls-BfESn5kJ.js +8 -0
- package/dist/assets/Vibe64OutputControls-D2CCECo5.css +1 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-ByQlZbyO.js → Vibe64RepositoryWorkspace-0jAxvdA8.js} +2 -2
- package/dist/assets/{Vibe64RepositoryWorkspace-CVHcT93M.css → Vibe64RepositoryWorkspace-Agyt4O-V.css} +1 -1
- package/dist/assets/Vibe64SessionFiles-B3ONZrBL.css +1 -0
- package/dist/assets/Vibe64SessionFiles-BCOJ4QmR.js +41 -0
- package/dist/assets/{Vibe64TemporaryAiFixAction-BGlcrq4d.js → Vibe64TemporaryAiFixAction-DM2jpPbQ.js} +1 -1
- package/dist/assets/{Vibe64UiStoryboardView-Brlwdvqi.js → Vibe64UiStoryboardView-DP5af46a.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-zwlWlcZD.js → Vibe64UnavailableSessions-C7XwH1SS.js} +1 -1
- package/dist/assets/{_sessionId_-CvOkQbVy.js → _sessionId_-B1Ymr7c_.js} +1 -1
- package/dist/assets/{_sessionTool_-Dwod5ns9.js → _sessionTool_-DVYdREoI.js} +1 -1
- package/dist/assets/_slug_-CQseA9pt.css +1 -0
- package/dist/assets/_slug_-CYO2vjCd.js +24 -0
- package/dist/assets/{access-BVu5XYm2.js → access-Cb7dkN53.js} +1 -1
- package/dist/assets/app-BvgY7oVf.js +1 -0
- package/dist/assets/app-CZu7oxUO.css +1 -0
- package/dist/assets/{assistantRouting-CwbwfkwB.js → assistantRouting-B38ujQ7x.js} +1 -1
- package/dist/assets/{changes-olY8cnFK.js → changes-lsBcuikn.js} +1 -1
- package/dist/assets/client-CRI5CNKl.js +2 -0
- package/dist/assets/client-TGaWwOhc.css +1 -0
- package/dist/assets/conversation-CDEt9jBx.js +17 -0
- package/dist/assets/conversation-vxJGwmtW.css +1 -0
- package/dist/assets/{dashboard-BnXD-H4R.js → dashboard-D8HOAw46.js} +1 -1
- package/dist/assets/definitions-DLTX17nI.js +1 -0
- package/dist/assets/{env-DJhnLOH7.css → env-BzRtyO0w.css} +1 -1
- package/dist/assets/env-DJezQixO.js +1 -0
- package/dist/assets/health-BJvooRnJ.css +1 -0
- package/dist/assets/health-CtKdN_Nf.js +1 -0
- package/dist/assets/{history-BxlpB-YH.js → history-BdZFOtz4.js} +1 -1
- package/dist/assets/{incoming-BOxRVlOM.js → incoming-VsQNnL9m.js} +1 -1
- package/dist/assets/index-C-osVUKw.css +1 -0
- package/dist/assets/index-C4K3ntms.js +138 -0
- package/dist/assets/{integrations-BFltGDVI.js → integrations-CMQ9EDmt.js} +2 -2
- package/dist/assets/issues-DHpY5hSr.js +1 -0
- package/dist/assets/learning-DXlMuwzh.js +1 -0
- package/dist/assets/mdi-yXT-CQ6u.js +1 -0
- package/dist/assets/placement-NpX2s7u8.js +1 -0
- package/dist/assets/pull-requests-BcKNEUYH.js +1 -0
- package/dist/assets/{repository-JWLVST3D.js → repository-ClEgntHW.js} +1 -1
- package/dist/assets/roboto-latin-wght-normal-ccAYIvAh.woff2 +0 -0
- package/dist/assets/{session-C5Nj8Dlq.js → session-BlD46q-d.js} +1 -1
- package/dist/assets/settings-BwukeIKe.js +1 -0
- package/dist/assets/shared-BM2SV6fi.js +2 -0
- package/dist/assets/studioGateApi-DcCqiD9V.js +1 -0
- package/dist/assets/studioUrls-DmMMIScP.js +1 -0
- package/dist/assets/useArchivedVibe64Sessions-D5zUA-BC.js +1 -0
- package/dist/assets/useCommand-Bqxb-naz.js +1 -0
- package/dist/assets/useEndpointResource-DWoQ2keu.js +1 -0
- package/dist/assets/useRealtimeEvent-Bwapstla.js +1 -0
- package/dist/assets/{useUiFeedback-0FqKuZRP.js → useUiFeedback-BPBF_0bp.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-Dy6YTPQn.js +1 -0
- package/dist/assets/useVibe64DatabaseTools-d6L09ugW.js +1 -0
- package/dist/assets/useVibe64Learning-cNKTv64W.js +1 -0
- package/dist/assets/useVibe64ProjectScope-Bp1ImZlz.js +1 -0
- package/dist/assets/useVibe64SessionData-C_jqncih.js +1 -0
- package/dist/assets/useVibe64SessionSelection-uCEIWd3b.js +1 -0
- package/dist/assets/useVibe64SystemGraph-B4RmsC9Y.js +1 -0
- package/dist/assets/{useVibe64Terminal-BPnN25WH.js → useVibe64Terminal-BbghGR4x.js} +1 -1
- package/dist/assets/vibe64AssistantHost-BL1bnKm8.js +1 -0
- package/dist/assets/{vibe64SessionFocus-kqPOPaOH.js → vibe64SessionFocus-DSJKVuRN.js} +1 -1
- package/dist/assets/{vibe64SessionInfo-BHxtTrLX.js → vibe64SessionInfo-B_r1OMN0.js} +1 -1
- package/dist/assets/{vibe64SessionPanelModel-BMf64fv7.js → vibe64SessionPanelModel-DDorOuiL.js} +1 -1
- package/dist/assets/{vibe64SessionToolDefinitions-NfLd1HZI.js → vibe64SessionToolDefinitions-BualCK_5.js} +1 -1
- package/dist/index.html +21 -20
- package/docs/colleague-usage/account-profile-and-appearance.md +8 -2
- package/docs/colleague-usage/ai-accounts-and-routing.md +123 -15
- package/docs/colleague-usage/ai-onboarding.md +230 -0
- package/docs/colleague-usage/coding-agent-goal-pause.md +5 -5
- package/docs/colleague-usage/coding-agents.md +17 -0
- package/docs/colleague-usage/colleague-watches.md +4 -23
- package/docs/colleague-usage/colleague.md +10 -2
- package/docs/colleague-usage/connected-projects.md +2 -2
- package/docs/colleague-usage/conversation-context.md +2 -0
- package/docs/colleague-usage/dashboard-navigation.md +19 -27
- package/docs/colleague-usage/database.md +6 -11
- package/docs/colleague-usage/development-copies.md +2 -1
- package/docs/colleague-usage/development-env.md +6 -0
- package/docs/colleague-usage/github-work.md +9 -0
- package/docs/colleague-usage/health-checks.md +11 -5
- package/docs/colleague-usage/integrations.md +3 -1
- package/docs/colleague-usage/learning-code-questions.md +23 -51
- package/docs/colleague-usage/learning-course-catalogue.md +8 -6
- package/docs/colleague-usage/learning-environment.md +345 -0
- package/docs/colleague-usage/learning-history.md +70 -101
- package/docs/colleague-usage/learning-mode-ui.md +122 -214
- package/docs/colleague-usage/learning-practice-projects.md +168 -78
- package/docs/colleague-usage/learning-teacher-guide.md +48 -26
- package/docs/colleague-usage/learning-with-colleague.md +171 -216
- package/docs/colleague-usage/lesson-authoring.md +32 -24
- package/docs/colleague-usage/managed-app-access.md +7 -0
- package/docs/colleague-usage/message-delivery-recovery.md +7 -6
- package/docs/colleague-usage/preview-browser-checks.md +9 -1
- package/docs/colleague-usage/preview-starting-application.md +0 -1
- package/docs/colleague-usage/preview.md +9 -1
- package/docs/colleague-usage/project-messages.md +2 -2
- package/docs/colleague-usage/project-setup.md +9 -2
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +61 -0
- package/docs/colleague-usage/sessions.md +25 -33
- package/docs/colleague-usage/teaching-content.md +11 -40
- package/docs/colleague-usage/temporary-chats.md +23 -2
- package/docs/colleague-usage/voice-chat.md +5 -10
- package/docs/colleague-usage/voice-face-and-speaking-voice.md +6 -8
- package/docs/colleague-usage/voice-recovery.md +3 -2
- package/docs/templates/learn-topic/README.md +6 -6
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.json +28 -7
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/notes.md +19 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/check-understanding.md +3 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/explain-idea.md +3 -0
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/steps/try-it.md +3 -0
- package/docs/templates/learn-topic/training/outline.md +1 -1
- package/docs/training-content.md +179 -65
- package/node_modules/@jskit-ai/assistant-core/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/package.json +1 -1
- package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/PATTERN.md +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/patterns/assistant-surface/example/integrations.json +3 -2
- package/node_modules/@jskit-ai/assistant-voice/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/package.json +1 -1
- package/node_modules/@jskit-ai/connectors-catalog/patterns/ai-connections/PATTERN.md +4 -3
- package/node_modules/@jskit-ai/connectors-catalog/src/shared/ai-models.json +0 -1
- package/node_modules/@local/vibe64-accounts/package.json +1 -0
- package/node_modules/@local/vibe64-colleague/package.json +2 -1
- package/node_modules/@local/vibe64-core/package.json +3 -0
- package/node_modules/@local/vibe64-execution/package.json +1 -0
- package/node_modules/@local/vibe64-execution/src/server/engines/stdioBridge.js +9 -9
- package/node_modules/@local/vibe64-genesis/README.md +10 -37
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +790 -779
- package/node_modules/@local/vibe64-genesis/package.json +1 -0
- package/node_modules/@local/vibe64-genesis/src/server/agentSpecs.js +255 -0
- package/node_modules/@local/vibe64-genesis/src/server/index.js +473 -450
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +148 -148
- package/node_modules/@local/vibe64-project/package.json +2 -1
- package/node_modules/@local/vibe64-runtime/package.json +1 -2
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +526 -512
- package/node_modules/@local/vibe64-runtime/src/shared/assistantRoutingScores.json +0 -1
- package/node_modules/@local/vibe64-source-editor/package.json +1 -0
- package/node_modules/@local/vibe64-terminals/package.json +1 -0
- package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +129 -131
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1508 -1456
- package/node_modules/@local/vibe64-training/package.json +13 -27
- package/package.json +7 -7
- package/server.bundle.mjs +40946 -41456
- package/dist/assets/GithubBrowserTabs-DO5PHon-.js +0 -1
- package/dist/assets/GithubMarkdown-BQ6MfCDJ.js +0 -3
- package/dist/assets/GithubMarkdown-U7-j-qNI.css +0 -1
- package/dist/assets/Vibe64DashboardShell-CuCVMhOc.js +0 -1
- package/dist/assets/Vibe64OutputControls-DAAmA09l.js +0 -8
- package/dist/assets/Vibe64OutputControls-DPBsyDZM.css +0 -1
- package/dist/assets/Vibe64SessionFiles-B0u9HKdF.js +0 -107
- package/dist/assets/Vibe64SessionFiles-NjOMVwPR.css +0 -1
- package/dist/assets/_slug_-B31c15cc.css +0 -1
- package/dist/assets/_slug_-Dy35qLo1.js +0 -1
- package/dist/assets/app-DRXCcv05.css +0 -1
- package/dist/assets/app-zt7HwQKT.js +0 -1
- package/dist/assets/client-BrV4QPwG.js +0 -2
- package/dist/assets/client-C1bwIlu6.css +0 -1
- package/dist/assets/definitions-DaOPIkyB.js +0 -1
- package/dist/assets/env-DN0vW4EI.js +0 -1
- package/dist/assets/health-7oIQODer.css +0 -1
- package/dist/assets/health-Z6m96GDr.js +0 -1
- package/dist/assets/index-BUq-MczL.js +0 -86
- package/dist/assets/index-DtmBqE3h.css +0 -1
- package/dist/assets/issues-1iS5zoed.js +0 -1
- package/dist/assets/layout-BkWVNT37.js +0 -1
- package/dist/assets/mdi-C54lQ0i_.js +0 -1
- package/dist/assets/placement-DLsU3pCW.js +0 -1
- package/dist/assets/pull-requests-BJOwNL4k.js +0 -1
- package/dist/assets/settings-c273Ikrm.js +0 -1
- package/dist/assets/shared-YZb7ocaK.js +0 -2
- package/dist/assets/studioGateApi-DhA9IJGZ.js +0 -1
- package/dist/assets/studioUrls-Dj8rXeXO.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-CVZx2Rtm.js +0 -1
- package/dist/assets/useCommand-DWuxfAV0.js +0 -1
- package/dist/assets/useEndpointResource-MWVNfmMa.js +0 -1
- package/dist/assets/useVibe64ConversationLog-8cKh1eDm.js +0 -1
- package/dist/assets/useVibe64DatabaseTools-BcRG1s3i.js +0 -1
- package/dist/assets/useVibe64LearningMode-Bl0dGdCh.js +0 -28
- package/dist/assets/useVibe64LearningMode-C3PcXdVg.css +0 -1
- package/dist/assets/useVibe64ProjectScope-DOEVkBqX.js +0 -1
- package/dist/assets/useVibe64SessionData-DFTyLzci.js +0 -1
- package/dist/assets/useVibe64SessionSelection-j9lsllx4.js +0 -1
- package/dist/assets/useVibe64SystemGraph-tNkIwSBQ.js +0 -1
- package/dist/assets/vibe64AssistantHost-DdE_-lZF.js +0 -1
- package/dist/assets/vibe64LessonDashboard-DlKYjisq.js +0 -1
- package/dist/assets/vibe64ProjectScope.local-DqT6e5un.js +0 -1
- package/docs/colleague-usage/learning-chat-retention.md +0 -74
- package/docs/colleague-usage/learning-diagrams-and-voice.md +0 -97
- package/docs/colleague-usage/learning-lesson-watch.md +0 -95
- package/docs/colleague-usage/learning-native-session.md +0 -206
- package/docs/colleague-usage/learning-practical-exercises.md +0 -71
- package/docs/colleague-usage/learning-practical-gestures.md +0 -48
- package/docs/colleague-usage/learning-session-creation.md +0 -95
- package/docs/colleague-usage/lesson-practical-assessment.md +0 -54
- package/docs/colleague-usage/preview-lesson-presentation.md +0 -56
- package/docs/templates/learn-topic/training/lessons/TOPIC-01/lesson.md +0 -44
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.vibe64-colleague-launcher-target[data-v-8e7b0e92]{flex:none;min-width:48px;height:48px;display:flex}body.studio-home-shell-active{overflow:hidden}body.studio-home-shell-active .v-application,body.studio-home-shell-active .v-application__wrap{height:100dvh;min-height:100dvh;overflow:hidden}body.studio-home-shell-active .v-main{min-height:0;overflow:hidden}body.studio-home-shell-active .shell-layout__content{box-sizing:border-box;height:calc(100dvh - var(--v-layout-top,0px) - var(--v-layout-bottom,0px));flex-direction:column;min-height:0;padding:.35rem 0 0;display:flex;overflow:hidden}body.studio-home-shell-active .shell-error-host__banners{width:min(30rem,100vw);left:auto;right:0}body.studio-home-shell-active .shell-error-host__banner-stack{width:100%}.studio-app-shell-layout__content[data-v-a72a9c73]{padding:.75rem .75rem 0}.studio-app-shell-layout--fill-viewport[data-v-a72a9c73]{height:100dvh;overflow:hidden}.studio-app-shell-layout__content--fill-viewport[data-v-a72a9c73]{box-sizing:border-box;height:calc(100dvh - var(--v-layout-top,0px) - var(--v-layout-bottom,0px));flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.shell-layout__app-bar[data-v-a72a9c73]{transition:border-color var(--v64-duration-medium) var(--v64-ease-standard);border-bottom-color:var(--v64-outline-variant)!important}.shell-layout__app-bar[data-v-a72a9c73]:before,.shell-layout__app-bar[data-v-a72a9c73]:after{content:"";opacity:0;pointer-events:none;transition:opacity var(--v64-duration-long) var(--v64-ease-standard);position:absolute}.shell-layout__app-bar[data-v-a72a9c73]:before{background:var(--v64-learning-app-bar);inset:0}.shell-layout__app-bar[data-v-a72a9c73]:after{background:linear-gradient(90deg, var(--v64-learning-strong), var(--v64-learning) 45%, transparent);height:2px;bottom:0;left:0;right:0}.shell-layout__app-bar[data-v-a72a9c73] .v-toolbar__content{z-index:1;position:relative}.shell-layout__app-bar.studio-app-shell-layout--learning[data-v-a72a9c73]{border-bottom-color:#0000!important}.shell-layout__app-bar.studio-app-shell-layout--learning[data-v-a72a9c73]:before,.shell-layout__app-bar.studio-app-shell-layout--learning[data-v-a72a9c73]:after{opacity:1}.v-main.studio-app-shell-layout--learning[data-v-a72a9c73]{background-color:var(--v64-learning-tint)!important}.studio-app-shell-layout__learning-plate[data-v-a72a9c73]{--v64-plate-ink:#1d1600;border-radius:var(--v64-shape-sm);margin-left:var(--v64-space-3);transition:background-color var(--v64-duration-short) var(--v64-ease-standard), border-color var(--v64-duration-short) var(--v64-ease-standard), box-shadow var(--v64-duration-medium) var(--v64-ease-standard), color var(--v64-duration-short) var(--v64-ease-standard), transform var(--v64-duration-short) var(--v64-ease-standard);flex:none;font-family:system-ui,sans-serif;font-size:1.05rem;font-weight:850;line-height:1;background:var(--v64-surface-container-low)!important;border:1.5px solid var(--v64-outline)!important;color:var(--v64-on-surface-variant)!important}@media (hover:hover){.studio-app-shell-layout__learning-plate[data-v-a72a9c73]:hover{background:var(--v64-learning-container)!important;border-color:var(--v64-learning-strong)!important;color:var(--v64-on-learning-container)!important}}.studio-app-shell-layout__learning-plate[data-v-a72a9c73]:active{transform:scale(.94)}.studio-app-shell-layout__learning-plate--active[data-v-a72a9c73],.studio-app-shell-layout__learning-plate--active[data-v-a72a9c73]:hover{animation:studio-app-shell-plate-pop-a72a9c73 var(--v64-duration-long) var(--v64-ease-emphasized-decelerate);box-shadow:0 0 0 3px var(--v64-learning-glow), var(--v64-elevation-1);background:linear-gradient(150deg, #ffe680 0%, var(--v64-learning) 55%, #f0b400 100%)!important;border-color:var(--v64-plate-ink)!important;color:var(--v64-plate-ink)!important}.studio-app-shell-layout__learning-plate[data-v-a72a9c73]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:3px}@keyframes studio-app-shell-plate-pop-a72a9c73{0%{transform:scale(.82)rotate(-8deg)}60%{transform:scale(1.08)rotate(2deg)}to{transform:scale(1)rotate(0)}}@media (prefers-reduced-motion:reduce){.studio-app-shell-layout__learning-plate[data-v-a72a9c73],.studio-app-shell-layout__learning-plate--active[data-v-a72a9c73]{transition:none;animation:none}}@media (width<=600px){.studio-app-shell-layout__learning-plate[data-v-a72a9c73]{height:2.5rem;margin-left:var(--v64-space-1);width:2.5rem}.studio-app-shell-layout__top-right[data-v-a72a9c73]{gap:0;margin-left:auto}.shell-layout__app-bar .v-spacer[data-v-a72a9c73]{display:none}.studio-app-shell-layout__top-right[data-v-a72a9c73]>button:disabled{width:1rem!important}.studio-app-shell-layout__top-right[data-v-a72a9c73] .vibe64-auth-settings{margin-inline-end:var(--v64-space-1)}.studio-app-shell-layout__top-right[data-v-a72a9c73] .vibe64-auth-settings__button,.studio-app-shell-layout__top-right[data-v-a72a9c73] .vibe64-colleague-launcher-target>.v-btn{flex-basis:2.5rem;min-width:2.5rem;min-height:2.5rem;width:2.5rem!important;height:2.5rem!important}}.studio-app-shell-layout__top-right[data-v-a72a9c73]{flex:none;align-items:center;gap:.25rem;min-width:0;display:flex}@media (width<=980px){.studio-app-shell-layout--learning-stacked[data-v-a72a9c73] .studio-autopilot:not(.studio-autopilot--chat-collapsed),.studio-app-shell-layout--learning-stacked[data-v-a72a9c73] .studio-ai-sessions__empty-layout{grid-template-rows:minmax(0,3fr) minmax(0,2fr);grid-template-columns:minmax(0,1fr);gap:.5rem}.studio-app-shell-layout--learning-stacked[data-v-a72a9c73] .studio-autopilot:not(.studio-autopilot--chat-collapsed) .studio-autopilot__project-panel,.studio-app-shell-layout--learning-stacked[data-v-a72a9c73] .studio-ai-sessions__empty-project-panel{visibility:visible;display:grid}}.project-selection-gate__retained-content[data-v-6da5efed]{flex:auto;min-height:0;display:flex}.project-selection-gate[data-v-6da5efed]{align-content:start;gap:.85rem;min-width:0;display:grid}.project-selection-gate__loading[data-v-6da5efed]{flex:auto;min-height:18rem}.project-selection-gate__picker[data-v-6da5efed]{gap:1rem;width:100%;max-width:min(48rem,100%);margin-inline:auto;padding:1rem;display:grid}.project-selection-gate__header[data-v-6da5efed]{justify-content:space-between;align-items:start;min-width:0;display:flex}.project-selection-gate__eyebrow[data-v-6da5efed]{color:rgba(var(--v-theme-on-surface), .62);letter-spacing:0;text-transform:uppercase;margin:0 0 .15rem;font-size:.76rem;font-weight:680}.project-selection-gate__title[data-v-6da5efed]{letter-spacing:0;margin:0;font-size:1.25rem;font-weight:760;line-height:1.15}.project-selection-gate__path[data-v-6da5efed]{color:rgba(var(--v-theme-on-surface), .62);overflow-wrap:anywhere;margin:.35rem 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.82rem}.project-selection-gate__list[data-v-6da5efed]{gap:.45rem;display:grid}.project-selection-gate__project[data-v-6da5efed]{text-transform:none;justify-content:flex-start;min-height:3.1rem}.project-selection-gate__project[data-v-6da5efed] .v-btn__content{place-items:flex-start start;gap:.1rem;min-width:0;display:grid}.project-selection-gate__project-path[data-v-6da5efed]{color:rgba(var(--v-theme-on-surface), .62);text-overflow:ellipsis;white-space:nowrap;max-width:min(38rem,70vw);font-size:.75rem;overflow:hidden}.project-selection-gate__create[data-v-6da5efed]{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.65rem;display:grid}@media (width<=640px){.project-selection-gate__create[data-v-6da5efed]{grid-template-columns:1fr}}.vibe64-auth-settings[data-v-f9fdca2f]{flex:none;justify-content:center;align-items:center;margin-inline-end:.75rem;display:inline-flex}.vibe64-auth-settings__button[data-v-f9fdca2f]{border:1px solid var(--studio-control-border,rgba(var(--v-theme-on-surface), .12));box-shadow:none;width:2.75rem;min-width:2.75rem;height:2.75rem;min-height:2.75rem;position:relative;overflow:visible;background:var(--studio-control-rest-bg,rgb(var(--v-theme-surface-variant)))!important;color:var(--studio-control-text,rgb(var(--v-theme-on-surface)))!important}.vibe64-auth-settings__button--needs-attention[data-v-f9fdca2f]{border-color:rgb(var(--v-theme-warning));background:rgba(var(--v-theme-warning), .18)!important;color:rgb(var(--v-theme-warning))!important}.vibe64-auth-settings__button--needs-attention[data-v-f9fdca2f]:after{border-radius:inherit;content:"";opacity:0;pointer-events:none;transform-origin:50%;will-change:opacity, transform;border:2px solid;animation:6s ease-out infinite vibe64-auth-settings-pulse-f9fdca2f;position:absolute;inset:-.2rem;transform:scale(1)translateZ(0)}.vibe64-auth-settings__dialog[data-v-f9fdca2f]{flex-direction:column;max-height:min(88vh,54rem);display:flex;overflow:hidden}.vibe64-auth-settings__dialog-title[data-v-f9fdca2f]{justify-content:flex-end;align-items:start;gap:1rem;padding:1rem 1rem .75rem;display:flex}.vibe64-auth-settings__dialog-title>div[data-v-f9fdca2f]{flex:auto;min-width:0}.vibe64-auth-settings__dialog-title h2[data-v-f9fdca2f]{letter-spacing:0;margin:0;font-size:1.08rem;font-weight:760;line-height:1.2}.vibe64-auth-settings__dialog-title p[data-v-f9fdca2f]{color:rgba(var(--v-theme-on-surface), .66);margin:.18rem 0 0;font-size:.86rem;font-weight:400;line-height:1.35}.vibe64-auth-settings__provider-tabs[data-v-f9fdca2f]{flex:none;padding-inline:.75rem}.vibe64-auth-settings__provider-tab[data-v-f9fdca2f]{min-width:8.5rem}.vibe64-auth-settings__provider-attention[data-v-f9fdca2f]{background:rgb(var(--v-theme-warning));border-radius:999px;width:.48rem;height:.48rem;margin-inline-start:.45rem;display:inline-block}.vibe64-auth-settings__dialog-body[data-v-f9fdca2f]{flex:auto;padding:1rem;overflow:auto}.vibe64-personal-profile__appearance[data-v-f9fdca2f]{margin-top:1.5rem}.vibe64-personal-profile__appearance-choice[data-v-f9fdca2f]{margin-top:.5rem}.vibe64-personal-profile[data-v-f9fdca2f]{gap:1rem;max-width:38rem;display:grid}.vibe64-personal-profile__heading h3[data-v-f9fdca2f]{margin:0;font-size:1rem;font-weight:720;line-height:1.35}.vibe64-personal-profile__heading p[data-v-f9fdca2f],.vibe64-personal-profile__supporting-text[data-v-f9fdca2f]{color:rgba(var(--v-theme-on-surface), .66);margin:.2rem 0 0;font-size:.82rem;line-height:1.4}.vibe64-personal-profile__actions[data-v-f9fdca2f]{justify-content:flex-end;display:flex}.vibe64-personal-profile__save[data-v-f9fdca2f]{min-width:7.5rem;min-height:3rem}@media (pointer:coarse){.vibe64-auth-settings__button[data-v-f9fdca2f],.vibe64-auth-settings__provider-tab[data-v-f9fdca2f]{min-height:3rem}}@keyframes vibe64-auth-settings-pulse-f9fdca2f{0%{opacity:.5;transform:scale(1)translateZ(0)}14%{opacity:0;transform:scale(1.34)translateZ(0)}to{opacity:0;transform:scale(1.34)translateZ(0)}}@media (prefers-reduced-motion:reduce){.vibe64-auth-settings__button--needs-attention[data-v-f9fdca2f]:after{animation:none}}@media (width<=720px){.vibe64-auth-settings__dialog[data-v-f9fdca2f]{max-height:100vh}.vibe64-auth-settings__provider-tab[data-v-f9fdca2f]{min-width:7.25rem}.vibe64-auth-settings__dialog-body[data-v-f9fdca2f]{padding:.85rem}}.vibe64-learning-practice-selector[data-v-2df5a5af]{background:var(--v64-learning-container);border:1px solid color-mix(in srgb, var(--v64-learning-strong) 45%, transparent);border-radius:var(--v64-shape-full);font:var(--v64-type-label-lg);letter-spacing:.01em;min-width:0;max-width:100%;height:2.25rem;padding-inline:var(--v64-space-3) var(--v64-space-2);text-transform:none;flex:0 auto;color:var(--v64-on-learning-container)!important}.vibe64-learning-practice-selector[data-v-2df5a5af] .v-btn__content{gap:var(--v64-space-1);min-width:0}.vibe64-learning-practice-selector__lead[data-v-2df5a5af]{flex:none}.vibe64-learning-practice-selector span[data-v-2df5a5af]{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.vibe64-learning-practice-selector[data-v-2df5a5af]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:var(--v64-focus-ring-offset)}.studio-autopilot__composer-delivery[data-v-9e56f63d]{flex-shrink:0;align-items:center;gap:.25rem;min-width:0;margin-inline-start:auto;display:flex}.studio-autopilot__composer-action[data-v-9e56f63d]{flex-shrink:0}@container studio-chat-pane (width<=32rem){.studio-autopilot__composer-delivery[data-v-9e56f63d]{gap:0}.studio-autopilot__composer-action[data-v-9e56f63d]{width:clamp(2rem,10cqi,2.5rem)}}@media (pointer:coarse){.studio-autopilot__composer-action[data-v-9e56f63d]{min-width:3rem;min-height:3rem}}.chat-modes__trigger[data-v-3ea2a11b]{flex-shrink:0}.chat-modes__details[data-v-3ea2a11b]{flex-direction:column;max-height:min(560px,75dvh);display:flex}.chat-modes__details-body[data-v-3ea2a11b]{min-height:0;overflow-y:auto}.chat-modes__model[data-v-3ea2a11b]{white-space:normal;overflow-wrap:anywhere}.vibe64-temporary-ai__composer-actions[data-v-836e73a7]{align-items:center;gap:.25rem;width:100%;min-width:0;display:flex}.vibe64-temporary-ai.vibe64-temporary-ai--host[data-v-836e73a7]{border-color:rgba(var(--v-theme-secondary), .65);grid-template-rows:auto minmax(0,1fr)}.vibe64-temporary-ai--host .vibe64-temporary-ai__tabs[data-v-836e73a7]{background:rgba(var(--v-theme-secondary), .12)}.vibe64-temporary-ai__host-tab[data-v-836e73a7]{flex:none}.vibe64-temporary-ai__host-content[data-v-836e73a7]{min-width:0;min-height:0}.vibe64-temporary-ai__unread[data-v-836e73a7]{background:rgb(var(--v-theme-primary));border-radius:50%;flex:0 0 8px;height:8px}.vibe64-temporary-ai[data-v-836e73a7]{background:rgb(var(--v-theme-surface));border:2px solid rgba(var(--v-theme-tertiary), .42);z-index:12;border-radius:12px;grid-row:3/-1;grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:absolute;inset:0 .3rem .3rem;overflow:hidden;box-shadow:0 14px 38px #0f172a38}.vibe64-temporary-ai__tabs[data-v-836e73a7]{background:rgba(var(--v-theme-tertiary), .06);border-bottom:1px solid rgba(var(--v-theme-tertiary), .18);align-items:flex-start;gap:.25rem;padding:.25rem .35rem;display:flex}.vibe64-temporary-ai__task-tabs[data-v-836e73a7]{scrollbar-width:thin;flex:auto;gap:.25rem;min-width:0;display:flex;overflow-x:auto}.vibe64-temporary-ai__tab[data-v-836e73a7]{background:rgba(var(--v-theme-on-surface), .05);color:inherit;border:1px solid #0000;border-radius:999px;flex:none;align-items:center;max-width:100%;min-height:2rem;padding-left:.15rem;display:inline-flex}.vibe64-temporary-ai__tab-select[data-v-836e73a7]{color:inherit;cursor:pointer;background:0 0;border:0;align-self:stretch;align-items:center;gap:.35rem;min-width:0;padding:.2rem .35rem .2rem .55rem;display:inline-flex}.vibe64-temporary-ai__tab-select>span[data-v-836e73a7]:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-ai__tab-close[data-v-836e73a7]{flex:none}.vibe64-temporary-ai[data-v-836e73a7]:focus-visible,.vibe64-temporary-ai__tab-select[data-v-836e73a7]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.vibe64-temporary-ai__tab--active[data-v-836e73a7]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .35);font-weight:650}.vibe64-temporary-ai__tab--main[data-v-836e73a7]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .22)}.vibe64-temporary-ai__new-task[data-v-836e73a7]{flex:none}.vibe64-temporary-ai__tabs-spacer[data-v-836e73a7]{flex:auto}.vibe64-temporary-ai__busy[data-v-836e73a7]{background:rgb(var(--v-theme-primary));border-radius:50%;width:.45rem;height:.45rem}.vibe64-temporary-ai__recovery[data-v-836e73a7]{overflow-wrap:anywhere;flex-wrap:wrap;align-items:start;gap:.5rem;padding:.4rem;font-size:.85rem;display:flex}.vibe64-temporary-ai__recovery-row[data-v-836e73a7]:not(:empty){max-height:min(20dvh,8rem);padding:.35rem .55rem 0;overflow-y:auto}.vibe64-temporary-ai__recovery-summary[data-v-836e73a7]{flex:1;min-width:0}.vibe64-temporary-ai__recovery strong[data-v-836e73a7]{font-size:.95rem;line-height:1.4}.vibe64-temporary-ai__recovery summary[data-v-836e73a7]{cursor:pointer}.vibe64-temporary-ai__check-update[data-v-836e73a7],.vibe64-temporary-ai__composer[data-v-836e73a7]{flex:none}.vibe64-temporary-ai__return[data-v-836e73a7]{justify-self:start;margin-top:.4rem;scroll-margin-block:.55rem}.vibe64-temporary-ai__recovery p[data-v-836e73a7]{margin:0}.vibe64-temporary-ai__recovery p+p[data-v-836e73a7]{margin-top:.3rem}.vibe64-temporary-ai__error[data-v-836e73a7]{color:rgba(var(--v-theme-on-surface), .66);font-size:.82rem}.vibe64-temporary-ai__feedback[data-v-836e73a7]{flex:none;min-width:0;max-height:min(12dvh,6rem);overflow-y:auto}.vibe64-temporary-ai__error[data-v-836e73a7]{color:rgb(var(--v-theme-error));padding:.3rem .55rem}.vibe64-temporary-ai__error--recovered[data-v-836e73a7]{color:rgba(var(--v-theme-on-surface), .66)}@media (width<=720px){.vibe64-temporary-ai[data-v-836e73a7]{z-index:30;border:0;border-radius:0;inset:0}}@media (pointer:coarse){.vibe64-temporary-ai__tab-select[data-v-836e73a7],.vibe64-temporary-ai__new-task[data-v-836e73a7],.vibe64-temporary-ai__tab-close[data-v-836e73a7],.vibe64-temporary-ai__check-update[data-v-836e73a7],.vibe64-temporary-ai__return[data-v-836e73a7]{min-width:3rem!important;min-height:3rem!important}}.studio-ai-session-archive-dialog[data-v-6853144f]{border:1px solid rgba(var(--v-theme-primary), .32)}.studio-ai-session-archive-dialog__title[data-v-6853144f],.studio-ai-session-archive-dialog__actions[data-v-6853144f]{align-items:center;gap:.55rem;display:flex}.studio-ai-session-archive-dialog__actions[data-v-6853144f]{justify-content:flex-end;padding:0 1rem 1rem}.project-preview[data-v-9cab79de]{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.project-preview__output[data-v-9cab79de]{flex:1;min-height:0}.project-preview__warning[data-v-9cab79de]{overflow-wrap:anywhere;flex:none;max-height:35%;overflow-y:auto}.project-preview__warning p[data-v-9cab79de]{margin:.25rem 0}.project-preview__warning-actions[data-v-9cab79de]{flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin-top:.25rem;display:flex}.project-preview__warning-actions button[data-v-9cab79de]:disabled{opacity:.6}.project-onboarding[data-v-9cab79de]{width:min(100%,52rem);margin:auto;padding:clamp(1rem,3vw,2.5rem);overflow-y:auto}.project-onboarding h2[data-v-9cab79de]{margin-bottom:1rem;font-size:1.6rem;line-height:1.25}.project-onboarding p[data-v-9cab79de]{margin-bottom:1.25rem;line-height:1.6}.project-onboarding__eyebrow[data-v-9cab79de]{letter-spacing:.06em;text-transform:uppercase;opacity:.65;font-size:.8rem;font-weight:700}.project-onboarding__group[data-v-9cab79de]{margin-block:1.5rem}.project-onboarding__group h3[data-v-9cab79de]{margin-bottom:.75rem}.project-onboarding__choices[data-v-9cab79de]{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:1rem;display:grid}.project-onboarding__choice[data-v-9cab79de]{text-align:left;border:1px solid rgba(var(--v-theme-on-surface), .16);background:rgb(var(--v-theme-surface));color:inherit;border-radius:1rem;flex-direction:column;gap:.7rem;padding:1.25rem;display:flex}.project-onboarding__choice[data-v-9cab79de]:not(:disabled):hover{border-color:rgb(var(--v-theme-primary));background:rgba(var(--v-theme-primary), .05)}.project-onboarding__choice[data-v-9cab79de]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:3px}.project-onboarding__choice[data-v-9cab79de]:disabled{opacity:.55}.project-onboarding__choice span[data-v-9cab79de]{font-size:.9rem;line-height:1.5}.project-onboarding__choose[data-v-9cab79de]{color:rgb(var(--v-theme-primary));margin-top:auto;padding-top:.5rem;font-weight:600}.project-onboarding__actions[data-v-9cab79de]{flex-wrap:wrap;gap:.75rem;display:flex}.vibe64-training-visual[data-v-f3080af2]{gap:var(--v64-space-2,8px);flex-direction:column;min-width:0;display:flex}.vibe64-training-visual__frame[data-v-f3080af2]{border:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-lowest,rgb(var(--v-theme-surface)));box-shadow:var(--v64-elevation-1,0 1px 3px #0000001f);animation:vibe64-training-visual-rise-f3080af2 var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out);overflow:hidden}.vibe64-training-visual__bar[data-v-f3080af2]{align-items:center;gap:var(--v64-space-2,8px);min-height:40px;padding:0 var(--v64-space-4,16px);background:var(--v64-surface-container,rgba(var(--v-theme-primary), .05));border-bottom:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));display:flex}.vibe64-training-visual__bar-icon[data-v-f3080af2]{width:18px;height:18px;fill:rgb(var(--v-theme-primary));flex:none}.vibe64-training-visual__bar-title[data-v-f3080af2]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);overflow:hidden}.vibe64-training-visual__canvas[data-v-f3080af2]{position:relative}.vibe64-training-visual iframe[data-v-f3080af2]{border:0;width:100%;height:min(60vh,32rem);min-height:16rem;display:block}.vibe64-training-visual__loading[data-v-f3080af2]{position:absolute;inset:0}.vibe64-training-visual p[data-v-f3080af2]{overflow-wrap:anywhere;margin:0}.vibe64-training-visual__caption[data-v-f3080af2]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-md,12px);border-inline-start:4px solid var(--v64-learning,#f5c518);background:var(--v64-surface-container-low,rgba(var(--v-theme-primary), .03))}.vibe64-training-visual__error[data-v-f3080af2]{align-items:center;gap:var(--v64-space-3,12px);padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-error-container,rgba(var(--v-theme-error), .12));color:rgb(var(--v-theme-on-surface));flex-wrap:wrap;display:flex}.vibe64-training-visual__error p[data-v-f3080af2]{flex:12rem;min-width:0}.vibe64-training-visual__error-icon[data-v-f3080af2]{width:24px;height:24px;fill:rgb(var(--v-theme-error));flex:none}.vibe64-training-visual__error .v-btn[data-v-f3080af2]{letter-spacing:0;text-transform:none}@keyframes vibe64-training-visual-rise-f3080af2{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.vibe64-training-visual__frame[data-v-f3080af2]{animation:none}}.training-preview[data-v-f21d920f]{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.training-preview__choices[data-v-f21d920f]{align-items:center;gap:var(--v64-space-2,8px);flex-wrap:wrap;flex:none;display:flex}.training-preview>.training-preview__choices[data-v-f21d920f]:first-child{padding:var(--v64-space-3,12px) var(--v64-space-3,12px) var(--v64-space-1,4px)}.training-preview__segmented[data-v-f21d920f]{border:1px solid var(--v64-outline,rgba(var(--v-theme-on-surface), .24));border-radius:var(--v64-shape-full,999px);min-width:0;max-width:100%;display:inline-flex;overflow:hidden}.training-preview__segmented>.training-preview__segment[data-v-f21d920f]{letter-spacing:0;text-transform:none;min-width:0;font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface,rgb(var(--v-theme-on-surface)));transition:background-color var(--v64-duration-short,.15s) var(--v64-ease-standard,ease);border-radius:0;flex:auto;padding-inline:16px}.training-preview__segmented>.training-preview__segment+.training-preview__segment[data-v-f21d920f]{border-inline-start:1px solid var(--v64-outline,rgba(var(--v-theme-on-surface), .24))}.training-preview__segmented>.training-preview__segment.is-selected[data-v-f21d920f]{background:var(--v64-learning-container,#f5c51838);color:var(--v64-on-learning-container,rgb(var(--v-theme-on-surface)))}.training-preview__segment-check[data-v-f21d920f]{fill:currentColor;width:18px;height:18px;animation:training-preview-pop-f21d920f var(--v64-duration-medium,.3s) var(--v64-ease-emphasized-decelerate,ease-out);margin-inline-end:6px}.training-preview__collapse[data-v-f21d920f]{letter-spacing:0;text-transform:none;margin-inline-start:auto}.training-preview__collapse-icon[data-v-f21d920f]{width:18px;height:18px;fill:currentColor;margin-inline-end:var(--v64-space-1,4px)}.training-preview__note[data-v-f21d920f]{margin:var(--v64-space-2,8px) var(--v64-space-3,12px);padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-md,12px);background:var(--v64-surface-container-high,rgba(var(--v-theme-on-surface), .06));color:var(--v64-on-surface-variant,inherit);font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif)}.training-preview__notice[data-v-f21d920f],.training-preview__cue[data-v-f21d920f]{align-items:center;gap:var(--v64-space-3,12px);margin:var(--v64-space-2,8px) var(--v64-space-3,12px);padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);animation:training-preview-rise-f21d920f var(--v64-duration-medium,.3s) var(--v64-ease-emphasized-decelerate,ease-out);flex-wrap:wrap;display:flex}.training-preview__notice p[data-v-f21d920f],.training-preview__cue p[data-v-f21d920f]{overflow-wrap:anywhere;min-width:0;font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);flex:12rem;margin:0}.training-preview__notice.is-error[data-v-f21d920f]{background:var(--v64-error-container,rgba(var(--v-theme-error), .12));color:rgb(var(--v-theme-on-surface))}.training-preview__notice-icon[data-v-f21d920f]{width:24px;height:24px;fill:rgb(var(--v-theme-error));flex:none}.training-preview__cue[data-v-f21d920f]{background:var(--v64-primary-container,rgba(var(--v-theme-primary), .14));border:1px solid rgba(var(--v-theme-primary), .3);box-shadow:var(--v64-elevation-1,0 1px 3px #0000001f)}.training-preview__cue.is-error[data-v-f21d920f]{background:var(--v64-learning-container,#f5c51838);border-color:#f5c51899}.training-preview__cue p[data-v-f21d920f]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}.training-preview__cue-icon[data-v-f21d920f]{background:rgb(var(--v-theme-primary));width:44px;height:44px;color:rgb(var(--v-theme-on-primary));border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.training-preview__cue-icon[data-v-f21d920f]:after{content:"";border:2px solid rgba(var(--v-theme-primary), .4);animation:training-preview-pulse-f21d920f 2.2s var(--v64-ease-standard,ease) infinite;border-radius:50%;position:absolute;inset:-5px}.training-preview__cue-icon svg[data-v-f21d920f]{fill:currentColor;width:24px;height:24px}.training-preview__notice .v-btn[data-v-f21d920f],.training-preview__cue .v-btn[data-v-f21d920f]{letter-spacing:0;text-transform:none;padding-inline:20px}.training-preview__app[data-v-f21d920f]{flex:1;min-width:0;min-height:0}.training-preview__lessons[data-v-f21d920f],.training-preview__presentation[data-v-f21d920f]{flex:1;min-width:0;min-height:0;overflow:auto}.training-preview__presentation[data-v-f21d920f]{padding:var(--v64-space-2,8px) var(--v64-space-3,12px) var(--v64-space-3,12px)}.training-preview__presentation p[data-v-f21d920f]{overflow-wrap:anywhere}.training-preview__loading[data-v-f21d920f]{border-radius:var(--v64-shape-lg,16px);overflow:hidden}.training-preview__empty[data-v-f21d920f]{align-items:center;gap:var(--v64-space-3,12px);margin:var(--v64-space-4,16px);padding:var(--v64-space-6,32px) var(--v64-space-4,16px);border:1px dashed var(--v64-outline,rgba(var(--v-theme-on-surface), .24));border-radius:var(--v64-shape-xl,28px);text-align:center;color:var(--v64-on-surface-variant,inherit);flex-direction:column;display:flex}.training-preview__empty p[data-v-f21d920f]{max-width:28rem;font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);margin:0}.training-preview__empty-art[data-v-f21d920f]{width:120px;height:80px}.training-preview__empty-art .frame[data-v-f21d920f]{fill:var(--v64-surface-container-high,rgba(var(--v-theme-primary), .08));stroke:var(--v64-outline,rgba(var(--v-theme-on-surface), .24));stroke-width:2px}.training-preview__empty-art .line[data-v-f21d920f]{fill:none;stroke:rgba(var(--v-theme-primary), .55);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.training-preview__empty-art .sun[data-v-f21d920f]{fill:var(--v64-learning,#f5c518)}@keyframes training-preview-rise-f21d920f{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes training-preview-pop-f21d920f{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}@keyframes training-preview-pulse-f21d920f{0%{opacity:.9;transform:scale(.94)}70%{opacity:0;transform:scale(1.2)}to{opacity:0}}@media (width<=599px){.training-preview__segmented[data-v-f21d920f]{flex:100%}.training-preview__segmented>.training-preview__segment[data-v-f21d920f]{padding-inline:10px;min-height:44px!important}.training-preview__cue .v-btn[data-v-f21d920f],.training-preview__notice .v-btn[data-v-f21d920f]{flex:100%}}@media (prefers-reduced-motion:reduce){.training-preview__notice[data-v-f21d920f],.training-preview__cue[data-v-f21d920f],.training-preview__segment-check[data-v-f21d920f],.training-preview__cue-icon[data-v-f21d920f]:after{animation:none}}.agent-plan-usage[data-v-8fc2288d]{text-transform:none;max-width:100%;font-size:.7rem}.agent-plan-usage__details[data-v-8fc2288d]{white-space:pre-line;margin-block:.5rem}.agent-plan-usage__goal-text[data-v-8fc2288d]{white-space:pre-wrap;overflow-wrap:anywhere}.action-label-pending[data-v-9ad2c448]{visibility:hidden}.vibe64-routing-notice[data-v-9ad2c448] .v-alert__content{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}details[data-v-9ad2c448]{flex:13rem;min-width:0}details[open][data-v-9ad2c448]{flex-basis:100%}.vibe64-routing-notice__actions[data-v-9ad2c448]{flex:none;max-width:100%}.vibe64-routing-notice__actions[data-v-9ad2c448] .v-btn{min-height:32px;padding-inline:8px}summary[data-v-9ad2c448]{cursor:pointer;overflow-wrap:anywhere;align-content:center;min-height:32px}@media (pointer:coarse){summary[data-v-9ad2c448],.vibe64-routing-notice__actions[data-v-9ad2c448] .v-btn{min-height:44px}}.work-plan-control[data-v-1813ffe2]{flex:none;align-items:center;display:inline-flex}@media (pointer:coarse){.work-plan-control>.v-btn[data-v-1813ffe2]{min-width:48px;min-height:48px}}.work-plan-content[data-v-1813ffe2]{overflow-wrap:anywhere;min-height:0}.work-plan-archive-context[data-v-1813ffe2]{flex:none;align-items:center;gap:.5rem;display:flex}.work-plan-archive-copy[data-v-1813ffe2]{min-width:0}.work-plan-history-title[data-v-1813ffe2]{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0}.work-plan-empty[data-v-1813ffe2]{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:12rem;display:flex}.work-plan-item[data-v-1813ffe2]{align-items:flex-start;gap:.75rem;margin-block:.5rem;display:flex}.work-plan-item input[data-v-1813ffe2]{opacity:1;width:1.1rem;height:1.1rem;accent-color:rgb(var(--v-theme-primary));flex:none;margin-top:.25rem}.work-plan-item[data-v-1813ffe2]>:last-child{flex:1;min-width:0}.starred-files-menu[data-v-b86a8fd5]{flex-direction:column;gap:.5rem;width:min(25rem,100vw - 1rem);max-height:min(32rem,75dvh);padding:.75rem;display:flex}.starred-files-menu__header[data-v-b86a8fd5]{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.5rem;display:grid}.starred-files-menu__list[data-v-b86a8fd5]{overscroll-behavior:contain;min-height:0;overflow-y:auto}@media (width<=599px){.starred-files-menu[data-v-b86a8fd5]{width:100%;padding-bottom:max(.75rem, env(safe-area-inset-bottom))}}@media (pointer:coarse){.starred-files-menu__trigger[data-v-b86a8fd5]{min-width:3rem;min-height:3rem}}.vibe64-temporary-action-terminal--error{border-inline-start:.25rem solid rgb(var(--v-theme-error))}.vibe64-temporary-action-terminal .vibe64-terminal-surface__header{flex-direction:column;align-items:stretch;gap:.5rem;margin-bottom:0}.vibe64-temporary-action-terminal .vibe64-terminal-surface__body{margin-top:.5rem}.vibe64-temporary-action-terminal__summary[data-v-efc31aa6]{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title status";align-items:center;gap:.5rem;min-width:0;display:grid}.vibe64-temporary-action-terminal__title[data-v-efc31aa6]{grid-area:title;font-size:.88rem}.vibe64-temporary-action-terminal__status[data-v-efc31aa6]{grid-area:status}.vibe64-temporary-action-terminal--error .vibe64-temporary-action-terminal__line[data-v-efc31aa6]{overflow-wrap:anywhere;white-space:normal;flex-basis:100%}.vibe64-temporary-action-terminal__title[data-v-efc31aa6],.vibe64-temporary-action-terminal__line[data-v-efc31aa6]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-action-terminal__line[data-v-efc31aa6]{color:rgba(var(--v-theme-on-surface), .72);flex:1 1 0;order:-1;min-width:0;font-size:.82rem}.studio-ai-sessions__create-button[data-v-63a40b7b]{border:1px solid #0000;border-radius:999px;width:3rem;min-width:3rem;height:3rem;min-height:3rem;position:relative;overflow:visible;background:var(--studio-control-rest-bg,#f7f7f8)!important;box-shadow:none!important;color:var(--v64-primary)!important}.studio-ai-sessions__create-button[data-v-63a40b7b]:hover{background:var(--studio-control-active-bg,#e7e7e7)!important}.studio-ai-sessions__create-button[data-v-63a40b7b] .v-icon{color:currentColor;font-size:1.15rem}.studio-ai-sessions__create-button--attention[data-v-63a40b7b]:not(.v-btn--disabled){border-color:color-mix(in srgb, var(--v64-primary) 36%, transparent)}.studio-ai-sessions__create-button--attention[data-v-63a40b7b]:not(.v-btn--disabled):after{border-radius:inherit;content:"";opacity:0;pointer-events:none;transform-origin:50%;will-change:opacity, transform;border:2px solid;animation:6s ease-out infinite studio-ai-session-create-pulse-63a40b7b;position:absolute;inset:-.18rem;transform:scale(1)translateZ(0)}.studio-ai-sessions__preview-create-button[data-v-63a40b7b]{border-radius:var(--studio-control-radius,7px);letter-spacing:0;border:1px solid #0000;min-width:12rem;min-height:3rem;font-weight:500;background:var(--studio-control-active-bg,#e7e7e7)!important;box-shadow:none!important;color:var(--studio-control-text,#202124)!important}.studio-ai-sessions__preview-create-button[data-v-63a40b7b]:hover{background:var(--studio-control-rest-bg,#f7f7f8)!important}.studio-ai-sessions__create-button--unavailable[data-v-63a40b7b]{cursor:not-allowed;opacity:var(--v-disabled-opacity,.38)}.studio-ai-sessions__create-button--unavailable[data-v-63a40b7b]:hover{background:var(--studio-control-rest-bg,#f7f7f8)!important}@keyframes studio-ai-session-create-pulse-63a40b7b{0%{opacity:.48;transform:scale(1)translateZ(0)}14%{opacity:0;transform:scale(1.34)translateZ(0)}to{opacity:0;transform:scale(1.34)translateZ(0)}}@media (prefers-reduced-motion:reduce){.studio-ai-sessions__create-button--attention[data-v-63a40b7b]:not(.v-btn--disabled):after{animation:none}}.studio-ai-sessions__archive-progress[data-v-65939382]{background:rgba(var(--v-theme-primary), .08);overflow-wrap:anywhere;border-radius:.5rem;align-items:flex-start;gap:.5rem;width:100%;padding:.5rem;font-size:.8rem;display:flex}.studio-ai-sessions__archive-detail[data-v-65939382]{opacity:.8;margin-top:.2rem}.studio-ai-sessions__toolbar[data-v-65939382]{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.75rem;width:100%;min-width:0;display:flex}.studio-ai-sessions__tabs[data-v-65939382]{flex-wrap:wrap;align-items:center;gap:.45rem;width:100%;min-width:0;display:flex}.studio-ai-sessions__tab[data-v-65939382]{border:0;border-radius:999px;align-items:stretch;max-width:18rem;font-weight:500;position:relative;overflow:visible;box-shadow:none!important;color:var(--studio-control-text,#202124)!important;background:0 0!important;padding:0!important}.studio-ai-sessions__tab[data-v-65939382] .v-chip__content{align-items:stretch;min-width:0;display:inline-flex}.studio-ai-sessions__tab-main[data-v-65939382]{--studio-ai-sessions-chip-rest:color-mix(in srgb, var(--v64-on-surface) 5%, var(--v64-surface));background:var(--studio-ai-sessions-chip-rest);border:1px solid var(--v64-outline-variant);box-sizing:border-box;color:var(--studio-control-text,#202124);border-radius:999px;flex:auto;align-items:center;min-width:0;padding-inline:.85rem;display:inline-flex}.studio-ai-sessions__tab--active[data-v-65939382]{font-weight:560;color:var(--studio-control-text,#202124)!important}.studio-ai-sessions__tab--archiving .studio-ai-sessions__tab-main[data-v-65939382]{background:rgba(var(--v-theme-on-surface), .06);color:rgba(var(--v-theme-on-surface), .55)}.studio-ai-sessions__tab--archiving .studio-ai-sessions__status-dot[data-v-65939382]{background:currentColor}.studio-ai-sessions__tab-main[data-v-65939382],.studio-ai-sessions__tab-close-slot[data-v-65939382]{transition:background-color var(--v64-duration-short) var(--v64-ease-standard), color var(--v64-duration-short) var(--v64-ease-standard)}.studio-ai-sessions__tab--active .studio-ai-sessions__tab-main[data-v-65939382]{background:var(--studio-control-active-bg,#e7e7e7);color:var(--v64-on-secondary-container);border-color:#0000;border-radius:999px 0 0 999px;padding-inline-end:.34rem}.studio-ai-sessions__tab:not(.studio-ai-sessions__tab--active) .studio-ai-sessions__tab-main[data-v-65939382]:hover{background:color-mix(in srgb, var(--v64-on-surface) 8%, var(--studio-ai-sessions-chip-rest))}.studio-ai-sessions__tab--active .studio-ai-sessions__tab-main[data-v-65939382]:hover,.studio-ai-sessions__tab--active .studio-ai-sessions__tab-main:hover+.studio-ai-sessions__tab-close-slot[data-v-65939382]{background:color-mix(in srgb, var(--v64-on-secondary-container) 8%, var(--studio-control-active-bg,#e7e7e7))}.studio-ai-sessions__tab[data-v-65939382]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:var(--v64-focus-ring-offset)}.studio-ai-sessions__tab[data-v-65939382] .v-chip__overlay,.studio-ai-sessions__tab[data-v-65939382] .v-chip__underlay{display:none}.studio-ai-sessions__tab-label[data-v-65939382]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.studio-ai-sessions__repository-state[data-v-65939382]{color:rgba(var(--v-theme-on-surface), .52);flex:none;margin-inline-start:.42rem}.studio-ai-sessions__tab-info[data-v-65939382]{color:inherit;flex-shrink:0;display:none}.studio-ai-sessions__info[data-v-65939382]{overflow-wrap:anywhere;max-width:100%;padding:.25rem}.studio-ai-sessions__info-facts[data-v-65939382]{grid-template-columns:auto minmax(0,1fr);gap:.3rem .75rem;margin:.5rem 0 0;display:grid}.studio-ai-sessions__info-facts dt[data-v-65939382]{opacity:.75}.studio-ai-sessions__info-facts dd[data-v-65939382]{margin:0}.studio-ai-sessions__repository-state--saved[data-v-65939382]{color:rgb(var(--v-theme-success))}.studio-ai-sessions__repository-state--unsaved[data-v-65939382],.studio-ai-sessions__repository-state--unavailable[data-v-65939382]{color:rgb(var(--v-theme-error))}.studio-ai-sessions__tab-close-slot[data-v-65939382]{background:var(--studio-control-active-bg,#e7e7e7);box-sizing:border-box;color:rgba(var(--v-theme-on-surface), .68);border:1px solid #0000;border-left:0;border-radius:0 999px 999px 0;flex:none;justify-content:center;align-items:center;padding-inline:.14rem .28rem;display:inline-flex}.studio-ai-sessions__tab-archive[data-v-65939382]{flex:0 0 1.38rem;min-width:1.38rem;min-height:1.38rem;color:currentColor!important;background:0 0!important;width:1.38rem!important;height:1.38rem!important;padding:0!important}.studio-ai-sessions__tab-archive[data-v-65939382]:hover,.studio-ai-sessions__tab-archive[data-v-65939382]:focus-visible{opacity:1;pointer-events:auto;background:color-mix(in srgb, currentColor 14%, transparent)!important}.studio-ai-sessions__tab-archive[data-v-65939382] .v-icon{font-size:.98rem}.studio-ai-sessions__status-dot[data-v-65939382]{background:rgb(var(--v-theme-primary));contain:paint;border-radius:999px;flex:none;width:.52rem;height:.52rem;margin-right:.42rem;display:inline-block;position:relative}.studio-ai-sessions__tab--thinking .studio-ai-sessions__status-dot[data-v-65939382]{animation:1.3s steps(2,end) infinite studio-ai-sessions-thinking-pulse-65939382}.studio-ai-sessions__status-dot--blocked[data-v-65939382],.studio-ai-sessions__status-dot--failed[data-v-65939382]{background:rgb(var(--v-theme-error))}@keyframes studio-ai-sessions-thinking-pulse-65939382{0%,to{opacity:.45}50%{opacity:1}}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tabs[data-v-65939382]{flex-wrap:nowrap;gap:.34rem}.studio-ai-sessions__toolbar--compact[data-v-65939382]{min-height:2rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-65939382]{letter-spacing:0;flex:1 1 0;min-width:0;max-width:12.5rem;height:2rem;min-height:2rem;font-size:.92rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-65939382] .v-chip__content{flex:auto;width:100%}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-main[data-v-65939382]{padding-inline:.5rem .25rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab--active[data-v-65939382]{flex-basis:1.7rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab--active .studio-ai-sessions__tab-main[data-v-65939382]{padding-inline-end:.28rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-close-slot[data-v-65939382]{padding-inline:.08rem .22rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__status-dot[data-v-65939382]{width:.58rem;height:.58rem;margin-right:.25rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__repository-state[data-v-65939382]{margin-inline-start:.25rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-65939382]{flex-basis:1.42rem;min-width:1.42rem;min-height:1.42rem;width:1.42rem!important;height:1.42rem!important}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-65939382] .v-icon{font-size:1rem}@media (width<=640px){.studio-ai-sessions__toolbar[data-v-65939382]{flex-direction:column;align-items:stretch}}@media (hover:none),(pointer:coarse){.studio-ai-sessions__tab-info[data-v-65939382]{display:inline-flex}.studio-ai-sessions__repository-state--desktop[data-v-65939382]{display:none}.studio-ai-sessions__tab .studio-ai-sessions__tab-archive[data-v-65939382]{box-shadow:none;opacity:1;pointer-events:auto}}@media (prefers-reduced-motion:reduce){.studio-ai-sessions__tab--thinking .studio-ai-sessions__status-dot[data-v-65939382]{opacity:1;animation:none}}.studio-autopilot__reasoning-dots[data-v-86b60d19]{clip-path:inset(0 66.666% 0 0);animation:1.5s step-end infinite reasoning-dots-86b60d19;display:inline-block}@keyframes reasoning-dots-86b60d19{33%{clip-path:inset(0 33.333% 0 0)}66%{clip-path:inset(0)}}@media (prefers-reduced-motion:reduce){.studio-autopilot__reasoning-dots[data-v-86b60d19]{clip-path:none;animation:none}}.studio-autopilot__checkpoint-notice summary[data-v-86b60d19]{cursor:pointer}.studio-autopilot__checkpoint-details[data-v-86b60d19]{overflow-wrap:anywhere;white-space:pre-wrap;max-height:8rem;overflow:auto}.studio-autopilot[data-v-86b60d19]{background:rgb(var(--v-theme-background));grid-template-columns:minmax(20rem,38%) minmax(0,1fr);min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.studio-home-shell-session-github-actor[data-v-86b60d19]{color:rgba(var(--v-theme-on-surface), .72);white-space:nowrap;align-items:center;gap:.24rem;min-width:0;max-width:100%;padding:0 .36rem;font-size:.72rem;font-weight:650;line-height:1;display:inline-flex}.studio-home-shell-session-github-actor span[data-v-86b60d19]{text-overflow:ellipsis;min-width:0;overflow:hidden}.studio-home-shell-session-github-actor--inactive[data-v-86b60d19]{color:rgba(var(--v-theme-on-surface), .46)}.studio-autopilot--chat-collapsed[data-v-86b60d19]{grid-template-columns:0 minmax(0,1fr)}.studio-autopilot__chat-panel[data-v-86b60d19]{background:rgb(var(--v-theme-surface));border-right:1px solid rgba(var(--v-theme-outline), .14);grid-template-rows:auto auto minmax(0,1fr);min-width:0;min-height:0;display:grid;position:relative;overflow:hidden;container:studio-chat-pane/inline-size}.studio-autopilot--chat-collapsed .studio-autopilot__chat-panel[data-v-86b60d19]{visibility:hidden}.studio-autopilot__session-header[data-v-86b60d19]{border-bottom:1px solid rgba(var(--v-theme-outline), .12);box-sizing:border-box;grid-row:1;justify-content:space-between;align-items:center;gap:0;width:100%;min-width:0;min-height:3rem;padding:.4rem .25rem;display:flex;overflow:hidden}.studio-autopilot__session-header[data-v-86b60d19] .studio-ai-sessions__toolbar{flex:auto;min-width:0;margin-inline-end:.35rem;overflow:hidden}.studio-autopilot__session-header[data-v-86b60d19] .studio-ai-sessions__tabs{min-width:0;overflow:hidden}.studio-autopilot__header-actions[data-v-86b60d19],.studio-autopilot__session-tool-header[data-v-86b60d19]{align-items:center;gap:.4rem;display:flex}.studio-autopilot__header-actions[data-v-86b60d19]{flex:none;margin-inline-start:auto}.studio-autopilot__header-actions--compact[data-v-86b60d19]{display:none}@container studio-chat-pane (width>=32.01rem) and (width<=40rem){.studio-autopilot__session-header[data-v-86b60d19]{--session-action-size:44px}.studio-autopilot__header-actions[data-v-86b60d19]{gap:0}.studio-autopilot__header-actions[data-v-86b60d19] .v-icon,.studio-autopilot__save-work[data-v-86b60d19] .v-btn__content>.v-icon{width:20px;height:20px;font-size:20px}.studio-autopilot__save-symbol[data-v-86b60d19]{transform:scale(.85)}}@container studio-chat-pane (width<=32rem){.studio-autopilot__header-actions--compact[data-v-86b60d19]{display:flex}.studio-autopilot__header-actions--expanded[data-v-86b60d19]{display:none}}.studio-autopilot__session-action-item[data-v-86b60d19]{min-height:3rem}.studio-autopilot__conversation[data-v-86b60d19]{grid-row:3;min-width:0;min-height:0}.studio-autopilot__activity[data-v-86b60d19]{grid-row:2;grid-auto-rows:max-content;gap:.3rem;min-width:0;max-height:min(24dvh,12rem);padding:.35rem .5rem;display:grid;overflow:auto}.studio-autopilot__activity[data-v-86b60d19]:empty{padding:0;display:none}.studio-autopilot__connection-recovery[data-v-86b60d19]{background:rgba(var(--v-theme-primary), .08);border:1px solid rgba(var(--v-theme-primary), .24);color:rgb(var(--v-theme-on-surface));grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:.5rem;padding:.25rem .5rem;display:grid}.studio-autopilot__connection-recovery>span[data-v-86b60d19]{overflow-wrap:anywhere;min-width:0}.studio-autopilot__connection-actions[data-v-86b60d19]{flex-direction:column;align-items:flex-start;gap:.25rem;display:flex}.studio-autopilot__composer[data-v-86b60d19]{border-top:1px solid rgba(var(--v-theme-outline), .1);box-sizing:border-box;flex:none;width:100%;min-width:0;max-width:100%;padding:4px;overflow:hidden}.studio-autopilot__composer-actions[data-v-86b60d19]{align-items:center;gap:.25rem clamp(0rem,4% - 1.25rem,.5rem);width:100%;min-width:0;display:flex}.studio-autopilot__settings-access[data-v-86b60d19]{grid-column:1/-1}.studio-autopilot__composer-action[data-v-86b60d19]{flex-shrink:0}.studio-autopilot__assistant-button[data-v-86b60d19]{align-items:center;display:flex;position:relative}.studio-autopilot__assistant-button-label[data-v-86b60d19]{z-index:1;border:1px solid rgba(var(--v-theme-on-surface), .25);background:rgb(var(--v-theme-surface-light));color:rgb(var(--v-theme-on-surface));white-space:nowrap;letter-spacing:0;text-transform:none;border-radius:3px;padding:0 4px;font-size:9px;font-weight:600;line-height:11px;position:absolute;top:100%;left:50%;transform:translate(max(-50%,-2.5rem))}.studio-autopilot__composer-tools[data-v-86b60d19]{flex-shrink:0;display:flex}.studio-autopilot__composer-tools[data-v-86b60d19]:empty{display:none}@container studio-chat-pane (width<=32rem){.studio-autopilot__composer-actions[data-v-86b60d19]{gap:0}.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-86b60d19]{width:clamp(2rem,10cqi,2.5rem)}.studio-autopilot__composer-actions[data-v-86b60d19] button{flex-shrink:1;min-width:min-content;padding-inline:.25rem}}.studio-autopilot__composer-menu[data-v-86b60d19]{flex-direction:column;gap:.4rem;max-width:calc(100vw - 24px);display:flex}.studio-autopilot__save-work[data-v-86b60d19]{flex:none}.studio-autopilot__save-work--check[data-v-86b60d19]{opacity:var(--v-disabled-opacity)}.studio-autopilot__save-symbol[data-v-86b60d19]{width:34px;height:32px;position:relative}.studio-autopilot__save-symbol-disk[data-v-86b60d19],.studio-autopilot__save-symbol-commit[data-v-86b60d19]{opacity:.72;position:absolute}.studio-autopilot__save-symbol-disk[data-v-86b60d19]{bottom:0;left:0}.studio-autopilot__save-symbol-commit[data-v-86b60d19]{top:0;right:0}.studio-autopilot__project-panel[data-v-86b60d19],.studio-autopilot__dashboard-shell[data-v-86b60d19],.studio-autopilot__right-pane-page[data-v-86b60d19],.studio-autopilot__session-tool-pane[data-v-86b60d19],.studio-autopilot__session-tool-content[data-v-86b60d19]{min-width:0;height:100%;min-height:0}.studio-autopilot__project-panel[data-v-86b60d19]{contain:strict;position:relative;overflow:hidden}.studio-autopilot__right-pane-page[data-v-86b60d19]{overflow:auto}.studio-autopilot__session-tool-pane[data-v-86b60d19]{grid-template-rows:auto minmax(0,1fr);display:grid}.studio-autopilot__learning-code-check[data-v-86b60d19]{--code-check-tone:rgb(var(--v-theme-primary));--code-check-container:color-mix(in srgb, var(--v64-surface-container-high,rgb(var(--v-theme-surface))) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:var(--code-check-container);border:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));border-radius:var(--v64-shape-lg,16px);bottom:var(--v64-space-3,12px);box-shadow:var(--v64-elevation-3,0 4px 12px #00000029);align-items:center;gap:var(--v64-space-2,8px) var(--v64-space-3,12px);margin:var(--v64-space-2,8px) var(--v64-space-4,16px) var(--v64-space-3,12px);padding:var(--v64-space-2,8px) var(--v64-space-2,8px) var(--v64-space-2,8px) var(--v64-space-3,12px);z-index:2;transition:background-color var(--v64-duration-medium,.3s) var(--v64-ease-standard,ease), border-color var(--v64-duration-medium,.3s) var(--v64-ease-standard,ease);flex-wrap:wrap;display:flex;position:sticky;overflow:hidden}.studio-autopilot__learning-code-check.is-checking[data-v-86b60d19]{--code-check-container:var(--v64-primary-container,rgba(var(--v-theme-primary), .14))}.studio-autopilot__learning-code-check.is-passed[data-v-86b60d19]{--code-check-tone:rgb(var(--v-theme-success));--code-check-container:var(--v64-success-container,rgba(var(--v-theme-success), .14));border-color:rgba(var(--v-theme-success), .45)}.studio-autopilot__learning-code-check.is-not-yet[data-v-86b60d19]{--code-check-tone:var(--v64-on-learning-container,#6b5000);--code-check-container:var(--v64-learning-container,#f5c51838);border-color:#f5c51899}.studio-autopilot__learning-code-check.is-blocked[data-v-86b60d19]{--code-check-tone:rgb(var(--v-theme-error));--code-check-container:var(--v64-error-container,rgba(var(--v-theme-error), .12));border-color:rgba(var(--v-theme-error), .4)}.studio-autopilot__learning-code-badge[data-v-86b60d19]{background:var(--code-check-tone);border-radius:var(--v64-shape-md,12px);color:rgb(var(--v-theme-surface));flex:none;place-items:center;width:36px;height:36px;display:grid}.studio-autopilot__learning-code-check.is-not-yet .studio-autopilot__learning-code-badge[data-v-86b60d19]{background:var(--v64-learning,#f5c518);color:var(--v64-on-learning,#2b2100)}.studio-autopilot__learning-code-badge svg[data-v-86b60d19]{fill:currentColor;width:20px;height:20px}.studio-autopilot__learning-code-check.is-checking .studio-autopilot__learning-code-badge svg[data-v-86b60d19]{animation:1.2s linear infinite studio-autopilot-code-spin-86b60d19}.studio-autopilot__learning-code-check.is-passed .studio-autopilot__learning-code-badge[data-v-86b60d19]{animation:studio-autopilot-code-pop-86b60d19 var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out)}.studio-autopilot__learning-code-status[data-v-86b60d19]{flex:14rem;min-width:0;margin:0}.studio-autopilot__learning-code-status p[data-v-86b60d19]{overflow-wrap:anywhere;margin:0}.studio-autopilot__learning-code-title[data-v-86b60d19]{color:color-mix(in srgb, var(--code-check-tone) 62%, rgb(var(--v-theme-on-surface)));font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);font-weight:600}.studio-autopilot__learning-code-check.is-idle .studio-autopilot__learning-code-title[data-v-86b60d19],.studio-autopilot__learning-code-check.is-checking .studio-autopilot__learning-code-title[data-v-86b60d19]{color:inherit}.studio-autopilot__learning-code-message[data-v-86b60d19]{color:var(--v64-on-surface-variant,rgba(var(--v-theme-on-surface), .72));font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);font-weight:400}.studio-autopilot__learning-code-check:not(.is-idle):not(.is-checking) .studio-autopilot__learning-code-message[data-v-86b60d19]{color:rgb(var(--v-theme-on-surface))}.studio-autopilot__learning-code-button[data-v-86b60d19]{letter-spacing:0;text-transform:none;padding-inline:20px}.studio-autopilot__learning-code-progress[data-v-86b60d19]{bottom:0;left:0;right:0;position:absolute!important}@keyframes studio-autopilot-code-spin-86b60d19{to{transform:rotate(360deg)}}@keyframes studio-autopilot-code-pop-86b60d19{0%{transform:scale(.6)}60%{transform:scale(1.12)}to{transform:none}}@media (width<=599px){.studio-autopilot__learning-code-check[data-v-86b60d19]{margin-inline:var(--v64-space-2,8px);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.studio-autopilot__learning-code-button[data-v-86b60d19]{padding-inline:14px}.studio-autopilot__learning-code-check.is-idle .studio-autopilot__learning-code-message[data-v-86b60d19]{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}}@media (prefers-reduced-motion:reduce){.studio-autopilot__learning-code-check[data-v-86b60d19],.studio-autopilot__learning-code-check .studio-autopilot__learning-code-badge[data-v-86b60d19],.studio-autopilot__learning-code-check .studio-autopilot__learning-code-badge svg[data-v-86b60d19]{transition:none;animation:none!important}}.studio-autopilot__architecture-pane[data-v-86b60d19]{grid-template-rows:minmax(0,1fr);overflow:hidden}.studio-autopilot__session-tool-header[data-v-86b60d19]{background:var(--v64-surface-container-low);border-bottom:1px solid var(--v64-outline-variant);min-height:3rem;padding:var(--v64-space-1) var(--v64-space-2)}.studio-autopilot__session-tool-pane>.studio-autopilot__right-pane-page[data-v-86b60d19]{padding:var(--v64-space-3) var(--v64-space-4) var(--v64-space-4)}.studio-autopilot__session-tool-content[data-v-86b60d19]{overflow:hidden}.studio-autopilot__preview-launch[data-v-86b60d19]{height:100%}@media (width>=981px){.studio-autopilot[data-v-86b60d19]{gap:var(--studio-home-project-gap,.75rem);grid-template-columns:var(--studio-home-chat-column-width,32rem) minmax(0, 1fr)}.studio-autopilot--chat-collapsed[data-v-86b60d19]{grid-template-columns:0 minmax(0,1fr);gap:0}}@media (width<=980px){.studio-autopilot[data-v-86b60d19]:not(.studio-autopilot--chat-collapsed){grid-template-columns:minmax(0,1fr) 0}.studio-autopilot:not(.studio-autopilot--chat-collapsed) .studio-autopilot__project-panel[data-v-86b60d19]{visibility:hidden}}@media (pointer:coarse){.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-86b60d19]{min-width:3rem;min-height:3rem}}.studio-autopilot__voice-feedback[data-v-86b60d19]{flex:100%;min-width:0}.studio-autopilot__architecture-file[data-v-86b60d19]{background:rgb(var(--v-theme-surface));border-radius:12px;flex-direction:column;height:min(84dvh,850px);min-height:0;display:flex;overflow:hidden}.studio-autopilot__architecture-file>header[data-v-86b60d19]{border-bottom:1px solid rgba(var(--v-theme-on-surface), .12);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.studio-autopilot__architecture-file>header strong[data-v-86b60d19]{overflow-wrap:anywhere;font-size:14px}.studio-autopilot__architecture-file>.vibe64-source-editor[data-v-86b60d19]{flex:1;min-height:0}.vibe64-codex-session[data-v-25875427]{min-width:0;height:100%;min-height:0;position:relative}.vibe64-codex-session--headless[data-v-25875427]{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.vibe64-codex-session--focused[data-v-25875427] .vibe64-terminal-surface{border-color:rgba(var(--v-theme-primary), .72)}.vibe64-codex-session__drop-overlay[data-v-25875427],.vibe64-codex-session__start-panel[data-v-25875427]{justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-codex-session__drop-overlay[data-v-25875427]{background:rgba(var(--v-theme-scrim,var(--v-theme-on-surface)), .68);pointer-events:none;z-index:5}.vibe64-codex-session__drop-card[data-v-25875427]{align-items:center;gap:.7rem;padding:1rem 1.15rem;display:flex}.vibe64-codex-session__start-panel[data-v-25875427]{background:rgba(var(--v-theme-scrim), .8);z-index:3}.vibe64-codex-session__start-card[data-v-25875427]{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.85rem;width:100%;max-width:min(42rem,100%);padding:1rem;display:grid}.vibe64-codex-session__start-icon[data-v-25875427]{background:rgba(var(--v-theme-primary), .14);color:rgb(var(--v-theme-primary));border-radius:50%;justify-content:center;align-items:center;width:3rem;height:3rem;display:flex}.vibe64-codex-session__start-copy[data-v-25875427]{gap:.15rem;min-width:0;display:grid}.vibe64-codex-session__start-copy strong[data-v-25875427]{font-size:.95rem}.vibe64-codex-session__start-copy span[data-v-25875427]{color:rgba(var(--v-theme-on-surface), .72);font-size:.8rem;line-height:1.35}.vibe64-codex-session__command[data-v-25875427]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vibe64-codex-session__start-action[data-v-25875427]{min-inline-size:10rem}.vibe64-codex-session__attachment-action[data-v-25875427]{min-width:2.5rem;min-height:2.5rem}@media (pointer:coarse){.vibe64-codex-session__attachment-action[data-v-25875427]{min-width:3rem;min-height:3rem}}@media (width<=700px){.vibe64-codex-session__start-card[data-v-25875427]{grid-template-columns:auto minmax(0,1fr)}.vibe64-codex-session__start-action[data-v-25875427]{grid-column:1/-1;width:100%}}.vibe64-native-agent-session[data-v-957305bf]{block-size:100%;min-block-size:0;min-inline-size:0;position:relative}.vibe64-native-agent-session--headless[data-v-957305bf]{block-size:0;inline-size:0;position:absolute;overflow:hidden}.vibe64-native-agent-session__drop-overlay[data-v-957305bf]{background:rgba(var(--v-theme-surface), .8);pointer-events:none;z-index:3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.vibe64-native-agent-session__drop-card[data-v-957305bf]{align-items:center;gap:.5rem;padding:1rem;display:flex}.vibe64-native-agent-session__start-panel[data-v-957305bf]{justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-native-agent-session__start-card[data-v-957305bf]{max-inline-size:48rem;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.9rem;width:100%;padding:1rem;display:grid}.vibe64-native-agent-session__start-icon[data-v-957305bf]{background:rgb(var(--v-theme-secondary-container));color:rgb(var(--v-theme-on-secondary-container));border-radius:50%;justify-content:center;align-items:center;width:3.25rem;height:3.25rem;display:flex}.vibe64-native-agent-session__start-copy[data-v-957305bf]{gap:.2rem;display:grid}.vibe64-native-agent-session__start-copy span[data-v-957305bf],.vibe64-native-agent-session__command[data-v-957305bf]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));font-size:.82rem}@media (width<=600px){.vibe64-native-agent-session__start-card[data-v-957305bf]{grid-template-columns:auto minmax(0,1fr)}.vibe64-native-agent-session__start-action[data-v-957305bf]{grid-column:1/-1}}.studio-session-renewal[data-v-89b9be36]{max-height:min(46rem,100dvh - 2rem)}.studio-session-renewal__header[data-v-89b9be36],.studio-session-renewal__heading[data-v-89b9be36],.studio-session-renewal__assurance[data-v-89b9be36],.studio-session-renewal__success[data-v-89b9be36],.studio-session-renewal__progress-copy[data-v-89b9be36]{align-items:center;display:flex}.studio-session-renewal__header[data-v-89b9be36]{justify-content:space-between;gap:1rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__heading[data-v-89b9be36]{gap:.75rem;min-width:0}.studio-session-renewal__heading>span[data-v-89b9be36]:last-child,.studio-session-renewal__assurance>span[data-v-89b9be36],.studio-session-renewal__success>span[data-v-89b9be36]{gap:.12rem;min-width:0;display:grid}.studio-session-renewal__heading h2[data-v-89b9be36]{margin:0}.studio-session-renewal__subtitle[data-v-89b9be36]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__icon[data-v-89b9be36]{background:rgba(var(--v-theme-primary), .12);color:rgb(var(--v-theme-primary));border-radius:50%;flex:none;justify-content:center;align-items:center;width:2.6rem;height:2.6rem;display:inline-flex}.studio-session-renewal__body[data-v-89b9be36]{gap:1rem;min-height:22rem;padding:1.25rem;display:grid}.studio-session-renewal__lead[data-v-89b9be36],.studio-session-renewal__supporting[data-v-89b9be36]{overflow-wrap:anywhere;margin:0}.studio-session-renewal__lead[data-v-89b9be36]{color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__supporting[data-v-89b9be36]{color:rgba(var(--v-theme-on-surface), .7)}.studio-session-renewal__assurance[data-v-89b9be36],.studio-session-renewal__success[data-v-89b9be36]{gap:.75rem;padding:1rem;line-height:1.45}.studio-session-renewal__skeleton[data-v-89b9be36]{gap:1rem;display:grid}.studio-session-renewal__progress-copy[data-v-89b9be36]{align-items:flex-start;gap:.25rem;display:grid}.studio-session-renewal__progress-copy span[data-v-89b9be36]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__progress-line[data-v-89b9be36]{margin-block:.1rem .25rem}.studio-session-renewal__steps[data-v-89b9be36]{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.studio-session-renewal__steps li[data-v-89b9be36]{color:rgba(var(--v-theme-on-surface), .58);border-radius:.75rem;align-items:center;gap:.7rem;min-height:2.75rem;padding:.55rem .7rem;display:flex}.studio-session-renewal__step--active[data-v-89b9be36]{background:rgba(var(--v-theme-primary), .1);color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__step--complete[data-v-89b9be36]{color:rgb(var(--v-theme-primary))}.studio-session-renewal__step-icon[data-v-89b9be36]{flex:none;justify-content:center;align-items:center;width:1.25rem;display:inline-flex}.studio-session-renewal__draft[data-v-89b9be36]{min-width:0}.studio-session-renewal__notice[data-v-89b9be36]{margin:0}.studio-session-renewal__notice-copy[data-v-89b9be36]{gap:.25rem;display:grid}.studio-session-renewal__source-details[data-v-89b9be36]{grid-template-columns:max-content minmax(0,1fr);gap:.25rem .75rem;margin:.75rem 0 0;display:grid}.studio-session-renewal__source-details dt[data-v-89b9be36]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__source-details dd[data-v-89b9be36]{overflow-wrap:anywhere;min-width:0;margin:0}.studio-session-renewal__notice-with-action[data-v-89b9be36]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.studio-session-renewal__notice-with-action .studio-session-renewal__notice-copy[data-v-89b9be36]{flex:18rem}.studio-session-renewal__inline-actions[data-v-89b9be36]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.studio-session-renewal__actions[data-v-89b9be36]{flex-wrap:wrap;gap:.5rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__actions-spacer[data-v-89b9be36]{flex:auto}.studio-session-renewal--fullscreen[data-v-89b9be36]{height:100dvh;max-height:100dvh}.studio-session-renewal--fullscreen .studio-session-renewal__body[data-v-89b9be36]{min-height:0;padding:1rem}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-89b9be36],.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-89b9be36]{align-items:stretch}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-89b9be36]>*,.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-89b9be36]>:last-child{flex:100%}.studio-session-renewal__actions--compact[data-v-89b9be36]{align-items:stretch}.studio-session-renewal__actions--compact .studio-session-renewal__actions-spacer[data-v-89b9be36]{display:none}.studio-session-renewal__actions--compact .studio-session-renewal__action[data-v-89b9be36]{flex:calc(50% - .25rem)}.studio-session-renewal__actions--compact .studio-session-renewal__action--primary[data-v-89b9be36]{flex-basis:100%}@media (prefers-reduced-motion:reduce){.studio-session-renewal__progress-line[data-v-89b9be36]{display:none}}.studio-ai-session-runtime[data-v-d9417d33]{min-width:0;max-width:100%;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__tab-terminal[data-v-d9417d33]{min-width:0;height:100%;min-height:0}.studio-ai-sessions__tab-terminal[data-v-d9417d33] .studio-ai-sessions__codex-terminal-shell,.studio-ai-sessions__tab-terminal[data-v-d9417d33] .studio-ai-sessions__codex-terminal{height:100%}.studio-ai-sessions__terminal-unavailable[data-v-d9417d33]{color:rgba(var(--v-theme-on-surface), .68);text-align:center;align-content:center;justify-items:center;gap:.4rem;height:100%;padding:2rem;display:grid}.studio-ai-sessions__terminal-unavailable strong[data-v-d9417d33]{color:rgb(var(--v-theme-on-surface))}.studio-ai-sessions__terminal-unavailable span[data-v-d9417d33]{max-width:32rem}.studio-ai-sessions__empty-main[data-v-d20137a0]{position:relative}.studio-ai-sessions__empty-main>.studio-ai-sessions__empty-host-conversation[data-v-d20137a0]{grid-row:2/-1}.studio-ai-sessions[data-v-d20137a0]{gap:.85rem;height:100%;min-height:0;display:grid;position:relative;overflow:hidden}.studio-ai-sessions--autopilot[data-v-d20137a0]{box-shadow:none;background:0 0;grid-template-rows:minmax(0,1fr);gap:0;padding:0;border-radius:0!important}.studio-ai-sessions__empty-layout[data-v-d20137a0]{gap:var(--studio-home-project-gap,.75rem);min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__chat-column-separator[data-v-d20137a0]{cursor:col-resize;bottom:0;left:var(--studio-home-chat-column-width,32rem);touch-action:none;-webkit-user-select:none;user-select:none;width:var(--studio-home-project-gap,.75rem);z-index:10;background:0 0;outline:none;position:absolute;top:0}.studio-ai-sessions__chat-column-separator[data-v-d20137a0]:before{background:rgba(var(--v-theme-on-surface), .14);content:"";width:1px;transition:background-color .12s,width .12s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.studio-ai-sessions__chat-column-separator[data-v-d20137a0]:hover:before,.studio-ai-sessions__chat-column-separator[data-v-d20137a0]:focus-visible:before,.studio-ai-sessions__chat-column-separator--resizing[data-v-d20137a0]:before{background:rgb(var(--v-theme-primary));width:2px}.studio-ai-sessions--resizing[data-v-d20137a0]{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.studio-ai-sessions__empty-main[data-v-d20137a0],.studio-ai-sessions__empty-project-panel[data-v-d20137a0]{background:rgb(var(--v-theme-surface));border:1px solid rgba(var(--v-theme-outline), .14);border-radius:14px;min-width:0;min-height:0;overflow:hidden;box-shadow:0 .75rem 2rem #0f172a0f}.studio-ai-sessions__empty-main[data-v-d20137a0],.studio-ai-sessions__empty-project-panel[data-v-d20137a0],.studio-ai-sessions__preview-empty-pane[data-v-d20137a0]{display:grid}.studio-ai-sessions__empty-main[data-v-d20137a0]{grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:.16rem;padding:.05rem .65rem .18rem;overflow:visible}.studio-ai-sessions__empty-session-header[data-v-d20137a0]{gap:.28rem;min-width:0;display:grid}.studio-ai-sessions__empty-chat-body[data-v-d20137a0]{scrollbar-gutter:stable;align-items:start;min-height:0;padding:.25rem .1rem 0 0;display:grid;overflow:hidden}.studio-ai-sessions__empty-hint[data-v-d20137a0]{background:rgba(var(--v-theme-primary), .08);border:1px solid rgba(var(--v-theme-primary), .16);color:rgba(var(--v-theme-on-surface), .76);border-radius:10px;max-width:100%;padding:.55rem .65rem;font-size:.86rem;line-height:1.35}.studio-ai-sessions__empty-thinking[data-v-d20137a0]{color:rgba(var(--v-theme-on-surface), .72);align-items:center;gap:.38rem;min-height:1.35rem;font-size:.86rem;display:flex}.studio-ai-sessions__empty-thinking--empty[data-v-d20137a0]{visibility:hidden}.studio-ai-sessions__empty-thinking-mark[data-v-d20137a0]{background:rgb(var(--v-theme-primary));box-shadow:0 0 0 .24rem rgba(var(--v-theme-primary), .12);border-radius:999px;width:.48rem;height:.48rem}.studio-ai-sessions__empty-runtime-status[data-v-d20137a0]{display:none}.studio-ai-sessions__empty-composer[data-v-d20137a0]{min-width:0;min-height:.35rem}.studio-ai-sessions__dashboard-empty-pane[data-v-d20137a0]{scrollbar-gutter:stable;align-content:start;gap:.75rem;min-width:0;min-height:0;padding:.85rem;display:grid;overflow-y:auto}.studio-ai-sessions__preview-empty-pane[data-v-d20137a0]{place-items:center;min-width:0;min-height:0;padding:1rem}.studio-ai-sessions__preview-empty-content[data-v-d20137a0]{text-align:center;place-items:center;gap:.65rem;max-width:min(100%,26rem);display:grid}.studio-ai-sessions__preview-empty-title[data-v-d20137a0]{color:rgba(var(--v-theme-on-surface), .78);margin:0;font-size:.98rem;line-height:1.35}.studio-ai-sessions__preview-empty-detail[data-v-d20137a0]{color:rgba(var(--v-theme-on-surface), .62);max-width:24rem;margin:-.25rem 0 0;font-size:.86rem;line-height:1.35}.studio-ai-sessions__preview-empty-loading[data-v-d20137a0]{width:10rem}.studio-ai-sessions__preview-empty-skeleton[data-v-d20137a0]{width:100%}.studio-ai-sessions__error-overlay[data-v-d20137a0]{z-index:12;max-width:min(42rem,100% - 1.7rem);position:absolute;top:.85rem;left:.85rem}.studio-ai-sessions-error-enter-active[data-v-d20137a0],.studio-ai-sessions-error-leave-active[data-v-d20137a0]{transition:opacity .12s,transform .12s}.studio-ai-sessions-error-enter-from[data-v-d20137a0],.studio-ai-sessions-error-leave-to[data-v-d20137a0]{opacity:0;transform:translateY(-.35rem)}.studio-ai-sessions__runtime-stack[data-v-d20137a0]{min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions--autopilot .studio-ai-sessions__runtime-stack[data-v-d20137a0]{height:100%}@media (width>=981px){.studio-ai-sessions[data-v-d20137a0]{grid-template-rows:auto minmax(0,1fr)}.studio-ai-sessions--autopilot[data-v-d20137a0]{grid-template-rows:minmax(0,1fr)}.studio-ai-sessions__empty-layout[data-v-d20137a0]{grid-template-columns:var(--studio-home-chat-column-width,32rem) minmax(0, 1fr)}.studio-ai-sessions__empty-layout--chat-collapsed[data-v-d20137a0]{grid-template-columns:minmax(0,1fr)}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-d20137a0]{display:none}.studio-ai-sessions__runtime-stack[data-v-d20137a0]{min-height:0}.studio-ai-sessions__empty-layout--dashboard[data-v-d20137a0]{align-items:stretch;height:100%;overflow:hidden}}@media (width<=980px){.studio-ai-sessions__chat-column-separator[data-v-d20137a0]{display:none!important}.studio-ai-sessions__empty-layout[data-v-d20137a0]{grid-template-rows:minmax(0,1fr)}.studio-ai-sessions__empty-project-panel[data-v-d20137a0],.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-d20137a0]{display:none}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-project-panel[data-v-d20137a0]{display:grid}}.studio-ai-sessions--autopilot.studio-ai-sessions--unavailable[data-v-d20137a0]{grid-template-rows:auto minmax(0,1fr)}.training-course-creator[data-v-c5c653a1]{gap:var(--v64-space-4,16px);min-width:0;padding:var(--v64-space-5,24px);border-radius:var(--v64-shape-xl,28px);background:var(--v64-surface-container-high);box-shadow:var(--v64-elevation-2);animation:tcc-in-c5c653a1 var(--v64-duration-medium,.3s) var(--v64-ease-emphasized-decelerate) both;flex-direction:column;display:flex}.training-course-creator p[data-v-c5c653a1],.training-course-creator h3[data-v-c5c653a1]{overflow-wrap:anywhere;white-space:normal}.training-course-creator[data-v-c5c653a1] .v-label{white-space:normal;overflow-wrap:anywhere;opacity:1}.training-course-creator[data-v-c5c653a1] .v-btn{text-transform:none;letter-spacing:.01em;font-weight:600}.training-course-creator[data-v-c5c653a1] .v-btn--variant-flat.v-btn--disabled{background:rgba(var(--v-theme-on-surface), .12)!important;color:rgba(var(--v-theme-on-surface), .5)!important}.tcc-header[data-v-c5c653a1]{align-items:flex-start;gap:var(--v64-space-4,16px);display:flex}.tcc-header__icon[data-v-c5c653a1]{border-radius:var(--v64-shape-lg,16px);background:var(--v64-primary-container);width:52px;height:52px;color:var(--v64-on-primary-container);flex:none;place-items:center;display:grid}.tcc-header h3[data-v-c5c653a1]{margin:0 0 var(--v64-space-1,4px);font:var(--v64-type-headline-sm)}.tcc-header p[data-v-c5c653a1]{font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);margin:0}.tcc-steps[data-v-c5c653a1]{margin:0;padding:0;list-style:none}.tcc-step[data-v-c5c653a1]{gap:var(--v64-space-4,16px);padding-bottom:var(--v64-space-4,16px);display:flex;position:relative}.tcc-step[data-v-c5c653a1]:not(:last-child):before{content:"";background:var(--v64-outline-variant);border-radius:2px;width:2px;position:absolute;top:36px;bottom:4px;left:15px}.tcc-step__marker[data-v-c5c653a1]{width:32px;height:32px;font:var(--v64-type-label-lg);background:var(--v64-surface);color:var(--v64-on-surface-variant);border:2px solid var(--v64-outline);transition:background-color var(--v64-duration-medium) var(--v64-ease-standard), border-color var(--v64-duration-medium) var(--v64-ease-standard);border-radius:50%;flex:none;place-items:center;display:grid}.tcc-step--done .tcc-step__marker[data-v-c5c653a1]{background:var(--v64-primary);border-color:var(--v64-primary);color:var(--v64-on-primary)}.tcc-step__body[data-v-c5c653a1]{flex:1;min-width:0}.tcc-step__title[data-v-c5c653a1]{margin:4px 0 var(--v64-space-3,12px);font:var(--v64-type-title-md);color:var(--v64-on-surface);padding:0}.training-course-creator__topics[data-v-c5c653a1]{border:0;min-width:0;margin:0;padding:0}.tcc-topics[data-v-c5c653a1]{gap:var(--v64-space-2,8px);grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr));display:grid}.tcc-topic[data-v-c5c653a1]{padding:2px var(--v64-space-2,8px) 2px 0;border-radius:var(--v64-shape-md,12px);background:var(--v64-surface);border:1px solid var(--v64-outline-variant);transition:border-color var(--v64-duration-short) var(--v64-ease-standard), background-color var(--v64-duration-short) var(--v64-ease-standard)}.tcc-topic[data-v-c5c653a1]:hover{border-color:var(--v64-outline)}.tcc-topic--on[data-v-c5c653a1]{background:var(--v64-primary-container);border-color:color-mix(in srgb, var(--v64-primary) 55%, transparent)}.tcc-empty[data-v-c5c653a1]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-md,12px);background:var(--v64-surface);color:var(--v64-on-surface-variant);margin:4px 0 0}.training-course-creator__order[data-v-c5c653a1]{gap:var(--v64-space-2,8px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.training-course-creator__order li[data-v-c5c653a1]{align-items:center;gap:var(--v64-space-2,8px);padding:var(--v64-space-1,4px) var(--v64-space-2,8px) var(--v64-space-1,4px) var(--v64-space-3,12px);border-radius:var(--v64-shape-md,12px);background:var(--v64-surface);box-shadow:var(--v64-elevation-1);flex-wrap:wrap;display:flex}.tcc-order__index[data-v-c5c653a1]{border-radius:var(--v64-shape-sm,8px);background:var(--v64-learning-container);width:28px;height:28px;color:var(--v64-on-learning-container);font:var(--v64-type-label-lg);flex:none;place-items:center;display:grid}.tcc-order__name[data-v-c5c653a1]{overflow-wrap:anywhere;min-width:0;font:var(--v64-type-body-lg);flex:10rem}.tcc-order__moves[data-v-c5c653a1]{flex-wrap:wrap;display:inline-flex}.tcc-actions[data-v-c5c653a1]{justify-content:flex-end;gap:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.v-theme--dark .tcc-order__index{color:var(--v64-learning)}@keyframes tcc-in-c5c653a1{0%{opacity:0;transform:translateY(8px)scale(.99)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.training-course-creator[data-v-c5c653a1]{animation:none}}@container (width<=34rem){.training-course-creator[data-v-c5c653a1]{padding:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px)}.tcc-step[data-v-c5c653a1]{gap:var(--v64-space-3,12px)}.tcc-actions[data-v-c5c653a1] .v-btn{flex:auto}}.training-course-art[data-v-a28d3001]{isolation:isolate;height:112px;position:relative;overflow:hidden}.training-course-art svg[data-v-a28d3001]{width:100%;height:100%;display:block;position:absolute;inset:0}.training-course-art__monogram[data-v-a28d3001]{left:var(--v64-space-4,16px);bottom:var(--v64-space-3,12px);border-radius:var(--v64-shape-md,12px);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;letter-spacing:.02em;text-shadow:0 1px 2px #00000059;background:#fff3;border:1px solid #ffffff73;place-items:center;width:48px;height:48px;font:700 1.125rem/1 system-ui,sans-serif;display:grid;position:absolute}.training-progress-ring[data-v-8c0b2060]{flex:none;place-items:center;display:inline-grid;position:relative}.training-progress-ring svg[data-v-8c0b2060]{width:100%;height:100%;position:absolute;inset:0}.training-progress-ring__track[data-v-8c0b2060]{stroke:var(--training-ring-track,var(--v64-outline-variant,#7f7f7f33))}.training-progress-ring__indicator[data-v-8c0b2060]{stroke:var(--training-ring-color,var(--v64-primary,currentColor));transition:stroke-dasharray var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out)}.training-progress-ring__content[data-v-8c0b2060]{font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);font-variant-numeric:tabular-nums;position:relative}.training-course-page__earlier[data-v-36fe7d2b]{font:var(--v64-type-body-sm,400 .8125rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant);margin:2px 0 0}.training-course-page[data-v-36fe7d2b]{--tcp-node:40px;--tcp-done:rgb(var(--v-theme-success));--tcp-done-container:var(--v64-success-container,rgba(var(--v-theme-success), .14));--tcp-progress:var(--v64-learning,#f5c518);--tcp-progress-container:var(--v64-learning-container,#f5c51838);gap:var(--v64-space-4,16px);flex-direction:column;min-width:0;display:flex}.training-course-page p[data-v-36fe7d2b],.training-course-page code[data-v-36fe7d2b],.training-course-page strong[data-v-36fe7d2b],.training-course-page h3[data-v-36fe7d2b],.training-course-page h4[data-v-36fe7d2b]{white-space:normal;overflow-wrap:anywhere}.training-course-page__back[data-v-36fe7d2b]{margin-inline-start:calc(-1 * var(--v64-space-2,8px))}.training-course-page__back-btn[data-v-36fe7d2b]{letter-spacing:0;text-transform:none}.training-course-page__back-icon[data-v-36fe7d2b]{fill:currentColor;width:20px;height:20px;margin-inline-end:4px}.training-course-page__hero[data-v-36fe7d2b]{border-radius:var(--v64-shape-xl,28px);background:var(--v64-surface-container-low,rgb(var(--v-theme-surface)));border:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));box-shadow:var(--v64-elevation-1,0 1px 3px #0000001f);color:var(--v64-on-surface,rgb(var(--v-theme-on-surface)));animation:tcp-rise-36fe7d2b var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out) both;position:relative;overflow:hidden}.training-course-page__cover[data-v-36fe7d2b]{height:120px}.training-course-page__hero-body[data-v-36fe7d2b]{align-items:center;gap:var(--v64-space-4,16px);padding:var(--v64-space-4,16px) var(--v64-space-5,24px) var(--v64-space-5,24px);display:flex}.training-course-page__hero-text[data-v-36fe7d2b]{flex:auto;min-width:0}.training-course-page__eyebrow[data-v-36fe7d2b]{font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--v64-on-surface-variant,inherit);margin:0}.training-course-page__title[data-v-36fe7d2b]{margin:2px 0 var(--v64-space-2,8px);font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif)}.training-course-page__meta[data-v-36fe7d2b]{flex-wrap:wrap;gap:6px;display:flex}.training-course-page__chip[data-v-36fe7d2b]{border:1px solid var(--v64-outline,rgba(var(--v-theme-on-surface), .24));border-radius:var(--v64-shape-sm,8px);min-height:28px;font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);align-items:center;padding:0 10px;display:inline-flex}.training-course-page__chip code[data-v-36fe7d2b]{font:inherit;background:0 0;padding:0}.training-course-page__chip.is-muted[data-v-36fe7d2b]{color:var(--v64-on-surface-variant,inherit);border-style:dashed}.training-course-page__count[data-v-36fe7d2b]{margin:var(--v64-space-3,12px) 0 0;font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}.training-course-page__ring[data-v-36fe7d2b]{--training-ring-color:var(--v64-primary);--training-ring-track:color-mix(in srgb, var(--v64-primary,#6750a4) 16%, transparent)}.is-complete .training-course-page__ring[data-v-36fe7d2b]{--training-ring-color:rgb(var(--v-theme-success))}.training-course-page__ring-value[data-v-36fe7d2b]{font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit)}.training-course-page__ring-value strong[data-v-36fe7d2b]{font:var(--v64-type-title-lg,600 1.375rem/1.75rem system-ui, sans-serif);color:var(--v64-on-surface,inherit)}.training-course-page__next[data-v-36fe7d2b]{justify-content:space-between;align-items:center;gap:var(--v64-space-3,12px);padding:var(--v64-space-4,16px) var(--v64-space-4,16px) var(--v64-space-4,16px) var(--v64-space-5,24px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container,rgba(var(--v-theme-primary), .05));border:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));animation:tcp-rise-36fe7d2b var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out) 60ms both;flex-wrap:wrap;display:flex}.training-course-page__next.is-complete[data-v-36fe7d2b]{background:var(--tcp-done-container);border-color:#0000}.training-course-page__next-text[data-v-36fe7d2b]{flex:12rem;min-width:0}.training-course-page__next p[data-v-36fe7d2b]{margin:0}.training-course-page__next-label[data-v-36fe7d2b]{font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);letter-spacing:.06em;text-transform:uppercase;color:var(--v64-on-surface-variant,inherit)}.training-course-page__next-title[data-v-36fe7d2b]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}.training-course-page__next .v-btn[data-v-36fe7d2b]{letter-spacing:0;text-transform:none;padding-inline:24px}.training-course-page__topics[data-v-36fe7d2b]{gap:var(--v64-space-5,24px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.training-course-page__topic[data-v-36fe7d2b]{animation:tcp-rise-36fe7d2b var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate,ease-out) .12s both}.training-course-page__topic-head[data-v-36fe7d2b]{align-items:center;gap:var(--v64-space-3,12px);margin-bottom:var(--v64-space-3,12px);display:flex}.training-course-page__topic-index[data-v-36fe7d2b]{width:var(--tcp-node);height:var(--tcp-node);border-radius:var(--v64-shape-md,12px);background:var(--v64-primary-container,rgba(var(--v-theme-primary), .14));color:var(--v64-on-primary-container,rgb(var(--v-theme-primary)));font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif);flex:none;place-items:center;display:grid}.training-course-page__topic-text[data-v-36fe7d2b]{flex:auto;min-width:0}.training-course-page__topic-text h4[data-v-36fe7d2b]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif);margin:0}.training-course-page__topic-text p[data-v-36fe7d2b]{font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit);margin:0}.training-course-page__topic-done[data-v-36fe7d2b]{border-radius:var(--v64-shape-full,999px);background:var(--v64-surface-container-highest,rgba(var(--v-theme-primary), .11));font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);font-variant-numeric:tabular-nums;flex:none;padding:2px 10px}.training-course-page__empty[data-v-36fe7d2b]{margin:0 0 0 calc(var(--tcp-node) + var(--v64-space-3,12px));color:var(--v64-on-surface-variant,inherit)}.training-course-page__path[data-v-36fe7d2b]{margin:0;padding:0;list-style:none}.training-course-page__lesson[data-v-36fe7d2b]{gap:var(--v64-space-3,12px);padding-bottom:var(--v64-space-3,12px);display:flex;position:relative}.training-course-page__lesson[data-v-36fe7d2b]:before{content:"";top:calc(var(--tcp-node) + 6px);bottom:-6px;left:calc(var(--tcp-node) / 2 - 2px);background:var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));border-radius:2px;width:4px;position:absolute}.training-course-page__lesson[data-v-36fe7d2b]:last-child:before{display:none}.training-course-page__lesson.is-completed[data-v-36fe7d2b]:before{background:color-mix(in srgb, var(--tcp-done) 55%, transparent)}.training-course-page__node[data-v-36fe7d2b]{z-index:1;width:var(--tcp-node);height:var(--tcp-node);border:2px solid var(--v64-outline,rgba(var(--v-theme-on-surface), .24));background:var(--v64-surface,rgb(var(--v-theme-surface)));color:var(--v64-on-surface-variant,inherit);font:var(--v64-type-label-lg,500 .875rem/1.25rem system-ui, sans-serif);font-variant-numeric:tabular-nums;transition:transform var(--v64-duration-short,.15s) var(--v64-ease-standard,ease);border-radius:50%;flex:none;place-items:center;margin-top:6px;display:grid;position:relative}.training-course-page__node svg[data-v-36fe7d2b]{fill:currentColor;width:22px;height:22px}.is-completed>.training-course-page__node[data-v-36fe7d2b]{background:var(--tcp-done);color:rgb(var(--v-theme-on-success));box-shadow:0 3px 0 color-mix(in srgb, var(--tcp-done) 60%, #000);border-color:#0000}.is-in-progress>.training-course-page__node[data-v-36fe7d2b]{background:var(--tcp-progress);color:var(--v64-on-learning,#2b2100);box-shadow:0 3px 0 color-mix(in srgb, var(--tcp-progress) 60%, #000);border-color:#0000}.is-next>.training-course-page__node[data-v-36fe7d2b]{border-color:rgb(var(--v-theme-primary));color:rgb(var(--v-theme-primary))}.is-next>.training-course-page__node[data-v-36fe7d2b]:after{content:"";border:2px solid rgba(var(--v-theme-primary), .35);animation:tcp-pulse-36fe7d2b 2.4s var(--v64-ease-standard,ease) infinite;border-radius:50%;position:absolute;inset:-6px}.training-course-page__card[data-v-36fe7d2b]{align-items:center;gap:var(--v64-space-2,8px) var(--v64-space-3,12px);min-width:0;padding:var(--v64-space-3,12px) var(--v64-space-3,12px) var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);border:1px solid var(--v64-outline-variant,rgba(var(--v-theme-on-surface), .12));background:var(--v64-surface-container-low,rgb(var(--v-theme-surface)));transition:box-shadow var(--v64-duration-short,.15s) var(--v64-ease-standard,ease);flex-wrap:wrap;flex:auto;display:flex}.training-course-page__lesson:hover .training-course-page__card[data-v-36fe7d2b]{box-shadow:var(--v64-elevation-1,0 1px 3px #0000001f)}.training-course-page__lesson:hover>.training-course-page__node[data-v-36fe7d2b]{transform:scale(1.06)}.is-next>.training-course-page__card[data-v-36fe7d2b]{border-color:rgba(var(--v-theme-primary), .5);background:var(--v64-surface-container,rgba(var(--v-theme-primary), .05));box-shadow:var(--v64-elevation-1,0 1px 3px #0000001f)}.is-completed>.training-course-page__card[data-v-36fe7d2b]{background:color-mix(in srgb, var(--tcp-done) 5%, rgb(var(--v-theme-surface)))}.training-course-page__card-main[data-v-36fe7d2b]{flex:14rem;min-width:0}.training-course-page__lesson-title[data-v-36fe7d2b]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif);display:block}.training-course-page__lesson-meta[data-v-36fe7d2b]{font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit);margin:4px 0 0}.training-course-page__status[data-v-36fe7d2b]{border-radius:var(--v64-shape-full,999px);font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);background:var(--v64-surface-container-highest,rgba(var(--v-theme-on-surface), .08));color:var(--v64-on-surface,inherit);padding:1px 8px;display:inline-block}.training-course-page__status.is-completed[data-v-36fe7d2b]{background:var(--tcp-done-container);color:color-mix(in srgb, var(--tcp-done) 60%, rgb(var(--v-theme-on-surface)))}.training-course-page__status.is-in-progress[data-v-36fe7d2b]{background:var(--tcp-progress-container);color:var(--v64-on-learning-container,inherit)}.training-course-page__identity[data-v-36fe7d2b]{font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit);margin-top:6px}.training-course-page__identity summary[data-v-36fe7d2b]{cursor:pointer;border-radius:var(--v64-shape-xs,4px);width:fit-content}.training-course-page__identity summary[data-v-36fe7d2b]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.training-course-page__identity code[data-v-36fe7d2b]{border-radius:var(--v64-shape-sm,8px);background:var(--v64-surface-container-high,rgba(var(--v-theme-on-surface), .06));margin-top:4px;padding:6px 8px;font-size:.75rem;display:block}.training-course-page__start[data-v-36fe7d2b]{letter-spacing:0;text-transform:none}@keyframes tcp-rise-36fe7d2b{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes tcp-pulse-36fe7d2b{0%{opacity:.9;transform:scale(.92)}70%{opacity:0;transform:scale(1.18)}to{opacity:0}}@media (width<=599px){.training-course-page__hero-body[data-v-36fe7d2b]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px) var(--v64-space-4,16px);align-items:flex-start}.training-course-page__cover[data-v-36fe7d2b]{height:96px}.training-course-page__ring[data-v-36fe7d2b]{width:64px!important;height:64px!important}.training-course-page__ring-value strong[data-v-36fe7d2b]{font:var(--v64-type-title-md,600 1rem/1.5rem system-ui, sans-serif)}.training-course-page__title[data-v-36fe7d2b]{margin-bottom:var(--v64-space-1,4px);font:var(--v64-type-title-lg,600 1.375rem/1.75rem system-ui, sans-serif)}.training-course-page__next[data-v-36fe7d2b]{padding-inline-start:var(--v64-space-4,16px)}.training-course-page__next .v-btn[data-v-36fe7d2b]{flex:100%}}@media (prefers-reduced-motion:reduce){.training-course-page__hero[data-v-36fe7d2b],.training-course-page__next[data-v-36fe7d2b],.training-course-page__topic[data-v-36fe7d2b]{animation:none}.is-next>.training-course-page__node[data-v-36fe7d2b]:after{opacity:1;animation:none}.training-course-page__node[data-v-36fe7d2b],.training-course-page__card[data-v-36fe7d2b]{transition:none}}.tcc[data-v-ce747b72]{gap:var(--v64-space-4,16px);flex-direction:column;min-width:0;display:flex}.tcc p[data-v-ce747b72],.tcc code[data-v-ce747b72],.tcc strong[data-v-ce747b72]{white-space:normal;overflow-wrap:anywhere}.tcc[data-v-ce747b72] .v-btn{letter-spacing:.01em;text-transform:none;font-weight:600}.tcc__head h3[data-v-ce747b72]{margin:var(--v64-space-1,4px) 0;font:var(--v64-type-headline-sm)}.tcc__eyebrow[data-v-ce747b72]{align-items:center;gap:var(--v64-space-1,4px);font:var(--v64-type-label-md);letter-spacing:.08em;text-transform:uppercase;color:var(--v64-on-learning-container);margin:0;display:inline-flex}.tcc__intro[data-v-ce747b72]{max-width:40rem;font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);margin:0}.tcc__loading[data-v-ce747b72],.tcc__note[data-v-ce747b72],.tcc__progress[data-v-ce747b72],.tcc__failure[data-v-ce747b72]{align-items:flex-start;gap:var(--v64-space-2,8px);font:var(--v64-type-body-md);margin:0;display:flex}.tcc__note[data-v-ce747b72]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container);color:var(--v64-on-surface-variant)}.tcc__progress[data-v-ce747b72]{color:var(--v64-on-primary-container)}.tcc__failure[data-v-ce747b72]{color:rgb(var(--v-theme-error))}.tcc__topic[data-v-ce747b72]{gap:var(--v64-space-2,8px);flex-direction:column;display:flex}.tcc__topic-title[data-v-ce747b72]{align-items:center;gap:var(--v64-space-2,8px);font:var(--v64-type-title-md);margin:0;display:flex}.tcc__empty[data-v-ce747b72]{font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);margin:0}.tcc__list[data-v-ce747b72]{gap:var(--v64-space-2,8px);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.tcc__course[data-v-ce747b72]{justify-content:space-between;align-items:center;gap:var(--v64-space-3,12px);padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);border:1px solid var(--v64-outline-variant);background:var(--v64-surface-container-low);flex-wrap:wrap;display:flex}.tcc__course-main[data-v-ce747b72]{gap:var(--v64-space-1,4px);flex-direction:column;flex:18rem;min-width:0;display:flex}.tcc__title[data-v-ce747b72]{font:var(--v64-type-title-md)}.tcc__chips[data-v-ce747b72]{gap:var(--v64-space-1,4px);flex-wrap:wrap;margin:0;display:flex}.tcc__chip[data-v-ce747b72]{border-radius:var(--v64-shape-sm,8px);min-height:24px;font:var(--v64-type-label-md);background:var(--v64-surface-container-high);color:var(--v64-on-surface-variant);align-items:center;gap:4px;padding:1px 8px;display:inline-flex}.tcc__chip code[data-v-ce747b72]{font-size:.75rem}.tcc__chip--enabled[data-v-ce747b72]{background:var(--v64-success-container);color:var(--v64-on-surface)}.tcc__chip--preview[data-v-ce747b72]{background:var(--v64-primary-container);color:var(--v64-on-primary-container)}.tcc__chip--disabled[data-v-ce747b72]{background:var(--v64-surface-container-highest)}.tcc__chip--update[data-v-ce747b72]{background:var(--v64-learning);color:var(--v64-on-learning)}.tcc__detail[data-v-ce747b72]{font:var(--v64-type-body-sm,400 .8125rem/1.25rem system-ui, sans-serif);color:var(--v64-on-surface-variant);margin:0}.tcc__actions[data-v-ce747b72]{gap:var(--v64-space-2,8px);flex:none;display:flex}.v-theme--dark .tcc__eyebrow{color:var(--v64-learning)}@container (width<=34rem){.tcc__actions[data-v-ce747b72],.tcc__actions[data-v-ce747b72] .v-btn{flex:100%}}.training-lesson-picker[data-v-e0ab4c87]{--tlp-gap:var(--v64-space-4,16px);gap:var(--v64-space-5,24px);min-width:0;padding:var(--v64-space-4,16px);color:var(--v64-on-surface);flex-direction:column;display:flex;overflow:auto;container-type:inline-size}.training-lesson-picker p[data-v-e0ab4c87],.training-lesson-picker code[data-v-e0ab4c87],.training-lesson-picker dd[data-v-e0ab4c87],.training-lesson-picker h3[data-v-e0ab4c87],.training-lesson-picker[data-v-e0ab4c87] .v-label{white-space:normal;overflow-wrap:anywhere}.training-lesson-picker[data-v-e0ab4c87] .v-btn{letter-spacing:.01em;text-transform:none;font-weight:600}.training-lesson-picker[data-v-e0ab4c87] .v-btn--variant-flat.v-btn--disabled{background:rgba(var(--v-theme-on-surface), .12)!important;color:rgba(var(--v-theme-on-surface), .5)!important}.training-lesson-picker[data-v-e0ab4c87] .v-btn--variant-flat.v-btn--disabled .v-btn__overlay{opacity:0}.tlp-eyebrow[data-v-e0ab4c87]{align-items:center;gap:var(--v64-space-1,4px);font:var(--v64-type-label-md);letter-spacing:.08em;text-transform:uppercase;color:var(--v64-on-surface-variant);margin:0;display:inline-flex}.tlp-eyebrow--learning[data-v-e0ab4c87]{color:var(--v64-on-learning-container)}.tlp-hero[data-v-e0ab4c87]{justify-content:space-between;align-items:flex-end;gap:var(--v64-space-4,16px);isolation:isolate;padding:var(--v64-space-5,24px);border-radius:var(--v64-shape-xl,28px);background:radial-gradient(120% 140% at 100% 0%, var(--v64-learning-container) 0%, transparent 55%), linear-gradient(135deg, var(--v64-surface-container-high) 0%, var(--v64-primary-container) 100%);flex-wrap:wrap;display:flex;position:relative;overflow:hidden}.tlp-hero__art[data-v-e0ab4c87]{z-index:-1;opacity:.95;width:260px;height:auto;position:absolute;top:-6px;right:-8px}.tlp-hero__sun[data-v-e0ab4c87]{fill:var(--v64-learning);opacity:.35}.tlp-hero__trail[data-v-e0ab4c87]{fill:none;stroke:var(--v64-on-primary-container);stroke-width:3px;stroke-dasharray:2 8;stroke-linecap:round;opacity:.45}.tlp-hero__stop[data-v-e0ab4c87]{fill:var(--v64-surface);stroke:var(--v64-on-primary-container);stroke-width:3px;opacity:.9}.tlp-hero__stop--done[data-v-e0ab4c87]{fill:var(--v64-primary);stroke:var(--v64-primary);opacity:.55}.tlp-hero__stop[data-v-e0ab4c87]:not(.tlp-hero__stop--done){fill:var(--v64-learning);stroke:var(--v64-on-learning);opacity:.85}.tlp-hero__tick[data-v-e0ab4c87]{fill:none;stroke:var(--v64-on-learning);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;opacity:.8}.tlp-hero__text[data-v-e0ab4c87]{flex:18rem;min-width:0;max-width:34rem}.tlp-hero__text h2[data-v-e0ab4c87]{margin:var(--v64-space-1,4px) 0 var(--v64-space-2,8px);font:var(--v64-type-display-sm);letter-spacing:-.01em}.tlp-hero__text p[data-v-e0ab4c87]{font:var(--v64-type-body-lg);color:var(--v64-on-surface-variant);margin:0}.tlp-hero__text .tlp-eyebrow[data-v-e0ab4c87]{color:var(--v64-on-learning-container)}.tlp-hero__text .tlp-hero__meta[data-v-e0ab4c87]{margin-top:var(--v64-space-3,12px);font:var(--v64-type-label-lg);color:var(--v64-on-primary-container)}.tlp-hero__refresh[data-v-e0ab4c87]{flex:none;background:var(--v64-surface)!important}.training-lesson-picker--course-open .tlp-hero[data-v-e0ab4c87]{padding-block:var(--v64-space-4,16px)}.training-lesson-picker--course-open .tlp-hero__text h2[data-v-e0ab4c87]{font:var(--v64-type-headline-sm)}.training-lesson-picker--course-open .tlp-hero__text>p[data-v-e0ab4c87]:not(.tlp-eyebrow){display:none}.tlp-note[data-v-e0ab4c87]{align-items:flex-start;gap:var(--v64-space-3,12px);padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container);color:var(--v64-on-surface-variant);font:var(--v64-type-body-md);margin:0;display:flex}.tlp-note[data-v-e0ab4c87] .v-icon,.tlp-note[data-v-e0ab4c87] .v-progress-circular{flex:none;margin-top:1px}.tlp-note--warn[data-v-e0ab4c87]{background:var(--v64-learning-container);color:var(--v64-on-learning-container)}.tlp-note--progress[data-v-e0ab4c87]{background:var(--v64-primary-container);color:var(--v64-on-primary-container)}.tlp-saved[data-v-e0ab4c87]{align-items:flex-start;gap:var(--v64-space-5,24px);isolation:isolate;padding:var(--v64-space-5,24px);border-radius:var(--v64-shape-xl,28px);border:1px solid color-mix(in srgb, var(--v64-learning) 45%, transparent);background:linear-gradient(120deg, var(--v64-learning-container) 0%, var(--v64-surface-container-low) 70%);box-shadow:var(--v64-elevation-1);animation:tlp-rise-e0ab4c87 var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate) both;flex-wrap:wrap;display:flex;position:relative;overflow:hidden}.tlp-saved__glow[data-v-e0ab4c87]{z-index:-1;background:radial-gradient(circle, color-mix(in srgb, var(--v64-learning) 45%, transparent) 0%, transparent 70%);border-radius:50%;width:260px;height:260px;position:absolute;top:-80px;right:-60px}.tlp-saved__ring[data-v-e0ab4c87]{--training-ring-color:var(--v64-primary);--training-ring-track:color-mix(in srgb, var(--v64-primary) 16%, transparent)}.tlp-saved__ring-value[data-v-e0ab4c87]{font:var(--v64-type-label-lg);color:var(--v64-on-surface-variant)}.tlp-saved__ring-value strong[data-v-e0ab4c87]{font:var(--v64-type-headline-sm);color:var(--v64-on-surface)}.tlp-saved__badge[data-v-e0ab4c87]{background:var(--v64-learning);width:96px;height:96px;color:var(--v64-on-learning);box-shadow:var(--v64-elevation-2);border-radius:50%;flex:none;place-items:center;display:grid}.tlp-saved__body[data-v-e0ab4c87]{gap:var(--v64-space-2,8px);flex-direction:column;flex:16rem;min-width:0;display:flex}.tlp-saved__title[data-v-e0ab4c87]{font:var(--v64-type-headline-sm);margin:0}.tlp-saved__meta[data-v-e0ab4c87]{font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);margin:0}.tlp-saved__status[data-v-e0ab4c87]{align-items:center;gap:var(--v64-space-2,8px);font:var(--v64-type-body-lg);margin:0;display:flex}.tlp-saved .tlp-note[data-v-e0ab4c87]{background:color-mix(in srgb, var(--v64-surface) 70%, transparent)}.tlp-saved__actions[data-v-e0ab4c87]{gap:var(--v64-space-2,8px);margin-top:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.tlp-identity[data-v-e0ab4c87]{margin-top:var(--v64-space-2,8px);padding-top:var(--v64-space-3,12px);border-top:1px solid color-mix(in srgb, var(--v64-on-surface) 10%, transparent);font:var(--v64-type-body-md);color:var(--v64-on-surface-variant)}.tlp-identity summary[data-v-e0ab4c87],.tlp-history summary[data-v-e0ab4c87]{list-style:none}.tlp-identity summary[data-v-e0ab4c87]::-webkit-details-marker{display:none}.tlp-history summary[data-v-e0ab4c87]::-webkit-details-marker{display:none}.tlp-identity summary[data-v-e0ab4c87]{border:1px solid var(--v64-outline);background:color-mix(in srgb, var(--v64-surface) 60%, transparent);margin-left:0!important}.tlp-chevron[data-v-e0ab4c87]{transition:transform var(--v64-duration-short) var(--v64-ease-standard)}details[open]>summary .tlp-chevron[data-v-e0ab4c87]{transform:rotate(180deg)}.tlp-identity summary[data-v-e0ab4c87],.tlp-history summary[data-v-e0ab4c87]{cursor:pointer;align-items:center;gap:var(--v64-space-2,8px);width:fit-content;min-height:40px;padding:0 var(--v64-space-3,12px);margin-left:calc(-1 * var(--v64-space-3,12px));border-radius:var(--v64-shape-full,999px);font:var(--v64-type-label-lg);transition:background-color var(--v64-duration-short) var(--v64-ease-standard);display:inline-flex}.tlp-identity summary[data-v-e0ab4c87]:hover,.tlp-history summary[data-v-e0ab4c87]:hover{background:rgba(var(--v-theme-on-surface), var(--v64-state-hover))}.tlp-identity summary[data-v-e0ab4c87]:focus-visible,.tlp-history summary[data-v-e0ab4c87]:focus-visible{outline:2px solid var(--v64-primary);outline-offset:2px}.tlp-identity dl[data-v-e0ab4c87]{gap:var(--v64-space-1,4px) var(--v64-space-3,12px);margin:var(--v64-space-2,8px) 0 0;padding:var(--v64-space-3,12px);border-radius:var(--v64-shape-md,12px);background:color-mix(in srgb, var(--v64-surface) 75%, transparent);grid-template-columns:max-content minmax(0,1fr);display:grid}.tlp-identity dt[data-v-e0ab4c87]{color:var(--v64-on-surface);font-weight:600}.tlp-identity dd[data-v-e0ab4c87]{margin:0}.tlp-identity code[data-v-e0ab4c87],.tlp-history code[data-v-e0ab4c87]{font-size:.75rem}.tlp-grid[data-v-e0ab4c87]{gap:var(--tlp-gap);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));display:grid}.tlp-card[data-v-e0ab4c87]{border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-low);border:1px solid var(--v64-outline-variant);min-width:0;box-shadow:var(--v64-elevation-1);transition:box-shadow var(--v64-duration-medium) var(--v64-ease-standard), transform var(--v64-duration-medium) var(--v64-ease-emphasized);animation:tlp-rise-e0ab4c87 var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate) both;animation-delay:calc(min(var(--tlp-index,0), 8) * 60ms);flex-direction:column;display:flex;position:relative;overflow:hidden}.tlp-card[data-v-e0ab4c87]:hover,.tlp-card[data-v-e0ab4c87]:focus-within{box-shadow:var(--v64-elevation-3);transform:translateY(-2px)}.tlp-card--active[data-v-e0ab4c87]{border-color:color-mix(in srgb, var(--v64-learning) 70%, transparent);box-shadow:0 0 0 2px color-mix(in srgb, var(--v64-learning) 45%, transparent), var(--v64-elevation-1)}.tlp-card--off .tlp-card__cover[data-v-e0ab4c87]{filter:saturate(.35)}.tlp-card__cover[data-v-e0ab4c87]{position:relative}.tlp-card__chips[data-v-e0ab4c87]{top:var(--v64-space-3,12px);right:var(--v64-space-3,12px);justify-content:flex-end;gap:var(--v64-space-1,4px);flex-wrap:wrap;display:flex;position:absolute;left:72px}.tlp-chip[data-v-e0ab4c87]{border-radius:var(--v64-shape-sm,8px);min-height:26px;font:var(--v64-type-label-md);white-space:nowrap;background:var(--v64-surface);color:var(--v64-on-surface);box-shadow:var(--v64-elevation-1);align-items:center;gap:4px;padding:2px 10px 2px 8px;display:inline-flex}.tlp-chip--enabled[data-v-e0ab4c87] .v-icon{color:rgb(var(--v-theme-success))}.tlp-chip--preview[data-v-e0ab4c87] .v-icon{color:rgb(var(--v-theme-primary))}.tlp-chip--disabled[data-v-e0ab4c87]{background:var(--v64-surface-container-highest);color:var(--v64-on-surface-variant)}.tlp-chip--learning[data-v-e0ab4c87]{background:var(--v64-learning);color:var(--v64-on-learning)}.tlp-chip--success[data-v-e0ab4c87]{background:var(--v64-success-container);color:var(--v64-on-surface)}.tlp-chip--success[data-v-e0ab4c87] .v-icon{color:rgb(var(--v-theme-success))}.tlp-card__body[data-v-e0ab4c87]{gap:var(--v64-space-2,8px);padding:var(--v64-space-4,16px) var(--v64-space-4,16px) var(--v64-space-2,8px);flex-direction:column;flex:1;display:flex}.tlp-card__title[data-v-e0ab4c87]{font:var(--v64-type-title-lg);margin:0}.tlp-card__id[data-v-e0ab4c87]{margin:0}.tlp-card__id code[data-v-e0ab4c87]{border-radius:var(--v64-shape-xs,4px);background:var(--v64-surface-container-high);color:var(--v64-on-surface-variant);padding:1px 6px;font-size:.75rem}.tlp-card__facts[data-v-e0ab4c87]{gap:var(--v64-space-4,16px);font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);flex-wrap:wrap;margin:0;display:flex}.tlp-card__facts span[data-v-e0ab4c87]{align-items:center;gap:6px;display:inline-flex}.tlp-card__progress[data-v-e0ab4c87]{align-items:center;gap:var(--v64-space-3,12px);padding:var(--v64-space-3,12px);border-radius:var(--v64-shape-md,12px);background:var(--v64-surface-container);margin-top:auto;display:flex}.tlp-card__progress[data-v-e0ab4c87] .training-progress-ring__content{font:var(--v64-type-label-md)}.tlp-card__count[data-v-e0ab4c87]{font:var(--v64-type-label-lg);margin:0}.tlp-card__next[data-v-e0ab4c87]{font:var(--v64-type-body-md);color:var(--v64-on-surface-variant);margin:2px 0 0}.tlp-card__actions[data-v-e0ab4c87]{align-items:center;gap:var(--v64-space-2,8px);padding:var(--v64-space-2,8px) var(--v64-space-4,16px) var(--v64-space-4,16px);flex-wrap:wrap;display:flex}.tlp-new[data-v-e0ab4c87]{justify-content:center;align-items:center;gap:var(--v64-space-3,12px);min-height:14rem;padding:var(--v64-space-5,24px);text-align:center;border:2px dashed var(--v64-outline);border-radius:var(--v64-shape-lg,16px);color:var(--v64-on-surface-variant);animation:tlp-rise-e0ab4c87 var(--v64-duration-long,.5s) var(--v64-ease-emphasized-decelerate) both;animation-delay:calc(min(var(--tlp-index,0), 8) * 60ms);transition:border-color var(--v64-duration-short) var(--v64-ease-standard), background-color var(--v64-duration-short) var(--v64-ease-standard);flex-direction:column;display:flex}.tlp-new[data-v-e0ab4c87]:hover,.tlp-new[data-v-e0ab4c87]:focus-within{border-color:var(--v64-primary);background:var(--v64-surface-container-low)}.tlp-new p[data-v-e0ab4c87]{max-width:16rem;font:var(--v64-type-body-md);margin:0}.tlp-new__icon[data-v-e0ab4c87]{border-radius:var(--v64-shape-lg,16px);background:var(--v64-primary-container);width:56px;height:56px;color:var(--v64-on-primary-container);place-items:center;display:grid}.tlp-skeleton[data-v-e0ab4c87]{gap:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-low);border:1px solid var(--v64-outline-variant);display:flex}.tlp-skeleton--saved[data-v-e0ab4c87]{padding:var(--v64-space-5,24px);border-radius:var(--v64-shape-xl,28px);align-items:center}.tlp-skeleton--card[data-v-e0ab4c87]{flex-direction:column;overflow:hidden}.tlp-skeleton--card .tlp-skeleton__lines[data-v-e0ab4c87]{padding:0 var(--v64-space-4,16px) var(--v64-space-5,24px)}.tlp-skeleton__lines[data-v-e0ab4c87]{gap:var(--v64-space-3,12px);flex-direction:column;flex:1;display:flex}.tlp-shimmer[data-v-e0ab4c87]{border-radius:var(--v64-shape-full,999px);background:linear-gradient(90deg, var(--v64-surface-container-high) 0%, var(--v64-surface-container-highest) 40%, var(--v64-surface-container-high) 80%);background-size:300% 100%;height:12px;animation:1.6s linear infinite tlp-shimmer-e0ab4c87;display:block}.tlp-shimmer--ring[data-v-e0ab4c87]{border-radius:50%;flex:none;width:96px;height:96px}.tlp-shimmer--art[data-v-e0ab4c87]{border-radius:0;height:112px}.tlp-empty[data-v-e0ab4c87]{align-items:center;gap:var(--v64-space-3,12px);text-align:center;padding:var(--v64-space-6,32px) var(--v64-space-5,24px);border-radius:var(--v64-shape-xl,28px);background:var(--v64-surface-container-low);border:1px dashed var(--v64-outline);color:var(--v64-on-surface-variant);flex-direction:column;display:flex}.tlp-empty p[data-v-e0ab4c87]{max-width:28rem;font:var(--v64-type-body-lg);margin:0}.tlp-empty__icon[data-v-e0ab4c87]{color:var(--v64-primary)}.tlp-empty__art[data-v-e0ab4c87]{width:132px;height:auto}.tlp-empty__shelf[data-v-e0ab4c87]{fill:var(--v64-outline)}.tlp-empty__book[data-v-e0ab4c87]{fill:var(--v64-primary);opacity:.55}.tlp-empty__book--alt[data-v-e0ab4c87]{fill:var(--v64-learning);opacity:.85}.tlp-empty__book--ghost[data-v-e0ab4c87]{fill:none;stroke:var(--v64-outline);stroke-width:2px;stroke-dasharray:3 3}.tlp-history[data-v-e0ab4c87]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);border:1px solid var(--v64-outline-variant);background:var(--v64-surface-container-lowest)}.tlp-history summary[data-v-e0ab4c87]{margin-left:calc(-1 * var(--v64-space-2,8px));padding:0 var(--v64-space-2,8px)}.tlp-history ol[data-v-e0ab4c87]{margin:var(--v64-space-3,12px) 0 0;padding:0 0 0 var(--v64-space-5,24px);border-left:2px solid var(--v64-outline-variant);list-style:none}.tlp-history li[data-v-e0ab4c87]{font:var(--v64-type-body-md);position:relative}.tlp-history li[data-v-e0ab4c87]:before{content:"";left:calc(-1 * var(--v64-space-5,24px) - 6px);background:var(--v64-outline);border-radius:50%;width:10px;height:10px;position:absolute;top:4px}.tlp-history li+li[data-v-e0ab4c87]{margin-top:var(--v64-space-4,16px)}.tlp-history li p[data-v-e0ab4c87]{color:var(--v64-on-surface-variant);margin:2px 0 0}.v-theme--dark .tlp-eyebrow--learning,.v-theme--dark .tlp-hero__text .tlp-eyebrow{color:var(--v64-learning)}.v-theme--dark .tlp-note--warn{color:var(--v64-on-surface)}.v-theme--dark .tlp-saved__ring{--training-ring-track:rgba(var(--v-theme-on-surface), .16)}.v-theme--dark .tlp-saved{background:linear-gradient(120deg, color-mix(in srgb, var(--v64-learning) 16%, rgb(var(--v-theme-surface))) 0%, var(--v64-surface-container-low) 70%)}@keyframes tlp-rise-e0ab4c87{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes tlp-shimmer-e0ab4c87{0%{background-position:100% 0}to{background-position:-200% 0}}@container (width<=34rem){.tlp-hero[data-v-e0ab4c87]{padding:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px)}.tlp-hero__art[data-v-e0ab4c87]{opacity:.55;width:170px}.tlp-hero__text h2[data-v-e0ab4c87]{font:var(--v64-type-headline-md)}.tlp-hero__refresh[data-v-e0ab4c87]{width:100%}.tlp-saved[data-v-e0ab4c87]{padding:var(--v64-space-4,16px);gap:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px)}.tlp-saved__actions[data-v-e0ab4c87] .v-btn{flex:100%}}@media (prefers-reduced-motion:reduce){.tlp-card[data-v-e0ab4c87],.tlp-saved[data-v-e0ab4c87],.tlp-new[data-v-e0ab4c87]{transition:none;animation:none}.tlp-card[data-v-e0ab4c87]:hover,.tlp-card[data-v-e0ab4c87]:focus-within{transform:none}.tlp-shimmer[data-v-e0ab4c87]{animation:none}}.vibe64-learning-launcher[data-v-bf008497]{min-height:0;padding:var(--v64-space-4,16px);overflow-y:auto}.vibe64-learning-launcher__status[data-v-bf008497]{justify-content:center;align-items:center;gap:var(--v64-space-2,8px);margin:var(--v64-space-5,24px) 0 0;color:var(--v64-on-surface-variant,rgba(var(--v-theme-on-surface), .72));font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);text-align:center;font-weight:400;display:flex}.vibe64-learning-launcher__status svg[data-v-bf008497]{fill:currentColor;opacity:.8;flex:none;width:16px;height:16px}.vibe64-learning-launcher__retry[data-v-bf008497]{margin-bottom:var(--v64-space-3,12px);letter-spacing:0;text-transform:none}.vibe64-learning-launcher__trial[data-v-bf008497]{align-items:flex-start;gap:var(--v64-space-2,8px);margin-bottom:var(--v64-space-4,16px);padding:var(--v64-space-4,16px) var(--v64-space-5,24px);border:1px dashed var(--v64-outline,rgba(var(--v-theme-on-surface), .24));border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-low,rgb(var(--v-theme-surface)));flex-direction:column;display:flex}.vibe64-learning-launcher__trial[data-v-bf008497]>*{overflow-wrap:anywhere;max-width:100%;margin:0}.vibe64-learning-launcher__trial h2[data-v-bf008497]{font:var(--v64-type-title-lg,600 1.375rem/1.75rem system-ui, sans-serif)}.vibe64-learning-launcher__trial-eyebrow[data-v-bf008497]{font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);letter-spacing:.08em;text-transform:uppercase;color:var(--v64-on-surface-variant,inherit)}.vibe64-learning-launcher__trial .v-btn[data-v-bf008497]{letter-spacing:0;text-transform:none}.vibe64-learning-launcher__error[data-v-bf008497]{margin-block:0 var(--v64-space-3,12px);flex:none}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as computed}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{a as projectSlugFromRoute}from"./vibe64ProjectScope.local-DqT6e5un.js";function useVibe64ProjectSlug(route=useRoute()){return computed(()=>projectSlugFromRoute(route))}export{useVibe64ProjectSlug as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ht as watch,On as unref,g as computed,hn as proxyRefs,pn as onScopeDispose,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{J as useQueryClient,T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-MWVNfmMa.js";import{_ as useRouter,g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{j as useRealtimeEvent}from"./vibe64ProjectScope.local-DqT6e5un.js";import{t as usePaths}from"./usePaths-Db88-HOm.js";import{t as useCommand}from"./useCommand-DWuxfAV0.js";import{t as useUiFeedback}from"./useUiFeedback-0FqKuZRP.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-DOEVkBqX.js";import{n as vibe64RealtimeOriginPayload}from"./vibe64BrowserTabOrigin-SF9E31vi.js";import{E as VIBE64_SESSION_CHANGED_EVENT,Q as vibe64SessionPath,T as VIBE64_SESSIONS_API_SUFFIX,_ as readRefOrGetterValue,nt as vibe64SessionQueryKey,rt as vibe64SessionsQueryKey,w as VIBE64_CURRENT_SESSION_API_SUFFIX}from"./index-BUq-MczL.js";import{a as vibe64SessionDebugDurationMs,c as vibe64SessionDebugSummary,i as visibleVibe64Sessions,n as enrichVibe64SessionForDisplay,o as vibe64SessionDebugError,r as vibe64SessionMatchesPurpose,s as vibe64SessionDebugLog}from"./vibe64SessionPanelModel-BMf64fv7.js";import{c as vibe64SessionStatusLabel,i as vibe64SessionDisplayTitle,o as vibe64SessionRevision,r as shortVibe64SessionId,s as vibe64SessionStatusColor,t as isArchivedVibe64Session}from"./vibe64SessionViewModel-DR4tOlGM.js";import{y as VIBE64_PROJECT_CHANGED_EVENT}from"./studioGateApi-DhA9IJGZ.js";import{n as useVibe64SessionSelection,t as selectedSessionIdFromRoute}from"./useVibe64SessionSelection-j9lsllx4.js";function plainObjectValue(value=null){return value&&typeof value===`object`&&!Array.isArray(value)?value:{}}function sessionChangedReason$1(payload={}){return String(payload?.reason||``).trim()}function sessionRevision(value){const revision=Number(value);return Number.isSafeInteger(revision)&&revision>=0?revision:null}function agentTurnRealtimeOverlayFromPayload(payload={},selectedSessionId=``){const changedSessionId=String(payload?.sessionId||payload?.entityId||``).trim();if(!changedSessionId||changedSessionId!==String(selectedSessionId||``).trim())return null;const agentSession=plainObjectValue(payload.agentSession);const turn=plainObjectValue(agentSession.turn);const run=plainObjectValue(payload.agentRun);const revision=sessionRevision(payload.revision);if(revision===null||!Object.keys(turn).length&&!Object.keys(run).length)return null;const active=turn.active===true||run.active===true;return{active,agentRun:{...run,active},agentSession:{...agentSession,turn:{...turn,active}},reason:sessionChangedReason$1(payload),revision,sessionId:changedSessionId}}function latestAgentTurnRealtimeOverlay(current=null,candidate=null){if(!candidate)return current;if(!current||candidate.revision>current.revision)return candidate;return current}function mergeAgentRunOverlay(agentRuns=[],overlayRun={}){const runs=Array.isArray(agentRuns)?agentRuns:[];const runId=String(overlayRun.id||``).trim();if(!runId)return runs;const nextRun={...overlayRun,id:runId};const index=runs.findIndex(run=>String(run?.id||``).trim()===runId);if(index<0)return[...runs,nextRun];return runs.map((run,runIndex)=>runIndex===index?{...run,...nextRun}:run)}function sessionWithAgentTurnRealtimeOverlay(session=null,overlay=null){const currentRevision=sessionRevision(session?.revision);if(!session||!overlay||session?.ok===false||session.sessionId!==overlay.sessionId||currentRevision!==null&&overlay.revision<=currentRevision)return session;const overlayAgentSession=plainObjectValue(overlay.agentSession);return{...session,agentRuns:mergeAgentRunOverlay(session.agentRuns,plainObjectValue(overlay.agentRun)),agentSession:{...plainObjectValue(session.agentSession),...overlayAgentSession,thread:{...plainObjectValue(session.agentSession?.thread),...plainObjectValue(overlayAgentSession.thread)},turn:{...plainObjectValue(session.agentSession?.turn),...plainObjectValue(overlayAgentSession.turn),active:overlay.active===true}},revision:overlay.revision}}var MOUNTED_SESSION_IGNORED_REALTIME_REASONS=new Set([`assistant-stream`,`assistant-response-bundle`,`codex-app-server-commentary`,`codex-app-server-prompt-injected`,`codex-app-server-ready`,`codex-app-server-final-assistant-message`,`codex-app-server-live-progress`,`codex-app-server-reasoning-summary`,`codex-app-server-running`,`codex-app-server-terminal-assistant-message`,`codex-app-server-terminal-thinking-message`,`codex-app-server-terminal-user-message`,`codex-app-server-turn-active`,`codex-app-server-turn-claimed`,`codex-app-server-turn-finalizing`,`codex-app-server-turn-idle`,`codex-app-server-turn-state`,`codex-app-server-message-delivered`,`codex-context-replaced`,`codex-prompt-injected`,`opencode-server-assistant-message`,`opencode-server-message-delivered`,`opencode-server-progress`,`opencode-server-reasoning`,`opencode-server-tool`,`opencode-server-turn-active`,`opencode-server-turn-idle`,`output-target-started`,`output-target-ready`,`output-target-closed`,`output-target-stopped`]);function sessionRecordHasDetailProjection(session=null){return Boolean(session&&typeof session===`object`&&Object.hasOwn(session,`agentSession`))}function sessionRecordHasActiveAgentWork(session=null){return(session?.agentSession?.turn?.active??session?.agentActivity?.active)===true}function sessionRecordMatchesId(session=null,sessionId=``){const normalizedSessionId=String(sessionId||``).trim();return Boolean(normalizedSessionId&&session?.sessionId===normalizedSessionId&&session?.ok!==false)}function latestSessionDetailRecord(current=null,candidate=null,sessionId=``){if(!sessionRecordMatchesId(candidate,sessionId))return current;if(!sessionRecordMatchesId(current,sessionId))return candidate;const currentRevision=vibe64SessionRevision(current);const candidateRevision=vibe64SessionRevision(candidate);if(currentRevision!==null&&candidateRevision!==null&&candidateRevision<currentRevision)return current;return candidate}function mountedSessionRecord(detailSession=null,listSession=null,sessionId=``){const normalizedSessionId=String(sessionId||``).trim();const listSessionMatches=sessionRecordMatchesId(listSession,normalizedSessionId);if(!sessionRecordMatchesId(detailSession,normalizedSessionId))return listSessionMatches?listSession:null;const detailRevision=vibe64SessionRevision(detailSession);const listRevision=vibe64SessionRevision(listSession);if(listSessionMatches&&listRevision!==null&&detailRevision!==null&&listRevision>detailRevision){if(sessionRecordHasDetailProjection(detailSession)&&!sessionRecordHasDetailProjection(listSession))return detailSession;return listSession}return detailSession}function mountedSessionDetailRefreshReason(detailSession=null,listSession=null,sessionId=``){const normalizedSessionId=String(sessionId||``).trim();if(!sessionRecordMatchesId(detailSession,normalizedSessionId)||!sessionRecordMatchesId(listSession,normalizedSessionId))return``;const detailRevision=vibe64SessionRevision(detailSession);const listRevision=vibe64SessionRevision(listSession);if(listRevision!==null&&detailRevision!==null&&listRevision>detailRevision&&sessionRecordHasDetailProjection(detailSession)&&!sessionRecordHasDetailProjection(listSession))return`newer_summary_without_detail`;return``}function mountedSessionDetailLoadState({detailSession=null,fetching=false,listSession=null,loadError=``,loading=false,sessionId=``}={}){const normalizedSessionId=String(sessionId||``).trim();const hasDetail=sessionRecordMatchesId(detailSession,normalizedSessionId);const hasSummary=sessionRecordMatchesId(listSession,normalizedSessionId);const error=String(loadError||``).trim();if(!normalizedSessionId)return{error:``,label:``,loading:false,ready:false,restoring:false,sessionId:``,state:`summaryOnly`};if(error&&!hasDetail)return{error,label:`Session could not load.`,loading:false,ready:false,restoring:false,sessionId:normalizedSessionId,state:`detailError`};if(hasDetail)return{error:``,label:``,loading:false,ready:true,refreshing:Boolean(fetching||loading),restoring:false,sessionId:normalizedSessionId,state:`detailReady`};if(loading||fetching)return{error:``,label:`Loading session...`,loading:true,ready:false,restoring:false,sessionId:normalizedSessionId,state:`detailLoading`};return{error:``,label:hasSummary?`Session could not load.`:`Loading session...`,loading:false,ready:false,restoring:false,sessionId:normalizedSessionId,state:`summaryOnly`}}function mountedSessionRealtimeShouldRefresh({payload={}}={},sessionId=``){const changedSessionId=String(payload.sessionId||payload.entityId||``).trim();if(!changedSessionId||changedSessionId!==String(sessionId||``).trim())return false;const reason=String(payload?.reason||``).trim();return!reason||!MOUNTED_SESSION_IGNORED_REALTIME_REASONS.has(reason)}function useVibe64SessionDialogs({archiveAllowed=true,beginArchive=()=>null,finishArchive=()=>null,isSelectedSessionArchived,refreshSessionData=async()=>null,selectedSessionId,selectedSessionTitle,sessionsApiPath}={}){const archiveDialogOpen=ref(false);const archiveDialogSessionId=ref(``);const archiveDialogSessionTitle=ref(``);const archivingSessionId=ref(``);const resolvedSessionsApiPath=computed(()=>String(readRefOrGetterValue(sessionsApiPath)||``));const archiveCommand=useCommand({access:`never`,apiSuffix:VIBE64_SESSIONS_API_SUFFIX,buildRawPayload:()=>vibe64RealtimeOriginPayload(),buildCommandOptions:(_payload,{context})=>({method:`POST`,path:vibe64SessionPath(resolvedSessionsApiPath.value,context?.sessionId,`/archive`)}),fallbackRunError:`Vibe64 session could not be archived.`,messages:{error:`Vibe64 session could not be archived.`,success:`Vibe64 session archived.`},onRunSuccess:async response=>{if(response?.ok!==true)throw new Error(response?.errors?.[0]?.message||response?.error||`Vibe64 session could not be archived.`)},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.sessions.archive`,surfaceId:`app`,writeMethod:`POST`});function clearArchiveDialog(){archiveDialogOpen.value=false;archiveDialogSessionId.value=``;archiveDialogSessionTitle.value=``}function requestArchiveSelectedSession(){if(!readRefOrGetterValue(archiveAllowed)||!unref(selectedSessionId)||archivingSessionId.value||archiveCommand.isRunning||unref(isSelectedSessionArchived))return;archiveDialogSessionId.value=unref(selectedSessionId);archiveDialogSessionTitle.value=unref(selectedSessionTitle);archiveDialogOpen.value=true}function cancelArchiveSession(){if(!archiveCommand.isRunning)clearArchiveDialog()}async function confirmArchiveSession(){if(!archiveDialogSessionId.value||archivingSessionId.value||archiveCommand.isRunning)return false;const sessionId=archiveDialogSessionId.value;archivingSessionId.value=sessionId;clearArchiveDialog();const archiveScope=beginArchive(sessionId);let succeeded=false;try{const response=await archiveCommand.run({sessionId});succeeded=response?.ok===true;return response}catch{return false}finally{finishArchive(sessionId,succeeded,archiveScope);if(archivingSessionId.value===sessionId)archivingSessionId.value=``;refreshSessionData({includeList:true,reason:`archive-session`}).catch(()=>null)}}function clear(){clearArchiveDialog()}return{archive:{archiving:computed(()=>Boolean(archivingSessionId.value)),archivingSessionId,cancel:cancelArchiveSession,command:archiveCommand,confirm:confirmArchiveSession,open:archiveDialogOpen,request:requestArchiveSelectedSession,sessionId:archiveDialogSessionId,sessionTitle:archiveDialogSessionTitle},busy:computed(()=>Boolean(archivingSessionId.value)),clear}}function createVibe64CurrentSessionPublisher({coalesceByPath=false,onError=()=>null,publish}={}){if(typeof publish!==`function`)throw new TypeError(`Current Vibe64 session publisher requires publish().`);const pendingPublications=new Map;let publicationChain=Promise.resolve();let lastPublishedIdentity=null;let stopped=false;function request(publication={}){if(stopped)return publicationChain;const apiPath=String(publication?.apiPath||``);const sessionId=String(publication?.sessionId||``).trim();const publicationKey=(typeof coalesceByPath===`function`?coalesceByPath():coalesceByPath)?apiPath:``;pendingPublications.set(publicationKey,{apiPath,identity:JSON.stringify([apiPath,sessionId]),sessionId});publicationChain=publicationChain.catch(()=>null).then(async()=>{if(stopped||pendingPublications.size===0)return;const[key,publication]=pendingPublications.entries().next().value;pendingPublications.delete(key);if(publication.identity===lastPublishedIdentity)return;try{await publish({apiPath:publication.apiPath,sessionId:publication.sessionId});lastPublishedIdentity=publication.identity}catch(error){onError(error,publication)}});return publicationChain}function stop(){stopped=true;pendingPublications.clear()}return Object.freeze({request,stop})}function vibe64SessionListRefreshRequested(payload={}){return payload?.clientRefresh?.includeList===true}var SESSION_LIST_IGNORED_REALTIME_REASONS=new Set([`assistant-stream`,`assistant-response-bundle`,`codex-app-server-ready`,`codex-app-server-agent-result`,`codex-app-server-agent-result-invalid`,`codex-app-server-agent-result-missing`,`codex-app-server-agent-result-provider-failed`,`codex-app-server-blocked`,`codex-app-server-commentary`,`codex-app-server-failed`,`codex-app-server-final-assistant-message`,`codex-app-server-live-progress`,`codex-app-server-prompt-injected`,`codex-app-server-reasoning-summary`,`codex-app-server-running`,`codex-app-server-terminal-assistant-message`,`codex-app-server-terminal-thinking-message`,`codex-app-server-terminal-user-message`,`codex-app-server-turn-active`,`codex-app-server-turn-claimed`,`codex-app-server-turn-finalizing`,`codex-app-server-turn-idle`,`codex-app-server-turn-state`,`codex-app-server-message-delivered`,`codex-prompt-injected`,`codex-context-replaced`,`opencode-server-assistant-message`,`opencode-server-message-delivered`,`opencode-server-progress`,`opencode-server-reasoning`,`opencode-server-tool`,`opencode-server-turn-active`,`opencode-server-turn-idle`,`agent-terminal-started`,`agent-terminal-closed`,`output-target-started`,`output-target-ready`,`output-target-closed`,`output-target-stopped`]);function sessionArchiveOperation(session){try{return JSON.parse(session?.metadata?.session_archive_operation||`null`)}catch{return{status:`failed`,error:`Session archive state could not be read.`}}}function sessionIdExistsInList(sessionId=``,nextSessions=[]){const normalizedSessionId=String(sessionId||``).trim();return Boolean(normalizedSessionId)&&nextSessions.some(session=>session.sessionId===normalizedSessionId)}function renewedSuccessorSessionId({predecessorSessionId=``,sessions=[]}={}){const predecessorId=String(predecessorSessionId||``).trim();if(!predecessorId)return``;const matches=sessions.filter(session=>String(session?.metadata?.renewed_from||``).trim()===predecessorId);return matches.length===1?String(matches[0]?.sessionId||``).trim():``}function shouldPreserveSelectedSessionDuringRefresh({createSessionRunning=false,currentSessionId=``,nextSessions=[],selectedSessionLoading=false,sessionListLoading=false}={}){const normalizedSessionId=String(currentSessionId||``).trim();if(!normalizedSessionId||sessionIdExistsInList(normalizedSessionId,nextSessions))return false;return Boolean(sessionListLoading||createSessionRunning||selectedSessionLoading)}function selectedSessionIdForCurrentAlias({createSessionRunning=false,selectedSessionId=``,selectedSessionLoading=false,sessionListLoaded=true,sessionListLoadError=``,sessionListLoading=false,sessions=[]}={}){if(!sessionListLoaded||sessionListLoading||String(sessionListLoadError||``).trim())return null;const normalizedSessionId=String(selectedSessionId||``).trim();if(sessionIdExistsInList(normalizedSessionId,sessions))return normalizedSessionId;if(sessions.length>0||createSessionRunning||selectedSessionLoading)return null;return``}function sessionChangedReason(payload={}){return String(payload?.reason||``).trim()}function sessionListRealtimeShouldRefresh({payload={}}={},projectSlug=``){if(payload.projectSlug&&payload.projectSlug!==projectSlug)return false;if(vibe64SessionListRefreshRequested(payload))return true;const reason=sessionChangedReason(payload);if(reason===`assistant-routing-changed`&&payload.assistantRoutingRequest)return false;return!reason||!SESSION_LIST_IGNORED_REALTIME_REASONS.has(reason)}function refetchEndpointResource(resource){if(typeof resource?.query?.refetch===`function`)return resource.query.refetch({cancelRefetch:false});return resource?.reload?.()}function useVibe64SessionData({onTitleChange=null,learningResource=null,purposeFilter=``}={}){const notifyTitleChange=typeof onTitleChange===`function`?onTitleChange:()=>null;const queryClient=useQueryClient();const projectSlug=useVibe64ProjectSlug();const route=useRoute();const router=useRouter();const paths=usePaths();const learningMode=computed(()=>readRefOrGetterValue(purposeFilter)===`learning`);const learningEndpoint=computed(()=>readRefOrGetterValue(learningResource));const learningPayload=computed(()=>unref(learningEndpoint.value?.data));const learningAccessDenied=computed(()=>{const error=unref(learningEndpoint.value?.query?.error);return[401,403].includes(Number(error?.statusCode||error?.status||error?.response?.status))});const learningLearnerId=computed(()=>{const payload=learningPayload.value;return!learningAccessDenied.value&&payload?.ok===true&&payload?.available===true&&typeof payload.learnerId===`string`?payload.learnerId:``});const learningLoaded=computed(()=>Boolean(learningLearnerId.value&&Array.isArray(learningPayload.value?.sessions)));const learningLoading=computed(()=>Boolean(unref(learningEndpoint.value?.isInitialLoading)||unref(learningEndpoint.value?.isLoading)));const learningSessions=computed(()=>learningLoaded.value?learningPayload.value.sessions:[]);const learningCollectionError=computed(()=>{const workingIds=new Set(sessionList.items.map(session=>session.sessionId));const seen=new Set;for(const session of learningSessions.value){if(workingIds.has(session.sessionId)||seen.has(session.sessionId))return`The saved Learning and Working conversations have conflicting identities. Keep the confirmed list and ask the owner to inspect it.`;seen.add(session.sessionId)}return``});const learningLoadError=computed(()=>String(unref(learningEndpoint.value?.loadError)||(learningAccessDenied.value?`Access to these learning conversations is no longer confirmed.`:learningCollectionError.value)||(!learningEndpoint.value?`Learning conversations are unavailable in this installation.`:``)));const selectionScope=computed(()=>learningMode.value?`learning:${learningLearnerId.value}`:String(projectSlug.value||``).trim());const workingSelection=useVibe64SessionSelection({projectSlug});const learningSelection=useVibe64SessionSelection({projectSlug,purpose:`learning`,learnerId:learningLearnerId});const activeSelection=()=>learningMode.value?learningSelection:workingSelection;const sessionSelection={selectedId:computed(()=>activeSelection().selectedId.value),select:id=>activeSelection().select(id),clear:()=>activeSelection().clear(),selectAvailableId:(items,options)=>activeSelection().selectAvailableId(items,options)};const selectedSessionId=sessionSelection.selectedId;const sessionsApiPath=computed(()=>paths.api(VIBE64_SESSIONS_API_SUFFIX,{surface:`app`}));const currentSessionApiPath=computed(()=>paths.api(VIBE64_CURRENT_SESSION_API_SUFFIX,{surface:`app`}));const sessionListQueryKey=computed(()=>vibe64SessionsQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value));const sessionListResource=useEndpointResource({enabled:computed(()=>!learningEndpoint.value||Boolean(projectSlug.value)),fallbackLoadError:`Vibe64 sessions could not be loaded.`,path:sessionsApiPath,queryKey:sessionListQueryKey,readQuery:{limit:20},queryOptions:{refetchOnMount:false,refetchOnWindowFocus:false},requestRecoveryLabel:`Vibe64 sessions`,realtime:{events:[VIBE64_SESSION_CHANGED_EVENT,VIBE64_PROJECT_CHANGED_EVENT,`connect`],matches:event=>!event?.payload?.learningAttemptId&&sessionListRealtimeShouldRefresh(event,projectSlug.value)}});const workingLoadError=computed(()=>sessionListResource.loadError.value);const sessionList=proxyRefs({unavailableItems:computed(()=>sessionListResource.data.value?.unavailableSessions||[]),items:computed(()=>{const payload=sessionListResource.data.value||{};return Array.isArray(payload.sessions)?payload.sessions:[]}),loadError:computed(()=>learningMode.value?learningLoadError.value:sessionListResource.loadError.value),isInitialLoading:computed(()=>learningMode.value?!learningLoaded.value&&learningLoading.value:sessionListResource.isInitialLoading.value),isLoading:computed(()=>learningMode.value?learningLoading.value:sessionListResource.isLoading.value),pages:computed(()=>{const payload=learningMode.value?learningLoaded.value?learningPayload.value:null:sessionListResource.data.value;return payload&&typeof payload===`object`&&!Array.isArray(payload)?[payload]:[]}),reload:sessionListResource.reload,resource:sessionListResource});let emptySessionListObservedForProject=``;const createSessionCommand=useCommand({access:`never`,apiSuffix:VIBE64_SESSIONS_API_SUFFIX,buildCommandOptions:(_model,{context})=>({method:`POST`,path:context?.apiPath}),buildRawPayload:(_model,{context})=>vibe64RealtimeOriginPayload({assistantSelection:context?.assistantSelection||{},...context?.workflowEngineId?{workflowEngineId:context.workflowEngineId}:{},...context?.repositoryBranch?{repositoryBranch:context.repositoryBranch}:{},...context?.pullRequestNumber?{pullRequestNumber:context.pullRequestNumber}:{}}),fallbackRunError:`Vibe64 session could not be created.`,messages:{error:`Vibe64 session could not be created.`,success:`Vibe64 session created.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.sessions.create`,surfaceId:`app`,writeMethod:`POST`});const createSessionPending=ref(false);const createSessionRunning=computed(()=>createSessionPending.value);const updateCurrentSessionCommand=useCommand({access:`never`,apiSuffix:VIBE64_CURRENT_SESSION_API_SUFFIX,buildCommandOptions:(_model,{context})=>({method:`PUT`,path:String(context?.apiPath||``)}),buildRawPayload:(_model,{context})=>({sessionId:String(context?.sessionId||``).trim()}),fallbackRunError:`The current session shortcut could not be updated.`,messages:{error:`The current session shortcut could not be updated.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.sessions.current.update`,suppressSuccessMessage:true,surfaceId:`app`,writeMethod:`PUT`});const currentSessionPublisher=createVibe64CurrentSessionPublisher({coalesceByPath:()=>Boolean(learningEndpoint.value),async publish({apiPath,sessionId}){const response=await updateCurrentSessionCommand.run({apiPath,sessionId});if(!response||response.ok===false)throw new Error(String(response?.error||`The current session shortcut could not be updated.`))},onError(error,publication){vibe64SessionDebugLog(`client.sessionData.currentSession.error`,{error:vibe64SessionDebugError(error),sessionId:publication.sessionId})}});let sessionDataDisposed=false;onScopeDispose(()=>{sessionDataDisposed=true;currentSessionPublisher.stop()});const archiveAttempts=ref({});const agentActivityBySessionId=ref({});let confirmedCollectionScope=``;const sessions=computed(previous=>{const collectionScope=JSON.stringify([projectSlug.value,learningLearnerId.value]);if(learningCollectionError.value)return confirmedCollectionScope===collectionScope?previous||[]:[];confirmedCollectionScope=collectionScope;const items=new Map([...sessionList.items||[],...learningSessions.value].map(session=>[session.sessionId,session]));for(const[id,attempt]of Object.entries(archiveAttempts.value))if(attempt.succeeded)items.delete(id);else items.set(id,{...items.get(id)||attempt.session,archiving:true,archiveStartedAt:attempt.startedAt});return visibleVibe64Sessions([...items.values()]).map(session=>{const operation=sessionArchiveOperation(session);return{...session,agentActivity:latestAgentTurnRealtimeOverlay(session.agentActivity,agentActivityBySessionId.value[session.sessionId]),archiveOperation:operation,archiveStartedAt:operation?.startedAt||session.archiveStartedAt,archiveError:operation?.status===`failed`?operation.error:``,archiving:Boolean(session.archiving||operation?.status===`running`||operation?.status!==`failed`&&session.metadata?.session_closing_reason===`archived`)}})});const availableSessions=computed(()=>sessions.value.filter(session=>!session.archiving&&vibe64SessionMatchesPurpose(session,readRefOrGetterValue(purposeFilter))));const selectedListSession=computed(()=>{return sessions.value.find(session=>session.sessionId===selectedSessionId.value)||null});const selectedSessionsApiPath=computed(()=>{const session=selectedListSession.value;if(session?.purpose===`learning`)return learningLearnerId.value&&session.learningAttemptId?`/api/learning/${encodeURIComponent(session.learningAttemptId)}/vibe64/sessions`:``;return learningMode.value?``:sessionsApiPath.value});const selectedCurrentSessionApiPath=computed(()=>selectedListSession.value?.purpose===`learning`?selectedSessionsApiPath.value?`${selectedSessionsApiPath.value}/current`:``:learningMode.value?``:currentSessionApiPath.value);const selectedSessionMissing=computed(()=>{const selectedId=String(selectedSessionId.value||``).trim();if(!selectedId||sessionList.pages.length<1||String(sessionList.loadError||``).trim()||sessionIdExistsInList(selectedId,sessions.value))return false;return true});const selectionRenewalPredecessorId=computed(()=>{const selectedId=String(selectedSessionId.value||``).trim();if(learningMode.value||selectedListSession.value?.purpose===`learning`||!selectedId||sessionList.pages.length<1||String(sessionList.loadError||``).trim())return``;if(sessionList.unavailableItems.some(session=>session.sessionId===selectedId))return``;if(selectedSessionMissing.value)return selectedId;return String(selectedListSession.value?.metadata?.renewed_from||``).trim()});const selectionRenewalPath=computed(()=>selectionRenewalPredecessorId.value?vibe64SessionPath(sessionsApiPath.value,selectionRenewalPredecessorId.value,`/renewal`):``);const selectionRenewalResource=useEndpointResource({enabled:computed(()=>Boolean(selectionRenewalPredecessorId.value)),fallbackLoadError:`The selected session renewal could not be checked.`,path:selectionRenewalPath,queryKey:computed(()=>[...vibe64SessionQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value),selectionRenewalPredecessorId.value,`renewal`]),queryOptions:{refetchOnMount:`always`,refetchOnWindowFocus:false},readMethod:`GET`,realtime:{event:VIBE64_SESSION_CHANGED_EVENT,matches:({payload={}}={})=>mountedSessionRealtimeShouldRefresh({payload},selectionRenewalPredecessorId.value)},requestRecoveryLabel:`Selected session renewal`});const creationOptions=computed(()=>sessionList.pages?.[0]?.creation||{});const selectedSession=computed(()=>enrichVibe64SessionForDisplay(selectedListSession.value));const isSelectedSessionArchived=computed(()=>isArchivedVibe64Session(selectedSession.value||{}));const pageLoading=computed(()=>Boolean(sessionList.isLoading));const canCreateSession=computed(()=>{return!learningMode.value&&creationOptions.value.canCreate===true});const createSessionVisible=computed(()=>!learningMode.value&&creationOptions.value.showCreateAction===true);const createSessionTitle=computed(()=>{if(creationOptions.value.disabledReason)return String(creationOptions.value.disabledReason);if(creationOptions.value.canCreate!==true)return`Session creation is unavailable.`;return`Create a new Vibe64 session`});const selectedSessionTitle=computed(()=>{return vibe64SessionDisplayTitle(selectedSession.value||{})||`Session ${shortVibe64SessionId(selectedSessionId.value)}`});async function refreshSessionList(){const learning=learningEndpoint.value;if(!learning)return refetchEndpointResource(sessionListResource);const[result]=await Promise.all([projectSlug.value?refetchEndpointResource(sessionListResource):void 0,refetchEndpointResource(learning)]);return result}let refreshSessionDataInFlight=null;async function refreshSessionData(options={}){const reason=typeof options===`string`?options:String(options?.reason||``);if(refreshSessionDataInFlight){vibe64SessionDebugLog(`client.sessionData.refresh.join`,{reason,selectedSessionId:String(selectedSessionId.value||``)});return refreshSessionDataInFlight}const startedAtMs=Date.now();vibe64SessionDebugLog(`client.sessionData.refresh.start`,{reason,selectedSessionId:String(selectedSessionId.value||``)});refreshSessionDataInFlight=refreshSessionList();try{const result=await refreshSessionDataInFlight;vibe64SessionDebugLog(`client.sessionData.refresh.done`,{durationMs:vibe64SessionDebugDurationMs(startedAtMs),reason,selectedSessionId:String(selectedSessionId.value||``),sessionCount:sessions.value.length});return result}catch(error){vibe64SessionDebugLog(`client.sessionData.refresh.error`,{durationMs:vibe64SessionDebugDurationMs(startedAtMs),error:vibe64SessionDebugError(error),reason,selectedSessionId:String(selectedSessionId.value||``)});throw error}finally{refreshSessionDataInFlight=null}}function refreshSessionDataInBackground(options={}){refreshSessionData(options).catch(()=>{})}function selectSessionId(sessionId=``){const normalizedSessionId=String(sessionId||``).trim();if(learningMode.value&&(!learningLoaded.value||learningLoading.value||learningLoadError.value||!availableSessions.value.some(session=>session.sessionId===normalizedSessionId)))return;if(sessions.value.some(session=>session.sessionId===normalizedSessionId&&session.archiving))return;vibe64SessionDebugLog(`client.sessionData.selectSession`,{fromSessionId:String(selectedSessionId.value||``),toSessionId:normalizedSessionId});if(normalizedSessionId)emptySessionListObservedForProject=``;sessionSelection.select(normalizedSessionId)}function clearSelectedSession(){if(learningMode.value&&(!learningLoaded.value||learningLoading.value||learningLoadError.value))return;const aliasPath=learningMode.value?selectedCurrentSessionApiPath.value:``;emptySessionListObservedForProject=selectionScope.value;sessionSelection.clear();if(aliasPath)currentSessionPublisher.request({apiPath:aliasPath,sessionId:``})}function selectPreviousSession(sessionId){const navigation=sessions.value.filter(session=>vibe64SessionMatchesPurpose(session,readRefOrGetterValue(purposeFilter)));const index=navigation.findIndex(session=>session.sessionId===sessionId);selectSessionId(navigation.slice(0,Math.max(0,index)).filter(session=>!session.archiving).at(-1)?.sessionId||availableSessions.value.at(-1)?.sessionId||``)}const archive=proxyRefs(useVibe64SessionDialogs({beginArchive(sessionId){archiveAttempts.value[sessionId]={startedAt:new Date().toISOString(),session:sessions.value.find(session=>session.sessionId===sessionId)};if(selectedSessionId.value===sessionId)selectPreviousSession(sessionId);return projectSlug.value},finishArchive(sessionId,succeeded,archiveProject){if(projectSlug.value!==archiveProject)return;if(succeeded)archiveAttempts.value[sessionId]={succeeded:true};else{delete archiveAttempts.value[sessionId];if(!selectedSessionId.value)selectSessionId(sessionId)}},archiveAllowed:computed(()=>selectedListSession.value?.purpose!==`learning`),isSelectedSessionArchived,refreshSessionData,selectedSessionId,selectedSessionTitle,sessionsApiPath}).archive);const archiveFeedback=useUiFeedback({source:`vibe64.sessions.archive.remote`});const shownArchiveFailures=new Set;watch(projectSlug,()=>{archiveAttempts.value={};agentActivityBySessionId.value={};shownArchiveFailures.clear()});useRealtimeEvent({event:VIBE64_SESSION_CHANGED_EVENT,matches:({payload={}}={})=>payload.learningAttemptId?!payload.projectSlug&&learningLearnerId.value&&[learningPayload.value?.active,...learningPayload.value?.history||[],...learningSessions.value].some(attempt=>(attempt?.attemptId||attempt?.learningAttemptId)===payload.learningAttemptId):payload.projectSlug===projectSlug.value,onEvent:({payload={}}={})=>{const id=String(payload.sessionId||``);if(!id)return;if(payload.learningAttemptId&&sessionListRealtimeShouldRefresh({payload}))refetchEndpointResource(learningEndpoint.value)?.catch?.(()=>null);const activity=agentTurnRealtimeOverlayFromPayload(payload,id);if(activity)agentActivityBySessionId.value[id]=latestAgentTurnRealtimeOverlay(agentActivityBySessionId.value[id],{active:activity.active,revision:activity.revision});if(payload.learningAttemptId)return;if(payload.reason===`session-archiving`){const session=sessions.value.find(item=>item.sessionId===id);if(session)archiveAttempts.value[id]={session,startedAt:archiveAttempts.value[id]?.startedAt||new Date().toISOString()};if(selectedSessionId.value===id)selectPreviousSession(id)}else if(payload.reason===`session-archived`)archiveAttempts.value[id]={succeeded:true};else if(payload.reason===`session-archive-failed`){delete archiveAttempts.value[id];if(!selectedSessionId.value)selectSessionId(id)}}});watch(()=>sessionList.items,items=>{for(const id of Object.keys(agentActivityBySessionId.value))if(![...items,...learningSessions.value].some(session=>session.sessionId===id))delete agentActivityBySessionId.value[id];for(const[id,attempt]of Object.entries(archiveAttempts.value)){if(attempt.succeeded||archive.archivingSessionId===id)continue;const session=items.find(item=>item.sessionId===id);const operation=sessionArchiveOperation(session);if(!session||operation?.status===`failed`||operation?.status!==`running`&&session.metadata?.session_closing_reason!==`archived`)delete archiveAttempts.value[id]}});watch(sessions,items=>{for(const session of items){const key=`${session.sessionId}:${session.metadata?.session_archive_operation}`;if(!session.archiveError||shownArchiveFailures.has(key))continue;shownArchiveFailures.add(key);if(archive.archivingSessionId!==session.sessionId)archiveFeedback.error(new Error(session.archiveError))}},{immediate:true});let createSessionInFlight=null;async function createSession(assistantSelection={},{pullRequestNumber,workflowEngineId,repositoryBranch}={}){if(learningMode.value)return{ok:false,error:`Open this saved lesson through its supported lesson controls; ordinary project creation is unavailable in Learning mode.`};if(createSessionInFlight)return createSessionInFlight;const startedAtMs=Date.now();const creationProjectSlug=String(projectSlug.value||``).trim();const creationApiPath=sessionsApiPath.value;const creationAliasPath=currentSessionApiPath.value;const creationQueryKey=[...sessionListQueryKey.value];const creationSelection=workingSelection.capture?.()||{select:id=>workingSelection.select(id)};vibe64SessionDebugLog(`client.sessionData.createSession.start`);createSessionPending.value=true;createSessionInFlight=(async()=>{try{const response=await createSessionCommand.run({assistantSelection,pullRequestNumber,workflowEngineId,repositoryBranch,apiPath:creationApiPath});if(!sessionDataDisposed&&creationProjectSlug===String(projectSlug.value||``).trim()){if(response?.creation&&response?.limits)queryClient.setQueryData(creationQueryKey,currentPayload=>{if(!currentPayload||typeof currentPayload!==`object`||Array.isArray(currentPayload))return currentPayload;const currentSessions=Array.isArray(currentPayload.sessions)?currentPayload.sessions:[];const createdSession=response.sessionId?Object.fromEntries(Object.entries(response).filter(([key])=>![`creation`,`limits`,`ok`].includes(key))):null;return{...currentPayload,creation:response.creation,limits:response.limits,...createdSession&&!currentSessions.some(item=>item?.sessionId===createdSession.sessionId)?{sessions:[...currentSessions,createdSession]}:{}}});if(response?.sessionId){if(learningMode.value){creationSelection?.select(response.sessionId);if(response.ok!==false)currentSessionPublisher.request({apiPath:creationAliasPath,sessionId:response.sessionId})}else selectSessionId(response.sessionId)}if(learningMode.value)refetchEndpointResource(sessionListResource)?.catch?.(()=>null);else refreshSessionDataInBackground({includeList:true,reason:`create-session`})}vibe64SessionDebugLog(`client.sessionData.createSession.done`,{...vibe64SessionDebugSummary(response||{}),code:String(response?.code||response?.errors?.[0]?.code||``),durationMs:vibe64SessionDebugDurationMs(startedAtMs),ok:response?.ok!==false});return response}catch(error){vibe64SessionDebugLog(`client.sessionData.createSession.error`,{durationMs:vibe64SessionDebugDurationMs(startedAtMs),error:vibe64SessionDebugError(error)});throw error}finally{createSessionPending.value=false;createSessionInFlight=null}})();return createSessionInFlight}let pendingRenewalNavigation=null;function syncRenewalSuccessorUrl(predecessorId,successorId){if(selectedSessionIdFromRoute(route)!==predecessorId)return;const capturedProject=String(projectSlug.value||``).trim();const capturedApiPath=sessionsApiPath.value;const predecessorUrl=route.fullPath;if(pendingRenewalNavigation?.predecessorUrl===predecessorUrl&&pendingRenewalNavigation?.successorId===successorId)return;const sameRenewal=()=>{const renewal=selectionRenewalResource.data.value?.renewal;return!sessionDataDisposed&&!learningMode.value&&String(projectSlug.value||``).trim()===capturedProject&&sessionsApiPath.value===capturedApiPath&&selectedSessionId.value===successorId&&workingSelection.selectedId.value===successorId&&!selectionRenewalResource.loadError?.value&&!selectionRenewalResource.isInitialLoading?.value&&!selectionRenewalResource.isLoading?.value&&renewal?.status===`completed`&&String(renewal.sessionId||``).trim()===predecessorId&&String(renewal.successor?.sessionId||``).trim()===successorId&&renewedSuccessorSessionId({predecessorSessionId:predecessorId,sessions:availableSessions.value})===successorId};if(!sameRenewal())return;const target={path:route.path,hash:route.hash,query:{...route.query,session:successorId}};const targetUrl=router.resolve(target).fullPath;const navigation={predecessorUrl,successorId};const removeGuard=router.beforeResolve(to=>{if(to.fullPath===targetUrl&&(!sameRenewal()||route.fullPath!==predecessorUrl))return false});pendingRenewalNavigation=navigation;(async()=>{try{await router.replace(target)}catch(error){if(sameRenewal())vibe64SessionDebugLog(`client.sessionData.renewalNavigation.error`,{error:vibe64SessionDebugError(error),sessionId:successorId})}finally{removeGuard();if(pendingRenewalNavigation===navigation)pendingRenewalNavigation=null}})()}const selectionReconciliationState=computed(()=>{const nextSessions=availableSessions.value;return{createSessionRunning:createSessionRunning.value,currentSessionApiPath:selectedCurrentSessionApiPath.value,selectionScope:selectionScope.value,selectionRenewal:selectionRenewalResource.data.value?.renewal||null,selectionRenewalLoadError:String(selectionRenewalResource.loadError?.value||``),selectionRenewalLoaded:Boolean(selectionRenewalResource.data.value&&typeof selectionRenewalResource.data.value===`object`&&!Array.isArray(selectionRenewalResource.data.value)),selectionRenewalLoading:Boolean(selectionRenewalResource.isInitialLoading?.value||selectionRenewalResource.isLoading?.value),selectionRenewalPredecessorId:selectionRenewalPredecessorId.value,projectSlug:String(projectSlug.value||``).trim(),selectedSessionMissing:selectedSessionMissing.value,nextSessions,selectedSessionId:String(selectedSessionId.value||``),sessionIds:nextSessions.map(session=>session.sessionId).join(`|`),sessionListInitialLoading:sessionList.isInitialLoading,sessionListLoaded:sessionList.pages.length>0&&(!learningMode.value||learningLoaded.value),sessionListLoadError:String(sessionList.loadError||``),sessionListLoading:sessionList.isLoading}});watch(selectionReconciliationState,state=>{const nextSessions=state.nextSessions;if(sessions.value.some(session=>session.sessionId===state.selectedSessionId&&session.archiving)){selectPreviousSession(state.selectedSessionId);return}vibe64SessionDebugLog(`client.sessionData.sessions.changed`,{selectedSessionId:String(selectedSessionId.value||``),sessionCount:nextSessions.length});if(learningMode.value&&!state.sessionListLoaded||state.sessionListInitialLoading||state.sessionListLoadError||shouldPreserveSelectedSessionDuringRefresh({createSessionRunning:state.createSessionRunning,currentSessionId:state.selectedSessionId,nextSessions,sessionListLoading:state.sessionListLoading}))return;if(!state.selectedSessionId&&nextSessions.length===0)emptySessionListObservedForProject=state.selectionScope;if(state.selectionRenewalPredecessorId){if(state.selectionRenewalLoading||state.selectionRenewalLoadError||!state.selectionRenewalLoaded)return;const selectionRenewal=state.selectionRenewal;if(selectionRenewal&&String(selectionRenewal.sessionId||``).trim()===state.selectionRenewalPredecessorId){const renewalStatus=String(selectionRenewal.status||``).trim();if(renewalStatus===`completed`){const renewedSuccessorId=renewedSuccessorSessionId({predecessorSessionId:state.selectionRenewalPredecessorId,sessions:nextSessions});if(state.selectedSessionMissing){if(renewedSuccessorId)sessionSelection.selectAvailableId(nextSessions,{fallbackId:renewedSuccessorId,getId:session=>session.sessionId})}if(renewedSuccessorId&&selectedSessionId.value===renewedSuccessorId)syncRenewalSuccessorUrl(state.selectionRenewalPredecessorId,renewedSuccessorId);if(state.selectedSessionMissing)return}else if(state.selectedSessionMissing&&[`failed`,`running`].includes(renewalStatus))return;if([`failed`,`running`].includes(renewalStatus)){sessionSelection.select(state.selectionRenewalPredecessorId);return}}}if(!state.selectedSessionId&&emptySessionListObservedForProject===state.selectionScope)return;sessionSelection.selectAvailableId(nextSessions,{fallbackId:nextSessions.at(-1)?.sessionId||``,getId:session=>session.sessionId})},{immediate:true});watch(selectionReconciliationState,state=>{const publicationSessionId=selectedSessionIdForCurrentAlias({createSessionRunning:state.createSessionRunning,selectedSessionId:state.selectedSessionId,sessionListLoaded:state.sessionListLoaded,sessionListLoadError:state.sessionListLoadError,sessionListLoading:state.sessionListLoading,sessions:state.nextSessions});if(publicationSessionId===null||!state.currentSessionApiPath)return;currentSessionPublisher.request({apiPath:state.currentSessionApiPath,sessionId:publicationSessionId})},{flush:`post`,immediate:true});watch(selectedSessionTitle,title=>{notifyTitleChange(title||``)},{immediate:true});return{archive,canCreateSession,clearSelectedSession,createSession,createSessionCommand,createSessionRunning,createSessionVisible,createSessionTitle,isSelectedSessionArchived,learningLearnerId,learningLoadError,learningLoaded,learningLoading,workingLoadError,availableSessions,pageLoading,refreshSessionData,selectSessionId,selectedSession,selectedSessionId,selectedSessionTitle,selectedSessionsApiPath,sessionList,sessions,sessionsApiPath,shortSessionId:shortVibe64SessionId,statusColor:vibe64SessionStatusColor,statusLabel:vibe64SessionStatusLabel,updateCurrentSessionCommand}}export{mountedSessionDetailRefreshReason as a,sessionRecordHasActiveAgentWork as c,sessionWithAgentTurnRealtimeOverlay as d,mountedSessionDetailLoadState as i,agentTurnRealtimeOverlayFromPayload as l,useVibe64SessionData as n,mountedSessionRealtimeShouldRefresh as o,latestSessionDetailRecord as r,mountedSessionRecord as s,sessionListRealtimeShouldRefresh as t,latestAgentTurnRealtimeOverlay as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ht as watch,On as unref,g as computed,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{g as useRoute}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-DOEVkBqX.js";import{j as selectedSessionStorageKey,x as SELECTED_SESSION_STORAGE_KEY}from"./index-BUq-MczL.js";function browserSessionStorage(){if(typeof window===`undefined`||!window.sessionStorage)return null;return window.sessionStorage}function readStoredValue(storageKey=``){try{return String(browserSessionStorage()?.getItem(storageKey)||``)}catch{return``}}function writeStoredValue(storageKey=``,value=``){try{const storage=browserSessionStorage();if(!storage)return;const normalizedValue=String(value||``).trim();if(normalizedValue){storage.setItem(storageKey,normalizedValue);return}storage.removeItem(storageKey)}catch{}}function readStorageKey(storageKey=``){return String(typeof storageKey===`function`?storageKey():unref(storageKey)||``).trim()}function readPreferredId(preferredId=``){return String(typeof preferredId===`function`?preferredId():unref(preferredId)||``).trim()}function useStoredSelection({preferredId=``,storageKey=``,enabled=true}={}){const selectionEnabled=computed(()=>Boolean(typeof enabled===`function`?enabled():unref(enabled)));const activeStorageKey=computed(()=>readStorageKey(storageKey));const activePreferredId=computed(()=>readPreferredId(preferredId));const selectedId=ref(selectionEnabled.value?activePreferredId.value||readStoredValue(activeStorageKey.value):``);function select(id=``){if(!selectionEnabled.value)return;selectedId.value=String(id||``).trim();writeStoredValue(activeStorageKey.value,selectedId.value)}function clear(){select(``)}function selectAvailableId(items=[],{fallbackId=``,getId=item=>item?.id}={}){if(!selectionEnabled.value)return``;if(items.length===0){clear();return``}const itemIds=items.map(item=>String(getId(item)||``).trim()).filter(Boolean);if(itemIds.includes(selectedId.value)){select(selectedId.value);return selectedId.value}const preferredSelectionId=activePreferredId.value;if(itemIds.includes(preferredSelectionId)){select(preferredSelectionId);return selectedId.value}const rememberedId=readStoredValue(activeStorageKey.value);select(itemIds.includes(rememberedId)?rememberedId:String(fallbackId||``).trim());return selectedId.value}function capture(){const key=activeStorageKey.value;const admitted=selectionEnabled.value;return Object.freeze({select(id=``){if(!admitted)return;const value=String(id||``).trim();writeStoredValue(key,value);if(selectionEnabled.value&&activeStorageKey.value===key)selectedId.value=value}})}watch(selectionEnabled,nextEnabled=>{selectedId.value=nextEnabled?activePreferredId.value||readStoredValue(activeStorageKey.value):``},{flush:`sync`});watch(activeStorageKey,nextStorageKey=>{if(selectionEnabled.value)selectedId.value=activePreferredId.value||readStoredValue(nextStorageKey)});watch(activePreferredId,nextPreferredId=>{if(selectionEnabled.value&&nextPreferredId)selectedId.value=nextPreferredId});return{capture,clear,select,selectAvailableId,selectedId}}function selectedSessionIdFromRoute(route={}){const rawValue=route?.query?.session;const value=Array.isArray(rawValue)?rawValue[0]:rawValue;return String(value||``).trim()}function useVibe64SessionSelection({projectSlug=useVibe64ProjectSlug(),route=useRoute(),learnerId=``,learningAttemptId=``,purpose=``}={}){const pickerLearning=computed(()=>unref(purpose)===`learning`);const learningLearner=computed(()=>String(unref(learnerId)||``).trim());const learningScope=computed(()=>{if(unref(purpose)===`working`)return null;const learner=String(unref(learnerId)||``).trim();const attempt=String(unref(learningAttemptId)||``).trim();if(!learner&&!attempt)return null;if(!learner||!attempt)throw new Error(`Learning selection requires an exact learner and attempt.`);return{learner,attempt}});return useStoredSelection({enabled:computed(()=>!pickerLearning.value||Boolean(learningLearner.value)),preferredId:computed(()=>{if(pickerLearning.value){if(!learningLearner.value)return``;return selectedSessionIdFromRoute({query:{session:route?.query?.learningSession}})}const scope=learningScope.value;if(!scope)return selectedSessionIdFromRoute(route);const rawAttempt=route?.query?.learningAttempt;if((Array.isArray(rawAttempt)?rawAttempt[0]:rawAttempt)!==scope.attempt)return``;return selectedSessionIdFromRoute({query:{session:route?.query?.learningSession}})}),storageKey:computed(()=>{if(pickerLearning.value)return learningLearner.value?`${SELECTED_SESSION_STORAGE_KEY}:learning:${encodeURIComponent(learningLearner.value)}`:``;const scope=learningScope.value;return scope?`${SELECTED_SESSION_STORAGE_KEY}:learning:${encodeURIComponent(scope.learner)}:attempt:${encodeURIComponent(scope.attempt)}`:selectedSessionStorageKey(unref(projectSlug))})})}export{useVibe64SessionSelection as n,selectedSessionIdFromRoute as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ht as watch,On as unref,g as computed,pn as onScopeDispose,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{t as useEndpointResource}from"./useEndpointResource-MWVNfmMa.js";import{j as useRealtimeEvent}from"./vibe64ProjectScope.local-DqT6e5un.js";import{t as usePaths}from"./usePaths-Db88-HOm.js";import{t as useVibe64ProjectSlug}from"./useVibe64ProjectScope-DOEVkBqX.js";import{i as lessonDashboardApiPath,s as useVibe64LessonDashboard}from"./vibe64LessonDashboard-DlKYjisq.js";var SYSTEM_GRAPH_API_SUFFIX=`/vibe64/system-graph`;var SYSTEM_GRAPH_SURFACE=`app`;function encodeSegment(value=``){return encodeURIComponent(String(value||``).trim())}function systemSessionPath(apiPath=``,sessionId=``,suffix=``){return`${apiPath}/sessions/${encodeSegment(sessionId)}${suffix}`}function systemQueryKey(projectSlug,sessionId=``,resource=``){return[`vibe64`,`system-graph`,projectSlug,String(sessionId||``),resource]}function cityAvailable(status={},kind=``){return status?.cities?.[kind]?.available===true}function useVibe64SystemGraph({active=true,reloadVersion=0,sessionId=``,projection=`native`}={}){const paths=usePaths();const workingProjectSlug=useVibe64ProjectSlug();const lessonDashboard=useVibe64LessonDashboard();const projectSlug=computed(()=>lessonDashboard.value?`lesson:${lessonDashboard.value.attemptId}`:workingProjectSlug.value);const normalizedSessionId=computed(()=>String(unref(sessionId)||``).trim());const enabled=computed(()=>Boolean(unref(active)&&normalizedSessionId.value));const apiPath=computed(()=>lessonDashboardApiPath(lessonDashboard.value,paths.api(SYSTEM_GRAPH_API_SUFFIX,{surface:SYSTEM_GRAPH_SURFACE})));const sessionPath=computed(()=>systemSessionPath(apiPath.value,normalizedSessionId.value));const statusResource=useEndpointResource({enabled,fallbackLoadError:`Architecture index status could not be loaded.`,path:computed(()=>`${sessionPath.value}/status`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`status`)),queryOptions:{refetchOnWindowFocus:false,retry:false},requestRecoveryLabel:`Architecture index status`});const systemStatus=computed(()=>statusResource.data.value||{});const machineEnabled=computed(()=>enabled.value&&projection===`native`&&cityAvailable(systemStatus.value,`machine`));const programEnabled=computed(()=>enabled.value&&projection===`native`&&cityAvailable(systemStatus.value,`program`));const machineResource=useEndpointResource({enabled:machineEnabled,fallbackLoadError:`Source facts could not be loaded.`,path:computed(()=>`${sessionPath.value}/cities/machine`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`machine-city`)),requestRecoveryLabel:`Source facts`});const architectureEnabled=computed(()=>enabled.value&&projection===`architecture`&&cityAvailable(systemStatus.value,`machine`));const architectureResource=useEndpointResource({enabled:architectureEnabled,path:computed(()=>`${sessionPath.value}/architecture`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`architecture`)),queryOptions:{refetchOnWindowFocus:false,retry:false},fallbackLoadError:`Architecture could not be loaded.`,requestRecoveryLabel:`Architecture`});const programResource=useEndpointResource({enabled:programEnabled,fallbackLoadError:`Program descriptions could not be loaded.`,path:computed(()=>`${sessionPath.value}/cities/program`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`program-city`)),requestRecoveryLabel:`Program descriptions`});const refreshResource=useEndpointResource({enabled:false,fallbackSaveError:`Architecture analysis could not be refreshed.`,path:computed(()=>`${sessionPath.value}/refresh`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`refresh`)),requestRecoveryLabel:`Refresh architecture analysis`,writeMethod:`POST`});const cancelResource=useEndpointResource({enabled:false,path:computed(()=>`${sessionPath.value}/refresh/cancel`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`refresh-cancel`)),writeMethod:`POST`,fallbackSaveError:`Architecture cancellation could not be confirmed.`});const subsystemResource=useEndpointResource({enabled:computed(()=>enabled.value&&projection===`native`),fallbackLoadError:`Subsystems could not be loaded.`,path:computed(()=>`${sessionPath.value}/subsystems`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`subsystems`)),requestRecoveryLabel:`Subsystems`});const refreshStatusResource=useEndpointResource({enabled,path:computed(()=>`${sessionPath.value}/refresh/status`),queryKey:computed(()=>systemQueryKey(projectSlug.value,normalizedSessionId.value,`refresh-status`)),queryOptions:{refetchOnMount:`always`,refetchOnWindowFocus:false,retry:false},realtime:{event:`vibe64.session.changed`,matches:({payload={}}={})=>(lessonDashboard.value?payload.learningAttemptId===lessonDashboard.value.attemptId:!payload.learningAttemptId&&payload.projectSlug===projectSlug.value)&&payload.sessionId===normalizedSessionId.value&&payload.reason===`architecture-refresh`},fallbackLoadError:`Analysis progress is unavailable.`});const localRefreshOutput=ref(``);const scan=computed(()=>refreshStatusResource.data.value?.refresh||null);const refreshing=computed(()=>scan.value?.status===`running`||refreshResource.isSaving.value);const clock=ref(Date.now());let timer;watch(()=>enabled.value&&refreshing.value,running=>{clearInterval(timer);clock.value=Date.now();if(running)timer=setInterval(()=>{clock.value=Date.now()},1e3)},{immediate:true});onScopeDispose(()=>clearInterval(timer));useRealtimeEvent({enabled,event:`connect`,onEvent:()=>reload()});watch(()=>`${scan.value?.id}:${scan.value?.startedAt}:${scan.value?.status}`,()=>{const status=scan.value?.status;if(status===`running`&&!refreshResource.isSaving.value){refreshResource.mutation.reset();cancelResource.mutation.reset();localRefreshOutput.value=``}if(enabled.value&&status&&status!==`running`)reload()});const machineCity=computed(()=>machineResource.data.value?.city||null);const programCity=computed(()=>programResource.data.value?.city||null);const loading=computed(()=>Boolean(architectureResource.isLoading.value||statusResource.isLoading.value||machineResource.isLoading.value||programResource.isLoading.value));const error=computed(()=>cancelResource.saveError.value||(scan.value?.status===`failed`?scan.value.message:``)||(scan.value?.status!==`running`?refreshResource.saveError.value:``)||architectureResource.loadError.value||statusResource.loadError.value||machineResource.loadError.value||programResource.loadError.value||``);async function reload(){if(!enabled.value)return;await Promise.all([refreshStatusResource.reload(),statusResource.reload(),...projection===`native`?[subsystemResource.reload()]:[]]);const cityLoads=[];if(architectureEnabled.value)cityLoads.push(architectureResource.reload());if(machineEnabled.value)cityLoads.push(machineResource.reload());if(programEnabled.value)cityLoads.push(programResource.reload());await Promise.all(cityLoads)}watch([enabled,sessionPath,projectSlug],([isEnabled])=>{if(isEnabled)refreshStatusResource.reload()},{immediate:true});let lastReloadVersion=0;watch([enabled,()=>unref(reloadVersion)],([isEnabled,version])=>{if(isEnabled&&version!==lastReloadVersion){lastReloadVersion=version;reload()}},{immediate:true});async function refresh(){if(refreshing.value)return null;localRefreshOutput.value=``;try{const result=await refreshResource.save({},{method:`POST`,options:{timeoutMs:6e5}});await reload();return result}catch(error){localRefreshOutput.value=String(error?.details?.commandOutput||``);await refreshStatusResource.reload();if(!refreshResource.saveError.value)throw error;return null}}return{architecture:computed(()=>architectureResource.data.value?.architecture||null),cancelRefresh:()=>cancelResource.save({},{method:`POST`}),error,loading,machineCity,programCity,refresh,refreshing,refreshProgress:computed(()=>{if(!refreshing.value)return null;const progress=scan.value;const elapsedSeconds=progress?.status===`running`?Math.max(0,Math.floor((clock.value-progress.startedAt)/1e3)):0;return{message:refreshStatusResource.loadError.value?`Analysis continues; progress unavailable.`:progress?.status===`running`?progress.message:`Starting project analysis…`,elapsedSeconds}}),refreshOutput:computed(()=>scan.value?.commandOutput||localRefreshOutput.value),reload,subsystemMap:computed(()=>subsystemResource.data.value||null),subsystemError:subsystemResource.loadError,subsystemLoading:subsystemResource.isLoading,systemStatus}}export{useVibe64SystemGraph as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var VIBE64_ASSISTANT_HOST_KEY=Symbol(`vibe64.assistant.host`);var VIBE64_COLLEAGUE_VIEW_KEY=Symbol(`vibe64.colleague.view`);var VIBE64_COLLEAGUE_PREVIEW_KEY=Symbol(`vibe64.colleague.preview`);var VIBE64_COLLEAGUE_INTEGRATIONS_KEY=Symbol(`vibe64.colleague.integrations`);var VIBE64_COLLEAGUE_DATABASE_KEY=Symbol(`vibe64.colleague.database`);var VIBE64_COLLEAGUE_PLAN_KEY=Symbol(`vibe64.colleague.plan`);var VIBE64_COLLEAGUE_LAYOUT_KEY=Symbol(`vibe64.colleague.layout`);var VIBE64_BROWSER_NAVIGATION_KEY=Symbol(`vibe64.browser.navigation`);var VIBE64_LEARNING_NAVIGATION_KEY=Symbol(`vibe64.learning.navigation`);var VIBE64_COLLEAGUE_LAUNCHER_KEY=Symbol(`vibe64.colleague.launcher`);var VIBE64_HOST_CONVERSATION_KEY=Symbol(`vibe64.host.conversation`);var VIBE64_ASSISTANT_VIEWER_KEY=Symbol(`vibe64.assistant.viewer`);var VIBE64_TRAINING_LEARNER_GESTURE_KEY=Symbol(`vibe64.training.learner-gesture`);var VIBE64_COLLEAGUE_BODY_KEY=Symbol(`vibe64.colleague.body`);export{VIBE64_COLLEAGUE_DATABASE_KEY as a,VIBE64_COLLEAGUE_LAYOUT_KEY as c,VIBE64_COLLEAGUE_VIEW_KEY as d,VIBE64_HOST_CONVERSATION_KEY as f,VIBE64_COLLEAGUE_BODY_KEY as i,VIBE64_COLLEAGUE_PLAN_KEY as l,VIBE64_TRAINING_LEARNER_GESTURE_KEY as m,VIBE64_ASSISTANT_VIEWER_KEY as n,VIBE64_COLLEAGUE_INTEGRATIONS_KEY as o,VIBE64_LEARNING_NAVIGATION_KEY as p,VIBE64_BROWSER_NAVIGATION_KEY as r,VIBE64_COLLEAGUE_LAUNCHER_KEY as s,VIBE64_ASSISTANT_HOST_KEY as t,VIBE64_COLLEAGUE_PREVIEW_KEY as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{J as inject,On as unref,g as computed}from"./runtime-core.esm-bundler-DGXg_mpN.js";var VIBE64_LESSON_DASHBOARD_KEY=Symbol(`vibe64.lesson-dashboard`);var LESSON_DASHBOARD_PROJECT_SECTIONS=Object.freeze([`repository`,`env`,`history`,`health`]);var LESSON_DASHBOARD_SESSION_TOOLS=Object.freeze([`info`,`changes`,`editor`,`database`,`system`]);function lessonDashboardScope(attemptId=``,sessionId=``){const attempt=String(attemptId||``).trim();return attempt?Object.freeze({attemptId:attempt,apiBase:`/api/learning/${encodeURIComponent(attempt)}/vibe64`,sessionId:String(sessionId||``).trim()}):null}function lessonDashboardApiPath(scope,path=``){const value=String(path||``);if(!scope?.apiBase||!value.startsWith(`/api/vibe64/`))return value;return`${scope.apiBase}/${value.slice(12)}`}function lessonDashboardSectionVisible(context={},section=``){return!context?.lessonDashboard||LESSON_DASHBOARD_PROJECT_SECTIONS.includes(section)}function useVibe64LessonDashboard(){const scope=inject(VIBE64_LESSON_DASHBOARD_KEY,null);return computed(()=>unref(scope)||null)}export{lessonDashboardScope as a,lessonDashboardApiPath as i,LESSON_DASHBOARD_SESSION_TOOLS as n,lessonDashboardSectionVisible as o,VIBE64_LESSON_DASHBOARD_KEY as r,useVibe64LessonDashboard as s,LESSON_DASHBOARD_PROJECT_SECTIONS as t};
|