vibe64 0.1.47 → 0.1.49
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 +1734 -1687
- package/bin/server.js +75 -75
- package/bin/upgrade-state.js +4539 -4471
- package/dist/assets/GithubBrowserTabs-BwpiRS2u.js +1 -0
- package/dist/assets/{LocalDatabaseServer-6VzPWZxG.js → LocalDatabaseServer-u_Ky7bNS.js} +1 -1
- package/dist/assets/{Vibe64AuthSettingsButton-TLwqAxDo.js → Vibe64AuthSettingsButton-BCwswT1G.js} +1 -1
- package/dist/assets/{Vibe64DashboardShell-B4dQ-oHD.js → Vibe64DashboardShell-CWlgrR2B.js} +1 -1
- package/dist/assets/{Vibe64DatabaseWorkspace-Bh5WIPOj.js → Vibe64DatabaseWorkspace-Dhs8_H0P.js} +1 -1
- package/dist/assets/Vibe64OutputControls-Dn548CZa.js +8 -0
- package/dist/assets/{Vibe64RepositoryWorkspace-idDg94lc.js → Vibe64RepositoryWorkspace-C-8S4JUF.js} +1 -1
- package/dist/assets/{Vibe64SessionFiles-Z9zxosyl.js → Vibe64SessionFiles-Cx6J7DDN.js} +2 -3
- package/dist/assets/{Vibe64UiStoryboardView-CrCDWMdR.js → Vibe64UiStoryboardView-DHyhJiWS.js} +1 -1
- package/dist/assets/{Vibe64UnavailableSessions-TqsxvGSf.js → Vibe64UnavailableSessions-Da4RxIhA.js} +1 -1
- package/dist/assets/{_sessionId_-7F1VGOou.js → _sessionId_-DCpgDPSI.js} +1 -1
- package/dist/assets/_slug_-BbEWp01a.js +25 -0
- package/dist/assets/{_slug_-B16mTWjj.css → _slug_-DerKOisL.css} +1 -1
- package/dist/assets/{access-Cx9RH95J.js → access-D4di2sCr.js} +1 -1
- package/dist/assets/{app-DPx4KKOa.js → app-Adr9Iz8p.js} +1 -1
- package/dist/assets/asyncModuleRecovery-DJsn5NrL.js +1 -0
- package/dist/assets/{changes-DYsuQLFW.js → changes-3Dd1O8Lu.js} +1 -1
- package/dist/assets/client-BAXHGUOC.js +1 -0
- package/dist/assets/{client-BYsDPxR3.js → client-CCZIu6yc.js} +1 -1
- package/dist/assets/{conversation-3ln-WnbL.css → conversation-CSDHdGDb.css} +1 -1
- package/dist/assets/conversation-DG9lp25w.js +8 -0
- package/dist/assets/conversation-ErAO1CmH.js +13 -0
- package/dist/assets/{dashboard-CWswAbYP.js → dashboard-0tCzDYCX.js} +1 -1
- package/dist/assets/english-definitions-DeiQ-jTT.js +1 -0
- package/dist/assets/env-DsyQ2MFX.js +1 -0
- package/dist/assets/{health-C0f6s-G1.js → health-DyTXU-nb.js} +1 -1
- package/dist/assets/{history-BQjETNB9.js → history-BXGAdPMI.js} +1 -1
- package/dist/assets/{incoming-COpY201m.js → incoming-yajkdGBY.js} +1 -1
- package/dist/assets/{index-MWACm8Pp.css → index-B-dukXUB.css} +1 -1
- package/dist/assets/index-CGz4Yow6.js +136 -0
- package/dist/assets/{integrations-BBkvNRHu.js → integrations-BMrXET36.js} +10 -2
- package/dist/assets/issues-kc1XBZCK.js +1 -0
- package/dist/assets/{learning-B8_wHoe1.js → learning-CIE5ghYv.js} +1 -1
- package/dist/assets/linkPath-Ch9eft18.js +1 -0
- package/dist/assets/{placement-DXvgK433.js → placement-BNmlke_j.js} +1 -1
- package/dist/assets/placement-DYM3JJ-F.js +1 -0
- package/dist/assets/publish-DTh6amqi.js +3 -0
- package/dist/assets/pull-requests-CbfGSSIh.js +1 -0
- package/dist/assets/{repository-BNPt7UWc.js → repository-BstMh-bG.js} +1 -1
- package/dist/assets/settings-Bf8C6dls.js +1 -0
- package/dist/assets/{studioGateApi-BVdclhPL.js → studioGateApi-mkX1eOTX.js} +1 -1
- package/dist/assets/{studioUrls-CGKCbM_d.js → studioUrls-B0-GdWh8.js} +1 -1
- package/dist/assets/useArchivedVibe64Sessions-DIOpfUxD.js +1 -0
- package/dist/assets/useCommand-CVuya6vG.js +1 -0
- package/dist/assets/useEndpointResource-7-YDfAxX.js +1 -0
- package/dist/assets/usePaths-Y6UuQxmI.js +1 -0
- package/dist/assets/{useUiFeedback-B51xtCAK.js → useUiFeedback-Bd3rao6E.js} +1 -1
- package/dist/assets/useVibe64ConversationLog-ChJOU2SD.js +1 -0
- package/dist/assets/{useVibe64DatabaseTools-BE_yXZFn.js → useVibe64DatabaseTools-DKV-TeNJ.js} +1 -1
- package/dist/assets/{useVibe64ProjectScope-D7b8n1gx.js → useVibe64ProjectScope-DXjsKKhl.js} +1 -1
- package/dist/assets/useVibe64SessionData-BkIHUrP5.js +1 -0
- package/dist/assets/useVibe64SessionSelection-N8wX5oqo.js +1 -0
- package/dist/assets/{useVibe64SystemGraph-CDDcsye4.js → useVibe64SystemGraph-Db_eD-X8.js} +1 -1
- package/dist/assets/{useVibe64Terminal-Zr3Mig2L.js → useVibe64Terminal-B9EWJ9Ba.js} +2 -2
- package/dist/assets/vibe64ProjectScope.local-l5_-E6pq.js +1 -0
- package/dist/assets/vibe64RepositoryRealtime-CHT4-6VN.js +1 -0
- package/dist/assets/vibe64SessionFocus-CS6Ex53G.js +1 -0
- package/dist/assets/vibe64SessionFocus-CSm4YJQD.css +1 -0
- package/dist/assets/vibe64SessionRequestConfig-xIx-5jxQ.js +1 -0
- package/dist/index.html +26 -22
- package/docs/colleague-usage/ai-accounts.md +6 -2
- package/docs/colleague-usage/ai-balance-and-allowance.md +15 -2
- package/docs/colleague-usage/coding-agent-failures.md +2 -1
- package/docs/colleague-usage/coding-agent-goals.md +8 -3
- package/docs/colleague-usage/coding-agents.md +16 -0
- package/docs/colleague-usage/github-work.md +14 -0
- package/docs/colleague-usage/preview-browser-checks.md +5 -3
- package/docs/colleague-usage/project-setup.md +6 -3
- package/docs/colleague-usage/running-vibe64-on-your-computer.md +3 -1
- package/docs/colleague-usage/sessions.md +35 -7
- package/docs/colleague-usage/starter-apps.md +3 -0
- package/docs/colleague-usage/temporary-chat-context.md +2 -1
- package/docs/colleague-usage/temporary-chats.md +17 -5
- package/node_modules/@jskit-ai/assistant-core/CHANGELOG.md +539 -0
- package/node_modules/@jskit-ai/assistant-core/locales/en.json +383 -0
- package/node_modules/@jskit-ai/assistant-core/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/CHANGELOG.md +138 -0
- package/node_modules/@jskit-ai/assistant-runtime/README.md +2 -1
- package/node_modules/@jskit-ai/assistant-runtime/locales/en.json +137 -0
- package/node_modules/@jskit-ai/assistant-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/assistantConfigRepository.js +223 -203
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/conversationsRepository.js +286 -266
- package/node_modules/@jskit-ai/assistant-runtime/src/server/repositories/messagesRepository.js +270 -250
- package/node_modules/@jskit-ai/assistant-voice/locales/en.json +182 -0
- package/node_modules/@jskit-ai/assistant-voice/package.json +3 -2
- package/node_modules/@jskit-ai/connector-google-calendar/CHANGELOG.md +83 -0
- package/node_modules/@jskit-ai/connector-google-calendar/locales/en.json +91 -0
- package/node_modules/@jskit-ai/connector-google-calendar/package.json +4 -3
- package/node_modules/@jskit-ai/connectors-catalog/CHANGELOG.md +1722 -0
- package/node_modules/@jskit-ai/connectors-catalog/README.md +11 -0
- package/node_modules/@jskit-ai/connectors-catalog/locales/en.json +3139 -0
- package/node_modules/@jskit-ai/connectors-catalog/package.json +5 -4
- package/node_modules/@jskit-ai/connectors-core/CHANGELOG.md +183 -0
- package/node_modules/@jskit-ai/connectors-core/locales/en.json +92 -0
- package/node_modules/@jskit-ai/connectors-core/package.json +3 -2
- package/node_modules/@jskit-ai/http-runtime/CHANGELOG.md +31 -0
- package/node_modules/@jskit-ai/http-runtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/http-runtime/package.json +3 -2
- package/node_modules/@jskit-ai/kernel/CHANGELOG.md +182 -0
- package/node_modules/@jskit-ai/kernel/locales/en.json +94 -0
- package/node_modules/@jskit-ai/kernel/package.json +6 -2
- package/node_modules/@jskit-ai/payments-core/CHANGELOG.md +128 -0
- package/node_modules/@jskit-ai/payments-core/locales/en.json +77 -0
- package/node_modules/@jskit-ai/payments-core/package.json +3 -2
- package/node_modules/@jskit-ai/realtime/CHANGELOG.md +20 -0
- package/node_modules/@jskit-ai/realtime/locales/en.json +14 -0
- package/node_modules/@jskit-ai/realtime/package.json +3 -2
- package/node_modules/@jskit-ai/resource-core/package.json +1 -1
- package/node_modules/@jskit-ai/resource-crud-core/package.json +1 -1
- package/node_modules/@jskit-ai/uploads-runtime/CHANGELOG.md +35 -0
- package/node_modules/@jskit-ai/uploads-runtime/locales/en.json +15 -0
- package/node_modules/@jskit-ai/uploads-runtime/package.json +3 -2
- package/node_modules/@local/vibe64-execution/src/host/execHelper.js +49 -48
- package/node_modules/@local/vibe64-execution/src/server/gitTurnCheckpointCommand.js +1327 -0
- package/node_modules/@local/vibe64-genesis/bin/vibe64-genesis-host-context +430 -390
- package/node_modules/@local/vibe64-genesis/src/server/index.js +45 -45
- package/node_modules/@local/vibe64-genesis/src/server/promptContext.js +119 -119
- package/node_modules/@local/vibe64-runtime/src/server/codexAppServerProcess.js +57 -57
- package/node_modules/@local/vibe64-sessions/package.json +2 -1
- package/node_modules/@local/vibe64-terminals/src/server/opencodeSessionEnvironmentPlugin.js +195 -175
- package/node_modules/@local/vibe64-terminals/src/server/sessionWorkOperationCommand.js +1385 -1362
- package/package.json +15 -15
- package/server.bundle.mjs +44206 -42825
- package/dist/assets/GithubBrowserTabs-D-Z3TlA8.js +0 -1
- package/dist/assets/Vibe64OutputControls-DtybwgL3.js +0 -8
- package/dist/assets/_slug_-Bq84T_Iv.js +0 -24
- package/dist/assets/conversation-Bn7wpATa.js +0 -2
- package/dist/assets/conversation-CNcCrV-R.js +0 -16
- package/dist/assets/definitions-CEbi4qae.js +0 -1
- package/dist/assets/env-X7EOFLtl.js +0 -1
- package/dist/assets/index-CBo1BEk6.js +0 -138
- package/dist/assets/issues-BiSiUd5o.js +0 -1
- package/dist/assets/placement-B5T1LR7m.js +0 -1
- package/dist/assets/publish-CeLZE2AG.js +0 -3
- package/dist/assets/pull-requests-pTdQOT7i.js +0 -1
- package/dist/assets/settings-lecRzZ-r.js +0 -1
- package/dist/assets/useArchivedVibe64Sessions-DHYRnyJD.js +0 -1
- package/dist/assets/useCommand-Epd2yHhQ.js +0 -1
- package/dist/assets/useEndpointResource-DBRQISI_.js +0 -1
- package/dist/assets/usePaths-DdAnjVDj.js +0 -1
- package/dist/assets/useVibe64ConversationLog-DboM3tYN.js +0 -1
- package/dist/assets/useVibe64SessionData-CreWtQAO.js +0 -1
- package/dist/assets/useVibe64SessionSelection-CDaX4uwY.js +0 -1
- package/dist/assets/vibe64ProjectScope.local-BxTBYuRg.js +0 -1
- package/dist/assets/vibe64RepositoryRealtime-C-J0I5jY.js +0 -1
- package/dist/assets/vibe64SessionFocus-DSW5Irm6.css +0 -1
- package/dist/assets/vibe64SessionFocus-DzqbVq60.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.vibe64-team-ai-gate[data-v-206f9f1c]{justify-items:start;gap:.75rem;width:100%;max-width:min(36rem,100%);margin-inline:auto;padding:1.5rem;display:grid}.vibe64-team-ai-gate__icon[data-v-206f9f1c]{background:rgba(var(--v-theme-primary), .12);color:rgb(var(--v-theme-primary));border-radius:50%;justify-content:center;align-items:center;width:3rem;height:3rem;display:inline-flex}.vibe64-team-ai-gate__title[data-v-206f9f1c]{letter-spacing:0;margin:0;font-size:1.25rem;font-weight:760;line-height:1.2}.vibe64-team-ai-gate__text[data-v-206f9f1c]{color:rgba(var(--v-theme-on-surface), .72);margin:0}.vibe64-team-ai-gate__ask[data-v-206f9f1c]{background:rgba(var(--v-theme-on-surface), .05);border:1px solid rgba(var(--v-theme-on-surface), .12);border-radius:.5rem;width:100%;margin:.25rem 0;padding:.85rem 1rem;font-weight:600}.vibe64-team-ai-gate__actions[data-v-206f9f1c]{flex-wrap:wrap;gap:.5rem;display:flex}@media (width<=599px){.vibe64-team-ai-gate[data-v-206f9f1c]{padding:1.25rem 1rem}.vibe64-team-ai-gate__actions[data-v-206f9f1c]{width:100%;display:grid}}.project-selection-gate[data-v-68686cbe]{align-content:start;gap:.85rem;min-width:0;display:grid}.project-selection-gate__deleted[data-v-68686cbe]{justify-items:start;gap:.75rem;width:100%;max-width:min(36rem,100%);margin-inline:auto;padding:1.25rem;display:grid}.project-selection-gate__learning-note[data-v-68686cbe]{background:var(--v64-learning-container,#f5c5183d);color:var(--v64-on-learning-container,inherit);border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;padding:.5rem .75rem;display:flex}.project-selection-gate__team-ai[data-v-68686cbe]{background:rgb(var(--v-theme-warning-container));border:1px solid rgba(var(--v-theme-warning), .35);color:rgb(var(--v-theme-on-warning-container));border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.project-selection-gate__team-ai-text[data-v-68686cbe]{gap:.15rem;min-width:min(100%,16rem);display:grid}.project-selection-gate__team-ai-text span[data-v-68686cbe]{opacity:.8}.project-selection-gate__project-name[data-v-68686cbe]{align-items:center;gap:.5rem;display:inline-flex}.project-selection-gate__deleted-text[data-v-68686cbe]{color:rgba(var(--v-theme-on-surface), .72);margin:0}.project-selection-gate__loading[data-v-68686cbe]{flex:auto;min-height:18rem}.project-selection-gate__picker[data-v-68686cbe]{gap:1rem;width:100%;max-width:min(48rem,100%);margin-inline:auto;padding:1rem;display:grid}.project-selection-gate__header[data-v-68686cbe]{justify-content:space-between;align-items:start;min-width:0;display:flex}.project-selection-gate__eyebrow[data-v-68686cbe]{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-68686cbe]{letter-spacing:0;margin:0;font-size:1.25rem;font-weight:760;line-height:1.15}.project-selection-gate__path[data-v-68686cbe]{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-68686cbe]{gap:.45rem;display:grid}.project-selection-gate__project[data-v-68686cbe]{text-transform:none;justify-content:flex-start;min-height:3.1rem}.project-selection-gate__project[data-v-68686cbe] .v-btn__content{place-items:flex-start start;gap:.1rem;min-width:0;display:grid}.project-selection-gate__project-path[data-v-68686cbe]{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-68686cbe]{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.65rem;display:grid}@media (width<=640px){.project-selection-gate__create[data-v-68686cbe]{grid-template-columns:1fr}.project-selection-gate__team-ai .v-btn[data-v-68686cbe]{width:100%}}.local-remotes[data-v-f775cba6]{flex:none;min-width:0}.local-remotes__branch[data-v-f775cba6]{min-width:0;max-width:100%}.local-remotes__branch-name[data-v-f775cba6]{text-overflow:ellipsis;max-width:8rem;display:block;overflow:hidden}.local-remotes__status[data-v-f775cba6]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));align-items:center;gap:.375rem;display:flex}.local-remotes__count[data-v-f775cba6]{font-variant-numeric:tabular-nums}.local-remotes__details[data-v-f775cba6]{grid-template-columns:auto minmax(0,1fr);gap:.75rem 1rem;display:grid}.local-remotes__details dt[data-v-f775cba6]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity))}.local-remotes__details dd[data-v-f775cba6],.local-remotes__message[data-v-f775cba6]{overflow-wrap:anywhere;margin:0}.local-remotes__url[data-v-f775cba6]{overflow-wrap:anywhere}.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-649887bb]{flex-shrink:0}.chat-modes__details[data-v-649887bb]{flex-direction:column;max-height:min(560px,75dvh);display:flex}.chat-modes__details-body[data-v-649887bb]{min-height:0;overflow-y:auto}.chat-modes__model[data-v-649887bb]{white-space:normal;overflow-wrap:anywhere}.vibe64-temporary-ai__composer-actions[data-v-633c22d6]{align-items:center;gap:.25rem;width:100%;min-width:0;display:flex}.vibe64-temporary-ai.vibe64-temporary-ai--host[data-v-633c22d6]{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-633c22d6]{background:rgba(var(--v-theme-secondary), .12)}.vibe64-temporary-ai__host-tab[data-v-633c22d6]{flex:none}.vibe64-temporary-ai__host-content[data-v-633c22d6]{min-width:0;min-height:0}.vibe64-temporary-ai__unread[data-v-633c22d6]{background:rgb(var(--v-theme-primary));border-radius:50%;flex:0 0 8px;height:8px}.vibe64-temporary-ai[data-v-633c22d6]{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-633c22d6]{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-633c22d6]{scrollbar-width:thin;flex:auto;gap:.25rem;min-width:0;display:flex;overflow-x:auto}.vibe64-temporary-ai__tab[data-v-633c22d6]{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-633c22d6]{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-633c22d6]:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-ai__tab-rename[data-v-633c22d6],.vibe64-temporary-ai__tab-close[data-v-633c22d6]{flex:none}.vibe64-temporary-ai[data-v-633c22d6]:focus-visible,.vibe64-temporary-ai__tab-select[data-v-633c22d6]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.vibe64-temporary-ai__tab--active[data-v-633c22d6]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .35);font-weight:650}.vibe64-temporary-ai__tab--main[data-v-633c22d6]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .22)}.vibe64-temporary-ai__new-task[data-v-633c22d6]{flex:none}.vibe64-temporary-ai__tabs-spacer[data-v-633c22d6]{flex:auto}.vibe64-temporary-ai__busy[data-v-633c22d6]{background:rgb(var(--v-theme-primary));border-radius:50%;width:.45rem;height:.45rem}.vibe64-temporary-ai__recovery[data-v-633c22d6]{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-633c22d6]:not(:empty){max-height:min(20dvh,8rem);padding:.35rem .55rem 0;overflow-y:auto}.vibe64-temporary-ai__recovery-summary[data-v-633c22d6]{flex:1;min-width:0}.vibe64-temporary-ai__recovery strong[data-v-633c22d6]{font-size:.95rem;line-height:1.4}.vibe64-temporary-ai__recovery summary[data-v-633c22d6]{cursor:pointer}.vibe64-temporary-ai__check-update[data-v-633c22d6],.vibe64-temporary-ai__composer[data-v-633c22d6]{flex:none}.vibe64-temporary-ai__return[data-v-633c22d6]{justify-self:start;margin-top:.4rem;scroll-margin-block:.55rem}.vibe64-temporary-ai__recovery p[data-v-633c22d6]{margin:0}.vibe64-temporary-ai__recovery p+p[data-v-633c22d6]{margin-top:.3rem}.vibe64-temporary-ai__error[data-v-633c22d6]{color:rgba(var(--v-theme-on-surface), .66);font-size:.82rem}.vibe64-temporary-ai__feedback[data-v-633c22d6]{flex:none;min-width:0;max-height:min(12dvh,6rem);overflow-y:auto}.vibe64-temporary-ai__error[data-v-633c22d6]{color:rgb(var(--v-theme-error));padding:.3rem .55rem}.vibe64-temporary-ai__error--recovered[data-v-633c22d6]{color:rgba(var(--v-theme-on-surface), .66)}@media (width<=720px){.vibe64-temporary-ai[data-v-633c22d6]{z-index:30;border:0;border-radius:0;inset:0}}@media (pointer:coarse){.vibe64-temporary-ai__tab-select[data-v-633c22d6],.vibe64-temporary-ai__new-task[data-v-633c22d6],.vibe64-temporary-ai__tab-rename[data-v-633c22d6],.vibe64-temporary-ai__tab-close[data-v-633c22d6],.vibe64-temporary-ai__check-update[data-v-633c22d6],.vibe64-temporary-ai__return[data-v-633c22d6]{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-bdc764b2]{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.project-preview__output[data-v-bdc764b2]{flex:1;min-height:0}.project-preview__warning[data-v-bdc764b2]{overflow-wrap:anywhere;flex:none;max-height:35%;overflow-y:auto}.project-preview__warning p[data-v-bdc764b2]{margin:.25rem 0}.project-preview__warning-actions[data-v-bdc764b2]{flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin-top:.25rem;display:flex}.project-preview__warning-actions button[data-v-bdc764b2]:disabled{opacity:.6}.project-onboarding[data-v-bdc764b2]{width:min(100%,52rem);margin:auto;padding:clamp(1rem,3vw,2.5rem);overflow-y:auto}.project-onboarding h2[data-v-bdc764b2]{margin-bottom:1rem;font-size:1.6rem;line-height:1.25}.project-onboarding p[data-v-bdc764b2]{margin-bottom:1.25rem;line-height:1.6}.project-onboarding__eyebrow[data-v-bdc764b2]{letter-spacing:.06em;text-transform:uppercase;opacity:.65;font-size:.8rem;font-weight:700}.project-onboarding__group[data-v-bdc764b2]{margin-block:1.5rem}.project-onboarding__group h3[data-v-bdc764b2]{margin-bottom:.75rem}.project-onboarding__choices[data-v-bdc764b2]{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:1rem;display:grid}.project-onboarding__choice[data-v-bdc764b2]{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-bdc764b2]:not(:disabled):hover{border-color:rgb(var(--v-theme-primary));background:rgba(var(--v-theme-primary), .05)}.project-onboarding__choice[data-v-bdc764b2]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:3px}.project-onboarding__choice[data-v-bdc764b2]:disabled{opacity:.55}.project-onboarding__choice span[data-v-bdc764b2]{font-size:.9rem;line-height:1.5}.project-onboarding__choose[data-v-bdc764b2]{color:rgb(var(--v-theme-primary));margin-top:auto;padding-top:.5rem;font-weight:600}.project-onboarding__actions[data-v-bdc764b2]{flex-wrap:wrap;gap:.75rem;display:flex}.agent-plan-usage[data-v-27c8bd25]{text-transform:none;max-width:100%;font-size:.7rem}.agent-plan-usage__details[data-v-27c8bd25]{white-space:pre-line;margin-block:.5rem}.agent-plan-usage__goal-text[data-v-27c8bd25]{white-space:pre-wrap;overflow-wrap:anywhere}.action-label-pending[data-v-341758b6]{visibility:hidden}.vibe64-routing-notice[data-v-341758b6] .v-alert__content{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}details[data-v-341758b6]{flex:13rem;min-width:0}details[open][data-v-341758b6]{flex-basis:100%}.vibe64-routing-notice__actions[data-v-341758b6]{flex:none;max-width:100%}.vibe64-routing-notice__actions[data-v-341758b6] .v-btn{min-height:32px;padding-inline:8px}summary[data-v-341758b6]{cursor:pointer;overflow-wrap:anywhere;align-content:center;min-height:32px}@media (pointer:coarse){summary[data-v-341758b6],.vibe64-routing-notice__actions[data-v-341758b6] .v-btn{min-height:44px}}.work-plan-control[data-v-e0f4c1f1]{flex:none;align-items:center;display:inline-flex}@media (pointer:coarse){.work-plan-control>.v-btn[data-v-e0f4c1f1]{min-width:48px;min-height:48px}}.work-plan-content[data-v-e0f4c1f1]{overflow-wrap:anywhere;min-height:0}.work-plan-archive-context[data-v-e0f4c1f1]{flex:none;align-items:center;gap:.5rem;display:flex}.work-plan-archive-copy[data-v-e0f4c1f1]{min-width:0}.work-plan-history-title[data-v-e0f4c1f1]{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0}.work-plan-empty[data-v-e0f4c1f1]{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:12rem;display:flex}.work-plan-item[data-v-e0f4c1f1]{align-items:flex-start;gap:.75rem;margin-block:.5rem;display:flex}.work-plan-item input[data-v-e0f4c1f1]{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-e0f4c1f1]>: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}}.setup-tools[data-v-cf5a6945]{gap:var(--v64-space-2,8px);margin-top:var(--v64-space-2,8px);display:grid}.setup-tools__header[data-v-cf5a6945]{gap:2px;padding-inline:2px;display:grid}.setup-tools__header strong[data-v-cf5a6945]{font:var(--v64-type-title-md);font-size:.9375rem}.setup-tools__header span[data-v-cf5a6945]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md)}.setup-tools__found[data-v-cf5a6945]{color:var(--v64-on-surface-variant);align-items:baseline;gap:6px;margin:0;padding-inline:2px;font-size:.8125rem;display:flex}.setup-tools__found .v-icon[data-v-cf5a6945]{color:var(--v64-success);flex:none;transform:translateY(2px)}.setup-tools__found-item[data-v-cf5a6945]{margin-left:4px}.setup-tools__found-item code[data-v-cf5a6945]{overflow-wrap:anywhere;background:0 0;margin-left:4px;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.75rem}.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-228a4f92]{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-228a4f92]{grid-area:title;font-size:.88rem}.vibe64-temporary-action-terminal__status[data-v-228a4f92]{grid-area:status}.vibe64-temporary-action-terminal--error .vibe64-temporary-action-terminal__line[data-v-228a4f92]{-webkit-line-clamp:3;line-clamp:3;overflow-wrap:anywhere;white-space:normal;-webkit-box-orient:vertical;flex-basis:100%;display:-webkit-box}.vibe64-temporary-action-terminal__title[data-v-228a4f92],.vibe64-temporary-action-terminal__line[data-v-228a4f92]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-action-terminal__line[data-v-228a4f92]{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-40a5e7a0]{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-40a5e7a0]{opacity:.8;margin-top:.2rem}.studio-ai-sessions__toolbar[data-v-40a5e7a0]{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-40a5e7a0]{flex-wrap:wrap;align-items:center;gap:.45rem;width:100%;min-width:0;display:flex}.studio-ai-sessions__tab[data-v-40a5e7a0]{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-40a5e7a0] .v-chip__content{align-items:stretch;min-width:0;display:inline-flex}.studio-ai-sessions__tab-main[data-v-40a5e7a0]{--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-40a5e7a0]{font-weight:560;color:var(--studio-control-text,#202124)!important}.studio-ai-sessions__tab--archiving .studio-ai-sessions__tab-main[data-v-40a5e7a0]{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-40a5e7a0]{background:currentColor}.studio-ai-sessions__tab-main[data-v-40a5e7a0],.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{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-40a5e7a0]{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-40a5e7a0]: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-40a5e7a0]:hover,.studio-ai-sessions__tab--active .studio-ai-sessions__tab-main:hover+.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{background:color-mix(in srgb, var(--v64-on-secondary-container) 8%, var(--studio-control-active-bg,#e7e7e7))}.studio-ai-sessions__tab[data-v-40a5e7a0]: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-40a5e7a0] .v-chip__overlay,.studio-ai-sessions__tab[data-v-40a5e7a0] .v-chip__underlay{display:none}.studio-ai-sessions__tab-label[data-v-40a5e7a0]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.studio-ai-sessions__repository-state[data-v-40a5e7a0]{color:rgba(var(--v-theme-on-surface), .4);flex:none;margin-inline-start:.42rem}.studio-ai-sessions__tab-info[data-v-40a5e7a0]{color:inherit;flex-shrink:0;display:none}.studio-ai-sessions__info[data-v-40a5e7a0]{overflow-wrap:anywhere;max-width:100%;padding:.25rem}.studio-ai-sessions__info-facts[data-v-40a5e7a0]{grid-template-columns:auto minmax(0,1fr);gap:.3rem .75rem;margin:.5rem 0 0;display:grid}.studio-ai-sessions__info-facts dt[data-v-40a5e7a0]{opacity:.75}.studio-ai-sessions__info-facts dd[data-v-40a5e7a0]{margin:0}.studio-ai-sessions__repository-state--saved[data-v-40a5e7a0]{color:rgb(var(--v-theme-success))}.studio-ai-sessions__repository-state--unsaved[data-v-40a5e7a0],.studio-ai-sessions__repository-state--unavailable[data-v-40a5e7a0]{color:rgb(var(--v-theme-error))}.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{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-40a5e7a0]{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-40a5e7a0]:hover,.studio-ai-sessions__tab-archive[data-v-40a5e7a0]:focus-visible{opacity:1;pointer-events:auto;background:color-mix(in srgb, currentColor 14%, transparent)!important}.studio-ai-sessions__tab-archive[data-v-40a5e7a0] .v-icon{font-size:.98rem}.studio-ai-sessions__status-dot[data-v-40a5e7a0]{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-40a5e7a0]{animation:1.3s steps(2,end) infinite studio-ai-sessions-thinking-pulse-40a5e7a0}.studio-ai-sessions__status-dot--blocked[data-v-40a5e7a0],.studio-ai-sessions__status-dot--failed[data-v-40a5e7a0]{background:rgb(var(--v-theme-error))}@keyframes studio-ai-sessions-thinking-pulse-40a5e7a0{0%,to{opacity:.45}50%{opacity:1}}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tabs[data-v-40a5e7a0]{flex-wrap:nowrap;gap:.34rem}.studio-ai-sessions__toolbar--compact[data-v-40a5e7a0]{min-height:2rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-40a5e7a0]{letter-spacing:0;flex:0 auto;min-width:3.5rem;max-width:15rem;height:1.75rem;min-height:1.75rem;font-size:.86rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-40a5e7a0] .v-chip__content{flex:auto;width:100%}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-main[data-v-40a5e7a0]{padding-inline:.45rem .4rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab--active .studio-ai-sessions__tab-main[data-v-40a5e7a0]{padding-inline-end:.18rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{padding-inline:0 .14rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__status-dot[data-v-40a5e7a0]{width:.38rem;height:.38rem;margin-right:.3rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__repository-state[data-v-40a5e7a0]{width:12px;height:12px;margin-inline-start:.22rem;font-size:12px}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-info[data-v-40a5e7a0]{width:1.25rem;height:1.25rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-info[data-v-40a5e7a0] .v-icon,.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-40a5e7a0] .v-icon{font-size:.82rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-40a5e7a0]{opacity:.7;flex-basis:1.2rem;min-width:1.2rem;min-height:1.2rem;width:1.2rem!important;height:1.2rem!important}@media (width<=640px){.studio-ai-sessions__toolbar[data-v-40a5e7a0]{flex-direction:column;align-items:stretch}}@media (hover:none),(pointer:coarse){.studio-ai-sessions__tab-info[data-v-40a5e7a0]{display:inline-flex}.studio-ai-sessions__repository-state--desktop[data-v-40a5e7a0]{display:none}.studio-ai-sessions__tab .studio-ai-sessions__tab-archive[data-v-40a5e7a0]{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-40a5e7a0]{opacity:1;animation:none}}.vibe64-approvals[data-v-26d38d3c]{min-width:0}.vibe64-approvals__stack[data-v-26d38d3c]{max-height:min(40vh,26rem);padding:0 0 .5rem;display:block;overflow-y:auto}.vibe64-approvals--phone .vibe64-approvals__stack[data-v-26d38d3c]{max-height:none;padding:0}.vibe64-approvals__panel[data-v-26d38d3c]{background:0 0}.vibe64-approvals__panel--sheet[data-v-26d38d3c]{background:rgb(var(--v-theme-surface));max-height:85vh;padding:0 1rem calc(1rem + env(safe-area-inset-bottom));overflow-y:auto}.vibe64-approvals__sheet-header[data-v-26d38d3c]{justify-content:space-between;align-items:center;min-height:3.5rem;display:flex}.vibe64-approvals__list[data-v-26d38d3c]{flex-direction:column;gap:.5rem;display:flex}.vibe64-approvals__card[data-v-26d38d3c]{border-color:rgba(var(--v-theme-secondary), .45);background:rgba(var(--v-theme-secondary), .05);padding:.75rem}.vibe64-approvals__head[data-v-26d38d3c]{align-items:center;gap:.625rem;min-width:0;display:flex}.vibe64-approvals__avatar[data-v-26d38d3c]{font-weight:600}.vibe64-approvals__who[data-v-26d38d3c]{flex:auto;min-width:0}.vibe64-approvals__text[data-v-26d38d3c]{overflow-wrap:anywhere;white-space:pre-wrap;margin:.5rem 0 0}.vibe64-approvals__note[data-v-26d38d3c]{margin:.375rem 0 0}.vibe64-approvals__draft[data-v-26d38d3c]{margin-top:.5rem}.vibe64-approvals__actions[data-v-26d38d3c]{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.vibe64-approvals__actions--owner[data-v-26d38d3c]{justify-content:flex-start}.vibe64-approvals--phone .vibe64-approvals__actions[data-v-26d38d3c]{flex-direction:column-reverse}.vibe64-approvals--phone .vibe64-approvals__actions--owner[data-v-26d38d3c]{flex-direction:column}.vibe64-approvals--phone .vibe64-approvals__actions[data-v-26d38d3c] .v-btn{min-height:48px}.vibe64-approvals__decided[data-v-26d38d3c]{flex-direction:column;gap:.25rem;margin:0;padding:0 .25rem;list-style:none;display:flex}.vibe64-approvals__row-line[data-v-26d38d3c]{align-items:center;gap:.5rem;min-width:0;min-height:2rem;display:flex}.vibe64-approvals__row-text[data-v-26d38d3c]{overflow-wrap:anywhere;flex:auto;min-width:0}.vibe64-approvals__show[data-v-26d38d3c]{flex-shrink:0}.vibe64-approvals__excerpt[data-v-26d38d3c]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));min-width:0;margin:0 0 .25rem 1.625rem}p.vibe64-approvals__excerpt[data-v-26d38d3c],.vibe64-approvals__excerpt summary[data-v-26d38d3c]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-approvals__excerpt summary[data-v-26d38d3c]{cursor:pointer;display:block}.vibe64-approvals__excerpt[open] summary[data-v-26d38d3c]{overflow-wrap:anywhere;white-space:pre-wrap}.vibe64-approvals__quote[data-v-26d38d3c]{border-inline-start:3px solid rgba(var(--v-theme-error), .5);color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));overflow-wrap:anywhere;margin:0 0 .25rem 1.625rem;padding-inline-start:.5rem}.vibe64-approvals__bar[data-v-26d38d3c]{background:rgba(var(--v-theme-secondary), .08);border:1px solid rgba(var(--v-theme-secondary), .35);color:rgb(var(--v-theme-on-surface));text-align:start;border-radius:12px;align-items:center;gap:.5rem;width:100%;min-height:48px;margin-bottom:.5rem;padding:0 .75rem;display:flex}.vibe64-approvals__bar-label[data-v-26d38d3c]{flex:auto;min-width:0;font-weight:500}.vibe64-learning-finished[data-v-315fb4b6]{gap:var(--v64-space-3,12px);max-width:40rem;padding:var(--v64-space-6,32px) var(--v64-space-5,24px);justify-items:start;max-height:100%;margin:0 auto;display:grid;overflow-y:auto}.vibe64-learning-finished[data-v-315fb4b6]>*{max-width:100%;margin:0}.vibe64-learning-finished__mark[data-v-315fb4b6]{color:rgb(var(--v-theme-success))}.vibe64-learning-finished__eyebrow[data-v-315fb4b6]{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)}.vibe64-learning-finished h2[data-v-315fb4b6]{font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);overflow-wrap:anywhere}.vibe64-learning-finished__hint[data-v-315fb4b6]{color:var(--v64-on-surface-variant,inherit);align-items:center;display:flex}.vibe64-learning-finished__actions[data-v-315fb4b6]{gap:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.vibe64-learning-finished__error[data-v-315fb4b6]{color:rgb(var(--v-theme-error))}.vibe64-learning-finished .v-btn[data-v-315fb4b6]{letter-spacing:0;text-transform:none}.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}}.vibe64-learning-step h2[data-v-dfe8bf6a]{font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);margin:0 0 var(--v64-space-3,12px);overflow-wrap:anywhere}.vibe64-learning-step__eyebrow[data-v-dfe8bf6a]{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);margin:0 0 4px}.vibe64-learning-step__visual[data-v-dfe8bf6a],.vibe64-learning-step__check[data-v-dfe8bf6a]{gap:var(--v64-space-3,12px);margin-block:var(--v64-space-5,24px);justify-items:start;display:grid}.vibe64-learning-step__visual[data-v-dfe8bf6a]>:first-child{justify-self:stretch}.vibe64-learning-step__check[data-v-dfe8bf6a]{padding:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-low,#00000008)}.vibe64-learning-step__check h3[data-v-dfe8bf6a]{font:var(--v64-type-title-md,600 1.125rem/1.5rem system-ui, sans-serif);margin:0}.vibe64-learning-step__hint[data-v-dfe8bf6a],.vibe64-learning-step__note[data-v-dfe8bf6a]{color:var(--v64-on-surface-variant,inherit);margin:0}.vibe64-learning-step__status[data-v-dfe8bf6a]{font-weight:600}.vibe64-learning-step__status.is-passed[data-v-dfe8bf6a]{color:rgb(var(--v-theme-success))}.vibe64-learning-step__error[data-v-dfe8bf6a]{color:rgb(var(--v-theme-error))}.vibe64-learning-step__actions[data-v-dfe8bf6a],.vibe64-learning-step__pager[data-v-dfe8bf6a]{gap:var(--v64-space-2,8px);margin-top:var(--v64-space-4,16px);flex-wrap:wrap;display:flex}.vibe64-learning-step__pager[data-v-dfe8bf6a]{justify-content:space-between;align-items:center}.vibe64-learning-step__pager-end[data-v-dfe8bf6a]{justify-content:flex-end;align-items:center;gap:var(--v64-space-2,8px);flex-wrap:wrap;margin-inline-start:auto;display:flex}.vibe64-learning-step .v-btn[data-v-dfe8bf6a]{letter-spacing:0;text-transform:none}.vibe64-learning-reader-frame[data-v-4e71d35c]{height:100%;min-height:0;container-type:inline-size}.vibe64-learning-reader[data-v-4e71d35c]{gap:var(--v64-space-4,16px);grid-template-columns:minmax(14rem,18rem) minmax(0,1fr);height:100%;min-height:0;display:grid}.vibe64-learning-reader__alert[data-v-4e71d35c]{grid-column:1/-1}.vibe64-learning-reader__steps[data-v-4e71d35c]{min-height:0;padding:var(--v64-space-4,16px);border-inline-end:1px solid var(--v64-outline-variant,#0000001f);overflow-y:auto}.vibe64-learning-reader__steps ol[data-v-4e71d35c]{margin:var(--v64-space-3,12px) 0;gap:4px;padding:0;list-style:none;display:grid}.vibe64-learning-reader__lesson[data-v-4e71d35c]{gap:2px;margin:0;display:grid}.vibe64-learning-reader__code[data-v-4e71d35c]{font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit)}.vibe64-learning-reader__step[data-v-4e71d35c]{border-radius:var(--v64-shape-md,12px);color:inherit;cursor:pointer;align-items:center;gap:2px var(--v64-space-3,12px);min-height:48px;padding:6px var(--v64-space-2,8px);text-align:start;background:0 0;border:0;grid-template-columns:28px minmax(0,1fr);width:100%;display:grid}.vibe64-learning-reader__step[data-v-4e71d35c]:hover{background:var(--v64-surface-container,#0000000a)}.vibe64-learning-reader__step.is-current[data-v-4e71d35c]{background:rgb(var(--v-theme-surface));box-shadow:inset 0 0 0 2px var(--v64-learning-strong,#c99a00);color:rgb(var(--v-theme-on-surface))}.vibe64-learning-reader__step[data-v-4e71d35c]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.vibe64-learning-reader__step-mark[data-v-4e71d35c]{border:1.5px solid;border-radius:50%;grid-row:span 2;justify-content:center;align-items:center;width:26px;height:26px;font-size:.8rem;font-weight:700;display:inline-flex}.vibe64-learning-reader__step.is-passed .vibe64-learning-reader__step-mark[data-v-4e71d35c]{background:rgb(var(--v-theme-success));border-color:rgb(var(--v-theme-success));color:rgb(var(--v-theme-on-success))}.vibe64-learning-reader__step-title[data-v-4e71d35c]{overflow-wrap:anywhere;font-weight:600}.vibe64-learning-reader__step-status[data-v-4e71d35c]{color:var(--v64-on-surface-variant,inherit);font-size:.75rem}.vibe64-learning-reader__summary[data-v-4e71d35c]{gap:var(--v64-space-2,8px);justify-items:start;display:grid}.vibe64-learning-reader__complete[data-v-4e71d35c]{color:rgb(var(--v-theme-success));margin:0;font-weight:600}.vibe64-learning-reader__complete-short[data-v-4e71d35c]{display:none}.vibe64-learning-reader__body[data-v-4e71d35c]{min-height:0;padding:var(--v64-space-4,16px) var(--v64-space-5,24px) var(--v64-space-6,32px);width:100%;max-width:52rem;overflow-y:auto}.vibe64-learning-reader__notes[data-v-4e71d35c]{margin-top:var(--v64-space-5,24px)}.vibe64-learning-reader .v-btn[data-v-4e71d35c]{letter-spacing:0;text-transform:none}@container (width<=760px){.vibe64-learning-reader[data-v-4e71d35c]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:0}.vibe64-learning-reader__steps[data-v-4e71d35c]{border-inline-end:0;border-bottom:1px solid var(--v64-outline-variant,#0000001f);padding:var(--v64-space-2,8px) var(--v64-space-3,12px)}.vibe64-learning-reader__steps ol[data-v-4e71d35c]{margin:var(--v64-space-2,8px) 0 0;display:flex;overflow-x:auto}.vibe64-learning-reader__step[data-v-4e71d35c]{grid-template-columns:28px;justify-items:center;min-width:48px}.vibe64-learning-reader__step-title[data-v-4e71d35c],.vibe64-learning-reader__step-status[data-v-4e71d35c]{display:none}.vibe64-learning-reader__summary[data-v-4e71d35c]{align-items:center;gap:4px var(--v64-space-2,8px);margin-top:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.vibe64-learning-reader__complete[data-v-4e71d35c]{font-size:.875rem}.vibe64-learning-reader__complete-long[data-v-4e71d35c]{display:none}.vibe64-learning-reader__complete-short[data-v-4e71d35c]{display:inline}.vibe64-learning-reader__body[data-v-4e71d35c]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px) var(--v64-space-6,32px)}}.vibe64-learning-lesson-pane[data-v-6c96393e]{background:var(--v64-learning-container,rgb(var(--v-theme-surface)));color:rgb(var(--v-theme-on-surface));min-width:0;height:100%;min-height:0;overflow:hidden}.vibe64-learning-lesson-pane__scroll[data-v-6c96393e]{height:100%;overflow-y:auto}.vibe64-lesson-sheet[data-v-36a33e16]{background:var(--v64-learning-container,rgb(var(--v-theme-surface)));border:1px solid var(--v64-learning-strong,#f5c518);border-radius:var(--v64-shape-md,12px);z-index:3;flex-direction:column;min-height:0;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 6px 24px #00000038}.vibe64-lesson-sheet__header[data-v-36a33e16]{border-bottom:1px solid var(--v64-learning-strong,#f5c518);color:var(--v64-on-learning-container,inherit);align-items:center;gap:var(--v64-space-2,8px);flex:none;min-height:44px;padding:4px 8px 4px 12px;display:flex}.vibe64-lesson-sheet__title[data-v-36a33e16]{flex:auto;font-weight:700}.vibe64-lesson-sheet__hide[data-v-36a33e16]{letter-spacing:0;text-transform:none}.vibe64-lesson-sheet__pane[data-v-36a33e16]{flex:auto;height:auto}.studio-autopilot__reasoning-dots[data-v-41b46350]{clip-path:inset(0 66.666% 0 0);animation:1.5s step-end infinite reasoning-dots-41b46350;display:inline-block}@keyframes reasoning-dots-41b46350{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-41b46350]{clip-path:none;animation:none}}.studio-autopilot__checkpoint-notice summary[data-v-41b46350]{cursor:pointer}.studio-autopilot__checkpoint-details[data-v-41b46350]{overflow-wrap:anywhere;white-space:pre-wrap;max-height:8rem;overflow:auto}.studio-autopilot[data-v-41b46350]{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-41b46350]{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-41b46350]{text-overflow:ellipsis;min-width:0;overflow:hidden}.studio-home-shell-session-github-actor--inactive[data-v-41b46350]{color:rgba(var(--v-theme-on-surface), .46)}.studio-autopilot--chat-collapsed[data-v-41b46350]{grid-template-columns:0 minmax(0,1fr)}.studio-autopilot__chat-panel[data-v-41b46350]{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-41b46350]{visibility:hidden}.studio-autopilot__session-header[data-v-41b46350]{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-41b46350] .studio-ai-sessions__toolbar{flex:auto;min-width:0;margin-inline-end:.35rem;overflow:hidden}.studio-autopilot__session-header[data-v-41b46350] .studio-ai-sessions__tabs{min-width:0;overflow:hidden}.studio-autopilot__header-actions[data-v-41b46350],.studio-autopilot__session-tool-header[data-v-41b46350]{align-items:center;gap:.4rem;display:flex}.studio-autopilot__header-actions[data-v-41b46350]{flex:none;gap:.125rem;margin-inline-start:auto}.studio-autopilot__header-action[data-v-41b46350],.studio-autopilot__save-work[data-v-41b46350]{border-radius:8px}.studio-autopilot__header-action[data-v-41b46350],.studio-autopilot__save-work[data-v-41b46350]:not(.text-error):not(.text-warning){color:rgba(var(--v-theme-on-surface), .66)}.studio-autopilot__header-action[data-v-41b46350] .v-icon,.studio-autopilot__save-work[data-v-41b46350] .v-btn__content>.v-icon{width:18px;height:18px;font-size:18px}.studio-autopilot__header-action[data-v-41b46350]:hover,.studio-autopilot__save-work[data-v-41b46350]:not(.text-error):not(.text-warning):hover{color:rgba(var(--v-theme-on-surface), .9)}.studio-autopilot__save-work.text-error[data-v-41b46350],.studio-autopilot__save-work.text-warning[data-v-41b46350]{background:color-mix(in srgb, currentColor 9%, transparent)}.studio-autopilot__header-action[data-v-41b46350] .v-btn__overlay,.studio-autopilot__save-work[data-v-41b46350] .v-btn__overlay{border-radius:inherit}@media (pointer:coarse){.studio-autopilot__session-header[data-v-41b46350]{--session-action-size:44px}}.studio-autopilot__session-action-item[data-v-41b46350]{min-height:3rem}.studio-autopilot__conversation[data-v-41b46350]{grid-row:3;min-width:0;min-height:0}.studio-autopilot__activity[data-v-41b46350]{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-41b46350]:has(.db-server--attention){max-height:min(80dvh,52rem)}.studio-autopilot__activity[data-v-41b46350]:has(.setup-tools:not(.setup-tools--quiet)){max-height:min(60dvh,34rem)}.studio-autopilot__activity[data-v-41b46350]:has(.git-stand-in){max-height:min(60dvh,26rem)}.studio-autopilot__activity[data-v-41b46350]:empty{padding:0;display:none}.studio-autopilot__connection-recovery[data-v-41b46350]{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-41b46350]{overflow-wrap:anywhere;min-width:0}.studio-autopilot__connection-actions[data-v-41b46350]{flex-direction:column;align-items:flex-start;gap:.25rem;display:flex}.studio-autopilot__composer[data-v-41b46350]{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-41b46350]{align-items:center;gap:.25rem clamp(0rem,4% - 1.25rem,.5rem);width:100%;min-width:0;display:flex}.studio-autopilot__approval-send[data-v-41b46350]{flex-shrink:0;margin-inline-start:auto}@media (pointer:coarse){.studio-autopilot__approval-send[data-v-41b46350]{min-height:3rem}}.studio-autopilot__approvals-chip[data-v-41b46350]{flex-shrink:0;align-self:center}.studio-autopilot__settings-access[data-v-41b46350]{grid-column:1/-1}.studio-autopilot__composer-action[data-v-41b46350]{flex-shrink:0}.studio-autopilot__assistant-button[data-v-41b46350]{align-items:center;display:flex;position:relative}.studio-autopilot__assistant-button-label[data-v-41b46350]{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-41b46350]{flex-shrink:0;display:flex}.studio-autopilot__composer-tools[data-v-41b46350]:empty{display:none}@container studio-chat-pane (width<=32rem){.studio-autopilot__composer-actions[data-v-41b46350]{gap:0}.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-41b46350]{width:clamp(2rem,10cqi,2.5rem)}.studio-autopilot__composer-actions[data-v-41b46350] button{flex-shrink:1;min-width:min-content;padding-inline:.25rem}}.studio-autopilot__composer-menu[data-v-41b46350]{flex-direction:column;gap:.4rem;max-width:calc(100vw - 24px);display:flex}.studio-autopilot__save-work[data-v-41b46350]{flex:none}.studio-autopilot__save-work--check[data-v-41b46350]{opacity:var(--v-disabled-opacity)}.studio-autopilot__save-symbol[data-v-41b46350]{width:24px;height:22px;position:relative}.studio-autopilot__save-symbol-disk[data-v-41b46350],.studio-autopilot__save-symbol-commit[data-v-41b46350]{opacity:.72;position:absolute}.studio-autopilot__save-symbol-disk[data-v-41b46350]{bottom:0;left:0}.studio-autopilot__save-symbol-commit[data-v-41b46350]{top:0;right:0}.studio-autopilot__project-panel[data-v-41b46350],.studio-autopilot__dashboard-shell[data-v-41b46350],.studio-autopilot__right-pane-page[data-v-41b46350],.studio-autopilot__session-tool-pane[data-v-41b46350],.studio-autopilot__session-tool-content[data-v-41b46350]{min-width:0;height:100%;min-height:0}.studio-autopilot__project-panel[data-v-41b46350]{contain:strict;position:relative;overflow:hidden}.studio-autopilot__right-pane-page[data-v-41b46350]{overflow:auto}.studio-autopilot__session-tool-pane[data-v-41b46350]{grid-template-rows:auto minmax(0,1fr);display:grid}.studio-autopilot__architecture-pane[data-v-41b46350]{grid-template-rows:minmax(0,1fr);overflow:hidden}.studio-autopilot__session-tool-header[data-v-41b46350]{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-41b46350]{padding:var(--v64-space-3) var(--v64-space-4) var(--v64-space-4)}.studio-autopilot__session-tool-content[data-v-41b46350]{overflow:hidden}.studio-autopilot__preview-launch[data-v-41b46350]{height:100%}@media (width>=981px){.studio-autopilot[data-v-41b46350]{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-41b46350]{grid-template-columns:0 minmax(0,1fr);gap:0}}@media (width<=980px){.studio-autopilot[data-v-41b46350]: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-41b46350]{visibility:hidden}}@media (pointer:coarse){.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-41b46350]{min-width:3rem;min-height:3rem}}.studio-autopilot__voice-feedback[data-v-41b46350]{flex:100%;min-width:0}.studio-autopilot__architecture-file[data-v-41b46350]{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-41b46350]{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-41b46350]{overflow-wrap:anywhere;font-size:14px}.studio-autopilot__architecture-file>.vibe64-source-editor[data-v-41b46350]{flex:1;min-height:0}.vibe64-agent-terminal-drop-overlay[data-v-2d9e2b1e]{background:rgba(var(--v-theme-scrim,var(--v-theme-on-surface)), .68);pointer-events:none;z-index:5;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-agent-terminal-drop-overlay__card[data-v-2d9e2b1e]{align-items:center;gap:.7rem;padding:1rem 1.15rem;display:flex}.vibe64-agent-terminal-start-panel[data-v-e1543fc7]{background:rgba(var(--v-theme-scrim), .8);z-index:3;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-agent-terminal-start-panel__card[data-v-e1543fc7]{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-agent-terminal-start-panel__icon[data-v-e1543fc7]{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-agent-terminal-start-panel__copy[data-v-e1543fc7]{gap:.15rem;min-width:0;display:grid}.vibe64-agent-terminal-start-panel__copy strong[data-v-e1543fc7]{font-size:.95rem}.vibe64-agent-terminal-start-panel__copy span[data-v-e1543fc7]{color:rgba(var(--v-theme-on-surface), .72);font-size:.8rem;line-height:1.35}.vibe64-agent-terminal-start-panel__action[data-v-e1543fc7]{min-inline-size:10rem}@media (width<=700px){.vibe64-agent-terminal-start-panel__card[data-v-e1543fc7]{grid-template-columns:auto minmax(0,1fr)}.vibe64-agent-terminal-start-panel__action[data-v-e1543fc7]{grid-column:1/-1;width:100%}}.vibe64-codex-session[data-v-64232d6f]{min-width:0;height:100%;min-height:0;position:relative}.vibe64-codex-session--headless[data-v-64232d6f]{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.vibe64-codex-session--focused[data-v-64232d6f] .vibe64-terminal-surface{border-color:rgba(var(--v-theme-primary), .72)}.vibe64-codex-session__command[data-v-64232d6f]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vibe64-codex-session__attachment-action[data-v-64232d6f]{min-width:2.5rem;min-height:2.5rem}@media (pointer:coarse){.vibe64-codex-session__attachment-action[data-v-64232d6f]{min-width:3rem;min-height:3rem}}.vibe64-codex-session__start-action[data-v-64232d6f]{min-inline-size:10rem}@media (width<=700px){.vibe64-codex-session__start-action[data-v-64232d6f]{width:100%}}.vibe64-native-agent-session[data-v-437673a4]{block-size:100%;min-block-size:0;min-inline-size:0;position:relative}.vibe64-native-agent-session--headless[data-v-437673a4]{block-size:0;inline-size:0;position:absolute;overflow:hidden}.vibe64-native-agent-session__command[data-v-437673a4]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));font-size:.82rem}.studio-renewal-assistant[data-v-c35da031]{border:1px solid rgba(var(--v-theme-outline), .22);border-radius:.75rem;gap:.75rem;padding:.85rem;display:grid}.studio-renewal-assistant__heading[data-v-c35da031],.studio-renewal-assistant__error[data-v-c35da031]{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.studio-renewal-assistant__heading>span[data-v-c35da031]{gap:.15rem;display:grid}.studio-renewal-assistant__heading small[data-v-c35da031],.studio-renewal-assistant__summary[data-v-c35da031]{color:rgba(var(--v-theme-on-surface), .68)}.studio-renewal-assistant__fields[data-v-c35da031]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.studio-renewal-assistant__summary[data-v-c35da031]{margin:0}@media (width<=600px){.studio-renewal-assistant__heading[data-v-c35da031]{align-items:flex-start}.studio-renewal-assistant__fields[data-v-c35da031]{grid-template-columns:minmax(0,1fr)}}.studio-session-renewal[data-v-3dc8814b]{max-height:min(46rem,100dvh - 2rem)}.studio-session-renewal__header[data-v-3dc8814b],.studio-session-renewal__heading[data-v-3dc8814b],.studio-session-renewal__assurance[data-v-3dc8814b],.studio-session-renewal__success[data-v-3dc8814b],.studio-session-renewal__progress-copy[data-v-3dc8814b]{align-items:center;display:flex}.studio-session-renewal__header[data-v-3dc8814b]{justify-content:space-between;gap:1rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__heading[data-v-3dc8814b]{gap:.75rem;min-width:0}.studio-session-renewal__heading>span[data-v-3dc8814b]:last-child,.studio-session-renewal__assurance>span[data-v-3dc8814b],.studio-session-renewal__success>span[data-v-3dc8814b]{gap:.12rem;min-width:0;display:grid}.studio-session-renewal__heading h2[data-v-3dc8814b]{margin:0}.studio-session-renewal__subtitle[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__icon[data-v-3dc8814b]{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-3dc8814b]{gap:1rem;min-height:22rem;padding:1.25rem;display:grid}.studio-session-renewal__lead[data-v-3dc8814b],.studio-session-renewal__supporting[data-v-3dc8814b]{overflow-wrap:anywhere;margin:0}.studio-session-renewal__lead[data-v-3dc8814b]{color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__supporting[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .7)}.studio-session-renewal__assurance[data-v-3dc8814b],.studio-session-renewal__success[data-v-3dc8814b]{gap:.75rem;padding:1rem;line-height:1.45}.studio-session-renewal__skeleton[data-v-3dc8814b]{gap:1rem;display:grid}.studio-session-renewal__progress-copy[data-v-3dc8814b]{align-items:flex-start;gap:.25rem;display:grid}.studio-session-renewal__progress-copy span[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__progress-line[data-v-3dc8814b]{margin-block:.1rem .25rem}.studio-session-renewal__steps[data-v-3dc8814b]{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.studio-session-renewal__steps li[data-v-3dc8814b]{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-3dc8814b]{background:rgba(var(--v-theme-primary), .1);color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__step--complete[data-v-3dc8814b]{color:rgb(var(--v-theme-primary))}.studio-session-renewal__step-icon[data-v-3dc8814b]{flex:none;justify-content:center;align-items:center;width:1.25rem;display:inline-flex}.studio-session-renewal__draft[data-v-3dc8814b]{min-width:0}.studio-session-renewal__notice[data-v-3dc8814b]{margin:0}.studio-session-renewal__notice-copy[data-v-3dc8814b]{gap:.25rem;display:grid}.studio-session-renewal__source-details[data-v-3dc8814b]{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-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__source-details dd[data-v-3dc8814b]{overflow-wrap:anywhere;min-width:0;margin:0}.studio-session-renewal__notice-with-action[data-v-3dc8814b]{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-3dc8814b]{flex:18rem}.studio-session-renewal__inline-actions[data-v-3dc8814b]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.studio-session-renewal__actions[data-v-3dc8814b]{flex-wrap:wrap;gap:.5rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__actions-spacer[data-v-3dc8814b]{flex:auto}.studio-session-renewal--fullscreen[data-v-3dc8814b]{height:100dvh;max-height:100dvh}.studio-session-renewal--fullscreen .studio-session-renewal__body[data-v-3dc8814b]{min-height:0;padding:1rem}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-3dc8814b],.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-3dc8814b]{align-items:stretch}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-3dc8814b]>*,.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-3dc8814b]>:last-child{flex:100%}.studio-session-renewal__actions--compact[data-v-3dc8814b]{align-items:stretch}.studio-session-renewal__actions--compact .studio-session-renewal__actions-spacer[data-v-3dc8814b]{display:none}.studio-session-renewal__actions--compact .studio-session-renewal__action[data-v-3dc8814b]{flex:calc(50% - .25rem)}.studio-session-renewal__actions--compact .studio-session-renewal__action--primary[data-v-3dc8814b]{flex-basis:100%}@media (prefers-reduced-motion:reduce){.studio-session-renewal__progress-line[data-v-3dc8814b]{display:none}}.studio-ai-session-runtime[data-v-8c59d7cd]{min-width:0;max-width:100%;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__tab-terminal[data-v-8c59d7cd]{min-width:0;height:100%;min-height:0}.studio-ai-sessions__tab-terminal[data-v-8c59d7cd] .studio-ai-sessions__codex-terminal-shell,.studio-ai-sessions__tab-terminal[data-v-8c59d7cd] .studio-ai-sessions__codex-terminal{height:100%}.studio-ai-sessions__empty-main[data-v-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{position:relative}.studio-ai-sessions__empty-layout[data-v-7724f9c1]{gap:var(--studio-home-project-gap,.75rem);min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__empty-main[data-v-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{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-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1],.studio-ai-sessions__preview-empty-pane[data-v-7724f9c1]{display:grid}.studio-ai-sessions__empty-main[data-v-7724f9c1]{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-7724f9c1]{gap:.28rem;min-width:0;display:grid}.studio-ai-sessions__empty-chat-body[data-v-7724f9c1]{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-7724f9c1]{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-7724f9c1]{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-7724f9c1]{visibility:hidden}.studio-ai-sessions__empty-thinking-mark[data-v-7724f9c1]{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-7724f9c1]{display:none}.studio-ai-sessions__empty-composer[data-v-7724f9c1]{min-width:0;min-height:.35rem}.studio-ai-sessions__dashboard-empty-pane[data-v-7724f9c1]{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-7724f9c1]{place-items:center;min-width:0;min-height:0;padding:1rem}.studio-ai-sessions__preview-empty-content[data-v-7724f9c1]{text-align:center;place-items:center;gap:.65rem;max-width:min(100%,26rem);display:grid}.studio-ai-sessions__preview-empty-title[data-v-7724f9c1]{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-7724f9c1]{color:rgba(var(--v-theme-on-surface), .62);max-width:24rem;margin:-.25rem 0 0;font-size:.86rem;line-height:1.35}@media (width>=981px){.studio-ai-sessions__empty-layout[data-v-7724f9c1]{grid-template-columns:var(--studio-home-chat-column-width,32rem) minmax(0, 1fr)}.studio-ai-sessions__empty-layout--chat-collapsed[data-v-7724f9c1]{grid-template-columns:minmax(0,1fr)}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-7724f9c1]{display:none}.studio-ai-sessions__empty-layout--dashboard[data-v-7724f9c1]{align-items:stretch;height:100%;overflow:hidden}}@media (width<=980px){.studio-ai-sessions__empty-layout[data-v-7724f9c1]{grid-template-rows:minmax(0,1fr)}.studio-ai-sessions__empty-project-panel[data-v-7724f9c1],.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-7724f9c1]{display:none}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{display:grid}}.studio-ai-sessions[data-v-07990013]{gap:.85rem;height:100%;min-height:0;display:grid;position:relative;overflow:hidden}.studio-ai-sessions--autopilot[data-v-07990013]{box-shadow:none;background:0 0;grid-template-rows:minmax(0,1fr);gap:0;padding:0;border-radius:0!important}.studio-ai-sessions__chat-column-separator[data-v-07990013]{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-07990013]: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-07990013]:hover:before,.studio-ai-sessions__chat-column-separator[data-v-07990013]:focus-visible:before,.studio-ai-sessions__chat-column-separator--resizing[data-v-07990013]:before{background:rgb(var(--v-theme-primary));width:2px}.studio-ai-sessions--resizing[data-v-07990013]{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}@media (width>=981px){.studio-ai-sessions[data-v-07990013]{grid-template-rows:auto minmax(0,1fr)}.studio-ai-sessions--autopilot[data-v-07990013]{grid-template-rows:minmax(0,1fr)}}@media (width<=980px){.studio-ai-sessions__chat-column-separator[data-v-07990013]{display:none!important}}.studio-ai-sessions--autopilot.studio-ai-sessions--unavailable[data-v-07990013]{grid-template-rows:auto minmax(0,1fr)}.studio-ai-sessions__empty-main>.studio-ai-sessions__empty-host-conversation[data-v-2f5ac5ad]{grid-row:2/-1}.studio-ai-sessions__preview-empty-loading[data-v-2f5ac5ad]{width:10rem}.studio-ai-sessions__preview-empty-skeleton[data-v-2f5ac5ad]{width:100%}.studio-ai-sessions__error-overlay[data-v-2f5ac5ad]{z-index:12;max-width:min(42rem,100% - 1.7rem);position:absolute;top:.85rem;left:.85rem}.studio-ai-sessions-error-enter-active[data-v-2f5ac5ad],.studio-ai-sessions-error-leave-active[data-v-2f5ac5ad]{transition:opacity .12s,transform .12s}.studio-ai-sessions-error-enter-from[data-v-2f5ac5ad],.studio-ai-sessions-error-leave-to[data-v-2f5ac5ad]{opacity:0;transform:translateY(-.35rem)}.studio-ai-sessions__runtime-stack[data-v-2f5ac5ad]{min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.vibe64-lesson-toggle[data-v-f8ec48b9]{border:1px solid var(--v64-outline,#7f7f7f99);border-radius:var(--v64-shape-full,999px);color:var(--v64-on-surface,inherit);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;flex:none;align-items:center;gap:6px;height:32px;padding:0 10px 0 8px;font-size:.875rem;font-weight:500;transition:background-color .12s,border-color .12s;display:inline-flex;position:relative}.vibe64-lesson-toggle[data-v-f8ec48b9]:before{border-radius:inherit;content:"";opacity:0;pointer-events:none;background:currentColor;transition:opacity .12s;position:absolute;inset:0}.vibe64-lesson-toggle[data-v-f8ec48b9]:hover:before{opacity:.08}.vibe64-lesson-toggle[data-v-f8ec48b9]:focus-visible{outline:2px solid var(--v64-primary,currentColor);outline-offset:2px}.vibe64-lesson-toggle.is-on[data-v-f8ec48b9]{background:var(--v64-learning,#f5c518);border-color:var(--v64-learning-strong,#f5c518);color:var(--v64-on-learning,#2b2100);font-weight:700}.vibe64-lesson-toggle__switch[data-v-f8ec48b9]{background:color-mix(in srgb, currentColor 14%, transparent);box-sizing:border-box;opacity:.75;border:1.5px solid;border-radius:999px;flex:none;width:28px;height:16px;display:inline-block;position:relative}.vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{background:currentColor;border-radius:50%;justify-content:center;align-items:center;width:8px;height:8px;transition:left .12s,width .12s,height .12s,top .12s;display:flex;position:absolute;top:2.5px;left:2.5px}.vibe64-lesson-toggle.is-on .vibe64-lesson-toggle__switch[data-v-f8ec48b9]{background:var(--v64-on-learning,#2b2100);border-color:var(--v64-on-learning,#2b2100);opacity:1}.vibe64-lesson-toggle.is-on .vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{background:var(--v64-learning,#f5c518);color:var(--v64-on-learning,#2b2100);width:11px;height:11px;top:1px;left:13px}@media (prefers-reduced-motion:reduce){.vibe64-lesson-toggle[data-v-f8ec48b9],.vibe64-lesson-toggle[data-v-f8ec48b9]:before,.vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{transition:none}}.vibe64-learning-step-bar-host[data-v-5bda49a5]{flex:none;min-width:0;position:relative}.vibe64-learning-step-bar[data-v-5bda49a5]{background:var(--v64-learning-container,#f5c51829);border:1px solid var(--v64-learning-strong,#f5c518);border-radius:var(--v64-shape-md,12px);color:var(--v64-on-learning-container,inherit);align-items:center;gap:var(--v64-space-2,8px);min-width:0;padding:2px var(--v64-space-2,8px);flex:none;display:flex;position:relative;overflow:hidden}.vibe64-learning-step-bar__position[data-v-5bda49a5]{align-items:baseline;gap:0 var(--v64-space-2,8px);flex-wrap:wrap;flex:0 auto;min-width:0;display:flex}.vibe64-learning-step-bar__lesson[data-v-5bda49a5]{text-overflow:ellipsis;white-space:nowrap;max-width:16rem;font-weight:700;overflow:hidden}.vibe64-learning-step-bar__step[data-v-5bda49a5]{overflow-wrap:anywhere;min-width:0}.vibe64-learning-step-bar__dots[data-v-5bda49a5]{align-self:center;gap:4px;display:inline-flex}.vibe64-learning-step-bar__dot[data-v-5bda49a5]{opacity:.55;border:1.5px solid;border-radius:50%;width:8px;height:8px}.vibe64-learning-step-bar__dot.is-done[data-v-5bda49a5]{background:currentColor}.vibe64-learning-step-bar__dot.is-current[data-v-5bda49a5]{opacity:1;background:currentColor}.vibe64-learning-step-bar__line[data-v-5bda49a5]{align-items:center;gap:2px var(--v64-space-2,8px);flex-wrap:wrap;flex:auto;min-width:0;display:flex}.vibe64-learning-step-bar__beat[data-v-5bda49a5]{overflow-wrap:anywhere;flex:12rem;min-width:0;font-weight:500}.vibe64-learning-step-bar__status[data-v-5bda49a5]{opacity:.8;font-size:.8125rem}.vibe64-learning-step-bar__status.is-passed[data-v-5bda49a5]{color:rgb(var(--v-theme-success));opacity:1}.vibe64-learning-step-bar__note[data-v-5bda49a5]{flex-basis:100%;font-size:.8125rem}.vibe64-learning-step-bar__controls[data-v-5bda49a5]{flex:none;align-items:center;gap:2px;display:flex}.vibe64-learning-step-bar__progress[data-v-5bda49a5]{background:var(--v64-learning-strong,#f5c518);transform-origin:0;height:3px;transition:transform .1s linear;position:absolute;bottom:0;left:0;right:0}.vibe64-learning-step-bar .v-btn[data-v-5bda49a5]{letter-spacing:0;text-transform:none}.vibe64-learning-step-bar__step[data-v-5bda49a5]{font-variant-numeric:tabular-nums}.vibe64-learning-step-bar__lesson-toggle[data-v-5bda49a5]{flex:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.vibe64-learning-step-bar__progress[data-v-5bda49a5]{transition:none}}@media (width<=600px){.vibe64-learning-step-bar[data-v-5bda49a5]{flex-wrap:wrap;gap:0 4px}.vibe64-learning-step-bar__stuck--beside[data-v-5bda49a5],.vibe64-learning-step-bar__lesson[data-v-5bda49a5]{display:none}.vibe64-learning-step-bar__position[data-v-5bda49a5]{flex:auto;order:1}.vibe64-learning-step-bar__lesson-toggle[data-v-5bda49a5],.vibe64-learning-step-bar__practice[data-v-5bda49a5],.vibe64-learning-step-bar__courses[data-v-5bda49a5]{order:2}.vibe64-learning-step-bar__line[data-v-5bda49a5]{flex-basis:100%;order:3;padding:0 0 2px 8px}.vibe64-learning-step-bar__controls[data-v-5bda49a5]{flex-basis:100%;order:4;justify-content:space-between}.vibe64-learning-step-bar__controls .v-btn[data-v-5bda49a5]:last-child{margin-inline-start:auto}.vibe64-learning-step-bar__courses[data-v-5bda49a5],.vibe64-learning-step-bar__practice[data-v-5bda49a5]{padding-inline:0}.vibe64-learning-step-bar__courses[data-v-5bda49a5] .v-btn__prepend,.vibe64-learning-step-bar__practice[data-v-5bda49a5] .v-btn__prepend{margin-inline:0}.vibe64-learning-step-bar__courses-label[data-v-5bda49a5],.vibe64-learning-step-bar__practice-label[data-v-5bda49a5]{display:none}}.vibe64-learning-stage[data-v-f1c4259c]{gap:var(--v64-space-2,8px);flex-direction:column;min-width:0;min-height:0;display:flex}.vibe64-learning-stage__bar[data-v-f1c4259c]{margin:var(--v64-space-2,8px) var(--v64-space-3,12px) 0}.vibe64-learning-stage__body[data-v-f1c4259c]{flex:auto;min-width:0;min-height:0;display:flex}.vibe64-learning-stage__page[data-v-f1c4259c]{flex:auto;min-width:0}.vibe64-learning-stage__anchor[data-v-f1c4259c]{height:0;top:var(--v64-space-2,8px);z-index:5;flex:0 0 0;align-self:flex-start;width:0;position:sticky}.vibe64-learning-stage__lesson[data-v-f1c4259c]{height:calc(100dvh - 140px);right:var(--v64-space-3,12px);width:min(440px,100vw - 24px);position:absolute;top:0}.is-phone .vibe64-learning-stage__bar[data-v-f1c4259c]{margin-inline:var(--v64-space-2,8px)}.is-phone .vibe64-learning-stage__lesson[data-v-f1c4259c]{height:calc(100dvh - 150px);right:var(--v64-space-2,8px);width:calc(100vw - 16px)}.vibe64-learner-art[data-v-e1a49930]{--learner-skin:#f4c7a1;--learner-ink:#2b2118;width:17rem;max-width:100%;height:auto;display:block;overflow:visible}.vibe64-learner-art__halo[data-v-e1a49930]{fill:var(--v64-learning-tint)}.vibe64-learner-art__disc[data-v-e1a49930]{fill:var(--v64-learning-container)}.vibe64-learner-art__shadow[data-v-e1a49930]{fill:var(--learner-ink);opacity:.1}.vibe64-learner-art__skin[data-v-e1a49930]{fill:var(--learner-skin)}.vibe64-learner-art__body[data-v-e1a49930]{fill:var(--v64-primary);stroke:var(--v64-primary);stroke-linejoin:round;stroke-width:6px}.vibe64-learner-art__collar[data-v-e1a49930]{fill:var(--v64-primary-container);stroke:var(--v64-primary-container);stroke-linejoin:round;stroke-width:3px}.vibe64-learner-art__ink[data-v-e1a49930]{fill:var(--learner-ink)}.vibe64-learner-art__cheek[data-v-e1a49930]{fill:#f08a7e;opacity:.55}.vibe64-learner-art__smile[data-v-e1a49930]{fill:#8c2f22}.vibe64-learner-art__cap[data-v-e1a49930]{fill:var(--learner-ink);stroke:var(--learner-ink);stroke-linejoin:round;stroke-width:3px}.vibe64-learner-art__tassel[data-v-e1a49930]{fill:none;stroke:var(--v64-learning);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.5px}.vibe64-learner-art__tassel-end[data-v-e1a49930],.vibe64-learner-art__bulb[data-v-e1a49930]{fill:var(--v64-learning)}.vibe64-learner-art__bulb[data-v-e1a49930]{filter:drop-shadow(0 0 8px var(--v64-learning-glow))}.vibe64-learner-art__base[data-v-e1a49930]{fill:color-mix(in srgb, var(--learner-ink) 55%, #c9c4b8)}.vibe64-learner-art__ray[data-v-e1a49930],.vibe64-learner-art__bit--learning[data-v-e1a49930]{fill:var(--v64-learning-strong)}.vibe64-learner-art__bit--primary[data-v-e1a49930]{fill:var(--v64-primary);opacity:.65}.vibe64-learner-art__bit--outline[data-v-e1a49930],.vibe64-learner-art__bit--ring[data-v-e1a49930]{fill:none;stroke:var(--v64-primary);stroke-linejoin:round;stroke-opacity:.55;stroke-width:3px}.vibe64-learner-art__idea[data-v-e1a49930]{animation:3.2s ease-in-out infinite vibe64-learner-float-e1a49930}.vibe64-learner-art__wave[data-v-e1a49930]{transform-box:view-box;transform-origin:182px 165px;animation:2.4s ease-in-out infinite vibe64-learner-wave-e1a49930}.vibe64-learner-art__bit[data-v-e1a49930]{transform-box:fill-box;transform-origin:50%;animation:2.8s ease-in-out infinite vibe64-learner-twinkle-e1a49930}.vibe64-learner-art__bit[data-v-e1a49930]:nth-of-type(2n){animation-delay:.9s}.vibe64-learner-art__bit[data-v-e1a49930]:nth-of-type(3n){animation-delay:1.7s}@keyframes vibe64-learner-float-e1a49930{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes vibe64-learner-wave-e1a49930{0%,to{transform:rotate(0)}50%{transform:rotate(-7deg)}}@keyframes vibe64-learner-twinkle-e1a49930{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}@media (prefers-reduced-motion:reduce){.vibe64-learner-art__idea[data-v-e1a49930],.vibe64-learner-art__wave[data-v-e1a49930],.vibe64-learner-art__bit[data-v-e1a49930]{animation:none}}.vibe64-learn-welcome[data-v-a4a8577f]{animation:vibe64-learn-welcome-in-a4a8577f var(--v64-duration-long,.4s) var(--v64-ease-emphasized-decelerate,ease-out);align-items:center;gap:var(--v64-space-3);text-align:center;justify-items:center;min-width:0;max-width:min(24rem,100%);display:grid}.vibe64-learn-welcome__title[data-v-a4a8577f]{color:var(--v64-on-surface);font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);letter-spacing:-.01em;margin:var(--v64-space-2) 0 0}.vibe64-learn-welcome__text[data-v-a4a8577f]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-lg,400 1rem/1.5rem system-ui, sans-serif);margin:0}.vibe64-learn-welcome__choose[data-v-a4a8577f]{box-shadow:0 4px 14px var(--v64-learning-glow);letter-spacing:.01em;margin-top:var(--v64-space-2);text-transform:none;transition:transform var(--v64-duration-short,.15s) var(--v64-ease-standard,ease), box-shadow var(--v64-duration-short,.15s) var(--v64-ease-standard,ease);font-weight:700;background:var(--v64-learning)!important;color:#1d1600!important;padding-inline:var(--v64-space-6,1.5rem)!important}.vibe64-learn-welcome__choose[data-v-a4a8577f]:hover{box-shadow:0 6px 20px var(--v64-learning-glow);transform:translateY(-1px)}@keyframes vibe64-learn-welcome-in-a4a8577f{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.vibe64-learn-welcome[data-v-a4a8577f],.vibe64-learn-welcome__choose[data-v-a4a8577f]{transition:none;animation:none}}.studio-screen__no-project[data-v-9353033f]{flex:auto;min-height:0}.studio-screen__lesson-layout[data-v-9353033f]{border:1px solid rgba(var(--v-theme-outline), .14);border-radius:14px;min-width:0;height:100%;min-height:0;overflow:hidden}.studio-screen__no-project-text[data-v-9353033f]{color:var(--v64-on-surface-variant);gap:var(--v64-space-3);padding:var(--v64-space-4);justify-items:start;display:grid}.studio-screen__no-project-text p[data-v-9353033f]{margin:0}.studio-screen__choose-lesson[data-v-9353033f]{text-transform:none}.studio-screen__no-lesson-chat[data-v-9353033f]{min-width:0;min-height:0;padding:var(--v64-space-4) var(--v64-space-2);place-items:center;display:grid;overflow-y:auto}.studio-screen__no-lesson-note[data-v-9353033f]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);text-align:center;max-width:18rem;margin:0}.studio-screen__no-lesson-welcome[data-v-9353033f]{display:none}@media (width<=980px){.studio-screen__no-lesson-note[data-v-9353033f]{display:none}.studio-screen__no-lesson-welcome[data-v-9353033f]{display:grid}}body.studio-home-shell-active{--studio-home-chat-column-width:32rem;--studio-home-project-gap:.75rem;--studio-control-bg:var(--v64-surface);--studio-control-rest-bg:var(--v64-surface-container-high);--studio-control-active-bg:var(--v64-secondary-container);--studio-control-border:var(--v64-outline-variant);--studio-control-border-strong:var(--v64-outline);--studio-control-text:var(--v64-on-surface);--studio-control-muted-text:var(--v64-on-surface-variant);--studio-control-radius:var(--v64-shape-md)}.generated-ui-screen[data-v-e89d5214]{--generated-ui-screen-title-size:clamp(1.2rem, 1.7vw, 1.55rem);--generated-ui-screen-panel-padding:0}.studio-screen[data-v-e89d5214]{flex:auto;width:100%;max-width:none;height:100%;min-height:0;margin-inline:0;overflow:hidden}.studio-screen__panel[data-v-e89d5214]{padding:var(--generated-ui-screen-panel-padding)}.studio-screen__gate-scroll[data-v-e89d5214]{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate{flex-direction:column;flex:auto;min-height:0;display:flex}.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate .studio-ai-sessions{flex:auto;min-height:0}.studio-home-shell-heading[data-v-e89d5214]{align-items:center;gap:var(--studio-home-project-gap);overflow-clip-margin:4px;flex:auto;min-width:0;display:flex;overflow-x:clip}.studio-home-shell-title-area[data-v-e89d5214]{flex:0 1000 var(--studio-home-chat-column-width);align-items:center;gap:.42rem;min-width:0;padding-left:1rem;display:flex}.studio-home-shell-heading--chat-collapsed .studio-home-shell-title-area[data-v-e89d5214]{flex-basis:auto}@media (width>=981px){.studio-home-shell-heading:not(.studio-home-shell-heading--chat-collapsed) .studio-home-shell-title-area[data-v-e89d5214]{width:calc(var(--studio-home-chat-column-edge,var(--studio-home-chat-column-width)) - var(--studio-home-project-gap) - 2.7rem);flex:0 1000 auto}}.studio-home-shell-project-name[data-v-e89d5214]{flex:0 auto;min-width:0;display:flex}.studio-home-shell-project-selector[data-v-e89d5214]{border-radius:var(--v64-shape-full);font:var(--v64-type-title-md);letter-spacing:-.005em;min-width:0;max-width:100%;padding-inline:var(--v64-space-3) var(--v64-space-2);text-transform:none;flex:0 auto;justify-content:start;font-size:1.0625rem;color:var(--v64-on-surface)!important}.studio-home-shell-project-selector[data-v-e89d5214] .v-icon{color:var(--v64-on-surface-variant);margin-inline-start:var(--v64-space-1)}.studio-home-shell-project-selector[data-v-e89d5214] .v-btn__content{min-width:0}.studio-home-shell-project-selector span[data-v-e89d5214]{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.studio-home-shell-github-actor-host[data-v-e89d5214]{flex:auto;align-items:center;min-width:0;min-height:1.65rem;display:flex;overflow:hidden}.studio-home-shell-github-actor-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-local-remotes-host[data-v-e89d5214],.studio-home-shell-create-session-host[data-v-e89d5214]{flex:none;display:flex}.studio-home-shell-local-remotes-host[data-v-e89d5214]:empty,.studio-home-shell-create-session-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-project-controls[data-v-e89d5214]{flex:0 auto;align-items:center;gap:.45rem;min-width:0;display:flex}.studio-home-shell-chat-toggle[data-v-e89d5214]{border-radius:var(--v64-shape-full);box-shadow:none;min-width:2.25rem;height:2.25rem;min-height:2.25rem;transition:background-color var(--v64-duration-short) var(--v64-ease-standard);border:0;flex:none;width:2.25rem;background:var(--v64-surface-container-high)!important;color:var(--v64-on-surface-variant)!important}.studio-home-shell-chat-toggle[data-v-e89d5214]:hover{background:color-mix(in srgb, var(--v64-on-surface) 8%, var(--v64-surface-container-high))!important}.studio-home-shell-lesson-toggle[data-v-e89d5214]{border-inline-start:1px solid var(--v64-outline-variant);flex:none;align-items:center;padding-inline-start:var(--studio-home-project-gap);display:inline-flex}.studio-home-shell-project-tabs[data-v-e89d5214]{border:1px solid var(--v64-outline);border-radius:var(--v64-shape-full);flex:none;grid-auto-columns:minmax(5.25rem,1fr);grid-auto-flow:column;min-width:0;display:inline-grid;overflow:hidden}.studio-home-shell-project-tab[data-v-e89d5214]{border:0;border-inline-start:1px solid var(--v64-outline);color:var(--v64-on-surface);cursor:pointer;font:var(--v64-type-label-lg);align-items:center;gap:var(--v64-space-1);letter-spacing:.01em;min-width:0;height:2.25rem;padding:0 var(--v64-space-3);transition:background-color var(--v64-duration-short) var(--v64-ease-standard), color var(--v64-duration-short) var(--v64-ease-standard);white-space:nowrap;background:0 0;justify-content:center;display:inline-flex;position:relative}.studio-home-shell-project-tab[data-v-e89d5214]:first-child{border-inline-start:0}.studio-home-shell-project-tab[data-v-e89d5214]:after{content:"";opacity:0;pointer-events:none;transition:opacity var(--v64-duration-short) var(--v64-ease-standard);background:currentColor;position:absolute;inset:0}.studio-home-shell-project-tab[data-v-e89d5214]:hover:not(:disabled):after{opacity:var(--v64-state-hover)}.studio-home-shell-project-tab[data-v-e89d5214]:active:not(:disabled):after{opacity:var(--v64-state-pressed)}.studio-home-shell-project-tab[data-v-e89d5214]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:-4px}.studio-home-shell-project-tab--active[data-v-e89d5214]{background:var(--v64-secondary-container);color:var(--v64-on-secondary-container);font-weight:600}.studio-home-shell-project-tab--active[data-v-e89d5214]:before{animation:studio-home-shell-check-in-e89d5214 var(--v64-duration-medium) var(--v64-ease-emphasized-decelerate);content:"";height:1.125rem;-webkit-mask:var(--studio-home-shell-check) center / contain no-repeat;-webkit-mask:var(--studio-home-shell-check) center / contain no-repeat;mask:var(--studio-home-shell-check) center / contain no-repeat;background:currentColor;flex:none;width:1.125rem}.studio-home-shell-project-tabs[data-v-e89d5214]{--studio-home-shell-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E")}.studio-home-shell-project-tab[data-v-e89d5214]:disabled{color:color-mix(in srgb, var(--v64-on-surface) 38%, transparent);cursor:not-allowed}@keyframes studio-home-shell-check-in-e89d5214{0%{opacity:0;width:0}to{opacity:1;width:1.125rem}}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{flex:auto;justify-content:flex-start;align-items:center;min-width:0;max-width:min(43rem,54vw);display:flex}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-project-mobile-action[data-v-e89d5214]{background:var(--v64-secondary-container);border-radius:var(--v64-shape-full);color:var(--v64-on-secondary-container);cursor:pointer;font:var(--v64-type-label-lg);align-items:center;gap:var(--v64-space-1);letter-spacing:.01em;min-width:4.5rem;min-height:2.5rem;padding:0 var(--v64-space-2) 0 var(--v64-space-4);transition:background-color var(--v64-duration-short) var(--v64-ease-standard);white-space:nowrap;border:0;flex:none;justify-content:center;display:none;position:relative}.studio-home-shell-project-mobile-action__icon[data-v-e89d5214]{display:none!important}.studio-home-shell-project-mobile-action[data-v-e89d5214]:hover{background:color-mix(in srgb, var(--v64-on-secondary-container) 8%, var(--v64-secondary-container))}.studio-home-shell-project-mobile-action[data-v-e89d5214]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:var(--v64-focus-ring-offset)}@media (prefers-reduced-motion:reduce){.studio-home-shell-project-tab--active[data-v-e89d5214]:before{animation:none}}@media (width>=981px){.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate .studio-ai-sessions--autopilot{padding:0}}@media (width<=980px){.studio-home-shell-heading[data-v-e89d5214]{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;width:100%;display:grid}.studio-home-shell-project-controls[data-v-e89d5214]{justify-content:flex-end;min-width:0;margin-left:auto;display:flex}.studio-home-shell-project-tabs--desktop[data-v-e89d5214]{display:none}.studio-home-shell-project-mobile-action[data-v-e89d5214]{display:inline-flex}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{flex:0 auto;max-width:min(26rem,42vw)}.studio-home-shell-project-mobile-action[data-v-e89d5214]{order:1}.studio-home-shell-lesson-toggle[data-v-e89d5214]{order:2}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{order:3}}@media (width<=600px){.studio-home-shell-heading[data-v-e89d5214]{gap:var(--v64-space-1);flex:auto;width:100%;min-width:0;padding-left:0;display:flex}.studio-home-shell-project-controls[data-v-e89d5214]{flex:none;gap:.28rem}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{max-width:min(12rem,32vw)}.studio-home-shell-project-mobile-action[data-v-e89d5214]{min-width:4rem;padding-inline:var(--v64-space-3) var(--v64-space-1)}.studio-home-shell-lesson-toggle[data-v-e89d5214]{padding-inline-start:var(--v64-space-1)}.studio-home-shell-lesson-toggle[data-v-e89d5214] .vibe64-lesson-toggle__label{display:none}.studio-home-shell-title-area[data-v-e89d5214]{flex:auto;padding-left:0}.studio-home-shell-project-name[data-v-e89d5214]{flex:auto;overflow:hidden;container-type:inline-size}.studio-home-shell-github-actor-host[data-v-e89d5214]{flex:none}.studio-home-shell-github-actor-host[data-v-e89d5214] .studio-home-shell-session-github-actor{padding:0}.studio-home-shell-github-actor-host[data-v-e89d5214] .studio-home-shell-session-github-actor span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.studio-home-shell-heading--chat-collapsed .studio-home-shell-create-session-host[data-v-e89d5214],.studio-home-shell-heading--chat-collapsed .studio-home-shell-local-remotes-host[data-v-e89d5214],.studio-home-shell-heading--chat-collapsed .studio-home-shell-github-actor-host[data-v-e89d5214]{display:none}.studio-home-shell-project-selector[data-v-e89d5214]{flex:0 auto;min-width:2.25rem;max-width:100%;padding-inline:.375rem .125rem;font-size:.95rem}.studio-home-shell-project-selector[data-v-e89d5214] .v-icon{margin-inline-start:0}.studio-home-shell-local-remotes-host[data-v-e89d5214]{margin-inline-end:.375rem}.studio-home-shell-local-remotes-host[data-v-e89d5214] .local-remotes__branch{width:2.5rem!important}.studio-home-shell-title-area[data-v-e89d5214]{gap:var(--v64-space-1)}.studio-home-shell-create-session-host[data-v-e89d5214] .studio-ai-sessions__create-button,.studio-home-shell-chat-toggle[data-v-e89d5214]{width:2.5rem;min-width:2.5rem;height:2.5rem;min-height:2.5rem}.studio-home-shell-project-controls[data-v-e89d5214]{gap:.3rem}.studio-screen[data-v-e89d5214]{max-width:100%}}@container (width<=4rem){.studio-home-shell-project-selector[data-v-e89d5214]{visibility:hidden}}@media (width<=480px){.studio-home-shell-project-mobile-action[data-v-e89d5214]{width:2.5rem;min-width:2.5rem;padding:0}.studio-home-shell-project-mobile-action__icon[data-v-e89d5214]{display:inline-flex!important}.studio-home-shell-project-mobile-action__label[data-v-e89d5214],.studio-home-shell-project-mobile-action__chevron[data-v-e89d5214]{display:none!important}}
|
|
1
|
+
.vibe64-team-ai-gate[data-v-206f9f1c]{justify-items:start;gap:.75rem;width:100%;max-width:min(36rem,100%);margin-inline:auto;padding:1.5rem;display:grid}.vibe64-team-ai-gate__icon[data-v-206f9f1c]{background:rgba(var(--v-theme-primary), .12);color:rgb(var(--v-theme-primary));border-radius:50%;justify-content:center;align-items:center;width:3rem;height:3rem;display:inline-flex}.vibe64-team-ai-gate__title[data-v-206f9f1c]{letter-spacing:0;margin:0;font-size:1.25rem;font-weight:760;line-height:1.2}.vibe64-team-ai-gate__text[data-v-206f9f1c]{color:rgba(var(--v-theme-on-surface), .72);margin:0}.vibe64-team-ai-gate__ask[data-v-206f9f1c]{background:rgba(var(--v-theme-on-surface), .05);border:1px solid rgba(var(--v-theme-on-surface), .12);border-radius:.5rem;width:100%;margin:.25rem 0;padding:.85rem 1rem;font-weight:600}.vibe64-team-ai-gate__actions[data-v-206f9f1c]{flex-wrap:wrap;gap:.5rem;display:flex}@media (width<=599px){.vibe64-team-ai-gate[data-v-206f9f1c]{padding:1.25rem 1rem}.vibe64-team-ai-gate__actions[data-v-206f9f1c]{width:100%;display:grid}}.project-selection-gate[data-v-68686cbe]{align-content:start;gap:.85rem;min-width:0;display:grid}.project-selection-gate__deleted[data-v-68686cbe]{justify-items:start;gap:.75rem;width:100%;max-width:min(36rem,100%);margin-inline:auto;padding:1.25rem;display:grid}.project-selection-gate__learning-note[data-v-68686cbe]{background:var(--v64-learning-container,#f5c5183d);color:var(--v64-on-learning-container,inherit);border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;padding:.5rem .75rem;display:flex}.project-selection-gate__team-ai[data-v-68686cbe]{background:rgb(var(--v-theme-warning-container));border:1px solid rgba(var(--v-theme-warning), .35);color:rgb(var(--v-theme-on-warning-container));border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.project-selection-gate__team-ai-text[data-v-68686cbe]{gap:.15rem;min-width:min(100%,16rem);display:grid}.project-selection-gate__team-ai-text span[data-v-68686cbe]{opacity:.8}.project-selection-gate__project-name[data-v-68686cbe]{align-items:center;gap:.5rem;display:inline-flex}.project-selection-gate__deleted-text[data-v-68686cbe]{color:rgba(var(--v-theme-on-surface), .72);margin:0}.project-selection-gate__loading[data-v-68686cbe]{flex:auto;min-height:18rem}.project-selection-gate__picker[data-v-68686cbe]{gap:1rem;width:100%;max-width:min(48rem,100%);margin-inline:auto;padding:1rem;display:grid}.project-selection-gate__header[data-v-68686cbe]{justify-content:space-between;align-items:start;min-width:0;display:flex}.project-selection-gate__eyebrow[data-v-68686cbe]{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-68686cbe]{letter-spacing:0;margin:0;font-size:1.25rem;font-weight:760;line-height:1.15}.project-selection-gate__path[data-v-68686cbe]{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-68686cbe]{gap:.45rem;display:grid}.project-selection-gate__project[data-v-68686cbe]{text-transform:none;justify-content:flex-start;min-height:3.1rem}.project-selection-gate__project[data-v-68686cbe] .v-btn__content{place-items:flex-start start;gap:.1rem;min-width:0;display:grid}.project-selection-gate__project-path[data-v-68686cbe]{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-68686cbe]{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.65rem;display:grid}@media (width<=640px){.project-selection-gate__create[data-v-68686cbe]{grid-template-columns:1fr}.project-selection-gate__team-ai .v-btn[data-v-68686cbe]{width:100%}}.local-remotes[data-v-f775cba6]{flex:none;min-width:0}.local-remotes__branch[data-v-f775cba6]{min-width:0;max-width:100%}.local-remotes__branch-name[data-v-f775cba6]{text-overflow:ellipsis;max-width:8rem;display:block;overflow:hidden}.local-remotes__status[data-v-f775cba6]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));align-items:center;gap:.375rem;display:flex}.local-remotes__count[data-v-f775cba6]{font-variant-numeric:tabular-nums}.local-remotes__details[data-v-f775cba6]{grid-template-columns:auto minmax(0,1fr);gap:.75rem 1rem;display:grid}.local-remotes__details dt[data-v-f775cba6]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity))}.local-remotes__details dd[data-v-f775cba6],.local-remotes__message[data-v-f775cba6]{overflow-wrap:anywhere;margin:0}.local-remotes__url[data-v-f775cba6]{overflow-wrap:anywhere}.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-649887bb]{flex-shrink:0}.chat-modes__details[data-v-649887bb]{flex-direction:column;max-height:min(560px,75dvh);display:flex}.chat-modes__details-body[data-v-649887bb]{min-height:0;overflow-y:auto}.chat-modes__model[data-v-649887bb]{white-space:normal;overflow-wrap:anywhere}.vibe64-temporary-ai__composer-actions[data-v-f3335a91]{align-items:center;gap:.25rem;width:100%;min-width:0;display:flex}.vibe64-temporary-ai.vibe64-temporary-ai--host[data-v-f3335a91]{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-f3335a91]{background:rgba(var(--v-theme-secondary), .12)}.vibe64-temporary-ai__host-tab[data-v-f3335a91]{flex:none}.vibe64-temporary-ai__host-content[data-v-f3335a91]{min-width:0;min-height:0}.vibe64-temporary-ai__unread[data-v-f3335a91]{background:rgb(var(--v-theme-primary));border-radius:50%;flex:0 0 8px;height:8px}.vibe64-temporary-ai[data-v-f3335a91]{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-f3335a91]{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-f3335a91]{scrollbar-width:thin;flex:auto;gap:.25rem;min-width:0;display:flex;overflow-x:auto}.vibe64-temporary-ai__tab[data-v-f3335a91]{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-f3335a91]{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-f3335a91]:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-ai__tab-rename[data-v-f3335a91],.vibe64-temporary-ai__tab-close[data-v-f3335a91]{flex:none}.vibe64-temporary-ai[data-v-f3335a91]:focus-visible,.vibe64-temporary-ai__tab-select[data-v-f3335a91]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.vibe64-temporary-ai__tab--active[data-v-f3335a91]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .35);font-weight:650}.vibe64-temporary-ai__tab--main[data-v-f3335a91]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-tertiary), .22)}.vibe64-temporary-ai__new-task[data-v-f3335a91]{flex:none}.vibe64-temporary-ai__tabs-spacer[data-v-f3335a91]{flex:auto}.vibe64-temporary-ai__busy[data-v-f3335a91]{background:rgb(var(--v-theme-primary));border-radius:50%;width:.45rem;height:.45rem}.vibe64-temporary-ai__recovery[data-v-f3335a91]{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-f3335a91]:not(:empty){max-height:min(20dvh,8rem);padding:.35rem .55rem 0;overflow-y:auto}.vibe64-temporary-ai__recovery-summary[data-v-f3335a91]{flex:1;min-width:0}.vibe64-temporary-ai__recovery strong[data-v-f3335a91]{font-size:.95rem;line-height:1.4}.vibe64-temporary-ai__recovery summary[data-v-f3335a91]{cursor:pointer}.vibe64-temporary-ai__check-update[data-v-f3335a91],.vibe64-temporary-ai__composer[data-v-f3335a91]{flex:none}.vibe64-temporary-ai__return[data-v-f3335a91]{justify-self:start;margin-top:.4rem;scroll-margin-block:.55rem}.vibe64-temporary-ai__recovery p[data-v-f3335a91]{margin:0}.vibe64-temporary-ai__recovery p+p[data-v-f3335a91]{margin-top:.3rem}.vibe64-temporary-ai__error[data-v-f3335a91]{color:rgba(var(--v-theme-on-surface), .66);font-size:.82rem}.vibe64-temporary-ai__feedback[data-v-f3335a91]{flex:none;min-width:0;max-height:min(12dvh,6rem);overflow-y:auto}.vibe64-temporary-ai__error[data-v-f3335a91]{color:rgb(var(--v-theme-error));padding:.3rem .55rem}.vibe64-temporary-ai__error--recovered[data-v-f3335a91]{color:rgba(var(--v-theme-on-surface), .66)}@media (width<=720px){.vibe64-temporary-ai[data-v-f3335a91]{z-index:30;border:0;border-radius:0;inset:0}}@media (pointer:coarse){.vibe64-temporary-ai__tab-select[data-v-f3335a91],.vibe64-temporary-ai__new-task[data-v-f3335a91],.vibe64-temporary-ai__tab-rename[data-v-f3335a91],.vibe64-temporary-ai__tab-close[data-v-f3335a91],.vibe64-temporary-ai__check-update[data-v-f3335a91],.vibe64-temporary-ai__return[data-v-f3335a91]{min-width:3rem!important;min-height:3rem!important}}.studio-ai-session-archive-dialog[data-v-e367001b]{border:1px solid rgba(var(--v-theme-primary), .32)}.studio-ai-session-archive-dialog__title[data-v-e367001b],.studio-ai-session-archive-dialog__actions[data-v-e367001b]{align-items:center;gap:.55rem;display:flex}.studio-ai-session-archive-dialog__actions[data-v-e367001b]{justify-content:flex-end;padding:0 1rem 1rem}.project-preview[data-v-bdc764b2]{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.project-preview__output[data-v-bdc764b2]{flex:1;min-height:0}.project-preview__warning[data-v-bdc764b2]{overflow-wrap:anywhere;flex:none;max-height:35%;overflow-y:auto}.project-preview__warning p[data-v-bdc764b2]{margin:.25rem 0}.project-preview__warning-actions[data-v-bdc764b2]{flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin-top:.25rem;display:flex}.project-preview__warning-actions button[data-v-bdc764b2]:disabled{opacity:.6}.project-onboarding[data-v-bdc764b2]{width:min(100%,52rem);margin:auto;padding:clamp(1rem,3vw,2.5rem);overflow-y:auto}.project-onboarding h2[data-v-bdc764b2]{margin-bottom:1rem;font-size:1.6rem;line-height:1.25}.project-onboarding p[data-v-bdc764b2]{margin-bottom:1.25rem;line-height:1.6}.project-onboarding__eyebrow[data-v-bdc764b2]{letter-spacing:.06em;text-transform:uppercase;opacity:.65;font-size:.8rem;font-weight:700}.project-onboarding__group[data-v-bdc764b2]{margin-block:1.5rem}.project-onboarding__group h3[data-v-bdc764b2]{margin-bottom:.75rem}.project-onboarding__choices[data-v-bdc764b2]{grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:1rem;display:grid}.project-onboarding__choice[data-v-bdc764b2]{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-bdc764b2]:not(:disabled):hover{border-color:rgb(var(--v-theme-primary));background:rgba(var(--v-theme-primary), .05)}.project-onboarding__choice[data-v-bdc764b2]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:3px}.project-onboarding__choice[data-v-bdc764b2]:disabled{opacity:.55}.project-onboarding__choice span[data-v-bdc764b2]{font-size:.9rem;line-height:1.5}.project-onboarding__choose[data-v-bdc764b2]{color:rgb(var(--v-theme-primary));margin-top:auto;padding-top:.5rem;font-weight:600}.project-onboarding__actions[data-v-bdc764b2]{flex-wrap:wrap;gap:.75rem;display:flex}.agent-plan-usage[data-v-69f02847]{text-transform:none;max-width:100%;font-size:.7rem}.agent-plan-usage__details[data-v-69f02847]{white-space:pre-line;margin-block:.5rem}.agent-plan-usage__goal-text[data-v-69f02847]{white-space:pre-wrap;overflow-wrap:anywhere}.action-label-pending[data-v-341758b6]{visibility:hidden}.vibe64-routing-notice[data-v-341758b6] .v-alert__content{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}details[data-v-341758b6]{flex:13rem;min-width:0}details[open][data-v-341758b6]{flex-basis:100%}.vibe64-routing-notice__actions[data-v-341758b6]{flex:none;max-width:100%}.vibe64-routing-notice__actions[data-v-341758b6] .v-btn{min-height:32px;padding-inline:8px}summary[data-v-341758b6]{cursor:pointer;overflow-wrap:anywhere;align-content:center;min-height:32px}@media (pointer:coarse){summary[data-v-341758b6],.vibe64-routing-notice__actions[data-v-341758b6] .v-btn{min-height:44px}}.work-plan-control[data-v-e0f4c1f1]{flex:none;align-items:center;display:inline-flex}@media (pointer:coarse){.work-plan-control>.v-btn[data-v-e0f4c1f1]{min-width:48px;min-height:48px}}.work-plan-content[data-v-e0f4c1f1]{overflow-wrap:anywhere;min-height:0}.work-plan-archive-context[data-v-e0f4c1f1]{flex:none;align-items:center;gap:.5rem;display:flex}.work-plan-archive-copy[data-v-e0f4c1f1]{min-width:0}.work-plan-history-title[data-v-e0f4c1f1]{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0}.work-plan-empty[data-v-e0f4c1f1]{flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:12rem;display:flex}.work-plan-item[data-v-e0f4c1f1]{align-items:flex-start;gap:.75rem;margin-block:.5rem;display:flex}.work-plan-item input[data-v-e0f4c1f1]{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-e0f4c1f1]>: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}}.setup-tools[data-v-cf5a6945]{gap:var(--v64-space-2,8px);margin-top:var(--v64-space-2,8px);display:grid}.setup-tools__header[data-v-cf5a6945]{gap:2px;padding-inline:2px;display:grid}.setup-tools__header strong[data-v-cf5a6945]{font:var(--v64-type-title-md);font-size:.9375rem}.setup-tools__header span[data-v-cf5a6945]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md)}.setup-tools__found[data-v-cf5a6945]{color:var(--v64-on-surface-variant);align-items:baseline;gap:6px;margin:0;padding-inline:2px;font-size:.8125rem;display:flex}.setup-tools__found .v-icon[data-v-cf5a6945]{color:var(--v64-success);flex:none;transform:translateY(2px)}.setup-tools__found-item[data-v-cf5a6945]{margin-left:4px}.setup-tools__found-item code[data-v-cf5a6945]{overflow-wrap:anywhere;background:0 0;margin-left:4px;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.75rem}.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-228a4f92]{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-228a4f92]{grid-area:title;font-size:.88rem}.vibe64-temporary-action-terminal__status[data-v-228a4f92]{grid-area:status}.vibe64-temporary-action-terminal--error .vibe64-temporary-action-terminal__line[data-v-228a4f92]{-webkit-line-clamp:3;line-clamp:3;overflow-wrap:anywhere;white-space:normal;-webkit-box-orient:vertical;flex-basis:100%;display:-webkit-box}.vibe64-temporary-action-terminal__title[data-v-228a4f92],.vibe64-temporary-action-terminal__line[data-v-228a4f92]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-temporary-action-terminal__line[data-v-228a4f92]{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-40a5e7a0]{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-40a5e7a0]{opacity:.8;margin-top:.2rem}.studio-ai-sessions__toolbar[data-v-40a5e7a0]{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-40a5e7a0]{flex-wrap:wrap;align-items:center;gap:.45rem;width:100%;min-width:0;display:flex}.studio-ai-sessions__tab[data-v-40a5e7a0]{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-40a5e7a0] .v-chip__content{align-items:stretch;min-width:0;display:inline-flex}.studio-ai-sessions__tab-main[data-v-40a5e7a0]{--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-40a5e7a0]{font-weight:560;color:var(--studio-control-text,#202124)!important}.studio-ai-sessions__tab--archiving .studio-ai-sessions__tab-main[data-v-40a5e7a0]{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-40a5e7a0]{background:currentColor}.studio-ai-sessions__tab-main[data-v-40a5e7a0],.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{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-40a5e7a0]{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-40a5e7a0]: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-40a5e7a0]:hover,.studio-ai-sessions__tab--active .studio-ai-sessions__tab-main:hover+.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{background:color-mix(in srgb, var(--v64-on-secondary-container) 8%, var(--studio-control-active-bg,#e7e7e7))}.studio-ai-sessions__tab[data-v-40a5e7a0]: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-40a5e7a0] .v-chip__overlay,.studio-ai-sessions__tab[data-v-40a5e7a0] .v-chip__underlay{display:none}.studio-ai-sessions__tab-label[data-v-40a5e7a0]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.studio-ai-sessions__repository-state[data-v-40a5e7a0]{color:rgba(var(--v-theme-on-surface), .4);flex:none;margin-inline-start:.42rem}.studio-ai-sessions__tab-info[data-v-40a5e7a0]{color:inherit;flex-shrink:0;display:none}.studio-ai-sessions__info[data-v-40a5e7a0]{overflow-wrap:anywhere;max-width:100%;padding:.25rem}.studio-ai-sessions__info-facts[data-v-40a5e7a0]{grid-template-columns:auto minmax(0,1fr);gap:.3rem .75rem;margin:.5rem 0 0;display:grid}.studio-ai-sessions__info-facts dt[data-v-40a5e7a0]{opacity:.75}.studio-ai-sessions__info-facts dd[data-v-40a5e7a0]{margin:0}.studio-ai-sessions__repository-state--saved[data-v-40a5e7a0]{color:rgb(var(--v-theme-success))}.studio-ai-sessions__repository-state--unsaved[data-v-40a5e7a0],.studio-ai-sessions__repository-state--unavailable[data-v-40a5e7a0]{color:rgb(var(--v-theme-error))}.studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{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-40a5e7a0]{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-40a5e7a0]:hover,.studio-ai-sessions__tab-archive[data-v-40a5e7a0]:focus-visible{opacity:1;pointer-events:auto;background:color-mix(in srgb, currentColor 14%, transparent)!important}.studio-ai-sessions__tab-archive[data-v-40a5e7a0] .v-icon{font-size:.98rem}.studio-ai-sessions__status-dot[data-v-40a5e7a0]{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-40a5e7a0]{animation:1.3s steps(2,end) infinite studio-ai-sessions-thinking-pulse-40a5e7a0}.studio-ai-sessions__status-dot--blocked[data-v-40a5e7a0],.studio-ai-sessions__status-dot--failed[data-v-40a5e7a0]{background:rgb(var(--v-theme-error))}@keyframes studio-ai-sessions-thinking-pulse-40a5e7a0{0%,to{opacity:.45}50%{opacity:1}}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tabs[data-v-40a5e7a0]{flex-wrap:nowrap;gap:.34rem}.studio-ai-sessions__toolbar--compact[data-v-40a5e7a0]{min-height:2rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-40a5e7a0]{letter-spacing:0;flex:0 auto;min-width:3.5rem;max-width:15rem;height:1.75rem;min-height:1.75rem;font-size:.86rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab[data-v-40a5e7a0] .v-chip__content{flex:auto;width:100%}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-main[data-v-40a5e7a0]{padding-inline:.45rem .4rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab--active .studio-ai-sessions__tab-main[data-v-40a5e7a0]{padding-inline-end:.18rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-close-slot[data-v-40a5e7a0]{padding-inline:0 .14rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__status-dot[data-v-40a5e7a0]{width:.38rem;height:.38rem;margin-right:.3rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__repository-state[data-v-40a5e7a0]{width:12px;height:12px;margin-inline-start:.22rem;font-size:12px}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-info[data-v-40a5e7a0]{width:1.25rem;height:1.25rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-info[data-v-40a5e7a0] .v-icon,.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-40a5e7a0] .v-icon{font-size:.82rem}.studio-ai-sessions__toolbar--compact .studio-ai-sessions__tab-archive[data-v-40a5e7a0]{opacity:.7;flex-basis:1.2rem;min-width:1.2rem;min-height:1.2rem;width:1.2rem!important;height:1.2rem!important}@media (width<=640px){.studio-ai-sessions__toolbar[data-v-40a5e7a0]{flex-direction:column;align-items:stretch}}@media (hover:none),(pointer:coarse){.studio-ai-sessions__tab-info[data-v-40a5e7a0]{display:inline-flex}.studio-ai-sessions__repository-state--desktop[data-v-40a5e7a0]{display:none}.studio-ai-sessions__tab .studio-ai-sessions__tab-archive[data-v-40a5e7a0]{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-40a5e7a0]{opacity:1;animation:none}}.vibe64-approvals[data-v-26d38d3c]{min-width:0}.vibe64-approvals__stack[data-v-26d38d3c]{max-height:min(40vh,26rem);padding:0 0 .5rem;display:block;overflow-y:auto}.vibe64-approvals--phone .vibe64-approvals__stack[data-v-26d38d3c]{max-height:none;padding:0}.vibe64-approvals__panel[data-v-26d38d3c]{background:0 0}.vibe64-approvals__panel--sheet[data-v-26d38d3c]{background:rgb(var(--v-theme-surface));max-height:85vh;padding:0 1rem calc(1rem + env(safe-area-inset-bottom));overflow-y:auto}.vibe64-approvals__sheet-header[data-v-26d38d3c]{justify-content:space-between;align-items:center;min-height:3.5rem;display:flex}.vibe64-approvals__list[data-v-26d38d3c]{flex-direction:column;gap:.5rem;display:flex}.vibe64-approvals__card[data-v-26d38d3c]{border-color:rgba(var(--v-theme-secondary), .45);background:rgba(var(--v-theme-secondary), .05);padding:.75rem}.vibe64-approvals__head[data-v-26d38d3c]{align-items:center;gap:.625rem;min-width:0;display:flex}.vibe64-approvals__avatar[data-v-26d38d3c]{font-weight:600}.vibe64-approvals__who[data-v-26d38d3c]{flex:auto;min-width:0}.vibe64-approvals__text[data-v-26d38d3c]{overflow-wrap:anywhere;white-space:pre-wrap;margin:.5rem 0 0}.vibe64-approvals__note[data-v-26d38d3c]{margin:.375rem 0 0}.vibe64-approvals__draft[data-v-26d38d3c]{margin-top:.5rem}.vibe64-approvals__actions[data-v-26d38d3c]{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.vibe64-approvals__actions--owner[data-v-26d38d3c]{justify-content:flex-start}.vibe64-approvals--phone .vibe64-approvals__actions[data-v-26d38d3c]{flex-direction:column-reverse}.vibe64-approvals--phone .vibe64-approvals__actions--owner[data-v-26d38d3c]{flex-direction:column}.vibe64-approvals--phone .vibe64-approvals__actions[data-v-26d38d3c] .v-btn{min-height:48px}.vibe64-approvals__decided[data-v-26d38d3c]{flex-direction:column;gap:.25rem;margin:0;padding:0 .25rem;list-style:none;display:flex}.vibe64-approvals__row-line[data-v-26d38d3c]{align-items:center;gap:.5rem;min-width:0;min-height:2rem;display:flex}.vibe64-approvals__row-text[data-v-26d38d3c]{overflow-wrap:anywhere;flex:auto;min-width:0}.vibe64-approvals__show[data-v-26d38d3c]{flex-shrink:0}.vibe64-approvals__excerpt[data-v-26d38d3c]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));min-width:0;margin:0 0 .25rem 1.625rem}p.vibe64-approvals__excerpt[data-v-26d38d3c],.vibe64-approvals__excerpt summary[data-v-26d38d3c]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vibe64-approvals__excerpt summary[data-v-26d38d3c]{cursor:pointer;display:block}.vibe64-approvals__excerpt[open] summary[data-v-26d38d3c]{overflow-wrap:anywhere;white-space:pre-wrap}.vibe64-approvals__quote[data-v-26d38d3c]{border-inline-start:3px solid rgba(var(--v-theme-error), .5);color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));overflow-wrap:anywhere;margin:0 0 .25rem 1.625rem;padding-inline-start:.5rem}.vibe64-approvals__bar[data-v-26d38d3c]{background:rgba(var(--v-theme-secondary), .08);border:1px solid rgba(var(--v-theme-secondary), .35);color:rgb(var(--v-theme-on-surface));text-align:start;border-radius:12px;align-items:center;gap:.5rem;width:100%;min-height:48px;margin-bottom:.5rem;padding:0 .75rem;display:flex}.vibe64-approvals__bar-label[data-v-26d38d3c]{flex:auto;min-width:0;font-weight:500}.vibe64-learning-finished[data-v-315fb4b6]{gap:var(--v64-space-3,12px);max-width:40rem;padding:var(--v64-space-6,32px) var(--v64-space-5,24px);justify-items:start;max-height:100%;margin:0 auto;display:grid;overflow-y:auto}.vibe64-learning-finished[data-v-315fb4b6]>*{max-width:100%;margin:0}.vibe64-learning-finished__mark[data-v-315fb4b6]{color:rgb(var(--v-theme-success))}.vibe64-learning-finished__eyebrow[data-v-315fb4b6]{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)}.vibe64-learning-finished h2[data-v-315fb4b6]{font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);overflow-wrap:anywhere}.vibe64-learning-finished__hint[data-v-315fb4b6]{color:var(--v64-on-surface-variant,inherit);align-items:center;display:flex}.vibe64-learning-finished__actions[data-v-315fb4b6]{gap:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.vibe64-learning-finished__error[data-v-315fb4b6]{color:rgb(var(--v-theme-error))}.vibe64-learning-finished .v-btn[data-v-315fb4b6]{letter-spacing:0;text-transform:none}.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}}.vibe64-learning-step h2[data-v-dfe8bf6a]{font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);margin:0 0 var(--v64-space-3,12px);overflow-wrap:anywhere}.vibe64-learning-step__eyebrow[data-v-dfe8bf6a]{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);margin:0 0 4px}.vibe64-learning-step__visual[data-v-dfe8bf6a],.vibe64-learning-step__check[data-v-dfe8bf6a]{gap:var(--v64-space-3,12px);margin-block:var(--v64-space-5,24px);justify-items:start;display:grid}.vibe64-learning-step__visual[data-v-dfe8bf6a]>:first-child{justify-self:stretch}.vibe64-learning-step__check[data-v-dfe8bf6a]{padding:var(--v64-space-4,16px);border-radius:var(--v64-shape-lg,16px);background:var(--v64-surface-container-low,#00000008)}.vibe64-learning-step__check h3[data-v-dfe8bf6a]{font:var(--v64-type-title-md,600 1.125rem/1.5rem system-ui, sans-serif);margin:0}.vibe64-learning-step__hint[data-v-dfe8bf6a],.vibe64-learning-step__note[data-v-dfe8bf6a]{color:var(--v64-on-surface-variant,inherit);margin:0}.vibe64-learning-step__status[data-v-dfe8bf6a]{font-weight:600}.vibe64-learning-step__status.is-passed[data-v-dfe8bf6a]{color:rgb(var(--v-theme-success))}.vibe64-learning-step__error[data-v-dfe8bf6a]{color:rgb(var(--v-theme-error))}.vibe64-learning-step__actions[data-v-dfe8bf6a],.vibe64-learning-step__pager[data-v-dfe8bf6a]{gap:var(--v64-space-2,8px);margin-top:var(--v64-space-4,16px);flex-wrap:wrap;display:flex}.vibe64-learning-step__pager[data-v-dfe8bf6a]{justify-content:space-between;align-items:center}.vibe64-learning-step__pager-end[data-v-dfe8bf6a]{justify-content:flex-end;align-items:center;gap:var(--v64-space-2,8px);flex-wrap:wrap;margin-inline-start:auto;display:flex}.vibe64-learning-step .v-btn[data-v-dfe8bf6a]{letter-spacing:0;text-transform:none}.vibe64-learning-reader-frame[data-v-4e71d35c]{height:100%;min-height:0;container-type:inline-size}.vibe64-learning-reader[data-v-4e71d35c]{gap:var(--v64-space-4,16px);grid-template-columns:minmax(14rem,18rem) minmax(0,1fr);height:100%;min-height:0;display:grid}.vibe64-learning-reader__alert[data-v-4e71d35c]{grid-column:1/-1}.vibe64-learning-reader__steps[data-v-4e71d35c]{min-height:0;padding:var(--v64-space-4,16px);border-inline-end:1px solid var(--v64-outline-variant,#0000001f);overflow-y:auto}.vibe64-learning-reader__steps ol[data-v-4e71d35c]{margin:var(--v64-space-3,12px) 0;gap:4px;padding:0;list-style:none;display:grid}.vibe64-learning-reader__lesson[data-v-4e71d35c]{gap:2px;margin:0;display:grid}.vibe64-learning-reader__code[data-v-4e71d35c]{font:var(--v64-type-label-md,500 .75rem/1rem system-ui, sans-serif);color:var(--v64-on-surface-variant,inherit)}.vibe64-learning-reader__step[data-v-4e71d35c]{border-radius:var(--v64-shape-md,12px);color:inherit;cursor:pointer;align-items:center;gap:2px var(--v64-space-3,12px);min-height:48px;padding:6px var(--v64-space-2,8px);text-align:start;background:0 0;border:0;grid-template-columns:28px minmax(0,1fr);width:100%;display:grid}.vibe64-learning-reader__step[data-v-4e71d35c]:hover{background:var(--v64-surface-container,#0000000a)}.vibe64-learning-reader__step.is-current[data-v-4e71d35c]{background:rgb(var(--v-theme-surface));box-shadow:inset 0 0 0 2px var(--v64-learning-strong,#c99a00);color:rgb(var(--v-theme-on-surface))}.vibe64-learning-reader__step[data-v-4e71d35c]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:2px}.vibe64-learning-reader__step-mark[data-v-4e71d35c]{border:1.5px solid;border-radius:50%;grid-row:span 2;justify-content:center;align-items:center;width:26px;height:26px;font-size:.8rem;font-weight:700;display:inline-flex}.vibe64-learning-reader__step.is-passed .vibe64-learning-reader__step-mark[data-v-4e71d35c]{background:rgb(var(--v-theme-success));border-color:rgb(var(--v-theme-success));color:rgb(var(--v-theme-on-success))}.vibe64-learning-reader__step-title[data-v-4e71d35c]{overflow-wrap:anywhere;font-weight:600}.vibe64-learning-reader__step-status[data-v-4e71d35c]{color:var(--v64-on-surface-variant,inherit);font-size:.75rem}.vibe64-learning-reader__summary[data-v-4e71d35c]{gap:var(--v64-space-2,8px);justify-items:start;display:grid}.vibe64-learning-reader__complete[data-v-4e71d35c]{color:rgb(var(--v-theme-success));margin:0;font-weight:600}.vibe64-learning-reader__complete-short[data-v-4e71d35c]{display:none}.vibe64-learning-reader__body[data-v-4e71d35c]{min-height:0;padding:var(--v64-space-4,16px) var(--v64-space-5,24px) var(--v64-space-6,32px);width:100%;max-width:52rem;overflow-y:auto}.vibe64-learning-reader__notes[data-v-4e71d35c]{margin-top:var(--v64-space-5,24px)}.vibe64-learning-reader .v-btn[data-v-4e71d35c]{letter-spacing:0;text-transform:none}@container (width<=760px){.vibe64-learning-reader[data-v-4e71d35c]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:0}.vibe64-learning-reader__steps[data-v-4e71d35c]{border-inline-end:0;border-bottom:1px solid var(--v64-outline-variant,#0000001f);padding:var(--v64-space-2,8px) var(--v64-space-3,12px)}.vibe64-learning-reader__steps ol[data-v-4e71d35c]{margin:var(--v64-space-2,8px) 0 0;display:flex;overflow-x:auto}.vibe64-learning-reader__step[data-v-4e71d35c]{grid-template-columns:28px;justify-items:center;min-width:48px}.vibe64-learning-reader__step-title[data-v-4e71d35c],.vibe64-learning-reader__step-status[data-v-4e71d35c]{display:none}.vibe64-learning-reader__summary[data-v-4e71d35c]{align-items:center;gap:4px var(--v64-space-2,8px);margin-top:var(--v64-space-2,8px);flex-wrap:wrap;display:flex}.vibe64-learning-reader__complete[data-v-4e71d35c]{font-size:.875rem}.vibe64-learning-reader__complete-long[data-v-4e71d35c]{display:none}.vibe64-learning-reader__complete-short[data-v-4e71d35c]{display:inline}.vibe64-learning-reader__body[data-v-4e71d35c]{padding:var(--v64-space-3,12px) var(--v64-space-4,16px) var(--v64-space-6,32px)}}.vibe64-learning-lesson-pane[data-v-6c96393e]{background:var(--v64-learning-container,rgb(var(--v-theme-surface)));color:rgb(var(--v-theme-on-surface));min-width:0;height:100%;min-height:0;overflow:hidden}.vibe64-learning-lesson-pane__scroll[data-v-6c96393e]{height:100%;overflow-y:auto}.vibe64-lesson-sheet[data-v-36a33e16]{background:var(--v64-learning-container,rgb(var(--v-theme-surface)));border:1px solid var(--v64-learning-strong,#f5c518);border-radius:var(--v64-shape-md,12px);z-index:3;flex-direction:column;min-height:0;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 6px 24px #00000038}.vibe64-lesson-sheet__header[data-v-36a33e16]{border-bottom:1px solid var(--v64-learning-strong,#f5c518);color:var(--v64-on-learning-container,inherit);align-items:center;gap:var(--v64-space-2,8px);flex:none;min-height:44px;padding:4px 8px 4px 12px;display:flex}.vibe64-lesson-sheet__title[data-v-36a33e16]{flex:auto;font-weight:700}.vibe64-lesson-sheet__hide[data-v-36a33e16]{letter-spacing:0;text-transform:none}.vibe64-lesson-sheet__pane[data-v-36a33e16]{flex:auto;height:auto}.studio-autopilot__reasoning-dots[data-v-41b46350]{clip-path:inset(0 66.666% 0 0);animation:1.5s step-end infinite reasoning-dots-41b46350;display:inline-block}@keyframes reasoning-dots-41b46350{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-41b46350]{clip-path:none;animation:none}}.studio-autopilot__checkpoint-notice summary[data-v-41b46350]{cursor:pointer}.studio-autopilot__checkpoint-details[data-v-41b46350]{overflow-wrap:anywhere;white-space:pre-wrap;max-height:8rem;overflow:auto}.studio-autopilot[data-v-41b46350]{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-41b46350]{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-41b46350]{text-overflow:ellipsis;min-width:0;overflow:hidden}.studio-home-shell-session-github-actor--inactive[data-v-41b46350]{color:rgba(var(--v-theme-on-surface), .46)}.studio-autopilot--chat-collapsed[data-v-41b46350]{grid-template-columns:0 minmax(0,1fr)}.studio-autopilot__chat-panel[data-v-41b46350]{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-41b46350]{visibility:hidden}.studio-autopilot__session-header[data-v-41b46350]{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-41b46350] .studio-ai-sessions__toolbar{flex:auto;min-width:0;margin-inline-end:.35rem;overflow:hidden}.studio-autopilot__session-header[data-v-41b46350] .studio-ai-sessions__tabs{min-width:0;overflow:hidden}.studio-autopilot__header-actions[data-v-41b46350],.studio-autopilot__session-tool-header[data-v-41b46350]{align-items:center;gap:.4rem;display:flex}.studio-autopilot__header-actions[data-v-41b46350]{flex:none;gap:.125rem;margin-inline-start:auto}.studio-autopilot__header-action[data-v-41b46350],.studio-autopilot__save-work[data-v-41b46350]{border-radius:8px}.studio-autopilot__header-action[data-v-41b46350],.studio-autopilot__save-work[data-v-41b46350]:not(.text-error):not(.text-warning){color:rgba(var(--v-theme-on-surface), .66)}.studio-autopilot__header-action[data-v-41b46350] .v-icon,.studio-autopilot__save-work[data-v-41b46350] .v-btn__content>.v-icon{width:18px;height:18px;font-size:18px}.studio-autopilot__header-action[data-v-41b46350]:hover,.studio-autopilot__save-work[data-v-41b46350]:not(.text-error):not(.text-warning):hover{color:rgba(var(--v-theme-on-surface), .9)}.studio-autopilot__save-work.text-error[data-v-41b46350],.studio-autopilot__save-work.text-warning[data-v-41b46350]{background:color-mix(in srgb, currentColor 9%, transparent)}.studio-autopilot__header-action[data-v-41b46350] .v-btn__overlay,.studio-autopilot__save-work[data-v-41b46350] .v-btn__overlay{border-radius:inherit}@media (pointer:coarse){.studio-autopilot__session-header[data-v-41b46350]{--session-action-size:44px}}.studio-autopilot__session-action-item[data-v-41b46350]{min-height:3rem}.studio-autopilot__conversation[data-v-41b46350]{grid-row:3;min-width:0;min-height:0}.studio-autopilot__activity[data-v-41b46350]{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-41b46350]:has(.db-server--attention){max-height:min(80dvh,52rem)}.studio-autopilot__activity[data-v-41b46350]:has(.setup-tools:not(.setup-tools--quiet)){max-height:min(60dvh,34rem)}.studio-autopilot__activity[data-v-41b46350]:has(.git-stand-in){max-height:min(60dvh,26rem)}.studio-autopilot__activity[data-v-41b46350]:empty{padding:0;display:none}.studio-autopilot__connection-recovery[data-v-41b46350]{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-41b46350]{overflow-wrap:anywhere;min-width:0}.studio-autopilot__connection-actions[data-v-41b46350]{flex-direction:column;align-items:flex-start;gap:.25rem;display:flex}.studio-autopilot__composer[data-v-41b46350]{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-41b46350]{align-items:center;gap:.25rem clamp(0rem,4% - 1.25rem,.5rem);width:100%;min-width:0;display:flex}.studio-autopilot__approval-send[data-v-41b46350]{flex-shrink:0;margin-inline-start:auto}@media (pointer:coarse){.studio-autopilot__approval-send[data-v-41b46350]{min-height:3rem}}.studio-autopilot__approvals-chip[data-v-41b46350]{flex-shrink:0;align-self:center}.studio-autopilot__settings-access[data-v-41b46350]{grid-column:1/-1}.studio-autopilot__composer-action[data-v-41b46350]{flex-shrink:0}.studio-autopilot__assistant-button[data-v-41b46350]{align-items:center;display:flex;position:relative}.studio-autopilot__assistant-button-label[data-v-41b46350]{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-41b46350]{flex-shrink:0;display:flex}.studio-autopilot__composer-tools[data-v-41b46350]:empty{display:none}@container studio-chat-pane (width<=32rem){.studio-autopilot__composer-actions[data-v-41b46350]{gap:0}.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-41b46350]{width:clamp(2rem,10cqi,2.5rem)}.studio-autopilot__composer-actions[data-v-41b46350] button{flex-shrink:1;min-width:min-content;padding-inline:.25rem}}.studio-autopilot__composer-menu[data-v-41b46350]{flex-direction:column;gap:.4rem;max-width:calc(100vw - 24px);display:flex}.studio-autopilot__save-work[data-v-41b46350]{flex:none}.studio-autopilot__save-work--check[data-v-41b46350]{opacity:var(--v-disabled-opacity)}.studio-autopilot__save-symbol[data-v-41b46350]{width:24px;height:22px;position:relative}.studio-autopilot__save-symbol-disk[data-v-41b46350],.studio-autopilot__save-symbol-commit[data-v-41b46350]{opacity:.72;position:absolute}.studio-autopilot__save-symbol-disk[data-v-41b46350]{bottom:0;left:0}.studio-autopilot__save-symbol-commit[data-v-41b46350]{top:0;right:0}.studio-autopilot__project-panel[data-v-41b46350],.studio-autopilot__dashboard-shell[data-v-41b46350],.studio-autopilot__right-pane-page[data-v-41b46350],.studio-autopilot__session-tool-pane[data-v-41b46350],.studio-autopilot__session-tool-content[data-v-41b46350]{min-width:0;height:100%;min-height:0}.studio-autopilot__project-panel[data-v-41b46350]{contain:strict;position:relative;overflow:hidden}.studio-autopilot__right-pane-page[data-v-41b46350]{overflow:auto}.studio-autopilot__session-tool-pane[data-v-41b46350]{grid-template-rows:auto minmax(0,1fr);display:grid}.studio-autopilot__architecture-pane[data-v-41b46350]{grid-template-rows:minmax(0,1fr);overflow:hidden}.studio-autopilot__session-tool-header[data-v-41b46350]{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-41b46350]{padding:var(--v64-space-3) var(--v64-space-4) var(--v64-space-4)}.studio-autopilot__session-tool-content[data-v-41b46350]{overflow:hidden}.studio-autopilot__preview-launch[data-v-41b46350]{height:100%}@media (width>=981px){.studio-autopilot[data-v-41b46350]{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-41b46350]{grid-template-columns:0 minmax(0,1fr);gap:0}}@media (width<=980px){.studio-autopilot[data-v-41b46350]: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-41b46350]{visibility:hidden}}@media (pointer:coarse){.studio-autopilot__composer-actions .studio-autopilot__composer-action[data-v-41b46350]{min-width:3rem;min-height:3rem}}.studio-autopilot__voice-feedback[data-v-41b46350]{flex:100%;min-width:0}.studio-autopilot__architecture-file[data-v-41b46350]{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-41b46350]{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-41b46350]{overflow-wrap:anywhere;font-size:14px}.studio-autopilot__architecture-file>.vibe64-source-editor[data-v-41b46350]{flex:1;min-height:0}.vibe64-agent-terminal-drop-overlay[data-v-2d9e2b1e]{background:rgba(var(--v-theme-scrim,var(--v-theme-on-surface)), .68);pointer-events:none;z-index:5;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-agent-terminal-drop-overlay__card[data-v-2d9e2b1e]{align-items:center;gap:.7rem;padding:1rem 1.15rem;display:flex}.vibe64-agent-terminal-start-panel[data-v-e1543fc7]{background:rgba(var(--v-theme-scrim), .8);z-index:3;justify-content:center;align-items:center;padding:1rem;display:flex;position:absolute;inset:0}.vibe64-agent-terminal-start-panel__card[data-v-e1543fc7]{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-agent-terminal-start-panel__icon[data-v-e1543fc7]{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-agent-terminal-start-panel__copy[data-v-e1543fc7]{gap:.15rem;min-width:0;display:grid}.vibe64-agent-terminal-start-panel__copy strong[data-v-e1543fc7]{font-size:.95rem}.vibe64-agent-terminal-start-panel__copy span[data-v-e1543fc7]{color:rgba(var(--v-theme-on-surface), .72);font-size:.8rem;line-height:1.35}.vibe64-agent-terminal-start-panel__action[data-v-e1543fc7]{min-inline-size:10rem}@media (width<=700px){.vibe64-agent-terminal-start-panel__card[data-v-e1543fc7]{grid-template-columns:auto minmax(0,1fr)}.vibe64-agent-terminal-start-panel__action[data-v-e1543fc7]{grid-column:1/-1;width:100%}}.vibe64-codex-session[data-v-64232d6f]{min-width:0;height:100%;min-height:0;position:relative}.vibe64-codex-session--headless[data-v-64232d6f]{pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.vibe64-codex-session--focused[data-v-64232d6f] .vibe64-terminal-surface{border-color:rgba(var(--v-theme-primary), .72)}.vibe64-codex-session__command[data-v-64232d6f]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vibe64-codex-session__attachment-action[data-v-64232d6f]{min-width:2.5rem;min-height:2.5rem}@media (pointer:coarse){.vibe64-codex-session__attachment-action[data-v-64232d6f]{min-width:3rem;min-height:3rem}}.vibe64-codex-session__start-action[data-v-64232d6f]{min-inline-size:10rem}@media (width<=700px){.vibe64-codex-session__start-action[data-v-64232d6f]{width:100%}}.vibe64-native-agent-session[data-v-437673a4]{block-size:100%;min-block-size:0;min-inline-size:0;position:relative}.vibe64-native-agent-session--headless[data-v-437673a4]{block-size:0;inline-size:0;position:absolute;overflow:hidden}.vibe64-native-agent-session__command[data-v-437673a4]{color:rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));font-size:.82rem}.studio-renewal-assistant[data-v-c35da031]{border:1px solid rgba(var(--v-theme-outline), .22);border-radius:.75rem;gap:.75rem;padding:.85rem;display:grid}.studio-renewal-assistant__heading[data-v-c35da031],.studio-renewal-assistant__error[data-v-c35da031]{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.studio-renewal-assistant__heading>span[data-v-c35da031]{gap:.15rem;display:grid}.studio-renewal-assistant__heading small[data-v-c35da031],.studio-renewal-assistant__summary[data-v-c35da031]{color:rgba(var(--v-theme-on-surface), .68)}.studio-renewal-assistant__fields[data-v-c35da031]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.studio-renewal-assistant__summary[data-v-c35da031]{margin:0}@media (width<=600px){.studio-renewal-assistant__heading[data-v-c35da031]{align-items:flex-start}.studio-renewal-assistant__fields[data-v-c35da031]{grid-template-columns:minmax(0,1fr)}}.studio-session-renewal[data-v-3dc8814b]{max-height:min(46rem,100dvh - 2rem)}.studio-session-renewal__header[data-v-3dc8814b],.studio-session-renewal__heading[data-v-3dc8814b],.studio-session-renewal__assurance[data-v-3dc8814b],.studio-session-renewal__success[data-v-3dc8814b],.studio-session-renewal__progress-copy[data-v-3dc8814b]{align-items:center;display:flex}.studio-session-renewal__header[data-v-3dc8814b]{justify-content:space-between;gap:1rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__heading[data-v-3dc8814b]{gap:.75rem;min-width:0}.studio-session-renewal__heading>span[data-v-3dc8814b]:last-child,.studio-session-renewal__assurance>span[data-v-3dc8814b],.studio-session-renewal__success>span[data-v-3dc8814b]{gap:.12rem;min-width:0;display:grid}.studio-session-renewal__heading h2[data-v-3dc8814b]{margin:0}.studio-session-renewal__subtitle[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__icon[data-v-3dc8814b]{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-3dc8814b]{gap:1rem;min-height:22rem;padding:1.25rem;display:grid}.studio-session-renewal__lead[data-v-3dc8814b],.studio-session-renewal__supporting[data-v-3dc8814b]{overflow-wrap:anywhere;margin:0}.studio-session-renewal__lead[data-v-3dc8814b]{color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__supporting[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .7)}.studio-session-renewal__assurance[data-v-3dc8814b],.studio-session-renewal__success[data-v-3dc8814b]{gap:.75rem;padding:1rem;line-height:1.45}.studio-session-renewal__skeleton[data-v-3dc8814b]{gap:1rem;display:grid}.studio-session-renewal__progress-copy[data-v-3dc8814b]{align-items:flex-start;gap:.25rem;display:grid}.studio-session-renewal__progress-copy span[data-v-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__progress-line[data-v-3dc8814b]{margin-block:.1rem .25rem}.studio-session-renewal__steps[data-v-3dc8814b]{gap:.35rem;margin:0;padding:0;list-style:none;display:grid}.studio-session-renewal__steps li[data-v-3dc8814b]{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-3dc8814b]{background:rgba(var(--v-theme-primary), .1);color:rgb(var(--v-theme-on-surface))}.studio-session-renewal__step--complete[data-v-3dc8814b]{color:rgb(var(--v-theme-primary))}.studio-session-renewal__step-icon[data-v-3dc8814b]{flex:none;justify-content:center;align-items:center;width:1.25rem;display:inline-flex}.studio-session-renewal__draft[data-v-3dc8814b]{min-width:0}.studio-session-renewal__notice[data-v-3dc8814b]{margin:0}.studio-session-renewal__notice-copy[data-v-3dc8814b]{gap:.25rem;display:grid}.studio-session-renewal__source-details[data-v-3dc8814b]{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-3dc8814b]{color:rgba(var(--v-theme-on-surface), .68)}.studio-session-renewal__source-details dd[data-v-3dc8814b]{overflow-wrap:anywhere;min-width:0;margin:0}.studio-session-renewal__notice-with-action[data-v-3dc8814b]{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-3dc8814b]{flex:18rem}.studio-session-renewal__inline-actions[data-v-3dc8814b]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.studio-session-renewal__actions[data-v-3dc8814b]{flex-wrap:wrap;gap:.5rem;min-height:4.5rem;padding:.75rem 1rem}.studio-session-renewal__actions-spacer[data-v-3dc8814b]{flex:auto}.studio-session-renewal--fullscreen[data-v-3dc8814b]{height:100dvh;max-height:100dvh}.studio-session-renewal--fullscreen .studio-session-renewal__body[data-v-3dc8814b]{min-height:0;padding:1rem}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-3dc8814b],.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-3dc8814b]{align-items:stretch}.studio-session-renewal--fullscreen .studio-session-renewal__inline-actions[data-v-3dc8814b]>*,.studio-session-renewal--fullscreen .studio-session-renewal__notice-with-action[data-v-3dc8814b]>:last-child{flex:100%}.studio-session-renewal__actions--compact[data-v-3dc8814b]{align-items:stretch}.studio-session-renewal__actions--compact .studio-session-renewal__actions-spacer[data-v-3dc8814b]{display:none}.studio-session-renewal__actions--compact .studio-session-renewal__action[data-v-3dc8814b]{flex:calc(50% - .25rem)}.studio-session-renewal__actions--compact .studio-session-renewal__action--primary[data-v-3dc8814b]{flex-basis:100%}@media (prefers-reduced-motion:reduce){.studio-session-renewal__progress-line[data-v-3dc8814b]{display:none}}.studio-ai-session-runtime[data-v-8c59d7cd]{min-width:0;max-width:100%;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__tab-terminal[data-v-8c59d7cd]{min-width:0;height:100%;min-height:0}.studio-ai-sessions__tab-terminal[data-v-8c59d7cd] .studio-ai-sessions__codex-terminal-shell,.studio-ai-sessions__tab-terminal[data-v-8c59d7cd] .studio-ai-sessions__codex-terminal{height:100%}.studio-ai-sessions__empty-main[data-v-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{position:relative}.studio-ai-sessions__empty-layout[data-v-7724f9c1]{gap:var(--studio-home-project-gap,.75rem);min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.studio-ai-sessions__empty-main[data-v-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{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-7724f9c1],.studio-ai-sessions__empty-project-panel[data-v-7724f9c1],.studio-ai-sessions__preview-empty-pane[data-v-7724f9c1]{display:grid}.studio-ai-sessions__empty-main[data-v-7724f9c1]{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-7724f9c1]{gap:.28rem;min-width:0;display:grid}.studio-ai-sessions__empty-chat-body[data-v-7724f9c1]{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-7724f9c1]{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-7724f9c1]{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-7724f9c1]{visibility:hidden}.studio-ai-sessions__empty-thinking-mark[data-v-7724f9c1]{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-7724f9c1]{display:none}.studio-ai-sessions__empty-composer[data-v-7724f9c1]{min-width:0;min-height:.35rem}.studio-ai-sessions__dashboard-empty-pane[data-v-7724f9c1]{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-7724f9c1]{place-items:center;min-width:0;min-height:0;padding:1rem}.studio-ai-sessions__preview-empty-content[data-v-7724f9c1]{text-align:center;place-items:center;gap:.65rem;max-width:min(100%,26rem);display:grid}.studio-ai-sessions__preview-empty-title[data-v-7724f9c1]{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-7724f9c1]{color:rgba(var(--v-theme-on-surface), .62);max-width:24rem;margin:-.25rem 0 0;font-size:.86rem;line-height:1.35}@media (width>=981px){.studio-ai-sessions__empty-layout[data-v-7724f9c1]{grid-template-columns:var(--studio-home-chat-column-width,32rem) minmax(0, 1fr)}.studio-ai-sessions__empty-layout--chat-collapsed[data-v-7724f9c1]{grid-template-columns:minmax(0,1fr)}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-7724f9c1]{display:none}.studio-ai-sessions__empty-layout--dashboard[data-v-7724f9c1]{align-items:stretch;height:100%;overflow:hidden}}@media (width<=980px){.studio-ai-sessions__empty-layout[data-v-7724f9c1]{grid-template-rows:minmax(0,1fr)}.studio-ai-sessions__empty-project-panel[data-v-7724f9c1],.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-main[data-v-7724f9c1]{display:none}.studio-ai-sessions__empty-layout--chat-collapsed .studio-ai-sessions__empty-project-panel[data-v-7724f9c1]{display:grid}}.studio-ai-sessions[data-v-07990013]{gap:.85rem;height:100%;min-height:0;display:grid;position:relative;overflow:hidden}.studio-ai-sessions--autopilot[data-v-07990013]{box-shadow:none;background:0 0;grid-template-rows:minmax(0,1fr);gap:0;padding:0;border-radius:0!important}.studio-ai-sessions__chat-column-separator[data-v-07990013]{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-07990013]: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-07990013]:hover:before,.studio-ai-sessions__chat-column-separator[data-v-07990013]:focus-visible:before,.studio-ai-sessions__chat-column-separator--resizing[data-v-07990013]:before{background:rgb(var(--v-theme-primary));width:2px}.studio-ai-sessions--resizing[data-v-07990013]{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}@media (width>=981px){.studio-ai-sessions[data-v-07990013]{grid-template-rows:auto minmax(0,1fr)}.studio-ai-sessions--autopilot[data-v-07990013]{grid-template-rows:minmax(0,1fr)}}@media (width<=980px){.studio-ai-sessions__chat-column-separator[data-v-07990013]{display:none!important}}.studio-ai-sessions--autopilot.studio-ai-sessions--unavailable[data-v-07990013]{grid-template-rows:auto minmax(0,1fr)}.studio-ai-sessions__empty-main>.studio-ai-sessions__empty-host-conversation[data-v-676df1e9]{grid-row:2/-1}.studio-ai-sessions__preview-empty-loading[data-v-676df1e9]{width:10rem}.studio-ai-sessions__preview-empty-skeleton[data-v-676df1e9]{width:100%}.studio-ai-sessions__error-overlay[data-v-676df1e9]{z-index:12;max-width:min(42rem,100% - 1.7rem);position:absolute;top:.85rem;left:.85rem}.studio-ai-sessions-error-enter-active[data-v-676df1e9],.studio-ai-sessions-error-leave-active[data-v-676df1e9]{transition:opacity .12s,transform .12s}.studio-ai-sessions-error-enter-from[data-v-676df1e9],.studio-ai-sessions-error-leave-to[data-v-676df1e9]{opacity:0;transform:translateY(-.35rem)}.studio-ai-sessions__runtime-stack[data-v-676df1e9]{min-width:0;height:100%;min-height:0;display:grid;overflow:hidden}.vibe64-lesson-toggle[data-v-f8ec48b9]{border:1px solid var(--v64-outline,#7f7f7f99);border-radius:var(--v64-shape-full,999px);color:var(--v64-on-surface,inherit);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;flex:none;align-items:center;gap:6px;height:32px;padding:0 10px 0 8px;font-size:.875rem;font-weight:500;transition:background-color .12s,border-color .12s;display:inline-flex;position:relative}.vibe64-lesson-toggle[data-v-f8ec48b9]:before{border-radius:inherit;content:"";opacity:0;pointer-events:none;background:currentColor;transition:opacity .12s;position:absolute;inset:0}.vibe64-lesson-toggle[data-v-f8ec48b9]:hover:before{opacity:.08}.vibe64-lesson-toggle[data-v-f8ec48b9]:focus-visible{outline:2px solid var(--v64-primary,currentColor);outline-offset:2px}.vibe64-lesson-toggle.is-on[data-v-f8ec48b9]{background:var(--v64-learning,#f5c518);border-color:var(--v64-learning-strong,#f5c518);color:var(--v64-on-learning,#2b2100);font-weight:700}.vibe64-lesson-toggle__switch[data-v-f8ec48b9]{background:color-mix(in srgb, currentColor 14%, transparent);box-sizing:border-box;opacity:.75;border:1.5px solid;border-radius:999px;flex:none;width:28px;height:16px;display:inline-block;position:relative}.vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{background:currentColor;border-radius:50%;justify-content:center;align-items:center;width:8px;height:8px;transition:left .12s,width .12s,height .12s,top .12s;display:flex;position:absolute;top:2.5px;left:2.5px}.vibe64-lesson-toggle.is-on .vibe64-lesson-toggle__switch[data-v-f8ec48b9]{background:var(--v64-on-learning,#2b2100);border-color:var(--v64-on-learning,#2b2100);opacity:1}.vibe64-lesson-toggle.is-on .vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{background:var(--v64-learning,#f5c518);color:var(--v64-on-learning,#2b2100);width:11px;height:11px;top:1px;left:13px}@media (prefers-reduced-motion:reduce){.vibe64-lesson-toggle[data-v-f8ec48b9],.vibe64-lesson-toggle[data-v-f8ec48b9]:before,.vibe64-lesson-toggle__thumb[data-v-f8ec48b9]{transition:none}}.vibe64-learning-step-bar-host[data-v-5bda49a5]{flex:none;min-width:0;position:relative}.vibe64-learning-step-bar[data-v-5bda49a5]{background:var(--v64-learning-container,#f5c51829);border:1px solid var(--v64-learning-strong,#f5c518);border-radius:var(--v64-shape-md,12px);color:var(--v64-on-learning-container,inherit);align-items:center;gap:var(--v64-space-2,8px);min-width:0;padding:2px var(--v64-space-2,8px);flex:none;display:flex;position:relative;overflow:hidden}.vibe64-learning-step-bar__position[data-v-5bda49a5]{align-items:baseline;gap:0 var(--v64-space-2,8px);flex-wrap:wrap;flex:0 auto;min-width:0;display:flex}.vibe64-learning-step-bar__lesson[data-v-5bda49a5]{text-overflow:ellipsis;white-space:nowrap;max-width:16rem;font-weight:700;overflow:hidden}.vibe64-learning-step-bar__step[data-v-5bda49a5]{overflow-wrap:anywhere;min-width:0}.vibe64-learning-step-bar__dots[data-v-5bda49a5]{align-self:center;gap:4px;display:inline-flex}.vibe64-learning-step-bar__dot[data-v-5bda49a5]{opacity:.55;border:1.5px solid;border-radius:50%;width:8px;height:8px}.vibe64-learning-step-bar__dot.is-done[data-v-5bda49a5]{background:currentColor}.vibe64-learning-step-bar__dot.is-current[data-v-5bda49a5]{opacity:1;background:currentColor}.vibe64-learning-step-bar__line[data-v-5bda49a5]{align-items:center;gap:2px var(--v64-space-2,8px);flex-wrap:wrap;flex:auto;min-width:0;display:flex}.vibe64-learning-step-bar__beat[data-v-5bda49a5]{overflow-wrap:anywhere;flex:12rem;min-width:0;font-weight:500}.vibe64-learning-step-bar__status[data-v-5bda49a5]{opacity:.8;font-size:.8125rem}.vibe64-learning-step-bar__status.is-passed[data-v-5bda49a5]{color:rgb(var(--v-theme-success));opacity:1}.vibe64-learning-step-bar__note[data-v-5bda49a5]{flex-basis:100%;font-size:.8125rem}.vibe64-learning-step-bar__controls[data-v-5bda49a5]{flex:none;align-items:center;gap:2px;display:flex}.vibe64-learning-step-bar__progress[data-v-5bda49a5]{background:var(--v64-learning-strong,#f5c518);transform-origin:0;height:3px;transition:transform .1s linear;position:absolute;bottom:0;left:0;right:0}.vibe64-learning-step-bar .v-btn[data-v-5bda49a5]{letter-spacing:0;text-transform:none}.vibe64-learning-step-bar__step[data-v-5bda49a5]{font-variant-numeric:tabular-nums}.vibe64-learning-step-bar__lesson-toggle[data-v-5bda49a5]{flex:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.vibe64-learning-step-bar__progress[data-v-5bda49a5]{transition:none}}@media (width<=600px){.vibe64-learning-step-bar[data-v-5bda49a5]{flex-wrap:wrap;gap:0 4px}.vibe64-learning-step-bar__stuck--beside[data-v-5bda49a5],.vibe64-learning-step-bar__lesson[data-v-5bda49a5]{display:none}.vibe64-learning-step-bar__position[data-v-5bda49a5]{flex:auto;order:1}.vibe64-learning-step-bar__lesson-toggle[data-v-5bda49a5],.vibe64-learning-step-bar__practice[data-v-5bda49a5],.vibe64-learning-step-bar__courses[data-v-5bda49a5]{order:2}.vibe64-learning-step-bar__line[data-v-5bda49a5]{flex-basis:100%;order:3;padding:0 0 2px 8px}.vibe64-learning-step-bar__controls[data-v-5bda49a5]{flex-basis:100%;order:4;justify-content:space-between}.vibe64-learning-step-bar__controls .v-btn[data-v-5bda49a5]:last-child{margin-inline-start:auto}.vibe64-learning-step-bar__courses[data-v-5bda49a5],.vibe64-learning-step-bar__practice[data-v-5bda49a5]{padding-inline:0}.vibe64-learning-step-bar__courses[data-v-5bda49a5] .v-btn__prepend,.vibe64-learning-step-bar__practice[data-v-5bda49a5] .v-btn__prepend{margin-inline:0}.vibe64-learning-step-bar__courses-label[data-v-5bda49a5],.vibe64-learning-step-bar__practice-label[data-v-5bda49a5]{display:none}}.vibe64-learning-stage[data-v-f1c4259c]{gap:var(--v64-space-2,8px);flex-direction:column;min-width:0;min-height:0;display:flex}.vibe64-learning-stage__bar[data-v-f1c4259c]{margin:var(--v64-space-2,8px) var(--v64-space-3,12px) 0}.vibe64-learning-stage__body[data-v-f1c4259c]{flex:auto;min-width:0;min-height:0;display:flex}.vibe64-learning-stage__page[data-v-f1c4259c]{flex:auto;min-width:0}.vibe64-learning-stage__anchor[data-v-f1c4259c]{height:0;top:var(--v64-space-2,8px);z-index:5;flex:0 0 0;align-self:flex-start;width:0;position:sticky}.vibe64-learning-stage__lesson[data-v-f1c4259c]{height:calc(100dvh - 140px);right:var(--v64-space-3,12px);width:min(440px,100vw - 24px);position:absolute;top:0}.is-phone .vibe64-learning-stage__bar[data-v-f1c4259c]{margin-inline:var(--v64-space-2,8px)}.is-phone .vibe64-learning-stage__lesson[data-v-f1c4259c]{height:calc(100dvh - 150px);right:var(--v64-space-2,8px);width:calc(100vw - 16px)}.vibe64-learner-art[data-v-e1a49930]{--learner-skin:#f4c7a1;--learner-ink:#2b2118;width:17rem;max-width:100%;height:auto;display:block;overflow:visible}.vibe64-learner-art__halo[data-v-e1a49930]{fill:var(--v64-learning-tint)}.vibe64-learner-art__disc[data-v-e1a49930]{fill:var(--v64-learning-container)}.vibe64-learner-art__shadow[data-v-e1a49930]{fill:var(--learner-ink);opacity:.1}.vibe64-learner-art__skin[data-v-e1a49930]{fill:var(--learner-skin)}.vibe64-learner-art__body[data-v-e1a49930]{fill:var(--v64-primary);stroke:var(--v64-primary);stroke-linejoin:round;stroke-width:6px}.vibe64-learner-art__collar[data-v-e1a49930]{fill:var(--v64-primary-container);stroke:var(--v64-primary-container);stroke-linejoin:round;stroke-width:3px}.vibe64-learner-art__ink[data-v-e1a49930]{fill:var(--learner-ink)}.vibe64-learner-art__cheek[data-v-e1a49930]{fill:#f08a7e;opacity:.55}.vibe64-learner-art__smile[data-v-e1a49930]{fill:#8c2f22}.vibe64-learner-art__cap[data-v-e1a49930]{fill:var(--learner-ink);stroke:var(--learner-ink);stroke-linejoin:round;stroke-width:3px}.vibe64-learner-art__tassel[data-v-e1a49930]{fill:none;stroke:var(--v64-learning);stroke-linecap:round;stroke-linejoin:round;stroke-width:2.5px}.vibe64-learner-art__tassel-end[data-v-e1a49930],.vibe64-learner-art__bulb[data-v-e1a49930]{fill:var(--v64-learning)}.vibe64-learner-art__bulb[data-v-e1a49930]{filter:drop-shadow(0 0 8px var(--v64-learning-glow))}.vibe64-learner-art__base[data-v-e1a49930]{fill:color-mix(in srgb, var(--learner-ink) 55%, #c9c4b8)}.vibe64-learner-art__ray[data-v-e1a49930],.vibe64-learner-art__bit--learning[data-v-e1a49930]{fill:var(--v64-learning-strong)}.vibe64-learner-art__bit--primary[data-v-e1a49930]{fill:var(--v64-primary);opacity:.65}.vibe64-learner-art__bit--outline[data-v-e1a49930],.vibe64-learner-art__bit--ring[data-v-e1a49930]{fill:none;stroke:var(--v64-primary);stroke-linejoin:round;stroke-opacity:.55;stroke-width:3px}.vibe64-learner-art__idea[data-v-e1a49930]{animation:3.2s ease-in-out infinite vibe64-learner-float-e1a49930}.vibe64-learner-art__wave[data-v-e1a49930]{transform-box:view-box;transform-origin:182px 165px;animation:2.4s ease-in-out infinite vibe64-learner-wave-e1a49930}.vibe64-learner-art__bit[data-v-e1a49930]{transform-box:fill-box;transform-origin:50%;animation:2.8s ease-in-out infinite vibe64-learner-twinkle-e1a49930}.vibe64-learner-art__bit[data-v-e1a49930]:nth-of-type(2n){animation-delay:.9s}.vibe64-learner-art__bit[data-v-e1a49930]:nth-of-type(3n){animation-delay:1.7s}@keyframes vibe64-learner-float-e1a49930{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes vibe64-learner-wave-e1a49930{0%,to{transform:rotate(0)}50%{transform:rotate(-7deg)}}@keyframes vibe64-learner-twinkle-e1a49930{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.75)}}@media (prefers-reduced-motion:reduce){.vibe64-learner-art__idea[data-v-e1a49930],.vibe64-learner-art__wave[data-v-e1a49930],.vibe64-learner-art__bit[data-v-e1a49930]{animation:none}}.vibe64-learn-welcome[data-v-a4a8577f]{animation:vibe64-learn-welcome-in-a4a8577f var(--v64-duration-long,.4s) var(--v64-ease-emphasized-decelerate,ease-out);align-items:center;gap:var(--v64-space-3);text-align:center;justify-items:center;min-width:0;max-width:min(24rem,100%);display:grid}.vibe64-learn-welcome__title[data-v-a4a8577f]{color:var(--v64-on-surface);font:var(--v64-type-headline-sm,600 1.5rem/2rem system-ui, sans-serif);letter-spacing:-.01em;margin:var(--v64-space-2) 0 0}.vibe64-learn-welcome__text[data-v-a4a8577f]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-lg,400 1rem/1.5rem system-ui, sans-serif);margin:0}.vibe64-learn-welcome__choose[data-v-a4a8577f]{box-shadow:0 4px 14px var(--v64-learning-glow);letter-spacing:.01em;margin-top:var(--v64-space-2);text-transform:none;transition:transform var(--v64-duration-short,.15s) var(--v64-ease-standard,ease), box-shadow var(--v64-duration-short,.15s) var(--v64-ease-standard,ease);font-weight:700;background:var(--v64-learning)!important;color:#1d1600!important;padding-inline:var(--v64-space-6,1.5rem)!important}.vibe64-learn-welcome__choose[data-v-a4a8577f]:hover{box-shadow:0 6px 20px var(--v64-learning-glow);transform:translateY(-1px)}@keyframes vibe64-learn-welcome-in-a4a8577f{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.vibe64-learn-welcome[data-v-a4a8577f],.vibe64-learn-welcome__choose[data-v-a4a8577f]{transition:none;animation:none}}.studio-screen__no-project[data-v-9353033f]{flex:auto;min-height:0}.studio-screen__lesson-layout[data-v-9353033f]{border:1px solid rgba(var(--v-theme-outline), .14);border-radius:14px;min-width:0;height:100%;min-height:0;overflow:hidden}.studio-screen__no-project-text[data-v-9353033f]{color:var(--v64-on-surface-variant);gap:var(--v64-space-3);padding:var(--v64-space-4);justify-items:start;display:grid}.studio-screen__no-project-text p[data-v-9353033f]{margin:0}.studio-screen__choose-lesson[data-v-9353033f]{text-transform:none}.studio-screen__no-lesson-chat[data-v-9353033f]{min-width:0;min-height:0;padding:var(--v64-space-4) var(--v64-space-2);place-items:center;display:grid;overflow-y:auto}.studio-screen__no-lesson-note[data-v-9353033f]{color:var(--v64-on-surface-variant);font:var(--v64-type-body-md,400 .875rem/1.25rem system-ui, sans-serif);text-align:center;max-width:18rem;margin:0}.studio-screen__no-lesson-welcome[data-v-9353033f]{display:none}@media (width<=980px){.studio-screen__no-lesson-note[data-v-9353033f]{display:none}.studio-screen__no-lesson-welcome[data-v-9353033f]{display:grid}}body.studio-home-shell-active{--studio-home-chat-column-width:32rem;--studio-home-project-gap:.75rem;--studio-control-bg:var(--v64-surface);--studio-control-rest-bg:var(--v64-surface-container-high);--studio-control-active-bg:var(--v64-secondary-container);--studio-control-border:var(--v64-outline-variant);--studio-control-border-strong:var(--v64-outline);--studio-control-text:var(--v64-on-surface);--studio-control-muted-text:var(--v64-on-surface-variant);--studio-control-radius:var(--v64-shape-md)}.generated-ui-screen[data-v-e89d5214]{--generated-ui-screen-title-size:clamp(1.2rem, 1.7vw, 1.55rem);--generated-ui-screen-panel-padding:0}.studio-screen[data-v-e89d5214]{flex:auto;width:100%;max-width:none;height:100%;min-height:0;margin-inline:0;overflow:hidden}.studio-screen__panel[data-v-e89d5214]{padding:var(--generated-ui-screen-panel-padding)}.studio-screen__gate-scroll[data-v-e89d5214]{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate{flex-direction:column;flex:auto;min-height:0;display:flex}.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate .studio-ai-sessions{flex:auto;min-height:0}.studio-home-shell-heading[data-v-e89d5214]{align-items:center;gap:var(--studio-home-project-gap);overflow-clip-margin:4px;flex:auto;min-width:0;display:flex;overflow-x:clip}.studio-home-shell-title-area[data-v-e89d5214]{flex:0 1000 var(--studio-home-chat-column-width);align-items:center;gap:.42rem;min-width:0;padding-left:1rem;display:flex}.studio-home-shell-heading--chat-collapsed .studio-home-shell-title-area[data-v-e89d5214]{flex-basis:auto}@media (width>=981px){.studio-home-shell-heading:not(.studio-home-shell-heading--chat-collapsed) .studio-home-shell-title-area[data-v-e89d5214]{width:calc(var(--studio-home-chat-column-edge,var(--studio-home-chat-column-width)) - var(--studio-home-project-gap) - 2.7rem);flex:0 1000 auto}}.studio-home-shell-project-name[data-v-e89d5214]{flex:0 auto;min-width:0;display:flex}.studio-home-shell-project-selector[data-v-e89d5214]{border-radius:var(--v64-shape-full);font:var(--v64-type-title-md);letter-spacing:-.005em;min-width:0;max-width:100%;padding-inline:var(--v64-space-3) var(--v64-space-2);text-transform:none;flex:0 auto;justify-content:start;font-size:1.0625rem;color:var(--v64-on-surface)!important}.studio-home-shell-project-selector[data-v-e89d5214] .v-icon{color:var(--v64-on-surface-variant);margin-inline-start:var(--v64-space-1)}.studio-home-shell-project-selector[data-v-e89d5214] .v-btn__content{min-width:0}.studio-home-shell-project-selector span[data-v-e89d5214]{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.studio-home-shell-github-actor-host[data-v-e89d5214]{flex:auto;align-items:center;min-width:0;min-height:1.65rem;display:flex;overflow:hidden}.studio-home-shell-github-actor-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-local-remotes-host[data-v-e89d5214],.studio-home-shell-create-session-host[data-v-e89d5214]{flex:none;display:flex}.studio-home-shell-local-remotes-host[data-v-e89d5214]:empty,.studio-home-shell-create-session-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-project-controls[data-v-e89d5214]{flex:0 auto;align-items:center;gap:.45rem;min-width:0;display:flex}.studio-home-shell-chat-toggle[data-v-e89d5214]{border-radius:var(--v64-shape-full);box-shadow:none;min-width:2.25rem;height:2.25rem;min-height:2.25rem;transition:background-color var(--v64-duration-short) var(--v64-ease-standard);border:0;flex:none;width:2.25rem;background:var(--v64-surface-container-high)!important;color:var(--v64-on-surface-variant)!important}.studio-home-shell-chat-toggle[data-v-e89d5214]:hover{background:color-mix(in srgb, var(--v64-on-surface) 8%, var(--v64-surface-container-high))!important}.studio-home-shell-lesson-toggle[data-v-e89d5214]{border-inline-start:1px solid var(--v64-outline-variant);flex:none;align-items:center;padding-inline-start:var(--studio-home-project-gap);display:inline-flex}.studio-home-shell-project-tabs[data-v-e89d5214]{border:1px solid var(--v64-outline);border-radius:var(--v64-shape-full);flex:none;grid-auto-columns:minmax(5.25rem,1fr);grid-auto-flow:column;min-width:0;display:inline-grid;overflow:hidden}.studio-home-shell-project-tab[data-v-e89d5214]{border:0;border-inline-start:1px solid var(--v64-outline);color:var(--v64-on-surface);cursor:pointer;font:var(--v64-type-label-lg);align-items:center;gap:var(--v64-space-1);letter-spacing:.01em;min-width:0;height:2.25rem;padding:0 var(--v64-space-3);transition:background-color var(--v64-duration-short) var(--v64-ease-standard), color var(--v64-duration-short) var(--v64-ease-standard);white-space:nowrap;background:0 0;justify-content:center;display:inline-flex;position:relative}.studio-home-shell-project-tab[data-v-e89d5214]:first-child{border-inline-start:0}.studio-home-shell-project-tab[data-v-e89d5214]:after{content:"";opacity:0;pointer-events:none;transition:opacity var(--v64-duration-short) var(--v64-ease-standard);background:currentColor;position:absolute;inset:0}.studio-home-shell-project-tab[data-v-e89d5214]:hover:not(:disabled):after{opacity:var(--v64-state-hover)}.studio-home-shell-project-tab[data-v-e89d5214]:active:not(:disabled):after{opacity:var(--v64-state-pressed)}.studio-home-shell-project-tab[data-v-e89d5214]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:-4px}.studio-home-shell-project-tab--active[data-v-e89d5214]{background:var(--v64-secondary-container);color:var(--v64-on-secondary-container);font-weight:600}.studio-home-shell-project-tab--active[data-v-e89d5214]:before{animation:studio-home-shell-check-in-e89d5214 var(--v64-duration-medium) var(--v64-ease-emphasized-decelerate);content:"";height:1.125rem;-webkit-mask:var(--studio-home-shell-check) center / contain no-repeat;-webkit-mask:var(--studio-home-shell-check) center / contain no-repeat;mask:var(--studio-home-shell-check) center / contain no-repeat;background:currentColor;flex:none;width:1.125rem}.studio-home-shell-project-tabs[data-v-e89d5214]{--studio-home-shell-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E")}.studio-home-shell-project-tab[data-v-e89d5214]:disabled{color:color-mix(in srgb, var(--v64-on-surface) 38%, transparent);cursor:not-allowed}@keyframes studio-home-shell-check-in-e89d5214{0%{opacity:0;width:0}to{opacity:1;width:1.125rem}}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{flex:auto;justify-content:flex-start;align-items:center;min-width:0;max-width:min(43rem,54vw);display:flex}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]:empty{display:none}.studio-home-shell-project-mobile-action[data-v-e89d5214]{background:var(--v64-secondary-container);border-radius:var(--v64-shape-full);color:var(--v64-on-secondary-container);cursor:pointer;font:var(--v64-type-label-lg);align-items:center;gap:var(--v64-space-1);letter-spacing:.01em;min-width:4.5rem;min-height:2.5rem;padding:0 var(--v64-space-2) 0 var(--v64-space-4);transition:background-color var(--v64-duration-short) var(--v64-ease-standard);white-space:nowrap;border:0;flex:none;justify-content:center;display:none;position:relative}.studio-home-shell-project-mobile-action__icon[data-v-e89d5214]{display:none!important}.studio-home-shell-project-mobile-action[data-v-e89d5214]:hover{background:color-mix(in srgb, var(--v64-on-secondary-container) 8%, var(--v64-secondary-container))}.studio-home-shell-project-mobile-action[data-v-e89d5214]:focus-visible{outline:var(--v64-focus-ring-width) solid var(--v64-focus-ring-color);outline-offset:var(--v64-focus-ring-offset)}@media (prefers-reduced-motion:reduce){.studio-home-shell-project-tab--active[data-v-e89d5214]:before{animation:none}}@media (width>=981px){.studio-screen__gate-scroll[data-v-e89d5214] .project-selection-gate .studio-ai-sessions--autopilot{padding:0}}@media (width<=980px){.studio-home-shell-heading[data-v-e89d5214]{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;width:100%;display:grid}.studio-home-shell-project-controls[data-v-e89d5214]{justify-content:flex-end;min-width:0;margin-left:auto;display:flex}.studio-home-shell-project-tabs--desktop[data-v-e89d5214]{display:none}.studio-home-shell-project-mobile-action[data-v-e89d5214]{display:inline-flex}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{flex:0 auto;max-width:min(26rem,42vw)}.studio-home-shell-project-mobile-action[data-v-e89d5214]{order:1}.studio-home-shell-lesson-toggle[data-v-e89d5214]{order:2}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{order:3}}@media (width<=600px){.studio-home-shell-heading[data-v-e89d5214]{gap:var(--v64-space-1);flex:auto;width:100%;min-width:0;padding-left:0;display:flex}.studio-home-shell-project-controls[data-v-e89d5214]{flex:none;gap:.28rem}.studio-home-shell-preview-toolbar-host[data-v-e89d5214]{max-width:min(12rem,32vw)}.studio-home-shell-project-mobile-action[data-v-e89d5214]{min-width:4rem;padding-inline:var(--v64-space-3) var(--v64-space-1)}.studio-home-shell-lesson-toggle[data-v-e89d5214]{padding-inline-start:var(--v64-space-1)}.studio-home-shell-lesson-toggle[data-v-e89d5214] .vibe64-lesson-toggle__label{display:none}.studio-home-shell-title-area[data-v-e89d5214]{flex:auto;padding-left:0}.studio-home-shell-project-name[data-v-e89d5214]{flex:auto;overflow:hidden;container-type:inline-size}.studio-home-shell-github-actor-host[data-v-e89d5214]{flex:none}.studio-home-shell-github-actor-host[data-v-e89d5214] .studio-home-shell-session-github-actor{padding:0}.studio-home-shell-github-actor-host[data-v-e89d5214] .studio-home-shell-session-github-actor span{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.studio-home-shell-heading--chat-collapsed .studio-home-shell-create-session-host[data-v-e89d5214],.studio-home-shell-heading--chat-collapsed .studio-home-shell-local-remotes-host[data-v-e89d5214],.studio-home-shell-heading--chat-collapsed .studio-home-shell-github-actor-host[data-v-e89d5214]{display:none}.studio-home-shell-project-selector[data-v-e89d5214]{flex:0 auto;min-width:2.25rem;max-width:100%;padding-inline:.375rem .125rem;font-size:.95rem}.studio-home-shell-project-selector[data-v-e89d5214] .v-icon{margin-inline-start:0}.studio-home-shell-local-remotes-host[data-v-e89d5214]{margin-inline-end:.375rem}.studio-home-shell-local-remotes-host[data-v-e89d5214] .local-remotes__branch{width:2.5rem!important}.studio-home-shell-title-area[data-v-e89d5214]{gap:var(--v64-space-1)}.studio-home-shell-create-session-host[data-v-e89d5214] .studio-ai-sessions__create-button,.studio-home-shell-chat-toggle[data-v-e89d5214]{width:2.5rem;min-width:2.5rem;height:2.5rem;min-height:2.5rem}.studio-home-shell-project-controls[data-v-e89d5214]{gap:.3rem}.studio-screen[data-v-e89d5214]{max-width:100%}}@container (width<=4rem){.studio-home-shell-project-selector[data-v-e89d5214]{visibility:hidden}}@media (width<=480px){.studio-home-shell-project-mobile-action[data-v-e89d5214]{width:2.5rem;min-width:2.5rem;padding:0}.studio-home-shell-project-mobile-action__icon[data-v-e89d5214]{display:inline-flex!important}.studio-home-shell-project-mobile-action__label[data-v-e89d5214],.studio-home-shell-project-mobile-action__chevron[data-v-e89d5214]{display:none!important}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,_ as createBaseVNode,b as createElementBlock,bt as renderList,g as computed,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{T as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-DBRQISI_.js";import{t as VSelect}from"./VSelect-Dqnp_CFi.js";import{t as VChip}from"./VChip-Uixfx461.js";import{t as VTextField}from"./VTextField-CnkGeXaT.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VAlert}from"./VAlert-7_VM9EUm.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-Epd2yHhQ.js";import{E as previewIdentitiesQueryKey,b as VIBE64_PROJECT_CHANGED_EVENT,s as PREVIEW_IDENTITIES_ENDPOINT,y as VIBE64_PREVIEW_IDENTITIES_API_SUFFIX}from"./studioGateApi-BVdclhPL.js";import{n as useVibe64ProjectSlug}from"./useVibe64ProjectScope-D7b8n1gx.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-CPEGxBWZ.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-CDaX4uwY.js";var PREVIEW_IDENTITY_SELECTOR_EMAIL=`email`;var PREVIEW_IDENTITY_SELECTOR_LOGIN=`login`;var PREVIEW_IDENTITY_SELECTOR_USER_ID=`user-id`;var PREVIEW_IDENTITY_SELECTOR_TYPES=Object.freeze([PREVIEW_IDENTITY_SELECTOR_EMAIL,PREVIEW_IDENTITY_SELECTOR_LOGIN,PREVIEW_IDENTITY_SELECTOR_USER_ID]);var _hoisted_1$1={class:`preview-identity-settings`};var _hoisted_2={class:`preview-identity-settings__header`};var _hoisted_3={class:`preview-identity-settings__header-actions`};var _hoisted_4={key:1,class:`preview-identity-settings__section`};var _hoisted_5={class:`preview-identity-settings__list`};var _hoisted_6={class:`preview-identity-settings__fields`};var _hoisted_7={class:`preview-identity-settings__identity-actions`};var _hoisted_8={key:1,class:`preview-identity-settings__empty`};var _sfc_main$1={__name:`PreviewIdentitySettings`,setup(__props){const identityTypeLabels=Object.freeze({[PREVIEW_IDENTITY_SELECTOR_EMAIL]:`Email`,[PREVIEW_IDENTITY_SELECTOR_LOGIN]:`Login name`,[PREVIEW_IDENTITY_SELECTOR_USER_ID]:`User ID`});const identityTypes=Object.freeze(PREVIEW_IDENTITY_SELECTOR_TYPES.map(value=>({label:identityTypeLabels[value],value})));const projectSlug=useVibe64ProjectSlug();const selectedSessionId=useVibe64SessionSelection({projectSlug}).selectedId;const identities=ref([]);const savedIdentities=ref([]);const resource=useEndpointResource({fallbackLoadError:`Managed app identities could not load.`,path:PREVIEW_IDENTITIES_ENDPOINT,queryKey:computed(()=>[...previewIdentitiesQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value),selectedSessionId.value||`baseline`]),readQuery:computed(()=>selectedSessionId.value?{sessionId:selectedSessionId.value}:{}),realtime:{event:VIBE64_PROJECT_CHANGED_EVENT},refreshOnPull:true,requestRecoveryLabel:`Managed app access`});const saveCommand=useCommand({access:`never`,apiSuffix:VIBE64_PREVIEW_IDENTITIES_API_SUFFIX,buildCommandOptions:()=>({method:`PUT`,path:PREVIEW_IDENTITIES_ENDPOINT}),buildRawPayload:(_model,{context})=>({identities:context.identities,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Managed app identities could not be saved.`,messages:{error:`Managed app identities could not be saved.`,success:`Managed app identities saved.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.preview-identities.save`,surfaceId:`app`,writeMethod:`PUT`});const loading=computed(()=>resource.isLoading.value===true);const loadError=computed(()=>String(resource.loadError.value||``));const saving=computed(()=>saveCommand.isRunning===true);const changed=computed(()=>JSON.stringify(identities.value)!==JSON.stringify(savedIdentities.value));const stale=ref(false);let draftSource=``;watch(()=>[resource.data.value?.identities,projectSlug.value,selectedSessionId.value||``],([value,slug,sessionId])=>{const source=JSON.stringify([slug,sessionId]);const dirty=changed.value;const previous=JSON.stringify(savedIdentities.value);savedIdentities.value=cloneIdentities(value);const saved=JSON.stringify(savedIdentities.value);if(source!==draftSource||!dirty)resetDraft();else if(saved!==previous)stale.value=saved!==JSON.stringify(identities.value);draftSource=source},{immediate:true});function resetDraft(){identities.value=cloneIdentities(savedIdentities.value);stale.value=false}function cloneIdentities(value=[]){return(Array.isArray(value)?value:[]).map(identity=>({name:String(identity?.name||``),type:String(identity?.type||``),value:String(identity?.value||``)}))}function identityPlaceholder(type=``){return{email:`admin@example.com`,login:`admin`,"user-id":`42`}[String(type||``)]||`Application identifier`}function addIdentity(){identities.value.push({name:``,type:`email`,value:``})}function removeIdentity(index=-1){identities.value.splice(index,1)}function makeDefault(index=-1){if(index<=0||index>=identities.value.length)return;identities.value.unshift(identities.value.splice(index,1)[0])}async function refresh(){await resource.reload()}async function save(){const saved=await saveCommand.run({identities:cloneIdentities(identities.value)});await resource.reload();if(saved!==null)resetDraft()}function reloadPage(){if(typeof window!==`undefined`)window.location.reload()}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$1,[createBaseVNode(`header`,_hoisted_2,[_cache[0]||(_cache[0]=createBaseVNode(`div`,null,[createBaseVNode(`h1`,{class:`text-headline-small font-weight-bold ma-0`},`Managed app access`),createBaseVNode(`p`,null,` Named existing application accounts for authenticated Preview and Playwright. The first identity is the default. `)],-1)),createBaseVNode(`div`,_hoisted_3,[createVNode(VBtn,{disabled:loading.value||saving.value,size:`small`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[createTextVNode(toDisplayString(loading.value?`Refreshing…`:`Refresh`),1)]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`primary`,disabled:!changed.value||stale.value||loading.value||saving.value,size:`small`,type:`button`,variant:`flat`,onClick:save},{default:withCtx(()=>[createTextVNode(toDisplayString(saving.value?`Saving…`:`Save`),1)]),_:1},8,[`disabled`])])]),loading.value||loadError.value?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Managed app access`,loading:loading.value,message:loadError.value||`Loading managed app identities.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):(openBlock(),createElementBlock(`section`,_hoisted_4,[_cache[7]||(_cache[7]=createBaseVNode(`div`,{class:`preview-identity-settings__section-copy`},[createBaseVNode(`h2`,null,`Managed app identities`),createBaseVNode(`p`,null,[createTextVNode(` Saved in `),createBaseVNode(`code`,null,`.vibe64/preview-identities.json`),createTextVNode(` in the active project source, so they follow the repository. These are application identifiers, not passwords or authentication secrets. `)])],-1)),createBaseVNode(`div`,_hoisted_5,[stale.value?(openBlock(),createBlock(VAlert,{key:0,type:`warning`,variant:`tonal`},{default:withCtx(()=>[_cache[2]||(_cache[2]=createTextVNode(` The saved identities changed while you were editing. Reload the saved identities and review your changes before saving. `,-1)),createVNode(VBtn,{variant:`text`,onClick:resetDraft},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(`Reload saved identities`,-1)])]),_:1})]),_:1})):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(identities.value,(identity,index)=>{return openBlock(),createElementBlock(`div`,{key:index,class:`preview-identity-settings__identity`},[createBaseVNode(`div`,_hoisted_6,[createVNode(VTextField,{modelValue:identity.name,"onUpdate:modelValue":$event=>identity.name=$event,autocomplete:`off`,density:`compact`,label:`Name`,placeholder:`admin`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`]),createVNode(VSelect,{modelValue:identity.type,"onUpdate:modelValue":$event=>identity.type=$event,density:`compact`,"item-title":`label`,"item-value":`value`,items:unref(identityTypes),label:`App identifier`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`,`items`]),createVNode(VTextField,{modelValue:identity.value,"onUpdate:modelValue":$event=>identity.value=$event,autocomplete:`off`,density:`compact`,label:`Application value`,placeholder:identityPlaceholder(identity.type),type:identity.type===`email`?`email`:`text`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`,`type`])]),createBaseVNode(`div`,_hoisted_7,[index===0?(openBlock(),createBlock(VChip,{key:0,color:`primary`,size:`small`,variant:`tonal`},{default:withCtx(()=>[..._cache[3]||(_cache[3]=[createTextVNode(` Default `,-1)])]),_:1})):(openBlock(),createBlock(VBtn,{key:1,size:`small`,type:`button`,variant:`text`,onClick:$event=>makeDefault(index)},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(` Make default `,-1)])]),_:1},8,[`onClick`])),createVNode(VBtn,{color:`error`,size:`small`,type:`button`,variant:`text`,onClick:$event=>removeIdentity(index)},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`onClick`])])])}),128)),identities.value.length===0?(openBlock(),createElementBlock(`p`,_hoisted_8,` No managed app identities are configured. Preview remains available as a guest when the application supports it. `)):createCommentVNode(``,true),createVNode(VBtn,{class:`preview-identity-settings__add`,size:`small`,type:`button`,variant:`outlined`,onClick:addIdentity},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Add identity `,-1)])]),_:1})])]))])}}};var PreviewIdentitySettings_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-996d90f3`]]);var _hoisted_1={class:`vibe64-dashboard-page`};var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(PreviewIdentitySettings_default)])}}};var access_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-207f989d`]]);export{access_default as default};
|
|
1
|
+
import{D as createVNode,E as createTextVNode,Ht as watch,On as unref,_ as createBaseVNode,b as createElementBlock,bt as renderList,g as computed,mt as openBlock,o as Fragment,qt as withCtx,tr as toDisplayString,v as createBlock,vn as ref,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{D as ROUTE_VISIBILITY_PUBLIC,t as useEndpointResource}from"./useEndpointResource-7-YDfAxX.js";import{t as VSelect}from"./VSelect-Dqnp_CFi.js";import{t as VChip}from"./VChip-Uixfx461.js";import{t as VTextField}from"./VTextField-CnkGeXaT.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VAlert}from"./VAlert-7_VM9EUm.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as useCommand}from"./useCommand-CVuya6vG.js";import{E as previewIdentitiesQueryKey,b as VIBE64_PROJECT_CHANGED_EVENT,s as PREVIEW_IDENTITIES_ENDPOINT,y as VIBE64_PREVIEW_IDENTITIES_API_SUFFIX}from"./studioGateApi-mkX1eOTX.js";import{n as useVibe64ProjectSlug}from"./useVibe64ProjectScope-DXjsKKhl.js";import{t as Vibe64AsyncModuleState_default}from"./Vibe64AsyncModuleState-CPEGxBWZ.js";import{n as useVibe64SessionSelection}from"./useVibe64SessionSelection-N8wX5oqo.js";var PREVIEW_IDENTITY_SELECTOR_EMAIL=`email`;var PREVIEW_IDENTITY_SELECTOR_LOGIN=`login`;var PREVIEW_IDENTITY_SELECTOR_USER_ID=`user-id`;var PREVIEW_IDENTITY_SELECTOR_TYPES=Object.freeze([PREVIEW_IDENTITY_SELECTOR_EMAIL,PREVIEW_IDENTITY_SELECTOR_LOGIN,PREVIEW_IDENTITY_SELECTOR_USER_ID]);var _hoisted_1$1={class:`preview-identity-settings`};var _hoisted_2={class:`preview-identity-settings__header`};var _hoisted_3={class:`preview-identity-settings__header-actions`};var _hoisted_4={key:1,class:`preview-identity-settings__section`};var _hoisted_5={class:`preview-identity-settings__list`};var _hoisted_6={class:`preview-identity-settings__fields`};var _hoisted_7={class:`preview-identity-settings__identity-actions`};var _hoisted_8={key:1,class:`preview-identity-settings__empty`};var _sfc_main$1={__name:`PreviewIdentitySettings`,setup(__props){const identityTypeLabels=Object.freeze({[PREVIEW_IDENTITY_SELECTOR_EMAIL]:`Email`,[PREVIEW_IDENTITY_SELECTOR_LOGIN]:`Login name`,[PREVIEW_IDENTITY_SELECTOR_USER_ID]:`User ID`});const identityTypes=Object.freeze(PREVIEW_IDENTITY_SELECTOR_TYPES.map(value=>({label:identityTypeLabels[value],value})));const projectSlug=useVibe64ProjectSlug();const selectedSessionId=useVibe64SessionSelection({projectSlug}).selectedId;const identities=ref([]);const savedIdentities=ref([]);const resource=useEndpointResource({fallbackLoadError:`Managed app identities could not load.`,path:PREVIEW_IDENTITIES_ENDPOINT,queryKey:computed(()=>[...previewIdentitiesQueryKey(`app`,ROUTE_VISIBILITY_PUBLIC,projectSlug.value),selectedSessionId.value||`baseline`]),readQuery:computed(()=>selectedSessionId.value?{sessionId:selectedSessionId.value}:{}),realtime:{event:VIBE64_PROJECT_CHANGED_EVENT},refreshOnPull:true,requestRecoveryLabel:`Managed app access`});const saveCommand=useCommand({access:`never`,apiSuffix:VIBE64_PREVIEW_IDENTITIES_API_SUFFIX,buildCommandOptions:()=>({method:`PUT`,path:PREVIEW_IDENTITIES_ENDPOINT}),buildRawPayload:(_model,{context})=>({identities:context.identities,...selectedSessionId.value?{sessionId:selectedSessionId.value}:{}}),fallbackRunError:`Managed app identities could not be saved.`,messages:{error:`Managed app identities could not be saved.`,success:`Managed app identities saved.`},ownershipFilter:ROUTE_VISIBILITY_PUBLIC,placementSource:`vibe64.preview-identities.save`,surfaceId:`app`,writeMethod:`PUT`});const loading=computed(()=>resource.isLoading.value===true);const loadError=computed(()=>String(resource.loadError.value||``));const saving=computed(()=>saveCommand.isRunning===true);const changed=computed(()=>JSON.stringify(identities.value)!==JSON.stringify(savedIdentities.value));const stale=ref(false);let draftSource=``;watch(()=>[resource.data.value?.identities,projectSlug.value,selectedSessionId.value||``],([value,slug,sessionId])=>{const source=JSON.stringify([slug,sessionId]);const dirty=changed.value;const previous=JSON.stringify(savedIdentities.value);savedIdentities.value=cloneIdentities(value);const saved=JSON.stringify(savedIdentities.value);if(source!==draftSource||!dirty)resetDraft();else if(saved!==previous)stale.value=saved!==JSON.stringify(identities.value);draftSource=source},{immediate:true});function resetDraft(){identities.value=cloneIdentities(savedIdentities.value);stale.value=false}function cloneIdentities(value=[]){return(Array.isArray(value)?value:[]).map(identity=>({name:String(identity?.name||``),type:String(identity?.type||``),value:String(identity?.value||``)}))}function identityPlaceholder(type=``){return{email:`admin@example.com`,login:`admin`,"user-id":`42`}[String(type||``)]||`Application identifier`}function addIdentity(){identities.value.push({name:``,type:`email`,value:``})}function removeIdentity(index=-1){identities.value.splice(index,1)}function makeDefault(index=-1){if(index<=0||index>=identities.value.length)return;identities.value.unshift(identities.value.splice(index,1)[0])}async function refresh(){await resource.reload()}async function save(){const saved=await saveCommand.run({identities:cloneIdentities(identities.value)});await resource.reload();if(saved!==null)resetDraft()}function reloadPage(){if(typeof window!==`undefined`)window.location.reload()}return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1$1,[createBaseVNode(`header`,_hoisted_2,[_cache[0]||(_cache[0]=createBaseVNode(`div`,null,[createBaseVNode(`h1`,{class:`text-headline-small font-weight-bold ma-0`},`Managed app access`),createBaseVNode(`p`,null,` Named existing application accounts for authenticated Preview and Playwright. The first identity is the default. `)],-1)),createBaseVNode(`div`,_hoisted_3,[createVNode(VBtn,{disabled:loading.value||saving.value,size:`small`,type:`button`,variant:`tonal`,onClick:refresh},{default:withCtx(()=>[createTextVNode(toDisplayString(loading.value?`Refreshing…`:`Refresh`),1)]),_:1},8,[`disabled`]),createVNode(VBtn,{color:`primary`,disabled:!changed.value||stale.value||loading.value||saving.value,size:`small`,type:`button`,variant:`flat`,onClick:save},{default:withCtx(()=>[createTextVNode(toDisplayString(saving.value?`Saving…`:`Save`),1)]),_:1},8,[`disabled`])])]),loading.value||loadError.value?(openBlock(),createBlock(Vibe64AsyncModuleState_default,{key:0,label:`Managed app access`,loading:loading.value,message:loadError.value||`Loading managed app identities.`,"min-height":`12rem`,onReload:reloadPage,onRetry:refresh},null,8,[`loading`,`message`])):(openBlock(),createElementBlock(`section`,_hoisted_4,[_cache[7]||(_cache[7]=createBaseVNode(`div`,{class:`preview-identity-settings__section-copy`},[createBaseVNode(`h2`,null,`Managed app identities`),createBaseVNode(`p`,null,[createTextVNode(` Saved in `),createBaseVNode(`code`,null,`.vibe64/preview-identities.json`),createTextVNode(` in the active project source, so they follow the repository. These are application identifiers, not passwords or authentication secrets. `)])],-1)),createBaseVNode(`div`,_hoisted_5,[stale.value?(openBlock(),createBlock(VAlert,{key:0,type:`warning`,variant:`tonal`},{default:withCtx(()=>[_cache[2]||(_cache[2]=createTextVNode(` The saved identities changed while you were editing. Reload the saved identities and review your changes before saving. `,-1)),createVNode(VBtn,{variant:`text`,onClick:resetDraft},{default:withCtx(()=>[..._cache[1]||(_cache[1]=[createTextVNode(`Reload saved identities`,-1)])]),_:1})]),_:1})):createCommentVNode(``,true),(openBlock(true),createElementBlock(Fragment,null,renderList(identities.value,(identity,index)=>{return openBlock(),createElementBlock(`div`,{key:index,class:`preview-identity-settings__identity`},[createBaseVNode(`div`,_hoisted_6,[createVNode(VTextField,{modelValue:identity.name,"onUpdate:modelValue":$event=>identity.name=$event,autocomplete:`off`,density:`compact`,label:`Name`,placeholder:`admin`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`]),createVNode(VSelect,{modelValue:identity.type,"onUpdate:modelValue":$event=>identity.type=$event,density:`compact`,"item-title":`label`,"item-value":`value`,items:unref(identityTypes),label:`App identifier`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`,`items`]),createVNode(VTextField,{modelValue:identity.value,"onUpdate:modelValue":$event=>identity.value=$event,autocomplete:`off`,density:`compact`,label:`Application value`,placeholder:identityPlaceholder(identity.type),type:identity.type===`email`?`email`:`text`,variant:`outlined`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`,`type`])]),createBaseVNode(`div`,_hoisted_7,[index===0?(openBlock(),createBlock(VChip,{key:0,color:`primary`,size:`small`,variant:`tonal`},{default:withCtx(()=>[..._cache[3]||(_cache[3]=[createTextVNode(` Default `,-1)])]),_:1})):(openBlock(),createBlock(VBtn,{key:1,size:`small`,type:`button`,variant:`text`,onClick:$event=>makeDefault(index)},{default:withCtx(()=>[..._cache[4]||(_cache[4]=[createTextVNode(` Make default `,-1)])]),_:1},8,[`onClick`])),createVNode(VBtn,{color:`error`,size:`small`,type:`button`,variant:`text`,onClick:$event=>removeIdentity(index)},{default:withCtx(()=>[..._cache[5]||(_cache[5]=[createTextVNode(` Remove `,-1)])]),_:1},8,[`onClick`])])])}),128)),identities.value.length===0?(openBlock(),createElementBlock(`p`,_hoisted_8,` No managed app identities are configured. Preview remains available as a guest when the application supports it. `)):createCommentVNode(``,true),createVNode(VBtn,{class:`preview-identity-settings__add`,size:`small`,type:`button`,variant:`outlined`,onClick:addIdentity},{default:withCtx(()=>[..._cache[6]||(_cache[6]=[createTextVNode(` Add identity `,-1)])]),_:1})])]))])}}};var PreviewIdentitySettings_default=_plugin_vue_export_helper_default(_sfc_main$1,[[`__scopeId`,`data-v-996d90f3`]]);var _hoisted_1={class:`vibe64-dashboard-page`};var _sfc_main={__name:`index`,setup(__props){return(_ctx,_cache)=>{return openBlock(),createElementBlock(`section`,_hoisted_1,[createVNode(PreviewIdentitySettings_default)])}}};var access_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-207f989d`]]);export{access_default as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as createVNode,E as createTextVNode,Ht as watch,_ as createBaseVNode,mt as openBlock,qt as withCtx,v as createBlock,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{_ as useRouter}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-pc4bBTxv.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as StudioErrorNotice_default}from"./StudioErrorNotice-DudSuU3G.js";import{
|
|
1
|
+
import{D as createVNode,E as createTextVNode,Ht as watch,_ as createBaseVNode,mt as openBlock,qt as withCtx,v as createBlock,vn as ref}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{_ as useRouter}from"./useApi-BPuI6ZR9-CFWU1m37.js";import{t as VBtn}from"./VBtn-Sj5jAuOx.js";import{t as VSkeletonLoader}from"./VSkeletonLoader-pc4bBTxv.js";import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper-DNW4j-dv.js";import{t as StudioErrorNotice_default}from"./StudioErrorNotice-DudSuU3G.js";import{x as useVibe64Learning}from"./index-CGz4Yow6.js";import{n as StudioAppShellLayout_default,t as Vibe64AuthSettingsButton_default}from"./Vibe64AuthSettingsButton-BCwswT1G.js";import{t as route_block_default}from"./route-block-DbL-SuOj.js";var _hoisted_1={class:`vibe64-app-resolver`};var _sfc_main={__name:`index`,setup(__props){const router=useRouter();const learning=useVibe64Learning();const error=ref(``);let resolving=false;async function startedProjectPath(){const response=await globalThis.fetch(`/app`,{method:`HEAD`,credentials:`same-origin`});const path=new URL(response.url).pathname.replace(/\/+$/u,``);return path.startsWith(`/app/project/`)?path:``}async function resolve(){if(resolving)return;resolving=true;error.value=``;try{if(learning?.learnMode){await router.replace(learning.modePlace());return}const path=await startedProjectPath();if(!path)throw new Error(`This Vibe64 has no started project. Start Vibe64 in a project folder.`);await router.replace(path)}catch(cause){error.value=String(cause?.message||`Your project could not be opened. Try again.`)}finally{resolving=false}}watch(()=>!learning||learning.state.modeRead,ready=>{if(ready)resolve()},{immediate:true});return(_ctx,_cache)=>{return openBlock(),createBlock(StudioAppShellLayout_default,null,{"top-right":withCtx(()=>[createVNode(Vibe64AuthSettingsButton_default)]),default:withCtx(()=>[createBaseVNode(`section`,_hoisted_1,[error.value?(openBlock(),createBlock(StudioErrorNotice_default,{key:0,title:`Project could not open`,error:error.value,compact:``},{actions:withCtx(()=>[createVNode(VBtn,{color:`primary`,variant:`flat`,"min-height":`48`,onClick:resolve},{default:withCtx(()=>[..._cache[0]||(_cache[0]=[createTextVNode(`Try again`,-1)])]),_:1})]),_:1},8,[`error`])):(openBlock(),createBlock(VSkeletonLoader,{key:1,type:`article`,"aria-label":`Opening your project`}))])]),_:1})}}};if(typeof route_block_default===`function`)route_block_default(_sfc_main);var app_default=_plugin_vue_export_helper_default(_sfc_main,[[`__scopeId`,`data-v-4452bfe4`]]);export{app_default as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as isRecord}from"./normalize-BNAdWJYg.js";var DYNAMIC_IMPORT_ERROR_PATTERNS=Object.freeze([/ChunkLoadError/iu,/Failed to fetch dynamically imported module/iu,/Importing a module script failed/iu,/error loading dynamically imported module/iu,/Loading chunk .+ failed/iu,/Unable to preload CSS/iu]);function errorText(error=null){return String(error?.message||error||``).trim()}function isDynamicImportError(error=null){const text=errorText(error);return Boolean(text&&DYNAMIC_IMPORT_ERROR_PATTERNS.some(pattern=>pattern.test(text)))}var RELOAD_UNAVAILABLE=Object.freeze({message:`The app cannot reload because the app server is not reachable. Restart the server, then click Retry or Reload.`,messageCode:`kernel.moduleLoad.reloadUnavailable`});var BUILT_IN_LABEL_MESSAGE_CODES=Object.freeze({"App module":Object.freeze({stale:{messageCode:`kernel.moduleLoad.appModuleNotDownloaded`},failed:{messageCode:`kernel.moduleLoad.appModuleFailed`}}),Page:Object.freeze({stale:{messageCode:`kernel.moduleLoad.pageNotDownloaded`},failed:{messageCode:`kernel.moduleLoad.pageFailed`}})});function dynamicImportErrorMessage(error=null,{label=`App module`,stale=isDynamicImportError(error)}={}){const moduleLabel=String(label||`App module`).trim();if(stale)return`${moduleLabel} did not download. The app may have been updated, or the network request failed.`;return`${moduleLabel} could not load.`}function dynamicImportErrorMessageCode(label,stale){const builtIn=Object.hasOwn(BUILT_IN_LABEL_MESSAGE_CODES,label)?BUILT_IN_LABEL_MESSAGE_CODES[label]:null;if(builtIn)return{...stale?builtIn.stale:builtIn.failed,messageParams:{}};return stale?{messageCode:`kernel.moduleLoad.notDownloaded`,messageParams:{label}}:{messageCode:`kernel.moduleLoad.failed`,messageParams:{label}}}function createAsyncModuleRecoveryState({label=`App module`,message=``,retry=null}={}){return{attempt:0,error:null,label:String(label||`App module`).trim(),message:String(message||``).trim(),messageCode:``,messageParams:{},retry:typeof retry===`function`?retry:null,stale:false,visible:false}}function notifyAsyncModuleLoadError(state,error=null,{label=`App module`,message=``,messageCode=``,messageParams={},retry=null,stale=isDynamicImportError(error)}={}){if(!isRecord(state))throw new TypeError(`notifyAsyncModuleLoadError requires a mutable recovery state object.`);const normalizedLabel=String(label||`App module`).trim();const callerMessage=String(message||``).trim();const coded=callerMessage?{messageCode:String(messageCode||``).trim(),messageParams:isRecord(messageParams)?messageParams:{}}:dynamicImportErrorMessageCode(normalizedLabel,Boolean(stale));state.attempt=Number(state.attempt||0)+1;state.error=error||null;state.label=normalizedLabel;state.message=callerMessage||dynamicImportErrorMessage(error,{label:normalizedLabel,stale});state.messageCode=coded.messageCode;state.messageParams=coded.messageParams;state.retry=typeof retry===`function`?retry:null;state.stale=Boolean(stale);state.visible=true;return state}async function guardedReloadApp({browserWindow=typeof window!==`undefined`?window:null,fetchFn=typeof fetch===`function`?fetch:null,state=null,label=`App`,message=RELOAD_UNAVAILABLE.message,messageCode=message===RELOAD_UNAVAILABLE.message?RELOAD_UNAVAILABLE.messageCode:``,messageParams={}}={}){if(!browserWindow?.location)return false;if(typeof fetchFn!==`function`){browserWindow.location.reload();return true}try{const response=await fetchFn(String(browserWindow.location.href||`/`),{cache:`no-store`,credentials:`same-origin`,headers:{Accept:`text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`},method:`GET`});if(!response?.ok)throw new Error(`Reload check failed with HTTP ${response?.status||0}.`);browserWindow.location.reload();return true}catch(error){if(state)notifyAsyncModuleLoadError(state,error,{label,message,messageCode,messageParams,retry:state.retry,stale:false});return false}}function installAsyncModuleRecoveryHandlers({router=null,state,label=`App module`,onNotify=null,windowObject=typeof window!==`undefined`?window:null}={}){if(!isRecord(state))throw new TypeError(`installAsyncModuleRecoveryHandlers requires a mutable recovery state object.`);const disposers=[];const notify=typeof onNotify===`function`?onNotify:()=>null;if(router&&typeof router.onError===`function`){const removeRouterHandler=router.onError((error,to={})=>{if(!isDynamicImportError(error))return;const fullPath=String(to?.fullPath||``);notifyAsyncModuleLoadError(state,error,{label:`Page`,retry:fullPath&&typeof router.replace===`function`?()=>router.replace(fullPath):null,stale:true});notify(state)});if(typeof removeRouterHandler===`function`)disposers.push(removeRouterHandler)}if(windowObject&&typeof windowObject.addEventListener===`function`){const handler=event=>{const error=event?.reason;if(!isDynamicImportError(error))return;notifyAsyncModuleLoadError(state,error,{label,stale:true});notify(state)};windowObject.addEventListener(`unhandledrejection`,handler);disposers.push(()=>{windowObject.removeEventListener?.(`unhandledrejection`,handler)})}return Object.freeze({dispose(){for(const dispose of disposers.splice(0))dispose()}})}export{isDynamicImportError as a,installAsyncModuleRecoveryHandlers as i,dynamicImportErrorMessage as n,notifyAsyncModuleLoadError as o,guardedReloadApp as r,createAsyncModuleRecoveryState as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{mt as openBlock,v as createBlock,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{t as Vibe64RepositoryWorkspace_default}from"./Vibe64RepositoryWorkspace-
|
|
1
|
+
import{mt as openBlock,v as createBlock,y as createCommentVNode}from"./runtime-core.esm-bundler-DGXg_mpN.js";import{t as Vibe64RepositoryWorkspace_default}from"./Vibe64RepositoryWorkspace-C-8S4JUF.js";var _sfc_main={__name:`index`,props:{dashboardContext:{default:()=>({}),type:Object}},setup(__props){return(_ctx,_cache)=>{return __props.dashboardContext.active!==false?(openBlock(),createBlock(Vibe64RepositoryWorkspace_default,{key:0,"dashboard-context":__props.dashboardContext,view:`changes`},null,8,[`dashboard-context`])):createCommentVNode(``,true)}}};export{_sfc_main as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{E as AUTH_POLICY_PUBLIC,T as AUTH_POLICY_AUTHENTICATED,k as setJskitI18n}from"./useEndpointResource-7-YDfAxX.js";import{i as createSurfaceRegistry,n as createSurfacePathHelpers,o as normalizeSurfaceId}from"./returnToPath-gKtcu91D.js";import{a as normalizeBoolean,c as normalizeLowerText,f as normalizeText,l as normalizeObject,m as normalizeUniqueTextList,n as hasValue,r as isRecord,u as normalizePositiveInteger}from"./normalize-BNAdWJYg.js";import{t as isExternalLinkTarget}from"./linkPath-Ch9eft18.js";import"./asyncModuleRecovery-DJsn5NrL.js";var MOBILE_ASSET_MODES=Object.freeze([`bundled`,`dev_server`]);var MOBILE_STRATEGIES=Object.freeze([`capacitor`]);var DEFAULT_MOBILE_AUTH_CONFIG=Object.freeze({callbackPath:`/auth/login`,customScheme:``,appLinkDomains:Object.freeze([])});var DEFAULT_MOBILE_ANDROID_CONFIG=Object.freeze({packageName:``,minSdk:26,targetSdk:35,versionCode:1,versionName:`1.0.0`});function normalizeMobileStrategy(value=``,{fallback=``}={}){const normalized=normalizeLowerText(value);return MOBILE_STRATEGIES.includes(normalized)?normalized:normalizeLowerText(fallback)}function normalizeMobileAssetMode(value=``,{fallback=`bundled`}={}){const normalized=normalizeLowerText(value);if(!normalized)return normalizeLowerText(fallback,{fallback:`bundled`});if(!MOBILE_ASSET_MODES.includes(normalized))throw new TypeError(`config.mobile.assetMode must be "bundled" or "dev_server".`);return normalized}function normalizeMobileCallbackPath(value=``,{fallback=`/auth/login`}={}){const normalized=normalizeText(value,{fallback});if(!normalized)return``;return normalized.startsWith(`/`)?normalized:`/${normalized}`}function normalizeMobileConfig(source={}){const mobile=normalizeObject(source);const auth=normalizeObject(mobile.auth);const android=normalizeObject(mobile.android);return Object.freeze({enabled:hasValue(mobile.enabled)?normalizeBoolean(mobile.enabled):false,strategy:normalizeMobileStrategy(mobile.strategy),appId:normalizeText(mobile.appId),appName:normalizeText(mobile.appName),assetMode:normalizeMobileAssetMode(mobile.assetMode),devServerUrl:normalizeText(mobile.devServerUrl),apiBaseUrl:normalizeText(mobile.apiBaseUrl),auth:Object.freeze({callbackPath:normalizeMobileCallbackPath(auth.callbackPath,{fallback:DEFAULT_MOBILE_AUTH_CONFIG.callbackPath}),customScheme:normalizeLowerText(auth.customScheme),appLinkDomains:Object.freeze([...new Set(normalizeUniqueTextList(auth.appLinkDomains,{acceptSingle:true}).map(entry=>normalizeLowerText(entry)))])}),android:Object.freeze({packageName:normalizeText(android.packageName),minSdk:normalizePositiveInteger(android.minSdk,{fallback:DEFAULT_MOBILE_ANDROID_CONFIG.minSdk}),targetSdk:normalizePositiveInteger(android.targetSdk,{fallback:DEFAULT_MOBILE_ANDROID_CONFIG.targetSdk}),versionCode:normalizePositiveInteger(android.versionCode,{fallback:DEFAULT_MOBILE_ANDROID_CONFIG.versionCode}),versionName:normalizeText(android.versionName,{fallback:DEFAULT_MOBILE_ANDROID_CONFIG.versionName})})})}var CLIENT_APP_CONFIG_GLOBAL_KEY=`__JSKIT_CLIENT_APP_CONFIG__`;var EMPTY_CLIENT_APP_CONFIG=Object.freeze({});function normalizeClientAppConfig(source={}){if(!isRecord(source))return EMPTY_CLIENT_APP_CONFIG;return Object.freeze({...source})}function setClientAppConfig(source={}){const appConfig=normalizeClientAppConfig(source);if(typeof globalThis===`object`&&globalThis)globalThis[CLIENT_APP_CONFIG_GLOBAL_KEY]=appConfig;return appConfig}function getClientAppConfig(){if(typeof globalThis!==`object`||!globalThis)return EMPTY_CLIENT_APP_CONFIG;const appConfig=globalThis[CLIENT_APP_CONFIG_GLOBAL_KEY];return isRecord(appConfig)?appConfig:EMPTY_CLIENT_APP_CONFIG}function resolveMobileConfig(appConfig=getClientAppConfig()){return normalizeMobileConfig(isRecord(appConfig)?appConfig.mobile:{})}function normalizeRoutePath(pathLike=``){const rawPath=String(pathLike||``).trim();if(!rawPath||rawPath===`/`)return`/`;return(rawPath.startsWith(`/`)?rawPath:`/${rawPath}`).replace(/\/{2,}/g,`/`).replace(/\/+$/,``)||`/`}function resolveAbsoluteRoutePath(parentAbsolutePath=`/`,routePath=``){const normalizedParentPath=normalizeRoutePath(parentAbsolutePath);const rawRoutePath=String(routePath||``).trim();if(!rawRoutePath)return normalizedParentPath;if(rawRoutePath.startsWith(`/`))return normalizeRoutePath(rawRoutePath);if(normalizedParentPath===`/`)return normalizeRoutePath(`/${rawRoutePath}`);return normalizeRoutePath(`${normalizedParentPath}/${rawRoutePath}`)}function readRouteJskitMeta(route){if(!isRecord(route)||!isRecord(route.meta)||!isRecord(route.meta.jskit))return{};return route.meta.jskit}function resolveRouteExplicitSurface(route){const metaSurface=readRouteJskitMeta(route).surface;return normalizeSurfaceId(route?.surface||metaSurface)}function resolveOwnRouteScope(route){const metaScope=readRouteJskitMeta(route).scope;const normalizedScope=String(route?.scope||metaScope||``).trim().toLowerCase();if(!normalizedScope)return``;return normalizedScope===`global`?`global`:`surface`}function resolveRouteSurface(route,inheritedSurfaceId=``,{surfaceRuntime,absolutePath=`/`}={}){const explicitSurface=resolveRouteExplicitSurface(route);if(explicitSurface)return explicitSurface;const normalizedInheritedSurface=normalizeSurfaceId(inheritedSurfaceId);if(normalizedInheritedSurface)return normalizedInheritedSurface;return surfaceRuntime.resolveSurfaceFromPathname(absolutePath)}function normalizeRoutesBySurfaceBoundaries(routeList=[],{surfaceRuntime}={}){const normalizedRoutes=Array.isArray(routeList)?routeList:[];const hoistedRoutes=[];function cloneRouteWithChildren(route,children){const nextRoute={...route};if(children.length>0)nextRoute.children=children;else if(Object.prototype.hasOwnProperty.call(nextRoute,`children`))delete nextRoute.children;return nextRoute}function cloneRouteAsHoisted(route,absolutePath,children){const nextRoute=cloneRouteWithChildren(route,children);nextRoute.path=absolutePath;return nextRoute}function visitRoute(route,parentSurfaceId=``,parentAbsolutePath=`/`){if(!isRecord(route))return null;const absolutePath=resolveAbsoluteRoutePath(parentAbsolutePath,route.path);const explicitSurface=resolveRouteExplicitSurface(route);const normalizedParentSurfaceId=normalizeSurfaceId(parentSurfaceId);const resolvedSurface=resolveRouteSurface(route,normalizedParentSurfaceId,{surfaceRuntime,absolutePath});const surfaceBoundary=Boolean(explicitSurface)&&Boolean(normalizedParentSurfaceId)&&explicitSurface!==normalizedParentSurfaceId;const children=Array.isArray(route.children)?route.children:[];const filteredChildren=[];for(const child of children){const normalizedChild=visitRoute(child,resolvedSurface,absolutePath);if(normalizedChild)filteredChildren.push(normalizedChild)}const routeWithChildren=children.length!==filteredChildren.length||filteredChildren.some((child,index)=>child!==children[index])?cloneRouteWithChildren(route,filteredChildren):route;if(!surfaceBoundary)return routeWithChildren;hoistedRoutes.push(cloneRouteAsHoisted(routeWithChildren,absolutePath,filteredChildren));return null}const keptRoutes=[];for(const route of normalizedRoutes){const normalizedRoute=visitRoute(route,``,`/`);if(normalizedRoute)keptRoutes.push(normalizedRoute)}return[...keptRoutes,...hoistedRoutes]}function createSurfaceRuntime(options={}){const allMode=normalizeSurfaceId(options?.allMode||`all`)||`all`;const registry=createSurfaceRegistry({surfaces:isRecord(options?.surfaces)?options.surfaces:{},defaultSurfaceId:options?.defaultSurfaceId});const{SURFACE_REGISTRY,DEFAULT_SURFACE_ID}=registry;const surfaceDefinitions=registry.listSurfaceDefinitions();const surfaceIds=surfaceDefinitions.map(definition=>definition.id);const enabledSurfaceIds=surfaceDefinitions.filter(definition=>definition.enabled).map(definition=>definition.id);const pathHelpers=createSurfacePathHelpers({apiBasePath:options?.apiBasePath,defaultSurfaceId:DEFAULT_SURFACE_ID,surfaceDefinitions});function normalizeSurfaceMode(value){const normalized=normalizeSurfaceId(value);if(!normalized||normalized===allMode)return allMode;return SURFACE_REGISTRY[normalized]?normalized:allMode}function listEnabledSurfaceIds(){return[...enabledSurfaceIds]}function getSurfaceDefinition(surfaceId){return SURFACE_REGISTRY[normalizeSurfaceId(surfaceId)]||null}function listSurfaceDefinitions({enabledOnly=false}={}){return enabledOnly?surfaceDefinitions.filter(definition=>definition.enabled):[...surfaceDefinitions]}function isSurfaceEnabled(surfaceId){const normalizedSurface=normalizeSurfaceMode(surfaceId);if(normalizedSurface===allMode)return false;return enabledSurfaceIds.includes(normalizedSurface)}return{SURFACE_MODE_ALL:allMode,SURFACE_IDS:[...surfaceIds],DEFAULT_SURFACE_ID,DEFAULT_SURFACE:SURFACE_REGISTRY[DEFAULT_SURFACE_ID],normalizeSurfaceMode,resolveSurfaceFromPathname:pathHelpers.resolveSurfaceFromPathname,getSurfaceDefinition,listSurfaceDefinitions,listEnabledSurfaceIds,isSurfaceEnabled}}function filterRoutesBySurface(routeList,{surfaceRuntime,surfaceMode}={}){if(!surfaceRuntime||typeof surfaceRuntime!==`object`)throw new Error(`filterRoutesBySurface requires surfaceRuntime.`);if(typeof surfaceRuntime.normalizeSurfaceMode!==`function`)throw new Error(`filterRoutesBySurface requires surfaceRuntime.normalizeSurfaceMode().`);if(typeof surfaceRuntime.resolveSurfaceFromPathname!==`function`)throw new Error(`filterRoutesBySurface requires surfaceRuntime.resolveSurfaceFromPathname().`);if(typeof surfaceRuntime.listEnabledSurfaceIds!==`function`)throw new Error(`filterRoutesBySurface requires surfaceRuntime.listEnabledSurfaceIds().`);const normalizedRoutes=normalizeRoutesBySurfaceBoundaries(routeList,{surfaceRuntime});const allMode=String(surfaceRuntime.SURFACE_MODE_ALL||`all`).trim().toLowerCase()||`all`;const normalizedMode=surfaceRuntime.normalizeSurfaceMode(surfaceMode);const enabledSurfaces=new Set(surfaceRuntime.listEnabledSurfaceIds());function filterRouteNode(route,inheritedSurfaceId=``){if(!isRecord(route))return null;const resolvedSurface=resolveRouteSurface(route,inheritedSurfaceId,{surfaceRuntime,absolutePath:String(route.path||`/`)});const isGlobalScope=resolveOwnRouteScope(route)===`global`;const isEnabledSurfaceRoute=enabledSurfaces.has(resolvedSurface);const ownIncluded=isGlobalScope||isEnabledSurfaceRoute&&(normalizedMode===allMode||resolvedSurface===normalizedMode);const children=Array.isArray(route.children)?route.children:[];const filteredChildren=children.map(child=>filterRouteNode(child,resolvedSurface)).filter(Boolean);if(!ownIncluded&&filteredChildren.length<1)return null;if(children.length<1)return route;return{...route,children:filteredChildren}}return normalizedRoutes.map(route=>filterRouteNode(route)).filter(Boolean)}var DEFAULT_GUARD_EVALUATOR_KEY=`__JSKIT_WEB_SHELL_GUARD_EVALUATOR__`;var WEB_ROOT_ALLOW_YES=`yes`;var WEB_ROOT_ALLOW_NO=`no`;function createFallbackNotFoundRoute(component){if(!component)throw new Error(`createFallbackNotFoundRoute requires a component.`);return Object.freeze({path:`/:pathMatch(.*)*`,name:`not-found`,component,meta:{jskit:{scope:`global`}}})}function buildSurfaceAwareRoutes({routes=[],surfaceRuntime,surfaceMode,fallbackRoute,notFoundComponent}={}){const effectiveFallback=fallbackRoute||(notFoundComponent?createFallbackNotFoundRoute(notFoundComponent):null);if(!effectiveFallback)throw new TypeError(`buildSurfaceAwareRoutes requires fallbackRoute or notFoundComponent.`);return filterRoutesBySurface([...routes,effectiveFallback],{surfaceRuntime,surfaceMode})}function normalizeGuardPolicy(value){return String(value||``).trim().toLowerCase()}function resolveRouteGuardFromMeta(meta){if(!meta||typeof meta!==`object`||Array.isArray(meta))return null;if(meta.guard&&typeof meta.guard===`object`&&!Array.isArray(meta.guard))return meta.guard;if(meta.jskit&&typeof meta.jskit===`object`&&!Array.isArray(meta.jskit)){const jskitGuard=meta.jskit.guard;if(jskitGuard&&typeof jskitGuard===`object`&&!Array.isArray(jskitGuard))return jskitGuard}return null}function resolveRouteGuard(to){const matched=Array.isArray(to?.matched)?to.matched:[];for(let index=matched.length-1;index>=0;index-=1){const routeRecord=matched[index]&&typeof matched[index]===`object`?matched[index]:null;if(!routeRecord)continue;if(routeRecord.guard&&typeof routeRecord.guard===`object`&&!Array.isArray(routeRecord.guard))return routeRecord.guard;const metaGuard=resolveRouteGuardFromMeta(routeRecord.meta);if(metaGuard)return metaGuard}return null}function resolveSearchFromFullPath(fullPath){const rawFullPath=String(fullPath||``).trim();const queryStart=rawFullPath.indexOf(`?`);if(queryStart<0)return``;const hashStart=rawFullPath.indexOf(`#`,queryStart);return hashStart<0?rawFullPath.slice(queryStart):rawFullPath.slice(queryStart,hashStart)}function normalizeWebRootAllowed(value){const normalizedValue=String(value||``).trim().toLowerCase();if(normalizedValue===`yes`||normalizedValue===`no`)return normalizedValue;return`yes`}function resolveEffectiveRouteGuard({to,surfaceRuntime,authenticatedPolicy,publicPolicy}){const routePolicy=normalizeGuardPolicy(resolveRouteGuard(to)?.policy);if(routePolicy)return{policy:routePolicy};const surfaceId=surfaceRuntime.resolveSurfaceFromPathname(String(to?.path||`/`).trim()||`/`);if(surfaceRuntime.getSurfaceDefinition(surfaceId)?.requiresAuth)return{policy:authenticatedPolicy};return{policy:publicPolicy}}function resolveGuardEvaluator(guardEvaluatorKey){if(typeof globalThis!==`object`||!globalThis)return null;const evaluator=globalThis[guardEvaluatorKey];if(typeof evaluator!==`function`)return null;return evaluator}function normalizeGuardOutcome(outcome){if(outcome===false)return{allow:false,redirectTo:``,reason:``};if(outcome==null||outcome===true||typeof outcome!==`object`||Array.isArray(outcome))return{allow:true,redirectTo:``,reason:``};return{allow:outcome.allow!==false,redirectTo:String(outcome.redirectTo||``).trim(),reason:String(outcome.reason||``).trim()}}function evaluateShellGuard({guard,to,guardEvaluatorKey}){const evaluator=resolveGuardEvaluator(guardEvaluatorKey);if(!evaluator)return{allow:true,redirectTo:``,reason:``};const pathname=String(to?.path||`/`).trim()||`/`;const search=resolveSearchFromFullPath(to?.fullPath||``);try{return normalizeGuardOutcome(evaluator({guard,phase:`route`,context:{to,location:{pathname,search}}}))}catch{return{allow:false,redirectTo:``,reason:`guard-evaluator-error`}}}function createShellBeforeEachGuard({surfaceRuntime,webRootAllowed=`yes`,guardEvaluatorKey=DEFAULT_GUARD_EVALUATOR_KEY,authenticatedPolicy=AUTH_POLICY_AUTHENTICATED,publicPolicy=AUTH_POLICY_PUBLIC}={}){if(!surfaceRuntime||typeof surfaceRuntime.resolveSurfaceFromPathname!==`function`||typeof surfaceRuntime.getSurfaceDefinition!==`function`)throw new TypeError(`createShellBeforeEachGuard requires surfaceRuntime.resolveSurfaceFromPathname() and getSurfaceDefinition().`);const defaultSurfaceRootPath=surfaceRuntime.getSurfaceDefinition(surfaceRuntime.DEFAULT_SURFACE_ID)?.routeBase||`/`;const redirectWebRoot=normalizeWebRootAllowed(webRootAllowed)===`no`&&defaultSurfaceRootPath!==`/`;return to=>{if(redirectWebRoot&&String(to?.path||`/`).trim()===`/`){const search=resolveSearchFromFullPath(to?.fullPath||``);const hash=String(to?.hash||``).trim();return`${defaultSurfaceRootPath}${search}${hash}`}const guard=resolveEffectiveRouteGuard({to,surfaceRuntime,authenticatedPolicy,publicPolicy});if(guard.policy!==authenticatedPolicy)return true;const outcome=evaluateShellGuard({guard,to,guardEvaluatorKey});if(outcome.allow)return true;if(outcome.redirectTo){if(isExternalLinkTarget(outcome.redirectTo)){if(typeof window===`object`&&window?.location&&typeof window.location.assign===`function`)window.location.assign(outcome.redirectTo);return false}return outcome.redirectTo}return false}}function createStructuredLogger(logger=console){if(isRecord(logger)){const hasDebug=typeof logger.debug===`function`;return Object.freeze({info:typeof logger.info===`function`?logger.info.bind(logger):console.info.bind(console),warn:typeof logger.warn===`function`?logger.warn.bind(logger):console.warn.bind(console),error:typeof logger.error===`function`?logger.error.bind(logger):console.error.bind(console),debug:hasDebug?logger.debug.bind(logger):()=>{},isDebugEnabled:typeof logger.isDebugEnabled===`boolean`?logger.isDebugEnabled:hasDebug})}return Object.freeze({info:console.info.bind(console),warn:console.warn.bind(console),error:console.error.bind(console),debug:()=>{},isDebugEnabled:false})}function summarizeRouterRoutes(router){if(!router||typeof router.getRoutes!==`function`)return Object.freeze([]);return Object.freeze(router.getRoutes().map(route=>Object.freeze({name:String(route?.name||``).trim(),path:String(route?.path||``).trim(),metaScope:String(route?.meta?.jskit?.scope||``).trim(),metaSurface:String(route?.meta?.jskit?.surface||``).trim()})))}function resolveClientBootstrapDebugEnabled({env={},debugEnabled=void 0,debugEnvKey=`VITE_JSKIT_CLIENT_DEBUG`}={}){if(typeof debugEnabled===`boolean`)return debugEnabled;if(!isRecord(env))return false;return String(env[debugEnvKey]||``).trim()===`1`}function createClientBootstrapLogger({env={},logger=console,debugEnabled=void 0,debugEnvKey=`VITE_JSKIT_CLIENT_DEBUG`}={}){const baseLogger=createStructuredLogger(logger);const isDebugEnabled=resolveClientBootstrapDebugEnabled({env,debugEnabled,debugEnvKey});return Object.freeze({info:baseLogger.info,warn:baseLogger.warn,error:baseLogger.error,debug:isDebugEnabled?baseLogger.info:()=>{},isDebugEnabled})}function installAppPlugins(app,appPlugins=[]){const plugins=Array.isArray(appPlugins)?appPlugins:[];for(const pluginEntry of plugins){if(!pluginEntry)continue;if(Array.isArray(pluginEntry)){const[plugin,...pluginArgs]=pluginEntry;if(!plugin)continue;app.use(plugin,...pluginArgs);continue}app.use(pluginEntry)}}function isSurfaceRootRecord(record){return Boolean(record?.meta?.jskit?.surface)}function staysOnSamePage(to,from){if(to.path===from.path)return true;const fromParents=new Set((from.matched||[]).slice(0,-1));return(to.matched||[]).slice(0,-1).some(record=>fromParents.has(record)&&!isSurfaceRootRecord(record))}function shellScrollBehavior(to,from,savedPosition){if(savedPosition)return savedPosition;if(staysOnSamePage(to,from))return false;if(to.hash)return{el:to.hash,top:0};return{top:0}}function createSurfaceShellRouter({createRouter,history,routes=[],surfaceRuntime,surfaceMode,fallbackRoute=null,notFoundComponent=null,guard=false,scrollBehavior=shellScrollBehavior}={}){if(typeof createRouter!==`function`)throw new TypeError(`createSurfaceShellRouter requires createRouter().`);const effectiveFallbackRoute=fallbackRoute||(notFoundComponent?createFallbackNotFoundRoute(notFoundComponent):null);const activeRoutes=buildSurfaceAwareRoutes({routes,surfaceRuntime,surfaceMode,fallbackRoute:effectiveFallbackRoute});const router=createRouter({history,routes:activeRoutes,...typeof scrollBehavior===`function`?{scrollBehavior}:{}});if(guard!==false){if(!router||typeof router.beforeEach!==`function`)throw new TypeError(`createSurfaceShellRouter requires router.beforeEach() when guard is enabled.`);const beforeEachGuard=typeof guard===`function`?guard:createShellBeforeEachGuard({surfaceRuntime,...isRecord(guard)?guard:{}});router.beforeEach(beforeEachGuard)}return Object.freeze({router,activeRoutes:Object.freeze([...activeRoutes]),fallbackRoute:effectiveFallbackRoute})}async function bootstrapClientShellApp({createApp,rootComponent,appConfig={},appPlugins=[],i18n=null,pinia=null,queryClient=null,router,bootClientModules,surfaceRuntime,surfaceMode,env={},fallbackRoute=null,logger=console,createBootstrapLogger=null,debugEnabled=void 0,debugEnvKey=`VITE_JSKIT_CLIENT_DEBUG`,debugMessage=`Client modules bootstrapped before router install.`,onAfterModulesBootstrapped=null,onAfterRouterReady=null,mountSelector=`#app`}={}){if(typeof createApp!==`function`)throw new TypeError(`bootstrapClientShellApp requires createApp().`);if(!router||typeof router.addRoute!==`function`)throw new TypeError(`bootstrapClientShellApp requires router.addRoute().`);if(typeof bootClientModules!==`function`)throw new TypeError(`bootstrapClientShellApp requires bootClientModules().`);const app=createApp(rootComponent);if(!app||typeof app.use!==`function`||typeof app.mount!==`function`)throw new TypeError(`bootstrapClientShellApp requires createApp() to return a Vue app with use() and mount().`);installAppPlugins(app,appPlugins);if(i18n){if(!appPlugins.includes(i18n))app.use(i18n);setJskitI18n(i18n)}setClientAppConfig(appConfig);const resolvedLogger=typeof createBootstrapLogger===`function`?createBootstrapLogger({env,logger,debugEnabled,debugEnvKey}):createClientBootstrapLogger({env,logger,debugEnabled,debugEnvKey});const bootstrapLogger=createStructuredLogger(resolvedLogger);const clientBootstrap=await bootClientModules({app,pinia,queryClient,router,surfaceRuntime,surfaceMode,env,logger:bootstrapLogger});const{isDebugEnabled}=bootstrapLogger;if(isDebugEnabled)bootstrapLogger.info({bootstrap:{modules:clientBootstrap?.modules||[],providerCount:Number(clientBootstrap?.providerCount||0),routeCount:Number(clientBootstrap?.routeCount||0)},routerRoutesBeforeInstall:summarizeRouterRoutes(router),currentPath:typeof window!==`undefined`?String(window.location?.pathname||``):``},String(debugMessage||``).trim()||`Client modules bootstrapped before router install.`);if(fallbackRoute?.name&&typeof router.addRoute===`function`){if(typeof router.hasRoute===`function`&&router.hasRoute(fallbackRoute.name)&&typeof router.removeRoute===`function`)router.removeRoute(fallbackRoute.name);router.addRoute(fallbackRoute)}if(typeof onAfterModulesBootstrapped===`function`)await onAfterModulesBootstrapped(Object.freeze({app,router,clientBootstrap,surfaceRuntime,surfaceMode,env:isRecord(env)?{...env}:{},logger:bootstrapLogger,debugEnabled:isDebugEnabled}));app.use(router);if(typeof router.isReady===`function`)await router.isReady();if(typeof onAfterRouterReady===`function`)await onAfterRouterReady(Object.freeze({app,router,clientBootstrap,surfaceRuntime,surfaceMode,env:isRecord(env)?{...env}:{},logger:bootstrapLogger,debugEnabled:isDebugEnabled}));app.mount(mountSelector);return Object.freeze({app,router,clientBootstrap,logger:bootstrapLogger,debugEnabled:isDebugEnabled})}export{summarizeRouterRoutes as a,getClientAppConfig as c,createStructuredLogger as i,resolveMobileConfig as l,createSurfaceShellRouter as n,createSurfaceRuntime as o,resolveClientBootstrapDebugEnabled as r,filterRoutesBySurface as s,bootstrapClientShellApp as t};
|