Compare commits

...

2 Commits

Author SHA1 Message Date
ludan 52677e33f1 feat: 首页响应式视觉升级与全局UI细节打磨
本次提交包含以下改进:

## 1. 首页轮播卡片响应式重构 (HomePage.tsx + home.css)
- 将旋转木马卡片偏移量从固定px值改为clamp()流式单位,随视口宽度自适应缩放
- 使用calc(0px - ...)替代乘法计算方向偏移,兼容CSS变量传递
- 轮播舞台新增mask-image渐变遮罩,边缘卡片自然淡出
- 非激活卡片增加saturate/brightness滤镜,强化主次视觉层级
- 激活卡与非激活卡分别设置图片filter效果
- 移除旧carousel-card-label样式
- 多断点适配:1200px/980px/720px/480px逐级调整卡片尺寸和舞台高度

## 2. 首页入口按钮重设计 (HomePage.tsx + home.css)
- 按钮文案从'新手/老手/电商'改为'快速生成/专业创作/电商出图'
- 每个按钮新增small副标题('新手友好'/'画布工作流'/'商品视觉')
- 主按钮(专业创作)使用渐变绿色背景+发光阴影,新建--primary small样式
- 普通按钮玻璃态背景+内阴影,hover绿色边框高亮
- 720px以下单列全宽布局,按钮居中

## 3. 首页全页视觉强化 (home.css)
- Scrim层三重渐变叠加+radial光晕
- Hero区域文字text-shadow + text-wrap: balance排版
- Feature页面::before叠加渐变遮罩
- Feature Visual卡片增加边框/阴影/背景三层嵌套
- Experience区域斜向分割线装饰背景
- Cookie Consent弹窗玻璃态重设计,移动端自适应

## 4. 首页工具盒区域打磨 (toolbox.css)
- 全新CSS变量(--toolbox-radius-card/inner)
- 工具盒整体深色渐变背景+radial光晕
- Shell容器max-width + clamp流式padding
- 左侧品牌区域标题/brand-icon/subtitle重设计
- 工具列表项、工作流卡片统一玻璃态风格
- 工具卡片hover上浮4px+绿色边框+阴影增强
- @media: 1160px/980px/680px/420px四断点响应式

## 5. 工具盒卡片布局简化 (MorePage.tsx + more.css)
- 核心工具卡片移除独立icon区域,改为单列网格布局
- 普通工具卡片隐藏.more-card__icon(近期记录除外)
- 预览图aspect-ratio从16/9改为4/3,内边距优化
- 移动端移除featured-icon相关样式

## 6. 脚本评审Showcase响应式改造 (script-review-showcase.css)
- 主容器从@media切换为@container查询,跟随父容器自适应
- 新增880px/720px/560px三档container断点
- 图表列在720px以下改为水平进度条布局(bar从垂直改水平)
- 图表列增加卡片边框/圆角/背景
- 品牌区域、评分标签、流程卡片逐级压缩
- @media保留外层padding控制

## 7. 通知中心UI修复 (dark-green.css)
- notification-center改为inline-flex定位锚点
- 面板改为absolute+flex列布局,修复定位偏移
- 列表flex自适应高度+overscroll-behavior: contain
- 移动端面板右偏移clamp适配,箭头位置同步
- 高度单位从vh改为dvh,避免移动浏览器地址栏干扰
2026-06-09 14:22:37 +08:00
ludan 6f54ad92c0 feat: 工具盒卡片预览图替换与响应式视觉优化
本次提交包含以下改进:

## 1. 工具卡片真实预览图替换 (MorePage.tsx)
- 移除原有的CSS绘制Before/After对比图(ToolComparePanel/CompareScene)
- 新增ToolPreviewPanel组件,使用OSS真实截图展示每个工具的效果预览
- 建立toolPreviewImages映射表,为8个工具分别配置预览图URL
- 预览图支持hover悬浮放大效果(popover),桌面端鼠标悬停时展示大图
- 触摸设备通过@media (hover: none)隐藏popover,避免移动端误触

## 2. 核心工具区重构 (MorePage.tsx)
- 移除FeaturedTool独立接口和featuredTools数组,统一到tools体系
- 新增coreToolIds集合标记核心工具(workbench/inpaint/watermarkRemoval)
- 新增coreToolGradients和coreToolSteps独立配置每张核心卡的渐变和步骤
- 移除openFeaturedTool,统一使用openTool处理所有工具点击
- 核心卡片kick er改为显示分类标签(图像创作/视频创作)
- 视频生成分类标签更名为"视频创作"

## 3. 工具卡片视觉升级 (more.css)
- 新增CSS变量体系:--more-card-surface/surface-strong/border/border-strong
- 核心工具卡:三列网格布局、渐变背景叠加、预览图16:9占位区
- 普通工具卡:增大最小高度至392px、radial-gradient光晕、增强边框
- 卡片预览图:aspect-ratio容器、内边框光效、::after渐变叠加层
- Hover悬浮popover:从卡片底部弹出大图,160ms过渡动画
- CTA按钮强化:渐变背景、内阴影高光、font-weight 850
- :active状态按压反馈(translateY(0)消除位移)
- 阴影系统升级:更深、更柔和的阴影层次

## 4. Prompt案例弹窗响应式重构 (workbench.css)
- 720px断点:从垂直堆叠改为水平左右分栏布局(1.08:0.92)
- 侧边栏从底部面板移至右侧,带左分割线和投影
- 420px断点:紧凑水平分栏(0.9:1.1)、更小字号和间距
- 弹窗增加边框和圆角、关闭按钮毛玻璃效果
- 作者信息采用grid布局、描述文本line-clamp截断

