@import "tailwindcss"; @import "tw-animate-css"; @import "shadcn/tailwind.css"; @custom-variant dark (&:is(.dark *)); /* ========================================================================= Design Token System — 三层架构 (Primitive → Semantic → Component) 详见 Wayfinder #96: https://github.com/ddcat-ai/open-ai-canvas/issues/96 规范:禁止在组件中新增裸 text-[Npx]/rounded-[Npx]/z-[N],必须使用 token ========================================================================= */ /* ------------------------------------------------------------------------- Layer 1: Primitive — 纯值,无语义,不随主题变(所有维度的基础) ------------------------------------------------------------------------- */ :root { /* --- 1. 色彩(oklch 色板)--- */ --color-neutral-0: oklch(1 0 0); --color-neutral-50: oklch(0.985 0 0); --color-neutral-100: oklch(0.97 0 0); --color-neutral-200: oklch(0.922 0 0); --color-neutral-300: oklch(0.87 0 0); --color-neutral-400: oklch(0.708 0 0); --color-neutral-500: oklch(0.556 0 0); --color-neutral-600: oklch(0.439 0 0); --color-neutral-700: oklch(0.371 0 0); --color-neutral-800: oklch(0.269 0 0); --color-neutral-900: oklch(0.205 0 0); --color-neutral-950: oklch(0.145 0 0); /* 节点类型语义色板(对应 #97 色带+图标徽章方案) 注意:用 --palette- 前缀避免与 @theme 的 --color-* 命名空间冲突导致循环引用 */ --palette-node-image: oklch(0.75 0.15 75); /* 琥珀 300 — 图片 */ --palette-node-video: oklch(0.65 0.22 350); /* 品红 400 — 视频 */ --palette-node-text: oklch(0.45 0.02 250); /* 中性蓝灰 700 — 文本 */ --palette-node-audio: oklch(0.7 0.13 220); /* 青蓝 400 — 音频 */ --palette-node-config: oklch(0.55 0.04 250); /* 灰蓝 500 — 配置 */ --palette-node-script: oklch(0.6 0.18 300); /* 紫色 400 — 脚本 */ --palette-node-drawing: oklch(0.65 0.12 55); /* 赭石 400 — 绘图 */ --palette-node-frame: oklch(0.7 0.15 155); /* 翠绿 400 — 帧 */ --palette-node-character: oklch(0.78 0.13 20); /* 桃红 300 — 角色引用 */ --palette-node-skill: oklch(0.7 0.17 55); /* 橙色 400 — 技能 */ /* 状态色(用 --palette- 前缀避免循环引用)*/ --palette-status-success: oklch(0.7 0.17 155); --palette-status-error: oklch(0.65 0.22 25); --palette-status-loading: oklch(0.62 0.18 250); --palette-status-warning: oklch(0.75 0.15 85); /* --- 2. 间距(4px 栅格 + 半距)--- */ --space-0: 0px; --space-half: 2px; --space-1: 4px; --space-1-half: 6px; --space-2: 8px; --space-2-half: 10px; --space-3: 12px; --space-3-half: 14px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px; --space-24: 96px; /* --- 3. 字号(10 档)--- */ --fs-nano: 7px; /* 纳米标注(角标计数、节点预览、% 后缀)*/ --fs-micro: 9px; /* 极小标注(分镜行号辅助)*/ --fs-tiny: 10px; /* 小标注(徽章、tag)*/ --fs-label: 11px; /* 标签文字 */ --fs-caption: 12px; /* 说明文字 */ --fs-body: 14px; /* 正文(基准)*/ --fs-body-lg: 15px; /* 大正文 */ --fs-heading: 16px; /* 小标题 */ --fs-heading-lg: 18px; /* 大标题 */ --fs-title: 22px; /* 页面标题 */ --fs-display: 36px; /* 展示标题 */ /* --- 4. 圆角(10 档)--- */ --r-xs: 4px; --r-sm: 6px; --r-md: 8px; --r-lg: 12px; --r-xl: 14px; --r-2xl: 16px; --r-3xl: 20px; --r-4xl: 24px; --r-tight: 15px; --r-dock-compact: 13px; --r-wide-tight: 22px; --r-5xl: 32px; --r-full: 9999px; /* --- 5. 阴影(含 glow)--- */ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04); --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.06); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.1); --shadow-xl: 0 16px 40px rgba(0, 0, 0, 0.12); --shadow-2xl: 0 24px 60px rgba(0, 0, 0, 0.16); --shadow-glow-sm: 0 0 12px rgba(125, 162, 255, 0.2); --shadow-glow-md: 0 0 24px rgba(125, 162, 255, 0.3); --shadow-glow-lg: 0 0 40px rgba(125, 162, 255, 0.4); /* --- 6. Elevation(z-index 14 档,按视觉层划分,见 ADR-001)--- */ --z-canvas: 0; /* L0 画布底 */ --z-canvas-overlay: 5; /* L1 画布覆盖(网格、连线)*/ --z-node: 10; /* L2 节点层(未选中)*/ --z-node-active: 20; /* L3 激活节点(选中/拖拽)*/ --z-toolbar: 30; /* L4 浮动工具栏(顶栏、dock、zoom)*/ --z-node-toolbar: 50; /* L5 节点工具栏(click 触发)*/ --z-panel: 60; /* L6 侧边面板(侧栏、素材托盘)*/ --z-panel-floating: 80; /* L7 浮动面板(助手/agent/活动任务)*/ --z-modal: 100; /* L8 对话框 */ --z-modal-overlay: 110; /* L9 遮罩 */ --z-popover: 200; /* L10 弹出层 */ --z-toast: 500; /* L11 通知 */ --z-tooltip: 1000; /* L12 提示 */ --z-loader: 1200; /* 全屏加载遮罩 */ --z-max: 2000; /* L13 最高(紧急通知)*/ /* --- 6b. Canvas 浮层定位 inset(画布安全区,对应审计 D2/P0-2)--- */ --canvas-inset-x: 16px; /* 浮层水平安全区(dock inset、顶栏 px)*/ --canvas-inset-y: 16px; /* 浮层垂直安全区(dock 底部)*/ --canvas-topbar-h: 64px; /* 顶部栏高度 */ --canvas-topbar-offset: 72px; /* 顶栏下方浮层顶部偏移(topbar-h + 8px 间距)*/ --canvas-dock-popover-offset: 50px; /* dock 弹出面板底部偏移 */ /* --- 7. 动效(对应 #99 动效 token)--- */ /* duration */ --motion-dur-instant: 80ms; --motion-dur-fast: 150ms; --motion-dur-base: 250ms; --motion-dur-slow: 400ms; --motion-dur-emphasize: 600ms; /* easing */ --motion-ease-out: cubic-bezier(0.22, 1, 0.36, 1); --motion-ease-in: cubic-bezier(0.64, 0, 0.78, 0); --motion-ease-in-out: cubic-bezier(0.64, 0, 0.36, 1); --motion-ease-overshoot: cubic-bezier(0.34, 1.56, 0.64, 1); --motion-ease-linear: linear; /* delay */ --motion-delay-none: 0ms; --motion-delay-xs: 30ms; --motion-delay-sm: 60ms; --motion-delay-md: 100ms; --motion-delay-lg: 150ms; /* motion-scale(联动 prefers-reduced-motion)*/ --motion-scale: 1; /* --- 8. 描边宽度 --- */ --stroke-0: 0px; --stroke-1: 1px; --stroke-2: 2px; --stroke-3: 3px; /* --- 9. 不透明度(6 档)--- */ --opa-hide: 0.08; --opa-faint: 0.2; --opa-muted: 0.45; --opa-subtle: 0.55; --opa-medium: 0.72; --opa-full: 1; } /* prefers-reduced-motion 降级(对应 #99 三级降级策略 L1)*/ @media (prefers-reduced-motion: reduce) { :root { --motion-scale: 0.3; } } /* 用户在应用内选择"无动效"时,JS 添加 .no-motion 类(L2 禁用)*/ .no-motion { --motion-scale: 0; } /* infinite 装饰动画在 reduced-motion / no-motion 下降级(对应 #99 三级降级)*/ @media (prefers-reduced-motion: reduce) { .canvas-connection-flow, .canvas-connection-draft, .canvas-generation-border-flow, .canvas-task-progress-shimmer, .ai-title-aurora, .creation-intro-mark, .creation-intro-word, .creation-intro-signal, .creation-intro-emphasis { animation-duration: 0.01ms; animation-iteration-count: 1; } } .no-motion .canvas-connection-flow, .no-motion .canvas-connection-draft, .no-motion .canvas-generation-border-flow, .no-motion .canvas-task-progress-shimmer, .no-motion .ai-title-aurora, .no-motion .creation-intro-mark, .no-motion .creation-intro-word, .no-motion .creation-intro-signal, .no-motion .creation-intro-emphasis { animation: none; } /* 动效计算函数(实际 duration = base * motion-scale)*/ :root { --motion-dur-instant-calc: calc(var(--motion-dur-instant) * var(--motion-scale)); --motion-dur-fast-calc: calc(var(--motion-dur-fast) * var(--motion-scale)); --motion-dur-base-calc: calc(var(--motion-dur-base) * var(--motion-scale)); --motion-dur-slow-calc: calc(var(--motion-dur-slow) * var(--motion-scale)); --motion-dur-emphasize-calc: calc(var(--motion-dur-emphasize) * var(--motion-scale)); } @theme inline { /* 响应式断点(对应 #99 四断点体系:mobile/tablet/desktop/wide)*/ --breakpoint-tablet: 768px; --breakpoint-desktop: 1024px; --breakpoint-wide: 1440px; --color-background: var(--background); --color-foreground: var(--foreground); --color-border: var(--border); --color-ring: var(--ring); --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); --font-heading: var(--font-sans); --font-sans: var(--font-sans); --color-sidebar-ring: var(--sidebar-ring); --color-sidebar-border: var(--sidebar-border); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); --color-sidebar-primary: var(--sidebar-primary); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar: var(--sidebar); --color-chart-5: var(--chart-5); --color-chart-4: var(--chart-4); --color-chart-3: var(--chart-3); --color-chart-2: var(--chart-2); --color-chart-1: var(--chart-1); --color-input: var(--input); --color-destructive: var(--destructive); --color-accent-foreground: var(--accent-foreground); --color-accent: var(--accent); --color-muted-foreground: var(--muted-foreground); --color-muted: var(--muted); --color-secondary-foreground: var(--secondary-foreground); --color-secondary: var(--secondary); --color-primary-foreground: var(--primary-foreground); --color-primary: var(--primary); --color-popover-foreground: var(--popover-foreground); --color-popover: var(--popover); --color-card-foreground: var(--card-foreground); --color-card: var(--card); --radius-2xl: calc(var(--radius) * 1.8); --radius-3xl: calc(var(--radius) * 2.2); --radius-4xl: calc(var(--radius) * 2.6); /* === Design Token System 映射(对应 #96 三层架构)=== */ /* 色彩 — 节点类型色(可用 text-node-image / bg-node-video 等)*/ --color-node-image: var(--cn-type-image); --color-node-video: var(--cn-type-video); --color-node-text: var(--cn-type-text); --color-node-audio: var(--cn-type-audio); --color-node-config: var(--cn-type-config); --color-node-script: var(--cn-type-script); --color-node-drawing: var(--cn-type-drawing); --color-node-frame: var(--cn-type-frame); --color-node-character: var(--cn-type-character); --color-node-skill: var(--cn-type-skill); /* 色彩 — 状态色(可用 text-status-success / bg-status-error 等)*/ --color-status-success: var(--status-success); --color-status-error: var(--status-error); --color-status-loading: var(--status-loading); --color-status-warning: var(--status-warning); /* 色彩 — Canvas 语义色 */ --color-cn-text: var(--cn-text); --color-cn-muted: var(--cn-muted); --color-cn-faint: var(--cn-faint); --color-cn-stroke: var(--cn-stroke); --color-cn-fill: var(--cn-fill); /* 字号(可用 text-fs-body / text-fs-caption 等)*/ --font-size-micro: var(--fs-micro); --font-size-tiny: var(--fs-tiny); --font-size-label: var(--fs-label); --font-size-caption: var(--fs-caption); --font-size-body: var(--fs-body); --font-size-body-lg: var(--fs-body-lg); --font-size-heading: var(--fs-heading); --font-size-heading-lg: var(--fs-heading-lg); --font-size-title: var(--fs-title); --font-size-display: var(--fs-display); } :root { --radius: 0.5rem; --motion-instant: 120ms; --motion-state: 180ms; --motion-panel: 240ms; --ease-aceternity: var(--motion-ease-out); --ease-product-enter: cubic-bezier(0.16, 1, 0.3, 1); --workspace-canvas: var(--background); /* 页面、导航和内容区共用同一底色;卡片/浮层才允许使用 surface token。 */ --workspace-page: var(--workspace-canvas); --workspace-navigation: var(--workspace-page); --workspace-content: var(--workspace-page); --workspace-surface: #ffffff; --workspace-surface-strong: #ffffff; --workspace-border: rgba(17, 17, 17, 0.14); --workspace-border-strong: rgba(17, 17, 17, 0.22); --workspace-grid-line: rgba(17, 17, 17, 0.045); --workspace-nav: var(--workspace-navigation); --workspace-sidebar: var(--workspace-navigation); --workspace-accent: #171717; --workspace-accent-soft: rgba(17, 17, 17, 0.07); /* --- Semantic 层(引用 Primitive,随主题切换)--- */ /* 通用语义色(引用 Primitive neutral 色板)*/ --bg: var(--color-neutral-0); --fg: var(--color-neutral-950); --border-semantic: var(--color-neutral-200); --accent: var(--workspace-accent); --accent-soft: var(--workspace-accent-soft); --muted: var(--color-neutral-100); /* Canvas Theme 语义(从 CSS 变量反序列化到 TS 主题对象,对应 #96 决策3)*/ --cn-text: var(--color-neutral-950); --cn-muted: var(--color-neutral-500); --cn-faint: var(--color-neutral-400); --cn-stroke: var(--color-neutral-200); --cn-fill: var(--color-neutral-50); --cn-active-stroke: var(--workspace-accent); --cn-active-stroke-soft: var(--workspace-accent-soft); /* Aceternity spatial 语义(对应 #96 决策3:CSS→TS 单向同步)*/ --cn-spatial-surface: var(--workspace-surface); --cn-spatial-surface-strong: var(--workspace-surface-strong); --cn-spatial-shadow: rgba(0, 0, 0, 0.12); --cn-spatial-glow: rgba(125, 162, 255, 0.2); --cn-spatial-glow-strong: rgba(125, 162, 255, 0.35); --cn-spatial-elevated: var(--color-neutral-0); --cn-spatial-toolbar-border: var(--color-neutral-200); --director-sequencer-surface: var(--color-neutral-900); --director-sequencer-surface-raised: var(--color-neutral-800); --director-sequencer-border: rgba(255, 255, 255, 0.11); --director-sequencer-muted: rgba(255, 255, 255, 0.48); --director-sequencer-grid: rgba(255, 255, 255, 0.055); --director-dock-surface: rgba(17, 19, 21, 0.92); --director-dock-fg: rgba(255, 255, 255, 0.62); --director-dock-fg-strong: rgba(255, 255, 255, 0.96); --director-dock-active-surface: rgba(255, 255, 255, 0.14); --director-control-hover: rgba(255, 255, 255, 0.09); --director-swatch-inset: rgba(0, 0, 0, 0.18); /* 节点类型色(引用 Primitive 节点色板,对应 #97 决策1 色带方案)*/ --cn-type-image: var(--palette-node-image); --cn-type-video: var(--palette-node-video); --cn-type-text: var(--palette-node-text); --cn-type-audio: var(--palette-node-audio); --cn-type-config: var(--palette-node-config); --cn-type-script: var(--palette-node-script); --cn-type-drawing: var(--palette-node-drawing); --cn-type-frame: var(--palette-node-frame); --cn-type-character: var(--palette-node-character); --cn-type-skill: var(--palette-node-skill); /* 状态语义色 */ --status-success: var(--palette-status-success); --status-error: var(--palette-status-error); --status-loading: var(--palette-status-loading); --status-warning: var(--palette-status-warning); --border: oklch(0.922 0 0); --ring: oklch(0.708 0 0); --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0); --secondary: oklch(0.97 0 0); --secondary-foreground: oklch(0.205 0 0); --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0); --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); --input: oklch(0.922 0 0); --chart-1: oklch(0.87 0 0); --chart-2: oklch(0.556 0 0); --chart-3: oklch(0.439 0 0); --chart-4: oklch(0.371 0 0); --chart-5: oklch(0.269 0 0); --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.97 0 0); --sidebar-accent-foreground: oklch(0.205 0 0); --sidebar-border: oklch(0.922 0 0); --sidebar-ring: oklch(0.708 0 0); } .dark { --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0); --border: oklch(1 0 0 / 10%); --ring: oklch(0.556 0 0); --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0); --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0); --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); --muted: oklch(0.269 0 0); --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); --destructive: oklch(0.704 0.191 22.216); --input: oklch(1 0 0 / 15%); --workspace-canvas: var(--background); --workspace-page: var(--workspace-canvas); --workspace-navigation: var(--workspace-page); --workspace-content: var(--workspace-page); --workspace-surface: #181818; --workspace-surface-strong: #181818; --workspace-border: rgba(255, 255, 255, 0.085); --workspace-border-strong: rgba(255, 255, 255, 0.16); --workspace-grid-line: rgba(255, 255, 255, 0.038); --workspace-nav: var(--workspace-navigation); --workspace-sidebar: var(--workspace-navigation); --workspace-accent: #f5f5f5; --workspace-accent-soft: rgba(255, 255, 255, 0.09); --chart-1: oklch(0.87 0 0); --chart-2: oklch(0.556 0 0); --chart-3: oklch(0.439 0 0); --chart-4: oklch(0.371 0 0); --chart-5: oklch(0.269 0 0); --sidebar: oklch(0.205 0 0); --sidebar-foreground: oklch(0.985 0 0); --sidebar-primary: oklch(0.922 0 0); --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); --sidebar-border: oklch(1 0 0 / 10%); --sidebar-ring: oklch(0.556 0 0); /* --- Semantic 层 dark 覆盖 --- */ --bg: var(--color-neutral-950); --fg: var(--color-neutral-50); --border-semantic: var(--color-neutral-800); --muted: var(--color-neutral-900); --cn-text: var(--color-neutral-50); --cn-muted: var(--color-neutral-400); --cn-faint: var(--color-neutral-500); --cn-stroke: rgba(255, 255, 255, 0.1); --cn-fill: rgba(255, 255, 255, 0.04); --cn-active-stroke: var(--workspace-accent); --cn-active-stroke-soft: var(--workspace-accent-soft); --cn-spatial-surface: var(--workspace-surface); --cn-spatial-surface-strong: var(--workspace-surface-strong); --cn-spatial-shadow: rgba(0, 0, 0, 0.4); --cn-spatial-glow: rgba(125, 162, 255, 0.15); --cn-spatial-glow-strong: rgba(125, 162, 255, 0.25); --cn-spatial-elevated: var(--color-neutral-900); --cn-spatial-toolbar-border: rgba(255, 255, 255, 0.1); --director-sequencer-surface: #111315; --director-sequencer-surface-raised: #191c1f; --director-sequencer-border: rgba(255, 255, 255, 0.11); --director-sequencer-muted: rgba(255, 255, 255, 0.48); --director-sequencer-grid: rgba(255, 255, 255, 0.055); --director-dock-surface: rgba(17, 19, 21, 0.92); --director-dock-fg: rgba(255, 255, 255, 0.62); --director-dock-fg-strong: rgba(255, 255, 255, 0.96); --director-dock-active-surface: rgba(255, 255, 255, 0.14); --director-control-hover: rgba(255, 255, 255, 0.09); --director-swatch-inset: rgba(0, 0, 0, 0.18); /* --- Shadow dark 覆盖(暗色下黑影不可见,改用白色微影制造抬升感,审计 D4/P2-D2)--- 组件 token(--node-shadow/--dock-shadow/--panel-shadow/--modal-shadow)均引用 var(--shadow-*),此处覆盖自动级联。--cn-spatial-shadow(内联 boxShadow 用)已有 暗色变体(0.4),保留不动。 */ --shadow-xs: 0 1px 2px rgba(255, 255, 255, 0.04); --shadow-sm: 0 2px 4px rgba(255, 255, 255, 0.05); --shadow-md: 0 4px 12px rgba(255, 255, 255, 0.06); --shadow-lg: 0 8px 24px rgba(255, 255, 255, 0.07); --shadow-xl: 0 16px 40px rgba(255, 255, 255, 0.08); --shadow-2xl: 0 24px 60px rgba(255, 255, 255, 0.1); } /* ------------------------------------------------------------------------- Layer 3: Component — 引用 Semantic,某组件专属 ------------------------------------------------------------------------- */ :root { /* Dock 组件(FloatingDock、悬停工具栏,对应 #95 工具栏方案)*/ --dock-radius: var(--r-xl); /* 14px */ --dock-padding: var(--space-2); /* 8px */ --dock-icon-size: 32px; --dock-icon-size-labeled: 36px; --dock-label-fs: var(--fs-label); /* 11px */ --dock-blur: 24px; --dock-surface: var(--cn-spatial-surface); --dock-border: var(--cn-spatial-toolbar-border); --dock-shadow: var(--shadow-lg); --dock-item-radius: var(--r-md); /* 8px */ --dock-item-radius-labeled: var(--r-lg); /* 12px */ --dock-radius-tight: var(--r-tight); --dock-radius-compact: var(--r-dock-compact); --dock-tooltip-z: 140; --dock-precision-width: var(--space-12); --dock-z-popover: 30; /* dock 子面板在 toolbar 根 stacking context 内的层级(见 ADR-001)*/ /* Canvas 创建菜单:固定行高保证图标、徽标和单行标签互不挤占 */ --canvas-create-node-height: var(--space-12); --canvas-create-resource-height: var(--space-8); /* Node 组件(画布节点,对应 #97 节点视觉规范)*/ --node-radius: var(--r-2xl); /* 16px */ --node-border-width: var(--stroke-1); /* 1px */ --node-border: var(--cn-stroke); --node-active-border-width: var(--stroke-2); /* 2px */ --node-active-border: var(--cn-active-stroke); --node-active-glow: 0 0 0 4px var(--cn-active-stroke-soft); --node-active-glow-strong: 0 0 0 6px var(--cn-active-stroke-soft); --node-shadow: var(--shadow-sm); --node-shadow-hover: var(--shadow-md); --node-shadow-selected: var(--shadow-lg); --node-shadow-selected-primary: var(--shadow-xl); --node-shadow-active: var(--shadow-2xl); --node-header-height: 24px; --node-title-fs: var(--fs-label); /* 11px */ --node-badge-fs: var(--fs-tiny); /* 10px */ --node-type-strip-width: 3px; /* 色带宽度 */ --node-type-badge-size: 20px; /* 图标徽章尺寸 */ --node-z-content: 30; /* 节点遮罩层(stacking context 内,见 ADR-001)*/ --node-z-overlay: 40; /* 节点角标/按钮层 */ --node-z-handle: 50; /* 节点 resize handle 层 */ /* Modal 组件(对话框,对应 #98 面板层级)*/ --modal-radius: var(--r-3xl); /* 20px */ --modal-max-width: 480px; --modal-overlay-opacity: 0.5; --modal-shadow: var(--shadow-2xl); --modal-padding: var(--space-5); /* 20px */ /* Panel 组件(侧边面板,对应 #98 五层体系 L2)*/ --panel-radius: var(--r-2xl); /* 16px */ --panel-padding: var(--space-4); /* 16px */ --panel-shadow: var(--shadow-lg); --panel-section-gap: var(--space-3); /* 12px */ --panel-width-compact: 320px; --panel-radius-wide-tight: var(--r-wide-tight); --loader-z: var(--z-loader); /* Director workbench / Sequencer */ --director-sequencer-min-height: 180px; --director-sequencer-label-width: 208px; --director-sequencer-row-height: 30px; --director-sequencer-base-width: 860px; --director-sequencer-shot-select-width: 144px; --director-dock-button-size: var(--space-8); --director-dock-bottom: var(--space-2); --director-pose-button-height: var(--space-8); --director-color-swatch-size: var(--space-6); /* Canvas 布局(画布页浮层定位,对应审计 P0-8.1/P1-2.1)*/ --canvas-sidebar-width: 232px; /* 项目侧栏宽度(短剧模式)*/ --canvas-panel-width: min(332px, calc(100vw - 24px)); /* 浮动面板默认宽度(活动任务等)*/ /* Prompt 面板(对应 #98 决策2 渐进式三区)*/ --prompt-panel-max-height: min(70vh, 640px); --prompt-panel-input-min-height: 72px; --prompt-panel-input-max-height: 224px; --prompt-panel-section-fs: var(--fs-body); /* 14px A区 */ --prompt-panel-caption-fs: var(--fs-caption); /* 12px B区 */ --prompt-panel-label-fs: var(--fs-label); /* 11px 标签 */ --prompt-panel-heading-fs: var(--fs-heading); /* 16px 区标题 */ /* 进度条(对应 #98 决策3 任务进度)*/ --progress-bar-height: 6px; --progress-bar-radius: var(--r-xs); /* 3px */ --progress-bar-fill: var(--status-loading); --progress-bar-fill-success: var(--status-success); --progress-bar-fill-error: var(--status-error); /* 缩放控制(对应 #95 决策5)*/ --zoom-control-min: 0.05; --zoom-control-max: 2; --zoom-control-step: 0.1; /* 短剧流程引导步骤(里程碑节点 + 状态轨道)*/ --flow-step-node: var(--space-5); /* 20px 完成/待办节点直径 */ --flow-step-node-current: var(--space-6); /* 24px 当前节点直径 */ --flow-step-gap: var(--space-1); /* 4px 节点与标签间距 */ --flow-step-track-height: var(--stroke-2); /* 2px 状态轨道高 */ --flow-step-track-width: var(--space-5); /* 20px 轨道段长 */ --flow-step-current-glow: 0 0 0 4px var(--cn-active-stroke-soft); /* 当前节点光晕 */ } @layer base { * { @apply border-border outline-ring/50; } html, body, #root, .ant-app { width: 100%; height: 100%; margin: 0; padding: 0; border: 0; overflow: hidden; overscroll-behavior: none; background: var(--workspace-page); } body { background: var(--workspace-page); color: var(--foreground); } #root { position: fixed; inset: 0; isolation: isolate; } textarea { resize: none; } textarea::-webkit-resizer { display: none; } html { @apply font-sans; } } /* CodeMirror 使用运行时注入样式,需在全局覆盖中绑定项目主题 token。 */ .prompt-code-editor, .prompt-code-editor .cm-editor { width: 100%; height: 100%; min-height: 0; } .prompt-code-editor .cm-editor { background: var(--workspace-surface-strong) !important; color: var(--foreground); font-size: var(--fs-caption); } .prompt-code-editor .cm-editor.cm-focused { outline: 2px solid color-mix(in srgb, var(--workspace-accent) 42%, transparent); outline-offset: -2px; } .prompt-code-editor .cm-scroller { overflow: auto; overflow-x: hidden; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; line-height: 1.65; } .prompt-code-editor .cm-content { padding-block: var(--space-3); color: var(--foreground) !important; caret-color: var(--foreground); } .prompt-code-editor .cm-line { padding-inline: var(--space-3); overflow-wrap: anywhere; } .prompt-code-editor .cm-gutters { border-right: 1px solid var(--workspace-border) !important; background: color-mix(in srgb, var(--workspace-surface-strong) 92%, var(--foreground) 8%) !important; color: color-mix(in srgb, var(--foreground) 42%, transparent) !important; } .prompt-code-editor .cm-activeLine, .prompt-code-editor .cm-activeLineGutter { background: color-mix(in srgb, var(--workspace-accent) 7%, transparent) !important; } .prompt-code-editor .cm-selectionBackground, .prompt-code-editor .cm-content ::selection { background: color-mix(in srgb, var(--workspace-accent) 24%, transparent) !important; } @layer utilities { .app-spatial-workspace { --workspace-canvas: var(--background); --workspace-page: var(--workspace-canvas); --workspace-navigation: var(--workspace-page); --workspace-content: var(--workspace-page); --workspace-surface: rgba(255, 255, 255, 0.74); --workspace-surface-strong: rgba(255, 255, 255, 0.94); --workspace-border: rgba(17, 17, 17, 0.1); --workspace-border-strong: rgba(17, 17, 17, 0.2); --workspace-grid-line: rgba(17, 17, 17, 0.035); --workspace-nav: var(--workspace-navigation); --workspace-sidebar: var(--workspace-navigation); --workspace-accent: #171717; --workspace-accent-soft: rgba(17, 17, 17, 0.065); background-color: var(--workspace-canvas); background-image: linear-gradient(var(--workspace-grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--workspace-grid-line) 1px, transparent 1px); background-size: 34px 34px; } .dark .app-spatial-workspace { --workspace-canvas: var(--background); --workspace-page: var(--workspace-canvas); --workspace-navigation: var(--workspace-page); --workspace-content: var(--workspace-page); --workspace-surface: rgba(18, 18, 18, 0.76); --workspace-surface-strong: rgba(22, 22, 22, 0.94); --workspace-border: rgba(255, 255, 255, 0.09); --workspace-border-strong: rgba(255, 255, 255, 0.18); --workspace-grid-line: rgba(255, 255, 255, 0.026); --workspace-nav: var(--workspace-navigation); --workspace-sidebar: var(--workspace-navigation); --workspace-accent: #f5f5f5; --workspace-accent-soft: rgba(255, 255, 255, 0.08); } .app-workspace-shell.is-spatial { position: relative; gap: 0; padding: 0; } .app-workspace-sidebar-scrim { position: absolute; z-index: 30; inset: 0; border: 0; background: rgba(0, 0, 0, 0.42); backdrop-filter: blur(2px); } .app-workspace-shell.is-spatial .app-workspace-sidebar { border: 0; border-right: 1px solid var(--workspace-border); border-radius: 0; background: var(--workspace-navigation); box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .dark .app-workspace-shell.is-spatial .app-workspace-sidebar { box-shadow: none; } body.app-spatial-overlays { --workspace-overlay-bg: rgba(244, 244, 245, 0.78); --workspace-overlay-bg-strong: rgba(250, 250, 250, 0.88); --workspace-overlay-border: rgba(17, 17, 17, 0.22); --workspace-overlay-divider: rgba(17, 17, 17, 0.1); --workspace-overlay-highlight: rgba(255, 255, 255, 0.86); --workspace-overlay-hover: rgba(17, 17, 17, 0.065); --workspace-overlay-selected: rgba(17, 17, 17, 0.1); --workspace-overlay-shadow: 0 26px 72px rgba(15, 23, 42, 0.18), 0 4px 18px rgba(15, 23, 42, 0.08); } .dark body.app-spatial-overlays { --workspace-overlay-bg: rgba(10, 10, 11, 0.78); --workspace-overlay-bg-strong: rgba(15, 15, 16, 0.88); --workspace-overlay-border: rgba(255, 255, 255, 0.22); --workspace-overlay-divider: rgba(255, 255, 255, 0.105); --workspace-overlay-highlight: rgba(255, 255, 255, 0.2); --workspace-overlay-hover: rgba(255, 255, 255, 0.075); --workspace-overlay-selected: rgba(255, 255, 255, 0.115); --workspace-overlay-shadow: 0 30px 84px rgba(0, 0, 0, 0.62), 0 8px 24px rgba(0, 0, 0, 0.34); } body.app-spatial-overlays :where( .ant-dropdown-menu, .ant-select-dropdown, .ant-popover-inner, .ant-picker-dropdown .ant-picker-panel-container, .ant-cascader-menus, .ant-mentions-dropdown, .ant-tooltip-inner, .ant-modal-content, .ant-drawer-content, .ant-message-notice-content, .ant-notification-notice ) { border: 1px solid var(--workspace-overlay-border) !important; background: linear-gradient(145deg, var(--workspace-overlay-highlight), transparent 24%, transparent 76%, rgba(158, 178, 214, 0.055)), var(--workspace-overlay-bg) !important; box-shadow: var(--workspace-overlay-shadow), inset 0 1px 0 var(--workspace-overlay-highlight), inset 1px 0 0 color-mix(in srgb, var(--workspace-overlay-highlight) 36%, transparent) !important; backdrop-filter: blur(30px) saturate(138%) !important; -webkit-backdrop-filter: blur(30px) saturate(138%) !important; } body.app-spatial-overlays :where(.ant-modal-content, .ant-drawer-content, .ant-notification-notice) { background: linear-gradient(145deg, var(--workspace-overlay-highlight), transparent 20%, transparent 82%, rgba(158, 178, 214, 0.05)), var(--workspace-overlay-bg-strong) !important; } body.app-spatial-overlays :where(.ant-dropdown-menu, .ant-select-dropdown, .ant-popover-inner, .ant-cascader-menus, .ant-mentions-dropdown) { border-radius: 8px !important; } body.app-spatial-overlays :where( .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled), .ant-dropdown-menu-submenu-title:not(.ant-dropdown-menu-item-disabled), .ant-select-item-option:not(.ant-select-item-option-disabled), .ant-cascader-menu-item:not(.ant-cascader-menu-item-disabled), .ant-mentions-dropdown-menu-item ) { border-radius: 5px; transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out; } body.app-spatial-overlays :where( .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):hover, .ant-dropdown-menu-submenu-title:not(.ant-dropdown-menu-item-disabled):hover, .ant-select-item-option-active:not(.ant-select-item-option-disabled), .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), .ant-mentions-dropdown-menu-item-active ) { background: var(--workspace-overlay-hover) !important; } body.app-spatial-overlays :where( .ant-dropdown-menu-item-selected, .ant-select-item-option-selected:not(.ant-select-item-option-disabled), .ant-cascader-menu-item-active ) { background: var(--workspace-overlay-selected) !important; color: var(--foreground) !important; } body.app-spatial-overlays :where( .ant-dropdown-menu-item-divider, .ant-popover-inner-content > .border-b, .ant-popover-inner-content > .border-y, .ant-modal-header, .ant-modal-footer, .ant-drawer-header ) { border-color: var(--workspace-overlay-divider) !important; } body.app-spatial-overlays :where(.ant-popover-arrow::before, .ant-tooltip-arrow::before) { border: 1px solid var(--workspace-overlay-border); background: var(--workspace-overlay-bg-strong) !important; } body.app-spatial-overlays :where(.ant-modal-mask, .ant-drawer-mask) { background: rgba(0, 0, 0, 0.48) !important; backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px); } @media (prefers-reduced-transparency: reduce) { body.app-spatial-overlays :where( .ant-dropdown-menu, .ant-select-dropdown, .ant-popover-inner, .ant-picker-dropdown .ant-picker-panel-container, .ant-cascader-menus, .ant-mentions-dropdown, .ant-tooltip-inner, .ant-modal-content, .ant-drawer-content, .ant-message-notice-content, .ant-notification-notice ) { background: var(--workspace-overlay-bg-strong) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } } .app-workspace-shell.is-spatial .app-workspace-brand-mark { border: 1px solid color-mix(in srgb, var(--workspace-accent) 36%, transparent); background: var(--workspace-accent); color: color-mix(in srgb, var(--workspace-canvas) 92%, black); box-shadow: 0 8px 24px color-mix(in srgb, var(--workspace-accent) 18%, transparent); } .app-workspace-shell.is-spatial .app-workspace-nav-link.is-active { background: var(--workspace-accent-soft); color: var(--foreground); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--workspace-accent) 13%, transparent); } .app-workspace-shell.is-spatial .app-workspace-nav-link.is-active::before { left: -9px; width: 3px; height: 20px; box-shadow: 0 0 18px color-mix(in srgb, var(--workspace-accent) 42%, transparent); } .app-workspace-shell.is-spatial .app-workspace-stage { border-radius: 0; background: var(--workspace-content); } /* 工作区保留滚轮与触控板滚动,只隐藏会形成额外竖向分割的浏览器轨道。 */ .app-spatial-workspace .app-workspace-scroll { scrollbar-width: none; } .app-spatial-workspace .app-workspace-scroll::-webkit-scrollbar { display: none; } .app-spatial-workspace .app-page-header { border-color: var(--workspace-border); } .app-spatial-workspace .app-page-header h1 { letter-spacing: 0; text-wrap: balance; } .app-spatial-workspace .app-workspace-surface, .app-spatial-workspace .app-collection-card { border-color: var(--workspace-border); background: var(--workspace-surface); box-shadow: 0 18px 50px color-mix(in srgb, var(--workspace-canvas) 54%, transparent), inset 0 1px 0 color-mix(in srgb, white 8%, transparent); backdrop-filter: blur(18px) saturate(118%); } .app-spatial-workspace .app-collection-card:hover, .app-spatial-workspace .app-collection-card:focus-within { border-color: var(--workspace-border-strong); background: color-mix(in srgb, var(--workspace-surface-strong) 96%, var(--workspace-accent) 4%); box-shadow: 0 18px 42px color-mix(in srgb, var(--workspace-accent) 7%, transparent); } .app-spatial-workspace .app-table-surface { border-color: var(--workspace-border); background: var(--workspace-surface-strong); box-shadow: 0 20px 54px color-mix(in srgb, var(--workspace-canvas) 58%, transparent), inset 0 1px 0 color-mix(in srgb, white 7%, transparent); } .app-spatial-workspace .app-data-table .ant-table, .app-spatial-workspace .app-data-table .ant-table-container { background: transparent; } .app-spatial-workspace .app-list-search:focus-within { filter: drop-shadow(0 0 16px color-mix(in srgb, var(--workspace-accent) 10%, transparent)); } .app-spatial-workspace .app-pagination-bar { border-color: var(--workspace-border); background: transparent; } .app-spatial-workspace .app-home-header { border-color: var(--workspace-border); } .app-spatial-workspace .app-home-metric { border-color: var(--workspace-border); background: var(--workspace-surface); box-shadow: 0 16px 42px color-mix(in srgb, var(--workspace-canvas) 56%, transparent), inset 0 1px 0 color-mix(in srgb, white 8%, transparent); backdrop-filter: blur(18px) saturate(115%); } .app-spatial-workspace .app-home-metric svg { width: 17px; height: 17px; } .app-spatial-workspace .workspace-signal-icon path { stroke: var(--workspace-accent) !important; } .app-spatial-workspace .workspace-signal-icon circle { fill: color-mix(in srgb, var(--workspace-accent) 62%, transparent) !important; } .app-spatial-workspace .ant-switch.ant-switch-checked { background: var(--workspace-accent); } .dark .app-spatial-workspace .ant-switch.ant-switch-checked .ant-switch-handle::before { background: #171717; } .app-spatial-workspace .app-home-focus-panel, .app-spatial-workspace .project-overview-focus, .app-spatial-workspace .project-pipeline-surface { border-color: var(--workspace-border); background: var(--workspace-surface-strong); box-shadow: 0 26px 72px color-mix(in srgb, var(--workspace-canvas) 64%, transparent), inset 0 1px 0 color-mix(in srgb, white 8%, transparent); } .app-spatial-workspace .app-home-focus-panel { min-height: 330px; } .app-spatial-workspace .spatial-chapter-panel, .app-spatial-workspace .project-overview-status { background: color-mix(in srgb, var(--workspace-surface) 82%, var(--workspace-accent) 3%); } .spatial-chapter-deck { position: relative; min-height: 242px; perspective: 900px; perspective-origin: 50% 34%; transform-style: preserve-3d; } .spatial-chapter-card { position: absolute; top: 0; left: 3%; display: block; width: min(82%, 290px); height: 92px; overflow: hidden; border: 1px solid var(--workspace-border-strong); border-radius: 7px; background: color-mix(in srgb, var(--workspace-surface-strong) 95%, white 5%); padding: 13px 15px; color: color-mix(in srgb, var(--foreground) 76%, transparent); box-shadow: 0 18px 28px rgba(0, 0, 0, 0.24), inset 0 1px 0 color-mix(in srgb, white 13%, transparent); transform: translate3d(var(--deck-x), var(--deck-y), var(--deck-z)) rotateX(46deg) rotateZ(-7deg); transform-origin: center top; transition: border-color var(--motion-state) var(--ease-aceternity), background-color var(--motion-state) var(--ease-aceternity), color var(--motion-state) var(--ease-aceternity), transform var(--motion-state) var(--ease-aceternity); } .spatial-chapter-card:hover, .spatial-chapter-card:focus-visible { z-index: 20 !important; border-color: color-mix(in srgb, var(--workspace-accent) 58%, var(--workspace-border)); color: var(--foreground); outline: none; transform: translate3d(calc(var(--deck-x) + 8px), calc(var(--deck-y) - 5px), 18px) rotateX(34deg) rotateZ(-5deg); } .spatial-chapter-card.is-active { border-color: color-mix(in srgb, var(--workspace-accent) 74%, white 8%); background: var(--workspace-accent); color: color-mix(in srgb, var(--workspace-canvas) 90%, black); box-shadow: 0 22px 50px color-mix(in srgb, var(--workspace-accent) 23%, transparent), inset 0 1px 0 rgba(255, 255, 255, 0.28); } .spatial-chapter-card.is-loading { border-color: var(--workspace-border); background: color-mix(in srgb, var(--foreground) 4%, var(--workspace-surface-strong)); } .app-spatial-workspace .app-workflow-rail { border-color: var(--workspace-border); } .app-spatial-workspace .app-workflow-step { border-color: var(--workspace-border); transition: background-color var(--motion-instant) ease-out; } .app-spatial-workspace .app-workflow-step:hover { background: var(--workspace-accent-soft); } .app-spatial-workspace .project-workbench-header { border-color: var(--workspace-border); background: color-mix(in srgb, var(--workspace-nav) 92%, transparent); box-shadow: inset 0 -1px 0 color-mix(in srgb, var(--workspace-accent) 4%, transparent); backdrop-filter: blur(22px) saturate(120%); } .app-spatial-workspace .project-pipeline-surface > div > a:hover { background: color-mix(in srgb, var(--workspace-accent) 5%, transparent); } @media (max-width: 639px) { .app-workspace-shell.is-spatial { gap: 6px; padding: 6px; } .app-workspace-shell.is-spatial .app-workspace-sidebar, .app-workspace-shell.is-spatial .app-workspace-stage { border-radius: 6px; } } @media (max-width: 1023px) { .app-workspace-sidebar-scrim { left: 0; } .app-workspace-shell .app-workspace-sidebar.is-mobile-expanded { position: absolute; z-index: 40; inset: 6px auto 6px 6px; width: min(196px, calc(100vw - 58px)); box-shadow: 22px 0 70px rgba(0, 0, 0, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.08); } .app-spatial-workspace .app-home-focus-panel { min-height: 0; } .spatial-chapter-deck { display: grid; min-height: 0; gap: 8px; perspective: none; } .spatial-chapter-card { position: relative; left: auto; top: auto; width: 100%; height: auto; min-height: 68px; transform: none; } .spatial-chapter-card:hover, .spatial-chapter-card:focus-visible { transform: translateX(3px); } } @media (prefers-reduced-motion: reduce) { .spatial-chapter-card, .spatial-chapter-card:hover, .spatial-chapter-card:focus-visible { transition: none; transform: none; } } .app-user-workspace { background-color: var(--workspace-page); } .app-workspace-shell { background: var(--workspace-page); } .app-workspace-sidebar { border-right: 1px solid var(--workspace-border); background: var(--workspace-navigation); transition: width var(--motion-state) var(--ease-aceternity); } .app-workspace-stage, .app-user-content, .app-workspace-grid { background: var(--workspace-content); } .app-workspace-page { background: var(--workspace-content); } .app-workspace-navigation { background: var(--workspace-navigation); } .app-workspace-nav-link.is-active { background: color-mix(in srgb, var(--foreground) 6%, transparent); color: var(--foreground); } .app-workspace-nav-link.is-active::before { position: absolute; left: -8px; width: 2px; height: 18px; border-radius: 0 2px 2px 0; background: var(--workspace-accent); content: ""; } .app-workspace-icon-button { display: inline-flex; width: 30px; height: 30px; flex: 0 0 auto; align-items: center; justify-content: center; border-radius: 6px; color: color-mix(in srgb, var(--foreground) 58%, transparent); transition: color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out; } .app-workspace-icon-button:hover { background: color-mix(in srgb, var(--foreground) 6%, transparent); color: var(--foreground); } /* Sidebar custom scrollbar - 隐身融入设计 */ .app-workspace-sidebar-scroll-area { position: relative; /* 为渐变遮罩定位 */ overflow-y: auto; scrollbar-width: thin; scrollbar-color: transparent transparent; /* 默认完全隐藏 */ transition: scrollbar-color var(--motion-state) ease-in-out; } .app-workspace-sidebar-scroll-area::-webkit-scrollbar { width: 4px; background: transparent; /* 默认轨道透明 */ } .app-workspace-sidebar-scroll-area::-webkit-scrollbar-track { background: transparent; } .app-workspace-sidebar-scroll-area::-webkit-scrollbar-thumb { background: transparent; /* 默认滑块透明 */ border-radius: 9999px; transition: background-color var(--motion-state) ease-in-out; } /* Hover state - 显示滚动条 */ .app-workspace-sidebar:hover .app-workspace-sidebar-scroll-area, .app-workspace-sidebar-scroll-area:hover { scrollbar-color: rgba(255, 255, 255, 0.2) transparent; } .app-workspace-sidebar:hover .app-workspace-sidebar-scroll-area::-webkit-scrollbar-thumb, .app-workspace-sidebar-scroll-area:hover::-webkit-scrollbar-thumb { background-color: rgba(255, 255, 255, 0.2); } /* Dark mode scrollbar */ .dark .app-workspace-sidebar:hover .app-workspace-sidebar-scroll-area, .dark .app-workspace-sidebar-scroll-area:hover { scrollbar-color: rgba(255, 255, 255, 0.15) transparent; } .dark .app-workspace-sidebar:hover .app-workspace-sidebar-scroll-area::-webkit-scrollbar-thumb, .dark .app-workspace-sidebar-scroll-area:hover::-webkit-scrollbar-thumb { background-color: rgba(255, 255, 255, 0.15); } /* Scroll fade gradients - 光影提示设计 */ .app-workspace-sidebar-scroll-area.has-top-fade::before, .app-workspace-sidebar-scroll-area.has-bottom-fade::after { content: ""; position: absolute; left: 0; right: 0; height: 12px; pointer-events: none; /* 不阻塞点击事件 */ z-index: 10; } .app-workspace-sidebar-scroll-area.has-top-fade::before { top: 0; background: var(--workspace-navigation); } .app-workspace-sidebar-scroll-area.has-bottom-fade::after { bottom: 0; background: var(--workspace-navigation); } .workspace-signal-icon { filter: drop-shadow(0 7px 16px color-mix(in srgb, var(--workspace-accent) 14%, transparent)); } .workspace-state { animation: workspace-state-enter var(--motion-panel) var(--ease-product-enter) both; } .workspace-loading-state .ant-skeleton-title, .workspace-loading-state .ant-skeleton-paragraph > li { border-radius: 4px; } :where(.ant-btn) { letter-spacing: 0; transition: color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out, border-color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out, transform 90ms ease-out; } :where(.ant-btn:not(:disabled)):active { transform: scale(0.98); } :where(.ant-select-item-option-content) { min-width: 0; } .creation-home { --creation-accent: var(--workspace-accent); --creation-bg: var(--workspace-page); --creation-surface: rgba(255, 255, 255, .68); --creation-surface-muted: rgba(238, 241, 245, .68); --creation-surface-hover: rgba(228, 232, 237, .7); --creation-surface-selected: rgba(218, 223, 229, .72); --creation-border: rgba(179, 188, 199, .34); --creation-border-strong: rgba(123, 136, 151, .42); --creation-text: #17191d; --creation-muted: #929aa5; --creation-faint: #b5bbc3; isolation: isolate; background: var(--creation-bg); color: var(--creation-text); backdrop-filter: blur(18px) saturate(112%); -webkit-backdrop-filter: blur(18px) saturate(112%); } .dark .creation-home { --creation-accent: var(--workspace-accent); --creation-bg: var(--workspace-page); --creation-surface: rgba(27, 29, 34, .72); --creation-surface-muted: rgba(35, 38, 44, .68); --creation-surface-hover: rgba(47, 50, 58, .72); --creation-surface-selected: rgba(57, 61, 70, .74); --creation-border: rgba(104, 111, 124, .24); --creation-border-strong: rgba(137, 146, 160, .36); --creation-text: #f2f4f6; --creation-muted: #737b86; --creation-faint: #565d67; } .creation-new-button { position: absolute; z-index: 30; top: 24px; right: 28px; display: grid; width: 36px; height: 36px; place-items: center; border: 1px solid var(--creation-border); border-radius: 9px; background: var(--creation-surface); color: var(--creation-muted); box-shadow: 0 8px 24px rgba(31, 37, 45, .06), inset 0 1px 0 color-mix(in srgb, white 58%, transparent); backdrop-filter: blur(18px) saturate(125%); -webkit-backdrop-filter: blur(18px) saturate(125%); transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease; } .creation-new-button:hover { border-color: var(--creation-border-strong); background: var(--creation-surface-hover); color: var(--creation-text); } .creation-empty-workspace { display: flex; width: min(1000px, calc(100% - 64px)); min-height: 100%; flex: 1 0 auto; flex-direction: column; align-items: center; justify-content: center; margin: 0 auto; padding: 0 0 20px; } .creation-empty-composer { width: 100%; animation: creation-workbench-enter var(--motion-dur-slow-calc) var(--motion-ease-out) both; } .creation-composer { position: relative; width: 100%; min-width: 0; border: 1px solid var(--creation-border); border-radius: 16px; background: var(--creation-surface); box-shadow: 0 22px 72px rgba(27, 33, 42, .065), inset 0 1px 0 color-mix(in srgb, white 76%, transparent); overflow: hidden; backdrop-filter: blur(26px) saturate(128%); -webkit-backdrop-filter: blur(26px) saturate(128%); transition: border-color 180ms ease, box-shadow 180ms ease; } .creation-composer::before { position: absolute; z-index: 1; top: 0; right: 22px; left: 22px; height: 1px; background: linear-gradient(90deg, transparent, color-mix(in srgb, white 72%, transparent), transparent); content: ""; pointer-events: none; } .creation-composer:focus-within { border-color: var(--creation-border-strong); box-shadow: 0 24px 68px rgba(27, 33, 42, .11), 0 0 0 3px color-mix(in srgb, var(--creation-accent) 7%, transparent), inset 0 1px 0 color-mix(in srgb, white 78%, transparent); } .dark .creation-composer { border-color: rgba(255, 255, 255, .075); background: rgba(22, 24, 29, .66); box-shadow: 0 20px 72px rgba(0, 0, 0, .22), inset 0 1px 0 rgba(255, 255, 255, .04); } .dark .creation-composer:focus-within { border-color: rgba(6, 182, 212, .34); box-shadow: 0 28px 84px rgba(0, 0, 0, .32), 0 0 0 1px rgba(6, 182, 212, .1), inset 0 1px 0 rgba(255, 255, 255, .055); } .creation-prompt-area { display: grid; min-height: 174px; grid-template-columns: 64px minmax(0, 1fr); gap: 16px; padding: 24px 24px 14px; } .creation-reference-tile { display: flex; width: 56px; height: 70px; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border: 1px solid var(--creation-border); border-radius: 5px; background: color-mix(in srgb, var(--creation-surface-muted) 80%, transparent); color: var(--creation-muted); transform: rotate(-7deg); transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, transform 160ms var(--motion-ease-out); } .creation-reference-tile:hover:not(:disabled) { border-color: var(--creation-border-strong); background: var(--creation-surface-hover); color: var(--creation-text); transform: rotate(-3deg) translateY(-2px); } .creation-reference-tile:disabled { cursor: not-allowed; opacity: .45; } .creation-reference-tile svg { width: 17px; height: 17px; } .creation-reference-tile span { font-size: 9px; font-weight: 600; } .creation-prompt-editor { min-width: 0; } .creation-prompt-editor textarea { width: 100%; min-height: 126px; resize: none; border: 0; background: transparent; color: var(--creation-text); font-size: 14px; line-height: 1.75; outline: none; } .creation-prompt-editor textarea::placeholder { color: var(--creation-muted); opacity: .82; } .creation-prompt-editor textarea:disabled { cursor: wait; opacity: .62; } .creation-attachment-strip { display: flex; gap: 8px; padding-top: 8px; overflow-x: auto; } .creation-attachment { position: relative; width: 48px; height: 48px; flex: 0 0 auto; overflow: hidden; border: 1px solid var(--creation-border); border-radius: 8px; background: var(--creation-surface-muted); } .creation-attachment img { width: 100%; height: 100%; object-fit: cover; } .creation-attachment button { position: absolute; top: 3px; right: 3px; display: grid; width: 17px; height: 17px; place-items: center; border-radius: 50%; background: rgba(15, 16, 18, .72); color: white; opacity: 0; transition: opacity 140ms ease; } .creation-attachment:hover button, .creation-attachment button:focus-visible { opacity: 1; } .creation-attachment button svg { width: 10px; height: 10px; } .creation-composer-toolbar { display: flex; min-height: 64px; align-items: center; justify-content: space-between; gap: 10px; border-top: 1px solid color-mix(in srgb, var(--creation-border) 72%, transparent); padding: 10px 16px 10px 18px; } .creation-composer-control-row { display: flex; min-width: 0; align-items: center; gap: 8px; } .creation-reference-button { display: grid; width: 34px; height: 34px; flex: 0 0 auto; place-items: center; border: 1px solid var(--creation-border); border-radius: 9px; background: color-mix(in srgb, var(--creation-surface-muted) 68%, transparent); color: var(--creation-muted); transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease, transform 120ms ease; } .creation-reference-button svg { width: 16px; height: 16px; } .creation-reference-button:hover:not(:disabled) { border-color: var(--creation-border-strong); background: var(--creation-surface-hover); color: var(--creation-text); transform: translateY(-1px); } .creation-reference-button:active:not(:disabled) { transform: scale(.96); } .creation-reference-button:disabled { cursor: not-allowed; opacity: .45; } .creation-composer-primary-tools { display: flex; min-width: 0; flex: 0 1 auto; flex-wrap: wrap; align-items: center; gap: 6px; border: 0; border-radius: 0; background: transparent; padding: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .dark .creation-composer-primary-tools { gap: 6px; border: 0; background: transparent; padding: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .dark .creation-reference-button { border-color: rgba(255, 255, 255, .07); background: rgba(38, 41, 48, .44); } .creation-chip { display: inline-flex; height: 36px; min-width: 0; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--creation-border); border-radius: 8px; background: color-mix(in srgb, var(--creation-surface-muted) 70%, transparent); color: var(--creation-text); padding: 0 10px; font-size: 11px; font-weight: 600; white-space: nowrap; box-shadow: inset 0 1px 0 color-mix(in srgb, white 40%, transparent); transition: background-color 160ms ease, color 160ms ease, transform 120ms ease; } .creation-chip:hover, .creation-chip[aria-expanded="true"] { border-color: var(--creation-border-strong); background: var(--creation-surface-hover); } .creation-chip:active { transform: scale(.98); } .creation-chip.is-accent { color: var(--creation-accent); } .creation-chip.is-accent[aria-expanded="true"] { background: color-mix(in srgb, var(--creation-accent) 9%, transparent); } .dark .creation-chip { border: 1px solid rgba(255, 255, 255, .075); background: rgba(38, 41, 48, .64); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035); } .dark .creation-chip:hover, .dark .creation-chip[aria-expanded="true"] { border-color: rgba(255, 255, 255, .13); background: rgba(48, 52, 61, .82); } .dark .creation-chip.is-accent { border-color: rgba(6, 182, 212, .2); background: rgba(6, 182, 212, .08); } .creation-chip > svg { width: 14px; height: 14px; flex: 0 0 auto; } .creation-chip > svg:last-child { width: 13px; height: 13px; color: var(--creation-muted); transition: transform 160ms var(--motion-ease-out); } .creation-chip > svg:last-child.is-open { transform: rotate(180deg); } .creation-model-picker.canvas-composer-model-picker { width: min(210px, 25vw) !important; height: 36px !important; border: 1px solid var(--creation-border) !important; border-radius: 8px !important; background: color-mix(in srgb, var(--creation-surface-muted) 70%, transparent) !important; color: var(--creation-text) !important; padding: 0 9px !important; font-size: 11px; font-weight: 600; } .creation-model-picker.canvas-composer-model-picker:hover, .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border-color: var(--creation-border-strong) !important; background: var(--creation-surface-hover) !important; } .dark .creation-model-picker.canvas-composer-model-picker { border: 1px solid rgba(255, 255, 255, .075) !important; background: rgba(38, 41, 48, .64) !important; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035); } .dark .creation-model-picker.canvas-composer-model-picker:hover, .dark .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border-color: rgba(255, 255, 255, .13) !important; background: rgba(48, 52, 61, .82) !important; } .creation-model-picker .canvas-model-picker-trigger-icon { width: 22px; height: 22px; border-radius: 6px; } .creation-submit-button { display: grid; width: 40px; height: 40px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: var(--creation-text); color: var(--creation-bg); margin-left: auto; box-shadow: inset 0 1px 0 color-mix(in srgb, white 26%, transparent), 0 8px 20px rgba(19, 23, 29, .14); transition: background-color 160ms ease, color 160ms ease, transform 120ms ease, box-shadow 160ms ease; } .creation-composer-toolbar > .creation-submit-button { margin-left: auto; } .creation-submit-button:hover:not(:disabled) { transform: translateY(-1px); } .creation-submit-button:active:not(:disabled) { transform: scale(.96); } .creation-submit-button:disabled { cursor: not-allowed; background: var(--creation-surface-selected); color: var(--creation-faint); } .creation-submit-button.is-stopping { background: #c84646; color: white; } .creation-new-button:focus-visible, .creation-reference-tile:focus-visible, .creation-reference-button:focus-visible, .creation-chip:focus-visible, .creation-submit-button:focus-visible { outline: 2px solid color-mix(in srgb, var(--creation-accent) 55%, transparent); outline-offset: 2px; } .creation-inspiration-strip { display: grid; width: 100%; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 26px; } .creation-inspiration-strip button { display: flex; min-width: 0; height: 76px; align-items: center; gap: 11px; overflow: hidden; border: 1px solid var(--creation-border); border-radius: 10px; background: color-mix(in srgb, var(--creation-surface) 74%, transparent); color: var(--creation-text); padding: 8px 11px; text-align: left; box-shadow: inset 0 1px 0 color-mix(in srgb, white 52%, transparent); backdrop-filter: blur(18px) saturate(120%); -webkit-backdrop-filter: blur(18px) saturate(120%); transition: border-color 160ms ease, background-color 160ms ease, transform 160ms var(--motion-ease-out); } .creation-inspiration-strip button:hover { border-color: var(--creation-border-strong); background: var(--creation-surface-muted); transform: translateY(-2px); } .creation-inspiration-strip img { width: 58px; height: 58px; flex: 0 0 auto; border-radius: 8px; object-fit: cover; } .creation-inspiration-strip span { min-width: 0; overflow: hidden; font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; } .dark .creation-inspiration-strip button { border-color: rgba(255, 255, 255, .06); background: rgba(25, 27, 32, .72); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035); } .dark .creation-inspiration-strip button:hover { border-color: rgba(255, 255, 255, .13); background: rgba(33, 36, 43, .86); } .creation-thread-stage { width: min(840px, calc(100% - 48px)); flex: 1 0 auto; margin: 0 auto; padding: 72px 0 48px; } .creation-results { width: 100%; animation: creation-results-enter var(--motion-dur-base-calc) var(--motion-ease-out) both; } .creation-thread-composer { position: sticky; z-index: 20; bottom: 0; width: min(840px, calc(100% - 48px)); flex: 0 0 auto; margin: 0 auto; padding: 10px 0 22px; background: linear-gradient(180deg, transparent, var(--creation-bg) 22%); } .creation-composer-meta { display: flex; align-items: center; justify-content: space-between; padding: 10px 4px 0; color: var(--creation-muted); font-size: 10px; } .creation-composer-meta a { display: inline-flex; align-items: center; gap: 5px; color: inherit; } .creation-composer-meta a:hover { color: var(--creation-text); } .creation-control-popover { filter: none !important; } .creation-control-popover-surface, .creation-model-picker-surface { border: 1px solid rgba(220, 225, 231, .82) !important; border-radius: 14px !important; background: rgba(255, 255, 255, .78) !important; box-shadow: 0 18px 46px rgba(20, 26, 35, .14), inset 0 1px 0 rgba(255, 255, 255, .78) !important; overflow: hidden; padding: 0 !important; backdrop-filter: blur(28px) saturate(140%); -webkit-backdrop-filter: blur(28px) saturate(140%); animation: creation-popover-enter var(--motion-dur-fast-calc) var(--motion-ease-out) both; } .dark .creation-control-popover-surface, .dark .creation-model-picker-surface { border-color: rgba(61, 66, 76, .72) !important; background: rgba(25, 27, 32, .92) !important; box-shadow: 0 20px 52px rgba(0, 0, 0, .34), inset 0 1px 0 rgba(255, 255, 255, .055) !important; } .creation-control-popover-content, .creation-model-picker-surface .ant-popover-inner-content { padding: 0 !important; } .creation-mode-picker-menu { width: 176px; padding: 6px; color: #17191d; } .dark .creation-mode-picker-menu { color: #f2f4f6; } .creation-mode-picker-menu button { display: flex; width: 100%; height: 40px; align-items: center; gap: 10px; border-radius: 8px; padding: 0 8px; color: inherit; font-size: 13px; text-align: left; transition: background-color 150ms ease; } .creation-mode-picker-menu button:hover, .creation-mode-picker-menu button.is-selected { background: #f1f2f4; } .dark .creation-mode-picker-menu button:hover, .dark .creation-mode-picker-menu button.is-selected { background: #282b31; } .creation-mode-picker-menu button > svg { width: 15px; height: 15px; margin-left: auto; } .creation-menu-icon { display: grid; width: 26px; height: 26px; place-items: center; border: 1px solid #e5e7eb; border-radius: 7px; } .dark .creation-menu-icon { border-color: #30343b; } .creation-menu-icon svg { width: 15px; height: 15px; } .creation-settings-panel { width: min(400px, calc(100vw - 24px)); padding: 16px; color: #17191d; } .dark .creation-settings-panel { color: #f2f4f6; } .creation-settings-section + .creation-settings-section { margin-top: 18px; } .creation-settings-section h3, .creation-duration-panel h3 { margin: 0 0 9px; color: #8c949f; font-size: 12px; font-weight: 520; } .dark .creation-settings-section h3, .dark .creation-duration-panel h3 { color: #69717c; } .creation-segmented-grid { display: grid; gap: 4px; border: 1px solid rgba(226, 230, 235, .7); border-radius: 10px; background: rgba(240, 242, 245, .7); padding: 3px; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } .dark .creation-segmented-grid { border-color: rgba(58, 63, 72, .58); background: rgba(35, 38, 44, .72); } .creation-segmented-grid.is-ratio { grid-template-columns: repeat(6, minmax(0, 1fr)); } .creation-segmented-grid.is-resolution { grid-template-columns: repeat(3, minmax(0, 1fr)); } .creation-segmented-grid.is-quality, .creation-segmented-grid.is-count { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-segmented-grid button { display: flex; min-width: 0; min-height: 48px; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border-radius: 8px; color: #3f454d; font-size: 13px; box-shadow: inset 0 1px 0 transparent; transition: background-color 150ms ease, color 150ms ease, box-shadow 150ms ease, transform 120ms ease; } .dark .creation-segmented-grid button { color: #e3e6ea; } .creation-segmented-grid button:hover { background: rgba(255, 255, 255, .58); transform: translateY(-1px); } .creation-segmented-grid button:active { transform: scale(.97); } .dark .creation-segmented-grid button:hover { background: #2b2e35; } .creation-segmented-grid button.is-selected { background: rgba(255, 255, 255, .84); color: #17191d; box-shadow: 0 2px 10px rgba(22, 28, 36, .07), inset 0 1px 0 rgba(255, 255, 255, .72); } .dark .creation-segmented-grid button.is-selected { background: rgba(58, 62, 71, .86); color: #ffffff; box-shadow: 0 5px 14px rgba(0, 0, 0, .14), inset 0 1px 0 rgba(255, 255, 255, .07); } .creation-segmented-grid button small { color: #9ba2ac; font-size: 9px; } .dark .creation-segmented-grid button small { color: #747b85; } .creation-ratio-preview { display: grid; width: 28px; height: 19px; place-items: center; } .creation-ratio-preview > span { display: block; border: 1.5px solid currentColor; border-radius: 3px; } .creation-segmented-grid.is-resolution button, .creation-segmented-grid.is-count button { min-height: 42px; font-size: 13px; } .creation-duration-panel { width: min(400px, calc(100vw - 24px)); padding: 16px 18px 18px; color: #17191d; } .dark .creation-duration-panel { color: #f2f4f6; } .creation-duration-control { display: grid; grid-template-columns: minmax(0, 1fr) 96px; align-items: center; gap: 24px; } .creation-range-wrap input { width: 100%; height: 24px; appearance: none; background: transparent; cursor: pointer; } .creation-range-wrap input::-webkit-slider-runnable-track { height: 8px; border-radius: 999px; background: #e1e4e8; } .dark .creation-range-wrap input::-webkit-slider-runnable-track { background: #30343b; } .creation-range-wrap input::-webkit-slider-thumb { width: 8px; height: 26px; margin-top: -9px; appearance: none; border-radius: 4px; background: #17191d; box-shadow: none; } .dark .creation-range-wrap input::-webkit-slider-thumb { background: #ffffff; } .creation-range-wrap input::-moz-range-track { height: 8px; border-radius: 999px; background: #e1e4e8; } .dark .creation-range-wrap input::-moz-range-track { background: #30343b; } .creation-range-wrap input::-moz-range-thumb { width: 8px; height: 26px; border: 0; border-radius: 4px; background: #17191d; } .dark .creation-range-wrap input::-moz-range-thumb { background: #ffffff; } .creation-range-labels { display: flex; justify-content: space-between; margin-top: 4px; color: #6f7781; font-size: 12px; font-variant-numeric: tabular-nums; } .creation-duration-value { display: flex; height: 56px; align-items: center; justify-content: space-between; border: 1px solid rgba(226, 230, 235, .7); border-radius: 9px; background: rgba(240, 242, 244, .72); padding: 0 17px; } .dark .creation-duration-value { border-color: rgba(58, 63, 72, .6); background: rgba(43, 46, 53, .78); } .creation-duration-value strong { font-size: 17px; font-weight: 550; } .creation-duration-value span { color: #8f97a2; font-size: 16px; } .creation-model-picker-menu { width: min(384px, calc(100vw - 24px)) !important; max-height: min(460px, calc(100vh - 24px)); padding: 8px !important; background: rgba(255, 255, 255, .7) !important; color: #17191d !important; } .dark .creation-model-picker-menu { background: rgba(25, 27, 32, .7) !important; color: #f2f4f6 !important; } .creation-model-picker-menu .canvas-model-picker-group-label { padding: 7px 8px 6px; font-size: 11px; } .creation-model-picker-heading { display: flex; min-width: 0; align-items: center; gap: 7px; padding: 3px 8px 9px; color: #929aa5; font-size: 12px; } .creation-model-picker-heading strong { min-width: 0; overflow: hidden; color: #17191d; font-weight: 520; text-overflow: ellipsis; white-space: nowrap; } .dark .creation-model-picker-heading { color: #69717c; } .dark .creation-model-picker-heading strong { color: #f2f4f6; } .creation-model-picker-menu .canvas-model-picker-option { min-height: 52px; border-radius: 9px; padding: 7px 9px; transition: background-color 150ms ease, transform 120ms ease; } .creation-model-picker-menu .canvas-model-picker-option:hover { transform: translateY(-1px); } .creation-model-picker-menu .canvas-model-picker-option > span:first-child { gap: 12px; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:first-child { width: 34px; height: 34px; border: 1px solid #e6e8eb; border-radius: 8px; background: rgba(255, 255, 255, .66) !important; } .dark .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:first-child { border-color: #30343b; background: rgba(35, 38, 44, .72) !important; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:nth-child(2) > span:first-child { font-size: 13px; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:nth-child(2) > span:nth-child(2) { margin-top: 5px; font-size: 10px; } @keyframes creation-results-enter { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes creation-popover-enter { from { opacity: 0; transform: translateY(6px) scale(.985); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes creation-workbench-enter { from { opacity: 0; transform: translateY(12px) scale(.992); } to { opacity: 1; transform: translateY(0) scale(1); } } /* 创作首页使用独立的“编辑面 + 操作 Dock”结构,避免继承画布的面板语言。 */ .creation-home { --creation-bg: var(--workspace-page); --creation-surface: #131519; --creation-surface-muted: #1e2127; --creation-surface-hover: #262a31; --creation-surface-selected: #343841; --creation-border: rgba(255, 255, 255, .105); --creation-border-strong: rgba(255, 255, 255, .2); --creation-text: #f3f4f6; --creation-muted: #737985; --creation-faint: #4d535e; background: var(--creation-bg); backdrop-filter: none; -webkit-backdrop-filter: none; } html:not(.dark) .creation-home { --creation-bg: var(--workspace-page); --creation-surface: #ffffff; --creation-surface-muted: #f0f2f5; --creation-surface-hover: #e9edf1; --creation-surface-selected: #dde1e7; --creation-border: rgba(32, 37, 45, .13); --creation-border-strong: rgba(32, 37, 45, .25); --creation-text: #17191d; --creation-muted: #89919d; --creation-faint: #abb2bb; } .creation-empty-workspace { width: min(1280px, calc(100% - 80px)); padding: 0 0 12px; } .creation-studio-composer { width: 100%; overflow: hidden; border: 1px solid var(--creation-border); border-radius: 26px; background: var(--creation-surface); box-shadow: 0 28px 70px rgba(0, 0, 0, .18); animation: creation-workbench-enter var(--motion-dur-slow-calc) var(--motion-ease-out) both; } html:not(.dark) .creation-studio-composer { box-shadow: 0 24px 62px rgba(25, 31, 41, .08); } .creation-studio-composer:focus-within { border-color: var(--creation-border-strong); box-shadow: 0 28px 70px rgba(0, 0, 0, .22); } .creation-studio-writing-surface { display: grid; min-height: 232px; grid-template-columns: 82px minmax(0, 1fr); gap: 22px; padding: 28px 34px 18px; } .creation-studio-reference { display: flex; width: 74px; height: 92px; align-items: center; justify-content: center; flex-direction: column; gap: 6px; align-self: start; border: 1px solid rgba(132, 143, 161, .24); border-radius: 8px; background: #1c1f25; color: #c8cdd5; transform: rotate(-7deg); transition: transform 180ms var(--motion-ease-out), border-color 180ms ease, background-color 180ms ease; } html:not(.dark) .creation-studio-reference { background: #f1f3f6; color: #69717c; } .creation-studio-reference:hover:not(:disabled) { border-color: rgba(6, 182, 212, .55); background: #22262d; transform: rotate(-3deg) translateY(-3px); } .creation-studio-reference:disabled { cursor: wait; opacity: .5; } .creation-studio-reference svg { width: 23px; height: 23px; } .creation-studio-reference span { font-size: 11px; font-weight: 600; } .creation-studio-editor { min-width: 0; } .creation-studio-editor textarea { display: block; width: 100%; min-height: 170px; resize: none; border: 0; outline: 0; background: transparent; color: var(--creation-text); font-size: 17px; line-height: 1.75; } .creation-studio-editor textarea::placeholder { color: var(--creation-muted); opacity: .72; } .creation-studio-editor textarea:disabled { cursor: wait; opacity: .56; } .creation-studio-attachment-strip { display: flex; gap: 8px; padding-top: 6px; overflow-x: auto; } .creation-studio-attachment { position: relative; width: 54px; height: 54px; flex: 0 0 auto; overflow: hidden; border: 1px solid var(--creation-border); border-radius: 10px; background: var(--creation-surface-muted); } .creation-studio-attachment img { width: 100%; height: 100%; object-fit: cover; } .creation-studio-attachment button { position: absolute; top: 4px; right: 4px; display: grid; width: 18px; height: 18px; place-items: center; border-radius: 50%; background: rgba(0, 0, 0, .7); color: white; opacity: 0; transition: opacity 140ms ease; } .creation-studio-attachment:hover button, .creation-studio-attachment button:focus-visible { opacity: 1; } .creation-studio-attachment button svg { width: 11px; height: 11px; } .creation-studio-dock { display: flex; min-height: 80px; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--creation-border); padding: 14px 32px 14px 34px; } .creation-studio-controls { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 10px; } .creation-studio-control, .creation-model-picker.canvas-composer-model-picker { display: inline-flex; height: 48px !important; min-width: 0; align-items: center; justify-content: center; gap: 10px; border: 1px solid rgba(255, 255, 255, .12) !important; border-radius: 14px !important; background: #202329 !important; color: #f1f3f5 !important; padding: 0 15px !important; font-size: 14px; font-weight: 600; white-space: nowrap; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .055); transition: transform 150ms var(--motion-ease-out), border-color 150ms ease, background-color 150ms ease; } html:not(.dark) .creation-studio-control, html:not(.dark) .creation-model-picker.canvas-composer-model-picker { border-color: rgba(32, 37, 45, .12) !important; background: #f0f2f5 !important; color: #20242a !important; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .85); } .creation-studio-control:hover, .creation-studio-control[aria-expanded="true"], .creation-model-picker.canvas-composer-model-picker:hover, .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border-color: rgba(255, 255, 255, .25) !important; background: #292d34 !important; transform: translateY(-1px); } html:not(.dark) .creation-studio-control:hover, html:not(.dark) .creation-studio-control[aria-expanded="true"], html:not(.dark) .creation-model-picker.canvas-composer-model-picker:hover, html:not(.dark) .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { background: #e7eaee !important; border-color: rgba(32, 37, 45, .22) !important; } .creation-studio-control:active { transform: scale(.98); } .creation-studio-control.is-mode { border-color: rgba(6, 182, 212, .36) !important; background: rgba(4, 73, 89, .28) !important; color: #18c2e1 !important; } .creation-studio-control > svg { width: 19px; height: 19px; flex: 0 0 auto; } .creation-studio-control > svg:last-child { width: 17px; height: 17px; color: var(--creation-muted); transition: transform 160ms var(--motion-ease-out); } .creation-studio-control > svg:last-child.is-open { transform: rotate(180deg); } .creation-model-picker.canvas-composer-model-picker { width: min(328px, 30vw) !important; justify-content: flex-start; font-size: 15px; } .creation-model-picker .canvas-model-picker-trigger-icon { width: 25px; height: 25px; border-radius: 8px; } .creation-studio-submit { display: grid; width: 58px; height: 58px; flex: 0 0 auto; place-items: center; border: 1px solid rgba(255, 255, 255, .15); border-radius: 50%; background: #383d47; color: #e5e8ec; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .13); cursor: pointer; transition: transform 150ms var(--motion-ease-out), background-color 150ms ease, color 150ms ease; } .creation-studio-submit:hover:not(:disabled) { background: #f4f5f6; color: #111317; transform: translateY(-1px); } .creation-studio-submit:active:not(:disabled) { transform: scale(.96); } .creation-studio-submit:disabled { cursor: not-allowed; background: #2d3139; color: #5a606b; } .creation-studio-submit.is-stopping { background: #bd4949; color: white; } /* 对话态不沿用空态大面板:编辑、控制与消息流各自保持紧凑的固定职责。 */ .creation-empty-workspace { width: min(1120px, calc(100% - 64px)); justify-content: center; padding-bottom: 6vh; } .creation-empty-composer { width: 100%; margin: 0; } .creation-chat-intro { display: flex; flex-direction: column; align-items: center; margin: 0 0 28px; } .creation-chat-intro-mark { display: grid; width: 30px; height: 30px; place-items: center; margin-bottom: 10px; border-radius: 10px; background: rgba(255, 255, 255, .055); color: var(--creation-accent); animation: creation-intro-mark 2.8s var(--motion-ease-out) infinite; } .creation-chat-intro-mark svg { width: 16px; height: 16px; } .creation-chat-headline { margin: 0; color: var(--creation-text); font-size: 26px; font-weight: 620; line-height: 1.25; text-align: center; } .creation-chat-headline span { display: inline-block; margin-left: 4px; color: var(--creation-accent); animation: creation-intro-word 2.8s var(--motion-ease-out) infinite; } .creation-chat-intro p { margin: 8px 0 0; color: var(--creation-muted); font-size: 12px; } .creation-chat-composer { width: 100%; overflow: hidden; border: 0; border-radius: 22px; background: #1a1c21; box-shadow: none; } html:not(.dark) .creation-chat-composer { background: #fff; box-shadow: 0 10px 32px rgba(20, 26, 35, .05); } .creation-chat-composer:focus-within { box-shadow: none; } .creation-chat-writing-surface { display: grid; min-height: 92px; grid-template-columns: 42px minmax(0, 1fr); gap: 14px; padding: 15px 18px 8px; } .creation-chat-reference { display: grid; width: 42px; height: 42px; place-items: center; border: 0; border-radius: 12px; background: #242730; color: #eef1f4; box-shadow: none; transition: transform 140ms var(--motion-ease-out), background-color 140ms ease, border-color 140ms ease; } .creation-chat-reference:hover:not(:disabled) { background: #2c3039; transform: translateY(-1px); } .creation-chat-reference:active:not(:disabled) { transform: scale(.96); } .creation-chat-reference:disabled { cursor: wait; opacity: .45; } .creation-chat-reference svg { width: 21px; height: 21px; } html:not(.dark) .creation-chat-reference { background: #eff2f5; color: #1d2229; box-shadow: none; } .creation-chat-composer.is-empty .creation-chat-writing-surface { min-height: 126px; grid-template-columns: 62px minmax(0, 1fr); gap: 16px; padding: 20px 24px 9px; } .creation-chat-reference.is-paper { width: 56px; height: 72px; flex-direction: column; gap: 4px; border-radius: 4px; background: #242730; color: #bec5ce; transform: rotate(-7deg); } .creation-chat-reference.is-paper:hover:not(:disabled) { background: #2c3039; transform: rotate(-4deg) translateY(-2px); } .creation-chat-reference.is-paper svg { width: 18px; height: 18px; } .creation-chat-reference.is-paper span { font-size: 9px; font-weight: 600; } .creation-chat-editor { min-width: 0; } .creation-chat-editor textarea { display: block; width: 100%; min-height: 78px; resize: none; border: 0; outline: 0; background: transparent; color: var(--creation-text); font-size: 14px; line-height: 1.7; } .creation-chat-editor textarea::placeholder { color: var(--creation-muted); opacity: .76; } .creation-chat-editor textarea:disabled { cursor: wait; opacity: .55; } .creation-chat-attachment-strip { display: flex; gap: 7px; padding-top: 6px; overflow-x: auto; } .creation-chat-attachment { position: relative; width: 42px; height: 42px; flex: 0 0 auto; overflow: hidden; border: 1px solid var(--creation-border); border-radius: 8px; } .creation-chat-attachment img { width: 100%; height: 100%; object-fit: cover; } .creation-chat-attachment button { position: absolute; top: 2px; right: 2px; display: grid; width: 16px; height: 16px; place-items: center; border-radius: 50%; background: rgba(0, 0, 0, .7); color: white; opacity: 0; transition: opacity 140ms ease; } .creation-chat-attachment:hover button, .creation-chat-attachment button:focus-visible { opacity: 1; } .creation-chat-attachment button svg { width: 10px; height: 10px; } .creation-chat-dock { display: flex; min-height: 58px; align-items: center; justify-content: space-between; gap: 12px; border-top: 0; padding: 8px 14px 12px; } .creation-chat-controls { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 6px; } .creation-chat-control, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { display: inline-flex; height: 32px !important; min-width: 0; align-items: center; justify-content: center; gap: 6px; border: 1px solid rgba(255, 255, 255, .055) !important; border-radius: 8px !important; background: rgba(30, 33, 39, .78) !important; color: #e6e9ed !important; padding: 0 9px !important; font-size: 11px; font-weight: 600; white-space: nowrap; box-shadow: none; transition: border-color 140ms ease, background-color 140ms ease, transform 140ms var(--motion-ease-out); } .creation-chat-control:hover, .creation-chat-control[aria-expanded="true"], .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border-color: rgba(255, 255, 255, .12) !important; background: #272b32 !important; transform: translateY(-1px); } .creation-chat-control:active { transform: scale(.98); } .creation-chat-control.is-mode { border-color: rgba(6, 182, 212, .36) !important; background: rgba(5, 80, 98, .24) !important; color: #17c4e2 !important; } .creation-chat-control > svg { width: 15px; height: 15px; flex: 0 0 auto; } .creation-chat-control > svg:last-child { width: 14px; height: 14px; color: var(--creation-muted); transition: transform 160ms var(--motion-ease-out); } .creation-chat-control > svg:last-child.is-open { transform: rotate(180deg); } .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { width: min(196px, 26vw) !important; justify-content: flex-start; } .creation-chat-composer .creation-model-picker .canvas-model-picker-trigger-icon { width: 19px; height: 19px; border-radius: 5px; } html:not(.dark) .creation-chat-control, html:not(.dark) .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { border-color: transparent !important; background: #f1f3f5 !important; color: #262b32 !important; } html:not(.dark) .creation-chat-control:hover, html:not(.dark) .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover { border-color: rgba(20, 26, 35, .2) !important; background: #e9edf1 !important; } .creation-chat-submit { display: grid; width: 38px; height: 38px; flex: 0 0 auto; place-items: center; border: 0; border-radius: 50%; background: #303540; color: #f1f3f5; transition: background-color 140ms ease, color 140ms ease, transform 140ms var(--motion-ease-out); } .creation-chat-submit:hover:not(:disabled) { background: #f3f4f6; color: #121417; transform: translateY(-1px); } .creation-chat-submit:active:not(:disabled) { transform: scale(.96); } .creation-chat-submit:disabled { cursor: not-allowed; background: #282c33; color: #5c6370; } .creation-chat-submit.is-stopping { background: #bd4949; color: white; } .creation-control-popover-surface { border: 0 !important; border-radius: 12px !important; background: #202227 !important; box-shadow: 0 16px 38px rgba(0, 0, 0, .36) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; } .creation-parameter-menu { width: 292px; padding: 12px; } .creation-parameter-section + .creation-parameter-section { margin-top: 14px; } .creation-parameter-section h3 { margin: 0 0 8px; color: #858c97; font-size: 11px; font-weight: 500; } .creation-choice-grid { display: grid; gap: 4px; } .creation-choice-grid.is-ratio { grid-template-columns: repeat(6, minmax(0, 1fr)); } .creation-choice-grid.is-resolution { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-choice-grid.is-quality, .creation-choice-grid.is-count { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-choice-grid button { display: flex; min-width: 0; min-height: 42px; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border-radius: 8px; color: #cdd1d7; font-size: 11px; transition: background-color 140ms ease, color 140ms ease; } .creation-choice-grid button:hover { background: rgba(255, 255, 255, .055); } .creation-choice-grid button.is-selected { background: rgba(255, 255, 255, .12); color: #fff; } .creation-choice-grid button small { display: none; } .creation-choice-grid.is-resolution button, .creation-choice-grid.is-count button { min-height: 34px; font-size: 12px; } .creation-choice-grid .creation-ratio-preview { width: 24px; height: 15px; } .creation-choice-grid .creation-ratio-preview > span { border-width: 1px; border-radius: 2px; } .creation-duration-menu { width: 250px; padding: 12px 14px; } .creation-duration-menu > div:first-child { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; color: #858c97; font-size: 11px; } .creation-duration-menu strong { color: #f3f4f6; font-size: 12px; font-weight: 600; } .creation-range-wrap input { height: 18px; } .creation-range-wrap input::-webkit-slider-runnable-track { height: 5px; } .creation-range-wrap input::-webkit-slider-thumb { width: 7px; height: 19px; margin-top: -7px; border-radius: 4px; } .creation-range-wrap input::-moz-range-track { height: 5px; } .creation-range-wrap input::-moz-range-thumb { width: 7px; height: 19px; border-radius: 4px; } .creation-range-labels { margin-top: 3px; font-size: 10px; } html:not(.dark) .creation-control-popover-surface { background: #fff !important; box-shadow: 0 14px 34px rgba(20, 26, 35, .14) !important; } html:not(.dark) .creation-parameter-section h3, html:not(.dark) .creation-duration-menu > div:first-child { color: #7b8490; } html:not(.dark) .creation-choice-grid button { color: #4d5661; } html:not(.dark) .creation-choice-grid button.is-selected { background: #e8ecf0; color: #20242a; } html:not(.dark) .creation-duration-menu strong { color: #20242a; } @keyframes creation-intro-mark { 0%, 100% { transform: translateY(0) rotate(0deg); opacity: .72; } 44% { transform: translateY(-3px) rotate(5deg); opacity: 1; } } @keyframes creation-intro-word { 0%, 100% { transform: translateY(0); filter: brightness(1); } 44% { transform: translateY(-2px); filter: brightness(1.18); } } @media (prefers-reduced-motion: reduce) { .creation-chat-intro-mark, .creation-chat-headline span { animation: none; } } .creation-thread-stage { width: min(960px, calc(100% - 48px)); padding: 48px 0 28px; } .creation-thread-composer { width: min(960px, calc(100% - 48px)); padding: 10px 0 18px; } .creation-chat-composer.is-thread .creation-chat-writing-surface { min-height: 76px; padding-top: 12px; } .creation-chat-composer.is-thread .creation-chat-editor textarea { min-height: 50px; } .creation-user-message { width: fit-content; max-width: min(70%, 520px); margin: 0 0 34px auto; border-radius: 16px 16px 5px 16px; background: rgba(255, 255, 255, .075); padding: 10px 14px; font-size: 14px; line-height: 1.65; } html:not(.dark) .creation-user-message { background: rgba(20, 26, 35, .065); } .creation-user-message-attachments { display: flex; gap: 6px; margin-top: 8px; } .creation-user-message-attachments img { width: 44px; height: 44px; border-radius: 7px; object-fit: cover; } .creation-assistant-message { max-width: 760px; margin: 0 0 42px; } .creation-message-heading { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--creation-muted); font-size: 12px; } .creation-message-mark { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 10px; background: #f3f4f6; color: #15171b; } .creation-message-mark svg { width: 18px; height: 18px; } .creation-message-model { max-width: min(400px, 48vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .creation-message-state { border-radius: 6px; background: rgba(255, 255, 255, .08); padding: 3px 6px; color: var(--creation-muted); } .creation-message-state.is-error { background: rgba(185, 61, 61, .18); color: #ec7474; } .creation-message-content { padding: 14px 0 0 42px; color: var(--creation-text); font-size: 15px; line-height: 1.8; white-space: pre-wrap; } .creation-message-content > span { color: var(--creation-muted); } .creation-message-error { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 15px 0 0 42px; color: #ef5350; font-size: 14px; line-height: 1.6; } .creation-message-error button { display: inline-flex; align-items: center; gap: 6px; border: 1px solid rgba(255, 255, 255, .13); border-radius: 8px; background: rgba(255, 255, 255, .06); color: var(--creation-text); padding: 6px 9px; font-size: 12px; transition: background-color 140ms ease; } .creation-message-error button:hover { background: rgba(255, 255, 255, .11); } .creation-message-error button svg { width: 14px; height: 14px; } @media (max-width: 800px) { .creation-empty-workspace, .creation-thread-stage, .creation-thread-composer { width: calc(100% - 28px); } .creation-empty-workspace { padding-bottom: 5vh; } .creation-chat-writing-surface { grid-template-columns: 38px minmax(0, 1fr); gap: 10px; padding: 13px 14px 8px; } .creation-chat-reference { width: 38px; height: 38px; border-radius: 11px; } .creation-chat-editor textarea { min-height: 68px; font-size: 14px; } .creation-chat-dock { align-items: flex-end; padding: 8px 9px 9px 12px; } .creation-chat-controls { max-width: calc(100% - 42px); gap: 5px; } .creation-chat-control, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { height: 34px !important; padding: 0 8px !important; font-size: 11px; } .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { width: min(152px, 48vw) !important; } .creation-chat-submit { width: 36px; height: 36px; } .creation-thread-stage { padding-top: 28px; } .creation-assistant-message { margin-bottom: 32px; } .creation-message-content, .creation-message-error { padding-left: 0; } .creation-user-message { max-width: 82%; } } @media (min-width: 1024px) { .app-workspace-shell.is-spatial { gap: 0; padding: 0; background: var(--workspace-canvas); } .app-workspace-shell.is-spatial .app-workspace-sidebar { width: 88px !important; border: 0; border-radius: 0; background: var(--workspace-canvas); box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; } .dark .app-workspace-shell.is-spatial .app-workspace-sidebar { box-shadow: none; } .app-workspace-shell.is-spatial .app-workspace-stage { border-radius: 0; background: transparent; } .app-workspace-shell.is-spatial .app-workspace-sidebar > div:first-child { height: 96px; border-bottom: 0; } .app-workspace-shell.is-spatial .app-workspace-sidebar > div:first-child a > span:not(.app-workspace-brand-mark) { display: none; } .app-workspace-shell.is-spatial .app-workspace-sidebar .app-workspace-brand-mark { width: 34px; height: 34px; border-radius: 10px; background: transparent; color: var(--foreground); } .app-workspace-shell.is-spatial .app-workspace-sidebar nav { padding: 18px 10px; } .app-workspace-shell.is-spatial .app-workspace-sidebar nav > div { display: none; } .app-workspace-shell.is-spatial .app-workspace-nav-link { height: 62px !important; flex-direction: column; justify-content: center !important; gap: 5px !important; margin: 0 0 9px; padding: 0 !important; color: var(--foreground); font-size: 10px; } .app-workspace-shell.is-spatial .app-workspace-nav-link > svg { width: 20px; height: 20px; } .app-workspace-shell.is-spatial .app-workspace-nav-link > span { display: block !important; font-size: 10px; line-height: 1.1; } .app-workspace-shell.is-spatial .app-workspace-nav-link.is-active { background: transparent; color: var(--foreground); box-shadow: none; } .app-workspace-shell.is-spatial .app-workspace-nav-link.is-active::before { display: none; } .app-workspace-shell.is-spatial .app-workspace-sidebar > div:last-child { border-top: 0; padding: 12px 10px 18px; } } @media (max-width: 800px) { .creation-new-button { top: 16px; right: 16px; } .creation-empty-workspace { width: calc(100% - 32px); padding: 72px 0 36px; } .creation-headline { max-width: 300px; font-size: 24px; line-height: 1.35; } .creation-empty-composer { margin-top: 28px; } .creation-prompt-area { min-height: 158px; grid-template-columns: 50px minmax(0, 1fr); gap: 12px; padding: 20px 16px 8px; } .creation-reference-tile { width: 46px; height: 62px; } .creation-reference-tile span { font-size: 9px; } .creation-prompt-editor textarea { min-height: 96px; font-size: 15px; } .creation-composer-toolbar { align-items: flex-end; padding: 8px 12px 12px; } .creation-composer-primary-tools { max-width: calc(100% - 46px); gap: 2px; } .creation-chip { height: 34px; padding: 0 9px; } .creation-model-picker.canvas-composer-model-picker { width: min(194px, 62vw) !important; height: 34px !important; } .creation-submit-button { width: 38px; height: 38px; } .creation-inspiration-strip { grid-template-columns: 1fr; gap: 8px; margin-top: 20px; } .creation-inspiration-strip button { height: 66px; } .creation-inspiration-strip img { width: 48px; height: 48px; } .creation-settings-panel { width: min(440px, calc(100vw - 96px)); padding: 10px; } .creation-model-picker-menu, .creation-duration-panel { width: min(440px, calc(100vw - 96px)) !important; } .creation-settings-section + .creation-settings-section { margin-top: 10px; } .creation-settings-section h3, .creation-duration-panel h3 { margin-bottom: 6px; font-size: 11px; } .creation-segmented-grid.is-ratio { grid-template-columns: repeat(3, minmax(0, 1fr)); } .creation-segmented-grid { gap: 2px; padding: 2px; } .creation-segmented-grid.is-ratio button { min-height: 42px; } .creation-segmented-grid.is-quality, .creation-segmented-grid.is-quality { grid-template-columns: repeat(2, minmax(0, 1fr)); } .creation-segmented-grid.is-quality button { min-height: 40px; } .creation-segmented-grid.is-quality button small { display: none; } .creation-segmented-grid.is-count { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-segmented-grid.is-count button { min-height: 36px; } .creation-duration-panel { padding: 14px; } .creation-duration-control { grid-template-columns: 1fr; gap: 18px; } .creation-duration-value { height: 50px; } .creation-thread-stage, .creation-thread-composer { width: calc(100% - 24px); } } @media (max-width: 800px) { .creation-empty-workspace { width: calc(100% - 16px); padding: 0 0 18px; } .creation-studio-composer { border-radius: 22px; } .creation-studio-writing-surface { min-height: 214px; grid-template-columns: 64px minmax(0, 1fr); gap: 14px; padding: 24px 18px 14px; } .creation-studio-reference { width: 58px; height: 76px; } .creation-studio-reference svg { width: 19px; height: 19px; } .creation-studio-reference span { font-size: 9px; } .creation-studio-editor textarea { min-height: 150px; font-size: 14px; } .creation-studio-dock { min-height: 0; align-items: flex-end; gap: 10px; padding: 12px 14px 14px 18px; } .creation-studio-controls { max-width: calc(100% - 58px); gap: 8px; } .creation-studio-control, .creation-model-picker.canvas-composer-model-picker { height: 42px !important; border-radius: 12px !important; padding: 0 11px !important; font-size: 12px; } .creation-model-picker.canvas-composer-model-picker { width: min(150px, 44vw) !important; } .creation-studio-control > svg { width: 16px; height: 16px; } .creation-studio-submit { width: 50px; height: 50px; } } @media (prefers-reduced-motion: reduce) { .creation-reference-tile, .creation-reference-button, .creation-empty-composer, .creation-submit-button, .creation-results { animation: none; transition: none; } } .app-workspace-surface { border-color: var(--workspace-border); background: var(--workspace-surface); box-shadow: 0 18px 54px color-mix(in srgb, var(--workspace-canvas) 62%, transparent), inset 0 1px 0 color-mix(in srgb, white 7%, transparent); } .credit-balance-card { border-color: rgba(225, 185, 74, 0.3); background: #11100d; color: #f8edc5; box-shadow: 0 28px 78px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 228, 145, 0.16); } .credit-balance-card::before { position: absolute; z-index: 1; inset: 0; border-radius: inherit; background-image: linear-gradient(to right, rgba(232, 193, 86, 0.055) 1px, transparent 1px), linear-gradient(to bottom, rgba(232, 193, 86, 0.055) 1px, transparent 1px); background-size: 28px 28px; content: ""; pointer-events: none; } .credit-balance-card > * { position: relative; z-index: 3; } .app-collection-card { position: relative; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: var(--workspace-surface-strong); transition: background-color var(--motion-instant) ease-out, border-color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out; } .app-collection-card:hover, .app-collection-card:focus-within { border-color: color-mix(in srgb, var(--foreground) 22%, var(--border)); background: color-mix(in srgb, var(--workspace-surface-strong) 96%, var(--foreground) 4%); box-shadow: none; } .canvas-library-search { max-width: 680px; } .canvas-library-page .app-page-header { border-bottom: 0; padding-bottom: 8px; } .canvas-library-toolbar { min-height: 56px; border: 0; border-radius: 8px; background: color-mix(in srgb, var(--workspace-surface-strong) 66%, transparent); padding: 8px; } .canvas-library-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); align-items: start; gap: 20px 16px; } .canvas-library-page .app-pagination-bar { position: static; margin-top: var(--space-4); border-color: var(--workspace-border); background: transparent; padding: var(--space-1-half) var(--space-2); backdrop-filter: none; } /* 画布文件是单个可点击对象,缩略图与元信息共用一个容器,避免视觉割裂。 */ .app-canvas-project-card { min-width: 0; color: var(--foreground); } .app-canvas-project-card.is-library { border-color: var(--workspace-border); background: color-mix(in srgb, var(--workspace-surface-strong) 76%, transparent); content-visibility: auto; contain-intrinsic-size: 0 260px; transition: border-color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out, transform var(--motion-instant) ease-out; } .app-canvas-project-card.is-library .app-canvas-project-preview { overflow: hidden; border-bottom: 1px solid var(--workspace-border); background: var(--workspace-surface-strong); } .app-canvas-project-card.is-library:hover, .app-canvas-project-card.is-library:focus-within { border-color: color-mix(in srgb, var(--foreground) 24%, var(--workspace-border)); background: color-mix(in srgb, var(--workspace-surface-strong) 90%, transparent); box-shadow: 0 10px 28px rgba(15, 23, 42, 0.07); transform: translateY(-1px); } .app-canvas-project-card.is-library.is-selected { border-color: var(--workspace-accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--workspace-accent) 22%, transparent); } .app-canvas-project-card.is-library .app-canvas-project-body { min-height: 82px; } .app-canvas-project-card.is-recent .app-canvas-project-preview { overflow: hidden; border: 1px solid var(--workspace-border); border-radius: 8px; background: var(--workspace-surface-strong); box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); transition: border-color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out; } .app-canvas-project-card.is-recent:hover .app-canvas-project-preview, .app-canvas-project-card.is-recent:focus-within .app-canvas-project-preview { border-color: color-mix(in srgb, var(--foreground) 24%, var(--workspace-border)); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08); } .app-canvas-project-checkbox { accent-color: var(--workspace-accent); } .app-canvas-selection-toolbar { border-color: color-mix(in srgb, var(--workspace-accent) 24%, var(--workspace-border)); background: var(--workspace-accent-soft); color: color-mix(in srgb, var(--workspace-accent) 48%, var(--foreground)); } .dark .app-canvas-project-card.is-library:hover, .dark .app-canvas-project-card.is-library:focus-within { box-shadow: 0 12px 30px rgba(0, 0, 0, 0.32); } .dark .app-canvas-project-card.is-recent .app-canvas-project-preview { box-shadow: 0 1px 2px rgba(0, 0, 0, 0.28); } .dark .app-canvas-project-card.is-recent:hover .app-canvas-project-preview, .dark .app-canvas-project-card.is-recent:focus-within .app-canvas-project-preview { box-shadow: 0 10px 28px rgba(0, 0, 0, 0.34); } @media (max-width: 639px) { .canvas-library-search { max-width: none; } .canvas-library-grid { grid-template-columns: 1fr; } } .app-data-table .ant-table-pagination { position: sticky; z-index: 10; bottom: 0; margin: 0 !important; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--background) 94%, transparent); padding: 12px 16px; backdrop-filter: blur(12px); } .app-list-search { width: 100%; } @media (min-width: 640px) { .app-list-search { width: 20rem !important; flex: 0 0 20rem; } } .app-table-surface { box-shadow: 0 14px 38px color-mix(in srgb, var(--foreground) 5%, transparent), inset 0 1px 0 color-mix(in srgb, var(--background) 72%, transparent); } .app-data-table .ant-table-container, .app-data-table .ant-table-content, .app-data-table .ant-table-body { min-width: 0; } .app-data-table .ant-table-thead > tr > th, .app-data-table .ant-table-tbody > tr > td { overflow: hidden; } .app-data-table .ant-table-thead > tr > th { white-space: nowrap; } .task-table-surface { border-radius: 6px; box-shadow: none; } .task-table-surface .ant-table-thead > tr > th { height: 38px; padding: 8px 12px !important; background: color-mix(in srgb, var(--foreground) 4%, var(--background)) !important; color: color-mix(in srgb, var(--foreground) 52%, transparent) !important; font-size: 11px; font-weight: 500; } .task-table-surface .ant-table-tbody > tr > td { height: 72px; padding: 10px 12px !important; background: var(--background); transition: background-color var(--motion-instant) ease-out; } .task-table-surface .ant-table-tbody > tr:hover > td { background: color-mix(in srgb, var(--foreground) 2.5%, var(--background)) !important; } .task-media-preview-modal .ant-modal-body { display: grid; min-height: 240px; place-items: center; padding: 0 !important; background: #000; } @media (max-width: 767px) { .task-table-surface .ant-table-content table { width: 100% !important; min-width: 100% !important; } .task-table-surface .ant-table-tbody > tr > td { height: auto; padding: 12px !important; } } .wallet-ledger-table .ant-table-cell:nth-last-child(-n + 2) { white-space: nowrap; } .app-pagination-bar .ant-pagination { display: flex; min-width: 0; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-1) 0; } :where(.ant-modal-content, .ant-drawer-content) { border: 1px solid var(--border); box-shadow: 0 28px 84px rgba(15, 23, 42, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important; backdrop-filter: blur(24px); } :where(.ant-modal) .ant-modal-content { padding: 0; overflow: hidden; } :where(.ant-modal) .ant-modal-header { margin: 0; border-bottom: 1px solid var(--border); padding: 13px 16px 12px; } :where(.ant-modal) .ant-modal-body { padding: 14px 16px; } :where(.ant-modal) .ant-modal-footer { margin: 0; border-top: 1px solid var(--border); padding: 10px 16px; } :where(.ant-modal) .ant-modal-close { top: 9px; right: 10px; } .ant-drawer .ant-drawer-header { min-height: 48px; padding: 10px 14px; } .ant-drawer .ant-drawer-body { padding: 14px; } .dark :where(.ant-modal-content, .ant-drawer-content) { box-shadow: 0 32px 96px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.06) !important; } :where(.ant-modal-mask, .ant-drawer-mask) { backdrop-filter: blur(5px); } /* 画风选择器自身就是完整工作区表面,移除 AntD 外壳避免形成双层厚边。 */ .canvas-style-picker-modal .ant-modal-container, .canvas-style-detail-modal .ant-modal-container { overflow: hidden; border: var(--stroke-1) solid var(--border) !important; border-radius: var(--r-2xl) !important; padding: 0 !important; background: transparent !important; } .canvas-style-picker-modal .ant-modal-body, .canvas-style-detail-modal .ant-modal-body { padding: 0 !important; } .canvas-style-picker-modal .ant-modal-close, .canvas-style-detail-modal .ant-modal-close { top: var(--space-2); right: var(--space-2); color: var(--cn-text); background: color-mix(in srgb, var(--cn-spatial-elevated) 84%, transparent); backdrop-filter: blur(var(--space-2)); } .canvas-toolbar-settings-modal { max-width: calc(100vw - var(--space-8)); } .canvas-toolbar-settings-modal .ant-modal-container, .canvas-toolbar-settings-modal .ant-modal-content { overflow: hidden; border: 0 !important; border-radius: var(--r-xl); padding: 0 !important; background: var(--cn-spatial-elevated) !important; } .canvas-toolbar-settings-modal .ant-modal-content { box-shadow: var(--workspace-overlay-shadow) !important; } .canvas-toolbar-settings-modal .ant-modal-container { box-shadow: none !important; } .canvas-toolbar-settings-modal .ant-modal-body { padding: 0 !important; } .canvas-toolbar-settings-card { background: var(--cn-spatial-surface); transition: background-color var(--motion-dur-fast) var(--motion-ease-out), opacity var(--motion-dur-fast) var(--motion-ease-out); } .canvas-toolbar-settings-card:hover { background: color-mix(in srgb, var(--cn-spatial-surface) 72%, var(--cn-spatial-elevated)); } .canvas-toolbar-settings-card.is-hidden { background: color-mix(in srgb, var(--cn-spatial-surface) 52%, transparent); } .canvas-toolbar-settings-card.is-hidden .canvas-toolbar-settings-card-content { opacity: var(--opa-subtle); } .canvas-toolbar-settings-card.is-dragging { opacity: var(--opa-muted); } :where(.ant-select-dropdown, .ant-dropdown-menu, .ant-popover-inner) { border: 1px solid var(--border); box-shadow: 0 20px 56px rgba(15, 23, 42, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important; backdrop-filter: blur(22px); } .dark :where(.ant-select-dropdown, .ant-dropdown-menu, .ant-popover-inner) { box-shadow: 0 24px 64px rgba(0, 0, 0, 0.44), inset 0 1px 0 rgba(255, 255, 255, 0.06) !important; } :where(.ant-input, .ant-input-affix-wrapper, .ant-input-number, .ant-select-content) { transition: border-color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out !important; } .auth-card-tabs .ant-tabs-nav { margin: 0; } .auth-card-tabs .ant-tabs-nav::before { display: none; } .auth-card-tabs .ant-tabs-nav-list { width: 100%; } .auth-card-tabs .ant-tabs-tab { position: relative; flex: 1; justify-content: center; margin: 0 !important; padding: 8px 0 12px !important; color: rgba(255, 255, 255, 0.38); font-weight: 500; transition: color var(--motion-instant) ease-out; } .auth-card-tabs .ant-tabs-tab:hover { color: rgba(255, 255, 255, 0.68); } .auth-card-tabs .ant-tabs-tab-active::after { position: absolute; bottom: 3px; left: 50%; width: 20px; height: 2px; border-radius: 1px; background: rgba(255, 255, 255, 0.82); content: ""; transform: translateX(-50%); } .auth-card-tabs .ant-tabs-tab-active .ant-tabs-tab-btn { color: rgba(255, 255, 255, 0.94) !important; text-shadow: none; } .auth-card-tabs .ant-tabs-tab-btn:focus-visible { border-radius: 3px; outline: 1px solid rgba(255, 255, 255, 0.48); outline-offset: 3px; } .auth-card-tabs .ant-tabs-ink-bar { display: none; } .auth-card-dark :where(.ant-input, .ant-input-affix-wrapper) { border-color: transparent !important; background: rgba(255, 255, 255, 0.055) !important; box-shadow: none !important; transition: border-color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out !important; } .auth-card-dark .ant-input-affix-wrapper > .ant-input { background: transparent !important; } .auth-card-dark :where(.ant-input:hover, .ant-input-affix-wrapper:hover) { border-color: rgba(255, 255, 255, 0.08) !important; background: rgba(255, 255, 255, 0.07) !important; } .auth-card-dark :where(.ant-input:focus, .ant-input-focused, .ant-input-affix-wrapper-focused) { border-color: transparent !important; background: rgba(255, 255, 255, 0.085) !important; outline: none !important; box-shadow: none !important; } .auth-card-dark .ant-input-affix-wrapper-focused .ant-input-prefix svg { color: rgba(255, 255, 255, 0.62) !important; } .auth-card-dark input:-webkit-autofill, .auth-card-dark input:-webkit-autofill:hover, .auth-card-dark input:-webkit-autofill:focus { box-shadow: 0 0 0 1000px #17181c inset !important; -webkit-text-fill-color: #f5f5f5 !important; caret-color: #f5f5f5; } :where(.ant-modal, .ant-drawer, .ant-select-dropdown, .ant-dropdown, .ant-popover) { overscroll-behavior: contain; } @media (prefers-reduced-motion: reduce) { .app-collection-card { transition: none; } .app-collection-card:hover, .app-collection-card:focus-within { transform: none; } :where(.ant-input, .ant-input-affix-wrapper, .ant-input-number, .ant-select-content) { transition: none !important; } } .ant-table-wrapper .ant-table-thead > tr > th { font-size: 12px; font-weight: 500; letter-spacing: 0.015em; } .ant-form-item-label > label { font-weight: 500; letter-spacing: 0.01em; } .aceternity-floating-dock { isolation: isolate; transform-origin: bottom center; box-shadow: 0 24px 72px rgba(15, 23, 42, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.16); } .aceternity-dock-command { border-color: color-mix(in srgb, currentColor 11%, transparent); background: var(--dock-command-bg); color: inherit; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12), 0 5px 15px rgba(15, 23, 42, 0.08); transition: border-color var(--motion-instant) ease-out, background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out, box-shadow var(--motion-instant) ease-out; } .aceternity-dock-command > span:first-child svg { width: 100%; height: 100%; stroke-width: 1.8; } .aceternity-dock-command:hover:not(:disabled) { border-color: color-mix(in srgb, currentColor 20%, transparent); background: var(--dock-command-hover); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18), 0 12px 30px rgba(15, 23, 42, 0.14); } .aceternity-dock-command.is-labeled { border-color: transparent; background: transparent; box-shadow: none; } .aceternity-dock-command.is-labeled:hover:not(:disabled) { border-color: transparent; background: var(--dock-command-hover); box-shadow: none; } .aceternity-dock-command.is-labeled.is-active { border-color: transparent; box-shadow: none; } .aceternity-dock-command.is-active { border-color: color-mix(in srgb, var(--dock-command-active) 28%, transparent); background: var(--dock-command-active); color: var(--dock-command-active-text); box-shadow: 0 12px 30px color-mix(in srgb, var(--dock-command-active) 22%, transparent); } .aceternity-dock-command.is-active > span:first-child, .aceternity-dock-command.is-active > span:first-child svg { color: var(--dock-command-active-text); stroke: currentColor; opacity: 1; } .aceternity-dock-command.is-quiet { border-color: transparent; background: transparent; box-shadow: none; } .aceternity-dock-command.is-quiet:hover:not(:disabled), .aceternity-dock-command.is-quiet.is-active { border-color: transparent; background: var(--dock-command-hover); box-shadow: none; } .aceternity-dock-command.is-danger { color: var(--dock-command-danger); } .aceternity-dock-danger-group { background: color-mix(in srgb, var(--dock-command-danger) 8%, transparent); } .aceternity-dock-command:focus-visible { box-shadow: 0 0 0 2px var(--dock-command-bg), 0 0 0 4px var(--dock-command-active); } .aceternity-dock-command:disabled { cursor: not-allowed; opacity: 0.3; box-shadow: none; } .canvas-image-tool-checkbox .ant-checkbox-inner { border-color: color-mix(in srgb, var(--tool-accent) 44%, transparent) !important; background: transparent !important; } .canvas-image-tool-checkbox.ant-checkbox-wrapper-checked .ant-checkbox-inner, .canvas-image-tool-checkbox .ant-checkbox-checked .ant-checkbox-inner { border-color: var(--tool-accent) !important; background: var(--tool-accent) !important; } .aceternity-dock-separator { background: color-mix(in srgb, currentColor 13%, transparent); } .aceternity-dock-tooltip { border-color: var(--dock-tooltip-border); background: var(--dock-tooltip-bg); color: inherit; } .aceternity-floating-panel { transform-origin: bottom center; box-shadow: 0 30px 90px rgba(15, 23, 42, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.12); } .app-workspace-canvas { background: var(--workspace-content); } .dark .app-workspace-canvas { background: var(--workspace-content); } .app-spatial-surface { border: 1px solid rgba(17, 24, 39, 0.1); background: rgba(255, 255, 255, 0.88); box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.72); backdrop-filter: blur(22px); } .dark .app-spatial-surface { border-color: rgba(255, 255, 255, 0.11); background: rgba(28, 28, 30, 0.88); box-shadow: 0 22px 60px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.07); } .app-spatial-interactive { transition: transform var(--motion-state) cubic-bezier(0.16, 1, 0.3, 1), border-color var(--motion-state) ease-out, box-shadow var(--motion-state) ease-out; } .app-spatial-interactive:hover { transform: translateY(-2px); border-color: rgba(79, 110, 232, 0.34); box-shadow: 0 24px 68px rgba(15, 23, 42, 0.14), 0 0 0 1px rgba(79, 110, 232, 0.08); } .dark .app-spatial-interactive:hover { border-color: rgba(130, 144, 240, 0.42); box-shadow: 0 28px 76px rgba(0, 0, 0, 0.46), 0 0 0 1px rgba(130, 144, 240, 0.1); } @media (prefers-reduced-motion: reduce) { .app-spatial-interactive { transition: none; } .app-spatial-interactive:hover { transform: none; } } .aceternity-zoom-range { appearance: none; border-radius: 999px; background: color-mix(in srgb, currentColor 12%, transparent); cursor: ew-resize; outline: none; } .aceternity-zoom-range::-webkit-slider-thumb { width: 14px; height: 14px; appearance: none; border: 2px solid currentColor; border-radius: 999px; background: var(--background); box-shadow: 0 5px 16px rgba(15, 23, 42, 0.22); } .aceternity-zoom-range:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, currentColor 18%, transparent); } .aceternity-comet-perspective[data-comet-active="true"] { perspective: 1200px; transform-style: preserve-3d; } .aceternity-comet-card { transform-origin: center center; } .aceternity-comet-card[data-comet-active="true"] { transform-style: preserve-3d; backface-visibility: hidden; will-change: transform; } .aceternity-comet-card::after { position: absolute; z-index: 2; inset: 0; border-radius: inherit; background: linear-gradient(145deg, rgba(255, 255, 255, 0.16), transparent 24%, transparent 72%, rgba(255, 255, 255, 0.08)); content: ""; pointer-events: none; } .aceternity-drop-grid { background-image: linear-gradient(color-mix(in srgb, currentColor 14%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, currentColor 14%, transparent) 1px, transparent 1px); background-position: center; background-size: 34px 34px; mask-image: radial-gradient(circle at center, black 12%, transparent 72%); } .ai-title-aurora { background: linear-gradient(90deg, #111827 0%, #111827 36%, #6b7280 54%, #111827 72%, #111827 100%); background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: ai-title-aurora 7s var(--motion-ease-in-out) infinite; } .dark .ai-title-aurora { background: linear-gradient(90deg, #fafaf9 0%, #fafaf9 36%, #a8a29e 54%, #fafaf9 72%, #fafaf9 100%); background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; } @keyframes ai-title-aurora { 0%, 100% { background-position: 0% 50%; filter: drop-shadow(0 0 0 rgba(0, 0, 0, 0)); } 50% { background-position: 100% 50%; filter: drop-shadow(0 12px 28px rgba(28, 25, 23, 0.08)); } } .hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } .hide-scrollbar::-webkit-scrollbar { display: none; } .prompt-filter-tag.ant-tag-checkable { margin: 0; border: 1px solid transparent; border-radius: 6px; padding: 5px 10px; color: #57534e; font-size: 14px; line-height: 1; transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease; } .prompt-filter-tag.ant-tag-checkable:hover { background: rgba(28, 25, 23, 0.06); color: #1c1917; } .prompt-filter-tag.ant-tag-checkable.is-active, .prompt-filter-tag.ant-tag-checkable-checked { background: #111111; border-color: #111111; color: #ffffff; font-weight: 600; } .dark .prompt-filter-tag.ant-tag-checkable { color: #e7e5e4; } .dark .prompt-filter-tag.ant-tag-checkable:hover { background: rgba(255, 255, 255, 0.1); color: #ffffff; } .dark .prompt-filter-tag.ant-tag-checkable.is-active, .dark .prompt-filter-tag.ant-tag-checkable-checked { background: rgba(250, 250, 249, 0.96); border-color: rgba(255, 255, 255, 0.88); box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.18), 0 6px 18px rgba(0, 0, 0, 0.22); color: #0c0a09 !important; font-weight: 700; } .thin-scrollbar { scrollbar-color: rgba(120, 113, 108, 0.45) transparent; scrollbar-width: thin; } .script-column-picker { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 12px; } .script-column-picker .ant-checkbox-wrapper { margin-inline-start: 0; color: inherit; } .script-column-picker .ant-checkbox-inner { width: 15px; height: 15px; border-radius: 4px; border-color: rgba(120, 113, 108, 0.58); background: transparent; } .script-column-picker .ant-checkbox-checked .ant-checkbox-inner { border-color: #5b6ee1; background: #5b6ee1; } .script-column-picker .ant-checkbox-checked .ant-checkbox-inner::after { width: 4px; height: 7px; } .script-column-picker .ant-checkbox-wrapper:hover .ant-checkbox-inner, .script-column-picker .ant-checkbox:hover .ant-checkbox-inner { border-color: #7485ee; } .thin-scrollbar::-webkit-scrollbar { height: 4px; width: 4px; } .thin-scrollbar::-webkit-scrollbar-thumb { background: rgba(120, 113, 108, 0.45); border-radius: 999px; } .storyboard-scrollbar { overscroll-behavior: contain; scrollbar-color: rgba(148, 163, 184, 0.72) rgba(120, 113, 108, 0.14); scrollbar-gutter: stable; scrollbar-width: auto; } .storyboard-scrollbar::-webkit-scrollbar { width: 12px; } .storyboard-scrollbar::-webkit-scrollbar-track { background: rgba(120, 113, 108, 0.14); border-left: 1px solid rgba(120, 113, 108, 0.18); } .storyboard-scrollbar::-webkit-scrollbar-thumb { min-height: 40px; border: 2px solid transparent; border-radius: 999px; background: rgba(148, 163, 184, 0.72); background-clip: content-box; } .storyboard-scrollbar::-webkit-scrollbar-thumb:hover { background: rgba(186, 196, 210, 0.9); background-clip: content-box; } .hover-scrollbar { scrollbar-color: transparent transparent; scrollbar-width: thin; } .hover-scrollbar:hover { scrollbar-color: rgba(120, 113, 108, 0.5) transparent; } .hover-scrollbar::-webkit-scrollbar { height: 6px; width: 6px; } .hover-scrollbar::-webkit-scrollbar-thumb { background: transparent; border-radius: 999px; } .hover-scrollbar:hover::-webkit-scrollbar-track { background: rgba(120, 113, 108, 0.12); border-radius: 999px; } .hover-scrollbar:hover::-webkit-scrollbar-thumb { background: rgba(120, 113, 108, 0.5); } .hover-scrollbar-hint { position: relative; } .hover-scrollbar-hint::after { background: rgba(120, 113, 108, 0.42); border-radius: 999px; bottom: 4px; content: ""; height: 3px; left: 12px; opacity: 0; pointer-events: none; position: absolute; right: 12px; transition: opacity 0.18s ease; } .hover-scrollbar-hint:hover::after { opacity: 1; } .canvas-control-select.ant-select .ant-select-content, .canvas-control-number.ant-input-number { border-color: rgba(120, 113, 108, 0.32) !important; box-shadow: none !important; } .canvas-compact-control.canvas-control-select.ant-select { height: 100%; } .canvas-compact-control.canvas-control-select.ant-select .ant-select-content, .canvas-compact-control.canvas-control-number.ant-input-number { height: 100% !important; } .canvas-compact-control.canvas-control-select.ant-select .ant-select-content > :first-child { align-items: center; display: flex; } .canvas-compact-control.canvas-control-select.ant-select .ant-select-content, .canvas-compact-control.canvas-control-select.ant-select .ant-select-input, .canvas-compact-control.canvas-control-number.ant-input-number .ant-input-number-input { height: 100% !important; line-height: 1 !important; } .canvas-composer-icon.ant-btn { flex: 0 0 32px; width: 32px; } .canvas-composer-tools { container-type: inline-size; } .canvas-composer-mode-button { width: 32px; } .canvas-composer-tools .canvas-composer-mode-button span, .canvas-composer-tools .canvas-model-picker-label > span:nth-child(n + 2), .canvas-composer-tools .canvas-composer-icon.ant-btn > span:not(.ant-btn-icon) { display: none; } .canvas-composer-tools .canvas-composer-model-picker { width: 32px; min-width: 32px; } .canvas-composer-tools .canvas-composer-model-picker { padding-inline: 7px !important; } .canvas-composer-tools .canvas-model-picker-label { min-width: 0; } .canvas-composer-model-picker { align-items: center; appearance: none; background: color-mix(in srgb, var(--workspace-surface-strong) 94%, var(--workspace-accent) 6%); border: 0; border-radius: 9px; color: var(--foreground); cursor: pointer; display: flex; font: inherit; gap: 8px; height: 32px; justify-content: space-between; line-height: 1; max-width: 100%; min-width: 0; outline: none !important; padding: 0 9px; text-align: left; transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out; } .canvas-composer-model-picker:hover { background: color-mix(in srgb, var(--workspace-surface-strong) 88%, var(--workspace-accent) 12%); } .canvas-composer-model-picker:focus, .canvas-composer-model-picker:focus-visible, .canvas-composer-model-picker[aria-expanded="true"] { background: color-mix(in srgb, var(--workspace-surface-strong) 84%, var(--workspace-accent) 16%); box-shadow: none !important; outline: none !important; } .canvas-model-picker-label { flex: 1 1 auto; overflow: hidden; } .canvas-model-picker-trigger-icon { align-items: center; border-radius: 6px; display: inline-flex; flex: 0 0 22px; height: 22px; justify-content: center; width: 22px; } .canvas-model-picker-chevron { color: color-mix(in srgb, var(--foreground) 52%, transparent); flex: 0 0 14px; height: 14px; transition: transform var(--motion-instant) ease-out; width: 14px; } .canvas-model-picker-chevron.is-open { transform: rotate(180deg); } .canvas-model-picker-popover, .canvas-preset-picker-popover { filter: none !important; } .canvas-composer-popover-surface { border: 0 !important; border-radius: 10px !important; background: var(--workspace-surface-strong) !important; box-shadow: 0 14px 38px rgba(0, 0, 0, 0.22) !important; overflow: hidden; padding: 0 !important; backdrop-filter: blur(22px) saturate(118%); -webkit-backdrop-filter: blur(22px) saturate(118%); } .dark .canvas-composer-popover-surface { box-shadow: 0 16px 40px rgba(0, 0, 0, 0.34) !important; } .canvas-composer-popover-content { padding: 0 !important; } .canvas-model-picker-menu { max-height: min(420px, calc(100vh - 32px)); min-width: 0; overflow-x: hidden; overflow-y: auto; padding: 4px; } .canvas-model-picker-group + .canvas-model-picker-group { border-top: 1px solid var(--workspace-border); margin-top: 5px; padding-top: 5px; } .canvas-model-picker-group-label { align-items: center; display: flex; font-size: 10px; font-weight: 600; gap: 6px; letter-spacing: 0.02em; min-width: 0; padding: 5px 7px 4px; } .canvas-model-picker-option { align-items: center; border: 0; border-radius: 7px; cursor: pointer; display: flex; gap: 8px; max-width: 100%; min-height: 44px; min-width: 0; outline: none; overflow: hidden; padding: 6px 7px; text-align: left; transition: background-color var(--motion-instant) ease-out; width: 100%; } .canvas-model-picker-option:hover { background: color-mix(in srgb, var(--workspace-accent) 9%, transparent) !important; } .canvas-model-picker-option:focus-visible { background: color-mix(in srgb, var(--workspace-accent) 13%, transparent) !important; outline: none; } .canvas-model-picker-option > span:first-child { flex: 1 1 auto; min-width: 0; overflow: hidden; } .canvas-model-picker-option-check { flex: 0 0 14px; height: 14px; width: 14px; } .canvas-model-picker-empty { font-size: 11px; padding: 22px 12px; text-align: center; } .canvas-preset-picker-trigger:focus-visible, .canvas-preset-picker-trigger[aria-expanded="true"] { background: color-mix(in srgb, var(--workspace-accent) 18%, transparent) !important; outline: none; } .canvas-preset-picker-trigger { cursor: pointer; transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out, transform 90ms ease-out; } .canvas-preset-picker-trigger:active { transform: scale(0.97); } .canvas-generation-settings-trigger.ant-btn { background: color-mix(in srgb, var(--workspace-surface-strong) 94%, var(--workspace-accent) 6%) !important; border: 0 !important; color: var(--foreground) !important; cursor: pointer; transition: background-color var(--motion-instant) ease-out, color var(--motion-instant) ease-out, transform 90ms ease-out; } .canvas-generation-settings-trigger.ant-btn:hover, .canvas-generation-settings-trigger.ant-btn:focus-visible, .canvas-generation-settings-trigger.ant-btn[aria-expanded="true"] { background: color-mix(in srgb, var(--workspace-surface-strong) 86%, var(--workspace-accent) 14%) !important; box-shadow: none !important; outline: none !important; } .canvas-generation-settings-trigger.ant-btn .ant-btn-icon { color: color-mix(in srgb, var(--workspace-accent) 72%, var(--foreground)); } html:not(.dark) .canvas-composer-model-picker, html:not(.dark) .canvas-generation-settings-trigger.ant-btn { background: rgba(15, 23, 42, 0.045) !important; color: #1f2937 !important; } html:not(.dark) .canvas-composer-model-picker:hover, html:not(.dark) .canvas-composer-model-picker[aria-expanded="true"], html:not(.dark) .canvas-generation-settings-trigger.ant-btn:hover, html:not(.dark) .canvas-generation-settings-trigger.ant-btn:focus-visible, html:not(.dark) .canvas-generation-settings-trigger.ant-btn[aria-expanded="true"] { background: rgba(15, 23, 42, 0.075) !important; } html:not(.dark) .canvas-generation-cost-badge { background: rgba(79, 110, 232, 0.09) !important; color: #4f6ee8 !important; } .canvas-preset-picker-menu { padding: 6px; } .canvas-preset-picker-search.ant-input-affix-wrapper { border: 0 !important; border-radius: 8px; background: color-mix(in srgb, var(--workspace-accent) 7%, transparent) !important; box-shadow: none !important; color: color-mix(in srgb, var(--foreground) 66%, transparent); height: 32px; padding-inline: 9px; } .canvas-preset-picker-search.ant-input-affix-wrapper:focus, .canvas-preset-picker-search.ant-input-affix-wrapper:focus-within { background: color-mix(in srgb, var(--workspace-accent) 11%, transparent) !important; box-shadow: none !important; } .canvas-preset-picker-option { align-items: center; background: transparent; border: 0; border-radius: 7px; cursor: pointer; display: flex; gap: 9px; min-height: 48px; outline: none; padding: 6px 8px; text-align: left; transition: background-color var(--motion-instant) ease-out; width: 100%; } .canvas-preset-picker-option:hover, .canvas-preset-picker-option:focus-visible { background: color-mix(in srgb, var(--workspace-accent) 9%, transparent); outline: none; } .canvas-preset-picker-option-icon { align-items: center; border-radius: 7px; display: inline-flex; flex: 0 0 28px; height: 28px; justify-content: center; width: 28px; } body.app-spatial-overlays .canvas-composer-popover-surface { border: 0 !important; background: var(--workspace-surface-strong) !important; } html:not(.dark) body.app-spatial-overlays .canvas-composer-popover-surface { background: #ffffff !important; box-shadow: 0 14px 34px rgba(15, 23, 42, 0.13) !important; } .dark body.app-spatial-overlays .canvas-composer-popover-surface { box-shadow: 0 16px 40px rgba(0, 0, 0, 0.3) !important; } .agent-text-model-select .ant-select-content { padding-inline: 6px !important; } .agent-text-model-select .ant-select-content { min-width: 0; } @container (min-width: 440px) { .canvas-composer-mode-button { padding-inline: 8px; width: auto; } .canvas-composer-tools .canvas-composer-mode-button span { display: inline; font-size: 12px; line-height: 1; } .canvas-composer-icon.ant-btn { flex: 0 1 auto; max-width: 170px; width: auto !important; } .canvas-composer-tools .canvas-composer-icon.ant-btn > span:not(.ant-btn-icon) { display: inline-flex; min-width: 0; } .canvas-composer-tools .canvas-composer-model-picker { width: auto; min-width: 9rem; } .canvas-composer-tools .canvas-composer-model-picker { padding-inline: 10px !important; } .canvas-composer-tools .canvas-model-picker-label > span:nth-child(n + 2) { display: inline-flex; } } .canvas-control-select.ant-select-focused .ant-select-content, .canvas-control-number.ant-input-number-focused { border-color: #a8a29e !important; } .dark .canvas-control-select.ant-select .ant-select-content, .dark .canvas-control-number.ant-input-number { border-color: rgba(214, 211, 209, 0.2) !important; } .dark .canvas-control-select.ant-select-focused .ant-select-content, .dark .canvas-control-number.ant-input-number-focused { border-color: #78716c !important; } .canvas-image-settings-popover .ant-popover-inner { border-radius: 18px; box-shadow: 0 18px 54px rgba(28, 25, 23, 0.16); padding: 18px; } .canvas-image-settings-popover .ant-popover-inner-content { max-height: calc(100vh - 96px); overflow-y: auto; } .canvas-image-settings-popover .ant-segmented { border-radius: 999px; padding: 3px; } .canvas-image-settings-popover .ant-segmented-item { border-radius: 999px; } .dark .canvas-image-settings-popover .ant-popover-inner { box-shadow: 0 18px 54px rgba(0, 0, 0, 0.45); } .canvas-floating-dock, .canvas-floating-panel, .canvas-node-toolbar { animation: canvas-panel-in var(--motion-dur-fast-calc) var(--motion-ease-out) both; } /* 覆盖工具栏与节点之间的视觉留白,避免鼠标途中被相邻节点抢走悬浮状态。 */ .canvas-node-toolbar::after { position: absolute; top: 100%; right: -8px; left: -8px; height: 14px; content: ""; } .canvas-floating-dock { box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 10px 26px rgba(15, 23, 42, 0.08); } .dark .canvas-floating-dock { box-shadow: 0 1px 1px rgba(0, 0, 0, 0.28), 0 12px 28px rgba(0, 0, 0, 0.3); } .canvas-floating-panel { box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 14px 34px rgba(15, 23, 42, 0.1); } @media (max-width: 1024px) { .aceternity-mode-switch { top: 56px; } } .dark .canvas-floating-panel { box-shadow: 0 1px 1px rgba(0, 0, 0, 0.28), 0 14px 34px rgba(0, 0, 0, 0.34); } .canvas-tool-button, .canvas-menu-item, .canvas-node-tool-button { transform: translate3d(0, 0, 0) scale(1); transition: background-color 140ms ease, color 140ms ease, opacity 140ms ease, box-shadow 140ms ease, transform 160ms var(--motion-ease-out); } .canvas-connection-handle { touch-action: none; } @media (pointer: coarse) { .canvas-connection-handle { width: 44px !important; height: 44px !important; } } .canvas-tool-button:not(:disabled):hover, .canvas-node-tool-button:not(:disabled):hover { transform: translate3d(0, -1px, 0) scale(1.04); } .canvas-tool-button:not(:disabled):active, .canvas-node-tool-button:not(:disabled):active, .canvas-menu-item:not(:disabled):active { transform: translate3d(0, 0, 0) scale(0.94); } .canvas-menu-item:not(:disabled):hover { transform: translate3d(4px, 0, 0); } .canvas-menu-item:not(:disabled):hover .canvas-menu-item-icon, .canvas-node-tool-button:not(:disabled):hover .canvas-node-tool-icon { transform: scale(1.08); } .canvas-menu-item-icon, .canvas-node-tool-icon { transition: transform 160ms var(--motion-ease-out); } .canvas-node-shell { transition: border-color 160ms ease, box-shadow 160ms ease, background-color 160ms ease; } .canvas-node-shell.aceternity-comet-card { box-shadow: 0 18px 48px rgba(15, 23, 42, 0.1), 0 2px 6px rgba(15, 23, 42, 0.06); } .canvas-node-shell.aceternity-comet-card:hover { box-shadow: 0 30px 80px rgba(15, 23, 42, 0.18), 0 6px 20px rgba(15, 23, 42, 0.1); } .dark .canvas-node-shell.aceternity-comet-card { box-shadow: 0 22px 60px rgba(0, 0, 0, 0.34), 0 2px 8px rgba(0, 0, 0, 0.3); } .dark .canvas-node-shell.aceternity-comet-card:hover { box-shadow: 0 34px 90px rgba(0, 0, 0, 0.52), 0 8px 26px rgba(0, 0, 0, 0.36); } [data-canvas-viewport-interacting="true"] .canvas-node-shell, [data-canvas-viewport-interacting="true"] .aceternity-comet-card { transition: none !important; } /* 静止期用最终倍率重新排版 DOM,避免 Windows Chromium 复用交互期的低分辨率合成纹理。 */ .canvas-world-layer { transform: translate(var(--canvas-live-x), var(--canvas-live-y)) scale(var(--canvas-live-scale-ratio)); transform-origin: 0 0; } .canvas-world-raster-layer { zoom: var(--canvas-committed-scale); } [data-canvas-viewport-interacting="true"] .canvas-world-layer { transform: translate3d(var(--canvas-live-x), var(--canvas-live-y), 0) scale(var(--canvas-live-scale-ratio)); will-change: transform; } [data-canvas-viewport-interacting="true"] .canvas-node-shell.aceternity-comet-card, [data-canvas-viewport-interacting="true"] .canvas-node-shell.aceternity-comet-card:hover { box-shadow: none !important; } [data-canvas-viewport-interacting="true"] :where(.canvas-node-shell-generating::before, .canvas-connection-flow, .canvas-connection-draft) { animation: none !important; } /* 节点状态徽章 success 淡出动画(对应 #97 决策2)*/ @keyframes canvas-status-success-fade { 0% { opacity: 1; transform: scale(1); } 70% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(0.9); } } /* 任务进度条 shimmer 扫描动画(对应 #98 决策3)*/ @keyframes canvas-task-progress-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(200%); } } .canvas-task-progress-shimmer { animation: canvas-task-progress-shimmer 1.4s linear infinite; } .canvas-node-shell-generating::before { position: absolute; z-index: 45; inset: -1.5px; padding: 1px; border-radius: 19px; background: linear-gradient(110deg, rgba(91, 110, 225, 0.66), rgba(96, 165, 250, 0.62), rgba(167, 139, 250, 0.58), rgba(244, 114, 182, 0.54), rgba(250, 204, 21, 0.5), rgba(52, 211, 153, 0.58), rgba(91, 110, 225, 0.66)); background-size: 300% 100%; content: ""; filter: drop-shadow(0 0 3px rgba(96, 165, 250, 0.2)); pointer-events: none; animation: canvas-generation-border-flow 2.4s var(--motion-ease-linear) infinite; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; } .dark .canvas-node-shell-generating::before { filter: drop-shadow(0 0 4px rgba(91, 110, 225, 0.22)); } .canvas-connection-flow { animation: canvas-connection-flow 1.25s var(--motion-ease-linear) infinite; } .canvas-connection-draft { animation: canvas-connection-flow 0.9s var(--motion-ease-linear) infinite; } @keyframes canvas-panel-in { from { opacity: 0; filter: saturate(0.92); } to { opacity: 1; filter: saturate(1); } } @keyframes canvas-connection-flow { to { stroke-dashoffset: -44; } } @keyframes canvas-generation-border-flow { to { background-position: 300% 0; } } .canvas-node-info-modal .ant-modal-header { padding-right: 0; } .canvas-node-info-modal .ant-modal-title { line-height: 1; } .canvas-node-info-modal .ant-modal-close { top: 21px; } @keyframes canvas-batch-child-in { from { opacity: 0; transform: translate(var(--batch-from-x), var(--batch-from-y)) rotate(var(--batch-from-rotate)) scale(0.72); } 72% { opacity: 1; transform: translate(0, 0) rotate(-1deg) scale(1.015); } to { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); } } @keyframes canvas-batch-child-out { from { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); } to { opacity: 0; transform: translate(var(--batch-from-x), var(--batch-from-y)) rotate(var(--batch-from-rotate)) scale(0.72); } } } @keyframes workspace-state-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } @media (prefers-reduced-motion: reduce) { .workspace-state { animation: none; } :where(.ant-btn:not(:disabled)):active { transform: none; } } @media (prefers-reduced-motion: reduce) { .aceternity-comet-card, .aceternity-dock-command, .aceternity-floating-panel, .canvas-menu-item { transform: none !important; transition-duration: 0.01ms !important; } .canvas-node-shell-generating::before, .canvas-connection-flow, .canvas-connection-draft { animation: none; } .canvas-node-shell-generating::before { background-position: 50% 0; } } /* 章节编辑区用清晰边界区分工具栏与正文,同时保留连续写作空间。 */ .project-workbench-page .project-chapter-editor-wrap { min-height: 100%; } .project-chapter-editor { min-height: 100%; width: 100%; padding: 24px 28px 48px; color: var(--foreground); font-size: 15px; line-height: 1.8; } .project-chapter-editor p { margin: 0 0 1em; } .project-chapter-editor h1, .project-chapter-editor h2, .project-chapter-editor h3 { margin: 1.35em 0 0.55em; font-weight: 650; line-height: 1.3; letter-spacing: -0.02em; } .project-chapter-editor h1 { font-size: 1.55em; } .project-chapter-editor h2 { font-size: 1.3em; } .project-chapter-editor h3 { font-size: 1.12em; } .project-chapter-editor ul, .project-chapter-editor ol { margin: 0 0 1em; padding-left: 1.4em; } .project-chapter-editor blockquote { margin: 1.2em 0; border-left: 2px solid color-mix(in srgb, var(--workspace-accent) 55%, transparent); padding-left: 1em; color: color-mix(in srgb, var(--foreground) 66%, transparent); } .project-chapter-editor p.is-editor-empty:first-child::before { float: left; height: 0; color: color-mix(in srgb, var(--foreground) 34%, transparent); content: attr(data-placeholder); pointer-events: none; } @media (max-width: 1023px) { .project-workbench-page .project-chapter-editor-wrap { min-height: 100%; } .project-chapter-editor { min-height: 420px; padding: 18px 20px 36px; font-size: 15px; } } ::view-transition-old(root), ::view-transition-new(root) { animation: none; mix-blend-mode: normal; } html[data-theme-switching="true"] :where(.canvas-node-shell, .aceternity-comet-card, .aceternity-floating-panel, .canvas-connection-flow, .canvas-connection-draft) { animation: none !important; transition: none !important; } /* 创作页是工作舞台,不使用管理台的边框、卡片和分段控件语言。 */ .creation-home { --creation-accent: var(--workspace-accent); --creation-bg: var(--workspace-page); --creation-surface: #191b20; --creation-surface-raised: #22252b; --creation-text: #f2f3f4; --creation-muted: #838991; --creation-faint: #555b64; min-width: 0; background: var(--creation-bg); color: var(--creation-text); } .creation-scrollbar { scrollbar-color: rgba(255, 255, 255, .22) transparent; scrollbar-gutter: stable; scrollbar-width: auto; } .creation-scrollbar::-webkit-scrollbar { width: 10px; } .creation-scrollbar::-webkit-scrollbar-track { background: transparent; } .creation-scrollbar::-webkit-scrollbar-thumb { border: 3px solid transparent; border-radius: 999px; background: rgba(255, 255, 255, .22); background-clip: content-box; } .creation-scrollbar::-webkit-scrollbar-thumb:hover { background-color: rgba(255, 255, 255, .34); } html:not(.dark) .creation-scrollbar { scrollbar-color: rgba(35, 41, 49, .24) transparent; } html:not(.dark) .creation-scrollbar::-webkit-scrollbar-thumb { background-color: rgba(35, 41, 49, .24); } html:not(.dark) .creation-scrollbar::-webkit-scrollbar-thumb:hover { background-color: rgba(35, 41, 49, .38); } html:not(.dark) .creation-home { --creation-bg: var(--workspace-page); --creation-surface: #ffffff; --creation-surface-raised: #f0f1ee; --creation-text: #1d2024; --creation-muted: #7c838b; --creation-faint: #b5babf; } .creation-empty-workspace { width: min(1000px, calc(100% - 56px)); min-height: 100%; margin: 0 auto; padding: 0 0 5vh; } .creation-empty-composer { width: 100%; margin: 0; animation: creation-composer-arrive var(--motion-dur-slow-calc) var(--motion-ease-out) both; } .creation-chat-composer { width: 100%; overflow: hidden; border: 0; border-radius: 16px; background: var(--creation-surface); box-shadow: 0 20px 58px rgba(0, 0, 0, .15); } html:not(.dark) .creation-chat-composer { box-shadow: 0 18px 48px rgba(30, 34, 38, .08); } .creation-chat-composer:focus-within { box-shadow: 0 20px 58px rgba(0, 0, 0, .18); } .creation-chat-writing-surface, .creation-chat-composer.is-empty .creation-chat-writing-surface { display: grid; min-height: 88px; grid-template-columns: 34px minmax(0, 1fr); gap: 12px; padding: 16px 18px 6px; } .creation-chat-reference, .creation-chat-reference.is-paper { display: grid; width: 32px; height: 32px; place-items: center; align-self: start; border: 0; border-radius: 8px; background: transparent; color: var(--creation-muted); box-shadow: none; transform: none; transition: color 140ms ease, background-color 140ms ease, transform 140ms var(--motion-ease-out); } .creation-chat-reference svg, .creation-chat-reference.is-paper svg { width: 17px; height: 17px; } .creation-chat-reference.is-paper span { display: none; } .creation-chat-reference:hover:not(:disabled), .creation-chat-reference.is-paper:hover:not(:disabled) { background: rgba(255, 255, 255, .07); color: var(--creation-text); transform: translateY(-1px); } html:not(.dark) .creation-chat-reference:hover:not(:disabled) { background: rgba(28, 32, 36, .06); } .creation-chat-editor textarea { display: block; width: 100%; min-height: 60px; border: 0; outline: 0; background: transparent; color: var(--creation-text); font-size: 14px; line-height: 1.65; } .creation-chat-editor textarea::placeholder { color: var(--creation-muted); opacity: .72; } .creation-chat-mention-container { min-height: 76px; } .creation-chat-mention-editor { display: block; width: 100%; min-height: 76px; max-height: 220px; overflow-y: auto; border: 0; outline: 0; background: transparent; color: var(--creation-text); font-size: 14px; line-height: 1.65; resize: none; } .creation-chat-mention-editor:empty::before { color: var(--creation-muted); opacity: .72; } .creation-chat-mention-editor[aria-disabled="true"], .creation-chat-mention-editor:disabled { cursor: wait; opacity: .55; } .creation-chat-dock { display: flex; min-height: 46px; align-items: center; justify-content: space-between; gap: 12px; padding: 4px 10px 10px 14px; } .creation-chat-controls { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: 2px; } .creation-chat-control, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { display: inline-flex; height: 30px !important; min-width: 0; align-items: center; gap: 5px; border: 0 !important; border-radius: 7px !important; background: transparent !important; color: var(--creation-muted) !important; padding: 0 8px !important; font-size: 11px; font-weight: 500; box-shadow: none !important; transition: color 140ms ease, background-color 140ms ease, transform 140ms var(--motion-ease-out); } .creation-chat-control:hover, .creation-chat-control[aria-expanded="true"], .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border: 0 !important; background: rgba(255, 255, 255, .075) !important; color: var(--creation-text) !important; transform: none; } .creation-chat-control.is-mode { background: rgba(255, 255, 255, .075) !important; color: var(--creation-text) !important; } .creation-chat-control > svg { width: 14px; height: 14px; } .creation-chat-control > svg:last-child { width: 12px; height: 12px; color: var(--creation-faint); } .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { width: min(180px, 30vw) !important; justify-content: flex-start; } .creation-chat-composer .creation-model-picker .canvas-model-picker-trigger-icon { width: 16px; height: 16px; border-radius: 4px; background: transparent !important; } html:not(.dark) .creation-chat-control, html:not(.dark) .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { background: transparent !important; color: var(--creation-muted) !important; } html:not(.dark) .creation-chat-control.is-mode, html:not(.dark) .creation-chat-control:hover, html:not(.dark) .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover { background: rgba(29, 33, 37, .06) !important; color: var(--creation-text) !important; } .creation-chat-submit { display: grid; width: 32px; height: 32px; flex: 0 0 auto; place-items: center; border: 0; border-radius: 9px; background: #f3f4f5; color: #1b1d21; cursor: pointer; transition: transform 140ms var(--motion-ease-out), background-color 140ms ease; } .creation-chat-submit:hover:not(:disabled) { background: #fff; transform: translateY(-1px); } .creation-chat-submit:disabled { background: #292d34; color: #606771; cursor: not-allowed; } .creation-chat-submit.is-stopping { background: #d06060; color: #fff; } html:not(.dark) .creation-chat-submit { background: #202328; color: #fff; } html:not(.dark) .creation-chat-submit:hover:not(:disabled) { background: #2d3139; } .creation-control-popover-surface, .creation-model-picker-surface { overflow: hidden; border: 0 !important; border-radius: 10px !important; background: rgba(30, 32, 37, .92) !important; box-shadow: 0 18px 44px rgba(0, 0, 0, .3) !important; backdrop-filter: blur(18px) saturate(120%); -webkit-backdrop-filter: blur(18px) saturate(120%); } .creation-control-popover-content, .creation-model-picker-surface .ant-popover-inner-content { padding: 0 !important; } .creation-parameter-menu { width: 274px; padding: 10px 12px 12px; } .creation-parameter-section { display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: start; gap: 8px; } .creation-parameter-section + .creation-parameter-section { margin-top: 12px; } .creation-parameter-section h3 { margin: 7px 0 0; color: var(--creation-muted); font-size: 10px; font-weight: 500; } .creation-choice-grid { display: grid; gap: 2px; } .creation-choice-grid.is-ratio { grid-template-columns: repeat(6, minmax(0, 1fr)); } .creation-choice-grid.is-resolution { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-choice-grid.is-quality, .creation-choice-grid.is-count { grid-template-columns: repeat(4, minmax(0, 1fr)); } .creation-choice-grid button { display: flex; min-width: 0; min-height: 36px; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: 0; border-radius: 5px; background: transparent; color: #989ea7; font-size: 10px; line-height: 1; transition: color 120ms ease, background-color 120ms ease; } .creation-choice-grid button:hover { background: rgba(255, 255, 255, .06); color: #e9ebed; } .creation-choice-grid button.is-selected { background: rgba(255, 255, 255, .11); color: #fff; } .creation-choice-grid button small { display: none; } .creation-choice-grid.is-resolution button, .creation-choice-grid.is-count button { min-height: 30px; font-size: 11px; } .creation-choice-grid .creation-ratio-preview { width: 20px; height: 13px; } .creation-choice-grid .creation-ratio-preview > span { border-width: 1px; border-radius: 2px; } .creation-duration-menu { display: flex; width: 212px; align-items: center; gap: 10px; padding: 10px 12px; } .creation-duration-menu > div:first-child { display: flex; flex: 0 0 auto; flex-direction: column; gap: 2px; color: var(--creation-muted); font-size: 10px; } .creation-duration-menu strong { color: #f1f2f3; font-size: 12px; font-weight: 600; } .creation-range-wrap { min-width: 0; flex: 1; } .creation-range-wrap input { height: 14px; } .creation-range-wrap input::-webkit-slider-runnable-track { height: 3px; } .creation-range-wrap input::-webkit-slider-thumb { width: 6px; height: 14px; margin-top: -5px; border-radius: 4px; } .creation-range-wrap input::-moz-range-track { height: 3px; } .creation-range-wrap input::-moz-range-thumb { width: 6px; height: 14px; border-radius: 4px; } .creation-range-labels { margin-top: 2px; color: var(--creation-faint); font-size: 9px; } .creation-mode-picker-menu { width: 158px; padding: 5px; color: #f0f1f2; } .creation-mode-picker-menu button { display: flex; width: 100%; height: 34px; align-items: center; gap: 8px; border: 0; border-radius: 6px; background: transparent; color: inherit; padding: 0 7px; font-size: 11px; text-align: left; } .creation-mode-picker-menu button:hover, .creation-mode-picker-menu button.is-selected { background: rgba(255, 255, 255, .075); } .creation-mode-picker-menu button > svg { width: 13px; height: 13px; margin-left: auto; } .creation-menu-icon { display: grid; width: 19px; height: 19px; place-items: center; border: 0; border-radius: 5px; background: rgba(255, 255, 255, .07); } .creation-menu-icon svg { width: 12px; height: 12px; } .creation-model-picker-menu { width: min(332px, calc(100vw - 24px)) !important; max-height: min(420px, calc(100vh - 24px)); padding: 7px !important; background: transparent !important; color: #f0f1f2 !important; } .creation-model-picker-heading { display: flex; align-items: center; gap: 6px; padding: 4px 7px 7px; color: #8e949d; font-size: 10px; } .creation-model-picker-heading strong { color: #e6e8eb; font-weight: 500; } .creation-model-picker-menu .canvas-model-picker-group-label { padding: 6px 7px 5px; font-size: 10px; } .creation-model-picker-menu .canvas-model-picker-option { min-height: 43px; border-radius: 6px; padding: 5px 7px; } .creation-model-picker-menu .canvas-model-picker-option:hover { transform: none; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child { gap: 8px; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:first-child { width: 26px; height: 26px; border: 0; border-radius: 5px; background: rgba(255, 255, 255, .07) !important; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:nth-child(2) > span:first-child { font-size: 11px; } .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:nth-child(2) > span:nth-child(2) { margin-top: 3px; font-size: 9px; } .creation-thread-stage { width: min(820px, calc(100% - 48px)); padding: 44px 0 22px; } .creation-thread-composer { width: min(820px, calc(100% - 48px)); padding: 8px 0 16px; } .creation-chat-composer.is-thread .creation-chat-writing-surface { min-height: 70px; padding: 12px 14px 4px; } .creation-chat-composer.is-thread .creation-chat-editor textarea { min-height: 48px; } .creation-user-message { border-radius: 13px 13px 4px 13px; background: rgba(255, 255, 255, .07); box-shadow: none; } .creation-assistant-message { margin-bottom: 36px; } .creation-message-mark { width: 28px; height: 28px; border-radius: 8px; background: #f0f1f2; color: #1c1e22; } .creation-new-button { border: 0; border-radius: 8px; background: rgba(255, 255, 255, .06); box-shadow: none; } .creation-new-button:hover { border: 0; background: rgba(255, 255, 255, .12); } html:not(.dark) .creation-control-popover-surface, html:not(.dark) .creation-model-picker-surface { background: rgba(255, 255, 255, .94) !important; box-shadow: 0 16px 38px rgba(28, 32, 37, .12) !important; } html:not(.dark) .creation-parameter-section h3, html:not(.dark) .creation-duration-menu > div:first-child, html:not(.dark) .creation-mode-picker-menu, html:not(.dark) .creation-model-picker-menu { color: #727980 !important; } html:not(.dark) .creation-choice-grid button { color: #737a82; } html:not(.dark) .creation-choice-grid button:hover { background: rgba(28, 32, 37, .06); color: #25292e; } html:not(.dark) .creation-choice-grid button.is-selected { background: rgba(28, 32, 37, .09); color: #20242a; } html:not(.dark) .creation-duration-menu strong, html:not(.dark) .creation-model-picker-heading strong { color: #20242a; } html:not(.dark) .creation-mode-picker-menu button:hover, html:not(.dark) .creation-mode-picker-menu button.is-selected, html:not(.dark) .creation-model-picker-menu .canvas-model-picker-option > span:first-child > span:first-child { background: rgba(28, 32, 37, .06) !important; } @keyframes creation-composer-arrive { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @media (max-width: 680px) { .creation-empty-workspace { width: calc(100% - 28px); padding-bottom: 8vh; } .creation-chat-writing-surface, .creation-chat-composer.is-empty .creation-chat-writing-surface { grid-template-columns: 30px minmax(0, 1fr); gap: 8px; padding: 14px 12px 5px; } .creation-chat-dock { align-items: flex-end; padding: 4px 7px 8px 8px; } .creation-chat-controls { max-width: calc(100% - 38px); } .creation-chat-control, .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { height: 29px !important; padding: 0 6px !important; font-size: 10px; } .creation-chat-composer .creation-model-picker.canvas-composer-model-picker { width: min(136px, 42vw) !important; } .creation-thread-stage, .creation-thread-composer { width: calc(100% - 28px); } .creation-parameter-menu { width: min(274px, calc(100vw - 24px)); } } @media (prefers-reduced-motion: reduce) { .creation-empty-composer, .creation-chat-reference, .creation-chat-submit { animation: none; transition: none; } } /* 创作入口与空间导航在同一块画布上,避免视觉断层。 */ .director-sequencer { position: relative; color: rgba(255, 255, 255, 0.86); font-size: var(--fs-caption); } .director-viewport-dock { position: absolute; z-index: var(--z-toolbar); bottom: var(--director-dock-bottom); left: 50%; display: flex; max-width: calc(100% - var(--space-6)); align-items: center; gap: var(--space-half); padding: var(--space-1); overflow-x: auto; border: var(--stroke-1) solid var(--director-sequencer-border); border-radius: var(--r-lg); background: var(--director-dock-surface); box-shadow: var(--shadow-xl); color: var(--director-dock-fg); transform: translateX(-50%); backdrop-filter: blur(var(--space-4)); } .director-viewport-dock-button { display: grid; width: var(--director-dock-button-size); height: var(--director-dock-button-size); flex: 0 0 var(--director-dock-button-size); place-items: center; border-radius: var(--r-md); transition: background var(--motion-dur-fast) var(--motion-ease-out), color var(--motion-dur-fast) var(--motion-ease-out), transform var(--motion-dur-fast) var(--motion-ease-out); } .director-viewport-dock-button > svg { width: var(--space-4); height: var(--space-4); } .director-viewport-dock-button:hover { background: var(--director-control-hover); color: var(--director-dock-fg-strong); } .director-viewport-dock-button:active { transform: translateY(1px); } .director-viewport-dock-button.is-active { background: var(--director-dock-active-surface); color: var(--director-dock-fg-strong); box-shadow: inset 0 0 0 var(--stroke-1) var(--director-sequencer-border); } .director-viewport-dock-divider { width: var(--stroke-1); height: var(--space-5); flex: 0 0 var(--stroke-1); margin: 0 var(--space-half); background: var(--director-sequencer-border); } .director-actor-colors { display: flex; min-width: 0; align-items: center; gap: var(--space-1-half); } .director-actor-color { width: var(--director-color-swatch-size); height: var(--director-color-swatch-size); flex: 0 0 var(--director-color-swatch-size); border: var(--stroke-1) solid var(--director-sequencer-border); border-radius: var(--r-full); box-shadow: inset 0 0 0 var(--stroke-1) var(--director-swatch-inset); } .director-actor-color.is-active { outline: var(--stroke-2) solid var(--workspace-accent); outline-offset: var(--space-half); } .director-pose-section { display: grid; gap: var(--space-2); } .director-inspector-section-title { display: flex; align-items: center; justify-content: space-between; color: var(--cn-muted); font-size: var(--fs-label); } .director-inspector-section-title > span:last-child { color: var(--workspace-accent); } .director-pose-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-1); } .director-pose-button { min-width: 0; height: var(--director-pose-button-height); padding: 0 var(--space-1); overflow: hidden; border: var(--stroke-1) solid var(--cn-stroke); border-radius: var(--r-sm); color: var(--cn-muted); font-size: var(--fs-tiny); text-overflow: ellipsis; white-space: nowrap; transition: border-color var(--motion-dur-fast) var(--motion-ease-out), background var(--motion-dur-fast) var(--motion-ease-out), color var(--motion-dur-fast) var(--motion-ease-out); } .director-pose-button:hover { border-color: var(--workspace-accent); color: var(--cn-text); } .director-pose-button.is-active { border-color: var(--workspace-accent); background: var(--workspace-accent-soft); color: var(--workspace-accent); } @media (prefers-reduced-motion: reduce) { .director-viewport-dock-button, .director-pose-button { transition: none; } } .director-sequencer-resizer { position: absolute; z-index: 2; inset: -4px 0 auto; height: 8px; cursor: ns-resize; } .director-sequencer-resizer::after { content: ""; position: absolute; top: 3px; left: 50%; width: 44px; height: 2px; border-radius: var(--r-full); background: rgba(255, 255, 255, 0.28); transform: translateX(-50%); opacity: 0; transition: opacity var(--motion-dur-fast) var(--motion-ease-out); } .director-sequencer:hover .director-sequencer-resizer::after, .director-sequencer-resizer:focus-visible::after { opacity: 1; } .director-sequencer-body { position: relative; height: calc(100% - 40px); min-height: 0; } .director-sequencer-grid { position: relative; display: grid; min-width: calc(var(--director-sequencer-base-width) * var(--director-sequencer-track-scale, 1)); grid-template-columns: var(--director-sequencer-label-width) minmax(640px, 1fr); } .director-sequencer-global-playhead { position: absolute; z-index: 1; top: 28px; bottom: 0; right: 0; left: var(--director-sequencer-label-width); pointer-events: none; } .director-sequencer-global-playhead > i { position: absolute; top: 0; bottom: 0; width: 1px; background: #f0b36a; } .director-sequencer-label, .director-sequencer-track { min-width: 0; height: var(--director-sequencer-row-height); border-bottom: 1px solid var(--director-sequencer-border); } .director-sequencer-row { display: contents; } .director-sequencer-label { display: flex; align-items: center; gap: var(--space-2); width: var(--director-sequencer-label-width); padding: 0 var(--space-3); color: rgba(255, 255, 255, 0.64); text-align: left; white-space: nowrap; transition: background var(--motion-dur-fast) var(--motion-ease-out), color var(--motion-dur-fast) var(--motion-ease-out); } .director-sequencer-label:hover, .director-sequencer-row.is-selected > .director-sequencer-label { background: rgba(255, 255, 255, 0.075); color: rgba(255, 255, 255, 0.96); } .director-sequencer-label.is-indent { padding-left: var(--space-6); color: rgba(255, 255, 255, 0.46); } .director-sequencer-ruler-label, .director-sequencer-ruler { height: 28px; border-bottom-color: var(--director-sequencer-border); background: var(--director-sequencer-surface-raised); } .director-sequencer-ruler-label { padding-left: var(--space-3); color: rgba(255, 255, 255, 0.42); font-size: var(--fs-micro); letter-spacing: 0.06em; text-transform: uppercase; } .director-sequencer-ruler { position: relative; cursor: ew-resize; background-image: repeating-linear-gradient(to right, transparent 0, transparent calc(20% - 1px), var(--director-sequencer-grid) 20%); } .director-sequencer-tick { position: absolute; top: var(--space-2); color: rgba(255, 255, 255, 0.38); font-size: var(--fs-micro); transform: translateX(-50%); } .director-sequencer-playhead { position: absolute; top: 0; bottom: 0; width: 1px; background: #f0b36a; pointer-events: none; } .director-sequencer-track { position: relative; overflow: hidden; background-image: repeating-linear-gradient(to right, transparent 0, transparent calc(20% - 1px), var(--director-sequencer-grid) 20%); } .director-sequencer-track-content { position: absolute; inset: 0; } .director-sequencer-key { position: absolute; top: 50%; width: 8px; height: 8px; border-radius: var(--r-xs); box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.38); transform: translate(-50%, -50%) rotate(45deg); } .director-sequencer-clip { position: absolute; top: 5px; bottom: 5px; display: flex; align-items: center; min-width: 30px; padding: 0 var(--space-2); overflow: hidden; border: 1px solid; border-radius: var(--r-xs); font-size: var(--fs-micro); } .director-sequencer-transport, .director-sequencer-icon, .director-sequencer-tool { display: inline-flex; align-items: center; justify-content: center; height: var(--space-8); border-radius: var(--r-sm); color: rgba(255, 255, 255, 0.62); transition: background var(--motion-dur-fast) var(--motion-ease-out), color var(--motion-dur-fast) var(--motion-ease-out); } .director-sequencer-transport, .director-sequencer-icon { width: var(--space-8); } .director-sequencer-tool { gap: var(--space-1); padding: 0 var(--space-2); font-size: var(--fs-micro); } .director-sequencer-shot-select { width: var(--director-sequencer-shot-select-width); height: var(--space-8); padding: 0 var(--space-2); overflow: hidden; border: 1px solid var(--director-sequencer-border); border-radius: var(--r-sm); background: var(--director-sequencer-surface-raised); color: rgba(255, 255, 255, 0.72); font-size: var(--fs-micro); text-overflow: ellipsis; white-space: nowrap; } .director-sequencer-transport:hover, .director-sequencer-icon:hover, .director-sequencer-tool:hover, .director-sequencer-icon.is-active, .director-sequencer-tool.is-active { background: rgba(255, 255, 255, 0.1); color: #ffffff; } .app-workspace-shell.is-creation-workspace, .app-workspace-shell.is-creation-workspace .app-workspace-sidebar, .app-workspace-shell.is-creation-workspace .app-workspace-stage { background: var(--workspace-page) !important; } html:not(.dark) .app-workspace-shell.is-creation-workspace, html:not(.dark) .app-workspace-shell.is-creation-workspace .app-workspace-sidebar, html:not(.dark) .app-workspace-shell.is-creation-workspace .app-workspace-stage { background: var(--workspace-page) !important; } .creation-empty-workspace { display: flex; flex: 1 0 auto; flex-direction: column; align-items: center; justify-content: center; } .creation-chat-intro { position: relative; display: flex; flex-direction: column; align-items: center; margin: 0 0 24px; text-align: center; animation: creation-intro-arrive var(--motion-dur-slow-calc) var(--motion-ease-out) both; } .creation-chat-intro p { margin: 0 0 7px; color: var(--creation-faint); font-size: 10px; font-weight: 500; letter-spacing: .12em; } .creation-chat-intro h1 { margin: 0; color: var(--creation-text); font-size: 24px; font-weight: 580; line-height: 1.3; letter-spacing: 0; } .creation-intro-signal { position: absolute; top: -12px; left: calc(50% - 50px); width: 16px; height: 1px; background: linear-gradient(90deg, transparent, rgba(227, 231, 235, .88), transparent); animation: creation-intro-signal 2.8s var(--motion-ease-out) infinite; } .creation-chat-reference.is-paper { display: flex; width: 58px; height: 74px; flex-direction: column; align-items: center; align-self: start; justify-content: center; gap: 7px; border: 1px dashed rgba(255, 255, 255, .09); border-radius: 4px; background: #242730; color: #9097a1; transform: rotate(-7deg); } .creation-chat-reference.is-paper svg { width: 21px; height: 21px; } .creation-chat-reference.is-paper span { display: block; font-size: 10px; font-weight: 520; line-height: 1; white-space: nowrap; } .creation-chat-reference.is-paper:hover:not(:disabled) { background: #2b2e37; color: #f1f3f5; transform: rotate(-4deg) translateY(-2px); } .creation-chat-reference.is-paper:active:not(:disabled) { transform: rotate(-4deg) translateY(0) scale(.97); } .creation-chat-reference.is-paper:focus-visible { outline: 2px solid color-mix(in srgb, #83d6ec 68%, transparent); outline-offset: 3px; } .creation-chat-composer .creation-chat-writing-surface { grid-template-columns: 62px minmax(0, 1fr); gap: 16px; } .creation-custom-value { display: flex; height: 28px; align-items: center; gap: 6px; margin-top: 5px; padding: 0 7px; border-radius: 5px; background: rgba(255, 255, 255, .045); color: var(--creation-faint); font-size: 10px; } .creation-custom-value span { flex: 0 0 auto; } .creation-custom-value input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: #edf0f2; font-size: 11px; line-height: 1; } .creation-custom-value input::-webkit-inner-spin-button, .creation-custom-value input::-webkit-outer-spin-button { margin: 0; } .creation-custom-value em { font-style: normal; } .creation-duration-menu { display: grid; width: 224px; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 7px 8px; padding: 10px 11px; } .creation-duration-heading { display: flex; flex-direction: column; gap: 2px; color: var(--creation-muted); font-size: 10px; } .creation-duration-heading strong { color: #f1f2f3; font-size: 12px; font-weight: 600; } .creation-duration-choices { display: flex; min-width: 0; align-items: center; gap: 2px; } .creation-duration-choices button { height: 26px; min-width: 0; flex: 1; border: 0; border-radius: 5px; background: transparent; color: #969ca5; font-size: 10px; transition: color 120ms ease, background-color 120ms ease; } .creation-duration-choices button:hover { background: rgba(255, 255, 255, .06); color: #eef0f2; } .creation-duration-choices button.is-selected { background: rgba(255, 255, 255, .11); color: #fff; } .creation-custom-value.is-duration { grid-column: 2; width: 100%; margin-top: 0; } html:not(.dark) .creation-chat-reference.is-paper { border-color: rgba(28, 32, 37, .10); background: #e9ebed; color: #626b75; } html:not(.dark) .creation-chat-reference.is-paper:hover:not(:disabled) { background: #dfe3e6; color: #1c2025; } html:not(.dark) .creation-custom-value { background: rgba(28, 32, 37, .055); } html:not(.dark) .creation-custom-value input, html:not(.dark) .creation-duration-heading strong { color: #23272c; } html:not(.dark) .creation-duration-choices button:hover { background: rgba(28, 32, 37, .06); color: #23272c; } html:not(.dark) .creation-duration-choices button.is-selected { background: rgba(28, 32, 37, .10); color: #23272c; } @keyframes creation-intro-arrive { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } @keyframes creation-intro-signal { 0%, 100% { opacity: .3; transform: translateX(-14px) scaleX(.55); } 50% { opacity: 1; transform: translateX(14px) scaleX(1); } } @media (prefers-reduced-motion: reduce) { .creation-chat-intro, .creation-intro-signal { animation: none; } } /* 创作对话使用同一套 Composer 规格;空态仅改变位置,不改变组件密度。 */ .creation-home .creation-chat-composer { border-radius: 18px; } .creation-home .creation-chat-writing-surface, .creation-home .creation-chat-composer.is-empty .creation-chat-writing-surface, .creation-home .creation-chat-composer.is-thread .creation-chat-writing-surface { min-height: 140px; padding: 18px 20px 8px; } .creation-home .creation-chat-composer.is-empty .creation-chat-writing-surface, .creation-home .creation-chat-composer.is-thread .creation-chat-writing-surface { grid-template-columns: 62px minmax(0, 1fr); gap: 16px; } .creation-home .creation-chat-editor textarea, .creation-home .creation-chat-composer.is-thread .creation-chat-editor textarea, .creation-home .creation-chat-mention-container, .creation-home .creation-chat-mention-editor { min-height: 76px; } .creation-home .creation-chat-dock { min-height: 48px; padding: 4px 12px 12px 16px; } .creation-home .creation-chat-control, .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker, .creation-home .creation-chat-control.is-mode { border: 0 !important; background: transparent !important; box-shadow: none !important; color: var(--creation-muted) !important; } .creation-home .creation-chat-control:hover, .creation-home .creation-chat-control[aria-expanded="true"], .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover, .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border: 0 !important; background: rgba(255, 255, 255, .065) !important; color: var(--creation-text) !important; transform: none; } .creation-home .creation-chat-control.is-mode { color: var(--creation-text) !important; } .creation-home .creation-chat-control.is-mode > svg:first-child { color: #81d3e6; } html:not(.dark) .creation-home .creation-chat-control:hover, html:not(.dark) .creation-home .creation-chat-control[aria-expanded="true"], html:not(.dark) .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover { background: rgba(28, 32, 37, .06) !important; } .creation-chat-intro h1 span { display: inline-block; margin: 0 4px; color: #83d6ec; font-size: 1.25em; font-weight: 760; text-shadow: 0 0 24px rgba(89, 202, 232, .24); animation: creation-intro-emphasis 2.6s var(--motion-ease-out) infinite; } .creation-thread-stage, .creation-thread-composer { width: min(1068px, calc(100% - 56px)); } .creation-thread-stage { padding: 52px 0 24px; } .creation-thread-composer { padding: 10px 0 18px; } .creation-results { width: 100%; } .creation-user-message { max-width: min(62%, 640px); margin: 0 0 42px auto; border-radius: 14px 14px 5px 14px; background: rgba(255, 255, 255, .07); padding: 11px 14px; color: var(--creation-text); font-size: 14px; line-height: 1.7; white-space: pre-wrap; } .creation-user-message-references { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; } .creation-user-message-reference { display: inline-flex; min-width: 0; max-width: 180px; height: 25px; align-items: center; gap: 5px; border-radius: 6px; background: rgba(255, 255, 255, .075); padding: 0 7px; color: var(--creation-muted); font-size: 10px; line-height: 1; } .creation-user-message-reference img { width: 17px; height: 17px; flex: 0 0 auto; border-radius: 4px; object-fit: cover; } .creation-user-message-reference svg { width: 12px; height: 12px; flex: 0 0 auto; } .creation-user-message-reference span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } html:not(.dark) .creation-user-message-reference { background: rgba(28, 32, 37, .07); } .creation-user-message-attachments button { position: relative; width: 44px; height: 44px; flex: 0 0 auto; overflow: hidden; border: 0; border-radius: 7px; background: transparent; padding: 0; } .creation-user-message-attachments button:focus-visible { outline: 2px solid var(--creation-text); outline-offset: 2px; } .creation-user-message-attachments button > span { position: absolute; right: 3px; bottom: 3px; display: grid; width: 17px; height: 17px; place-items: center; border-radius: 5px; background: rgba(0, 0, 0, .68); color: #fff; opacity: 0; transition: opacity 140ms ease; } .creation-user-message-attachments button:hover > span, .creation-user-message-attachments button:focus-visible > span { opacity: 1; } .creation-user-message-attachments button > span svg { width: 10px; height: 10px; } .creation-assistant-message { max-width: 900px; margin: 0 0 48px; } .creation-message-heading { gap: 7px; color: var(--creation-faint); font-size: 11px; } .creation-message-mark { width: 26px; height: 26px; border-radius: 8px; background: #eff1f3; color: #202329; } .creation-message-mark svg { width: 15px; height: 15px; } .creation-message-model { max-width: 300px; color: var(--creation-faint); } .creation-message-state { border: 0; border-radius: 5px; background: rgba(255, 255, 255, .06); padding: 2px 5px; color: var(--creation-muted); font-size: 10px; } .creation-message-content { max-width: 800px; padding: 14px 0 0 34px; color: var(--creation-text); font-size: 15px; line-height: 1.8; } .creation-message-content p { margin: 0 0 12px; } .creation-message-content p:last-child { margin-bottom: 0; } .creation-message-content h1, .creation-message-content h2, .creation-message-content h3 { margin: 20px 0 8px; color: var(--creation-text); font-weight: 650; line-height: 1.35; } .creation-message-content h1 { font-size: 21px; } .creation-message-content h2 { font-size: 18px; } .creation-message-content h3 { font-size: 16px; } .creation-message-content ul, .creation-message-content ol { margin: 10px 0; padding-left: 22px; } .creation-message-content li + li { margin-top: 4px; } .creation-message-content blockquote { margin: 14px 0; border-left: 2px solid rgba(131, 214, 236, .65); padding: 2px 0 2px 12px; color: var(--creation-muted); } .creation-message-content code { border-radius: 4px; background: rgba(255, 255, 255, .08); padding: 2px 5px; font-size: .88em; } .creation-message-content pre { overflow-x: auto; border-radius: 8px; background: #181b20; padding: 12px 14px; } .creation-message-content pre code { background: transparent; padding: 0; } .creation-message-content a { color: #83d6ec; text-decoration: none; } .creation-message-error { display: flex; max-width: 760px; align-items: center; gap: 10px; padding: 16px 0 0 34px; color: #ee8585; font-size: 13px; line-height: 1.6; } .creation-message-error button { display: inline-flex; height: 28px; align-items: center; gap: 5px; border: 0; border-radius: 6px; background: rgba(226, 96, 96, .12); color: #ef8b8b; padding: 0 8px; font-size: 11px; } .creation-message-error button:hover { background: rgba(226, 96, 96, .2); } .creation-media-pending, .creation-media-empty { display: inline-flex; min-height: 42px; align-items: center; gap: 8px; margin: 14px 0 0 34px; border: 0; border-radius: 8px; background: rgba(255, 255, 255, .055); padding: 0 12px; color: var(--creation-muted); font-size: 12px; } .creation-media-empty button { border: 0; background: transparent; color: #83d6ec; font-size: 12px; } .creation-media-result { max-width: 860px; padding: 14px 0 0 34px; } .creation-image-result-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .creation-image-result { position: relative; aspect-ratio: 1; overflow: hidden; border: 0; border-radius: 9px; background: #181a1e; } .creation-image-result img { width: 100%; height: 100%; object-fit: cover; transition: transform 220ms var(--motion-ease-out); } .creation-image-result span, .creation-video-result > span { position: absolute; right: 8px; bottom: 8px; display: grid; width: 27px; height: 27px; place-items: center; border-radius: 7px; background: rgba(13, 14, 16, .62); color: #fff; opacity: 0; transition: opacity 160ms ease; backdrop-filter: blur(8px); } .creation-image-result span svg, .creation-video-result span svg { width: 14px; height: 14px; } .creation-image-result:hover img { transform: scale(1.025); } .creation-image-result:hover span, .creation-video-result:hover > span { opacity: 1; } .creation-video-result { position: relative; display: block; width: min(760px, 100%); aspect-ratio: 16 / 9; overflow: hidden; border: 0; border-radius: 10px; background: #121316; } .creation-video-result > span { display: inline-flex; width: auto; height: 30px; align-items: center; gap: 5px; padding: 0 9px; font-size: 11px; } .creation-media-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 10px; color: var(--creation-faint); font-size: 11px; } .creation-media-actions > span { margin-right: 2px; } .creation-media-actions a, .creation-media-actions button { display: inline-flex; align-items: center; gap: 4px; border: 0; background: transparent; color: var(--creation-muted); font-size: 11px; text-decoration: none; } .creation-media-actions a:hover, .creation-media-actions button:hover { color: var(--creation-text); } .creation-media-actions svg { width: 13px; height: 13px; } .creation-media-preview-modal .ant-modal-content { overflow: hidden; border: 0; border-radius: 12px; background: #111215; padding: 0; } .creation-media-preview-modal .ant-modal-close { color: #fff; } .creation-media-preview-image, .creation-media-preview-video { display: block; max-width: 100%; max-height: 82vh; margin: 0 auto; object-fit: contain; } .creation-media-preview-video { width: 100%; background: #050505; } html:not(.dark) .creation-user-message { background: rgba(28, 32, 37, .07); } html:not(.dark) .creation-message-content pre, html:not(.dark) .creation-video-result, html:not(.dark) .creation-media-preview-modal .ant-modal-content { background: #1f2227; } html:not(.dark) .creation-message-content code { background: rgba(28, 32, 37, .08); } @keyframes creation-intro-emphasis { 0%, 100% { transform: translateY(0); filter: brightness(1); } 45% { transform: translateY(-1px); filter: brightness(1.14); } } @media (max-width: 800px) { .creation-home .creation-chat-writing-surface, .creation-home .creation-chat-composer.is-empty .creation-chat-writing-surface, .creation-home .creation-chat-composer.is-thread .creation-chat-writing-surface { min-height: 96px; padding: 14px 13px 6px; } .creation-home .creation-chat-editor textarea, .creation-home .creation-chat-composer.is-thread .creation-chat-editor textarea, .creation-home .creation-chat-mention-container, .creation-home .creation-chat-mention-editor { min-height: 64px; } .creation-thread-stage, .creation-thread-composer { width: calc(100% - 28px); } .creation-thread-stage { padding-top: 36px; } .creation-user-message { max-width: 78%; } .creation-assistant-message { max-width: 100%; } .creation-message-content, .creation-message-error, .creation-media-result { padding-left: 0; } .creation-media-pending, .creation-media-empty { margin-left: 0; } .creation-image-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (prefers-reduced-motion: reduce) { .creation-chat-intro h1 span { animation: none; } } /* 旧创作规则位于 utilities 层且使用 !important;必须在同层覆盖。 */ @layer utilities { .creation-home .creation-chat-control, .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker, .creation-home .creation-chat-control.is-mode { border: 0 !important; background: transparent !important; box-shadow: none !important; color: var(--creation-muted) !important; } .creation-home .creation-chat-control:hover, .creation-home .creation-chat-control[aria-expanded="true"], .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker:hover, .creation-home .creation-chat-composer .creation-model-picker.canvas-composer-model-picker[aria-expanded="true"] { border: 0 !important; background: rgba(255, 255, 255, .065) !important; color: var(--creation-text) !important; transform: none; } .creation-home .creation-chat-control.is-mode { color: var(--creation-text) !important; } .creation-parameter-menu { width: 304px; padding: 13px 14px 14px; } .creation-parameter-section { display: block; margin: 0; } .creation-parameter-section + .creation-parameter-section { margin-top: 16px; } .creation-parameter-section h3 { margin: 0 0 8px; color: var(--creation-muted); font-size: 11px; font-weight: 500; } .creation-parameter-content { min-width: 0; } .creation-choice-grid { gap: 3px; } .creation-choice-grid.is-ratio { grid-template-columns: repeat(6, minmax(0, 1fr)); } .creation-choice-grid button { min-height: 46px; border: 0; border-radius: 6px; background: transparent; color: #959ca5; font-size: 10px; } .creation-choice-grid button:hover { background: rgba(255, 255, 255, .055); color: #edf0f2; } .creation-choice-grid button.is-selected { background: rgba(255, 255, 255, .12); color: #fff; } .creation-choice-grid .creation-ratio-preview { width: 25px; height: 17px; } .creation-choice-grid .creation-ratio-preview > span { border-width: 1px; } .creation-choice-grid.is-resolution button, .creation-choice-grid.is-count button { min-height: 32px; font-size: 11px; } .creation-custom-trigger { display: inline-flex; height: 27px; align-items: center; border: 0; background: transparent; color: #8bcfe0; padding: 0 4px; font-size: 10px; } .creation-custom-trigger:hover { color: #c4edf6; } .creation-custom-value { display: flex; width: 100%; height: 32px; align-items: center; gap: 7px; margin-top: 7px; border-radius: 6px; background: rgba(255, 255, 255, .055); padding: 0 9px; color: var(--creation-muted); font-size: 11px; } .creation-custom-value input { min-width: 0; border: 0; outline: 0; background: transparent; color: #edf0f2; font-size: 12px; } .creation-duration-menu { display: block; width: 270px; padding: 13px 14px 14px; } .creation-duration-heading { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 8px; color: var(--creation-muted); font-size: 11px; } .creation-duration-heading strong { color: #f1f3f4; font-size: 13px; font-weight: 600; } .creation-duration-choices { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 3px; } .creation-duration-choices button { height: 30px; border: 0; border-radius: 6px; background: transparent; color: #969ca5; font-size: 11px; } .creation-duration-choices button:hover { background: rgba(255, 255, 255, .055); color: #eff1f2; } .creation-duration-choices button.is-selected { background: rgba(255, 255, 255, .12); color: #fff; } .creation-custom-value.is-duration { width: 100%; grid-column: auto; margin-top: 7px; } } /* 解除旧版参数侧栏 Grid,Popover 必须是纵向信息分组。 */ .creation-parameter-section { display: block !important; grid-template-columns: none !important; gap: 0 !important; } .creation-parameter-section h3 { margin: 0 0 8px !important; } .creation-parameter-content { min-width: 0; } .creation-choice-grid { gap: 3px; } .creation-choice-grid.is-ratio { grid-template-columns: repeat(6, minmax(0, 1fr)); } .creation-choice-grid button { min-height: 46px; } .creation-choice-grid.is-resolution button, .creation-choice-grid.is-count button { min-height: 32px; } .creation-duration-menu { display: block !important; width: 270px !important; grid-template-columns: none !important; padding: 13px 14px 14px !important; } .creation-duration-heading { display: flex !important; flex-direction: row !important; align-items: baseline; justify-content: space-between; margin-bottom: 8px; } .creation-duration-choices { display: grid !important; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 3px; } .creation-duration-choices button { height: 30px; } .creation-custom-value.is-duration { grid-column: auto !important; width: 100%; margin-top: 7px; } /* 创作参数是即时选择,不使用后台式表单控件。 */ .creation-control-popover-surface { border: 0 !important; border-radius: 12px !important; background: rgba(25, 27, 31, .96) !important; box-shadow: 0 20px 48px rgba(0, 0, 0, .34) !important; } .creation-parameter-menu { width: 288px !important; padding: 12px !important; } .creation-parameter-section, .creation-parameter-section + .creation-parameter-section { display: block !important; margin: 0 !important; } .creation-parameter-section + .creation-parameter-section { margin-top: 14px !important; } .creation-parameter-section > header, .creation-duration-heading { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: space-between; min-height: 18px; margin: 0 2px 7px !important; } .creation-parameter-section h3, .creation-duration-heading > span { margin: 0 !important; color: var(--creation-muted) !important; font-size: 11px !important; font-weight: 500 !important; letter-spacing: 0 !important; } .creation-parameter-section > header > span, .creation-duration-heading strong { color: var(--creation-text) !important; font-size: 11px !important; font-weight: 600 !important; } .creation-choice-grid { gap: 3px !important; } .creation-choice-grid.is-ratio { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } .creation-choice-grid.is-resolution { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } .creation-choice-grid.is-ratio button, .creation-choice-grid.is-resolution button, .creation-choice-grid.is-quality button, .creation-choice-grid.is-count button { display: flex !important; min-height: 34px !important; align-items: center !important; justify-content: center !important; gap: 7px; border: 0 !important; border-radius: 6px !important; background: transparent !important; color: var(--creation-muted) !important; font-size: 11px !important; font-weight: 500; transition: background-color 160ms var(--motion-ease-out), color 160ms var(--motion-ease-out), transform 160ms var(--motion-ease-out) !important; } .creation-choice-grid button:hover { background: rgba(255, 255, 255, .055) !important; color: var(--creation-text) !important; } .creation-choice-grid button.is-selected { background: rgba(255, 255, 255, .105) !important; color: var(--creation-text) !important; } .creation-choice-grid .creation-ratio-preview { display: grid; width: 18px !important; height: 14px !important; flex: 0 0 18px; place-items: center; } .creation-choice-grid .creation-ratio-preview > span { max-width: 18px; max-height: 14px; border-width: 1px !important; border-radius: 2px !important; } .creation-custom-trigger { display: inline-flex !important; height: 26px !important; align-items: center; gap: 4px; margin: 3px 0 0 2px; border: 0 !important; border-radius: 4px; background: transparent !important; padding: 0 2px !important; color: var(--creation-muted) !important; font-size: 10px !important; transition: color 160ms var(--motion-ease-out), background-color 160ms var(--motion-ease-out) !important; } .creation-custom-trigger svg { width: 12px; height: 12px; } .creation-custom-trigger:hover { background: rgba(255, 255, 255, .05) !important; color: var(--creation-text) !important; } .creation-custom-value, .creation-custom-value.is-duration { display: flex !important; width: 100% !important; height: 32px !important; align-items: center; gap: 8px; margin-top: 5px !important; border: 0 !important; border-radius: 6px !important; background: rgba(255, 255, 255, .055) !important; padding: 0 9px !important; color: var(--creation-muted) !important; font-size: 10px !important; } .creation-custom-value input { min-width: 0; flex: 1; border: 0 !important; outline: 0 !important; background: transparent !important; color: var(--creation-text) !important; font-size: 11px !important; } .creation-custom-value em { color: var(--creation-muted); font-size: 11px; font-style: normal; } .creation-duration-custom-field { display: inline-flex; min-width: 64px; align-items: center; justify-content: flex-end; gap: 3px; margin-left: auto; color: var(--creation-text); font-size: 11px; font-variant-numeric: tabular-nums; } .creation-custom-value .creation-duration-custom-field input { width: 42px; flex: 0 0 42px; padding: 0; text-align: right; } .creation-duration-custom-field em { color: currentColor; } .creation-duration-menu { display: block !important; width: 262px !important; padding: 12px !important; } .creation-duration-choices { display: grid !important; grid-template-columns: repeat(5, minmax(0, 1fr)) !important; gap: 3px !important; } .creation-duration-choices button { height: 32px !important; min-width: 0; border: 0 !important; border-radius: 6px !important; background: transparent !important; color: var(--creation-muted) !important; font-size: 11px !important; font-weight: 500; transition: background-color 160ms var(--motion-ease-out), color 160ms var(--motion-ease-out) !important; } .creation-duration-choices button:hover { background: rgba(255, 255, 255, .055) !important; color: var(--creation-text) !important; } .creation-duration-choices button.is-selected { background: rgba(255, 255, 255, .105) !important; color: var(--creation-text) !important; } html:not(.dark) .creation-control-popover-surface { background: rgba(255, 255, 255, .98) !important; box-shadow: 0 20px 48px rgba(25, 29, 35, .14) !important; } html:not(.dark) .creation-choice-grid button:hover, html:not(.dark) .creation-duration-choices button:hover, html:not(.dark) .creation-custom-trigger:hover { background: rgba(28, 32, 37, .055) !important; } html:not(.dark) .creation-choice-grid button.is-selected, html:not(.dark) .creation-duration-choices button.is-selected { background: rgba(28, 32, 37, .09) !important; } html:not(.dark) .creation-custom-value { background: rgba(28, 32, 37, .055) !important; } /* 历史对话使用右侧时间轴,避免重新引入占据主舞台的常驻会话栏。 */ .creation-top-actions { position: absolute; z-index: 30; top: 24px; right: 28px; display: flex; align-items: center; gap: 6px; } .creation-top-action { display: grid; width: 36px; height: 36px; place-items: center; border: 0; border-radius: 8px; background: rgba(255, 255, 255, .06); color: var(--creation-muted); transition: background-color 150ms ease, color 150ms ease, transform 150ms var(--motion-ease-out); } .creation-top-action svg { width: 16px; height: 16px; } .creation-top-action:hover, .creation-top-action[aria-expanded="true"] { background: rgba(255, 255, 255, .12); color: var(--creation-text); transform: translateY(-1px); } .creation-top-action:focus-visible { outline: 2px solid color-mix(in srgb, #83d6ec 70%, transparent); outline-offset: 2px; } html:not(.dark) .creation-top-action { background: rgba(28, 32, 37, .055); } html:not(.dark) .creation-top-action:hover, html:not(.dark) .creation-top-action[aria-expanded="true"] { background: rgba(28, 32, 37, .11); } .creation-history-drawer, .creation-history-drawer-root { --creation-history-bg: #111316; --creation-history-surface: #1a1d22; --creation-history-hover: #20242a; --creation-history-text: #f1f3f4; --creation-history-muted: #858c96; --creation-history-faint: #555c66; --creation-history-line: rgba(255, 255, 255, .09); --creation-history-accent: #83d6ec; } html:not(.dark) .creation-history-drawer, html:not(.dark) .creation-history-drawer-root { --creation-history-bg: #f8f8f6; --creation-history-surface: #ffffff; --creation-history-hover: #f0f1ee; --creation-history-text: #202328; --creation-history-muted: #747c85; --creation-history-faint: #b0b6bc; --creation-history-line: rgba(28, 32, 37, .11); --creation-history-accent: #1688a3; } .creation-history-drawer.ant-drawer-content, .creation-history-drawer .ant-drawer-content, .creation-history-drawer-root .ant-drawer-content { background: var(--creation-history-bg); color: var(--creation-history-text); } .creation-history-drawer .ant-drawer-header { min-height: 58px; border-bottom: 1px solid var(--creation-history-line); padding: 10px 14px 10px 18px; } .creation-history-drawer .ant-drawer-title { color: var(--creation-history-text); } .creation-history-drawer .ant-drawer-close { display: grid; width: 36px; height: 36px; place-items: center; margin-inline-end: 8px; border-radius: 8px; color: var(--creation-history-muted); } .creation-history-drawer .ant-drawer-close:hover { background: var(--creation-history-hover); color: var(--creation-history-text); } .creation-history-drawer .ant-drawer-close:focus-visible { outline: 2px solid color-mix(in srgb, var(--creation-history-accent) 66%, transparent); outline-offset: 1px; } .creation-history-drawer .ant-drawer-body { overscroll-behavior: contain; } .creation-history-title { display: flex; min-width: 0; flex-direction: column; gap: 2px; } .creation-history-title > span { font-size: 14px; font-weight: 650; letter-spacing: 0; } .creation-history-title small { color: var(--creation-history-muted); font-size: 10px; font-weight: 500; } .creation-history-timeline { margin: 0; padding: 8px 12px 18px 18px; list-style: none; } .creation-history-timeline > li { position: relative; min-width: 0; padding-left: 14px; content-visibility: auto; contain-intrinsic-size: 0 68px; } .creation-history-timeline > li::before { position: absolute; top: 0; bottom: 0; left: 2px; width: 1px; background: var(--creation-history-line); content: ""; } .creation-history-timeline > li:first-child::before { top: 15px; } .creation-history-timeline > li:last-child::before { bottom: calc(100% - 16px); } .creation-history-dot { position: absolute; z-index: 1; top: 13px; left: 0; width: 5px; height: 5px; border: 1px solid var(--creation-history-bg); border-radius: 50%; background: var(--creation-history-faint); box-sizing: content-box; } .creation-history-timeline > li.is-active .creation-history-dot { background: var(--creation-history-accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--creation-history-accent) 12%, transparent); } .creation-history-timeline button { display: flex; width: 100%; min-height: 64px; flex-direction: column; align-items: flex-start; justify-content: center; gap: 2px; border: 0; border-radius: 7px; background: transparent; padding: 7px 9px; color: var(--creation-history-text); text-align: left; transition: background-color 150ms ease; } .creation-history-timeline button:hover { background: var(--creation-history-hover); } .creation-history-timeline button:focus-visible { outline: 2px solid color-mix(in srgb, var(--creation-history-accent) 68%, transparent); outline-offset: -2px; } .creation-history-timeline > li.is-active button { background: color-mix(in srgb, var(--creation-history-accent) 5%, var(--creation-history-surface)); } .creation-history-time { display: flex; width: 100%; align-items: center; justify-content: space-between; color: var(--creation-history-muted); font-size: 9px; font-variant-numeric: tabular-nums; line-height: 1.3; } .creation-history-time em { color: var(--creation-history-faint); font-size: 9px; font-style: normal; } .creation-history-item-heading { width: 100%; min-width: 0; overflow: hidden; font-size: 12px; font-weight: 630; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; } .creation-history-snippet { display: block; width: 100%; overflow: hidden; color: var(--creation-history-muted); font-size: 10px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; } @media (max-width: 640px) { .creation-top-actions { top: 14px; right: 14px; } .creation-top-action { width: 40px; height: 40px; } .creation-history-drawer { width: 100vw !important; max-width: 100vw; } .creation-history-drawer-root .ant-drawer-content-wrapper { width: 100vw !important; max-width: 100vw; } .creation-history-timeline { padding-right: 12px; padding-left: 18px; } } /* ------------------------------------------------------------------------- Monochrome product surfaces 页面级黑白主题收口:焦点用边框表达,浮层使用单一表面,避免渐变、米色和蓝紫光圈在不同页面漂移。 ------------------------------------------------------------------------- */ .creation-home { --creation-accent: var(--workspace-accent); --creation-bg: var(--workspace-page); --creation-surface: color-mix(in srgb, var(--background) 96%, var(--foreground) 4%); --creation-surface-muted: color-mix(in srgb, var(--background) 91%, var(--foreground) 9%); --creation-surface-hover: color-mix(in srgb, var(--background) 86%, var(--foreground) 14%); --creation-surface-selected: color-mix(in srgb, var(--background) 80%, var(--foreground) 20%); --creation-border: color-mix(in srgb, var(--foreground) 14%, transparent); --creation-border-strong: color-mix(in srgb, var(--foreground) 24%, transparent); } :where(.ant-input, .ant-input-affix-wrapper, .ant-input-number, .ant-select-selector, .ant-select-multiple .ant-select-selection-search-input) { box-shadow: none !important; } :where(.ant-input:focus, .ant-input-focused, .ant-input-affix-wrapper-focused, .ant-input-number-focused, .ant-select-focused .ant-select-selector) { border-color: var(--foreground) !important; box-shadow: none !important; outline: none !important; } :where(.ant-input:hover, .ant-input-affix-wrapper:hover, .ant-input-number:hover, .ant-select:not(.ant-select-disabled):hover .ant-select-selector) { border-color: color-mix(in srgb, var(--foreground) 42%, var(--border)) !important; } :where(.ant-select-dropdown, .ant-dropdown-menu, .ant-popover-inner, .ant-picker-dropdown .ant-picker-panel-container) { border: 1px solid var(--border) !important; border-radius: var(--r-md) !important; background: var(--popover) !important; background-image: none !important; box-shadow: var(--shadow-lg) !important; backdrop-filter: none !important; } :where(.ant-select-item-option, .ant-dropdown-menu-item, .ant-cascader-menu-item) { border-radius: var(--r-sm) !important; color: var(--popover-foreground) !important; } :where(.ant-select-item-option-active:not(.ant-select-item-option-disabled), .ant-dropdown-menu-item:hover, .ant-cascader-menu-item-active) { background: color-mix(in srgb, var(--popover-foreground) 6%, var(--popover)) !important; } :where(.ant-select-item-option-selected:not(.ant-select-item-option-disabled), .ant-dropdown-menu-item-selected) { background: color-mix(in srgb, var(--popover-foreground) 12%, var(--popover)) !important; color: var(--popover-foreground) !important; font-weight: 600; } :where(.ant-tag-success, .ant-tag-warning, .ant-tag-processing, .ant-tag-cyan, .ant-tag-blue, .ant-tag-green, .ant-tag-gold, .ant-tag-orange) { border-color: color-mix(in srgb, var(--foreground) 18%, transparent) !important; background: color-mix(in srgb, var(--foreground) 7%, transparent) !important; color: color-mix(in srgb, var(--foreground) 76%, transparent) !important; } body.app-spatial-overlays :where(.ant-dropdown-menu, .ant-select-dropdown, .ant-popover-inner, .ant-modal-content, .ant-drawer-content, .ant-message-notice-content, .ant-notification-notice) { background: var(--popover) !important; background-image: none !important; box-shadow: var(--shadow-xl) !important; backdrop-filter: none !important; } body.app-spatial-overlays :where(.ant-modal-mask, .ant-drawer-mask) { background: color-mix(in srgb, var(--foreground) 48%, transparent) !important; backdrop-filter: blur(3px) !important; } .app-workspace-shell.is-spatial .app-workspace-sidebar { background: var(--workspace-navigation) !important; background-image: none !important; box-shadow: none !important; backdrop-filter: none !important; }