diff --git a/scripts/smoke-generation-mocked.mjs b/scripts/smoke-generation-mocked.mjs new file mode 100644 index 0000000..f078568 --- /dev/null +++ b/scripts/smoke-generation-mocked.mjs @@ -0,0 +1,72 @@ +import fs from "node:fs"; +import path from "node:path"; +import process from "node:process"; + +const repoRoot = process.cwd(); +const failures = []; + +function read(relativePath) { + return fs.readFileSync(path.join(repoRoot, relativePath), "utf8"); +} + +function assertMatch(label, content, pattern) { + if (!pattern.test(content)) { + failures.push(label); + } +} + +function assertNoMatch(label, content, pattern) { + if (pattern.test(content)) { + failures.push(label); + } +} + +const serverConnection = read("src/api/serverConnection.ts"); +const generationClient = read("src/api/aiGenerationClient.ts"); +const ecommerceVideoService = read("src/features/ecommerce/ecommerceVideoService.ts"); +const workbenchPersistence = read("src/features/workbench/workbenchResultPersistence.ts"); + +assertMatch( + "serverConnection must build same-origin /api URLs", + serverConnection, + /return\s+`\/api\/\$\{cleanPath\}`;/, +); +assertNoMatch( + "frontend generation flow must not use fixed VITE environment config", + `${serverConnection}\n${generationClient}`, + /\b(?:import\.meta\.env|VITE_[A-Z0-9_]+)\b/, +); +assertNoMatch( + "frontend generation flow must not call provider hosts directly", + generationClient, + /dashscope\.aliyuncs\.com|\/dashscope-api\b|Bearer\s+sk-/i, +); +assertMatch("image generation must go through the app API", generationClient, /buildApiUrl\("ai\/image"\)/); +assertMatch("video generation must go through the app API", generationClient, /buildApiUrl\("ai\/video"\)/); +assertMatch("binary uploads must go through the app OSS API", generationClient, /buildApiUrl\("oss\/upload-binary"\)/); +assertMatch("URL uploads must go through the app OSS API", generationClient, /buildApiUrl\("oss\/upload-by-url"\)/); +assertMatch( + "ecommerce video history must durable-copy media before saving", + ecommerceVideoService, + /buildDurableVideoHistoryPayload\(payload\)/, +); +assertMatch( + "ecommerce video history must filter temporary provider URLs on read", + ecommerceVideoService, + /items:\s*history\.items\.map\(removeTemporaryHistoryUrls\)/, +); +assertMatch( + "workbench results must persist generated media through OSS", + workbenchPersistence, + /uploadAssetByUrl\(/, +); + +if (failures.length) { + console.error("Mocked generation smoke check failed:"); + for (const failure of failures) { + console.error(`- ${failure}`); + } + process.exit(1); +} + +console.log("Mocked generation smoke check passed."); diff --git a/src/api/keyServerClient.ts b/src/api/keyServerClient.ts index 1acf077..151a551 100644 --- a/src/api/keyServerClient.ts +++ b/src/api/keyServerClient.ts @@ -913,7 +913,7 @@ export const keyServerClient = { async getProjectContent(projectId: string): Promise { const stored = readStoredSession(); if (!stored) { - throw new Error("闇€瑕佸厛鐧诲綍"); + throw new Error("需要先登录"); } const safeProjectId = encodeURIComponent(projectId.trim()); @@ -1000,7 +1000,7 @@ export const keyServerClient = { async deleteProject(projectId: string, options?: DeleteProjectOptions): Promise { const stored = readStoredSession(); if (!stored) { - throw new Error("闇€瑕佸厛鐧诲綍"); + throw new Error("需要先登录"); } const path = options?.cleanupUserData ? `projects/${encodeURIComponent(projectId)}?cleanupUserData=1` : `projects/${encodeURIComponent(projectId)}`; diff --git a/src/api/modelCapabilitiesClient.ts b/src/api/modelCapabilitiesClient.ts index 85b0f8b..33ce1f4 100644 --- a/src/api/modelCapabilitiesClient.ts +++ b/src/api/modelCapabilitiesClient.ts @@ -71,7 +71,7 @@ export const modelCapabilitiesClient = { let payload: unknown; try { - payload = await serverRequest(`config/profile?name=${encodeURIComponent(name)}`); + payload = await serverRequest(`public/config/profile?name=${encodeURIComponent(name)}`); } catch (error) { if (isOptionalApiRouteMissing(error)) { modelCapabilitiesRouteMissing = true; diff --git a/src/features/canvas/CanvasPage.tsx b/src/features/canvas/CanvasPage.tsx index 4bf3cb8..5f405ff 100644 --- a/src/features/canvas/CanvasPage.tsx +++ b/src/features/canvas/CanvasPage.tsx @@ -26,7 +26,6 @@ VideoCameraOutlined, } from "@ant-design/icons"; import { - Background, ReactFlow, } from "@xyflow/react"; import { useCallback, useEffect, useMemo, useRef, useState, type ChangeEvent, type CSSProperties, type MouseEvent, type WheelEvent } from "react"; @@ -3560,7 +3559,8 @@ function CanvasPage({ onMouseMove={(shouldShowEmptyProjectState || isWaitingForProjects) ? undefined : handleCanvasMouseMove} onWheel={(shouldShowEmptyProjectState || isWaitingForProjects) ? undefined : handleCanvasWheel} style={{ - "--canvas-bg-size": `${24 * canvasViewport.zoom}px`, + "--canvas-bg-size": `${34 * canvasViewport.zoom}px`, + "--canvas-bg-dot": `${1.35 * canvasViewport.zoom}px`, "--canvas-bg-x": `${canvasViewport.x}px`, "--canvas-bg-y": `${canvasViewport.y}px`, cursor: canvasPanDrag ? "grabbing" : spacePanning ? "grab" : undefined, @@ -3748,9 +3748,7 @@ function CanvasPage({ proOptions={{ hideAttribution: true }} onPaneClick={(shouldShowEmptyProjectState || isWaitingForProjects) ? undefined : handlePaneClick} onPaneContextMenu={(shouldShowEmptyProjectState || isWaitingForProjects) ? undefined : handlePaneContextMenu} - > - - + />
e.stopPropagation()}>
); + const renderCardPreview = ( + url: string | null | undefined, + type: "image" | "video" | "project" | "asset", + label: string, + ) => { + const mediaUrl = typeof url === "string" ? url.trim() : ""; + const isVideoPreview = type === "video" || /\.(mp4|webm|mov)(\?|#|$)/i.test(mediaUrl); + const placeholderIcon = + type === "video" ? : type === "project" ? : ; + + return ( + + ); + }; + const renderActivePanel = () => { if (activePanel === "works") { return visibleWorks.length ? (
{visibleWorks.map((task) => ( -
-
- {task.title} - {formatTaskType(task.type)} -
-

{task.prompt}

-
- {formatTaskStatus(task.status)} - {formatProfileDate(task.createdAt)} +
+ {renderCardPreview(task.outputUrl, task.type === "video" ? "video" : "image", formatTaskType(task.type))} +
+
+ {task.title} +
+

{task.prompt}

+
+ {formatTaskStatus(task.status)} + {formatProfileDate(task.createdAt)} +
))} @@ -637,25 +681,27 @@ function ProfilePage({ return projects.length ? (
{projects.map((project) => ( -
-
- {project.name} - {formatProfileDate(project.updatedAt)} - {onDeleteProject ? ( - - ) : null} -
-

{project.description || "最近更新的项目"}

-
- {project.storyboardCount} 节点 - {project.imageCount} 图 / {project.videoCount} 视频 +
+ {renderCardPreview(project.thumbnailUrl, "project", "项目")} +
+
+ {project.name} + {onDeleteProject ? ( + + ) : null} +
+

{project.description || "最近更新的项目"}

+
+ {project.storyboardCount} 节点 + {formatProfileDate(project.updatedAt)} +
))} @@ -669,15 +715,18 @@ function ProfilePage({ return savedAssets.length ? (
{savedAssets.map((asset) => ( -
-
- {asset.name} - {formatAssetStatus(asset.status)} -
-

{asset.description}

-
- {asset.type} - {formatProfileDate(asset.updatedAt)} +
+ {renderCardPreview(asset.imageUrl || asset.url, asset.type === "video" ? "video" : "asset", formatAssetType(asset.type))} +
+
+ {asset.name} + {formatAssetStatus(asset.status)} +
+

{asset.description}

+
+ {formatAssetType(asset.type)} + {formatProfileDate(asset.updatedAt)} +
))} @@ -791,6 +840,50 @@ function ProfilePage({
+
+
+ + +
+
+ {accountPanel === "credits" ? ( + <> + + 当前账号 + {displayName} + + + 积分剩余 + {(usage.balanceCents / 100).toFixed(2)} + + + ) : ( + <> + + 任务总数 + {tasks.length} + + + 已完成 + {completedTasks.length} + + + )} +
+
+
- -
-
-
- - -
-
-
- {accountPanel === "credits" ? ( - <> - - 当前账号 - {displayName} - - - 积分剩余 - {(usage.balanceCents / 100).toFixed(2)} - - - ) : ( - <> - - 任务总数 - {tasks.length} - - - 已完成 - {completedTasks.length} - - - )} -
-
diff --git a/src/features/script-tokens/ScriptTokensPage.tsx b/src/features/script-tokens/ScriptTokensPage.tsx index 10e4e6b..c59cbb0 100644 --- a/src/features/script-tokens/ScriptTokensPage.tsx +++ b/src/features/script-tokens/ScriptTokensPage.tsx @@ -405,111 +405,113 @@ function ScriptTokensPage() {
{/* Left Panel */} diff --git a/src/features/script-tokens/TokenUsagePage.tsx b/src/features/script-tokens/TokenUsagePage.tsx index 23fc2d0..848efe4 100644 --- a/src/features/script-tokens/TokenUsagePage.tsx +++ b/src/features/script-tokens/TokenUsagePage.tsx @@ -271,9 +271,8 @@ function TokenUsagePage({ ) : null}
- {metricCards.map((card, index) => ( + {metricCards.map((card) => (
- {String(index + 1).padStart(2, "0")} {card.label} {card.value} {card.hint} diff --git a/src/styles/pages/ecommerce.css b/src/styles/pages/ecommerce.css index 6379ce8..3835832 100644 --- a/src/styles/pages/ecommerce.css +++ b/src/styles/pages/ecommerce.css @@ -8614,9 +8614,8 @@ } .product-clone-page[data-tool="clone"] .clone-ai-logo { - position: sticky; - top: 0; - z-index: 3; + position: static; + z-index: auto; margin: -18px -18px 2px; padding: 16px 18px 14px; border-bottom-color: var(--ecm-line); @@ -9141,7 +9140,7 @@ } .product-clone-page[data-tool="clone"] .clone-ai-logo { - margin: -14px -14px 0; + margin: 0; padding: 14px 54px 12px 14px; } @@ -9420,3 +9419,42 @@ padding-top: 14px; } } + +/* Mobile clone header alignment: keep the tool title in normal flow, but attach it to the top nav rhythm. */ +@media (max-width: 900px) { + .product-clone-page[data-tool="clone"] { + padding-top: 59px; + } + + .product-clone-page[data-tool="clone"] > .product-clone-shell { + min-height: calc(100% - 59px); + } + + .product-clone-page[data-tool="clone"] .clone-ai-panel { + padding-top: 0; + } + + .product-clone-page[data-tool="clone"] .clone-ai-logo { + margin: 0 -18px 2px; + } +} + +@media (max-width: 620px) { + .product-clone-page[data-tool="clone"] .clone-ai-panel { + padding: 0 14px 14px; + } + + .product-clone-page[data-tool="clone"] .clone-ai-logo { + margin: 0 -14px 0; + } +} + +@media (max-width: 480px) { + .product-clone-page[data-tool="clone"] { + padding-top: 59px; + } + + .product-clone-page[data-tool="clone"] > .product-clone-shell { + min-height: calc(100% - 59px); + } +} diff --git a/src/styles/pages/script-tokens-v5.css b/src/styles/pages/script-tokens-v5.css index 09f98da..666a3c0 100644 --- a/src/styles/pages/script-tokens-v5.css +++ b/src/styles/pages/script-tokens-v5.css @@ -3425,3 +3425,514 @@ font-size: 13px; } } +<<<<<<< HEAD +======= + +/* Script review left panel overflow guard: keep actions available while history remains scrollable. */ +.script-eval-v5-left { + overflow: hidden; +} + +.script-eval-v5-left-main { + display: flex; + flex: 1 1 auto; + flex-direction: column; + min-height: 0; + overflow-x: hidden; + overflow-y: auto; + scrollbar-width: thin; + scrollbar-color: rgb(0 255 136 / 35%) transparent; +} + +.script-eval-v5-left-main::-webkit-scrollbar, +.script-eval-v5-history-list::-webkit-scrollbar { + width: 6px; +} + +.script-eval-v5-left-main::-webkit-scrollbar-track, +.script-eval-v5-history-list::-webkit-scrollbar-track { + background: transparent; +} + +.script-eval-v5-left-main::-webkit-scrollbar-thumb, +.script-eval-v5-history-list::-webkit-scrollbar-thumb { + border-radius: 999px; + background: rgb(0 255 136 / 28%); +} + +.script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + flex: 0 0 auto; + min-height: 210px; +} + +.script-eval-v5-left-main .script-eval-v5-history-list { + min-height: 128px; + max-height: clamp(160px, 28vh, 300px); + overflow-y: auto; +} + +.script-eval-v5-lp-bottom { + position: static; + z-index: auto; + flex-shrink: 0; + margin-top: 0; +} + +@media (max-height: 820px) and (min-width: 901px) { + .script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + flex-basis: auto; + min-height: 190px; + } + + .script-eval-v5-left-main .script-eval-v5-history-list { + min-height: 118px; + max-height: clamp(142px, 23vh, 220px); + } +} + +@media (max-width: 900px) { + .script-eval-v5-left-main { + overscroll-behavior: contain; + } +} + +@media (max-width: 680px) { + .script-eval-v5-left { + overflow: visible; + } + + .script-eval-v5-left-main { + flex: 0 0 auto; + overflow: visible; + } + + .script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + min-height: 224px; + } + + .script-eval-v5-left-main .script-eval-v5-history-list { + min-height: 132px; + max-height: min(260px, 42vh); + } + + .script-eval-v5-history-empty { + min-height: 118px; + } +} + +/* Final commercial polish for the script scoring workspace. */ +.script-eval-v5 { + background: + radial-gradient(circle at 12% 0%, rgb(0 255 136 / 5%), transparent 28%), + linear-gradient(180deg, #0d1010 0%, #090b0b 100%); +} + +.script-eval-v5-page { + background: + linear-gradient(90deg, rgb(0 255 136 / 4%), transparent 24%), + linear-gradient(180deg, rgb(255 255 255 / 1.8%), transparent 180px); +} + +.script-eval-v5-left { + background: + linear-gradient(180deg, rgb(255 255 255 / 4%), transparent 180px), + linear-gradient(90deg, rgb(0 255 136 / 4%), transparent 32%), + var(--v5-panel); +} + +.script-eval-v5-left-main { + scroll-padding-block: 18px; +} + +.script-eval-v5-left-main .script-eval-v5-lp-section { + flex-shrink: 0; + padding-inline: 22px; + background: + linear-gradient(180deg, rgb(255 255 255 / 1.8%), transparent 80px); +} + +.script-eval-v5-left-main .script-eval-v5-lp-section + .script-eval-v5-lp-section { + box-shadow: inset 0 1px 0 rgb(255 255 255 / 2.5%); +} + +.script-eval-v5-lp-label { + color: #91a09b; +} + +.script-eval-v5-upload-zone { + display: grid; + place-items: center; + overflow: hidden; + isolation: isolate; +} + +.script-eval-v5-upload-zone::after { + content: ""; + position: absolute; + inset: 1px; + z-index: -1; + border-radius: inherit; + background: + radial-gradient(circle at 50% 18%, rgb(0 255 136 / 11%), transparent 38%), + linear-gradient(180deg, rgb(255 255 255 / 2%), transparent 60%); + opacity: 0.78; + pointer-events: none; +} + +.script-eval-v5-upload-zone:focus-visible { + outline: 2px solid rgb(0 255 136 / 42%); + outline-offset: 3px; +} + +.script-eval-v5.is-ready .script-eval-v5-upload-zone, +.script-eval-v5.is-complete .script-eval-v5-upload-zone { + border-color: rgb(0 255 136 / 28%); + background: + linear-gradient(180deg, rgb(0 255 136 / 8%), rgb(255 255 255 / 2.5%)), + rgb(255 255 255 / 2.8%); +} + +.script-eval-v5-upload-done { + width: min(100%, 320px); + padding: 14px 14px; + box-shadow: inset 0 1px 0 rgb(255 255 255 / 8%); +} + +.script-eval-v5-info-grid { + display: grid; + grid-template-columns: 1fr; +} + +.script-eval-v5-info-item { + min-height: 42px; + box-shadow: inset 0 1px 0 rgb(255 255 255 / 3%); +} + +.script-eval-v5-info-empty, +.script-eval-v5-history-empty { + color: #82918c; + background: + linear-gradient(180deg, rgb(255 255 255 / 3.2%), rgb(255 255 255 / 1.8%)); +} + +.script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + background: + linear-gradient(180deg, rgb(0 255 136 / 3.4%), transparent 92px), + linear-gradient(180deg, rgb(255 255 255 / 1.8%), transparent); +} + +.script-eval-v5-history-list { + padding: 2px 8px 2px 0; +} + +.script-eval-v5-history-item { + min-height: 68px; + box-shadow: inset 0 1px 0 rgb(255 255 255 / 3%); +} + +.script-eval-v5-lp-bottom { + padding: 18px 22px 22px; + background: + linear-gradient(180deg, rgb(255 255 255 / 2.2%), transparent 60px), + #111414; + box-shadow: inset 0 1px 0 rgb(255 255 255 / 3.5%); +} + +.script-eval-v5-export-btn { + border-color: rgb(255 255 255 / 7%); + background: + linear-gradient(180deg, rgb(255 255 255 / 3.5%), rgb(255 255 255 / 1.8%)), + #111414; + color: #7f8d88; +} + +.script-eval-v5-export-btn:not(:disabled):hover { + border-color: rgb(0 255 136 / 22%); + color: #c7d5d0; + background: + linear-gradient(180deg, rgb(0 255 136 / 8%), rgb(255 255 255 / 2%)), + #111414; +} + +.script-eval-v5-eval-btn:disabled, +.script-eval-v5-export-btn:disabled { + opacity: 0.48; + cursor: not-allowed; +} + +.script-eval-v5-right-topbar { + backdrop-filter: blur(14px); + background: + linear-gradient(180deg, rgb(18 22 21 / 92%), rgb(12 14 14 / 88%)); +} + +.script-eval-v5-right-content:not(.is-report) { + background: + radial-gradient(circle at 50% 43%, rgb(0 255 136 / 5%), transparent 32%), + linear-gradient(180deg, transparent, rgb(0 0 0 / 12%)); +} + +.script-eval-v5-upload-card-title { + color: #f0fff8; +} + +.script-eval-v5-upload-card-desc { + max-width: 540px; + color: #96a5a0; +} + +.script-eval-v5-statusbar { + background: + linear-gradient(180deg, rgb(17 20 20 / 84%), rgb(10 12 12 / 92%)); +} + +@media (max-height: 760px) and (min-width: 901px) { + .script-eval-v5-left-main .script-eval-v5-lp-section { + padding-block: 12px; + } + + .script-eval-v5-upload-zone { + min-height: 156px; + } + + .script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + min-height: 176px; + } + + .script-eval-v5-left-main .script-eval-v5-history-list { + min-height: 110px; + } +} + +@media (max-width: 680px) { + .script-eval-v5-left-main .script-eval-v5-lp-section { + padding-inline: 16px; + } + + .script-eval-v5-upload-zone { + min-height: 164px; + } + + .script-eval-v5-lp-bottom { + padding: 14px 16px 18px; + } + + .script-eval-v5-right-content:not(.is-report) { + padding-top: 22px; + } +} + +/* Ecommerce-aligned tone pass: restrained dark SaaS surfaces, no depth shadows. */ +.script-eval-v5 { + --v5-bg: #0d0d0f; + --v5-bg2: #151719; + --v5-bg3: #181b1d; + --v5-bg4: #1d2022; + --v5-bg5: #222629; + --v5-border: rgba(255, 255, 255, 0.08); + --v5-border2: rgba(255, 255, 255, 0.12); + --v5-panel: #151719; + --v5-panel-2: #181b1d; + --v5-panel-3: #101214; + --v5-line: rgba(255, 255, 255, 0.08); + --v5-line-strong: rgba(0, 255, 136, 0.24); + --v5-green-deep: rgba(0, 255, 136, 0.055); + --v5-green-soft: rgba(0, 255, 136, 0.09); + --v5-green-border: rgba(0, 255, 136, 0.24); + --v5-shadow-soft: none; + --v5-shadow-tight: none; + background: + radial-gradient(circle at 24% 0%, rgba(0, 255, 136, 0.038), transparent 34%), + linear-gradient(180deg, rgba(255, 255, 255, 0.018), transparent 160px), + var(--v5-bg); +} + +.script-eval-v5-page { + background: + linear-gradient(90deg, rgba(255, 255, 255, 0.014), transparent 24%, transparent 76%, rgba(255, 255, 255, 0.012)), + transparent; +} + +.script-eval-v5-left, +.script-eval-v5-right { + background: var(--v5-panel); + box-shadow: none; +} + +.script-eval-v5-left { + border-right-color: var(--v5-line); +} + +.script-eval-v5-left-main .script-eval-v5-lp-section, +.script-eval-v5-left-main .script-eval-v5-lp-section.is-fill { + background: transparent; + border-bottom-color: var(--v5-line); + box-shadow: none; +} + +.script-eval-v5-lp-label { + color: #a7b3af; + letter-spacing: 0.02em; +} + +.script-eval-v5-lp-label::before { + background: var(--v5-green); + box-shadow: none; + opacity: 0.72; +} + +.script-eval-v5-upload-zone, +.script-eval-v5-info-empty, +.script-eval-v5-history-empty, +.script-eval-v5-info-item, +.script-eval-v5-history-item, +.script-eval-v5-loading, +.script-eval-v5-illustration-hit, +.script-eval-report__score-block, +.script-eval-report__chart-card, +.script-eval-report__path-card, +.script-eval-report__finding-group p { + border-color: var(--v5-line); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.032), transparent 58%), + var(--v5-panel-2); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025); +} + +.script-eval-v5-upload-zone { + border-style: dashed; +} + +.script-eval-v5-upload-zone::after { + display: none; +} + +.script-eval-v5-upload-zone:hover, +.script-eval-v5-upload-zone:focus-visible, +.script-eval-v5.is-ready .script-eval-v5-upload-zone, +.script-eval-v5.is-complete .script-eval-v5-upload-zone { + border-color: var(--v5-green-border); + background: + radial-gradient(circle at 50% 0%, rgba(0, 255, 136, 0.075), transparent 58%), + var(--v5-panel-3); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.028); +} + +.script-eval-v5-upload-icon, +.script-eval-v5-upload-card-icon { + border-color: rgba(0, 255, 136, 0.18); + border-radius: 10px; + background: rgba(0, 255, 136, 0.09); + box-shadow: none; +} + +.script-eval-v5-upload-btn, +.script-eval-v5-eval-btn { + background: var(--v5-green); + color: #061014; + box-shadow: none; +} + +.script-eval-v5-upload-btn:hover, +.script-eval-v5-eval-btn:hover:not(:disabled) { + background: var(--v5-green-dim); + transform: none; + box-shadow: none; +} + +.script-eval-v5-upload-done, +.script-eval-v5-history-item.is-active, +.script-eval-v5-error, +.script-eval-report__chart-note, +.script-eval-report__grade { + box-shadow: none; +} + +.script-eval-v5-upload-done { + border-color: var(--v5-green-border); + background: + linear-gradient(180deg, rgba(0, 255, 136, 0.085), rgba(0, 255, 136, 0.035)), + var(--v5-panel-2); +} + +.script-eval-v5-history-item:hover { + border-color: rgba(255, 255, 255, 0.13); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 58%), + var(--v5-panel-2); + transform: none; + box-shadow: none; +} + +.script-eval-v5-history-item.is-active { + border-color: var(--v5-green-border); + background: + linear-gradient(90deg, rgba(0, 255, 136, 0.08), rgba(0, 255, 136, 0.025)), + var(--v5-panel-2); +} + +.script-eval-v5-lp-bottom, +.script-eval-v5-right-topbar, +.script-eval-v5-statusbar { + background: rgba(21, 23, 25, 0.96); + border-color: var(--v5-line); + box-shadow: none; + backdrop-filter: none; +} + +.script-eval-v5-export-btn, +.script-eval-v5-action-btn, +.script-eval-v5-retry-btn { + border-color: var(--v5-line); + background: rgba(255, 255, 255, 0.035); + color: #aeb8b1; + box-shadow: none; +} + +.script-eval-v5-export-btn:hover:not(:disabled), +.script-eval-v5-action-btn:hover, +.script-eval-v5-retry-btn:hover { + border-color: var(--v5-green-border); + background: rgba(0, 255, 136, 0.07); + color: #d9fff0; +} + +.script-eval-v5-right-content:not(.is-report) { + background: + radial-gradient(circle at 50% 0%, rgba(0, 255, 136, 0.034), transparent 44%), + transparent; +} + +.script-eval-v5-illustration-hit:hover, +.script-eval-v5-illustration-hit:focus-visible { + background: + linear-gradient(180deg, rgba(0, 255, 136, 0.06), transparent 58%), + var(--v5-panel-2); + box-shadow: none; +} + +.script-eval-report { + --report-bg: #0d0d0f; + --report-panel: #151719; + --report-panel-2: #101214; + --report-row: #181b1d; + --report-border: rgba(255, 255, 255, 0.08); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.018), transparent 180px), + var(--report-bg); +} + +.script-eval-report::before, +.script-eval-report::after { + opacity: 0.28; +} + +.script-eval-report__bar-fill { + box-shadow: none; +} + +.script-eval-v5.is-complete .script-eval-v5-status-dot, +.script-eval-v5.is-ready .script-eval-v5-status-dot { + box-shadow: none; +} +>>>>>>> c1c4086383ddd7c1c8c152c2d5a97a4f432fa260 diff --git a/src/styles/themes/dark-green.css b/src/styles/themes/dark-green.css index 78cbdf1..bcf25f0 100644 --- a/src/styles/themes/dark-green.css +++ b/src/styles/themes/dark-green.css @@ -6089,6 +6089,2312 @@ box-shadow: none; } +.web-shell[data-ui-theme="dark-green"] .profile-page__meta-item small { + overflow: hidden; + color: var(--fg-soft); + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page__meta-item strong { + overflow: hidden; + color: var(--fg-body); + font-size: 17px; + line-height: 1.25; + text-overflow: ellipsis; + white-space: nowrap; +} + +@media (max-width: 900px) { + .web-shell[data-ui-theme="dark-green"] .profile-page__body { + grid-template-columns: 1fr; + width: min(100% - 36px, 760px); + margin-top: -54px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__sidebar { + align-items: stretch; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__main-tabs { + overflow-x: auto; + } +} + +@media (max-width: 560px) { + .web-shell[data-ui-theme="dark-green"] .profile-page__banner { + height: 152px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__banner .profile-page__banner-btn { + top: 10px; + right: 12px; + width: 36px; + min-width: 36px; + height: 36px; + padding: 0; + border-radius: 999px; + font-size: 0; + gap: 0; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__banner-btn .anticon { + width: 24px; + height: 24px; + background: transparent; + font-size: 14px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__body { + width: min(100% - 28px, 560px); + margin-top: -32px; + padding-bottom: 88px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__sidebar { + gap: 13px; + padding: 18px; + border-radius: var(--radius-md); + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__sidebar-head { + gap: 7px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__avatar-ring .profile-page__avatar, + .web-shell[data-ui-theme="dark-green"] .profile-page__avatar { + width: 76px; + height: 76px; + border-width: 3px; + font-size: 24px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__avatar-edit { + width: 76px; + height: 76px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__avatar-badge { + bottom: 6px; + width: 18px; + height: 18px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__username { + font-size: 20px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__bio { + min-height: 46px; + padding: 8px 10px; + font-size: 12px; + line-height: 1.45; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__bio-display { + min-height: 42px; + padding: 8px 10px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__bio-display span { + font-size: 12px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__counts { + padding: 9px 0; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__count strong { + font-size: 18px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__share-btn { + min-height: 36px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__main-tabs button { + flex: 0 0 auto; + padding: 0 14px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__upload-card--meta { + grid-template-columns: 1fr; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; + max-height: min(312px, 46vh); + padding-right: 4px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card { + min-height: 112px; + padding: 9px; + gap: 8px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card-head { + align-items: flex-start; + flex-direction: column; + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card-head strong { + width: 100%; + font-size: 12px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card-head span { + max-width: 100%; + overflow: hidden; + padding: 3px 7px; + font-size: 10px; + text-overflow: ellipsis; + white-space: nowrap; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card p { + min-height: 30px; + font-size: 11px; + line-height: 1.45; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-card-meta { + align-items: flex-start; + flex-direction: column; + gap: 4px; + padding-top: 8px; + font-size: 10px; + } +} + +/* Profile center: responsive workspace refinement. */ +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard { + background: + linear-gradient(180deg, rgba(var(--accent-rgb), 0.035), transparent 220px), + var(--dg-page); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__banner { + height: clamp(156px, 18vw, 214px); + background: + linear-gradient(135deg, rgba(var(--accent-rgb), 0.1), transparent 36%), + linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent), + var(--bg-surface); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__banner-overlay { + background: + linear-gradient(180deg, rgba(13, 13, 15, 0.12), rgba(13, 13, 15, 0.72)), + linear-gradient(90deg, rgba(13, 13, 15, 0.68), transparent 42%); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__body { + grid-template-columns: minmax(270px, 300px) minmax(0, 1fr); + gap: clamp(18px, 2.4vw, 30px); + width: min(1180px, calc(100% - 48px)); + min-height: auto; + margin-top: -58px; + padding-bottom: clamp(36px, 5vw, 64px); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__section, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__review-item, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__empty-state, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__upload-card { + border-color: rgba(255, 255, 255, 0.075); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.026), transparent), + rgba(21, 23, 25, 0.96); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar { + gap: 16px; + padding: clamp(16px, 2vw, 22px); + border-radius: var(--radius-md); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-ring::before { + opacity: 0.45; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-ring .profile-page__avatar, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar { + width: 82px; + height: 82px; + border-width: 3px; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-edit { + width: 82px; + height: 82px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-badge { + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__username { + font-size: clamp(19px, 1.7vw, 22px); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__bio-display, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__bio { + border-color: rgba(255, 255, 255, 0.07); + background: rgba(255, 255, 255, 0.024); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__bio-display span { + text-align: left; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__counts { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; + padding: 0; + border: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__count { + min-width: 0; + padding: 12px 8px; + border: 1px solid rgba(255, 255, 255, 0.065); + border-radius: var(--radius-sm); + background: rgba(255, 255, 255, 0.024); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__count strong { + font-size: clamp(18px, 1.5vw, 22px); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card { + display: grid; + gap: 10px; + width: 100%; + padding: 11px; + border: 1px solid rgba(255, 255, 255, 0.075); + border-radius: var(--radius-sm); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card .profile-page__list-tabs { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + width: 100%; + padding: 3px; + border-color: rgba(255, 255, 255, 0.06); + background: rgba(255, 255, 255, 0.02); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card .profile-page__list-tabs button { + min-width: 0; + min-height: 30px; + padding: 0 8px; + overflow: hidden; + font-size: 12px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card .profile-page__upload-card--meta { + grid-template-columns: 1fr; + gap: 8px; + padding: 0; + border: 0; + background: transparent; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card .profile-page__meta-item { + min-height: auto; + padding: 10px 11px; + background: rgba(255, 255, 255, 0.022); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__account-card .profile-page__meta-item strong { + font-size: 15px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__share-btn { + min-height: 42px; + border-radius: 10px; + font-size: 13px; + font-weight: 650; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__share-btn:hover { + transform: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__share-btn--primary { + background: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__share-btn--secondary { + border-color: rgba(255, 255, 255, 0.08); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main { + gap: 16px; + min-width: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 6px; + min-height: 50px; + margin: 0; + padding: 5px; + border-radius: var(--radius-md); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs button { + min-width: 0; + min-height: 40px; + padding: 0 12px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__section { + display: grid; + gap: 14px; + padding: clamp(14px, 1.8vw, 18px); + border: 1px solid rgba(255, 255, 255, 0.075); + border-radius: var(--radius-md); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__section-label { + display: flex; + align-items: center; + gap: 8px; + color: var(--fg-body); + font-size: 15px; + font-weight: 700; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__section-label::before { + content: ""; + width: 7px; + height: 7px; + border-radius: 50%; + background: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-grid, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__review-list { + gap: 12px; + max-height: none; + overflow: visible; + padding-right: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-grid { + grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__review-list { + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card { + min-height: 128px; + padding: 15px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 92px minmax(0, 1fr); + align-items: stretch; + gap: 12px; + min-height: 116px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview { + position: relative; + display: flex; + align-items: center; + justify-content: center; + min-width: 0; + min-height: 88px; + overflow: hidden; + border: 1px solid rgba(255, 255, 255, 0.065); + border-radius: 10px; + background: + linear-gradient(135deg, rgba(var(--accent-rgb), 0.055), transparent 64%), + rgba(255, 255, 255, 0.024); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview:not(.has-media) { + border-color: rgba(255, 255, 255, 0.07); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent), + rgba(255, 255, 255, 0.018); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview img, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview video { + width: 100%; + height: 100%; + min-height: 88px; + object-fit: cover; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-placeholder { + display: inline-flex; + align-items: center; + justify-content: center; + width: 38px; + height: 38px; + border: 1px solid rgba(var(--accent-rgb), 0.18); + border-radius: 12px; + background: rgba(var(--accent-rgb), 0.07); + color: rgba(var(--accent-rgb), 0.92); + font-size: 16px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-badge { + position: absolute; + top: 7px; + right: 7px; + max-width: calc(100% - 14px); + overflow: hidden; + padding: 3px 7px; + border-radius: 999px; + border: 1px solid rgba(var(--accent-rgb), 0.22); + background: rgba(8, 14, 12, 0.76); + color: var(--accent); + font-size: 10px; + font-weight: 700; + line-height: 1; + text-overflow: ellipsis; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-head { + gap: 8px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-head strong { + min-width: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__delete-project { + flex: 0 0 26px; + width: 26px; + height: 26px; + margin: -3px -2px 0 0; + border: 1px solid rgba(255, 255, 255, 0.075); + border-radius: 8px; + background: rgba(255, 255, 255, 0.026); + color: var(--fg-soft); + opacity: 0.72; + transition: border-color var(--transition-fast), background var(--transition-fast), color var(--transition-fast), opacity var(--transition-fast); +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__delete-project:hover, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__delete-project:focus-visible { + border-color: rgba(255, 118, 118, 0.28); + background: rgba(255, 118, 118, 0.08); + color: #ff9a9d; + opacity: 1; + outline: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-body { + display: grid; + align-content: start; + gap: 8px; + min-width: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card:hover, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__review-item:hover { + border-color: rgba(var(--accent-rgb), 0.28); + transform: none; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__empty-state { + min-height: 240px; + padding: clamp(30px, 4vw, 46px) 24px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-bar { + margin-bottom: 0; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-tabs { + width: fit-content; + max-width: 100%; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-tabs button { + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__upload-card--meta { + grid-template-columns: repeat(2, minmax(0, 1fr)); + padding: 12px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__meta-item { + min-height: 78px; +} + +@media (max-width: 960px) { + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__body { + grid-template-columns: 1fr; + width: min(760px, calc(100% - 36px)); + margin-top: -44px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar { + display: grid; + grid-template-columns: minmax(0, 1.2fr) minmax(220px, 0.8fr); + align-items: start; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar-head { + grid-row: span 5; + align-items: flex-start; + text-align: left; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__counts { + align-self: stretch; + } +} + +@media (max-width: 640px) { + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__banner { + height: 140px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__body { + width: min(100% - 28px, 560px); + margin-top: -30px; + padding-bottom: 84px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar { + display: flex; + gap: 12px; + padding: 16px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__sidebar-head { + align-items: center; + text-align: center; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-ring .profile-page__avatar, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar { + width: 72px; + height: 72px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__avatar-edit { + width: 72px; + height: 72px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__counts { + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__count { + padding: 10px 6px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs { + display: flex; + overflow-x: auto; + scrollbar-width: none; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs::-webkit-scrollbar { + display: none; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__main-tabs button { + flex: 0 0 auto; + min-width: 88px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__section { + padding: 14px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-grid, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__review-list { + grid-template-columns: 1fr; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card { + min-height: 118px; + padding: 13px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 88px minmax(0, 1fr); + gap: 10px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview img, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview video { + min-height: 82px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-head { + align-items: center; + flex-direction: row; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__upload-card--meta { + grid-template-columns: 1fr; + } +} + +@media (max-width: 420px) { + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__body { + width: min(100% - 20px, 420px); + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__counts { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__share-btn { + min-height: 40px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 78px minmax(0, 1fr); + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview img, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__list-card-preview video { + min-height: 76px; + } +} + +/* Profile center: lock media card rhythm for dense libraries. */ +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 92px minmax(0, 1fr); + height: 126px; + min-height: 126px; + max-height: 126px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview { + width: 92px; + height: 96px; + min-height: 96px; + max-height: 96px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview img, +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview video { + height: 96px; + min-height: 96px; + max-height: 96px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-body { + display: grid; + grid-template-rows: 18px 36px 18px; + align-content: space-between; + gap: 8px; + height: 96px; + min-height: 96px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-head { + min-height: 18px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-head strong { + display: block; + width: 100%; + line-height: 1.25; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card p { + min-height: 36px; + max-height: 36px; + line-height: 1.5; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-meta { + align-self: end; + min-height: 18px; +} + +.web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-meta span:last-child { + color: var(--fg-soft); +} + +@media (max-width: 640px) { + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 88px minmax(0, 1fr); + height: 112px; + min-height: 112px; + max-height: 112px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview { + width: 88px; + height: 86px; + min-height: 86px; + max-height: 86px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview img, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview video { + height: 86px; + min-height: 86px; + max-height: 86px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-body { + grid-template-rows: 16px 32px 16px; + gap: 6px; + height: 86px; + min-height: 86px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card p { + min-height: 32px; + max-height: 32px; + line-height: 1.45; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-meta { + min-height: 16px; + } +} + +@media (max-width: 420px) { + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card { + grid-template-columns: 78px minmax(0, 1fr); + height: 104px; + min-height: 104px; + max-height: 104px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview { + width: 78px; + height: 78px; + min-height: 78px; + max-height: 78px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview img, + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-preview video { + height: 78px; + min-height: 78px; + max-height: 78px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page--dashboard .profile-page__media-card .profile-page__list-card-body { + height: 78px; + min-height: 78px; + } +} + +/* Ecommerce generation page: keep its carousel and composer independent from + the community carousel rules that share class names. */ +.web-shell[data-ui-theme="dark-green"] .ecommerce-landing-page { + display: block; + width: 100%; + height: auto; + min-height: 100%; + overflow: visible; + background: var(--dg-page); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-landing-scroll { + display: grid; + flex: none; + justify-items: center; + align-content: start; + gap: 28px; + width: min(100%, 1040px); + height: auto; + min-height: 0; + margin: 0 auto; + overflow: visible; + padding: 48px 28px 32px; + border: 0; + background: transparent; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generate-carousel { + width: min(100%, 1040px); + min-height: 310px; + border: 0; + border-radius: var(--radius-lg); + background: transparent; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generate-carousel .community-carousel__track { + align-items: center; + height: 100%; + padding: 0; + transition: transform 520ms cubic-bezier(0.32, 0.72, 0, 1); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generate-carousel .community-carousel__slide { + flex: 0 0 calc(100% / 3); + min-width: 0; + min-height: 286px; + height: 286px; + aspect-ratio: auto; + padding: 28px 32px; + border-radius: var(--radius-lg); + opacity: 0.62; + transform: scale(0.92); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generate-carousel .community-carousel__slide.is-center { + z-index: 2; + opacity: 1; + transform: scale(1.04); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generate-carousel .community-carousel__full-image { + object-fit: cover; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-carousel-upload { + top: 16px; + right: 16px; + width: auto; + min-height: 36px; + padding: 0 12px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-sm); + background: var(--bg-elevated); + color: var(--fg-body); + box-shadow: none; + font-family: var(--font-sans); + font-size: 12px; + font-weight: 600; + letter-spacing: 0; + transform: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-carousel-upload:hover, +.web-shell[data-ui-theme="dark-green"] .ecommerce-carousel-upload:active { + border-color: rgba(var(--accent-rgb), 0.28); + background: var(--bg-hover); + color: var(--accent); + box-shadow: none; + transform: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-composer-shell { + width: min(100%, 720px); + max-width: 720px; + margin: 0 auto; + padding: 20px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-reference-strip { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + margin-bottom: 12px; + padding: 0 0 10px; + overflow-x: auto; + overflow-y: hidden; + border-bottom: 1px solid var(--border-weak); + scrollbar-width: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-reference-strip::-webkit-scrollbar { + display: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-reference-card { + display: inline-flex; + flex: 0 0 auto; + align-items: center; + justify-content: center; + gap: 6px; + min-width: 104px; + height: 44px; + padding: 0 12px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-sm); + background: var(--bg-inset); + color: var(--fg-muted); + box-shadow: none; + font-family: var(--font-sans); + font-size: 12px; + font-weight: 600; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-reference-card.has-image { + width: 54px; + min-width: 54px; + padding: 0; + overflow: hidden; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-reference-card img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-composer-toolbar { + flex-wrap: wrap; + gap: 8px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generation-trigger, +.web-shell[data-ui-theme="dark-green"] .ecommerce-composer-tool--ratio { + width: auto; + min-width: 0; + padding: 0 10px; + gap: 6px; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu { + position: relative; + z-index: 20; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel { + position: absolute; + left: 0; + top: auto; + bottom: calc(100% + 10px); + z-index: 90; + display: grid; + width: max-content; + min-width: 168px; + gap: 4px; + padding: 6px; + border: 1px solid var(--border-subtle); + border-radius: var(--radius-md); + background: var(--bg-panel); + box-shadow: var(--shadow-tight); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-generation-menu__panel { + min-width: 176px; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 10px; + width: 100%; + min-height: 38px; + padding: 0 10px; + border: 1px solid transparent; + border-radius: var(--radius-sm); + background: transparent; + color: var(--fg-body); + box-shadow: none; + font-family: var(--font-sans); + font-size: 13px; + font-weight: 600; + line-height: 1; + text-align: left; + text-shadow: none; + cursor: pointer; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button .anticon { + color: var(--fg-muted); + font-size: 14px; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button span { + color: inherit; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button:hover { + border-color: var(--border-default); + background: var(--bg-hover); + color: var(--fg-body); + transform: none; +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button.is-active { + border-color: rgba(var(--accent-rgb), 0.36); + background: rgba(var(--accent-rgb), 0.12); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button:hover .anticon, +.web-shell[data-ui-theme="dark-green"] .workbench-generation-menu__panel button.is-active .anticon { + color: currentColor; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-composer-footer { + flex-wrap: wrap; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences { + z-index: 120; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel { + display: grid; + align-content: start; + gap: 12px; + max-height: calc(100vh - 24px); + overflow: auto; + padding: 12px; + border: 1px solid var(--border-subtle); + border-radius: var(--radius-md); + background: var(--bg-panel); + color: var(--fg-body); + box-shadow: var(--shadow-tight); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-preferences__section-label { + margin-bottom: -4px; + color: var(--fg-muted); + font-family: var(--font-sans); + font-size: 12px; + font-weight: 600; + line-height: 1.2; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-ratio-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 6px; + padding: 6px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-sm); + background: var(--bg-inset); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-ratio-option { + display: grid; + justify-items: center; + align-content: center; + gap: 5px; + min-height: 44px; + padding: 6px 4px; + border: 1px solid transparent; + border-radius: var(--radius-xs); + background: transparent; + color: var(--fg-muted); + box-shadow: none; + font-family: var(--font-sans); + font-size: 12px; + font-weight: 600; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-ratio-option:hover { + border-color: var(--border-default); + background: var(--bg-hover); + color: var(--fg-body); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-ratio-option.is-active { + border-color: rgba(var(--accent-rgb), 0.36); + background: rgba(var(--accent-rgb), 0.12); + color: var(--accent); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-ratio-option__icon { + border-width: 1.5px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-resolution-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 6px; + padding: 6px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-sm); + background: var(--bg-inset); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-resolution-grid button { + min-height: 38px; + border: 1px solid transparent; + border-radius: var(--radius-xs); + background: transparent; + color: var(--fg-body); + box-shadow: none; + font-family: var(--font-sans); + font-size: 13px; + font-weight: 600; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-resolution-grid button:hover { + border-color: var(--border-default); + background: var(--bg-hover); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-resolution-grid button.is-active { + border-color: rgba(var(--accent-rgb), 0.36); + background: rgba(var(--accent-rgb), 0.12); + color: var(--accent); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid { + grid-template-columns: minmax(0, 1fr) 24px minmax(0, 1fr) auto; + gap: 8px; + color: var(--fg-muted); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid label { + height: 38px; + gap: 6px; + padding: 0 10px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-xs); + background: var(--bg-inset); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid label span, +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid > span, +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid > .anticon { + color: var(--fg-muted); +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-size-grid input { + color: var(--fg-body); + font-family: var(--font-sans); + font-size: 13px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-preferences__panel .workbench-preferences__resize { + display: none; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-result-panel, +.web-shell[data-ui-theme="dark-green"] .ecommerce-community-content { + width: min(100%, 1040px); + margin: 0 auto; + padding: 0 28px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-result-panel { + margin-top: 8px; + margin-bottom: 32px; +} + +.web-shell[data-ui-theme="dark-green"] .ecommerce-community-content { + padding-bottom: 64px; +} + +/* Canvas full dark-green legibility pass. Legacy canvas rules still contain pixel + colors, so this late theme block owns every visible canvas control. */ +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas { + color: var(--fg-body); + font-family: var(--font-sans); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + button, + input, + textarea, + span, + strong, + small, + kbd, + em +) { + text-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__title, + .studio-canvas-image-node__title, + .studio-canvas-video-node__title +) { + color: var(--fg-muted); + text-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__card, + .studio-canvas-image-node__card, + .studio-canvas-video-node__preview, + .studio-canvas-text-composer, + .studio-canvas-image-composer, + .studio-canvas-video-composer, + .studio-canvas-save-asset__modal, + .studio-canvas-save-asset__cover-library +) { + border: 1px solid var(--border-weak); + border-radius: var(--radius-md); + background: var(--bg-elevated); + background-image: none; + color: var(--fg-body); + box-shadow: var(--shadow-tight); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node.is-selected .studio-canvas-text-node__card, + .studio-canvas-image-node.is-selected .studio-canvas-image-node__card, + .studio-canvas-video-node.is-selected .studio-canvas-video-node__preview +) { + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(var(--accent-rgb), 0.34); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__inline-input, + .studio-canvas-text-node__content, + .studio-canvas-text-composer textarea, + .studio-canvas-image-composer textarea, + .studio-canvas-video-composer textarea, + .studio-canvas-save-asset__form input +) { + background: transparent; + color: var(--fg-body); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__inline-input::placeholder, + .studio-canvas-text-composer textarea::placeholder, + .studio-canvas-image-composer textarea::placeholder, + .studio-canvas-video-composer textarea::placeholder, + .studio-canvas-save-asset__form input::placeholder +) { + color: var(--fg-soft); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__suggestions > span, + .studio-canvas-image-node__placeholder, + .studio-canvas-image-node__placeholder-actions span, + .studio-canvas-video-node__play, + .studio-canvas-text-composer__footer span, + .studio-canvas-image-composer__footer span, + .studio-canvas-video-composer__footer span, + .studio-canvas-save-asset__label, + .studio-canvas-save-asset__form label > span, + .studio-canvas-save-asset__existing-title, + .studio-canvas-save-asset__empty +) { + color: var(--fg-muted); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-node__placeholder-icon { + color: var(--fg-soft); + opacity: 0.72; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__suggestions button, + .studio-canvas-image-node__placeholder-actions button, + .studio-canvas-text-composer__footer button, + .studio-canvas-image-composer__footer button, + .studio-canvas-image-node__upload, + .studio-canvas-image-composer__tools button, + .studio-canvas-video-composer__tabs button, + .studio-canvas-video-composer__tools button, + .studio-canvas-video-composer__footer button, + .studio-canvas-save-asset__head button, + .studio-canvas-save-asset__placeholder button, + .studio-canvas-save-asset__cover-library button, + .studio-canvas-save-asset__existing-grid button, + .react-flow__controls button +) { + border-color: var(--border-weak); + border-radius: var(--radius-sm); + background: transparent; + color: var(--fg-body); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__suggestions button:hover, + .studio-canvas-image-node__placeholder-actions button:hover, + .studio-canvas-text-composer__footer button:hover, + .studio-canvas-image-composer__footer button:hover, + .studio-canvas-image-node__upload:hover, + .studio-canvas-image-composer__tools button:hover, + .studio-canvas-video-composer__tabs button:hover, + .studio-canvas-video-composer__tools button:hover, + .studio-canvas-video-composer__footer button:hover, + .studio-canvas-save-asset__head button:hover, + .studio-canvas-save-asset__placeholder button:hover, + .studio-canvas-save-asset__cover-library button:hover, + .studio-canvas-save-asset__existing-grid button:hover +) { + border-color: rgba(var(--accent-rgb), 0.28); + background: var(--bg-hover); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-video-composer__tabs button.is-active, + .studio-canvas-video-composer__tools button.is-active, + .studio-canvas-save-asset__head button.is-active, + .studio-canvas-save-asset__existing-grid button.is-selected +) { + border-color: rgba(var(--accent-rgb), 0.32); + background: var(--accent-muted); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-composer__model, + .studio-canvas-text-composer__send, + .studio-canvas-image-node__upload, + .studio-canvas-image-composer__tools button, + .studio-canvas-video-composer__tabs button, + .studio-canvas-video-composer__tools button, + .studio-canvas-video-composer__footer button, + .studio-canvas-save-asset__placeholder button, + .studio-canvas-save-asset__create, + .react-flow__controls button +) { + border: 1px solid var(--border-weak) !important; + border-radius: var(--radius-sm) !important; + background: var(--bg-inset) !important; + color: var(--fg-body) !important; + box-shadow: none !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-composer__send, + .studio-canvas-video-composer__footer button, + .studio-canvas-save-asset__create +) { + border-color: var(--accent) !important; + background: var(--accent) !important; + color: var(--dg-button-text) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-composer__expand { + background: transparent !important; + color: var(--fg-muted) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-text-composer__model-mark, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-text-composer__model-menu-icon { + border: 1px solid rgba(var(--accent-rgb), 0.24); + border-radius: var(--radius-xs); + background: var(--accent-muted); + color: var(--accent); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-composer-chip .canvas-select-chip__trigger, + .canvas-select-chip__trigger +) { + border: 1px solid var(--border-weak) !important; + border-radius: var(--radius-sm) !important; + background: var(--bg-inset) !important; + color: var(--fg-body) !important; + box-shadow: none !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-composer-chip .canvas-select-chip__dropdown, + .canvas-select-chip__dropdown +) { + border: 1px solid var(--border-weak); + border-radius: var(--radius-md); + background: var(--bg-elevated); + background-image: none; + color: var(--fg-body); + box-shadow: var(--shadow-tight); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-composer-chip .canvas-select-chip__option, + .canvas-select-chip__option +) { + border: 0 !important; + border-radius: var(--radius-sm) !important; + background: transparent !important; + color: var(--fg-muted) !important; + box-shadow: none !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-composer-chip .canvas-select-chip__option:hover, + .studio-canvas-composer-chip .canvas-select-chip__option.is-active, + .canvas-select-chip__option:hover, + .canvas-select-chip__option.is-active +) { + background: var(--accent-muted) !important; + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .canvas-select-chip__option-dot { + background: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__glyph span, + .studio-canvas-text-node__connector span, + .studio-canvas-image-node__connector span, + .studio-canvas-video-node__connector span +) { + border: 1px solid var(--border-default); + border-radius: var(--radius-xs); + background: var(--bg-inset); + color: var(--fg-body); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-text-node__connector.is-linking span, + .studio-canvas-image-node__connector.is-linking span, + .studio-canvas-video-node__connector.is-linking span +) { + border-color: var(--accent); + background: var(--accent); + color: var(--dg-button-text); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-links path { + stroke: rgba(var(--accent-rgb), 0.5); + filter: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-links circle { + fill: var(--accent); + stroke: var(--bg-elevated); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-selection-box { + border: 1px dashed var(--accent); + background: rgba(var(--accent-rgb), 0.12); + background-image: none; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-resize-handle { + border: 1px solid var(--accent); + border-radius: var(--radius-xs); + background: var(--accent); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-resize-handle::before, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-resize-handle::after { + background: var(--dg-button-text); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-save-asset { + background: rgba(0, 0, 0, 0.74); + backdrop-filter: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-save-asset__placeholder, + .studio-canvas-save-asset__select, + .studio-canvas-save-asset__existing-grid button +) { + border: 1px solid var(--border-weak); + border-radius: var(--radius-md); + background: var(--bg-inset); + color: var(--fg-body); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-save-asset__existing-grid span { + color: var(--fg-muted); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-node, + .studio-canvas-image-node, + .studio-canvas-video-node, + .studio-canvas-text-composer, + .studio-canvas-image-composer, + .studio-canvas-video-composer, + .studio-canvas-context-menu, + .studio-canvas-node-context-menu, + .studio-canvas-add-node-menu, + .studio-canvas-save-asset, + .canvas-select-chip +) :is( + button, + input, + textarea, + label, + p, + span, + strong, + small, + kbd, + em, + .anticon, + svg +) { + color: inherit; + text-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-node__card, + .studio-canvas-image-node__card, + .studio-canvas-video-node__preview, + .studio-canvas-text-composer, + .studio-canvas-image-composer, + .studio-canvas-video-composer, + .studio-canvas-context-menu, + .studio-canvas-node-context-menu, + .studio-canvas-add-node-menu, + .studio-canvas-save-asset__modal, + .studio-canvas-save-asset__cover-menu, + .studio-canvas-save-asset__select-menu, + .canvas-select-chip__dropdown +) { + color: var(--fg-body) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-node__title, + .studio-canvas-image-node__title, + .studio-canvas-video-node__title, + .studio-canvas-text-node__suggestions > span, + .studio-canvas-image-node__placeholder, + .studio-canvas-image-node__placeholder-actions span, + .studio-canvas-video-node__play, + .studio-canvas-text-composer__footer span, + .studio-canvas-image-composer__footer span, + .studio-canvas-video-composer__footer span, + .studio-canvas-text-composer__model-menu-copy small, + .studio-canvas-text-composer__model-menu em, + .studio-canvas-node-context-menu kbd, + .studio-canvas-node-context-menu__hint, + .studio-canvas-add-node-menu__head small, + .studio-canvas-add-node-menu__title, + .studio-canvas-save-asset__label, + .studio-canvas-save-asset__form label > span, + .studio-canvas-save-asset__existing-title, + .studio-canvas-save-asset__existing-grid span, + .studio-canvas-save-asset__empty, + .canvas-select-chip__value, + .canvas-select-chip__arrow +) { + color: var(--fg-muted) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-node__suggestions button, + .studio-canvas-image-node__placeholder-actions button, + .studio-canvas-text-composer__footer button, + .studio-canvas-image-composer__footer button, + .studio-canvas-video-composer__tabs button, + .studio-canvas-video-composer__tools button, + .studio-canvas-video-composer__footer button, + .studio-canvas-image-composer__tools button, + .studio-canvas-context-menu button, + .studio-canvas-node-context-menu button, + .studio-canvas-add-node-menu button, + .studio-canvas-save-asset__head button, + .studio-canvas-save-asset__cover-menu button, + .studio-canvas-save-asset__cover-library button, + .studio-canvas-save-asset__select-menu button, + .studio-canvas-save-asset__existing-grid button, + .canvas-select-chip__trigger, + .canvas-select-chip__option, + .react-flow__controls button +) { + color: var(--fg-body) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-composer__send, + .studio-canvas-image-composer__footer .studio-canvas-text-composer__send, + .studio-canvas-video-composer__footer > button:last-child, + .studio-canvas-save-asset__create +) { + color: var(--dg-button-text) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-add-node-menu__icon, + .studio-canvas-add-node-menu__badge, + .studio-canvas-text-composer__model-mark, + .studio-canvas-text-composer__model-menu-icon, + .canvas-select-chip__option-dot +) { + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas .canvas-select-chip__option > span:not(.canvas-select-chip__option-dot) { + color: currentColor !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-composer__state, + .studio-canvas-image-composer__state, + .studio-canvas-video-composer__state +) { + color: var(--fg-muted) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-composer__state.is-success, + .studio-canvas-image-composer__state.is-success, + .studio-canvas-video-composer__state.is-success +) { + color: #6fdc96 !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-text-composer__state.is-error, + .studio-canvas-image-composer__state.is-error, + .studio-canvas-video-composer__state.is-error +) { + color: #ff8f8f !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-add-node-menu button:hover:not(:disabled), + .studio-canvas-text-composer__model-menu button:hover, + .studio-canvas-text-composer__model-menu button.is-selected, + .canvas-select-chip__option:hover, + .canvas-select-chip__option.is-active +) { + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .canvas-select-chip__option:hover, + .canvas-select-chip__option.is-active +) > span:not(.canvas-select-chip__option-dot) { + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas :is( + .studio-canvas-add-node-menu button:hover:not(:disabled) .studio-canvas-add-node-menu__icon, + .studio-canvas-text-node__connector.is-linking span, + .studio-canvas-image-node__connector.is-linking span, + .studio-canvas-video-node__connector.is-linking span +) { + color: var(--dg-button-text) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas .studio-canvas-node-context-menu__hint { + border: 1px solid var(--border-default) !important; + border-radius: var(--radius-xs) !important; + background: var(--bg-inset) !important; + color: var(--fg-muted) !important; + box-shadow: none !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page [hidden] { + display: none !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer { + display: flex; + flex-direction: column; + gap: 10px; + padding: 12px; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__mode-tabs, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__feature-tools, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings { + position: static; + width: 100%; + margin: 0 !important; + padding: 0 !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__mode-tabs { + display: grid !important; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 6px; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__feature-tools { + display: flex !important; + flex-wrap: wrap; + gap: 6px; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__mode-tabs button, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__feature-tools button { + display: inline-flex !important; + align-items: center; + justify-content: center; + min-width: 0 !important; + min-height: 34px !important; + height: 34px !important; + padding: 0 10px !important; + border-radius: var(--radius-sm) !important; + font-size: 12px !important; + line-height: 1; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__mode-tabs button:hover, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__feature-tools button:hover { + border-color: rgba(var(--accent-rgb), 0.28) !important; + background: var(--bg-hover) !important; + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__mode-tabs button.is-active, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__feature-tools button.is-active { + border-color: rgba(var(--accent-rgb), 0.36) !important; + background: var(--accent-muted) !important; + color: var(--accent) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer textarea { + height: 84px; + min-height: 84px; + padding: 12px 12px 4px; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings { + display: grid !important; + grid-template-columns: minmax(150px, 1fr) minmax(76px, 0.5fr) minmax(76px, 0.5fr) minmax(58px, 0.35fr) auto auto; + align-items: center; + gap: 8px; + min-height: 38px; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings .studio-canvas-composer-chip { + min-width: 0; + width: 100%; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings .canvas-select-chip__trigger { + width: 100% !important; + height: 36px !important; + min-height: 36px !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings > span { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 42px; + height: 36px; + padding: 0 8px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-sm); + background: var(--bg-inset); + color: var(--fg-muted) !important; + white-space: nowrap; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-video-composer__settings > button { + width: 38px !important; + min-width: 38px !important; + height: 38px !important; + margin-left: 0 !important; +} + +@media (max-width: 900px) { + .web-shell[data-ui-theme="dark-green"] .auth-page { + grid-template-columns: 1fr; + grid-template-rows: 180px minmax(0, 1fr); + overflow-y: auto; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__form-panel { + align-items: flex-start; + padding: 22px 20px 36px; + border-top: 1px solid var(--border-weak); + border-left: 0; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__video-overlay { + align-items: flex-start; + justify-content: center; + padding: 22px 24px; + text-align: left; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__showcase-content { + gap: 9px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__brand { + font-size: 34px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__tagline { + font-size: 15px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__showcase-stats { + display: none; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__form-inner { + max-width: 520px; + margin: 0 auto; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__body { + grid-template-columns: 1fr; + gap: 20px; + } +} + +@media (max-width: 560px) { + .web-shell[data-ui-theme="dark-green"] .auth-page { + grid-template-rows: 132px minmax(0, 1fr); + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__video-overlay { + padding: 16px 18px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__brand-row { + align-items: flex-start; + flex-direction: column; + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__brand { + font-size: 28px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__tagline { + font-size: 13px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__features { + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__features span { + padding: 4px 8px; + font-size: 11px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__form-panel { + padding: 14px 14px 28px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__form-inner { + gap: 16px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__logo { + width: 46px; + height: 46px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__title { + font-size: 21px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__auth-tabs { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__auth-tabs button { + min-height: 38px; + padding: 0 4px; + font-size: 10px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__auth-tabs button .anticon { + font-size: 13px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__field input, + .web-shell[data-ui-theme="dark-green"] .auth-page__sms-btn { + min-height: 42px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__sms-row { + gap: 8px; + } + + .web-shell[data-ui-theme="dark-green"] .auth-page__sms-btn { + padding: 0 10px; + font-size: 12px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__body { + width: min(100% - 28px, 1200px); + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__main-tabs { + overflow-x: auto; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__main-tabs button { + flex: 0 0 auto; + padding: 10px 14px; + } + + .web-shell[data-ui-theme="dark-green"] .profile-page__list-bar, + .web-shell[data-ui-theme="dark-green"] .profile-page__upload-card { + align-items: flex-start; + flex-direction: column; + } +} + +@media (max-width: 720px) { + .web-shell[data-ui-theme="dark-green"] .web-topbar { + flex: 0 0 auto; + min-height: 56px; + padding: 8px 12px; + } + + .web-shell[data-ui-theme="dark-green"] .web-topbar__actions { + gap: 6px; + } + + .web-shell[data-ui-theme="dark-green"] :is(.creator-button, .member-button) { + height: 32px; + padding: 0 10px; + } + + .web-shell[data-ui-theme="dark-green"] .community-page .workspace-page-shell__content { + width: min(100% - 32px, 900px); + padding: 24px 0 40px; + } + + .web-shell[data-ui-theme="dark-green"] .community-filter-search { + width: 100%; + margin-left: 0; + } + + .web-shell[data-ui-theme="dark-green"] .ai-workbench-page.is-active .wb-composer { + padding: 0 12px 12px; + } + + .web-shell[data-ui-theme="dark-green"] .wb-composer__content { + border-radius: 22px; + padding: 14px; + } +} + +.web-shell[data-ui-theme="dark-green"] .omni-commerce-page { + --commerce-ink: #f3f5f2; + --commerce-muted: #aeb8b1; + --commerce-line: rgba(255, 255, 255, 0.12); + --commerce-panel: #151719; + --commerce-soft: #101214; + background: #0d0d0f; +} + +.web-shell[data-ui-theme="dark-green"] .omni-commerce-panel, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-band { + background: var(--commerce-panel); + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .omni-commerce-ghost-action, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-text-button, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-segmented button, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-ratio-grid button, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-filter button, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-flow-head button, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-template em, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-template, +.web-shell[data-ui-theme="dark-green"] .omni-commerce-project { + background: #181b1d; +} + +.web-shell[data-ui-theme="dark-green"] .omni-commerce-flow-head { + background: #151719; + box-shadow: none; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-composer__style-button.has-style { + border-color: rgba(var(--accent-rgb), 0.42) !important; + background: rgba(var(--accent-rgb), 0.1) !important; + color: var(--fg-body) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-style-picker__panel { + border-color: var(--border-weak); + background: var(--bg-elevated); + color: var(--fg-body); + box-shadow: var(--shadow-strong); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-style-picker__tabs, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-style-picker__search, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-style-picker__filters span { + background: var(--bg-inset); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page :is( + .studio-canvas-style-picker__tabs button.is-active, + .studio-canvas-style-picker__categories button.is-active +) { + background: var(--accent-muted); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-style-picker__community-link { + background: var(--accent-muted); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-focus-toolbar { + border-color: var(--border-weak); + background: rgba(8, 10, 9, 0.95); + color: var(--fg-body); + box-shadow: var(--shadow-tight); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-focus-toolbar__ratios button:hover, +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-focus-toolbar__ratios button.is-active { + background: var(--accent-muted); + color: var(--accent); +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-image-focus-toolbar__confirm { + background: var(--accent) !important; + color: var(--dg-button-text) !important; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas .studio-canvas-generate-button { + border-color: var(--border-weak) !important; + background: rgba(255, 255, 255, 0.05) !important; + color: var(--fg-soft) !important; + box-shadow: none !important; + cursor: not-allowed !important; + opacity: 0.54; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas .studio-canvas-generate-button.is-ready:not(:disabled) { + border-color: rgba(var(--accent-rgb), 0.62) !important; + background: var(--accent) !important; + color: var(--dg-button-text) !important; + box-shadow: + 0 0 0 1px rgba(var(--accent-rgb), 0.16), + 0 0 20px rgba(var(--accent-rgb), 0.28) !important; + cursor: pointer !important; + opacity: 1; +} + +.web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas .studio-canvas-generate-button[aria-busy="true"] { + border-color: rgba(var(--accent-rgb), 0.46) !important; + background: var(--accent) !important; + color: var(--dg-button-text) !important; + cursor: wait !important; + opacity: 1; +} + +/* ---- Canvas @-mention panel ---- */ + +.studio-canvas-text-composer__input-wrap { + position: relative; +} + +.studio-canvas-mention-panel { + position: absolute; + bottom: 100%; + left: 0; + right: 0; + z-index: 100; + max-height: 200px; + overflow-y: auto; + margin-bottom: 4px; + border: 1px solid var(--border-weak); + border-radius: var(--radius-md); + background: var(--bg-elevated); + box-shadow: var(--shadow-lg); +} + +.studio-canvas-mention-item { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + padding: 8px 12px; + border: none; + background: transparent; + color: var(--fg-body); + cursor: pointer; + text-align: left; +} + +.studio-canvas-mention-item:hover, +.studio-canvas-mention-item.is-active { + background: var(--accent-soft); +} + +.studio-canvas-mention-thumb { + flex-shrink: 0; + width: 28px; + height: 28px; + display: grid; + place-items: center; + border-radius: 4px; + overflow: hidden; + background: var(--bg-surface); + font-size: 14px; +} + +.studio-canvas-mention-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.studio-canvas-mention-label { + flex: 1; + font-size: 13px; + font-weight: 500; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.studio-canvas-mention-token { + font-size: 11px; + font-weight: 600; + padding: 2px 8px; + border-radius: 999px; + background: var(--accent-soft); + color: var(--accent); +} + +/* Responsive floating navigation: prevent squeeze/warp on narrow workspaces. */ +.web-shell[data-ui-theme="dark-green"] .floating-nav { + flex-shrink: 0; + max-height: calc(100svh - 96px); + overflow-x: visible; + overflow-y: auto; + scrollbar-width: none; +} + +.web-shell[data-ui-theme="dark-green"] .floating-nav::-webkit-scrollbar { + display: none; +} + +.web-shell[data-ui-theme="dark-green"] .floating-nav__item, +.web-shell[data-ui-theme="dark-green"] .floating-nav__button { + flex: 0 0 auto; +} + +@media (min-width: 901px) { + .web-shell[data-ui-theme="dark-green"] .floating-nav { + top: 50%; + right: auto; + bottom: auto; + left: 16px; + display: flex; + flex-direction: column; + width: 52px; + transform: translateY(-50%); + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__item, + .web-shell[data-ui-theme="dark-green"] .floating-nav__button { + width: 40px; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__button { + height: 40px; + } +} + +@media (max-width: 900px) { + .web-shell[data-ui-theme="dark-green"] .floating-nav { + top: calc(56px + env(safe-area-inset-top, 0px)); + right: 12px; + bottom: auto; + left: 12px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + width: auto; + max-width: calc(100vw - 24px); + max-height: none; + min-height: 58px; + gap: 6px; + padding: 8px; + border-radius: 0 0 18px 18px; + transform: none; + overflow-x: auto; + overflow-y: visible; + overscroll-behavior-x: contain; + background: rgba(14, 14, 16, 0.94); + box-shadow: 0 16px 42px rgba(0, 0, 0, 0.28); + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav.is-expanded, + .web-shell[data-ui-theme="dark-green"] .floating-nav.is-browse { + width: auto; + max-width: calc(100vw - 24px); + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__item { + width: 42px; + min-width: 42px; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__button { + width: 42px; + height: 42px; + min-width: 42px; + border-radius: 13px; + font-size: 16px; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__label, + .web-shell[data-ui-theme="dark-green"] .floating-nav__button.is-active .floating-nav__label { + display: none; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__button.has-divider { + margin-top: 0; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__button.has-divider::before { + display: none; + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__submenu { + top: calc(100% + 8px); + bottom: auto; + left: 50%; + transform: translate(-50%, -4px); + } + + .web-shell[data-ui-theme="dark-green"] .floating-nav__item.has-children.is-submenu-open .floating-nav__submenu { + transform: translate(-50%, 0); + } + + .web-shell[data-ui-theme="dark-green"][data-view="workbench"] .ai-workbench-page.is-active .ai-chat-messages-surface { + padding-top: 86px; + } +} + .web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-resize-handle::before, .web-shell[data-ui-theme="dark-green"] .canvas-page .studio-canvas-node-resize-handle::after { background: var(--dg-button-text); @@ -6491,6 +8797,120 @@ } } +/* Ecommerce final polish: keep selected option states refined in the dark-green theme. */ +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page[data-tool="clone"] :is( + .clone-ai-module-list button, + .clone-ai-model-scene-grid button, + .clone-ai-replicate-levels button, + .clone-ai-video-options button +), +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page:is([data-tool="set"], [data-tool="detail"], [data-tool="wear"]) :is( + .product-set-structure-grid button, + .product-detail-module-grid button, + .product-clone-scene-grid button, + .product-clone-ratio-row button +) { + position: relative; + overflow: hidden; +} + +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page[data-tool="clone"] :is( + .clone-ai-module-list button.is-active, + .clone-ai-model-scene-grid button.is-active, + .clone-ai-replicate-levels button.is-active, + .clone-ai-video-options button.is-active +), +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page:is([data-tool="set"], [data-tool="detail"], [data-tool="wear"]) :is( + .product-set-structure-grid button.is-active, + .product-detail-module-grid button.is-active, + .product-clone-scene-grid button.is-active, + .product-clone-ratio-row button.is-active +) { + border-color: rgba(var(--accent-rgb), 0.48); + background: + linear-gradient(90deg, rgba(var(--accent-rgb), 0.12), rgba(var(--accent-rgb), 0.035)), + rgba(255, 255, 255, 0.032); + color: var(--fg-body); +} + +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page[data-tool="clone"] :is( + .clone-ai-module-list button.is-active, + .clone-ai-model-scene-grid button.is-active, + .clone-ai-replicate-levels button.is-active, + .clone-ai-video-options button.is-active +)::before, +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page:is([data-tool="set"], [data-tool="detail"], [data-tool="wear"]) :is( + .product-set-structure-grid button.is-active, + .product-detail-module-grid button.is-active, + .product-clone-scene-grid button.is-active, + .product-clone-ratio-row button.is-active +)::before { + position: absolute; + inset: 8px auto 8px 0; + width: 3px; + border-radius: 999px; + background: var(--accent); + content: ""; +} + +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page[data-tool="clone"] .clone-ai-module-list button.is-active span, +.web-shell[data-ui-theme="dark-green"][data-view="ecommerce"] .product-clone-page:is([data-tool="set"], [data-tool="detail"], [data-tool="wear"]) :is( + .product-set-structure-grid button.is-active em, + .product-detail-module-grid button.is-active span +) { + color: rgba(232, 240, 235, 0.62); +} + +/* Canvas SaaS polish: refined production-tool surfaces without changing canvas behavior. */ +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .canvas-page .studio-canvas { + background-image: + radial-gradient(circle at 18% 8%, rgba(var(--accent-rgb), 0.055), transparent 30%), + radial-gradient(circle at 72% 88%, rgba(255, 255, 255, 0.035), transparent 28%), + radial-gradient( + circle, + rgba(148, 163, 184, 0.34) 0 var(--canvas-bg-dot, 1.35px), + transparent calc(var(--canvas-bg-dot, 1.35px) + 0.55px) + ); + background-color: var(--dg-page); + background-position: + center, + center, + var(--canvas-bg-x, 0px) var(--canvas-bg-y, 0px); + background-size: + auto, + auto, + var(--canvas-bg-size, 24px) var(--canvas-bg-size, 24px); + color: var(--fg-body); +} + +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-project-bar, +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-zoom-controls { + border-color: rgba(255, 255, 255, 0.105); + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.018)), + rgba(17, 20, 21, 0.88); + box-shadow: + 0 16px 42px rgba(0, 0, 0, 0.26), + inset 0 1px 0 rgba(255, 255, 255, 0.04); + backdrop-filter: blur(16px); +} + +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-project-bar { + min-height: 42px; + border-radius: 13px; +} + +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-project-bar__name { + color: var(--fg-strong); + font-size: 13px; + font-weight: 820; +} + +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-project-bar__status, +.web-shell[data-ui-theme="dark-green"][data-view="canvas"] .studio-canvas-project-bar__autosave-status { + color: var(--fg-muted); +} + .web-shell[data-ui-theme="dark-green"] .omni-commerce-page { --commerce-ink: #f3f5f2; --commerce-muted: #aeb8b1; diff --git a/vite.config.ts b/vite.config.ts index 5dea423..49aaa45 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -25,7 +25,7 @@ export default defineConfig(() => ({ drop: ["console", "debugger"], }, build: { - sourcemap: "hidden", + sourcemap: false, rollupOptions: { output: { manualChunks(id: string) {