## 5. 响应式细节完善
- more.css 860px: 双列核心卡、增大预览图、调整间距
- more.css 520px: 单列布局、筛选标签横向滚动、CTA按钮全宽
- workbench.css: 各断点prompt-case-modal精确调优
2026-06-08 18:57:07 +08:00
8 changed files with 1767 additions and 334 deletions
+23 -6
View File
@@ -194,10 +194,18 @@ function getHomeCarouselCardStyle(offset: number): CSSProperties {
const depth = Math.abs(offset);
const direction = Math.sign(offset);
const isActive = depth === 0;
const xByDepth = [0, 190, 320, 430, 520, 590];
const xByDepth = [
"0px",
"clamp(52px, 13.5vw, 198px)",
"clamp(90px, 22.5vw, 334px)",
"clamp(122px, 30.5vw, 448px)",
"clamp(148px, 37vw, 542px)",
"clamp(170px, 42vw, 614px)",
];
const yByDepth = [8, -2, -8, -13, -18, -24];
const scaleByDepth = [1, 1, 1, 1, 1, 1];
const x = direction * (xByDepth[depth] ?? xByDepth[xByDepth.length - 1]!);
const xDistance = xByDepth[depth] ?? xByDepth[xByDepth.length - 1]!;
const x = direction < 0 ? `calc(0px - ${xDistance})` : xDistance;
const y = yByDepth[depth] ?? yByDepth[yByDepth.length - 1]!;
const z = isActive ? 90 : 28 - depth;
const scale = scaleByDepth[depth] ?? scaleByDepth[scaleByDepth.length - 1]!;
@@ -206,7 +214,7 @@ function getHomeCarouselCardStyle(offset: number): CSSProperties {
"--apple-card-offset": offset,
"--apple-card-depth": depth,
"--apple-card-z": 80 - depth,
"--apple-card-x": `${x}px`,
"--apple-card-x": x,
"--apple-card-y": `${y}px`,
"--apple-card-z-offset": `${z}px`,
"--apple-card-rotate-y": "0deg",
@@ -622,15 +630,24 @@ function HomePage({ onOpenGenerate, onOpenCanvas, onOpenEcommerce, onOpenScriptR
<div className="omni-home__actions" aria-label="首页入口">
<button type="button" className="omni-home__entry" onClick={onOpenGenerate}>
<PlusOutlined />
<span></span>
<span>
<small></small>
</span>
</button>
<button type="button" className="omni-home__entry omni-home__entry--primary" onClick={onOpenCanvas || onOpenGenerate}>
<PlayCircleOutlined />
<span></span>
<span>
<small></small>
</span>
</button>
<button type="button" className="omni-home__entry" onClick={onOpenEcommerce}>
<ShoppingOutlined />
<span></span>
<span>
<small></small>
</span>
</button>
</div>
</section>
+173 -131
View File
@@ -37,117 +37,153 @@ interface MoreTool {
imageTool?: WebImageWorkbenchTool;
ready: boolean;
badge?: string;
featured?: boolean;
}
type CompareScene =
| "workbench"
| "inpaint"
| "camera"
| "upscale"
| "watermark"
| "dialog"
| "subtitle"
| "digital-human"
| "character"
| "avatar";
const toolCompareScenes: Record<string, CompareScene> = {
workbench: "workbench",
inpaint: "inpaint",
camera: "camera",
upscale: "upscale",
watermarkRemoval: "watermark",
dialogGenerator: "dialog",
subtitleRemoval: "subtitle",
digitalHuman: "digital-human",
characterMix: "character",
avatarConsole: "avatar",
const toolPreviewImages: Record<string, string> = {
inpaint: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E5%B1%80%E9%83%A8%E9%87%8D%E7%BB%98.PNG",
camera: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E9%95%9C%E5%A4%B4%E5%AE%9E%E9%AA%8C%E5%AE%A4.PNG",
upscale: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E5%88%86%E8%BE%A8%E7%8E%87%E6%8F%90%E5%8D%87.PNG",
watermarkRemoval: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E5%8E%BB%E6%B0%B4%E5%8D%B0.PNG",
dialogGenerator: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E4%BA%A4%E4%BA%92%E5%BC%8F%E5%AF%B9%E8%AF%9D%E6%A1%86%E7%94%9F%E6%88%90%E5%99%A8.PNG",
subtitleRemoval: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E5%AD%97%E5%B9%95%E5%8E%BB%E9%99%A4.PNG",
characterMix: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E8%A7%92%E8%89%B2%E8%BF%81%E7%A7%BB.PNG",
avatarConsole: "https://stringtest.oss-cn-hangzhou.aliyuncs.com/toolbox/images/%E6%95%B0%E5%AD%97%E4%BA%BA%E6%8E%A7%E5%88%B6%E5%8F%B0.PNG",
};
function ToolComparePanel({ scene }: { scene: CompareScene }) {
function ToolPreviewPanel({ toolId }: { toolId: string }) {
const imageUrl = toolPreviewImages[toolId];
if (!imageUrl) return null;
return (
<span className={`more-card__compare more-card__compare--${scene}`} aria-hidden="true">
<span className="more-card__compare-labels">
<span>Before</span>
<span>After</span>
</span>
<span className="more-card__compare-stage">
<span className="more-card__compare-side more-card__compare-side--before">
<span className="more-card__scene-subject" />
<span className="more-card__scene-detail" />
<span className="more-card__scene-overlay" />
</span>
<span className="more-card__compare-divider">
<span />
</span>
<span className="more-card__compare-side more-card__compare-side--after">
<span className="more-card__scene-subject" />
<span className="more-card__scene-detail" />
<span className="more-card__scene-overlay" />
</span>
<span className="more-card__preview" aria-hidden="true">
<span className="more-card__preview-frame">
<img src={imageUrl} alt="" loading="lazy" decoding="async" />
</span>
<img className="more-card__preview-popover" src={imageUrl} alt="" loading="lazy" decoding="async" />
</span>
);
}
const tools: MoreTool[] = [
{ id: "workbench", title: "图片工作台", text: "融合、修复、局部增强", useCase: "适合商品图精修、创意合成和局部画面重做", tags: ["热门", "一站式", "商品图"], icon: <EditOutlined />, category: "image", imageTool: "workbench", ready: true, featured: true },
{ id: "inpaint", title: "局部重绘", text: "修掉瑕疵、替换物体、重做局部画面", useCase: "适合快速处理商品瑕疵、人物细节和背景杂物", tags: ["新手推荐", "精修"], icon: <HighlightOutlined />, category: "image", imageTool: "inpaint", ready: true },
{ id: "camera", title: "镜头实验室", text: "快速生成俯拍、特写、广角等商业镜头", useCase: "适合做产品主图、种草图和不同机位方案", tags: ["电商常用", "镜头"], icon: <CameraOutlined />, category: "image", imageTool: "camera", ready: true },
{ id: "upscale", title: "分辨率提升", text: "把低清图片或视频提升到可交付质感", useCase: "适合修复旧素材、放大商品图和增强短视频清晰度", tags: ["高清", "交付前"], icon: <ColumnWidthOutlined />, category: "image", target: "resolutionUpscale", ready: true },
{ id: "watermarkRemoval", title: "去水印", text: "智能去除图片水印、文字和遮挡元素", useCase: "适合整理素材、清理参考图和恢复画面干净度", tags: ["素材清理", "高频"], icon: <DeleteOutlined />, category: "image", target: "watermarkRemoval", ready: true },
{ id: "dialogGenerator", title: "交互式对话框生成器", text: "上传背景图,快速制作可拖拽编辑的对话框", useCase: "适合剧情海报、社媒截图和角色对白设计", tags: ["内容创作", "可编辑"], icon: <MessageOutlined />, category: "image", target: "dialogGenerator", ready: true },
{ id: "subtitleRemoval", title: "字幕去除", text: "擦除视频字幕,让画面重新变干净", useCase: "适合二创前素材整理、短视频重剪和画面修复", tags: ["视频增强", "素材清理"], icon: <DeleteOutlined />, category: "video", target: "subtitleRemoval", ready: true },
{ id: "digitalHuman", title: "数字人", text: "用一张人像和音频生成口播视频", useCase: "适合品牌讲解、课程口播和带货短视频", tags: ["热门", "口播", "视频"], icon: <CustomerServiceOutlined />, category: "video", target: "digitalHuman", ready: true, featured: true },
{ id: "characterMix", title: "角色迁移", text: "把人物图迁移到参考视频的动作里", useCase: "适合角色短片、动作复刻和虚拟人内容生产", tags: ["角色视频", "动作"], icon: <SwapOutlined />, category: "video", target: "characterMix", ready: true },
{ id: "avatarConsole", title: "数字人控制台", text: "管理形象、播报、互动与接入配置", useCase: "适合持续运营数字人、配置品牌形象和复用口播模板", tags: ["运营台", "企业"], icon: <DashboardOutlined />, category: "video", target: "avatarConsole", ready: true },
];
interface FeaturedTool {
id: string;
title: string;
desc: string;
kicker: string;
steps: string[];
outcome: string;
icon: ReactNode;
imageTool?: WebImageWorkbenchTool;
target?: WebViewKey;
category: ToolCategory;
gradient: string;
function getPreviewClassName(toolId: string) {
return toolPreviewImages[toolId] ? " more-card--has-preview" : " more-card--no-preview";
}
const featuredTools: FeaturedTool[] = [
const tools: MoreTool[] = [
{
id: "workbench",
title: "图片工作台",
desc: "从一张素材开始,完成精修、合成和二次创作。",
kicker: "图片精修工作流",
steps: ["上传素材", "局部修复", "高清导出"],
outcome: "适合商品图、海报图和创意视觉",
text: "融合、修复、局部增强",
useCase: "适合商品图精修、创意合成和局部画面重做",
tags: ["热门", "一站式", "商品图"],
icon: <EditOutlined />,
imageTool: "workbench",
category: "image",
gradient: "linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(139, 92, 246, 0.06))",
imageTool: "workbench",
ready: true,
},
{
id: "inpaint",
title: "局部重绘",
text: "修掉瑕疵、替换物体、重做局部画面",
useCase: "适合快速处理商品瑕疵、人物细节和背景杂物",
tags: ["新手推荐", "精修"],
icon: <HighlightOutlined />,
category: "image",
imageTool: "inpaint",
ready: true,
},
{
id: "camera",
title: "镜头实验室",
text: "快速生成俯拍、特写、广角等商业镜头",
useCase: "适合做产品主图、种草图和不同机位方案",
tags: ["电商常用", "镜头"],
icon: <CameraOutlined />,
category: "image",
imageTool: "camera",
ready: true,
},
{
id: "upscale",
title: "分辨率提升",
text: "把低清图片或视频提升到可交付质感",
useCase: "适合修复旧素材、放大商品图和增强短视频清晰度",
tags: ["高清", "交付前"],
icon: <ColumnWidthOutlined />,
category: "image",
target: "resolutionUpscale",
ready: true,
},
{
id: "watermarkRemoval",
title: "去水印",
text: "智能去除图片水印、文字和遮挡元素",
useCase: "适合整理素材、清理参考图和恢复画面干净度",
tags: ["素材清理", "高频"],
icon: <DeleteOutlined />,
category: "image",
target: "watermarkRemoval",
ready: true,
},
{
id: "dialogGenerator",
title: "交互式对话框生成器",
text: "上传背景图,快速制作可拖拽编辑的对话框",
useCase: "适合剧情海报、社媒截图和角色对白设计",
tags: ["内容创作", "可编辑"],
icon: <MessageOutlined />,
category: "image",
target: "dialogGenerator",
ready: true,
},
{
id: "subtitleRemoval",
title: "字幕去除",
text: "擦除视频字幕,让画面重新变干净",
useCase: "适合二创前素材整理、短视频重剪和画面修复",
tags: ["视频增强", "素材清理"],
icon: <DeleteOutlined />,
category: "video",
target: "subtitleRemoval",
ready: true,
},
{
id: "digitalHuman",
title: "数字人",
desc: "用参考人像和音频,快速生成可交付口播视频",
kicker: "口播视频工作流",
steps: ["选择人像", "上传音频", "生成视频"],
outcome: "适合品牌讲解、课程和带货短视频",
text: "用一张人像和音频生成口播视频",
useCase: "适合品牌讲解、课程口播和带货短视频",
tags: ["热门", "口播", "视频"],
icon: <CustomerServiceOutlined />,
target: "digitalHuman",
category: "video",
gradient: "linear-gradient(135deg, rgba(13, 148, 136, 0.12), rgba(6, 182, 212, 0.06))",
target: "digitalHuman",
ready: true,
},
{
id: "characterMix",
title: "角色迁移",
text: "把人物图迁移到参考视频的动作里",
useCase: "适合角色短片、动作复刻和虚拟人内容生产",
tags: ["角色视频", "动作"],
icon: <SwapOutlined />,
category: "video",
target: "characterMix",
ready: true,
},
{
id: "avatarConsole",
title: "数字人控制台",
text: "管理形象、播报、互动与接入配置",
useCase: "适合持续运营数字人、配置品牌形象和复用口播模板",
tags: ["运营台", "企业"],
icon: <DashboardOutlined />,
category: "video",
target: "avatarConsole",
ready: true,
},
];
const categoryLabels: Record<ToolCategory, string> = {
image: "图像创作",
video: "视频生成",
video: "视频创作",
};
const categoryIcons: Record<ToolCategory, ReactNode> = {
@@ -162,6 +198,20 @@ const filters: { key: FilterKey; label: string }[] = [
{ key: "upcoming", label: "即将上线" },
];
const coreToolIds = new Set(["workbench", "inpaint", "watermarkRemoval"]);
const coreToolGradients: Record<string, string> = {
workbench: "linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(139, 92, 246, 0.06))",
inpaint: "linear-gradient(135deg, rgba(var(--accent-rgb), 0.16), rgba(var(--accent-rgb), 0.055))",
watermarkRemoval: "linear-gradient(135deg, rgba(16, 185, 129, 0.13), rgba(var(--accent-rgb), 0.055))",
};
const coreToolSteps: Record<string, string[]> = {
workbench: ["上传素材", "局部修复", "高清导出"],
inpaint: ["选定区域", "描述修改", "生成结果"],
watermarkRemoval: ["上传素材", "智能识别", "干净导出"],
};
const RECENT_STORAGE_KEY = "omniai:more-recent-tools";
const MAX_RECENT = 4;
@@ -169,7 +219,9 @@ function getRecentToolIds(): string[] {
try {
const raw = localStorage.getItem(RECENT_STORAGE_KEY);
return raw ? JSON.parse(raw) : [];
} catch { return []; }
} catch {
return [];
}
}
function pushRecentToolId(id: string) {
@@ -199,39 +251,29 @@ function MorePage({ onSelectView, onOpenImageTool }: MorePageProps) {
}
}, [onOpenImageTool, onSelectView]);
const openFeaturedTool = useCallback((tool: FeaturedTool) => {
pushRecentToolId(tool.id);
setRecentIds(getRecentToolIds());
if (tool.imageTool && onOpenImageTool) {
onOpenImageTool(tool.imageTool);
return;
}
if (tool.target && onSelectView) {
onSelectView(tool.target);
}
}, [onOpenImageTool, onSelectView]);
const filteredTools = tools.filter((t) => {
if (t.featured) return false;
const filteredTools = tools.filter((tool) => {
if (coreToolIds.has(tool.id)) return false;
if (filter === "all") return true;
if (filter === "upcoming") return !t.ready;
return t.category === filter;
if (filter === "upcoming") return !tool.ready;
return tool.category === filter;
});
const filterCounts: Record<FilterKey, number> = {
all: tools.filter((t) => !t.featured).length,
image: tools.filter((t) => !t.featured && t.category === "image").length,
video: tools.filter((t) => !t.featured && t.category === "video").length,
upcoming: tools.filter((t) => !t.featured && !t.ready).length,
all: tools.filter((tool) => !coreToolIds.has(tool.id)).length,
image: tools.filter((tool) => !coreToolIds.has(tool.id) && tool.category === "image").length,
video: tools.filter((tool) => !coreToolIds.has(tool.id) && tool.category === "video").length,
upcoming: tools.filter((tool) => !coreToolIds.has(tool.id) && !tool.ready).length,
};
const recentTools = recentIds
.map((id) => tools.find((t) => t.id === id))
.filter((t): t is MoreTool => Boolean(t) && (t?.ready ?? false));
.map((id) => tools.find((tool) => tool.id === id))
.filter((tool): tool is MoreTool => Boolean(tool) && (tool?.ready ?? false));
const groupedTools = filteredTools.reduce<Record<ToolCategory, MoreTool[]>>((acc, t) => {
if (!acc[t.category]) acc[t.category] = [];
acc[t.category].push(t);
const coreTools = tools.filter((tool) => coreToolIds.has(tool.id));
const groupedTools = filteredTools.reduce<Record<ToolCategory, MoreTool[]>>((acc, tool) => {
if (!acc[tool.category]) acc[tool.category] = [];
acc[tool.category].push(tool);
return acc;
}, {} as Record<ToolCategory, MoreTool[]>);
@@ -247,19 +289,19 @@ function MorePage({ onSelectView, onOpenImageTool }: MorePageProps) {
</div>
<div className="more-page-v2__header-meta" aria-label="工具盒概览">
<span>{tools.filter((tool) => tool.ready).length} </span>
<span>{featuredTools.length} </span>
<span>{coreTools.length} </span>
</div>
<nav className="more-page-v2__filters" aria-label="工具分类筛选">
{filters.map((f) => (
{filters.map((item) => (
<button
key={f.key}
key={item.key}
type="button"
className={filter === f.key ? "is-active" : ""}
aria-pressed={filter === f.key}
onClick={() => setFilter(f.key)}
className={filter === item.key ? "is-active" : ""}
aria-pressed={filter === item.key}
onClick={() => setFilter(item.key)}
>
<span>{f.label}</span>
<em>{filterCounts[f.key]}</em>
<span>{item.label}</span>
<em>{filterCounts[item.key]}</em>
</button>
))}
</nav>
@@ -298,27 +340,28 @@ function MorePage({ onSelectView, onOpenImageTool }: MorePageProps) {
<ThunderboltOutlined />
</h2>
<div className="more-page-v2__featured-grid">
{featuredTools.map((tool) => (
{coreTools.map((tool) => (
<button
key={tool.id}
type="button"
className="more-card more-card--featured"
style={{ "--card-gradient": tool.gradient } as CSSProperties}
aria-label={`打开核心工具:${tool.title}${tool.desc}`}
onClick={() => openFeaturedTool(tool)}
className={`more-card more-card--featured${getPreviewClassName(tool.id)}`}
style={{
"--card-gradient": coreToolGradients[tool.id] ?? "linear-gradient(135deg, rgba(var(--accent-rgb), 0.12), rgba(var(--accent-rgb), 0.04))",
} as CSSProperties}
aria-label={`打开核心工具:${tool.title}${tool.text}`}
onClick={() => openTool(tool)}
>
<span className="more-card__featured-icon">{tool.icon}</span>
<div className="more-card__featured-body">
<span className="more-card__featured-kicker">{tool.kicker}</span>
<span className="more-card__featured-kicker">{categoryLabels[tool.category]}</span>
<strong>{tool.title}</strong>
<ToolComparePanel scene={toolCompareScenes[tool.id]} />
<span className="more-card__featured-desc">{tool.desc}</span>
<ToolPreviewPanel toolId={tool.id} />
<span className="more-card__featured-desc">{tool.text}</span>
<span className="more-card__steps" aria-hidden="true">
{tool.steps.map((step) => (
{(coreToolSteps[tool.id] ?? tool.tags.slice(0, 3)).map((step) => (
<span key={step}>{step}</span>
))}
</span>
<span className="more-card__outcome">{tool.outcome}</span>
<span className="more-card__outcome">{tool.useCase}</span>
<span className="more-card__cta">使 </span>
</div>
</button>
@@ -341,19 +384,18 @@ function MorePage({ onSelectView, onOpenImageTool }: MorePageProps) {
<button
key={tool.id}
type="button"
className={`more-card${tool.ready ? " more-card--ready" : " more-card--pending"}`}
className={`more-card${tool.ready ? " more-card--ready" : " more-card--pending"}${getPreviewClassName(tool.id)}`}
aria-label={tool.ready ? `打开工具:${tool.title}${tool.text}` : `${tool.title}暂未开放`}
onClick={() => openTool(tool)}
disabled={!tool.ready}
>
<span className="more-card__icon">{tool.icon}</span>
<span className="more-card__topline">
{tool.tags.slice(0, 2).map((tag) => (
<span key={tag}>{tag}</span>
))}
</span>
<strong>{tool.title}</strong>
<ToolComparePanel scene={toolCompareScenes[tool.id]} />
<ToolPreviewPanel toolId={tool.id} />
<span className="more-card__desc">{tool.text}</span>
<span className="more-card__use-case">{tool.useCase}</span>
<span className="more-card__action"> </span>
+533 -15
View File
@@ -402,21 +402,6 @@
transform: translateZ(20px) scale(1.02);
}
.omni-home__carousel-card-label {
position: absolute;
bottom: 12px;
left: 14px;
z-index: 2;
padding: 4px 12px;
border-radius: 999px;
background: rgba(var(--accent-rgb, 0, 255, 136), 0.16);
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.24);
color: var(--fg-body, #f3f5f2);
font-size: 12px;
font-weight: 900;
white-space: nowrap;
}
.omni-home__carousel-card:hover {
box-shadow:
0 28px 58px rgb(0 0 0 / 34%),
@@ -2479,3 +2464,536 @@
font-size: 12px;
}
}
/* ===== Home page product polish and responsive hardening ===== */
.web-shell[data-view="home"] .omni-home {
--home-card-radius: 14px;
--home-panel-radius: 18px;
--home-safe-inline: clamp(16px, 4.6vw, 72px);
scroll-padding-top: 16px;
}
.web-shell[data-view="home"] .omni-home__scrim {
background:
linear-gradient(180deg, rgba(5, 8, 13, 0.82), rgba(5, 8, 13, 0.52) 38%, rgba(5, 8, 13, 0.9)),
radial-gradient(circle at 50% 24%, rgba(var(--accent-rgb), 0.1), transparent 36%),
linear-gradient(90deg, rgba(5, 8, 13, 0.86), rgba(5, 8, 13, 0.48) 48%, rgba(5, 8, 13, 0.86));
}
.web-shell[data-view="home"] .omni-home__shell {
padding: clamp(28px, 4.4vw, 58px) var(--home-safe-inline) clamp(34px, 4.8vw, 70px);
}
.web-shell[data-view="home"] .omni-home__hero {
width: min(100%, 1240px);
gap: clamp(16px, 2vw, 24px);
}
.web-shell[data-view="home"] .omni-home__copy {
gap: 14px;
}
.web-shell[data-view="home"] .omni-home__copy h1 {
max-width: min(100%, 920px);
white-space: normal;
text-wrap: balance;
font-size: clamp(34px, 4vw, 62px);
letter-spacing: 0;
text-shadow: 0 18px 54px rgb(0 0 0 / 34%);
}
.web-shell[data-view="home"] .omni-home__copy p {
max-width: 680px;
color: rgb(235 245 240 / 72%);
font-size: clamp(14px, 1.25vw, 18px);
line-height: 1.7;
}
.web-shell[data-view="home"] .omni-home__actions {
width: min(100%, 620px);
gap: 12px;
}
.web-shell[data-view="home"] .omni-home__entry {
min-height: 64px;
border-color: rgb(255 255 255 / 11%);
border-radius: 12px;
background:
linear-gradient(180deg, rgb(255 255 255 / 7%), rgb(255 255 255 / 3%)),
rgb(12 16 17 / 78%);
box-shadow:
inset 0 1px 0 rgb(255 255 255 / 8%),
0 16px 34px rgb(0 0 0 / 22%);
}
.web-shell[data-view="home"] .omni-home__entry > span:not(.anticon) {
display: grid;
gap: 3px;
justify-items: center;
min-width: 0;
line-height: 1.1;
}
.web-shell[data-view="home"] .omni-home__entry small {
color: rgb(235 245 240 / 48%);
font-size: 11px;
font-weight: 760;
line-height: 1;
white-space: nowrap;
}
.web-shell[data-view="home"] .omni-home__entry--primary small {
color: rgb(6 16 20 / 62%);
}
.web-shell[data-view="home"] .omni-home__entry:hover {
border-color: rgb(0 255 136 / 34%);
background:
linear-gradient(180deg, rgb(255 255 255 / 9%), rgb(255 255 255 / 4%)),
rgb(17 22 22 / 88%);
}
.web-shell[data-view="home"] .omni-home__entry--primary,
.web-shell[data-view="home"] .omni-home__entry--primary:hover {
border-color: rgb(0 255 136 / 82%);
background:
linear-gradient(180deg, rgb(88 255 172 / 100%), rgb(0 255 136 / 100%));
box-shadow:
0 18px 42px rgb(0 255 136 / 14%),
inset 0 1px 0 rgb(255 255 255 / 28%);
}
.web-shell[data-view="home"] .omni-home__carousel {
width: min(100%, 1180px);
min-height: clamp(380px, 36vw, 560px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage {
width: min(100%, 1180px);
height: clamp(360px, 34vw, 530px);
overflow: hidden;
-webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 5%, #000 95%, transparent 100%);
mask-image: linear-gradient(90deg, transparent 0%, #000 5%, #000 95%, transparent 100%);
}
.web-shell[data-view="home"] .omni-home__carousel-card {
width: clamp(500px, 45vw, 760px);
height: clamp(281px, 25.31vw, 428px);
border: 1px solid rgb(255 255 255 / 5%);
border-radius: var(--home-panel-radius);
background:
linear-gradient(180deg, rgb(255 255 255 / 4%), rgb(0 0 0 / 5%)),
#07100f;
box-shadow:
0 18px 46px rgb(0 0 0 / 30%),
inset 0 1px 0 rgb(255 255 255 / 8%),
inset 0 0 0 1px rgb(255 255 255 / 2%);
}
.web-shell[data-view="home"] .omni-home__carousel-card::before {
background:
linear-gradient(180deg, rgb(2 12 12 / 18%), transparent 34%, rgb(3 9 10 / 30%)),
linear-gradient(90deg, rgb(4 10 12 / 38%), transparent 24%, transparent 76%, rgb(4 10 12 / 38%)),
radial-gradient(circle at 50% 58%, rgb(0 255 136 / 8%), transparent 54%);
opacity: 0.92;
}
.web-shell[data-view="home"] .omni-home__carousel-card::after {
content: "";
position: absolute;
inset: 0;
z-index: 3;
border-radius: inherit;
box-shadow:
inset 0 0 0 1px rgb(255 255 255 / 4%),
inset 0 -42px 64px rgb(2 8 9 / 32%),
inset 0 34px 56px rgb(255 255 255 / 4%);
pointer-events: none;
}
.web-shell[data-view="home"] .omni-home__carousel-card.is-active {
border-color: rgb(255 255 255 / 7%);
box-shadow:
0 26px 70px rgb(0 0 0 / 38%),
0 0 0 1px rgb(255 255 255 / 4%),
0 0 46px rgb(0 0 0 / 18%),
inset 0 1px 0 rgb(255 255 255 / 10%);
}
.web-shell[data-view="home"] .omni-home__carousel-card:not(.is-active) {
filter: saturate(0.62) brightness(0.66) contrast(0.96);
}
.web-shell[data-view="home"] .omni-home__carousel-stage .omni-home__carousel-card img,
.web-shell[data-view="home"] .omni-home__carousel-stage .omni-home__carousel-card.is-active img {
object-fit: contain;
transform: translateZ(12px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage .omni-home__carousel-card img {
filter:
saturate(0.72)
contrast(0.98)
brightness(0.72)
hue-rotate(8deg)
drop-shadow(0 18px 18px rgb(0 0 0 / 18%));
}
.web-shell[data-view="home"] .omni-home__carousel-stage .omni-home__carousel-card.is-active img {
filter:
saturate(0.9)
contrast(1.03)
brightness(0.88)
hue-rotate(6deg)
drop-shadow(0 22px 22px rgb(0 0 0 / 18%));
}
.web-shell[data-view="home"] .omni-home__feature-page {
padding-inline: var(--home-safe-inline);
}
.web-shell[data-view="home"] .omni-home__feature-page::before {
background:
linear-gradient(90deg, rgb(5 8 13 / 96%) 0%, rgb(5 8 13 / 80%) 40%, rgb(5 8 13 / 52%) 100%),
linear-gradient(180deg, rgb(255 255 255 / 4%), transparent 34%);
}
.web-shell[data-view="home"] .omni-home__feature-visual {
border-radius: var(--home-panel-radius);
border-color: rgb(255 255 255 / 10%);
background:
linear-gradient(180deg, rgb(255 255 255 / 5%), rgb(255 255 255 / 2%)),
#0d1111;
box-shadow:
0 24px 68px rgb(0 0 0 / 34%),
inset 0 1px 0 rgb(255 255 255 / 8%);
}
.web-shell[data-view="home"] .omni-home__feature-copy h2,
.web-shell[data-view="home"] .omni-home__experience-copy h2 {
text-wrap: balance;
}
.web-shell[data-view="home"] .omni-home__feature-copy p,
.web-shell[data-view="home"] .omni-home__experience-copy p {
color: rgb(232 238 236 / 74%);
}
.web-shell[data-view="home"] .omni-home__feature-page.is-script,
.web-shell[data-view="home"] .omni-home__feature-page.is-model,
.web-shell[data-view="home"] .omni-home__feature-page.is-ecommerce {
padding-inline: clamp(10px, 1.8vw, 28px);
}
.web-shell[data-view="home"] .omni-home__feature-page.is-script .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-model .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-ecommerce .omni-home__feature-visual {
border-radius: 12px;
}
.web-shell[data-view="home"] .omni-home__experience {
background:
linear-gradient(112deg, rgb(0 255 136 / 10%) 0 1px, transparent 1px 20%),
linear-gradient(68deg, rgb(0 255 136 / 7%) 0 1px, transparent 1px 22%),
linear-gradient(180deg, #070b10 0%, #05080d 100%);
}
.web-shell[data-view="home"] .omni-home__experience-route {
border-radius: var(--home-card-radius);
}
.web-shell[data-view="home"] :is(
.omni-home__shell,
.omni-home__feature-page,
.omni-home__toolbox-page,
.omni-home__experience
) {
scroll-margin-top: 64px;
}
.web-shell[data-view="home"] .cookie-consent {
right: clamp(14px, 2vw, 24px);
bottom: 12px;
width: min(560px, calc(100vw - 28px));
gap: 10px;
padding: 10px 12px;
border-color: rgb(0 255 136 / 20%);
border-radius: 13px;
background:
linear-gradient(180deg, rgb(255 255 255 / 6%), rgb(255 255 255 / 3%)),
rgb(13 17 18 / 92%);
box-shadow:
0 18px 46px rgb(0 0 0 / 30%),
inset 0 1px 0 rgb(255 255 255 / 7%);
}
.web-shell[data-view="home"] .cookie-consent strong {
font-size: 13px;
}
.web-shell[data-view="home"] .cookie-consent p {
margin-top: 4px;
overflow: hidden;
font-size: 12px;
line-height: 1.32;
text-overflow: ellipsis;
white-space: nowrap;
}
.web-shell[data-view="home"] .cookie-consent__actions {
gap: 8px;
}
.web-shell[data-view="home"] .cookie-consent__actions a,
.web-shell[data-view="home"] .cookie-consent__actions button {
min-height: 32px;
padding-inline: 12px;
font-size: 12px;
}
@media (max-width: 1200px) {
.web-shell[data-view="home"] .omni-home__carousel {
min-height: clamp(340px, 42vw, 500px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage {
width: min(100%, 1020px);
height: clamp(320px, 39vw, 470px);
}
.web-shell[data-view="home"] .omni-home__carousel-card {
width: clamp(470px, 57vw, 660px);
height: clamp(264px, 32.06vw, 371px);
}
}
@media (max-width: 980px) {
.web-shell[data-view="home"] .omni-home {
scroll-snap-type: none;
overscroll-behavior-y: auto;
}
.web-shell[data-view="home"] .omni-home__shell {
min-height: auto;
padding-top: clamp(24px, 4vw, 38px);
padding-bottom: clamp(34px, 6vw, 58px);
}
.web-shell[data-view="home"] .omni-home__hero {
align-content: start;
}
.web-shell[data-view="home"] .omni-home__actions {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.web-shell[data-view="home"] .omni-home__entry {
min-height: 58px;
padding-inline: 18px;
font-size: 15px;
}
.web-shell[data-view="home"] .omni-home__entry small {
font-size: 10px;
}
.web-shell[data-view="home"] .omni-home__carousel {
width: min(100%, 820px);
min-height: clamp(290px, 54vw, 430px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage {
width: min(100%, 820px);
height: clamp(280px, 51vw, 410px);
overflow: hidden;
}
.web-shell[data-view="home"] .omni-home__carousel-deck {
transform: scale(0.96);
}
.web-shell[data-view="home"] .omni-home__feature-page,
.web-shell[data-view="home"] .omni-home__experience {
min-height: auto;
padding-block: clamp(44px, 7vw, 72px);
}
.web-shell[data-view="home"] .omni-home__feature-copy h2,
.web-shell[data-view="home"] .omni-home__experience-copy h2 {
font-size: clamp(34px, 7vw, 58px);
}
.web-shell[data-view="home"] .omni-home__feature-copy p,
.web-shell[data-view="home"] .omni-home__experience-copy p {
font-size: clamp(15px, 2.4vw, 20px);
}
.web-shell[data-view="home"] .omni-home__feature-page.is-script .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-model .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-ecommerce .omni-home__feature-visual {
height: auto;
min-height: clamp(520px, 78vw, 720px);
}
.web-shell[data-view="home"] .omni-home__experience {
gap: 24px;
}
.web-shell[data-view="home"] .omni-home__experience-visual {
min-height: 260px;
}
}
@media (max-width: 720px) {
.web-shell[data-view="home"] .omni-home__copy h1 {
font-size: clamp(30px, 9vw, 44px);
line-height: 1.08;
}
.web-shell[data-view="home"] .omni-home__copy p {
max-width: 520px;
font-size: 14px;
}
.web-shell[data-view="home"] .omni-home__actions {
grid-template-columns: 1fr;
width: min(100%, 420px);
}
.web-shell[data-view="home"] .omni-home__entry {
justify-content: center;
min-height: 54px;
width: 100%;
}
.web-shell[data-view="home"] .omni-home__entry > span:not(.anticon) {
gap: 4px;
}
.web-shell[data-view="home"] .omni-home__carousel {
min-height: clamp(260px, 70vw, 360px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage {
height: clamp(248px, 66vw, 340px);
}
.web-shell[data-view="home"] .omni-home__carousel-deck {
transform: scale(1);
}
.web-shell[data-view="home"] .omni-home__carousel-card {
width: min(94vw, 520px);
height: min(52.88vw, 292px);
min-height: 206px;
}
.web-shell[data-view="home"] .omni-home__feature-stats {
position: relative;
inset: auto;
margin-top: 18px;
max-width: none;
justify-content: flex-start;
}
.web-shell[data-view="home"] .omni-home__experience-routes {
grid-template-columns: 1fr 1fr;
gap: 10px;
}
.web-shell[data-view="home"] .omni-home__experience-route {
min-height: 84px;
padding: 13px 14px;
}
.web-shell[data-view="home"] .omni-home__experience-route b {
font-size: 22px;
}
}
@media (max-width: 480px) {
.web-shell[data-view="home"] .omni-home {
--home-safe-inline: 14px;
}
.web-shell[data-view="home"] .omni-home__shell {
padding-top: 20px;
padding-bottom: 32px;
}
.web-shell[data-view="home"] .omni-home__hero {
gap: 14px;
}
.web-shell[data-view="home"] .omni-home__copy {
gap: 10px;
}
.web-shell[data-view="home"] .omni-home__carousel {
min-height: clamp(228px, 68vw, 286px);
}
.web-shell[data-view="home"] .omni-home__carousel-stage {
height: clamp(218px, 64vw, 274px);
}
.web-shell[data-view="home"] .omni-home__carousel-deck {
transform: scale(1);
}
.web-shell[data-view="home"] .omni-home__carousel-card {
width: 94vw;
height: 52.88vw;
min-height: 188px;
}
.web-shell[data-view="home"] .omni-home__feature-page,
.web-shell[data-view="home"] .omni-home__experience {
padding-block: 34px 44px;
}
.web-shell[data-view="home"] :is(
.omni-home__shell,
.omni-home__feature-page,
.omni-home__toolbox-page,
.omni-home__experience
) {
scroll-margin-top: 60px;
}
.web-shell[data-view="home"] .omni-home__feature-page.is-script .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-model .omni-home__feature-visual,
.web-shell[data-view="home"] .omni-home__feature-page.is-ecommerce .omni-home__feature-visual {
min-height: 560px;
}
.web-shell[data-view="home"] .omni-home__experience-routes {
grid-template-columns: 1fr;
}
.web-shell[data-view="home"] .cookie-consent {
right: 10px;
bottom: max(10px, env(safe-area-inset-bottom));
grid-template-columns: 1fr;
width: calc(100vw - 20px);
padding: 12px;
}
.web-shell[data-view="home"] .cookie-consent p {
display: -webkit-box;
overflow: hidden;
text-overflow: initial;
white-space: normal;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.web-shell[data-view="home"] .cookie-consent__actions {
justify-content: stretch;
}
.web-shell[data-view="home"] .cookie-consent__actions a,
.web-shell[data-view="home"] .cookie-consent__actions button {
flex: 1 1 0;
}
}
+311 -117
View File
@@ -1,6 +1,11 @@
.more-page-v2 {
--more-card-shadow: 0 18px 48px rgba(0, 0, 0, 0.24);
--more-card-glow: 0 0 0 1px rgba(255, 255, 255, 0.025), 0 18px 38px rgba(0, 0, 0, 0.16);
--more-card-shadow: 0 22px 54px rgba(0, 0, 0, 0.3);
--more-card-glow: 0 0 0 1px rgba(255, 255, 255, 0.035), 0 16px 34px rgba(0, 0, 0, 0.18);
--more-card-surface: rgba(19, 23, 24, 0.86);
--more-card-surface-strong: rgba(22, 27, 28, 0.94);
--more-card-border: rgba(255, 255, 255, 0.105);
--more-card-border-strong: rgba(var(--accent-rgb), 0.3);
--more-page-pad-x: clamp(18px, 2.3vw, 32px);
position: relative;
display: grid;
@@ -158,24 +163,24 @@
.more-page-v2__scroll {
overflow-y: auto;
padding: 26px 28px 68px;
padding: 28px var(--more-page-pad-x) 72px;
scrollbar-color: rgba(var(--accent-rgb), 0.26) transparent;
}
.more-page-v2__section {
margin-bottom: 30px;
margin-bottom: 34px;
}
.more-page-v2__section-title {
display: flex;
align-items: center;
gap: 8px;
margin: 0 0 15px;
color: var(--fg-muted);
margin: 0 0 14px;
color: color-mix(in srgb, var(--fg-muted) 86%, var(--fg-body));
font-size: 12px;
font-weight: 800;
font-weight: 850;
text-transform: uppercase;
letter-spacing: 0.04em;
letter-spacing: 0.055em;
}
.more-page-v2__section-title .anticon {
@@ -199,27 +204,31 @@
.more-page-v2__recent-row {
display: flex;
gap: 12px;
gap: 10px;
flex-wrap: wrap;
}
.more-page-v2__featured-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 18px;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
}
.more-card--featured {
display: flex;
align-items: flex-start;
gap: 18px;
display: grid;
grid-template-columns: minmax(0, 1fr);
align-items: start;
justify-items: stretch;
gap: 12px;
min-height: 336px;
padding: 20px;
border-color: rgba(var(--accent-rgb), 0.18);
border-color: rgba(var(--accent-rgb), 0.2);
border-radius: var(--radius-xs, 8px);
background:
var(--card-gradient),
linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.012)),
var(--bg-panel);
radial-gradient(circle at 14% 4%, rgba(var(--accent-rgb), 0.12), transparent 36%),
linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.016)),
var(--more-card-surface-strong);
box-shadow: var(--more-card-glow);
position: relative;
overflow: hidden;
@@ -230,42 +239,52 @@
position: absolute;
inset: 0;
background:
linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.035), transparent),
linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 34%);
opacity: 0.5;
linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.038), transparent),
linear-gradient(180deg, rgba(255, 255, 255, 0.05), transparent 34%);
opacity: 0.62;
pointer-events: none;
}
.more-card--featured:hover {
border-color: rgba(var(--accent-rgb), 0.45);
transform: translateY(-3px);
box-shadow: var(--more-card-shadow), 0 0 0 1px rgba(var(--accent-rgb), 0.1);
}
.more-card__featured-icon {
display: grid;
place-items: center;
width: 52px;
height: 52px;
border: 1px solid rgba(var(--accent-rgb), 0.22);
border-radius: var(--radius-xs, 8px);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.16), rgba(var(--accent-rgb), 0.08)),
var(--bg-inset);
color: var(--accent);
font-size: 24px;
flex-shrink: 0;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
border-color: rgba(var(--accent-rgb), 0.46);
transform: translateY(-2px);
box-shadow: var(--more-card-shadow), 0 0 0 1px rgba(var(--accent-rgb), 0.12);
}
.more-card__featured-body {
display: flex;
flex-direction: column;
gap: 9px;
gap: 10px;
justify-self: stretch;
width: 100%;
height: 100%;
min-width: 0;
text-align: left;
}
.more-card--featured .more-card__preview {
width: 100%;
min-height: 0;
aspect-ratio: 4 / 3;
}
.more-card--featured .more-card__preview-frame img {
padding: 8px;
object-fit: contain;
}
.more-card--featured.more-card--no-preview {
min-height: 0;
}
.more-card--featured.more-card--no-preview .more-card__featured-body {
justify-content: flex-start;
}
.more-card--featured.more-card--no-preview .more-card__outcome {
margin-top: 4px;
}
.more-card__featured-kicker {
width: fit-content;
color: var(--accent);
@@ -277,14 +296,14 @@
.more-card__featured-body strong {
color: var(--fg-body);
font-size: 18px;
font-weight: 800;
font-size: 20px;
font-weight: 850;
line-height: 1.25;
}
.more-card__featured-desc {
font-size: 13px;
color: var(--fg-muted);
color: color-mix(in srgb, var(--fg-muted) 88%, var(--fg-body));
line-height: 1.5;
}
@@ -327,20 +346,23 @@
display: inline-flex;
align-items: center;
width: fit-content;
min-height: 28px;
margin-top: 0;
padding: 0 10px;
border: 1px solid rgba(var(--accent-rgb), 0.28);
min-height: 32px;
margin-top: auto;
padding: 0 12px;
border: 1px solid rgba(var(--accent-rgb), 0.34);
border-radius: var(--radius-xs, 8px);
background: rgba(var(--accent-rgb), 0.08);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.16), rgba(var(--accent-rgb), 0.08)),
rgba(var(--accent-rgb), 0.06);
font-size: 12px;
font-weight: 800;
font-weight: 850;
color: var(--accent) !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.more-page-v2__grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(236px, 1fr));
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 16px;
}
@@ -350,18 +372,22 @@
align-content: start;
justify-items: start;
min-width: 0;
gap: 10px;
min-height: 392px;
gap: 12px;
padding: 18px;
border: 1px solid var(--border-weak);
border: 1px solid var(--more-card-border);
border-radius: var(--radius-xs, 8px);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.032), transparent 42%),
var(--bg-panel);
radial-gradient(circle at 12% 0%, rgba(var(--accent-rgb), 0.055), transparent 34%),
linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 42%),
var(--more-card-surface);
color: var(--fg-body);
font: inherit;
text-align: left;
cursor: pointer;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.035),
0 1px 0 rgba(255, 255, 255, 0.02);
transition:
border-color 160ms ease,
background 160ms ease,
@@ -370,12 +396,19 @@
}
.more-card:hover {
border-color: rgba(var(--accent-rgb), 0.38);
border-color: var(--more-card-border-strong);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 46%),
var(--bg-hover, rgba(255, 255, 255, 0.03));
radial-gradient(circle at 12% 0%, rgba(var(--accent-rgb), 0.085), transparent 36%),
linear-gradient(180deg, rgba(255, 255, 255, 0.052), transparent 46%),
rgba(24, 29, 30, 0.94);
transform: translateY(-2px);
box-shadow: var(--more-card-glow), 0 10px 26px rgba(0, 0, 0, 0.16);
box-shadow: var(--more-card-glow), 0 14px 30px rgba(0, 0, 0, 0.18);
}
.more-card:active,
.more-page-v2__filters button:active,
.more-page-v2__empty-action:active {
transform: translateY(0);
}
.more-card--pending {
@@ -395,17 +428,20 @@
display: flex;
align-items: center;
gap: 10px;
min-width: 150px;
min-height: 54px;
padding: 10px 14px;
border-color: rgba(var(--accent-rgb), 0.14);
min-width: 164px;
min-height: 58px;
padding: 11px 14px;
border-color: rgba(var(--accent-rgb), 0.16);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.038), rgba(255, 255, 255, 0.016)),
rgba(18, 23, 24, 0.88);
}
.more-card__icon {
display: grid;
display: none;
place-items: center;
width: 40px;
height: 40px;
width: 38px;
height: 38px;
border: 1px solid rgba(var(--accent-rgb), 0.16);
border-radius: var(--radius-xs, 8px);
background:
@@ -417,6 +453,7 @@
}
.more-card--recent .more-card__icon {
display: grid;
width: 30px;
height: 30px;
font-size: 14px;
@@ -437,15 +474,15 @@
.more-card strong {
max-width: 100%;
color: var(--fg-body);
font-size: 14px;
font-weight: 800;
line-height: 1.35;
font-size: 16px;
font-weight: 850;
line-height: 1.28;
}
.more-card__topline {
position: absolute;
top: 14px;
right: 14px;
top: 18px;
right: 18px;
display: inline-flex;
flex-wrap: wrap;
justify-content: flex-end;
@@ -472,9 +509,9 @@
position: relative;
display: block;
width: 100%;
min-height: 92px;
min-height: 104px;
overflow: hidden;
border: 1px solid rgba(var(--accent-rgb), 0.28);
border: 1px solid rgba(var(--accent-rgb), 0.24);
border-radius: 10px;
background:
linear-gradient(135deg, rgba(var(--accent-rgb), 0.1), transparent 34%),
@@ -483,8 +520,7 @@
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.08),
inset 0 -1px 0 rgba(0, 0, 0, 0.34),
0 0 20px rgba(var(--accent-rgb), 0.08);
clip-path: polygon(0 10px, 10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
0 0 18px rgba(var(--accent-rgb), 0.07);
isolation: isolate;
}
@@ -506,7 +542,6 @@
inset: 5px;
z-index: 3;
border: 1px solid rgba(var(--accent-rgb), 0.16);
clip-path: polygon(0 8px, 8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%);
content: "";
pointer-events: none;
}
@@ -880,15 +915,102 @@
border-radius: 8px;
}
.more-card__preview {
position: relative;
display: block;
width: 100%;
aspect-ratio: 1.42 / 1;
overflow: visible;
isolation: isolate;
}
.more-card__preview-frame {
position: absolute;
inset: 0;
display: block;
overflow: hidden;
border: 1px solid rgba(var(--accent-rgb), 0.22);
border-radius: var(--radius-xs, 8px);
background:
radial-gradient(circle at 50% 42%, rgba(var(--accent-rgb), 0.12), transparent 56%),
linear-gradient(135deg, rgba(var(--accent-rgb), 0.08), transparent 34%),
var(--bg-inset);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.07),
0 0 18px rgba(var(--accent-rgb), 0.06);
}
.more-card__preview-frame::after {
position: absolute;
inset: 0;
z-index: 1;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 34%, rgba(0, 0, 0, 0.18)),
linear-gradient(90deg, rgba(255, 255, 255, 0.045), transparent 38%, rgba(255, 255, 255, 0.025));
content: "";
pointer-events: none;
}
.more-card__preview-frame img,
.more-card__preview-popover {
display: block;
width: 100%;
height: 100%;
object-fit: contain;
padding: 6px;
transform: none;
transition:
filter 220ms ease;
}
.more-card:hover .more-card__preview-frame img {
filter: saturate(1.05) contrast(1.02);
}
.more-card__preview-popover {
position: absolute;
left: 50%;
bottom: calc(100% + 12px);
z-index: 20;
width: min(420px, calc(100vw - 48px));
height: auto;
max-height: min(360px, 58vh);
padding: 10px;
border: 1px solid rgba(var(--accent-rgb), 0.34);
border-radius: var(--radius-xs, 8px);
background:
radial-gradient(circle at 50% 20%, rgba(var(--accent-rgb), 0.12), transparent 52%),
rgba(10, 14, 14, 0.96);
box-shadow:
0 28px 68px rgba(0, 0, 0, 0.46),
0 0 0 1px rgba(255, 255, 255, 0.04);
opacity: 0;
pointer-events: none;
transform: translate(-50%, 8px) scale(0.96);
transform-origin: 50% 100%;
transition:
opacity 160ms ease,
transform 160ms ease;
}
.more-card__preview:hover .more-card__preview-popover {
opacity: 1;
transform: translate(-50%, 0) scale(1);
}
.more-card--featured .more-card__preview-popover {
display: none;
}
.more-card__desc {
color: var(--fg-muted);
color: color-mix(in srgb, var(--fg-muted) 88%, var(--fg-body));
font-size: 12.5px;
line-height: 1.5;
line-height: 1.55;
}
.more-card__use-case {
display: block;
min-height: 38px;
min-height: 50px;
color: color-mix(in srgb, var(--fg-muted) 78%, var(--fg-body));
font-size: 12px;
line-height: 1.55;
@@ -898,15 +1020,15 @@
display: inline-flex;
align-items: center;
width: fit-content;
min-height: 26px;
margin-top: 2px;
padding: 0 9px;
border: 1px solid rgba(255, 255, 255, 0.08);
min-height: 30px;
margin-top: auto;
padding: 0 10px;
border: 1px solid rgba(255, 255, 255, 0.09);
border-radius: var(--radius-xs, 8px);
background: rgba(255, 255, 255, 0.035);
color: var(--fg-body);
font-size: 11px;
font-weight: 800;
font-weight: 850;
transition:
border-color 160ms ease,
background 160ms ease,
@@ -915,8 +1037,8 @@
}
.more-card:hover .more-card__action {
border-color: rgba(var(--accent-rgb), 0.28);
background: rgba(var(--accent-rgb), 0.08);
border-color: rgba(var(--accent-rgb), 0.32);
background: rgba(var(--accent-rgb), 0.1);
color: var(--accent);
transform: translateX(2px);
}
@@ -936,14 +1058,15 @@
.more-page-v2__empty {
display: grid;
justify-items: center;
gap: 10px;
min-height: 220px;
padding: 34px 20px;
border: 1px solid var(--border-weak);
gap: 12px;
min-height: 238px;
padding: 38px 22px;
border: 1px solid var(--more-card-border);
border-radius: var(--radius-xs, 8px);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.065), transparent 64%),
var(--bg-panel);
radial-gradient(circle at 50% 0%, rgba(var(--accent-rgb), 0.1), transparent 42%),
linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 64%),
var(--more-card-surface);
color: var(--fg-muted);
text-align: center;
}
@@ -951,11 +1074,13 @@
.more-page-v2__empty-icon {
display: grid;
place-items: center;
width: 48px;
height: 48px;
width: 52px;
height: 52px;
border: 1px solid rgba(var(--accent-rgb), 0.22);
border-radius: var(--radius-xs, 8px);
background: rgba(var(--accent-rgb), 0.1);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.16), rgba(var(--accent-rgb), 0.08)),
rgba(var(--accent-rgb), 0.08);
color: var(--accent);
font-size: 20px;
}
@@ -978,12 +1103,14 @@
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 34px;
min-height: 36px;
margin-top: 4px;
padding: 0 12px;
border: 1px solid rgba(var(--accent-rgb), 0.32);
padding: 0 14px;
border: 1px solid rgba(var(--accent-rgb), 0.36);
border-radius: var(--radius-xs, 8px);
background: rgba(var(--accent-rgb), 0.08);
background:
linear-gradient(180deg, rgba(var(--accent-rgb), 0.14), rgba(var(--accent-rgb), 0.08)),
rgba(var(--accent-rgb), 0.06);
color: var(--accent);
font: inherit;
font-size: 12px;
@@ -1013,6 +1140,7 @@
.more-page-v2__header {
grid-template-columns: minmax(180px, auto) minmax(0, 1fr);
gap: 14px;
}
.more-page-v2__filters {
@@ -1023,15 +1151,21 @@
@media (max-width: 860px) {
.more-page-v2 {
--more-page-pad-x: 16px;
padding-left: 0;
}
.more-page-v2__header {
grid-template-columns: minmax(0, 1fr);
padding: 14px 16px 12px;
padding: 16px 16px 14px;
gap: 12px;
}
.more-page-v2__header h1 {
font-size: 24px;
}
.more-page-v2__header-meta {
gap: 6px;
}
@@ -1047,13 +1181,22 @@
padding-right: 16px;
}
.more-page-v2__filters button {
min-height: 31px;
padding: 0 10px;
}
.more-page-v2__scroll {
padding: 16px 16px 48px;
padding: 18px 16px 52px;
}
.more-page-v2__section {
margin-bottom: 26px;
}
.more-page-v2__grid {
grid-template-columns: repeat(auto-fill, minmax(172px, 1fr));
gap: 12px;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 14px;
}
.more-page-v2__recent-row {
@@ -1063,23 +1206,24 @@
}
.more-page-v2__featured-grid {
grid-template-columns: 1fr;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
}
.more-card--featured {
grid-template-columns: minmax(0, 1fr);
min-height: 0;
padding: 16px;
gap: 12px;
}
.more-card__featured-icon {
width: 42px;
height: 42px;
font-size: 20px;
.more-card__featured-body strong {
font-size: 16px;
}
.more-card__featured-body strong {
font-size: 15px;
.more-card--featured .more-card__preview {
width: 100%;
min-height: 176px;
}
.more-card__featured-kicker,
@@ -1097,8 +1241,13 @@
font-size: 10px;
}
.more-card__compare {
min-height: 82px;
.more-card__preview {
min-height: 190px;
}
.more-card {
min-height: 394px;
padding: 16px;
}
.more-card__topline {
@@ -1108,24 +1257,69 @@
}
.more-card__use-case {
min-height: 54px;
min-height: 46px;
}
}
@media (max-width: 520px) {
.more-page-v2__header {
gap: 10px;
padding-top: 14px;
}
.more-page-v2__header-meta {
overflow-x: auto;
flex-wrap: nowrap;
margin-right: -16px;
padding-right: 16px;
scrollbar-width: none;
}
.more-page-v2__header-meta::-webkit-scrollbar {
display: none;
}
.more-page-v2__grid {
grid-template-columns: 1fr;
}
.more-card {
gap: 9px;
.more-page-v2__featured-grid {
grid-template-columns: 1fr;
}
.more-card__compare {
min-height: 94px;
.more-page-v2__section-title {
margin-bottom: 12px;
}
.more-card--featured {
grid-template-columns: 1fr;
padding: 15px;
}
.more-card {
gap: 10px;
min-height: 0;
padding: 15px;
}
.more-card__preview {
min-height: 190px;
}
.more-card__use-case {
min-height: 0;
}
.more-card__action,
.more-card__cta {
min-height: 32px;
width: 100%;
justify-content: center;
}
}
@media (hover: none) {
.more-card__preview-popover {
display: none;
}
}
+165 -26
View File
@@ -684,12 +684,6 @@
}
@container (max-width: 1120px) {
.omni-script-review-showcase {
grid-template-columns: 1fr;
gap: 18px;
overflow-y: auto;
}
.srs-left-panel {
grid-template-rows: auto auto auto;
gap: 16px;
@@ -711,13 +705,32 @@
}
.srs-results-panel {
grid-template-rows: auto minmax(320px, auto) auto;
grid-template-rows: auto minmax(300px, auto) auto;
}
}
@media (max-width: 980px) {
.omni-script-review-showcase {
padding: 22px;
@container (max-width: 880px) {
.srs-brand-section {
gap: 12px;
}
.srs-brand-section h1 {
max-width: 100%;
font-size: clamp(28px, 8cqw, 44px);
}
.srs-brand-section p {
font-size: clamp(14px, 3.2cqw, 17px);
line-height: 1.65;
}
.srs-point-card {
min-height: 0;
border-radius: 10px;
}
.srs-results-panel {
gap: 14px;
}
.srs-score-hero {
@@ -729,33 +742,118 @@
display: none;
}
.srs-chart-body,
.srs-triple-section,
.srs-point-list {
grid-template-columns: 1fr;
}
.srs-chart-col {
grid-template-columns: minmax(70px, 92px) minmax(0, 1fr);
grid-template-rows: auto;
align-items: center;
justify-items: stretch;
}
.srs-chart-bar-wrap {
min-height: 80px;
}
.srs-chart-col-label {
text-align: left;
.srs-score-summary {
font-size: clamp(13px, 3cqw, 16px);
line-height: 1.55;
}
}
@media (max-width: 560px) {
.omni-script-review-showcase {
@container (max-width: 720px) {
.srs-chart-card {
padding: 16px;
}
.srs-chart-title {
letter-spacing: 0.04em;
}
.srs-chart-body {
grid-template-columns: 1fr;
gap: 12px;
padding-top: 14px;
}
.srs-chart-col {
grid-template-columns: minmax(94px, 0.36fr) minmax(0, 1fr);
grid-template-rows: auto;
align-items: center;
justify-items: stretch;
min-height: 46px;
border: 1px solid rgba(255, 255, 255, 0.055);
border-radius: 10px;
background: rgba(255, 255, 255, 0.03);
padding: 10px;
}
.srs-chart-bar-wrap {
grid-column: 2;
grid-row: 1;
width: 100%;
height: 16px;
min-height: 16px;
}
.srs-chart-bar-bg,
.srs-chart-bar-fill {
width: 100%;
height: 100% !important;
border-radius: 999px;
}
.srs-chart-bar-bg {
left: 0;
transform: none;
}
.srs-chart-bar-fill {
transform-origin: left center;
}
.srs-chart-col:nth-child(1) .srs-chart-bar-fill { width: 80%; }
.srs-chart-col:nth-child(2) .srs-chart-bar-fill { width: 80%; }
.srs-chart-col:nth-child(3) .srs-chart-bar-fill { width: 100%; }
.srs-chart-col:nth-child(4) .srs-chart-bar-fill { width: 80%; }
.srs-chart-col:nth-child(5) .srs-chart-bar-fill { width: 66%; }
.srs-chart-col:nth-child(6) .srs-chart-bar-fill { width: 53%; }
.srs-chart-bar-score {
top: 50%;
right: 8px;
left: auto;
font-size: 12px;
transform: translateY(-50%);
}
.srs-chart-bar-sub,
.srs-chart-bar-star {
font-size: 10px;
}
.srs-chart-col-label {
grid-column: 1;
grid-row: 1;
text-align: left;
}
.srs-chart-col-name {
font-size: 13px;
}
.srs-chart-col-desc {
display: none;
}
.srs-triple-section {
gap: 12px;
}
.srs-section-card {
overflow: visible;
}
.srs-section-item-text {
display: block;
overflow: visible;
-webkit-line-clamp: initial;
}
}
@container (max-width: 560px) {
.srs-flow-card {
grid-template-columns: 1fr;
justify-items: stretch;
@@ -769,4 +867,45 @@
align-items: flex-start;
flex-direction: column;
}
.srs-score-tags {
gap: 6px;
}
.srs-score-tag {
min-height: 24px;
padding-inline: 9px;
}
.srs-chart-col {
grid-template-columns: 1fr;
gap: 8px;
}
.srs-chart-bar-wrap,
.srs-chart-col-label {
grid-column: 1;
grid-row: auto;
}
}
@media (max-width: 1120px) {
.omni-script-review-showcase {
grid-template-columns: 1fr;
gap: clamp(16px, 2.8vw, 24px);
overflow-y: visible;
padding: clamp(20px, 3vw, 34px);
}
}
@media (max-width: 880px) {
.omni-script-review-showcase {
padding: clamp(16px, 3.8vw, 24px);
}
}
@media (max-width: 560px) {
.omni-script-review-showcase {
padding: 16px;
}
}
+249
View File
@@ -889,3 +889,252 @@
animation: none;
}
}
/* ===== Home toolbox polish and responsive hardening ===== */
.web-shell[data-view="home"] .omni-home__toolbox-page {
--toolbox-radius-card: 16px;
--toolbox-radius-inner: 12px;
background:
linear-gradient(180deg, #070b10 0%, #05080d 100%),
radial-gradient(ellipse 70% 48% at 58% 42%, rgba(0, 255, 136, 0.045) 0%, transparent 70%);
}
.web-shell[data-view="home"] .omni-home__toolbox-shell {
width: min(100%, 1440px);
margin-inline: auto;
padding: clamp(34px, 5vw, 64px) clamp(18px, 5vw, 72px);
align-items: center;
}
.web-shell[data-view="home"] .omni-home__toolbox-left {
width: clamp(300px, 28vw, 420px);
gap: 14px;
padding-top: 0;
}
.web-shell[data-view="home"] .omni-home__toolbox-brand-icon {
width: 48px;
height: 48px;
border-radius: 13px;
box-shadow: 0 16px 32px rgba(0, 255, 136, 0.12);
}
.web-shell[data-view="home"] .omni-home__toolbox-brand-icon .anticon {
font-size: 24px;
}
.web-shell[data-view="home"] .omni-home__toolbox-brand-text {
font-size: clamp(24px, 2.3vw, 32px);
}
.web-shell[data-view="home"] .omni-home__toolbox-title {
color: #f7fff9;
background: none;
-webkit-text-fill-color: currentColor;
font-size: clamp(32px, 3.4vw, 46px);
letter-spacing: 0;
}
.web-shell[data-view="home"] .omni-home__toolbox-subtitle {
color: rgba(232, 238, 236, 0.68);
font-size: clamp(15px, 1.18vw, 17px);
}
.web-shell[data-view="home"] .omni-home__toolbox-item,
.web-shell[data-view="home"] .omni-home__toolbox-workflow,
.web-shell[data-view="home"] .omni-home__toolbox-card {
border-color: rgba(255, 255, 255, 0.1);
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.065), rgba(255, 255, 255, 0.028)),
rgba(10, 15, 16, 0.78);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.075),
0 18px 42px rgba(0, 0, 0, 0.2);
}
.web-shell[data-view="home"] .omni-home__toolbox-item {
border-radius: 14px;
padding: 14px 16px;
}
.web-shell[data-view="home"] .omni-home__toolbox-item:hover {
border-color: rgba(0, 255, 136, 0.24);
transform: translateX(3px);
}
.web-shell[data-view="home"] .omni-home__toolbox-item-icon {
width: 42px;
height: 42px;
border-radius: 11px;
font-size: 22px;
}
.web-shell[data-view="home"] .omni-home__toolbox-item-name {
font-size: 16px;
}
.web-shell[data-view="home"] .omni-home__toolbox-item-desc {
font-size: 13px;
color: rgba(232, 238, 236, 0.48);
}
.web-shell[data-view="home"] .omni-home__toolbox-workflow {
margin-top: 4px;
border-radius: 14px;
padding: 15px 17px;
}
.web-shell[data-view="home"] .omni-home__toolbox-workflow-label {
margin-bottom: 10px;
font-size: 12px;
letter-spacing: 0.04em;
}
.web-shell[data-view="home"] .omni-home__toolbox-workflow-steps {
gap: 8px;
font-size: 13px;
}
.web-shell[data-view="home"] .omni-home__toolbox-grid {
gap: 14px;
min-height: clamp(500px, 48vw, 680px);
}
.web-shell[data-view="home"] .omni-home__toolbox-card {
border-radius: var(--toolbox-radius-card);
transform: translateZ(0);
}
.web-shell[data-view="home"] .omni-home__toolbox-card:hover {
transform: translateY(-4px);
border-color: rgba(0, 255, 136, 0.24);
box-shadow:
0 22px 54px rgba(0, 0, 0, 0.28),
0 0 0 1px rgba(0, 255, 136, 0.07);
}
.web-shell[data-view="home"] .omni-home__toolbox-card-header {
padding: 15px 16px 0;
}
.web-shell[data-view="home"] .omni-home__toolbox-card-content {
padding: 10px 16px;
min-height: 0;
}
.web-shell[data-view="home"] .omni-home__toolbox-card-footer {
padding: 7px 16px 14px;
}
.web-shell[data-view="home"] :is(.toolbox-card1-side, .toolbox-card3-side, .toolbox-card4-side),
.web-shell[data-view="home"] :is(.toolbox-card1-img, .toolbox-card3-portrait, .toolbox-card4-img),
.web-shell[data-view="home"] .toolbox-card2-frame {
border-radius: var(--toolbox-radius-inner);
}
@media (max-width: 1160px) {
.web-shell[data-view="home"] .omni-home__toolbox-shell {
gap: 22px;
}
.web-shell[data-view="home"] .omni-home__toolbox-left {
width: clamp(280px, 32vw, 360px);
}
.web-shell[data-view="home"] .omni-home__toolbox-grid {
min-height: clamp(460px, 58vw, 620px);
}
}
@media (max-width: 980px) {
.web-shell[data-view="home"] .omni-home__toolbox-page {
min-height: auto;
}
.web-shell[data-view="home"] .omni-home__toolbox-shell {
min-height: auto;
padding-block: clamp(42px, 7vw, 64px);
}
.web-shell[data-view="home"] .omni-home__toolbox-left {
width: min(100%, 760px);
}
.web-shell[data-view="home"] .omni-home__toolbox-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.web-shell[data-view="home"] .omni-home__toolbox-workflow {
width: 100%;
}
.web-shell[data-view="home"] .omni-home__toolbox-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
min-height: auto;
}
.web-shell[data-view="home"] .omni-home__toolbox-card {
min-height: clamp(230px, 34vw, 300px);
}
}
@media (max-width: 680px) {
.web-shell[data-view="home"] .omni-home__toolbox-shell {
padding-inline: 14px;
gap: 18px;
}
.web-shell[data-view="home"] .omni-home__toolbox-brand-icon {
width: 42px;
height: 42px;
}
.web-shell[data-view="home"] .omni-home__toolbox-brand-text {
font-size: 22px;
}
.web-shell[data-view="home"] .omni-home__toolbox-title {
font-size: clamp(26px, 7vw, 34px);
}
.web-shell[data-view="home"] .omni-home__toolbox-list,
.web-shell[data-view="home"] .omni-home__toolbox-grid {
grid-template-columns: 1fr;
}
.web-shell[data-view="home"] .omni-home__toolbox-item {
align-items: center;
}
.web-shell[data-view="home"] .omni-home__toolbox-card {
min-height: 236px;
}
.web-shell[data-view="home"] .omni-home__toolbox-card-header {
align-items: flex-start;
gap: 10px;
}
.web-shell[data-view="home"] .omni-home__toolbox-card-tag {
flex-shrink: 0;
}
}
@media (max-width: 420px) {
.web-shell[data-view="home"] .omni-home__toolbox-workflow-steps {
align-items: flex-start;
}
.web-shell[data-view="home"] .omni-home__toolbox-workflow-arrow {
display: none;
}
.web-shell[data-view="home"] .omni-home__toolbox-card {
min-height: 220px;
}
.web-shell[data-view="home"] .omni-home__toolbox-card-footer {
gap: 5px;
}
}
+284 -37
View File
@@ -443,23 +443,23 @@
@media (max-width: 720px) {
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal {
align-items: stretch;
padding: calc(56px + env(safe-area-inset-top, 0px)) 0 0;
align-items: center;
padding: calc(56px + env(safe-area-inset-top, 0px) + 10px) 12px 12px;
background:
radial-gradient(circle at 50% 34%, rgba(var(--accent-rgb), 0.12), transparent 42%),
rgba(0, 0, 0, 0.78);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__panel {
--prompt-case-modal-max-height: calc(100svh - 56px - env(safe-area-inset-top, 0px));
--prompt-case-modal-max-height: calc(100svh - 56px - env(safe-area-inset-top, 0px) - 22px);
display: grid;
grid-template-rows: minmax(0, 1fr) minmax(210px, 34%);
width: 100%;
grid-template-rows: minmax(0, 60%) minmax(220px, 40%);
width: min(100%, 520px);
height: var(--prompt-case-modal-max-height);
max-height: var(--prompt-case-modal-max-height);
overflow: hidden;
border: 0;
border-radius: 0;
border: 1px solid rgba(var(--accent-rgb), 0.34);
border-radius: 22px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.045), rgba(255, 255, 255, 0.018)),
rgba(5, 8, 10, 0.96);
@@ -467,6 +467,7 @@
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__media {
min-height: 0;
align-content: center;
padding: 14px 14px 8px;
overflow: hidden;
background:
@@ -479,7 +480,7 @@
width: 100%;
height: 100%;
max-height: none;
border-radius: 16px;
border-radius: 12px;
object-fit: contain;
background: rgba(0, 0, 0, 0.18);
box-shadow:
@@ -490,12 +491,12 @@
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__panel,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__panel {
grid-template-columns: 1fr;
grid-template-rows: minmax(0, 1fr) minmax(220px, 32%);
grid-template-rows: minmax(0, 62%) minmax(220px, 38%);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__media,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__media {
padding: 12px 14px 8px;
padding: 14px 14px 8px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__media img,
@@ -510,35 +511,36 @@
grid-template-rows: auto auto minmax(0, 1fr) auto;
min-height: 0;
max-height: none;
gap: 11px;
overflow-y: auto;
margin-top: -16px;
padding: 20px 16px 16px;
gap: 10px;
overflow: hidden;
margin-top: -14px;
padding: 18px 16px 16px;
border-top: 1px solid rgba(255, 255, 255, 0.12);
border-left: 0;
border-radius: 24px 24px 0 0;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.018)),
rgba(12, 17, 19, 0.99);
box-shadow: 0 -18px 38px rgba(0, 0, 0, 0.24);
box-shadow: 0 -18px 38px rgba(0, 0, 0, 0.28);
scrollbar-width: thin;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__sidebar,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__sidebar {
margin-top: -16px;
padding: 20px 16px 16px;
margin-top: -14px;
padding: 18px 16px 16px;
border-top: 1px solid rgba(255, 255, 255, 0.12);
border-left: 0;
border-radius: 24px 24px 0 0;
box-shadow: 0 -18px 38px rgba(0, 0, 0, 0.26);
box-shadow: 0 -18px 38px rgba(0, 0, 0, 0.28);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__close {
top: 16px;
right: 16px;
top: 14px;
right: 14px;
z-index: 3;
width: 34px;
height: 34px;
width: 32px;
height: 32px;
border-color: rgba(255, 255, 255, 0.18);
background: rgba(8, 10, 11, 0.72);
color: rgba(243, 245, 242, 0.78);
@@ -546,29 +548,38 @@
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author {
gap: 10px;
grid-template-columns: 32px minmax(0, 1fr);
gap: 9px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author > span {
width: 34px;
height: 34px;
font-size: 13px;
width: 32px;
height: 32px;
font-size: 12px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta {
gap: 7px;
padding-bottom: 11px;
gap: 6px;
min-height: 0;
padding-bottom: 9px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta h2 {
font-size: 18px;
font-size: 17px;
line-height: 1.28;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta p,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-prompt p {
font-size: 13px;
line-height: 1.58;
line-height: 1.52;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta p {
display: -webkit-box;
overflow: hidden;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-long-copy .wb-prompt-case-meta p {
@@ -579,17 +590,17 @@
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-prompt {
gap: 7px;
gap: 6px;
padding: 12px;
border-radius: 14px;
background: rgba(255, 255, 255, 0.035);
overflow: auto;
min-height: 0;
max-height: 132px;
max-height: none;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-long-copy .wb-prompt-case-prompt {
max-height: 118px;
max-height: none;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-prompt,
@@ -608,13 +619,15 @@
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-actions button {
min-height: 40px;
padding: 0 10px;
border-radius: 12px;
font-size: 12px;
white-space: nowrap;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-actions,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-actions {
grid-template-columns: 1fr;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@@ -625,14 +638,15 @@
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__panel {
grid-template-rows: minmax(0, 1fr) minmax(230px, 38%);
border-radius: 0;
grid-template-columns: 1fr;
grid-template-rows: minmax(0, 58%) minmax(230px, 42%);
border-radius: 20px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__panel,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__panel {
grid-template-columns: 1fr;
grid-template-rows: minmax(0, 1fr) minmax(230px, 38%);
grid-template-rows: minmax(0, 60%) minmax(230px, 40%);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__media {
@@ -1689,6 +1703,239 @@
}
}
@media (max-width: 720px) {
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal {
align-items: center;
padding: calc(56px + env(safe-area-inset-top, 0px) + 10px) 10px 12px;
background:
radial-gradient(circle at 50% 28%, rgba(var(--accent-rgb), 0.12), transparent 42%),
rgba(0, 0, 0, 0.78);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__panel {
--prompt-case-modal-max-height: min(560px, calc(100svh - 56px - env(safe-area-inset-top, 0px) - 22px));
display: grid;
grid-template-columns: minmax(0, 1.08fr) minmax(188px, 0.92fr);
grid-template-rows: 1fr;
width: min(calc(100vw - 20px), 660px);
height: var(--prompt-case-modal-max-height);
max-height: var(--prompt-case-modal-max-height);
overflow: hidden;
border: 1px solid rgba(var(--accent-rgb), 0.32);
border-radius: 22px;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.018)),
rgba(5, 8, 10, 0.97);
box-shadow:
0 24px 64px rgba(0, 0, 0, 0.48),
inset 0 1px 0 rgba(255, 255, 255, 0.07);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__panel,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__panel {
grid-template-columns: minmax(0, 0.96fr) minmax(190px, 1.04fr);
grid-template-rows: 1fr;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__media,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__media,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__media {
display: grid;
place-items: center;
min-height: 0;
padding: 14px;
overflow: hidden;
background:
radial-gradient(circle at 50% 0%, rgba(var(--accent-rgb), 0.11), transparent 42%),
linear-gradient(180deg, rgba(255, 255, 255, 0.045), transparent 58%),
rgba(4, 8, 13, 0.98);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__media img,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__media img,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__media img {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
border-radius: 12px;
object-fit: contain;
background: rgba(0, 0, 0, 0.18);
box-shadow:
0 18px 42px rgba(0, 0, 0, 0.32),
0 0 0 1px rgba(255, 255, 255, 0.08);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__sidebar,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__sidebar,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__sidebar {
position: relative;
display: grid;
grid-template-rows: auto auto minmax(0, 1fr) auto;
align-self: stretch;
min-height: 0;
max-height: none;
gap: 9px;
overflow: hidden;
margin-top: 0;
padding: 16px 14px 14px;
border: 0;
border-left: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0;
background:
linear-gradient(180deg, rgba(255, 255, 255, 0.052), rgba(255, 255, 255, 0.018)),
rgba(12, 17, 19, 0.99);
box-shadow:
-14px 0 34px rgba(0, 0, 0, 0.22),
inset 0 1px 0 rgba(255, 255, 255, 0.06);
backdrop-filter: blur(16px);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__close {
top: 14px;
right: 14px;
z-index: 3;
width: 32px;
height: 32px;
border-color: rgba(255, 255, 255, 0.18);
border-radius: 11px;
background: rgba(8, 10, 11, 0.72);
color: rgba(243, 245, 242, 0.82);
box-shadow: 0 10px 24px rgba(0, 0, 0, 0.34);
backdrop-filter: blur(14px);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author {
grid-template-columns: 28px minmax(0, 1fr);
gap: 8px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author > span {
width: 28px;
height: 28px;
font-size: 11px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author strong {
font-size: 12px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-author em {
font-size: 11px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta {
min-height: 0;
gap: 5px;
padding-bottom: 8px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta h2 {
font-size: 15px;
line-height: 1.28;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-meta p,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-long-copy .wb-prompt-case-meta p {
display: -webkit-box;
overflow: hidden;
color: rgba(226, 232, 240, 0.82);
font-size: 12px;
line-height: 1.45;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-prompt,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-long-copy .wb-prompt-case-prompt,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-prompt,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-prompt {
min-height: 0;
max-height: none;
gap: 6px;
overflow: auto;
padding: 10px;
border: 1px solid rgba(255, 255, 255, 0.07);
border-radius: 12px;
background: rgba(255, 255, 255, 0.035);
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-prompt span {
font-size: 12px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-prompt p {
font-size: 12px;
line-height: 1.48;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-actions,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-actions,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-actions {
position: static;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 7px;
align-self: end;
margin: 0;
padding: 5px 0 0;
background: transparent;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-actions button {
min-height: 36px;
padding: 0 7px;
border-radius: 11px;
font-size: 11px;
white-space: nowrap;
}
}
@media (max-width: 420px) {
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal {
padding-right: 8px;
padding-left: 8px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__panel {
--prompt-case-modal-max-height: min(520px, calc(100svh - 56px - env(safe-area-inset-top, 0px) - 22px));
grid-template-columns: minmax(0, 0.9fr) minmax(172px, 1.1fr);
grid-template-rows: 1fr;
border-radius: 20px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__panel,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__panel {
grid-template-columns: minmax(0, 0.82fr) minmax(174px, 1.18fr);
grid-template-rows: 1fr;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__media,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__media,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__media {
padding: 10px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal__sidebar,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-modal__sidebar,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-modal__sidebar {
gap: 8px;
padding: 14px 10px 12px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-actions,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-portrait-media .wb-prompt-case-actions,
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-modal.is-tall-media .wb-prompt-case-actions {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 6px;
}
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-prompt-case-actions button {
min-height: 34px;
padding: 0 5px;
font-size: 10px;
}
}
@media (max-width: 980px) {
.web-shell[data-ui-theme="dark-green"][data-view="workbench"] .wb-home {
padding: 34px 18px 44px;
+29 -2
View File
@@ -144,6 +144,10 @@
}
.web-shell[data-ui-theme="dark-green"] .notification-center {
position: relative;
display: inline-flex;
align-items: center;
flex: 0 0 auto;
isolation: isolate;
}
@@ -170,10 +174,15 @@
}
.web-shell[data-ui-theme="dark-green"] .notification-center__panel {
position: absolute;
display: flex;
flex-direction: column;
top: calc(100% + 12px);
right: -88px;
z-index: 1200;
width: min(420px, calc(100vw - 24px));
max-height: min(560px, calc(100vh - 92px));
height: auto;
max-height: min(460px, calc(100dvh - 84px));
border: 1px solid var(--dg-line);
border-radius: 16px;
background: #151719;
@@ -231,9 +240,12 @@
}
.web-shell[data-ui-theme="dark-green"] .notification-center__list {
max-height: min(486px, calc(100vh - 158px));
flex: 1 1 auto;
min-height: 0;
max-height: min(386px, calc(100dvh - 158px));
padding: 8px;
overflow-y: auto;
overscroll-behavior: contain;
}
.web-shell[data-ui-theme="dark-green"] .notification-center__item {
@@ -10458,6 +10470,21 @@
gap: 6px;
}
.web-shell[data-ui-theme="dark-green"] .notification-center__panel {
right: clamp(-112px, -24vw, -92px);
width: min(360px, calc(100vw - 20px));
max-height: min(420px, calc(100dvh - 76px));
border-radius: 14px;
}
.web-shell[data-ui-theme="dark-green"] .notification-center__panel::before {
right: clamp(104px, 25vw, 124px);
}
.web-shell[data-ui-theme="dark-green"] .notification-center__list {
max-height: min(344px, calc(100dvh - 150px));
}
.web-shell[data-ui-theme="dark-green"] :is(.creator-button, .member-button) {
height: 32px;
padding: 0 10px;