buddy-workbench 0.1.36 → 0.1.38
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/package.json +1 -1
- package/server/config.js +1 -0
- package/server/repositories/package-upgrade.js +14 -0
- package/server/routes/package-upgrade.js +76 -0
- package/server.js +2 -0
- package/ui/dist/assets/index-BWhse591.css +1 -0
- package/ui/dist/assets/index-DlBaxOIN.js +547 -0
- package/ui/dist/devbuddy-splash.svg +37 -0
- package/ui/dist/index.html +69 -32
- package/ui/dist/assets/index-B6AAdOoQ.js +0 -534
- package/ui/dist/assets/index-BEE8irw_.css +0 -1
package/package.json
CHANGED
package/server/config.js
CHANGED
|
@@ -31,6 +31,7 @@ export const paths = {
|
|
|
31
31
|
errors: join(userDataDir, 'errors.json'),
|
|
32
32
|
postman: join(userDataDir, 'postman.json'),
|
|
33
33
|
branchSync: join(userDataDir, 'branch-sync.json'),
|
|
34
|
+
packageUpgrade: join(userDataDir, 'package-upgrade.json'),
|
|
34
35
|
presentations: join(userDataDir, 'presentations.json'),
|
|
35
36
|
shutdownLog: join(userDataDir, 'shutdown.log'),
|
|
36
37
|
clipboardDir: join(userDataDir, 'clipboard'),
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { paths } from '../config.js';
|
|
4
|
+
|
|
5
|
+
const defaults = { workspaceDir: '', repos: [], tasks: [] };
|
|
6
|
+
export function readPackageUpgradeData() {
|
|
7
|
+
try { return existsSync(paths.packageUpgrade) ? { ...defaults, ...JSON.parse(readFileSync(paths.packageUpgrade, 'utf8')) } : { ...defaults }; }
|
|
8
|
+
catch { return { ...defaults }; }
|
|
9
|
+
}
|
|
10
|
+
export function savePackageUpgradeData(data) {
|
|
11
|
+
mkdirSync(dirname(paths.packageUpgrade), { recursive: true });
|
|
12
|
+
writeFileSync(paths.packageUpgrade, JSON.stringify(data, null, 2));
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { Router } from 'express';
|
|
3
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
4
|
+
import { join, basename } from 'node:path';
|
|
5
|
+
import { execFile } from 'node:child_process';
|
|
6
|
+
import { promisify } from 'node:util';
|
|
7
|
+
import { readSettings } from '../repositories/settings.js';
|
|
8
|
+
import { readPackageUpgradeData, savePackageUpgradeData } from '../repositories/package-upgrade.js';
|
|
9
|
+
|
|
10
|
+
const router = Router();
|
|
11
|
+
const exec = promisify(execFile);
|
|
12
|
+
const running = new Set();
|
|
13
|
+
|
|
14
|
+
function repoName(url) { return basename(String(url || '').replace(/[\\/]$/, '').replace(/\.git$/i, '').replace(/[:/]+$/, '')) || 'repo'; }
|
|
15
|
+
function repoPath(data, repo) { return join(data.workspaceDir, repo.directory || repoName(repo.url)); }
|
|
16
|
+
function parseBitbucket(url) {
|
|
17
|
+
const raw = String(url || '').replace(/\.git$/, '');
|
|
18
|
+
let u;
|
|
19
|
+
try { u = new URL(raw.startsWith('git@') ? `ssh://${raw.replace(/^git@/, '').replace(':', '/')}` : raw); } catch { return null; }
|
|
20
|
+
const parts = u.pathname.split('/').filter(Boolean);
|
|
21
|
+
const protocol = u.protocol === 'http:' ? 'http' : 'https';
|
|
22
|
+
if (parts[0] === 'scm') return { protocol, host: u.host, project: parts[1], slug: parts[2] };
|
|
23
|
+
if (parts[0] === 'projects' || parts[0] === 'users') return { protocol, host: u.host, project: parts[1], slug: parts[3] };
|
|
24
|
+
return parts.length >= 2 ? { protocol, host: u.host, project: parts.at(-2), slug: parts.at(-1) } : null;
|
|
25
|
+
}
|
|
26
|
+
function updateTask(taskId, updater) {
|
|
27
|
+
const data = readPackageUpgradeData(); const task = data.tasks.find((item) => item.id === taskId);
|
|
28
|
+
if (!task) return;
|
|
29
|
+
const next = updater(task); data.tasks = data.tasks.map((item) => item.id === taskId ? next : item); savePackageUpgradeData(data);
|
|
30
|
+
}
|
|
31
|
+
async function git(folder, args) { return (await exec('git', args, { cwd: folder, timeout: 10 * 60 * 1000, maxBuffer: 2 * 1024 * 1024 })).stdout.trim(); }
|
|
32
|
+
async function runRepo(task, repo) {
|
|
33
|
+
const data = readPackageUpgradeData(); const folder = repoPath(data, repo); const name = repo.name || repoName(repo.url);
|
|
34
|
+
const result = { repoId: repo.id, name, status: 'running', message: '', prUrl: null };
|
|
35
|
+
updateTask(task.id, (t) => ({ ...t, repos: t.repos.map((r) => r.repoId === repo.id ? result : r) }));
|
|
36
|
+
try {
|
|
37
|
+
mkdirSync(data.workspaceDir, { recursive: true });
|
|
38
|
+
if (!existsSync(join(folder, '.git'))) await exec('git', ['clone', repo.url, folder], { cwd: data.workspaceDir, timeout: 20 * 60 * 1000, maxBuffer: 2 * 1024 * 1024 });
|
|
39
|
+
await git(folder, ['fetch', 'origin', '--prune']);
|
|
40
|
+
await git(folder, ['checkout', '-B', task.sourceBranch, `origin/${task.targetBranch}`]);
|
|
41
|
+
const packageFile = join(folder, 'package.json');
|
|
42
|
+
if (!existsSync(packageFile)) throw new Error('package.json not found');
|
|
43
|
+
const pkg = JSON.parse(readFileSync(packageFile, 'utf8'));
|
|
44
|
+
const sections = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];
|
|
45
|
+
const section = sections.find((key) => pkg[key]?.[task.packageName] !== undefined);
|
|
46
|
+
if (!section) throw new Error(`Package ${task.packageName} is not in package.json`);
|
|
47
|
+
pkg[section][task.packageName] = task.version;
|
|
48
|
+
writeFileSync(packageFile, `${JSON.stringify(pkg, null, 2)}\n`);
|
|
49
|
+
await exec('npm', ['install', '--legacy-peer-deps', '--package-lock-only'], { cwd: folder, timeout: 20 * 60 * 1000, maxBuffer: 4 * 1024 * 1024 });
|
|
50
|
+
await git(folder, ['add', 'package.json', 'package-lock.json']);
|
|
51
|
+
await git(folder, ['commit', '-m', task.commitMessage]);
|
|
52
|
+
await git(folder, ['push', 'origin', task.sourceBranch]);
|
|
53
|
+
const parsed = parseBitbucket(repo.url); const settings = readSettings();
|
|
54
|
+
if (!parsed) throw new Error('Could not parse Bitbucket repository URL');
|
|
55
|
+
const headers = { Accept: 'application/json', 'Content-Type': 'application/json' }; if (settings.bitbucketAccessToken) headers.Authorization = `Bearer ${settings.bitbucketAccessToken}`;
|
|
56
|
+
const api = `${parsed.protocol}://${parsed.host}/rest/api/1.0/projects/${encodeURIComponent(parsed.project)}/repos/${encodeURIComponent(parsed.slug)}/pull-requests`;
|
|
57
|
+
const response = await axios.post(api, { title: task.commitMessage, description: `Upgrade ${task.packageName} to ${task.version}`, fromRef: { id: `refs/heads/${task.sourceBranch}` }, toRef: { id: `refs/heads/${task.targetBranch}` } }, { headers, validateStatus: () => true });
|
|
58
|
+
if (response.status < 200 || response.status >= 300) throw new Error(response.data?.errors?.[0]?.message || `Bitbucket PR failed (${response.status})`);
|
|
59
|
+
const prUrl = response.data?.links?.self?.[0]?.href || `${parsed.protocol}://${parsed.host}/projects/${parsed.project}/repos/${parsed.slug}/pull-requests/${response.data.id}`;
|
|
60
|
+
updateTask(task.id, (t) => ({ ...t, repos: t.repos.map((r) => r.repoId === repo.id ? { ...result, status: 'success', prUrl } : r) }));
|
|
61
|
+
} catch (error) {
|
|
62
|
+
updateTask(task.id, (t) => ({ ...t, repos: t.repos.map((r) => r.repoId === repo.id ? { ...result, status: 'failed', message: error.stderr || error.message } : r) }));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function execute(task) {
|
|
66
|
+
await Promise.all(task.repoIds.map((id) => { const data = readPackageUpgradeData(); const repo = data.repos.find((r) => r.id === id); return repo ? runRepo(task, repo) : Promise.resolve(); }));
|
|
67
|
+
updateTask(task.id, (t) => ({ ...t, status: t.repos.some((r) => r.status === 'failed') ? 'failed' : 'completed', completedAt: new Date().toISOString() })); running.delete(task.id);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
router.get('/config', (_req, res) => { const data = readPackageUpgradeData(); res.json({ workspaceDir: data.workspaceDir, repos: data.repos.map((repo) => ({ ...repo, cloned: existsSync(join(repoPath(data, repo), '.git')) })), tasks: data.tasks }); });
|
|
71
|
+
router.put('/config', (req, res) => { const data = readPackageUpgradeData(); data.workspaceDir = String(req.body?.workspaceDir || '').trim(); if (!data.workspaceDir) return res.status(400).json({ error: 'Workspace directory is required.' }); savePackageUpgradeData(data); res.json({ workspaceDir: data.workspaceDir, repos: data.repos }); });
|
|
72
|
+
router.post('/repos', (req, res) => { const url = String(req.body?.url || '').trim(); if (!url) return res.status(400).json({ error: 'Repository URL is required.' }); const data = readPackageUpgradeData(); const repo = { id: `repo-${Date.now()}`, url, name: String(req.body?.name || repoName(url)), directory: String(req.body?.directory || repoName(url)) }; data.repos.push(repo); savePackageUpgradeData(data); res.status(201).json(repo); });
|
|
73
|
+
router.post('/repos/:id/clone', async (req, res) => { const data = readPackageUpgradeData(); const repo = data.repos.find((item) => item.id === req.params.id); if (!repo) return res.status(404).json({ error: 'Repository not found.' }); if (!data.workspaceDir) return res.status(400).json({ error: 'Configure a workspace directory first.' }); const folder = repoPath(data, repo); try { mkdirSync(data.workspaceDir, { recursive: true }); if (!existsSync(join(folder, '.git'))) await exec('git', ['clone', repo.url, folder], { cwd: data.workspaceDir, timeout: 20 * 60 * 1000, maxBuffer: 2 * 1024 * 1024 }); res.json({ ...repo, cloned: true }); } catch (error) { res.status(400).json({ error: error.stderr || error.message }); } });
|
|
74
|
+
router.delete('/repos/:id', (req, res) => { const data = readPackageUpgradeData(); data.repos = data.repos.filter((r) => r.id !== req.params.id); savePackageUpgradeData(data); res.status(204).end(); });
|
|
75
|
+
router.post('/tasks', (req, res) => { const body = req.body || {}; const required = ['sourceBranch', 'targetBranch', 'packageName', 'version', 'commitMessage']; if (required.some((key) => !String(body[key] || '').trim()) || !Array.isArray(body.repoIds) || !body.repoIds.length) return res.status(400).json({ error: 'All fields and at least one repository are required.' }); const data = readPackageUpgradeData(); if (!data.workspaceDir) return res.status(400).json({ error: 'Configure a workspace directory first.' }); const repoIds = body.repoIds.filter((id) => data.repos.some((repo) => repo.id === id)); if (!repoIds.length) return res.status(400).json({ error: 'Select at least one configured repository.' }); const task = { id: `task-${Date.now()}`, ...Object.fromEntries(required.map((key) => [key, String(body[key]).trim()])), repoIds, repos: repoIds.map((repoId) => ({ repoId, status: 'queued' })), status: 'running', createdAt: new Date().toISOString() }; data.tasks.unshift(task); savePackageUpgradeData(data); void execute(task); res.status(201).json(task); });
|
|
76
|
+
export default router;
|
package/server.js
CHANGED
|
@@ -24,6 +24,7 @@ import branchSyncRoutes from './server/routes/branch-sync.js';
|
|
|
24
24
|
import updateRoutes from './server/routes/updates.js';
|
|
25
25
|
import dataBackupRoutes from './server/routes/data-backup.js';
|
|
26
26
|
import presentationsRoutes from './server/routes/presentations.js';
|
|
27
|
+
import packageUpgradeRoutes from './server/routes/package-upgrade.js';
|
|
27
28
|
import { addErrorRecord } from './server/repositories/errors.js';
|
|
28
29
|
import { startClipboardCapture } from './server/services/clipboard-history.js';
|
|
29
30
|
import { compression } from './server/middleware/compression.js';
|
|
@@ -85,6 +86,7 @@ app.use('/api/branch-sync', branchSyncRoutes);
|
|
|
85
86
|
app.use('/api/updates', updateRoutes);
|
|
86
87
|
app.use('/api/data-backup', dataBackupRoutes);
|
|
87
88
|
app.use('/api/presentations', presentationsRoutes);
|
|
89
|
+
app.use('/api/package-upgrade', packageUpgradeRoutes);
|
|
88
90
|
|
|
89
91
|
app.use((err, req, res, _next) => {
|
|
90
92
|
addErrorRecord({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}:root{--db-brand: #6555e8;--db-brand-strong: #5143c2;--db-brand-soft: #eeecff;--db-primary: #6555e8;--db-primary-hover: #7669ee;--db-bg: #f4f5fa;--db-surface: #fff;--db-surface-subtle: #f8f9fc;--db-text: #172033;--db-text-secondary: #5f6b82;--db-border: #e3e6ef;--db-sidebar: #171c2b;--db-sidebar-muted: #a6afc3;--db-success: #247a3d;--db-warning: #9a5b08;--db-danger: #cf3038;--db-radius: 12px;--db-shadow-sm: 0 4px 16px rgba(31, 42, 68, .06);--db-shadow-md: 0 18px 44px rgba(31, 42, 68, .1);font-family:Inter,ui-sans-serif,system-ui,-apple-system,PingFang SC,sans-serif;color:var(--db-text);background:var(--db-bg)}:root[data-theme=light]{--db-primary: #5b50e0;--db-primary-hover: #6e63ec;--db-brand: #5b50e0;--db-brand-strong: #4c42c9;--db-brand-soft: #eef0ff;--db-bg: #f7f8fc;--db-surface: #fff;--db-surface-subtle: #fafbfe;--db-text: #172033;--db-text-secondary: #667085;--db-border: #e5e8f0;--db-sidebar: #fff;--db-sidebar-muted: #687187;--db-shadow-sm: 0 4px 16px rgba(31, 42, 68, .055);--db-shadow-md: 0 18px 44px rgba(31, 42, 68, .085)}html,body{height:100vh;overflow:hidden}body{margin:0;background:var(--db-bg)}.workbench{height:100vh;overflow:hidden;background:var(--db-bg)}.sidebar{position:sticky!important;top:0;display:flex;height:100vh;flex-direction:column;overflow:clip;background:var(--db-sidebar)!important}.sidebar.ant-layout-sider-has-trigger{padding-bottom:0}.sidebar .ant-layout-sider-children{display:flex;height:auto;min-height:0;flex:1;flex-direction:column;margin-top:0}.sidebar .ant-menu-title-content{-webkit-user-select:none;user-select:none}.brand-row{display:flex;align-items:center;flex:none;padding:19px 16px 20px 22px;overflow:hidden;white-space:nowrap}.brand{display:flex;align-items:baseline;flex:none;overflow:hidden;color:#fff;font-size:20px;font-weight:750;letter-spacing:-.4px;text-decoration:none;white-space:nowrap;transition:background .16s ease,color .16s ease}.brand:hover{background:#ffffff09;color:#fff}.brand:active{background:#ffffff0f}.brand:focus-visible{outline-offset:-4px}.brand-mark{color:#a99fff}.brand-name{margin-left:8px}.brand-version{margin-left:7px;color:var(--db-sidebar-muted);font-size:11px;font-weight:500;letter-spacing:normal;vertical-align:middle}.sidebar-nav{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:0 calc(8.5227% + 2.6307px) 16px calc(2.2727% + 6.5682px);border-inline-end:0;border-right:0;color-scheme:dark;scrollbar-width:none}.sidebar-nav::-webkit-scrollbar{width:0;border:0;outline:0;background:transparent;box-shadow:none;-webkit-appearance:none}.sidebar-nav::-webkit-scrollbar-track,.sidebar-nav::-webkit-scrollbar-track-piece,.sidebar-nav::-webkit-scrollbar-corner{border:0;border-right:0;border-left:0;outline:0;background:transparent;box-shadow:none;-webkit-appearance:none}.sidebar-nav::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#a6afc34d;background-clip:padding-box;box-shadow:none;-webkit-appearance:none}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:#c4cbda75;background-clip:padding-box}.sidebar .ant-menu{background:transparent}.sidebar .ant-menu.ant-menu-root{border-inline-end:0!important;border-right:0!important;transition-duration:.2s!important}.sidebar .ant-menu:focus,.sidebar .ant-menu:focus-visible{outline:none;box-shadow:none}.sidebar .ant-menu-item-group-title{position:relative;display:block;box-sizing:border-box;height:40px;padding:17px 16px 7px;overflow:hidden;color:#8791aa;font-size:10px;font-weight:700;line-height:16px;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;transition:color .2s ease!important}.sidebar .ant-menu-item-group-title:after{position:absolute;top:50%;left:50%;width:24px;height:1px;background:#a6afc33d;content:"";opacity:0;pointer-events:none;transform:translate(-50%,-50%);transition:opacity .2s ease}.sidebar .ant-menu-item{margin-block:3px;padding-inline-start:calc(7.3248% + 9.0573px)!important;padding-inline-end:calc(2.2293% + 11.4522px)!important;transition:border-color .2s,background .2s!important}.sidebar .ant-menu-item .ant-menu-item-icon{width:14px;height:14px;min-width:14px;font-size:14px!important;line-height:1!important;transition-duration:.2s!important}.sidebar .ant-menu-item .ant-menu-item-icon .anticon{font-size:14px!important}.sidebar .ant-menu-title-content{transition-duration:.2s!important}.sidebar .ant-menu-item-selected{box-shadow:inset 0 0 0 1px #a99fff38}@supports (font: -apple-system-body) and (-webkit-appearance: none){.sidebar .ant-menu-item .ant-menu-item-icon{display:inline-flex;flex:0 0 14px;align-items:center;justify-content:center;width:14px;height:14px;transform:translateZ(0);backface-visibility:hidden;transition:none!important}.sidebar .ant-menu-item .ant-menu-item-icon svg{display:block;width:14px;height:14px;transform:translateZ(0)}}.sidebar-bottom{flex:none;padding:12px;border-top:1px solid rgba(255,255,255,.08);background:var(--db-sidebar)}.sidebar-footer{padding:14px 12px 0;color:var(--db-sidebar-muted);font-size:12px}.sidebar.ant-layout-sider-collapsed .brand-row{justify-content:center;padding:21px 0 18px}.sidebar.ant-layout-sider-collapsed .brand-name,.sidebar.ant-layout-sider-collapsed .brand-version,.sidebar.ant-layout-sider-collapsed .sidebar-update-button,.sidebar.ant-layout-sider-collapsed .sidebar-bottom-inner>.ant-badge{display:none!important}.sidebar.ant-layout-sider-collapsed .ant-menu-item{display:flex;align-items:center}.sidebar.ant-layout-sider-collapsed .ant-menu-item-group-title{color:transparent}.sidebar.ant-layout-sider-collapsed .ant-menu-item-group-title:after{opacity:1}.sidebar.ant-layout-sider-collapsed .sidebar-bottom{padding-inline:8px}.sidebar .ant-layout-sider-trigger{position:static!important;width:100%!important;flex:none;border-top:1px solid rgba(255,255,255,.08);background:#121725;color:var(--db-sidebar-muted)}:root[data-theme=light] .sidebar{border-inline-end:1px solid var(--db-border);box-shadow:8px 0 30px #1f2a4409}:root[data-theme=light] .brand{color:var(--db-text)}:root[data-theme=light] .brand:hover{background:#f8f9fc;color:var(--db-text)}:root[data-theme=light] .brand:active{background:#f2f3f8}:root[data-theme=light] .brand-mark{color:var(--db-brand)}:root[data-theme=light] .sidebar-nav{color-scheme:light;scrollbar-color:rgba(95,107,130,.22) transparent}:root[data-theme=light] .sidebar-nav::-webkit-scrollbar-thumb{background:#5f6b8238;background-clip:padding-box}:root[data-theme=light] .sidebar-nav::-webkit-scrollbar-thumb:hover{background:#5f6b8257;background-clip:padding-box}:root[data-theme=light] .sidebar .ant-menu-item-group-title{color:#8992a7}:root[data-theme=light] .sidebar.ant-layout-sider-collapsed .ant-menu-item-group-title{color:transparent}:root[data-theme=light] .sidebar.ant-layout-sider-collapsed .ant-menu-item-group-title:after{background:#5f6b8233}:root[data-theme=light] .sidebar .ant-menu-item-selected{box-shadow:inset 0 0 0 1px #6555e81f}:root[data-theme=light] .sidebar-bottom{border-top-color:var(--db-border)}:root[data-theme=light] .sidebar .ant-layout-sider-trigger{border-top-color:var(--db-border);background:#f8f9fc}.page{height:100vh;overflow-y:auto;padding:clamp(20px,3.5vw,40px);scrollbar-gutter:stable both-edges}.page.is-workspace-content{box-sizing:border-box;width:100%}.page.is-workspace-content>*{box-sizing:border-box;width:100%;max-width:1440px;margin-inline:auto}.launcher-data-notice{margin-bottom:20px}.platform-unavailable-card{max-width:500px;margin:60px auto;border-color:var(--db-border);border-radius:var(--db-radius);text-align:center;box-shadow:var(--db-shadow-sm)}.overview-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.overview-data-warning{margin-bottom:18px}.overview-hero{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:36px;min-height:264px;padding:clamp(28px,4vw,46px);overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:20px;background:radial-gradient(circle at 82% 18%,rgba(149,137,255,.34),transparent 30%),linear-gradient(135deg,#171c2b,#25284a 58%,#433b94);box-shadow:var(--db-shadow-md);color:#fff}.overview-hero:after{position:absolute;right:-90px;bottom:-150px;width:340px;height:340px;border:1px solid rgba(255,255,255,.12);border-radius:50%;box-shadow:0 0 0 42px #ffffff06,0 0 0 84px #ffffff05;content:"";pointer-events:none}.overview-hero-content{position:relative;z-index:1;max-width:720px}.overview-eyebrow{display:block;margin-bottom:12px;color:#c8c2ff;font-size:11px;font-weight:750;letter-spacing:.13em;text-transform:uppercase}.overview-hero h1.ant-typography,.overview-hero h2.ant-typography{max-width:680px;margin:0;color:#fff;font-size:clamp(30px,4vw,48px);line-height:1.08;letter-spacing:-.035em}.overview-hero-description,.overview-hero-copy,.overview-hero .ant-typography-secondary{display:block;max-width:620px;margin:16px 0 0;color:#c9cede;font-size:15px;line-height:1.65}.overview-actions,.overview-hero-actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:10px;flex:none}.overview-hero-actions{margin-top:20px}.overview-hero .ant-btn{height:42px;padding-inline:18px;border-radius:10px;font-weight:650}.overview-hero .ant-btn-primary{border-color:#fff;background:#fff;color:#3f348f;box-shadow:0 8px 22px #00000029}.overview-hero .ant-btn-primary:hover{border-color:#f1efff!important;background:#f1efff!important;color:#342a7c!important}.overview-hero .ant-btn-default{border-color:#ffffff47;background:#ffffff14;color:#fff}.overview-hero .ant-btn-default:hover{border-color:#ffffff7a!important;background:#ffffff26!important;color:#fff!important}.overview-hero .ant-skeleton-element .ant-skeleton-button{height:42px;border-radius:10px;background:#ffffff26!important}.overview-hero .ant-skeleton-element .ant-skeleton-button:after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent)!important}.overview-hero-mark{position:relative;z-index:1;display:grid;width:112px;height:112px;flex:none;border:1px solid rgba(255,255,255,.16);border-radius:30px;background:#ffffff14;color:#dcd8ff;font-size:42px;transform:rotate(-7deg);place-items:center}:root[data-theme=light] .overview-hero{border-color:#dedafc;background:radial-gradient(circle at 82% 18%,rgba(101,85,232,.15),transparent 30%),linear-gradient(135deg,#fff,#f5f3ff 58%,#e8e4ff);color:var(--db-text)}:root[data-theme=light] .overview-hero:after{border-color:#6555e81f;box-shadow:0 0 0 42px #6555e806,0 0 0 84px #6555e805}:root[data-theme=light] .overview-eyebrow{color:var(--db-brand-strong)}:root[data-theme=light] .overview-hero h1.ant-typography,:root[data-theme=light] .overview-hero h2.ant-typography{color:var(--db-text)}:root[data-theme=light] .overview-hero-description,:root[data-theme=light] .overview-hero-copy,:root[data-theme=light] .overview-hero .ant-typography-secondary{color:var(--db-text-secondary)}:root[data-theme=light] .overview-hero .ant-btn-primary{border-color:var(--db-primary);background:var(--db-primary);color:#fff}:root[data-theme=light] .overview-hero .ant-btn-primary:hover{border-color:var(--db-primary-hover)!important;background:var(--db-primary-hover)!important;color:#fff!important}:root[data-theme=light] .overview-hero .ant-btn-default{border-color:#d7d3f3;background:#ffffffb8;color:var(--db-brand-strong)}:root[data-theme=light] .overview-hero .ant-btn-default:hover{border-color:var(--db-brand)!important;background:#fff!important;color:var(--db-brand-strong)!important}:root[data-theme=light] .overview-hero-mark{border-color:#6555e829;background:#ffffffad;color:var(--db-brand)}.overview-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:18px}.overview-metric-card{min-width:0;border:1px solid var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.overview-metric-card .ant-card-body{display:flex;align-items:center;gap:14px;padding:18px 20px}.overview-metric{display:flex;align-items:center;gap:14px;width:100%;min-width:0}.overview-metric-content{min-width:0}.overview-metric-icon{display:grid;width:42px;height:42px;flex:none;border-radius:12px;background:var(--db-brand-soft);color:var(--db-brand);font-size:18px;place-items:center}.overview-metric-card.is-success .overview-metric-icon{background:#eaf7ee;color:var(--db-success)}.overview-metric-card.is-danger .overview-metric-icon{background:#fff0f1;color:var(--db-danger)}.overview-metric-card.is-neutral .overview-metric-icon{background:#edf1f7;color:#526078}.overview-metric-copy{min-width:0}.overview-metric-label{display:block;color:var(--db-text-secondary);font-size:12px;font-weight:600}.overview-metric-value{display:block;margin-top:1px;color:var(--db-text);font-size:25px;font-weight:740;line-height:1.2;letter-spacing:-.025em}.overview-metric-note{display:block;overflow:hidden;margin-top:3px;color:var(--db-text-secondary)!important;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.overview-grid,.overview-content-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:18px;margin-top:18px}.overview-panel{min-width:0;border:1px solid var(--db-border);border-radius:16px;background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.overview-panel .ant-card-head{min-height:60px;padding-inline:22px;border-bottom-color:#edf0f5}.overview-panel .ant-card-head-title{padding-block:16px}.overview-panel .ant-card-body{padding:20px 22px}.overview-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.overview-section-title{display:block;color:var(--db-text);font-size:15px;font-weight:700}.overview-section-title.ant-typography{margin:0}.overview-section-description{display:block;margin-top:2px;color:var(--db-text-secondary);font-size:12px;font-weight:450}.overview-service-list{display:grid;gap:4px;margin-top:12px}.overview-service-row{display:flex;align-items:center;gap:14px;min-height:58px;padding:9px 10px;border-radius:10px;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease}.overview-service-status{width:9px;height:9px;flex:none;border-radius:50%;background:#a8b0bf;box-shadow:0 0 0 4px #f0f2f6}.overview-service-status.is-running{background:#38a457;box-shadow:0 0 0 4px #e8f7ed}.overview-service-status.is-error{background:#e2464d;box-shadow:0 0 0 4px #fff0f1}.overview-service-meta{min-width:0;flex:1}.overview-service-name{display:block;overflow:hidden;color:var(--db-text);font-weight:650;text-overflow:ellipsis;white-space:nowrap}.overview-service-detail{display:block;overflow:hidden;margin-top:2px;color:var(--db-text-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.overview-service-row .ant-btn{flex:none}.overview-quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.overview-quick-card{display:flex;align-items:center;gap:12px;min-width:0;min-height:66px;padding:13px 14px;border:1px solid var(--db-border);border-radius:12px;background:var(--db-surface);color:var(--db-text);cursor:pointer;text-align:left;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.overview-quick-card:hover{border-color:#b9b2fa;box-shadow:0 8px 20px #5143c21a;transform:translateY(-1px)}.overview-quick-card-icon{display:grid;width:36px;height:36px;flex:none;border-radius:10px;background:var(--db-brand-soft);color:var(--db-brand);place-items:center}.overview-quick-card-copy{min-width:0}.overview-quick-card-title{display:block;overflow:hidden;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.overview-quick-card-description{display:block;overflow:hidden;margin-top:1px;color:var(--db-text-secondary);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.overview-checklist{display:grid;gap:12px}.overview-checklist-item{display:flex;align-items:flex-start;gap:11px}.overview-checklist-marker{display:grid;width:24px;height:24px;flex:none;border-radius:50%;background:var(--db-brand-soft);color:var(--db-brand);font-size:11px;font-weight:750;place-items:center}.overview-checklist-copy{min-width:0;flex:1}.overview-checklist-title{display:block;color:var(--db-text);font-size:13px;font-weight:650}.overview-checklist-description{display:block;margin-top:1px;color:var(--db-text-secondary);font-size:12px;line-height:1.5}.overview-shortcuts-section{min-width:0;padding:22px;border:1px solid var(--db-border);border-radius:16px;background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.overview-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.overview-shortcut{display:flex;align-items:center;gap:12px;min-width:0;min-height:76px;padding:14px;border:1px solid var(--db-border);border-radius:12px;background:var(--db-surface);color:var(--db-text);cursor:pointer;font:inherit;text-align:left;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.overview-shortcut:hover{border-color:#b9b2fa;box-shadow:0 8px 20px #5143c21a;transform:translateY(-1px)}.overview-shortcut-icon{display:grid;width:38px;height:38px;flex:none;border-radius:10px;background:var(--db-brand-soft);color:var(--db-brand);font-size:16px;place-items:center}.overview-shortcut-copy{min-width:0;flex:1}.overview-shortcut-title{display:block;overflow:hidden;font-size:13px;font-weight:680;text-overflow:ellipsis;white-space:nowrap}.overview-shortcut-description{display:-webkit-box;overflow:hidden;margin-top:3px;color:var(--db-text-secondary);font-size:11px;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:2}.overview-shortcut-arrow{flex:none;color:#9ba3b2;font-size:11px}.overview-setup-card,.overview-health-card{border:1px solid var(--db-border);border-radius:16px;box-shadow:var(--db-shadow-sm)}.overview-setup-card .ant-card-body{padding:22px}.overview-setup .overview-eyebrow{margin-bottom:5px;color:var(--db-brand)}.overview-setup-progress{flex:none;font-size:12px}.overview-setup-list{display:grid;gap:16px;margin:21px 0 0;padding:0;list-style:none}.overview-setup-step{display:flex;align-items:flex-start;gap:12px}.overview-setup-step-marker{display:grid;width:27px;height:27px;flex:none;border-radius:50%;background:var(--db-brand-soft);color:var(--db-brand);font-size:12px;font-weight:750;place-items:center}.overview-setup-step.is-complete .overview-setup-step-marker{background:#e9f7ee;color:var(--db-success)}.overview-setup-step-copy{min-width:0;flex:1}.overview-setup-step-title{display:block;font-size:13px}.overview-setup-step-description{display:block;margin-top:2px;color:var(--db-text-secondary)!important;font-size:11px;line-height:1.45}.overview-setup-step-action.ant-btn{height:auto;margin-top:3px;padding:0;font-size:12px}.overview-health-card{margin-top:18px}.overview-health-card .ant-card-body{padding:22px}.overview-health .overview-section-header{padding-bottom:16px;border-bottom:1px solid #edf0f5}.overview-section-link.ant-btn{flex:none}.overview-service-row{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #edf0f5;background:var(--db-surface);color:inherit;cursor:pointer;font:inherit;text-align:left}.overview-service-row.is-idle{border-color:#edf0f5;background:var(--db-surface)}.overview-service-row.is-running{border-color:#dcefe1;background:#f6fbf7}.overview-service-row.is-error{border-color:#f4dfe0;background:#fff7f7}.overview-service-row:hover{border-color:#ded9ff;background:#f8f7ff;box-shadow:0 4px 12px #5143c20f}.overview-service-primary{min-width:0;flex:1}.overview-service-name-line{display:flex;align-items:center;gap:10px;min-width:0}.overview-service-name-line .ant-badge{flex:none}.overview-service-stats{display:flex;align-items:center;gap:16px;flex:none;color:var(--db-text-secondary);font-size:12px}.overview-service-stat{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.overview-service-stat.has-errors{color:var(--db-danger);font-weight:650}.overview-service-arrow{color:#9ba3b2}.overview-more-services.ant-btn{display:block;margin:10px auto -5px}.overview-empty{padding-block:22px 8px}.overview-footer{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:18px;color:var(--db-text-secondary);font-size:12px}.overview-footer .ant-btn{height:auto;padding-block:0}.launcher-grid{display:grid;gap:7px}.launcher-card{cursor:pointer;border-color:#e3e6ef}.launcher-card .ant-card-body{padding:10px 14px}.service-card{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:46px}.service-card .ant-typography{display:block;margin:0}.service-card h4.ant-typography{margin:0 0 1px;font-size:15px;line-height:20px}.service-info{min-width:0;flex:1}.service-info>.ant-typography{font-size:12px;line-height:16px}.service-action{display:flex;flex-direction:column;align-items:flex-end;gap:3px;white-space:nowrap}.service-action .ant-badge{font-size:11px;line-height:14px}.launcher-table .ant-table-tbody>tr{cursor:pointer}.start-script-icon{color:#8c8c8c;font-size:12px}.script-add{margin-bottom:10px}.service-config{margin-bottom:10px;margin-top:10px}.service-config .ant-collapse-content-box{padding-bottom:0!important}.service-config .ant-form-item{margin-bottom:14px}.clipboard-picker{min-width:190px}.squoosh-page{position:relative;min-height:0;margin:0;padding:0 0 40px;color:#172033}.squoosh-page.is-file-dragging{box-shadow:inset 0 0 0 3px #7667e8}.squoosh-page.is-file-dragging:after{position:absolute;z-index:20;top:12px;right:12px;bottom:12px;left:12px;display:grid;place-items:center;border:2px dashed #7667e8;border-radius:12px;background:#f8f7ffc7;color:#5b4cc4;content:"Drop image to compress";font-size:20px;font-weight:700;pointer-events:none}.settings-heading>.ant-typography:first-child{display:block;margin-bottom:5px;color:var(--db-brand)!important;font-size:11px;font-weight:750;letter-spacing:.14em}.squoosh-studio{display:grid;grid-template-columns:minmax(0,1fr) 380px;margin-top:16px;border:1px solid #e1e5ed;border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 12px 32px #1f2a4412}.squoosh-preview-area{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;background:#fbfcfe}.preview-pane{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:570px}.preview-pane+.preview-pane{border-left:1px solid #e1e5ed}.preview-pane>header{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:0 16px;border-bottom:1px solid #e1e5ed;background:#fff}.preview-pane>header>div{display:grid;gap:1px;min-width:0}.preview-pane>header .ant-typography{color:#27344c;font-weight:650}.preview-pane>header span{overflow:hidden;color:var(--db-text-secondary);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.preview-canvas{position:relative;display:grid;min-width:0;min-height:0;place-items:center;padding:22px;background-color:#f3f5f9;background-image:linear-gradient(45deg,#e9edf4 25%,transparent 25%),linear-gradient(-45deg,#e9edf4 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e9edf4 75%),linear-gradient(-45deg,transparent 75%,#e9edf4 75%);background-position:0 0,0 12px,12px -12px,-12px 0;background-size:24px 24px}.image-dropzone{width:100%;max-width:420px}.image-dropzone.ant-upload-wrapper .ant-upload-drag{border-color:#cfd6e4;background:#ffffffe0}.image-dropzone.ant-upload-wrapper .ant-upload-drag:hover{border-color:#7667e8}.image-dropzone .ant-upload{padding:76px 18px!important}.image-dropzone .ant-upload-drag-icon .anticon{color:var(--db-brand)}.image-dropzone .ant-upload-text{color:#27344c!important}.image-dropzone .ant-upload-hint{color:var(--db-text-secondary)!important}.image-panel{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-width:0;min-height:0}.image-panel img{display:block;width:auto;max-width:100%;max-height:min(65vh,650px);object-fit:contain;border-radius:5px;box-shadow:0 10px 30px #00000052}.image-panel-meta{display:grid;gap:3px;min-width:0;text-align:center}.image-panel-meta .ant-typography{min-width:0;color:#46516a}.squoosh-settings{overflow-y:auto;padding:22px 20px;background:#fff}.settings-heading{margin-bottom:21px;padding-bottom:17px;border-bottom:1px solid #e7eaf0}.settings-heading .ant-typography{margin:0;color:#27344c}.settings-heading h4.ant-typography{margin-top:5px}.settings-heading .ant-typography-secondary{margin-top:4px;color:var(--db-text-secondary);font-size:13px}.option-row,.option-switch,.option-select{display:flex;justify-content:space-between;align-items:center;gap:16px}.option-row{margin-bottom:4px}.option-row .ant-typography,.option-switch .ant-typography,.option-select .ant-typography{color:#27344c}.option-row .ant-typography-secondary,.option-switch .ant-typography-secondary,.option-select .ant-typography-secondary{color:var(--db-text-secondary);font-size:12px}.option-switch{padding:15px 0;border-top:1px solid #e7eaf0}.option-select{padding:14px 0;border-top:1px solid #e7eaf0}.option-select .ant-select,.option-select .ant-input-number{flex:0 0 170px;width:170px}.advanced-options{margin:6px -12px 16px}.advanced-options .ant-collapse-header,.advanced-options .ant-collapse-content{color:#46516a!important}.advanced-options .ant-collapse-content{background:transparent}.advanced-options .ant-collapse-content-box{padding-top:0!important}.image-loading{display:grid;min-height:330px;place-items:center}.image-loading .ant-spin-text{color:#46516a}.preview-pane>header button.ant-btn.ant-btn-color-primary{min-width:116px;border-color:var(--db-primary)!important;background:var(--db-primary)!important;color:#fff!important;font-weight:650;text-shadow:none}.preview-pane>header button.ant-btn.ant-btn-color-primary>span,.preview-pane>header button.ant-btn.ant-btn-color-primary .anticon{color:#fff!important}.preview-pane>header button.ant-btn.ant-btn-color-primary:hover{border-color:var(--db-primary-hover)!important;background:var(--db-primary-hover)!important;color:#fff!important}.compression-saving{position:absolute;bottom:24px;left:50%;z-index:1;margin:0;padding:9px 12px;border-radius:4px;background:#fff7e6;color:#ad6800;font-weight:600;text-align:center;transform:translate(-50%);white-space:nowrap}.compression-saving.is-saving{background:#f6ffed;color:#389e0d}.clipboard-tabs{margin:-12px 0 16px}.clipboard-tabs .ant-tabs-nav{margin-bottom:0}.clipboard-list{display:grid;gap:8px}.clipboard-item .ant-card-body{position:relative;display:block;padding:12px 14px}.clipboard-item .ant-card-body>div{width:100%;min-width:0}.clipboard-actions{position:absolute;top:8px;right:8px;display:flex}.clipboard-item pre{width:100%;max-height:160px;overflow:auto;margin:5px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.clipboard-original{display:flex;gap:12px;margin-top:8px;font-size:12px}.port-manual-query{margin:-12px 0 16px}.port-query-result{margin-top:12px}.group-task-list{display:grid;gap:8px}.group-task-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.group-task-empty{margin:16px 0}.group-task-card{display:flex;align-items:center;justify-content:space-between;gap:16px}.group-task-card>div:first-child{display:grid;gap:2px}.group-task-card .ant-space{flex-wrap:nowrap}.group-task-card .ant-btn{width:72px}.group-task-selector{display:grid;gap:8px;width:100%}.group-task-selector .ant-card-body{padding:10px 14px}.group-task-projects{display:grid;gap:8px}.settings-page{width:100%;max-width:none}.settings-page>.ant-typography{margin:0}.settings-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.settings-page-header .ant-typography{margin:0}.settings-page-header>.ant-btn{min-width:96px}.settings-card{width:100%;margin-top:20px;border-radius:14px;border:1px solid #e4e8f1;box-shadow:0 2px 12px #1f2a440d}.settings-card h4.ant-typography{margin:0}.settings-icon-wrap{display:flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border-radius:10px;background:linear-gradient(135deg,#ece9fc,#ddd6fe)}.settings-icon{color:var(--db-brand);font-size:18px}.settings-title{display:flex;align-items:center;gap:14px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #eef0f6}.settings-title .ant-typography{margin:0}.settings-title .ant-typography-secondary{font-size:13px;margin-top:2px}.token-settings-form{display:grid;gap:0}.token-row{display:grid;grid-template-columns:200px 1fr;align-items:center;gap:20px;padding:16px 18px;margin:0 -6px;border-radius:10px;border:1px solid transparent;transition:background .18s,border-color .18s}.token-row:hover{background:#f8f9fc;border-color:#eef0f6}.token-row+.token-row{margin-top:2px}.token-row.is-configured{background:#fafbfe}.token-row-info{display:grid;gap:2px;min-width:0}.token-row-name-line{display:flex;align-items:center;gap:8px}.token-row-name{font-size:14px;white-space:nowrap}.token-row-hint{font-size:12px;line-height:1.4}.token-row-tag.ant-tag{margin:0;font-size:11px;line-height:18px;padding-inline:6px;border-radius:4px}.token-row .ant-form-item{margin:0;min-width:0}.token-row .ant-input,.token-row .ant-input-password{border-radius:8px}.script-header{display:flex;align-items:center;gap:16px}.script-header .ant-divider{flex:1;min-width:0;margin:16px 0}.script-header>.ant-btn{flex-shrink:0}.script-editor{margin-bottom:10px}.script-fields{display:grid;grid-template-columns:1fr 1.5fr;gap:12px}.script-fields .ant-form-item{margin-bottom:12px}.log-output{min-height:360px;max-height:58vh;overflow:auto;margin:0;padding:12px 0;border-radius:4px;background:#111827;color:#d1fae5;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}.log-line{min-height:19px}.log-line:hover{background:#ffffff0a}.log-line code{padding:0 15px;overflow-wrap:anywhere;color:inherit;white-space:pre-wrap;font:inherit}.log-link{color:#7dd3fc;text-decoration:underline;text-underline-offset:2px}.log-link:hover{color:#bae6fd}.ansi-black{color:#475569}.ansi-red,.log-error{color:#fb7185}.ansi-green,.log-success{color:#86efac}.ansi-yellow,.log-warning{color:#fcd34d}.ansi-blue{color:#93c5fd}.ansi-magenta{color:#f0abfc}.ansi-cyan{color:#67e8f9}.ansi-gray{color:#94a3b8}.ansi-white{color:#f8fafc}@media(max-width:1100px){.squoosh-studio{grid-template-columns:1fr}.squoosh-settings{border-top:1px solid #e1e5ed}.preview-pane{min-height:440px}.overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-grid,.overview-content-grid{grid-template-columns:1fr}}@media(max-width:900px){.overview-hero{align-items:flex-start;flex-direction:column;min-height:0}.overview-hero-mark{position:absolute;right:34px;bottom:30px;width:88px;height:88px;opacity:.55;font-size:34px}.overview-actions,.overview-hero-actions{width:100%}}@media(max-width:650px){.page{padding:16px 16px 28px}.service-card{align-items:flex-start;flex-direction:column}.script-fields{grid-template-columns:1fr}.token-row{grid-template-columns:1fr;gap:10px;padding:14px 12px}.overview-hero{padding:28px 22px;border-radius:16px}.overview-hero h1.ant-typography,.overview-hero h2.ant-typography{font-size:31px}.overview-hero .ant-btn{flex:1}.overview-metrics{gap:10px;margin-top:12px}.overview-metric-card .ant-card-body{gap:10px;padding:15px}.overview-metric-icon{width:36px;height:36px;border-radius:10px}.overview-metric-value{font-size:21px}.overview-panel .ant-card-head,.overview-panel .ant-card-body{padding-inline:16px}.overview-quick-grid,.overview-shortcuts{grid-template-columns:1fr}.overview-shortcuts-section,.overview-setup-card .ant-card-body,.overview-health-card .ant-card-body{padding:17px}.overview-service-row{align-items:flex-start;flex-wrap:wrap;padding:12px 8px}.overview-service-primary{flex-basis:100%}.overview-service-stats{width:100%;flex-wrap:wrap;gap:9px 14px;padding-left:0}.overview-service-arrow{margin-left:auto}.overview-footer{flex-wrap:wrap}.squoosh-page{padding-bottom:28px}.squoosh-preview-area{grid-template-columns:1fr}.preview-pane{min-height:360px}.preview-pane+.preview-pane{border-top:1px solid #e1e5ed;border-left:0}.preview-canvas{min-height:300px}}@media(max-width:460px){.overview-metrics,.todo-stats-grid{grid-template-columns:1fr!important}.overview-hero .ant-btn{flex-basis:100%}}@media(hover:none),(pointer:coarse){.overview-quick-card{min-height:72px}.sidebar .ant-menu-item{min-height:44px;line-height:44px}}:where(button,a,[role=button],.ant-menu-item):focus-visible{outline:3px solid rgba(101,85,232,.34);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.standalone-log-container{display:flex;flex-direction:column;height:100vh;background:#111827;overflow:hidden}.standalone-log-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;background:#1f2937;border-bottom:1px solid #374151;color:#f3f4f6;flex-shrink:0}.standalone-log-body{flex:1;min-height:0;display:flex;flex-direction:column;background:#111827}.standalone-log-body .log-output{flex:1;min-height:0;max-height:none!important;border-radius:0!important;margin:0!important;padding:16px 0}.page.is-static-page{padding:0!important;overflow:hidden;scrollbar-gutter:auto}.static-page-container{width:100%;height:100%;overflow:hidden;background:#fff}.static-page-iframe{width:100%;height:100%;border:none;display:block}.sidebar-bottom-inner{display:flex;align-items:center;gap:4px}.sidebar-bottom-inner>nav{flex:1;min-width:0}.sidebar-bottom-inner .ant-menu{flex:1;min-width:0}.sidebar-update-button{width:28px;height:28px;flex:none;color:var(--db-sidebar-muted);font-size:15px}.sidebar-update-button:hover{color:#d9d4ff!important;background:#ffffff14!important}.sidebar-update-button.has-update{color:#ffd166;background:#ffd1661a}.sidebar-update-button.has-update:hover{color:#ffe099!important;background:#ffd16629!important}:root[data-theme=light] .sidebar-update-button:hover{color:var(--db-primary)!important;background:var(--db-brand-soft)!important}:root[data-theme=light] .sidebar-update-button.has-update{color:#b26a00;background:#fff4d6}:root[data-theme=light] .sidebar-update-button.has-update:hover{color:#925600!important;background:#ffedbd!important}.changelog-title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:650;line-height:1.3}.changelog-bulb{display:grid;width:32px;height:32px;border-radius:9px;background:var(--db-brand-soft);color:var(--db-primary);place-items:center}.changelog-bulb.has-update{background:#fff4d6;color:#b26a00}.changelog-loading{display:grid;min-height:220px;place-items:center}.changelog-version-row{display:flex;align-items:center;gap:28px;margin-top:20px;padding:16px 18px;border:1px solid var(--db-border);border-radius:10px;background:var(--db-surface-subtle)}.changelog-version-row>div{display:grid;gap:2px}.changelog-version-row .ant-tag{margin-inline-start:auto;margin-inline-end:0}.changelog-source-alert{margin-top:14px}.changelog-release-list{max-height:min(52vh,520px);overflow-y:auto;margin-top:18px;padding-right:6px}.changelog-release{padding:0 2px 20px}.changelog-release+.changelog-release{padding-top:20px;border-top:1px solid var(--db-border)}.changelog-release-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:8px}.changelog-release-title{display:flex;align-items:center;gap:9px;min-width:0}.changelog-release-version.ant-tag{flex:none;margin:0;border-color:#d8d3ff;border-radius:6px;background:var(--db-brand-soft);color:var(--db-brand-strong);font-weight:650}.changelog-release-heading h4.ant-typography{min-width:0;margin:0;font-size:16px;font-weight:650;line-height:1.4}.changelog-release-heading>.ant-typography{flex:none;font-size:12px}.changelog-release-notes{display:block;color:var(--db-text-secondary);line-height:1.65;white-space:pre-wrap}@media(max-width:650px){.changelog-version-row{align-items:flex-start;flex-wrap:wrap;gap:14px 28px}.changelog-version-row .ant-tag{margin-inline-start:0}}.sidebar-error-btn{color:#a6adb4!important;border:none!important;background:transparent!important;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;flex-shrink:0;transition:all .2s}.sidebar-error-btn:hover{color:#ff4d4f!important;background:#ff4d4f26!important}.sidebar-error-btn.is-active{color:#fff!important;background:#ff4d4f!important}.workspace-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px;padding-top:2px}.workspace-page-header .ant-typography{margin:0}.workspace-page-header>div:first-child{max-width:720px}.workspace-page-eyebrow{display:block;margin-bottom:5px!important;color:var(--db-brand)!important;font-size:11px;font-weight:750;letter-spacing:.14em}.workspace-page-header h2.ant-typography{margin:0;color:var(--db-text);font-size:30px;font-weight:740;line-height:1.2;letter-spacing:-.025em}.workspace-page-description.ant-typography{max-width:680px;margin-top:6px;color:var(--db-text-secondary);font-size:13px;line-height:1.6}@media(max-width:650px){.workspace-page-header{align-items:flex-start;flex-direction:column;gap:16px;margin-bottom:22px}.workspace-page-header>:last-child,.workspace-page-header>:last-child>.ant-space{max-width:100%;flex-wrap:wrap}}.clipboard-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.clipboard-controls,.clipboard-settings{display:flex;flex-direction:column;align-items:flex-end}.clipboard-controls{gap:8px}.clipboard-settings{gap:6px}.clipboard-setting-row{display:flex;align-items:center;gap:8px}.clipboard-setting-label.ant-typography{color:var(--db-text-secondary);font-size:12px}.clipboard-deduplicate-select{width:160px}.clipboard-disabled-card{margin-top:24px;padding-block:48px;border-color:var(--db-border);border-radius:var(--db-radius);text-align:center;box-shadow:var(--db-shadow-sm)}.clipboard-disabled-copy{margin-top:8px}.clipboard-disabled-title.ant-typography{display:block;color:var(--db-text);font-size:16px}.clipboard-item{border-color:var(--db-border);border-radius:var(--db-radius);box-shadow:0 3px 12px #1f2a440a}.clipboard-item pre{scrollbar-width:none;-ms-overflow-style:none}.clipboard-item pre::-webkit-scrollbar{display:none;width:0;height:0}.clipboard-preview-wrap{position:relative;min-width:0}.clipboard-preview-fade{position:absolute;right:0;bottom:0;left:0;display:none;height:28px;background:linear-gradient(to bottom,rgba(255,255,255,0),var(--db-surface));pointer-events:none}.clipboard-preview-wrap.has-more .clipboard-preview-fade{display:block}.clipboard-item-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.clipboard-image-wrap,.clipboard-preview{margin-top:8px}.clipboard-image{display:block;max-width:100%;max-height:300px;cursor:pointer;border:1px solid var(--db-border);border-radius:8px}.clipboard-page a{color:var(--db-brand)}.clipboard-page a:hover{color:var(--db-brand-strong)}@media(max-width:650px){.clipboard-controls,.clipboard-settings{width:100%;align-items:stretch}.clipboard-controls>.ant-space{width:100%;flex-wrap:wrap}.clipboard-picker,.clipboard-deduplicate-select{flex:1;min-width:0;width:auto}.clipboard-setting-row{justify-content:space-between}}.launcher-loading{display:grid;min-height:180px;place-items:center}.launcher-service-link{color:var(--db-brand);font-weight:650}.launcher-service-link:hover{color:var(--db-brand-strong)}.launcher-branch.ant-typography{margin:0}.quick-launch-bar{margin-bottom:20px;padding:14px 16px;border:1px solid var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.quick-launch-label{color:var(--db-text-secondary);font-size:11px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.repo-icon-button.ant-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;padding:0;border-radius:6px}.launcher-terminal-button.ant-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;padding:0;border-radius:6px;color:var(--db-text-secondary)}.launcher-terminal-button.ant-btn:hover,.repo-generic-icon{color:var(--db-brand)}.script-running-filter{display:inline-flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.script-running-filter-label.ant-typography{font-size:13px}.service-modal-footer{display:flex;align-items:center;justify-content:space-between}.standalone-log-invalid{display:grid;color:#ef4444;place-items:center}.standalone-log-title-row,.standalone-log-actions{display:flex;align-items:center}.standalone-log-title-row{gap:16px}.standalone-log-actions{gap:12px}.standalone-log-title.ant-typography{margin:0;color:#f3f4f6;font-size:16px}.standalone-log-separator,.standalone-log-close.ant-btn{color:#9ca3af}.standalone-log-separator{font-weight:400}@media(max-width:650px){.quick-launch-bar .ant-space{align-items:stretch}.quick-launch-bar .ant-btn{flex:1}.standalone-log-header{align-items:flex-start;gap:10px}.standalone-log-actions{flex-wrap:wrap;justify-content:flex-end}}.port-diagnostic-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.port-diagnostic-page .port-manual-query{margin-bottom:18px;border-color:var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.port-diagnostic-page .port-manual-query .ant-card-body{padding:16px 18px}.port-diagnostic-page .port-query-result{margin-top:14px;padding-top:14px;border-top:1px solid var(--db-border)}.port-diagnostic-table .ant-table-container{overflow:hidden;border:1px solid var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.port-diagnostic-table .ant-table-thead>tr>th{background:var(--db-surface-subtle)}@media(max-width:650px){.port-diagnostic-page .port-manual-query .ant-space{width:100%}.port-diagnostic-page .port-manual-query .ant-input-number{flex:1}}.settings-page{max-width:1440px;margin-inline:auto;padding-bottom:40px}.settings-card-spaced{margin-bottom:20px}.settings-dev-config-entry .settings-title{margin-bottom:0}.settings-dev-config-entry .settings-title-actions{align-items:center}.settings-dev-config-entry .settings-title-actions>.ant-btn{margin-left:auto;flex:none}.settings-app-select{width:min(100%,260px)}.settings-form-item-flush.ant-form-item{margin-bottom:0}.settings-appearance-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 20px;border:1px solid var(--db-border);border-radius:10px;background:var(--db-surface-subtle)}.settings-appearance-hint{display:block;margin-top:3px}.settings-appearance-row .ant-segmented{flex:none}.settings-data-path{display:flex;align-items:center;gap:12px;min-width:0}.settings-data-path .ant-input{min-width:0;flex:1;background:var(--db-surface-subtle)}.settings-data-usage,.settings-backup-actions{display:flex;align-items:center;gap:10px;min-width:0}.settings-data-usage>.anticon{color:var(--db-primary);font-size:16px}.settings-data-usage .ant-btn-link{padding-inline:4px}.settings-data-usage .ant-btn-link:first-of-type{margin-left:auto}.settings-backup-actions{flex-wrap:wrap}.settings-backup-input{display:none}.settings-import-confirm{margin-top:12px}.settings-import-confirm .ant-typography{margin-bottom:8px}.settings-import-file-summary{display:grid;gap:2px;margin-bottom:12px;padding:10px 12px;border:1px solid var(--db-border);border-radius:8px;background:var(--db-surface-subtle)}.settings-import-complete{display:grid;justify-items:center;gap:8px;padding:14px 0 6px;text-align:center}.settings-import-complete .ant-typography{margin:0}.settings-import-complete-icon{display:grid;width:42px;height:42px;border-radius:50%;background:#52c41a;color:#fff;place-items:center;font-size:22px}.settings-storage-description.ant-typography{margin:4px 0 16px}.settings-storage-modal .ant-modal-body{max-height:calc(100vh - 220px);overflow-y:auto}.settings-storage-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.settings-storage-summary>div{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border:1px solid var(--db-border);border-radius:10px;background:var(--db-surface-subtle)}.settings-storage-summary>div>.ant-typography:last-child{font-size:20px;line-height:1.25}.settings-storage-section-title.ant-typography{margin:22px 0 10px}.settings-storage-table .ant-table-container{overflow:hidden;border:1px solid var(--db-border);border-radius:10px}.settings-storage-table .ant-table-thead>tr>th{background:var(--db-surface-subtle)}.settings-storage-location,.settings-largest-file>span{display:flex;align-items:center;min-width:0;gap:8px}.settings-storage-location>.anticon,.settings-largest-file .anticon{flex:none;color:var(--db-primary)}.settings-largest-file>span>.ant-typography{min-width:0;flex:1}.settings-storage-usage-cell{display:grid;grid-template-columns:minmax(80px,1fr) 45px;align-items:center;gap:10px}.settings-storage-usage-cell .ant-progress{margin:0}.settings-largest-files{overflow:hidden;border:1px solid var(--db-border);border-radius:10px}.settings-largest-file{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:10px 12px;border-bottom:1px solid var(--db-border)}.settings-largest-file:last-child{border-bottom:0}.settings-title-actions{margin-bottom:12px;padding-bottom:0;border-bottom:0}.settings-title-copy{min-width:0;flex:1}.settings-page-modal-form{margin-top:16px}.settings-page .ant-table-wrapper{overflow:hidden;border:1px solid var(--db-border);border-radius:10px}.settings-page .ant-table-thead>tr>th{background:var(--db-surface-subtle)}.settings-action-column-title{text-align:center}.settings-page a,.settings-page .ant-btn-link:not(.ant-btn-dangerous){color:var(--db-brand)}.settings-page a:hover,.settings-page .ant-btn-link:not(.ant-btn-dangerous):hover{color:var(--db-brand-strong)}@media(max-width:650px){.settings-appearance-row{align-items:stretch;flex-direction:column}.settings-appearance-row .ant-segmented{width:100%}.settings-appearance-row .ant-segmented-item{flex:1}.settings-data-path{align-items:stretch;flex-direction:column}.settings-data-usage{flex-wrap:wrap}.settings-data-usage .ant-btn-link,.settings-data-usage .ant-btn-link:first-of-type{margin-left:0}.settings-storage-summary{grid-template-columns:1fr}.settings-backup-actions .ant-btn{flex:1 1 150px}.settings-app-select{width:100%}.settings-title-actions{align-items:flex-start;flex-wrap:wrap}.settings-title-actions>.ant-btn{width:100%}}.dev-configurations-page{max-width:1120px;margin-inline:auto;padding-bottom:40px}.dev-configurations-page .ant-tabs-nav{margin-bottom:16px}.dev-configurations-page .ant-tabs-tab{padding:10px 4px}.dev-config-card{border:1px solid var(--db-border);background:var(--db-surface)}.dev-config-section-heading{display:flex;align-items:flex-start;gap:14px;padding-bottom:22px;border-bottom:1px solid var(--db-border)}.dev-config-section-heading .ant-typography{margin:0}.dev-config-section-heading>div:last-child>.ant-typography:first-child{display:block;margin-top:2px;font-size:16px}.dev-config-section-heading p.ant-typography{margin-top:4px}.dev-config-icon{display:grid;width:38px;height:38px;flex:none;border-radius:10px;place-items:center;font-size:20px}.npm-icon{background:#fff1f0;color:#d4380d}.git-icon{background:#f0f5ff;color:#2f54eb}.dev-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:24px;padding-top:24px}.dev-config-grid .ant-form-item{margin-bottom:22px}.dev-config-grid .ant-form-item-extra{min-height:0}.git-grid{max-width:760px}.git-ssh-key{grid-column:1 / -1}.nvm-status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:20px 0 4px}.nvm-status-grid>div{display:grid;gap:4px;min-width:0}.nvm-status-grid strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nvm-installed-versions{display:grid;gap:8px;padding-top:2px}.nvm-installed-versions>div{display:flex;flex-wrap:wrap;gap:6px}.nvm-grid .ant-input-group-addon{padding:0}.nvm-grid .ant-input-group-addon .ant-btn{height:30px}.nvm-icon{background:#f6ffed;color:#389e0d}.npm-global-packages{margin-top:2px;padding-top:20px;border-top:1px solid var(--db-border)}.npm-runtime-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:20px 0 4px}.npm-runtime-status>div{display:grid;gap:4px}.npm-global-packages-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.npm-global-packages-heading .ant-typography{margin:0}.npm-global-packages-heading p.ant-typography{margin-top:4px}.npm-install-row{display:flex;gap:8px;margin:16px 0}.npm-install-row .ant-input{min-width:0;flex:1}.npm-package-actions{display:flex;justify-content:flex-end;gap:8px}.npm-global-package-table{max-height:420px;overflow-y:auto}.npm-search-results{margin:8px 0 12px}.npm-show-more{display:block;margin:-6px auto 8px}.npm-install-progress{display:grid;justify-items:center;gap:12px;padding:24px 0 12px;text-align:center}.npm-install-confirm{display:grid;gap:10px;padding:8px 0}.npm-version-select{width:100%}.npm-version-picker .ant-cascader-menus{width:504px!important;min-width:504px!important}.npm-version-picker .ant-cascader-menu{width:168px!important;min-width:168px!important;font-size:14px}.npm-version-picker .ant-cascader-menu-item{padding:8px 12px}.npm-version-option{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;font-size:14px}.npm-version-published{color:var(--db-text-tertiary, #a6adbb);font-size:11px;font-weight:400;white-space:nowrap}.npm-install-confirm-modal .ant-modal-title{font-size:20px}.npm-install-confirm-modal .npm-install-confirm>.ant-typography:first-child{font-size:14px}@media(max-width:680px){.dev-config-grid{grid-template-columns:1fr}}.pr-review-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.pr-review-page a,.pr-review-page .ant-btn-link{color:var(--db-brand)}.pr-review-input-card,.pr-review-list-card,.pr-review-info-card,.pr-review-findings-card,.pr-review-metric-card,.pr-review-loading-card{border:1px solid var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.pr-review-input-card{background:linear-gradient(135deg,var(--db-brand-soft),#fff 62%)}.pr-review-empty{padding:24px 0}.pr-review-form-label{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px}.pr-review-demo-action{height:auto;padding:0;font-size:12px}.pr-review-inline-action{height:auto;padding:0}.pr-review-inline-divider{margin:0 2px}.pr-review-list{display:grid;gap:10px}.pr-review-list-item{border:1px solid var(--db-border);border-radius:10px;background:var(--db-surface);transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.pr-review-list-item:hover{border-color:#6555e87a}.pr-review-list-item.is-selected{border-color:var(--db-brand);background:var(--db-brand-soft);box-shadow:0 0 0 2px #6555e81a}.pr-review-list-row,.pr-review-list-primary,.pr-review-list-toolbar,.pr-review-file-header{display:flex;align-items:center}.pr-review-list-row{justify-content:space-between;flex-wrap:wrap;gap:12px}.pr-review-list-primary{min-width:0;flex:1;gap:12px}.pr-review-list-copy{min-width:0;flex:1}.pr-review-list-title{font-size:14px}.pr-review-list-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:6px;color:var(--db-text-secondary);font-size:12px}.pr-review-list-separator{color:var(--db-border)}.pr-review-list-toolbar{justify-content:space-between;gap:16px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--db-border)}.pr-review-list-card{margin-top:16px}.pr-review-selection-count{font-size:13px}.pr-review-loading-card{padding:40px 0;text-align:center}.pr-review-loading-icon{color:var(--db-brand);font-size:32px}.pr-review-results{width:100%;padding-bottom:24px}.pr-review-branch-tag.ant-tag{margin:0;border-color:#6555e83d;background:var(--db-brand-soft);color:var(--db-brand-strong)}.pr-review-detail-label{font-size:12px}.pr-review-metric-card{height:100%;text-align:center}.pr-review-metric-card .ant-statistic-content{color:var(--db-brand-strong)}.pr-review-metric-card.is-muted .ant-statistic-content{color:var(--db-text-secondary)}.pr-review-success{color:var(--db-success);font-size:16px}.pr-review-file-header{width:92%;justify-content:space-between;flex-wrap:wrap;gap:8px}.pr-review-suggestion-badge .ant-badge-count{background:var(--db-brand)}.pr-review-code{margin:4px 0 0;padding:7px 10px;overflow-x:auto;border:1px solid var(--db-border);border-radius:6px;background:var(--db-surface-subtle);color:var(--db-text);font-size:12px}.pr-review-issue-copy{width:100%}.pr-review-ignored-list{max-height:200px;overflow-y:auto}.pr-review-ignored-tag{color:var(--db-text-secondary)}.pr-review-comment-body{margin-top:12px}.pr-review-comment-context{margin-bottom:12px!important;font-size:13px}@media(max-width:650px){.pr-review-form-label,.pr-review-list-toolbar{align-items:flex-start;flex-direction:column}.pr-review-list-toolbar .ant-btn{width:100%}}.jira-filters-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.jira-filters-page a,.jira-filter-modal a{color:var(--db-brand)}.jira-filter-tabs-bar{display:flex;width:100%;min-width:0;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;padding:4px 14px 0;border:1px solid var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.jira-filter-tabs{min-width:0;flex:1;overflow:hidden}.jira-filter-tabs .ant-tabs-nav{margin-bottom:0}.jira-filter-tabs .ant-tabs-tab-active .ant-tabs-tab-btn,.jira-filter-tabs .ant-tabs-tab:hover{color:var(--db-brand)}.jira-filter-tabs .ant-tabs-ink-bar{background:var(--db-brand)}.jira-filter-refresh{flex-shrink:0}.jira-filters-table{overflow:hidden;border:1px solid var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.jira-filters-table .ant-table-thead>tr>th{background:var(--db-surface-subtle);color:var(--db-text-secondary);font-size:12px;letter-spacing:.02em}.jira-filters-table .ant-table-thead>tr>th,.jira-filters-table .ant-table-tbody>tr>td{padding-inline:8px!important}.jira-filters-table .ant-table-cell{white-space:normal}.jira-issue-summary{display:flex;min-width:0;align-items:flex-start;flex-wrap:nowrap;gap:8px}.jira-issue-link{flex:1;min-width:0;color:var(--db-brand);font-weight:550;display:-webkit-box!important;-webkit-line-clamp:2!important;line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important;text-overflow:ellipsis!important;word-break:break-word!important;white-space:normal!important;line-height:1.45;max-height:2.9em}.jira-todo-complete,.jira-todo-pending{margin-top:3px}.jira-filter-loading,.jira-filter-error,.jira-filter-empty{padding:64px 0;text-align:center}.jira-filter-modal .ant-table{margin-top:16px}.jira-filter-external-icon{color:var(--db-brand);cursor:pointer;font-size:11px}@media(max-width:650px){.jira-filter-tabs-bar{align-items:stretch;flex-direction:column;padding:4px 12px 12px}.jira-filter-refresh{width:100%}}.todo-page,.todo-archive-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.todo-page.is-select-mode{padding-bottom:112px}.todo-page-header{margin-bottom:24px;padding-top:2px}.todo-header-copy{max-width:720px}.todo-page-title{color:var(--db-text)!important;font-size:30px!important;font-weight:740!important;letter-spacing:-.025em}.todo-page-description{max-width:680px;margin-top:6px!important;font-size:13px;line-height:1.6}.todo-header-actions{display:flex;align-items:flex-end;justify-content:flex-end}.todo-header-button-group{justify-content:flex-end}.todo-header-button-group .ant-btn{min-height:36px}.todo-archive-link.ant-btn{border-color:#6555e83d;color:var(--db-brand-strong)}.todo-archive-link.ant-btn:hover{border-color:var(--db-brand);background:var(--db-brand-soft)}.todo-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.todo-stat-card,.todo-quick-add-card,.todo-filter-card,.todo-item-card,.todo-archive-toolbar,.todo-archive-card{border:1px solid var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.todo-stat-card .ant-card-body{min-height:92px;padding:15px 17px}.todo-stat-card{overflow:hidden;background:var(--db-surface);transition:border-color .18s ease,box-shadow .18s ease}.todo-stat-card:hover{border-color:#6555e83d;box-shadow:0 8px 22px #1f2a4414}.todo-stat-head,.todo-stat-rate{display:flex;align-items:center;justify-content:space-between;gap:12px}.todo-stat-label{color:var(--db-text-secondary);font-size:12px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.todo-stat-icon{display:grid;width:28px;height:28px;flex:none;border-radius:8px;background:var(--db-brand-soft);color:var(--db-brand);font-size:13px;place-items:center}.todo-stat-card.is-pending .todo-stat-icon{background:#fff5e6;color:var(--db-warning)}.todo-stat-card.is-completed .todo-stat-icon{background:#eaf7ee;color:var(--db-success)}.todo-stat-value{margin-top:5px;color:var(--db-text);font-size:25px;font-weight:720;line-height:1.15}.todo-stat-value.is-active{color:var(--db-warning)}.todo-stat-value.is-complete{color:var(--db-success)}.todo-stat-warning{display:inline-block;margin-left:7px;color:var(--db-danger);font-size:11px;font-weight:600;vertical-align:middle}.todo-stat-percentage{color:var(--db-brand-strong);font-size:15px}.todo-stat-progress{margin-top:18px}.todo-stat-progress .ant-progress-bg{background:var(--db-brand)!important}.todo-quick-add-card{margin-bottom:18px;border-color:#6555e838;background:linear-gradient(135deg,var(--db-brand-soft),var(--db-surface) 68%)}.todo-quick-add-card .ant-card-body{padding:17px 18px 18px}.todo-quick-add-header{display:flex;align-items:center;gap:10px;margin-bottom:13px}.todo-quick-add-icon{display:grid;width:30px;height:30px;flex:none;border-radius:9px;background:var(--db-surface);color:var(--db-brand);font-size:13px;place-items:center;border:1px solid rgba(101,85,232,.22);box-shadow:0 2px 6px #6555e814}:root[data-theme=light] .todo-quick-add-card{border-color:#5b50e038}:root[data-theme=light] .todo-quick-add-icon{border-color:#5b50e038;box-shadow:0 2px 6px #5b50e014}.todo-quick-add-title,.todo-quick-add-hint{display:block}.todo-quick-add-title{color:var(--db-text);font-size:13px;font-weight:700;line-height:1.35}.todo-quick-add-hint{margin-top:1px;color:var(--db-text-secondary);font-size:11px;line-height:1.4}.todo-quick-add-row{display:grid;grid-template-columns:minmax(240px,1fr) 132px 132px auto;align-items:center;gap:12px}.todo-quick-title{min-width:0}.todo-quick-select{width:130px}.todo-filter-card{margin-bottom:16px;background:var(--db-surface)}.todo-filter-card .ant-card-body{padding:13px 14px}.todo-search-input{width:210px}.todo-filter-select{width:132px}.todo-mobile-sort-select{display:none;width:152px}.todo-filter-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px}.todo-status-filter{flex:none}.todo-filter-tools{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.todo-status-filter .ant-radio-button-wrapper{min-width:84px;text-align:center}.todo-batch-bar{position:fixed;z-index:30;bottom:24px;left:calc(var(--todo-sidebar-width, 240px) + (100vw - var(--todo-sidebar-width, 240px)) / 2);display:flex;box-sizing:border-box;width:min(calc(100vw - var(--todo-sidebar-width, 240px) - clamp(20px,3.5vw,40px) - clamp(20px,3.5vw,40px)),1440px);align-items:center;justify-content:space-between;gap:16px;padding:11px 16px;border:1px solid rgba(101,85,232,.28);border-radius:10px;background:var(--db-brand-soft);box-shadow:0 14px 38px #1f2a442e;transform:translate(-50%)}.workbench{--todo-sidebar-width: 240px}.workbench:has(>.sidebar.ant-layout-sider-collapsed){--todo-sidebar-width: 64px}.todo-batch-count,.todo-batch-count strong{color:var(--db-brand-strong)}.todo-table-header{display:flex;align-items:center;gap:8px;margin-bottom:7px;padding:8px 17px;border-bottom:1px solid var(--db-border);color:var(--db-text-secondary);font-size:12px}.todo-table-title{flex:1;font-weight:650}.todo-table-created,.todo-item-created{display:flex;width:68px;align-items:center;justify-content:center;text-align:center}.todo-table-filter,.todo-item-meta{display:flex;width:104px;justify-content:center}.todo-table-filter{color:var(--db-text-secondary);font-size:11px;font-weight:700;letter-spacing:.02em}.todo-sort-header-button{display:inline-flex;min-width:0;align-items:center;justify-content:center;gap:3px;padding:2px;border:0;border-radius:4px;background:transparent;color:var(--db-text-secondary);cursor:pointer;font:inherit;font-weight:700;letter-spacing:.02em;transition:color .16s ease,background .16s ease}.todo-sort-header-button:hover,.todo-sort-header-button:focus-visible,.todo-sort-header-button.is-active{background:var(--db-brand-soft);color:var(--db-brand-strong)}.todo-sort-header-button:focus-visible{outline:2px solid var(--db-primary);outline-offset:1px}.todo-sort-header-icon{display:inline-flex;width:9px;flex-direction:column;align-items:center;font-size:7px;line-height:5px}.todo-sort-header-icon.is-single{font-size:9px;line-height:1}.todo-created-icon{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border-radius:6px;color:var(--db-text-secondary);cursor:help;font-size:14px;transition:color .16s ease,background .16s ease}.todo-created-icon:hover,.todo-created-icon:focus-visible{background:var(--db-brand-soft);color:var(--db-brand-strong);outline:none}.todo-table-date,.todo-item-date{width:104px;text-align:center}.todo-table-actions,.todo-item-actions{width:120px;text-align:right}.todo-select-mode-icon{position:absolute;top:0;right:0;bottom:0;left:0;display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;cursor:pointer;font-size:16px;line-height:1;transition:color .18s ease,opacity .14s ease}.todo-select-control{position:relative;width:16px;height:16px}.todo-select-control-option{transition:opacity .14s ease}.todo-select-control-option.is-hidden{opacity:0;pointer-events:none}.todo-select-all-checkbox.ant-checkbox-wrapper{width:16px;height:16px;position:absolute;top:0;right:0;bottom:0;left:0;align-items:center;line-height:1}.todo-select-all-checkbox .ant-checkbox{top:0}.todo-list-items,.todo-archive-list{display:flex;flex-direction:column;gap:10px}.todo-item-card{overflow:hidden;background:var(--db-surface);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.todo-item-card:hover{border-color:#6555e852;box-shadow:0 8px 24px #1f2a4414}.todo-archive-card{background:var(--db-surface);transition:border-color .18s ease,box-shadow .18s ease}.todo-archive-card:hover{border-color:#6555e847;box-shadow:0 8px 24px #1f2a4412}.todo-item-card.is-selected{border-color:var(--db-brand);background:linear-gradient(90deg,var(--db-brand-soft),#fff 44%);box-shadow:0 0 0 2px #6555e81c}.todo-item-card.is-completed{border-color:#e8eaf0;background:var(--db-surface-subtle)}.todo-item-card .ant-card-body,.todo-archive-card .ant-card-body{padding:14px 16px}.todo-list-row,.todo-archive-row{display:flex;align-items:center;gap:8px}.todo-item-check{display:flex;width:22px;flex:none;align-items:center;justify-content:center}.todo-item-checkbox{transform:scale(1.08)}.todo-item-copy{min-width:0;flex:1}.todo-item-title{color:var(--db-text);font-size:15px;font-weight:620;line-height:1.45;overflow-wrap:anywhere}.todo-item-card.is-completed .todo-item-title,.todo-archive-card.is-completed .todo-item-title{color:var(--db-text-secondary);text-decoration:line-through}.todo-item-description{margin-top:3px;overflow:hidden;color:var(--db-text-secondary);font-size:11px;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.todo-item-tag{max-width:100%;margin:0;padding-inline:5px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.todo-inline-icon{margin-right:4px}.todo-due-text.ant-typography{color:var(--db-text);font-size:12px;white-space:nowrap}.todo-due-text.is-overdue.ant-typography{color:var(--db-danger)}.todo-overdue-status{display:block;margin-top:1px;font-size:10px;font-weight:650}.todo-empty-value{font-size:12px}.todo-item-actions .ant-space{justify-content:flex-end}.todo-action-button{color:var(--db-text-secondary)}.todo-action-button.is-archive{color:#b85f09}.todo-item-card:not(:hover):not(.is-selected) .todo-item-actions{opacity:.72}.todo-select-mode-icon{color:var(--db-text-secondary)}.todo-select-mode-icon.is-active,.todo-select-mode-icon:hover,.todo-link,.todo-page a,.todo-archive-page a{color:var(--db-brand)}.todo-archive-toolbar{margin-bottom:16px;background:var(--db-surface)}.todo-archive-toolbar .ant-card-body{padding:13px 15px}.todo-archive-toolbar-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.todo-archive-search{width:240px}.todo-archive-column-meta{display:flex;width:120px;justify-content:center}.todo-archive-column-date{width:140px;text-align:center}.todo-archive-column-actions{width:100px;text-align:right}.todo-loading-state{display:flex;min-height:220px;align-items:center;justify-content:center;flex-direction:column;gap:13px;border:1px dashed var(--db-border);border-radius:var(--db-radius);background:var(--db-surface);text-align:center}.todo-state-card{padding:48px 24px;border:1px dashed var(--db-border);border-radius:var(--db-radius);background:var(--db-surface)}.todo-page-footer{margin-top:24px;text-align:right}.todo-modal-form{margin-top:16px}.todo-modal-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.todo-modal-date{width:100%}.todo-brand-text,.todo-restore-icon{color:var(--db-brand)}.todo-title-icon{margin-right:9px}.todo-tone-icon.is-brand,.todo-tone-icon.is-purple{color:var(--db-brand)}.todo-tone-icon.is-danger{color:var(--db-danger)}.todo-tone-icon.is-warning{color:#bd7107}.todo-tone-icon.is-success{color:var(--db-success)}.todo-tone-icon.is-orange{color:#c5680a}.todo-link{font-weight:500;text-decoration:underline;text-underline-offset:2px}.todo-link.is-jira{font-weight:650}@media(max-width:900px){.todo-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.todo-quick-add-row{grid-template-columns:repeat(2,minmax(0,1fr)) auto}.todo-quick-title{grid-column:1 / -1}.todo-quick-select{width:100%}.todo-filter-row{align-items:stretch;flex-direction:column;gap:12px}.todo-filter-tools{display:grid;grid-template-columns:minmax(190px,1fr) repeat(3,minmax(125px,auto));justify-content:stretch}.todo-search-input,.todo-filter-select,.todo-mobile-sort-select{width:100%}.todo-mobile-sort-select{display:block}.todo-table-header,.todo-archive-table-header{display:none}.todo-list-row,.todo-archive-row{align-items:flex-start;flex-wrap:wrap}.todo-list-row>.todo-item-copy{flex-basis:calc(100% - 42px)}.todo-archive-row>.todo-item-copy{flex-basis:100%}.todo-item-meta,.todo-item-created,.todo-archive-column-meta,.todo-item-date,.todo-archive-column-date{display:flex;width:auto;flex:1 1 150px;align-items:center;justify-content:flex-start;gap:7px;text-align:left}.todo-item-meta:before,.todo-item-created:before,.todo-item-date:before,.todo-archive-column-meta:before,.todo-archive-column-date:before{flex:none;color:var(--db-text-secondary);content:attr(data-label);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.todo-item-actions,.todo-archive-column-actions{width:auto;margin-left:auto;text-align:right}}@media(max-width:650px){.todo-page,.todo-archive-page{padding-bottom:24px}.todo-page.is-select-mode{padding-bottom:164px}.todo-page-title{font-size:27px!important}.todo-header-actions{width:100%;align-items:stretch}.todo-header-button-group,.todo-archive-header-actions{display:flex;width:100%}.todo-header-button-group .ant-space-item,.todo-archive-header-actions .ant-space-item{display:flex;flex:1 1 140px}.todo-header-button-group .ant-btn,.todo-archive-header-actions .ant-btn{width:100%}.todo-stat-card .ant-card-body{min-height:88px;padding:14px 15px}.todo-quick-add-card .ant-card-body{padding:15px}.todo-quick-add-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.todo-quick-add-row>.ant-btn{grid-column:1 / -1;width:100%}.todo-quick-add-row .ant-select{width:100%!important}.todo-status-filter{display:flex;width:100%;overflow-x:auto}.todo-status-filter .ant-radio-button-wrapper{min-width:max-content;flex:1;padding-inline:12px;white-space:nowrap}.todo-filter-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.todo-search-input,.todo-mobile-sort-select{grid-column:1 / -1}.todo-batch-bar,.todo-archive-toolbar-row{align-items:flex-start;flex-direction:column}.todo-batch-bar>.ant-space{width:100%}.todo-batch-bar{bottom:12px;gap:8px}.todo-search-input,.todo-filter-select,.todo-mobile-sort-select,.todo-archive-search{width:100%}.todo-item-card .ant-card-body,.todo-archive-card .ant-card-body{padding:13px 14px}.todo-item-meta,.todo-item-created,.todo-archive-column-meta{flex:1 1 calc(50% - 6px)}.todo-item-date,.todo-archive-column-date{flex-basis:100%}.todo-item-actions,.todo-archive-column-actions{width:100%;padding-top:2px;border-top:1px solid var(--db-border)}.todo-item-actions .ant-space,.todo-archive-column-actions .ant-space{width:100%;justify-content:flex-end}.todo-state-card{padding:38px 16px}.todo-page-footer .ant-btn{width:100%}.todo-modal-grid{grid-template-columns:1fr}}.error-logs-page{width:100%}.error-logs-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.error-logs-search{width:min(280px,100%)}.error-logs-search-icon{color:var(--db-text-secondary)}.error-logs-list{display:grid;gap:10px}.error-log-item{overflow:hidden;border-color:var(--db-border);border-left:4px solid var(--db-danger);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.error-log-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.error-log-copy{min-width:0;flex:1}.error-log-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}.error-log-tag{margin:0}.error-log-timestamp{font-size:12px}.error-log-message{display:block;color:var(--db-text);font-size:14px;overflow-wrap:anywhere}.error-log-actions{flex-shrink:0}.error-log-copy-success,.error-logs-empty-icon{color:var(--db-success)}.error-log-details{margin-top:10px}.error-log-output{min-height:auto;max-height:360px;margin:0;padding:10px;border-radius:8px;font-size:12px}.error-log-output code{color:#fca5a5}.error-logs-empty-card{margin-top:16px;padding-block:48px;border-color:var(--db-border);border-radius:var(--db-radius);text-align:center;box-shadow:var(--db-shadow-sm)}.error-logs-empty-icon{font-size:48px}.error-logs-empty-copy{margin-top:8px}.error-logs-empty-title{display:block;color:var(--db-text);font-size:16px}@media(max-width:650px){.error-logs-toolbar{align-items:stretch}.error-logs-search{width:100%}.error-log-summary{flex-direction:column}.error-log-actions{align-self:flex-end}}.postman-container{display:flex;height:100%;min-height:0;width:100%;background-color:var(--db-bg);color:var(--db-text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,PingFang SC,sans-serif;overflow:hidden;margin:0}.postman-sidebar{width:260px;min-width:260px;max-width:320px;border-right:1px solid var(--db-border);display:flex;flex-direction:column;background-color:var(--db-surface);transition:width .2s ease,min-width .2s ease}.sidebar-header{padding:14px 16px;border-bottom:1px solid var(--db-border);background-color:var(--db-surface);display:flex;flex-direction:column;gap:10px}.sidebar-title-row{display:flex;justify-content:space-between;align-items:center}.sidebar-toolbar{display:flex;gap:6px;align-items:center}.sidebar-search-row{display:flex;width:100%}.sidebar-search-row .ant-input-affix-wrapper{min-height:32px;padding:4px 8px;border-radius:6px}.sidebar-search-row .ant-input{font-size:13px}.sidebar-content{flex:1;overflow-y:auto;padding:8px 0}.collection-group{margin-bottom:2px}.collection-header{display:flex;justify-content:space-between;align-items:center;padding:6px 12px 6px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s;min-height:36px}.collection-header:hover{background-color:var(--db-surface-subtle)}.collection-title-wrap{display:flex;align-items:center;min-width:0;flex:1;margin-right:8px}.collection-name{min-width:0;flex:0 1 auto}.collection-count{font-size:11px;margin-left:6px;flex-shrink:0}.tree-node-row{display:flex;align-items:center;padding:6px 12px 6px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:13px;transition:background-color .15s;position:relative;border-left:3px solid transparent;min-height:34px}.tree-node-row:hover{background-color:var(--db-surface-subtle)}.tree-node-row.is-active{background-color:var(--db-brand-soft);border-left-color:var(--db-brand);font-weight:600}.tree-node-row .node-title{flex:1;min-width:0;color:var(--db-text)}.tree-node-row .node-actions,.collection-header .collection-actions{display:flex;align-items:center;flex-shrink:0;opacity:0;visibility:hidden;transition:opacity .15s ease-in-out,visibility .15s ease-in-out}.tree-node-row:hover .node-actions,.collection-header:hover .collection-actions{opacity:1;visibility:visible}.node-icon{margin-right:8px;font-size:14px}.postman-workspace{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background-color:var(--db-bg)}.request-editor{padding:14px 20px 12px;border-bottom:1px solid var(--db-border);display:flex;flex-direction:column;gap:12px;background-color:var(--db-surface);box-shadow:0 2px 8px #1f2a4408;max-height:46%;overflow-y:auto}.request-bar{display:flex;flex-direction:column;gap:8px}.request-context{display:flex;align-items:center;gap:7px;min-width:0;font-size:12px}.request-context>.ant-typography:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.request-context .ant-typography:not(.request-dirty){min-width:0}.request-dirty{margin-left:4px;white-space:nowrap}.request-editor-empty{display:flex;align-items:center;justify-content:center;height:240px;color:var(--db-text-secondary)}.request-name-input{border:none!important;background:transparent!important;box-shadow:none!important;font-size:16px!important;font-weight:700!important;color:var(--db-text)!important;padding-left:0!important;margin-bottom:2px}.request-name-input:focus-visible{border-radius:6px!important;box-shadow:0 0 0 3px #6555e83d!important}.request-url-row{display:flex;gap:8px;align-items:center;min-width:0}.url-input{flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace}.method-select .ant-select-selector{font-weight:700}.request-tabs-wrap{margin-top:4px;min-height:0}.tab-pane-content{padding:8px 0}.request-editor .ant-table-placeholder>td{height:40px;padding:0 16px!important;color:var(--db-text-secondary);line-height:40px;text-align:left}.request-editor .ant-table-placeholder .ant-empty-normal{height:40px;margin:0!important;line-height:40px}.response-panel{flex:1;min-height:220px;display:flex;flex-direction:column;overflow:hidden;background-color:var(--db-surface);margin:12px 20px 16px;border:1px solid var(--db-border);border-radius:10px;box-shadow:0 6px 18px #1f2a440d}.response-panel.empty-state,.response-panel.loading-state{align-items:center;justify-content:center}.loading-spinner{display:flex;flex-direction:column;align-items:center}.response-header-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid var(--db-border);background-color:var(--db-surface-subtle)}.response-status-group{display:flex;align-items:center;gap:16px}.response-meta-item{font-size:13px;color:var(--db-text-secondary);display:flex;align-items:center;gap:4px;font-weight:500}.response-body-wrap{flex:1;overflow:hidden;display:flex;flex-direction:column;padding:0 20px 16px;background-color:var(--db-surface)}.response-body-wrap .ant-tabs{height:100%;display:flex;flex-direction:column}.response-body-wrap .ant-tabs-content-holder{flex:1;overflow-y:auto}.code-viewer{background-color:#1e1e1e;border:1px solid #333333;border-radius:6px;padding:14px;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:13px;color:#c4b5fd;overflow-x:auto;white-space:pre-wrap;word-break:break-all}.postman-loading{display:grid;min-height:360px;place-items:center}.postman-sidebar-title.ant-typography{color:var(--db-text);font-size:15px}.sidebar-toolbar .postman-toolbar-action{flex:1}.postman-empty{margin-top:40px}.postman-empty-copy{margin-top:4px;color:var(--db-text-secondary);font-size:12px;line-height:1.6}.postman-empty-emphasis.ant-typography{color:var(--db-brand)}.collection-caret{display:inline-flex;align-items:center;margin-right:6px;color:var(--db-text-secondary);font-size:11px}.postman-import-pane{padding-block:16px}.postman-import-pane.is-text{padding-block:12px}.postman-import-icon{color:var(--db-brand);font-size:48px}.postman-field-hint.ant-typography{display:block;margin-bottom:8px}.postman-code-input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:13px}.postman-loading-icon{margin-bottom:12px;color:var(--db-brand);font-size:28px}.response-status-tag.ant-tag{padding:2px 8px;font-size:13px}.response-headers-table{margin-top:8px}.method-select{width:110px}.environment-select{width:160px}.postman-add-row{margin-top:8px}.request-body-mode{margin-bottom:12px}.auth-pane{max-width:520px}.auth-field{display:flex;align-items:center;margin-bottom:12px}.auth-field.is-compact{margin-bottom:6px}.auth-field:last-child{margin-bottom:0}.auth-field-label.ant-typography{width:80px;flex-shrink:0}.auth-field-control{min-width:0;flex:1}.auth-field-stack{width:100%}.postman-rename-input{margin-top:12px}.environment-modal-stack{width:100%}.environment-modal-toolbar,.environment-editor-header{display:flex;align-items:center;gap:12px}.environment-modal-toolbar{flex-wrap:wrap}.environment-active-select{width:220px}.environment-editor{padding:16px;border:1px solid var(--db-border);border-radius:var(--db-radius);background:var(--db-surface-subtle)}.environment-editor-header{justify-content:space-between;margin-bottom:12px}.environment-name-input{width:260px;font-weight:650}.environment-add-variable{margin-top:12px}.environment-empty{padding-block:32px;color:var(--db-text-secondary);text-align:center}.code-viewer.raw{color:#e6e6e6}.postman-container .ant-typography-secondary,.response-meta-item{color:var(--db-text-secondary)}.tree-node-row:focus-visible,.collection-header:focus-visible{outline:3px solid rgba(101,85,232,.28);outline-offset:-3px}.tree-node-row:focus-within .node-actions,.collection-header:focus-within .collection-actions{opacity:1;visibility:visible}@media(max-width:1100px){.postman-sidebar{width:230px;min-width:230px}.request-editor{padding-inline:18px}.response-panel{margin-inline:18px}.request-url-row{display:grid;grid-template-columns:96px minmax(0,1fr) 150px auto auto}.request-url-row .url-input{min-width:0}}@media(max-width:900px){.postman-container{display:flex;flex-direction:column;overflow-y:auto}.postman-sidebar{width:100%;min-width:0;max-width:none;max-height:280px;flex:none;border-right:0;border-bottom:1px solid var(--db-border)}.sidebar-header{padding:12px 14px}.sidebar-content{min-height:110px}.postman-workspace{min-height:650px;flex:none}.request-url-row .url-input{min-width:min(360px,55%)}.request-editor{max-height:none}}@media(max-width:650px){.postman-sidebar{max-height:250px}.request-editor{padding:14px}.request-url-row{display:grid;grid-template-columns:1fr 1fr;align-items:stretch}.request-url-row .method-select{width:calc(35% - 4px)!important}.request-url-row .url-input{min-width:0;width:auto;grid-column:2}.request-url-row>.ant-select:not(.method-select){width:100%!important;grid-column:1 / -1}.request-url-row .send-btn,.request-url-row>.ant-btn{flex:1;min-width:0}.request-url-row .send-btn{grid-column:1}.request-url-row .send-btn+.ant-btn{grid-column:2}.response-panel{min-height:360px;margin:12px 14px 18px}.response-header-bar{align-items:flex-start;gap:10px;padding:11px 14px}.response-status-group{flex-wrap:wrap;gap:8px 12px}.response-body-wrap{padding-inline:14px}}@media(hover:none),(pointer:coarse){.collection-header,.tree-node-row{min-height:44px}.tree-node-row .node-actions,.collection-header .collection-actions{opacity:1;visibility:visible}}@media(prefers-reduced-motion:reduce){.collection-header,.tree-node-row,.node-actions,.collection-actions{transition:none}}.bookmark-sync-page{width:100%;margin:0;padding-bottom:40px}.bookmark-sync-loading{display:grid;min-height:240px;place-items:center}.bookmark-sync-alert,.bookmark-browser-grid,.bookmark-control-card,.bookmark-sync-result{margin-bottom:24px}.bookmark-sync-alert{border-radius:var(--db-radius)}.bookmark-browser-card,.bookmark-control-card{height:100%;border-color:var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.bookmark-browser-card .ant-card-head,.bookmark-control-card .ant-card-head{border-bottom-color:var(--db-border)}.bookmark-browser-icon{color:var(--db-brand);font-size:18px}.bookmark-browser-icon.is-edge,.bookmark-browser-count.is-edge{color:var(--db-brand-strong)}.bookmark-browser-path.ant-typography{margin-bottom:12px;color:var(--db-text-secondary);font-size:12px}.bookmark-browser-details,.bookmark-control-stack{width:100%}.bookmark-browser-count.ant-typography{color:var(--db-brand);font-size:18px}.bookmark-control-label.ant-typography{display:block;margin-bottom:8px}.bookmark-control-divider.ant-divider{margin-block:8px}.bookmark-control-actions{width:100%}.bookmark-sync-button{min-width:140px}.bookmark-sync-result{border-radius:var(--db-radius)}.bookmark-result-details{margin-top:8px}.bookmark-backup-label.ant-typography,.bookmark-backup-item.ant-list-item{font-size:12px}.bookmark-backup-item.ant-list-item{padding-block:2px}.bookmark-preview-stack{width:100%;margin-top:12px}.bookmark-mode-alert.ant-alert-info{border-color:#d8d3ff;background:var(--db-brand-soft)}.bookmark-mode-alert.ant-alert-info .ant-alert-icon{color:var(--db-brand)}.bookmark-preview-empty{padding-block:30px;color:var(--db-text-secondary);text-align:center}.bookmark-sync-page a{color:var(--db-brand)}.bookmark-sync-page a:hover{color:var(--db-brand-strong)}@media(max-width:650px){.bookmark-control-actions .ant-btn{flex:1 1 150px}.bookmark-control-card .ant-radio-group{display:grid;width:100%}.bookmark-control-card .ant-radio-button-wrapper{width:100%;text-align:center}}.file-organizer-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.file-organizer-card{border-color:var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.file-organizer-setup-card,.file-organizer-stats-card{margin-bottom:16px}.file-organizer-field-label.ant-typography{display:block;margin-bottom:8px}.file-organizer-presets{margin-top:8px}.file-organizer-helper-label.ant-typography{color:var(--db-text-secondary);font-size:12px}.file-organizer-target-mode{margin-bottom:8px}.file-organizer-help-icon{margin-left:6px;color:var(--db-text-secondary);cursor:help;font-size:13px}.file-organizer-help-icon:hover{color:var(--db-brand)}.file-organizer-custom-target{margin-top:4px}.file-organizer-target-preview{margin-top:8px;padding:8px 12px;border:1px solid var(--db-border);border-radius:8px;background:var(--db-surface-subtle)}.file-organizer-target-preview code{color:var(--db-brand-strong)}.file-organizer-inline-label.ant-typography{margin-right:8px}.file-organizer-category-tag.ant-tag{padding:4px 10px;cursor:pointer;border:2px solid transparent;font-size:13px}.file-organizer-category-tag.is-active{border-color:var(--db-brand);box-shadow:0 0 0 2px var(--db-brand-soft)}.file-organizer-confirm-icon{color:var(--db-brand)}.file-organizer-confirm-path{padding:8px 12px;border-radius:6px;background:var(--db-surface-subtle);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-all}.file-organizer-confirm-note{margin-top:12px;color:var(--db-text-secondary);font-size:13px}.file-browser-path-row{margin-bottom:12px}.file-browser-parent-row{margin-bottom:8px}.file-browser-list{max-height:480px;min-height:260px;overflow-y:auto;border:1px solid var(--db-border);border-radius:8px}.file-browser-empty{padding:20px 16px;color:var(--db-text-secondary);text-align:center}.file-browser-item{display:flex;align-items:center;justify-content:space-between;min-height:42px;padding:8px 12px;border-bottom:1px solid var(--db-border);cursor:pointer;transition:background .16s ease}.file-browser-item:last-child{border-bottom:0}.file-browser-item:hover{background:var(--db-brand-soft)}.file-browser-icon{margin-right:8px;color:var(--db-brand)}.file-browser-confirm-row{margin-top:12px;text-align:right}@media(max-width:650px){.file-organizer-presets{align-items:stretch}.file-organizer-presets .ant-btn{flex:1}.file-browser-item{min-height:48px}}.branch-sync-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:40px}.branch-sync-page a,.branch-sync-page .ant-btn-link{color:var(--db-brand)}.branch-sync-warning{margin-bottom:20px;border-radius:10px}.branch-sync-loading-state{padding:80px 0;text-align:center}.branch-sync-empty-state{margin-top:60px}.branch-sync-table-card,.branch-sync-subapps-card,.branch-sync-preview-card{border:1px solid var(--db-border);border-radius:var(--db-radius);box-shadow:var(--db-shadow-sm)}.branch-sync-table-card{overflow:hidden}.branch-sync-table-card>.ant-card-body{padding:0}.branch-sync-table-card .ant-table-thead>tr>th{background:var(--db-surface-subtle);color:var(--db-text-secondary);font-size:12px}.branch-sync-table-card .ant-table-tbody>tr>td,.branch-sync-table-card .ant-table-thead>tr>th,.branch-sync-subapps-wrapper .ant-table-tbody>tr>td{padding:12px 16px!important}.branch-sync-table-card .ant-table-tbody>tr>td:first-child,.branch-sync-table-card .ant-table-thead>tr>th:first-child,.branch-sync-subapps-wrapper .ant-table-tbody>tr>td:first-child{padding-left:16px!important;padding-right:16px!important;width:48px!important;min-width:48px!important;max-width:48px!important}.branch-sync-table-card .ant-table-tbody>tr>td:last-child,.branch-sync-table-card .ant-table-thead>tr>th:last-child,.branch-sync-subapps-wrapper .ant-table-tbody>tr>td:last-child{padding-right:24px!important}.branch-sync-action-cell{display:flex;flex-direction:column;gap:10px;width:100%}.branch-sync-action-cell .ant-btn{white-space:nowrap}.branch-sync-app-name{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.branch-sync-app-subbadge{margin-top:2px}.branch-sync-app-link{color:var(--db-brand)!important;font-size:14px}.branch-sync-count-badge .ant-badge-count{background:var(--db-brand);font-size:10px}.branch-sync-branches-col{display:flex;flex-direction:column;gap:4px}.branch-sync-branch-block{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.branch-sync-tag-row{display:flex;align-items:center;gap:4px}.branch-sync-branch-line{display:flex;align-items:center;gap:4px;font-size:12px}.branch-sync-branch-label{width:48px;display:inline-block;flex-shrink:0;color:var(--db-text-secondary);font-size:11px;font-weight:500}.branch-sync-custom-icon{color:var(--db-brand);font-size:12px;margin-left:2px;cursor:pointer;flex-shrink:0;opacity:.85;transition:opacity .2s,transform .2s}.branch-sync-custom-icon:hover{opacity:1;transform:scale(1.15)}.branch-sync-branch-tag.ant-tag{border-color:#6555e83d;background:var(--db-brand-soft);color:var(--db-brand-strong)}.branch-sync-status-stack{display:flex;width:100%;flex-direction:column;gap:12px}.branch-sync-status-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:12px}.branch-sync-status-label{color:var(--db-text-secondary);font-size:11px;font-weight:500}.branch-sync-pair-status{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.branch-sync-open-pr-btn.ant-btn-link{font-size:11px!important;padding:0!important;height:auto!important;line-height:1.4!important}.branch-sync-inline-alert{margin-top:2px;padding:2px 8px;border-radius:5px;font-size:11px}.branch-sync-table-card .ant-table-tbody>tr.ant-table-expanded-row>td{padding:0!important;background:#6555e809!important;border-bottom:1px solid var(--db-border)!important;box-shadow:inset 0 2px 4px #00000005,inset 0 -2px 4px #00000005}.branch-sync-subapps-wrapper{width:100%;background:#6555e809;position:relative}.branch-sync-subapps-wrapper .ant-table{background:transparent!important}.branch-sync-subapps-wrapper .ant-table-tbody>tr>td{background:transparent!important;border-bottom:1px dashed rgba(101,85,232,.12)!important;transition:background .2s ease}.branch-sync-subapps-wrapper .ant-table-tbody>tr:hover>td{background:#6555e811!important}.branch-sync-subapps-wrapper .ant-table-tbody>tr:last-child>td{border-bottom:none!important}.branch-sync-subapp-row:last-child{border-bottom:none}.subapp-col-indent{width:48px;flex-shrink:0}.subapp-col-name{width:320px;flex-shrink:0;padding:0 16px;display:flex;align-items:center;gap:6px}.subapp-col-branches{width:240px;flex-shrink:0;padding:0 16px}.subapp-col-status{width:420px;flex-shrink:0;padding:0 16px}.subapp-col-action{width:180px;flex-shrink:0;padding:0 24px 0 16px}.branch-sync-modal-body,.branch-sync-modal-form{margin-top:16px}.branch-sync-create-preview{margin-top:12px}.branch-sync-create-preview-title{color:var(--db-text-secondary);font-size:13px}.branch-sync-preview-card{margin-top:8px;background:var(--db-surface-subtle)}.branch-sync-preview-repos{display:flex;flex-direction:column;gap:6px;font-size:12px}.branch-sync-preview-subitem{padding-left:12px}.branch-sync-result-list{margin-top:8px}.branch-sync-result-item{display:block!important;padding:10px 12px!important}.branch-sync-result-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.branch-sync-result-name{font-size:13px}.branch-sync-result-repo{font-size:11px}.branch-sync-result-error{margin-top:6px;padding:4px 8px;font-size:12px}@media(max-width:760px){.branch-sync-page .page-header>.ant-space{width:100%}.branch-sync-page .page-header>.ant-space .ant-btn{flex:1}}.package-upgrade-page{max-width:1440px;margin:0 auto;padding-bottom:40px}.package-upgrade-summary,.package-upgrade-card{margin-bottom:18px;border:1px solid var(--db-border);border-radius:var(--db-radius)}.workspace-path{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-value{font-size:24px;font-weight:600;color:var(--db-brand)}.repo-list-header{display:flex;justify-content:space-between;align-items:center;margin:28px 0 8px}.package-upgrade-form-row{display:flex;gap:16px}.package-upgrade-form-row .ant-form-item{flex:1;min-width:0}.package-upgrade-repo-list{max-height:360px;overflow-y:auto;padding:0 8px 0 0}.package-upgrade-repo-list .ant-list-item{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:24px;align-items:center;padding:16px 8px}.package-upgrade-repo-list .ant-list-item-meta{min-width:0;margin-bottom:0}.package-upgrade-repo-list .ant-list-item-meta-title{margin-bottom:4px;font-weight:600}.package-upgrade-repo-list .ant-list-item-meta-description{max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.package-upgrade-repo-actions{display:grid;grid-template-columns:170px 32px;gap:16px;align-items:center;justify-content:end;width:230px}.package-upgrade-clone-slot{display:flex;justify-content:flex-end;min-width:0}.package-upgrade-clone-slot .ant-btn{padding-inline:8px}.package-upgrade-repo-list .ant-list-item-action-split{margin-inline:10px}@media(max-width:720px){.package-upgrade-repo-list .ant-list-item{grid-template-columns:minmax(0,1fr) auto;gap:12px}.package-upgrade-repo-list .ant-list-item-actions{grid-column:1 / -1;justify-self:end}}.presentation-page{width:100%;max-width:1440px;margin:0 auto;padding-bottom:48px}.page.is-presentation-plan{box-sizing:border-box;overflow:hidden}.presentation-detail-page{display:flex;height:100%;min-height:0;flex-direction:column;padding-bottom:0}.presentation-detail-page>.presentation-header,.presentation-detail-page>.presentation-brief,.presentation-detail-page>.presentation-progress-strip{flex:none}.presentation-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:22px}.presentation-header-copy h2.ant-typography{margin:0;color:var(--db-text);font-size:30px;font-weight:740;line-height:1.2;letter-spacing:-.025em}.presentation-header-copy>.ant-typography:last-child{max-width:680px;margin:6px 0 0;color:var(--db-text-secondary);font-size:13px;line-height:1.6}.presentation-detail-title-row{display:flex;align-items:center;gap:5px;margin-left:-9px}.presentation-detail-title-row h2.ant-typography{margin:0}.presentation-detail-title-row .ant-btn{color:var(--db-text-secondary)}.presentation-panel-eyebrow{color:var(--db-brand);font-size:11px;font-weight:750;letter-spacing:.14em}.presentation-library-page{height:100%;min-height:0;max-width:1440px;overflow-y:auto;box-sizing:border-box}.presentation-library-header{align-items:center;margin-bottom:28px}.presentation-library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px}.presentation-library-item-wrapper{position:relative;min-width:0;transition:transform .16s ease}.presentation-library-item-wrapper:hover{transform:translateY(-2px)}.presentation-library-item{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:start;gap:14px;width:100%;min-height:188px;height:100%;padding:20px 52px 20px 20px;border:1px solid var(--db-border);border-radius:14px;background:var(--db-surface);color:inherit;font:inherit;text-align:left;box-shadow:var(--db-shadow-sm);cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease}.presentation-library-item-wrapper:hover .presentation-library-item{border-color:#6555e852;box-shadow:var(--db-shadow-md)}.presentation-library-item:focus-visible{outline:3px solid rgba(101,85,232,.22);outline-offset:2px}.presentation-library-delete.ant-btn{position:absolute;z-index:2;top:14px;right:14px;border-radius:8px;color:var(--db-text-secondary)}.presentation-library-delete.ant-btn:hover{background:#ff4d4f17;color:#d9363e}.presentation-library-icon{display:grid;grid-column:1;grid-row:1;place-items:center;width:46px;height:46px;border-radius:12px;background:var(--db-brand-soft);color:var(--db-brand-strong);font-size:20px}.presentation-library-item-copy{display:grid;grid-column:2;grid-row:1;grid-template-columns:minmax(0,1fr);min-width:0}.presentation-library-item-topline{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.presentation-library-item-topline strong{overflow:hidden;color:var(--db-text);font-size:16px;line-height:1.3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.presentation-library-item-topline .ant-tag{flex:none;margin:0;background:var(--db-brand-soft);color:var(--db-brand-strong);font-size:9px}.presentation-library-subtitle{min-height:38px;margin-top:7px;overflow:hidden;color:var(--db-text-secondary);font-size:12px;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.presentation-library-progress{display:flex;grid-column:1 / -1;grid-row:2;align-items:center;width:100%;min-width:0;max-width:100%;gap:10px}.presentation-library-progress>i{height:5px;min-width:0;flex:1;overflow:hidden;border-radius:999px;background:var(--db-brand-soft)}.presentation-library-progress b{display:block;height:100%;border-radius:inherit;background:var(--db-brand)}.presentation-library-progress em{color:var(--db-brand-strong);font-size:10px;font-style:normal;font-weight:700}.presentation-library-meta{display:flex;grid-column:1 / -1;grid-row:3;flex-wrap:wrap;gap:6px 14px;color:var(--db-text-secondary);font-size:10px}.presentation-library-meta>span+span{position:relative}.presentation-library-meta>span+span:before{position:absolute;left:-8px;color:var(--db-border);content:"·"}.presentation-library-arrow{grid-column:3;grid-row:1;align-self:center;color:var(--db-text-secondary);font-size:13px;transition:transform .16s ease,color .16s ease}.presentation-library-item:hover .presentation-library-arrow{color:var(--db-brand);transform:translate(3px)}.presentation-library-empty.ant-card{border-color:var(--db-border);border-radius:14px;box-shadow:var(--db-shadow-sm)}.presentation-create-field{display:grid;gap:8px;padding-top:8px}.presentation-create-field>span{color:var(--db-text-secondary);font-size:11px;font-weight:650}.presentation-export-description.ant-typography{margin:0 0 12px;font-size:12px}.presentation-export-preview.ant-input{resize:vertical;border-color:var(--db-border);background:var(--db-surface-subtle);color:var(--db-text);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.65}.presentation-import-modal .presentation-export-preview{margin-top:14px}.presentation-brief{display:grid;grid-template-columns:minmax(0,1fr) 240px;align-items:end;gap:28px;margin-bottom:14px;padding:18px 20px;border:1px solid var(--db-border);border-radius:14px;background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.presentation-brief-main{display:contents}.presentation-brief-fields{display:grid;grid-column:1 / -1;grid-template-columns:minmax(220px,1.3fr) minmax(200px,1fr) minmax(120px,.55fr) minmax(135px,.58fr);gap:14px}.presentation-brief-fields label,.presentation-field{display:grid;gap:7px}.presentation-brief-fields label>span,.presentation-field>span{color:var(--db-text-secondary);font-size:11px;font-weight:650}.presentation-brief-options{display:grid;grid-column:1;grid-template-columns:repeat(3,minmax(190px,1fr));gap:9px}.presentation-brief-side{display:grid;grid-column:2;width:240px;align-self:stretch;gap:9px}.presentation-display-option{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 10px;border:1px solid var(--db-border);border-radius:9px;background:var(--db-surface-subtle)}.presentation-display-option>span{display:grid}.presentation-display-option strong{color:var(--db-text);font-size:11px}.presentation-display-option small{margin-top:2px;color:var(--db-text-secondary);font-size:9px}.presentation-theme-option .ant-segmented{flex:none;font-size:10px}.presentation-brief-stats{display:flex;height:100%;gap:9px}.presentation-brief-stats>div{display:grid;align-content:center;min-width:74px;flex:1;padding:8px 11px;border-radius:9px;background:var(--db-surface-subtle);text-align:center}.presentation-brief-stats strong{color:var(--db-text);font-size:17px;line-height:1.1}.presentation-brief-stats span{margin-top:3px;color:var(--db-text-secondary);font-size:10px}.presentation-progress-strip{display:grid;grid-template-columns:minmax(180px,auto) minmax(180px,1fr) auto;align-items:center;gap:20px;margin-bottom:16px;padding:11px 16px;border:1px solid rgba(101,85,232,.16);border-radius:11px;background:var(--db-brand-soft)}.presentation-progress-strip>div{display:grid}.presentation-progress-strip>div span{color:var(--db-text-secondary);font-size:10px;text-transform:uppercase}.presentation-progress-strip>div strong{overflow:hidden;color:var(--db-text);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.presentation-progress-strip .ant-progress{margin:0;line-height:1}.presentation-progress-strip>.ant-typography{color:var(--db-brand-strong);font-size:12px;font-weight:700}.presentation-workspace{display:grid;grid-template-columns:minmax(235px,.82fr) minmax(340px,1.35fr) minmax(260px,.88fr);align-items:stretch;min-height:0;flex:1 1 0;gap:16px;height:auto;max-height:760px}@media(min-width:1201px)and (max-width:1600px)and (max-height:1000px){.page.is-presentation-plan:has(.presentation-detail-page){padding:22px 28px}.page.is-presentation-plan .presentation-detail-page{padding-bottom:0}.page.is-presentation-plan .presentation-detail-page .presentation-header{margin-bottom:12px}.page.is-presentation-plan .presentation-detail-page .presentation-header-copy h2.ant-typography{margin-block:1px 2px;font-size:25px}.page.is-presentation-plan .presentation-detail-page .presentation-header-copy p.ant-typography{font-size:12px}.page.is-presentation-plan .presentation-detail-title-row h2.ant-typography{margin-block:1px 2px}.page.is-presentation-plan .presentation-brief{gap:20px;margin-bottom:10px;padding:11px 14px}.page.is-presentation-plan .presentation-brief-fields{gap:10px}.page.is-presentation-plan .presentation-brief-fields label,.page.is-presentation-plan .presentation-field{gap:4px}.page.is-presentation-plan .presentation-brief-side{width:228px;gap:6px}.page.is-presentation-plan .presentation-display-option{padding-block:6px}.page.is-presentation-plan .presentation-brief-stats{gap:6px}.page.is-presentation-plan .presentation-brief-stats>div{min-width:68px;padding:5px 8px}.page.is-presentation-plan .presentation-brief-stats strong{font-size:15px}.page.is-presentation-plan .presentation-progress-strip{gap:16px;margin-bottom:10px;padding:8px 13px}.page.is-presentation-plan .presentation-workspace{max-height:650px}.page.is-presentation-plan .presentation-panel>.ant-card-body{padding:15px}.page.is-presentation-plan .presentation-panel-heading,.page.is-presentation-plan .presentation-console-topline{margin-bottom:13px}.page.is-presentation-plan .presentation-editor-panel .ant-card-body{gap:13px}}.presentation-panel.ant-card{height:100%;min-height:0;overflow:hidden;border:1px solid var(--db-border);border-radius:14px;background:var(--db-surface);box-shadow:var(--db-shadow-sm)}.presentation-panel>.ant-card-body{height:100%;min-height:0;padding:18px;box-sizing:border-box}.presentation-panel-heading,.presentation-console-topline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:17px}.presentation-panel-heading h4.ant-typography,.presentation-console-topline h4.ant-typography{margin:2px 0 0;color:var(--db-text);font-size:16px}.presentation-outline-panel>.ant-card-body{display:flex;flex-direction:column}.presentation-outline-list{display:grid;grid-auto-rows:max-content;align-content:start;min-height:0;flex:1;gap:7px;margin-right:-7px;padding-right:7px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(101,85,232,.28) transparent}.presentation-outline-list::-webkit-scrollbar{width:7px}.presentation-outline-list::-webkit-scrollbar-track{background:transparent}.presentation-outline-list::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#6555e847;background-clip:padding-box}.presentation-outline-list::-webkit-scrollbar-thumb:hover{background:#6555e875;background-clip:padding-box}.presentation-outline-item{overflow:hidden;border:1px solid transparent;border-radius:10px;background:var(--db-surface-subtle);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.presentation-outline-item.is-active{border-color:#6555e847;background:var(--db-brand-soft);box-shadow:inset 3px 0 0 var(--db-brand)}.presentation-outline-item.is-complete{background:#247a3d0e}.presentation-outline-select{display:flex;align-items:center;width:100%;gap:11px;padding:11px 12px 8px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.presentation-outline-index{display:grid;place-items:center;width:29px;height:29px;flex:none;border-radius:8px;background:var(--db-surface);color:var(--db-text-secondary);font-size:10px;font-weight:750;box-shadow:0 2px 7px #1f2a440f}.is-active .presentation-outline-index{background:var(--db-brand);color:#fff}.is-complete .presentation-outline-index{color:var(--db-success)}.presentation-outline-copy{display:grid;min-width:0;flex:1}.presentation-outline-copy strong{overflow:hidden;color:var(--db-text);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.presentation-outline-copy span{margin-top:2px;color:var(--db-text-secondary);font-size:10px}.presentation-outline-actions{display:flex;justify-content:flex-end;gap:2px;padding:0 8px 7px 48px;opacity:.52}.presentation-outline-item:hover .presentation-outline-actions,.presentation-outline-item.is-active .presentation-outline-actions{opacity:1}.presentation-outline-total{display:flex;align-items:center;flex:none;gap:8px;margin-top:14px;padding-top:13px;border-top:1px solid var(--db-border);color:var(--db-text-secondary);font-size:11px}.presentation-editor-heading{margin-bottom:21px}.presentation-section-tag.ant-tag{margin:0;border-color:#d8d3ff;background:var(--db-brand-soft);color:var(--db-brand-strong);font-weight:650}.presentation-editor-panel .ant-card-body{display:grid;align-content:start;gap:17px;overflow-y:auto}.presentation-editor-panel .presentation-panel-heading{margin-bottom:2px}.presentation-editor-heading-actions{display:flex;align-items:center;flex:none;gap:9px}.presentation-heading-timebox{display:flex;align-items:center;gap:7px;color:var(--db-text-secondary);font-size:10px;font-weight:650;white-space:nowrap}.presentation-heading-timebox .presentation-duration-control{width:98px}.presentation-heading-timebox .presentation-duration-control>span{min-width:36px}.presentation-duration-control{display:flex;width:100%}.presentation-duration-control .ant-input-number{flex:1;border-radius:8px 0 0 8px}.presentation-duration-control>span{display:grid;place-items:center;min-width:46px;border:1px solid #d9d9d9;border-left:0;border-radius:0 8px 8px 0;background:#00000005;color:var(--db-text-secondary);font-size:12px}.presentation-editor-hint{display:flex;align-items:center;gap:8px;padding-bottom:7px;color:var(--db-text-secondary);font-size:11px}.presentation-private-notes>span{display:flex;align-items:center;gap:7px}.presentation-private-notes .ant-tag{margin:0;color:var(--db-brand-strong);font-size:9px}.presentation-private-notes textarea{background:#fffdf7}.presentation-console.ant-card{overflow:hidden;background:#191e2d;color:#fff}.presentation-console>.ant-card-body{display:flex;min-height:0;flex-direction:column;padding:18px;overflow:hidden}.presentation-console .presentation-panel-eyebrow{color:#a99fff}.presentation-console-topline h4.ant-typography{color:#fff}.presentation-live-dot{display:inline-flex;align-items:center;gap:6px;color:#8e97aa;font-size:9px;font-weight:800;letter-spacing:.09em}.presentation-live-dot i{width:7px;height:7px;border-radius:50%;background:#697286}.presentation-live-dot.is-live{color:#ff9898}.presentation-live-dot.is-live i{background:#ff6767;box-shadow:0 0 0 5px #ff67671f}.presentation-timer{display:grid;justify-items:center;margin:6px 0 16px}.presentation-timer>span{color:#fff;font-variant-numeric:tabular-nums;font-size:clamp(34px,3.3vw,48px);font-weight:760;letter-spacing:-.045em;line-height:1}.presentation-timer small{margin-top:7px;color:#929bad;font-size:10px}.presentation-timer small.is-over{color:#ff9b9b}.presentation-console-controls{display:grid;grid-template-columns:36px 1fr 36px 36px;gap:7px;margin-bottom:17px}.presentation-console-controls .ant-btn:not(.ant-btn-primary){border-color:#343b4e;background:#252b3b;color:#c8ceda}.presentation-now-card{padding:14px;border:1px solid rgba(169,159,255,.2);border-radius:11px;background:#6555e821}.presentation-now-card>.ant-typography{color:#a99fff;font-size:9px;font-weight:750;letter-spacing:.08em}.presentation-now-card strong{display:block;margin-top:4px;color:#fff;font-size:14px}.presentation-now-card p.ant-typography{max-height:112px;margin:8px 0 0;overflow-y:auto;color:#b9c0ce;font-size:11px;line-height:1.55}.presentation-next-row{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;margin:12px 2px 17px}.presentation-next-row span{color:#737d91;font-size:9px;font-weight:750}.presentation-next-row strong{overflow:hidden;color:#cbd1dc;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.presentation-quick-note{display:grid;gap:5px;padding-top:15px;border-top:1px solid #303748}.presentation-quick-note>.ant-typography:first-child{color:#fff;font-size:12px}.presentation-quick-note>.ant-typography:nth-child(2){margin-bottom:6px;color:#8e97aa;font-size:10px}.presentation-quick-note .ant-input{border-color:#4a5369;background:#242a39;color:#fff;caret-color:#fff}.presentation-quick-note .ant-input::placeholder{color:#aeb6c7;opacity:1}.presentation-quick-note .ant-input:hover{border-color:#737e98}.presentation-quick-note .ant-input:focus{border-color:#8d82f3;box-shadow:0 0 0 2px #8d82f333}.presentation-note-log{display:grid;grid-auto-rows:max-content;align-content:start;min-height:0;flex:1;gap:8px;margin-top:13px;padding-right:5px;overflow-y:auto;scrollbar-color:rgba(169,159,255,.42) transparent;scrollbar-width:thin}.presentation-note-log::-webkit-scrollbar{width:6px}.presentation-note-log::-webkit-scrollbar-track{background:transparent}.presentation-note-log::-webkit-scrollbar-thumb{border-radius:999px;background:#a99fff6b}.presentation-note-log::-webkit-scrollbar-thumb:hover{background:#a99fff9e}.presentation-note-log>div{display:grid;grid-template-columns:38px 1fr;gap:8px}.presentation-note-log span{padding-top:1px;color:#8b94a8;font-size:9px;font-variant-numeric:tabular-nums}.presentation-note-copy{display:grid;min-width:0;gap:2px}.presentation-note-copy small{overflow:hidden;color:#a99fff;font-size:8px;font-weight:750;letter-spacing:.06em;text-overflow:ellipsis;white-space:nowrap}.presentation-note-log p{margin:0;color:#c8ceda;font-size:10px;line-height:1.45}.presentation-audience{position:relative;display:grid;grid-template-rows:auto 1fr auto;height:100vh;min-width:320px;min-height:0;overflow:hidden;background:#101522;color:#fff;isolation:isolate}.presentation-audience:before{position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:56px 56px;content:"";-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.55),transparent 70%);mask-image:linear-gradient(to bottom,rgba(0,0,0,.55),transparent 70%)}.presentation-audience-orb{position:absolute;z-index:-1;border-radius:50%;filter:blur(2px)}.audience-orb-one{top:-28vw;left:-12vw;width:54vw;height:54vw;background:radial-gradient(circle,rgba(101,85,232,.24),transparent 67%)}.audience-orb-two{right:-19vw;bottom:-32vw;width:66vw;height:66vw;background:radial-gradient(circle,rgba(72,115,255,.17),transparent 68%)}.presentation-audience-header{display:flex;align-items:center;justify-content:space-between;padding:28px clamp(36px,5vw,76px);border-bottom:1px solid rgba(255,255,255,.08)}.presentation-audience-brand{display:flex;align-items:center;gap:9px;color:#9da6b8;font-size:13px}.presentation-audience-brand>span:first-child{color:#a99fff;font-size:18px}.presentation-audience-brand strong{color:#fff;font-size:15px}.presentation-audience-brand i{width:1px;height:15px;margin:0 3px;background:#ffffff2e}.presentation-audience-section-label{color:#a99fff;font-size:11px;font-weight:800;letter-spacing:.14em}.presentation-audience-status{display:flex;align-items:center;margin-left:auto;gap:20px}.presentation-audience-status>span{display:flex;align-items:center;gap:7px;color:#8892a5;font-size:10px;font-weight:800;letter-spacing:.1em}.presentation-audience-status>span i{width:7px;height:7px;border-radius:50%;background:#667084}.presentation-audience-status>span.is-live{color:#f99}.presentation-audience-status>span.is-live i{background:#ff6767;box-shadow:0 0 0 5px #ff67671f}.presentation-audience-status>strong{min-width:78px;font-size:20px;font-variant-numeric:tabular-nums;text-align:right}.presentation-audience-status .ant-btn{color:#b9c1d0}.presentation-audience-stage{display:flex;width:100%;max-width:1150px;min-width:0;min-height:0;align-self:stretch;justify-self:center;justify-content:center;flex-direction:column;padding:6vh clamp(56px,9vw,150px);overflow:hidden;box-sizing:border-box}.presentation-audience-kicker{display:flex;align-items:center;gap:12px;margin-bottom:28px;color:#a99fff;font-size:11px;font-weight:800;letter-spacing:.14em}.presentation-audience-kicker i{width:36px;height:1px;background:#a99fff8c}.presentation-audience-stage h1{max-width:1050px;margin:0;font-size:clamp(54px,6.5vw,100px);font-weight:760;letter-spacing:-.055em;line-height:.98;text-wrap:balance}.presentation-audience-markdown{max-width:900px;min-height:0;margin:34px 0 0;padding-right:10px;overflow-y:auto;overscroll-behavior:contain;color:#abb4c5;font-size:clamp(20px,2vw,30px);line-height:1.45;scrollbar-color:transparent transparent;scrollbar-width:none;text-wrap:balance}.presentation-audience-markdown::-webkit-scrollbar{width:0;height:0}.presentation-audience-markdown::-webkit-scrollbar-track{background:transparent}.presentation-audience-markdown::-webkit-scrollbar-thumb{background:transparent}.presentation-audience-markdown>*{margin-block:0}.presentation-audience-markdown>*+*{margin-top:.55em}.presentation-audience-markdown h2,.presentation-audience-markdown h3,.presentation-audience-markdown h4{color:#f4f6fb;font-size:1.05em;line-height:1.25}.presentation-audience-markdown ul,.presentation-audience-markdown ol{padding-inline-start:1.35em}.presentation-audience-markdown li+li{margin-top:.22em}.presentation-audience-markdown strong{color:#fff;font-weight:750}.presentation-audience-markdown em{color:#d7dceb}.presentation-audience-markdown a{color:#b4abff;text-decoration:underline;text-underline-offset:3px}.presentation-audience-markdown blockquote{padding-left:.8em;border-left:4px solid #6555e8;color:#c6cddd}.presentation-audience-markdown code{padding:.08em .3em;border-radius:.28em;background:#a99fff24;color:#d8d3ff;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.84em}.presentation-audience-markdown pre{max-width:100%;padding:.7em .85em;overflow-x:auto;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:#0000003d;text-wrap:wrap}.presentation-audience-markdown pre code{padding:0;background:transparent}.presentation-audience-footer{padding:0 clamp(36px,5vw,76px) 38px}.presentation-audience-plan{padding:20px 24px 22px;border:1px solid rgba(255,255,255,.1);border-radius:16px;background:#191f2fd1;box-shadow:0 24px 70px #0003;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.presentation-audience-plan-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:30px}.presentation-audience-plan-heading>div{display:grid}.presentation-audience-plan-heading span{font-size:14px;font-weight:700}.presentation-audience-plan-heading small{margin-top:3px;color:#8f99ac;font-size:10px}.presentation-audience-plan-heading>strong{color:#a99fff;font-size:15px}.presentation-audience-progress{height:3px;margin:14px 0 18px;overflow:hidden;border-radius:999px;background:#ffffff1a}.presentation-audience-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6555e8,#9f94ff);transition:width .3s ease}.presentation-audience-outline{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.presentation-audience-outline>div{display:flex;align-items:center;min-width:0;gap:9px;color:#687287}.presentation-audience-outline>div>span{display:grid;place-items:center;width:24px;height:24px;flex:none;border:1px solid #3b4354;border-radius:7px;font-size:8px;font-weight:800}.presentation-audience-outline strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.presentation-audience-outline>div.is-active{color:#fff}.presentation-audience-outline>div.is-active>span{border-color:#6555e8;background:#6555e8}.presentation-audience-outline>div.is-complete{color:#8db79a}.presentation-audience-outline>div.is-complete>span{border-color:#58ae7159;color:#70c788}.presentation-audience.is-fullscreen .presentation-audience-plan{padding:24px 28px 26px}.presentation-audience.is-fullscreen .presentation-audience-plan-heading span{font-size:clamp(18px,1.35vw,22px)}.presentation-audience.is-fullscreen .presentation-audience-plan-heading small{margin-top:5px;font-size:clamp(12px,.9vw,15px)}.presentation-audience.is-fullscreen .presentation-audience-plan-heading>strong{font-size:clamp(18px,1.35vw,22px)}.presentation-audience.is-fullscreen .presentation-audience-progress{height:5px;margin:18px 0 22px}.presentation-audience.is-fullscreen .presentation-audience-outline{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px 22px}.presentation-audience.is-fullscreen .presentation-audience-outline>div{gap:12px;color:#929daf}.presentation-audience.is-fullscreen .presentation-audience-outline>div>span{width:36px;height:36px;border-radius:9px;font-size:12px}.presentation-audience.is-fullscreen .presentation-audience-outline strong{font-size:clamp(15px,1.15vw,19px)}.presentation-audience.is-fullscreen .presentation-audience-outline>div.is-active{color:#fff}.presentation-audience.is-fullscreen .presentation-audience-outline>div.is-complete{color:#9cc4a8}.presentation-audience.is-light{background:#f7f8fc;color:#172033}.presentation-audience.is-light:before{background-image:linear-gradient(rgba(23,32,51,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(23,32,51,.035) 1px,transparent 1px)}.presentation-audience.is-light .audience-orb-one{background:radial-gradient(circle,rgba(101,85,232,.17),transparent 67%)}.presentation-audience.is-light .audience-orb-two{background:radial-gradient(circle,rgba(72,115,255,.1),transparent 68%)}.presentation-audience.is-light .presentation-audience-header{border-bottom-color:#17203317}.presentation-audience.is-light .presentation-audience-brand{color:#667085}.presentation-audience.is-light .presentation-audience-brand>span:first-child{color:#6555e8}.presentation-audience.is-light .presentation-audience-brand strong{color:#172033}.presentation-audience.is-light .presentation-audience-brand i{background:#17203329}.presentation-audience.is-light .presentation-audience-section-label{color:#5143c2}.presentation-audience.is-light .presentation-audience-status>span{color:#667085}.presentation-audience.is-light .presentation-audience-status .ant-btn{color:#667085}.presentation-audience.is-light .presentation-audience-kicker{color:#5143c2}.presentation-audience.is-light .presentation-audience-kicker i{background:#5143c261}.presentation-audience.is-light .presentation-audience-markdown{color:#526078}.presentation-audience.is-light .presentation-audience-markdown{scrollbar-color:transparent transparent}.presentation-audience.is-light .presentation-audience-markdown::-webkit-scrollbar-thumb{background:transparent}.presentation-audience.is-light .presentation-audience-markdown h2,.presentation-audience.is-light .presentation-audience-markdown h3,.presentation-audience.is-light .presentation-audience-markdown h4,.presentation-audience.is-light .presentation-audience-markdown strong{color:#172033}.presentation-audience.is-light .presentation-audience-markdown em{color:#667085}.presentation-audience.is-light .presentation-audience-markdown a{color:#5143c2}.presentation-audience.is-light .presentation-audience-markdown blockquote{color:#526078}.presentation-audience.is-light .presentation-audience-markdown code{background:#6555e81a;color:#5143c2}.presentation-audience.is-light .presentation-audience-markdown pre{border-color:#1720331a;background:#1720330b}.presentation-audience.is-light .presentation-audience-plan{border-color:#1720331a;background:#ffffffe0;box-shadow:0 24px 70px #1f2a441f}.presentation-audience.is-light .presentation-audience-plan-heading small{color:#667085}.presentation-audience.is-light .presentation-audience-plan-heading>strong{color:#5143c2}.presentation-audience.is-light .presentation-audience-progress{background:#1720331a}.presentation-audience.is-light .presentation-audience-outline>div{color:#7a8498}.presentation-audience.is-light .presentation-audience-outline>div>span{border-color:#d9ddea}.presentation-audience.is-light .presentation-audience-outline>div.is-active{color:#172033}.presentation-audience.is-light .presentation-audience-outline>div.is-active>span{border-color:#6555e8;color:#fff}.presentation-audience.is-light .presentation-audience-outline>div.is-complete{color:#568064}.presentation-audience.is-light .presentation-audience-outline>div.is-complete>span{border-color:#36804f47;color:#36804f}@media(max-width:700px){.presentation-audience{grid-template-rows:auto minmax(0,1fr) auto}.presentation-audience-header{padding:16px 18px}.presentation-audience-brand{gap:8px;font-size:13px}.presentation-audience-brand>span:first-child{font-size:17px}.presentation-audience-brand strong{font-size:15px}.presentation-audience-section-label{font-size:10px}.presentation-audience-brand i,.presentation-audience-brand>span:last-child{display:none}.presentation-audience-status{gap:9px}.presentation-audience-status>span{gap:6px;font-size:9px}.presentation-audience-status>span i{width:7px;height:7px}.presentation-audience-status>strong{min-width:60px;font-size:17px}.presentation-audience-status .ant-btn{width:30px;height:30px;font-size:15px}.presentation-audience-stage{align-self:stretch;max-width:none;padding:26px 24px}.presentation-audience-kicker{gap:9px;margin-bottom:18px;font-size:10px}.presentation-audience-kicker i{width:26px}.presentation-audience-stage h1{font-size:clamp(38px,10.5vw,52px);line-height:1.02}.presentation-audience-markdown{margin-top:20px;font-size:17px;line-height:1.5}.presentation-audience-footer{padding:0 14px 14px}.presentation-audience-plan{padding:15px 16px 16px;border-radius:12px}.presentation-audience-plan-heading{gap:12px}.presentation-audience-plan-heading>div{min-width:0}.presentation-audience-plan-heading span{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.presentation-audience-plan-heading small{display:none}.presentation-audience-plan-heading>strong{font-size:15px}.presentation-audience-progress{height:4px;margin:12px 0 14px}.presentation-audience-outline{grid-template-columns:1fr 1fr;gap:10px 12px;max-height:128px;overflow-y:auto}.presentation-audience-outline>div{gap:8px}.presentation-audience-outline>div:not(.is-active):not(.is-complete){color:#9ca6b8}.presentation-audience-outline>div>span{width:24px;height:24px;border-radius:7px;font-size:10px}.presentation-audience-outline strong{font-size:12px}}@media(max-width:390px){.presentation-audience-outline{grid-template-columns:1fr;max-height:124px}}@media(max-height:600px)and (max-width:700px){.presentation-audience-stage{padding-block:16px}.presentation-audience-stage h1{font-size:36px}.presentation-audience-markdown{margin-top:12px}.presentation-audience-outline{max-height:84px}}@media(max-width:1200px){.page.is-presentation-plan{overflow-y:auto}.presentation-detail-page{height:auto;min-height:100%}.presentation-workspace{grid-template-columns:minmax(260px,.75fr) minmax(420px,1.25fr);height:auto}.presentation-panel.ant-card{height:auto}.presentation-outline-panel{max-height:680px}.presentation-console{grid-column:1 / -1}.presentation-console>.ant-card-body{display:grid;grid-template-columns:1fr 1.3fr;column-gap:24px}.presentation-console-topline,.presentation-timer,.presentation-console-controls{grid-column:1}.presentation-now-card,.presentation-next-row,.presentation-quick-note,.presentation-note-log{grid-column:2}.presentation-now-card{grid-row:1 / span 2}.presentation-note-log{max-height:150px}}@media(max-width:900px){.presentation-header{align-items:stretch;flex-direction:column}.presentation-brief{grid-template-columns:1fr;align-items:stretch}.presentation-brief-fields,.presentation-brief-options,.presentation-brief-side{grid-column:1}.presentation-brief-fields{grid-template-columns:1fr}.presentation-brief-side{width:100%}.presentation-brief-stats{justify-content:stretch}.presentation-brief-stats>div{flex:1}.presentation-workspace{grid-template-columns:1fr}.presentation-console{grid-column:auto}.presentation-console>.ant-card-body{display:block}.presentation-console-topline,.presentation-timer,.presentation-console-controls,.presentation-now-card,.presentation-next-row,.presentation-quick-note,.presentation-note-log{grid-column:auto}}@media(max-width:620px){.presentation-library-header{align-items:stretch}.presentation-library-header>.ant-btn{width:100%}.presentation-library-grid{grid-template-columns:1fr}.presentation-library-item{grid-template-columns:40px minmax(0,1fr);min-height:0;padding:16px 48px 16px 16px}.presentation-library-delete.ant-btn{top:11px;right:11px}.presentation-library-icon{width:40px;height:40px;font-size:17px}.presentation-library-arrow{display:none}.presentation-library-item-topline{align-items:flex-start;flex-direction:column;gap:7px}.presentation-library-item-topline strong{white-space:normal}}@media(max-width:620px){.presentation-progress-strip{grid-template-columns:1fr auto}.presentation-progress-strip .ant-progress{grid-column:1 / -1;grid-row:2}.presentation-editor-heading{align-items:flex-start;flex-direction:column}.presentation-editor-heading-actions{width:100%;justify-content:flex-end}.presentation-brief-options{grid-template-columns:1fr}.presentation-header .ant-space{display:grid;grid-template-columns:1fr 1fr}.presentation-header .ant-space-item .ant-btn{width:100%}}:root[data-theme=light] .presentation-private-notes textarea{background:#fffdf7}
|