diff --git a/.codex/skills/vue-bits-skill/README.md b/.codex/skills/vue-bits-skill/README.md new file mode 100644 index 0000000..faf96b0 --- /dev/null +++ b/.codex/skills/vue-bits-skill/README.md @@ -0,0 +1,165 @@ +# Vue-Bits Skill + +基于 [vue-bits.dev](https://vue-bits.dev) 极简创意设计哲学的 Vue 3 组件开发技能。专为消除 AI 生成前端代码的模板化、同质化问题而设计。 + +## 设计哲学 + +- **少即是多** — 移除一切不必要的装饰元素 +- **沉浸式交互** — 组件响应鼠标、滚动,让页面"活"起来 +- **精致的克制** — 动画服务于内容,是微妙的视觉增强,而非喧宾夺主 +- **暗色优先** — 大多数组件内置 `dark` prop,无缝配合 Tailwind `dark:` 类 +- **高性能** — 基于 `requestAnimationFrame`,GPU 加速,零依赖或极简依赖 + +## 组件分类 + +### 动画 (Animations) +| 组件 | 描述 | +|------|------| +| Splash Cursor | 鼠标驱动的流体色彩扩散 (WebGL 流体模拟) | +| Text Scramble | 终端风格字符随机化渐变为目标文本 | +| Profile Card | 3D 卡片沿椭圆轨道旋转,带物理惯性 | +| Infinite Menu | 圆形按钮点击后弹性分裂为多个子项 | +| Circular Gallery | 元素排列于圆形轨道,拖拽旋转,支持自动滚动 | +| AnimatedContent | 内容区域的进入/离开过渡动画 | + +### 文本动画 (Text Animations) +| 组件 | 描述 | +|------|------| +| Curved Loop | 文字沿 SVG `` 曲线路径无限滚动 | +| SplitText | 逐字/逐词飞入动画 (GSAP 风格,可配置交错延迟) | +| Text Pressure | 压力/变形文本效果 | +| Neon | 霓虹灯管发光文本,可配置颜色和闪烁 | +| Typewriter | 逐字符打字效果 | +| Kaleidoscope | 万花筒式文本变换 | +| Flow Light | 流光扫过式跑马灯文本效果 | + +### 背景 (Backgrounds) +| 组件 | 描述 | +|------|------| +| Pixel Blast | 深层粒子宇宙,像素簇呼吸/聚合,鼠标响应 | +| Grid Distortion | 网格扭曲/变形,涟漪式图案扰动 | +| Hyperspeed | 赛博朋克隧道穿越,滚轮透视拉伸 | +| Silk | 丝绸般流畅的动态背景 | +| Sparkles | 星光粒子闪烁背景,可配置密度和颜色 | +| Neon Grid | 霓虹灯管质感网格背景 | +| Ripple | 涟漪扩散背景 | +| FaultyTerminal | 老式终端 CRT 闪烁/故障效果背景 | + +### UI 组件 +| 组件 | 描述 | +|------|------| +| GradientButton | 渐变按钮,hover 缩放,可配置颜色断点 | +| Infinite Menu | 无限滚动菜单 | +| Circular Gallery | 圆形图片画廊 | +| Profile Card | 3D 个人资料卡片 | + +## 触发方式 + +当你向 Claude Code 描述以下任意需求时,此技能将**自动激活**: + +- 开发任何 Vue 前端组件 +- 提到关键词:动画、动效、文本动画、背景、组件、UI +- 优化现有前端界面或组件 +- 任何与前端视觉呈现或交互效果相关的请求 + +## 工作流程 + +技能激活后遵循严格的流程: + +1. **停止所有代码生成** — 不会立即输出代码 +2. **设计偏好询问** — 通过标准问卷了解你的需求: + - 视觉风格偏好(极简现代、赛博朋克、复古怀旧、玻璃拟态等) + - 动画效果类型(无限循环、悬停触发、滚动触发等) + - 交互功能需求(可拖拽、响应式、深色模式等) + - 配色方案和字体要求 +3. **确认后开发** — 仅在你明确回复偏好后才开始编写组件 + +## 质量标准 + +### 设计准则 +- 严格遵循 vue-bits.dev "少即是多" 的设计哲学 +- 动画稳定在 60fps,避免生硬过渡和过度动效 +- 配色满足 WCAG 无障碍对比度标准 +- 组件高度可定制,Props 接口清晰 +- 默认支持暗色模式 + +### 代码规范 +- Vue 3 Composition API + ` + + diff --git a/src/components/ThemeBackdrop.vue b/src/components/ThemeBackdrop.vue new file mode 100644 index 0000000..f154214 --- /dev/null +++ b/src/components/ThemeBackdrop.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/components/vue-bits/AnimatedContent.vue b/src/components/vue-bits/AnimatedContent.vue new file mode 100644 index 0000000..e6b3f76 --- /dev/null +++ b/src/components/vue-bits/AnimatedContent.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/src/components/vue-bits/DecryptedText.vue b/src/components/vue-bits/DecryptedText.vue new file mode 100644 index 0000000..70af482 --- /dev/null +++ b/src/components/vue-bits/DecryptedText.vue @@ -0,0 +1,360 @@ + + + diff --git a/src/components/vue-bits/FloatingLines.vue b/src/components/vue-bits/FloatingLines.vue new file mode 100644 index 0000000..fd70ce3 --- /dev/null +++ b/src/components/vue-bits/FloatingLines.vue @@ -0,0 +1,537 @@ + + + diff --git a/src/components/vue-bits/Galaxy.vue b/src/components/vue-bits/Galaxy.vue new file mode 100644 index 0000000..e92341f --- /dev/null +++ b/src/components/vue-bits/Galaxy.vue @@ -0,0 +1,369 @@ + + + diff --git a/src/components/vue-bits/Magnet.vue b/src/components/vue-bits/Magnet.vue new file mode 100644 index 0000000..cb1ced3 --- /dev/null +++ b/src/components/vue-bits/Magnet.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/vue-bits/ScrollStack.vue b/src/components/vue-bits/ScrollStack.vue new file mode 100644 index 0000000..0bd55f3 --- /dev/null +++ b/src/components/vue-bits/ScrollStack.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/src/components/vue-bits/Silk.vue b/src/components/vue-bits/Silk.vue new file mode 100644 index 0000000..b91661a --- /dev/null +++ b/src/components/vue-bits/Silk.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/components/vue-bits/SplitText.vue b/src/components/vue-bits/SplitText.vue new file mode 100644 index 0000000..4d8b2b2 --- /dev/null +++ b/src/components/vue-bits/SplitText.vue @@ -0,0 +1,197 @@ + + + diff --git a/src/layouts/Header.vue b/src/layouts/Header.vue index 5dfaf00..89e1a38 100644 --- a/src/layouts/Header.vue +++ b/src/layouts/Header.vue @@ -1,32 +1,42 @@ - - - diff --git a/src/router/index.js b/src/router/index.js index 796771d..1534939 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -2,14 +2,14 @@ import { createRouter, createWebHistory } from 'vue-router' import { useUserStore } from '@/stores/user' import MainLayout from '@/layouts/Header.vue' -// 在路由配置中添加个人中心路由 const routes = [ { path: '/', component: MainLayout, children: [ { path: '', name: 'Home', component: () => import('@/views/index/index.vue') }, - ] + { path: 'product', name: 'Product', component: () => import('@/views/product/index.vue') }, + ], }, ] @@ -17,11 +17,13 @@ const router = createRouter({ history: createWebHistory(), routes, scrollBehavior(to, from, savedPosition) { - return savedPosition || { top: 0 } - } + if (savedPosition) return savedPosition + if (to.hash) return { el: to.hash, top: 96, behavior: 'smooth' } + return { top: 0 } + }, }) -router.beforeEach((to, from) => { +router.beforeEach((to) => { const userStore = useUserStore() if (to.meta.requiresAuth && !userStore.user) { return { name: 'Login', query: { redirect: to.fullPath } } @@ -29,10 +31,3 @@ router.beforeEach((to, from) => { }) export default router - -router.beforeEach((to, from) => { - const userStore = useUserStore() - if (to.meta.requiresAuth && !userStore.user) { - return { name: 'Login', query: { redirect: to.fullPath } } - } -}) diff --git a/src/site.config.js b/src/site.config.js new file mode 100644 index 0000000..bc12b76 --- /dev/null +++ b/src/site.config.js @@ -0,0 +1,225 @@ +export const siteConfig = { + brand: { + name: '萧康云医', + tagline: '让县域医疗拥有云端协同能力', + description: '面向医疗集团、医共体、互联网医院与连锁诊所的一体化智慧医疗 SaaS 平台。' + }, + navigation: { + primary: [ + { label: '首页', to: '/' }, + { label: '产品', to: '/product' } + ], + secondary: { + home: [ + { label: '业务介绍', to: '/#business' }, + { label: '产品简介', to: '/#intro' }, + { label: '客户案例', to: '/#cases' }, + { label: '联系咨询', to: '/#contact' } + ], + product: [ + { label: '功能说明', to: '/product#features' }, + { label: '演示视频', to: '/product#demo' }, + { label: '定价计划', to: '/product#pricing' }, + { label: 'FAQ', to: '/product#faq' }, + { label: '联系方式', to: '/product#contact' } + ] + } + }, + hero: { + mode: 'video', + video: { + src: 'https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260406_094145_4a271a6c-3869-4f1c-8aa7-aeb0cb227994.mp4', + poster: 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?auto=format&fit=crop&w=2200&q=85' + } + }, + contact: { + phone: '400-820-9618', + email: 'hello@xiaokangcloudmed.cn', + address: '上海市浦东新区张江医疗创新园' + } +} + +export const metrics = [ + { value: '1200+', label: '接入医疗机构' }, + { value: '38%', label: '随访效率提升' }, + { value: '99.95%', label: '服务可用性' }, + { value: '7x24', label: '医疗级运维响应' } +] + +export const homeMarqueeItems = [ + { + title: '区域会诊指挥台', + meta: 'Remote Care', + image: 'https://images.unsplash.com/photo-1581093458791-9d15482442f6?auto=format&fit=crop&w=900&q=82' + }, + { + title: '患者主索引', + meta: 'Cloud EMR', + image: 'https://images.unsplash.com/photo-1559757148-5c350d0d3c56?auto=format&fit=crop&w=900&q=82' + }, + { + title: '慢病风险雷达', + meta: 'AI Alert', + image: 'https://images.unsplash.com/photo-1576091160399-112ba8d25d1d?auto=format&fit=crop&w=900&q=82' + }, + { + title: '移动随访工作流', + meta: 'Follow-up', + image: 'https://images.unsplash.com/photo-1576671081837-49000212a370?auto=format&fit=crop&w=900&q=82' + }, + { + title: '质控运营驾驶舱', + meta: 'Operations', + image: 'https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=900&q=82' + }, + { + title: '院外服务触达', + meta: 'Patient App', + image: 'https://images.unsplash.com/photo-1579684385127-1ef15d508118?auto=format&fit=crop&w=900&q=82' + } +] + +export const homeServiceItems = [ + { + number: '01', + name: '云诊疗协同', + description: '把转诊、会诊、检查互认和医嘱流转放进同一套跨机构任务流。' + }, + { + number: '02', + name: '慢病连续管理', + description: '围绕高血压、糖尿病、康复等场景建立院内院外一体化随访闭环。' + }, + { + number: '03', + name: 'AI 风险预警', + description: '结合规则和评分模型,帮助医生优先处理真正需要关注的患者。' + }, + { + number: '04', + name: '合规权限治理', + description: '按机构、科室、角色和数据类型配置访问边界,关键操作留痕可审计。' + }, + { + number: '05', + name: '运营数据分析', + description: '将服务效率、医疗质量和经营指标沉淀为管理层可复盘的视图。' + } +] + +export const productFeatures = [ + { + title: '云端患者主索引', + body: '跨机构合并患者身份、就诊记录、检查检验和随访数据,形成连续健康画像。' + }, + { + title: 'AI 辅助分诊与预警', + body: '基于规则引擎和模型评分识别高风险患者,优先推送给责任医生处理。' + }, + { + title: '医患协同工作台', + body: '医生端、护士端、患者端统一任务流,支持在线复诊、处方流转和宣教触达。' + }, + { + title: '合规与权限治理', + body: '按机构、科室、角色和数据类型配置访问边界,满足医疗数据安全要求。' + } +] + +export const caseStudies = [ + { + client: '华东县域医共体', + result: '6 个月完成 21 家基层机构协同上线,转诊平均等待时间下降 31%。', + quote: '萧康云医让基层医生能实时看到患者全周期信息,协同不再依赖电话和表格。' + }, + { + client: '连锁康复诊所集团', + result: '慢病随访自动化后,护士团队日均处理量提升 44%。', + quote: '它把复诊、随访、宣教和经营数据放到同一套流程里,管理颗粒度明显变细。' + }, + { + client: '省级互联网医院项目', + result: '支撑高峰期 18 万次在线问诊请求,服务稳定性保持 99.95%。', + quote: '平台架构足够稳,产品团队也懂医疗现场,这是我们选择它的关键。' + } +] + +export const homeCaseCards = [ + { + number: '01', + category: '医共体', + name: '县域协同平台', + summary: '21 家基层机构完成统一协同上线,转诊等待时间下降 31%。', + images: [ + 'https://images.unsplash.com/photo-1584982751601-97dcc096659c?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1586773860418-d37222d8fce3?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1579154204601-01588f351e67?auto=format&fit=crop&w=1200&q=82' + ] + }, + { + number: '02', + category: '连锁诊所', + name: '慢病随访中心', + summary: '护士团队日均处理量提升 44%,患者院外触达更稳定。', + images: [ + 'https://images.unsplash.com/photo-1571772996211-2f02c9727629?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1584515933487-779824d29309?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1563986768609-322da13575f3?auto=format&fit=crop&w=1200&q=82' + ] + }, + { + number: '03', + category: '互联网医院', + name: '线上诊疗中台', + summary: '高峰期支撑 18 万次在线问诊请求,服务可用性保持 99.95%。', + images: [ + 'https://images.unsplash.com/photo-1581056771107-24ca5f033842?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1583912267550-d44c6c1cf30f?auto=format&fit=crop&w=900&q=82', + 'https://images.unsplash.com/photo-1551434678-e076c223a692?auto=format&fit=crop&w=1200&q=82' + ] + } +] + +export const pricingPlans = [ + { + name: '标准版', + price: '¥6,800', + unit: '机构 / 月', + description: '适合单体医院、门诊部或成长型诊所。', + features: ['患者档案云管理', '在线复诊与随访', '基础运营报表', '标准接口支持'] + }, + { + name: '专业版', + price: '¥18,000', + unit: '医疗集团 / 月', + description: '适合多院区协同、连锁机构与医共体。', + features: ['区域协同工作台', 'AI 风险预警', '高级权限治理', '专属实施顾问'], + highlighted: true + }, + { + name: '旗舰版', + price: '定制', + unit: '私有化 / 混合云', + description: '适合大型医疗集团、政府平台与高合规场景。', + features: ['私有化部署', '数据中台集成', '定制模型与流程', 'SLA 与驻场支持'] + } +] + +export const faqs = [ + { + q: '萧康云医适合哪些机构?', + a: '适合医疗集团、医共体、基层医院、互联网医院、连锁诊所和需要长期患者管理的专科机构。' + }, + { + q: '能否接入现有 HIS、EMR 或支付系统?', + a: '可以。平台提供标准 API 与实施接口规范,常见 HIS、EMR、LIS、PACS、医保和支付系统都可对接。' + }, + { + q: '数据安全如何保障?', + a: '平台支持分级权限、操作审计、传输加密、备份策略和私有化部署方案,可按项目合规要求配置。' + }, + { + q: '上线周期通常多久?', + a: '标准版通常 2-4 周完成上线;多机构协同项目会根据接口数量、流程复杂度和培训范围排期。' + } +] diff --git a/src/style.css b/src/style.css index a461c50..f540851 100644 --- a/src/style.css +++ b/src/style.css @@ -1 +1,3758 @@ -@import "tailwindcss"; \ No newline at end of file +@import "tailwindcss"; + +@font-face { + font-family: "MapleMono NF CN"; + src: url("./assets/MapleMono-NF-CN/MapleMono-NF-CN-Regular.ttf") format("truetype"); + font-style: normal; + font-weight: 400; + font-display: swap; +} + +@font-face { + font-family: "MapleMono NF CN"; + src: url("./assets/MapleMono-NF-CN/MapleMono-NF-CN-Bold.ttf") format("truetype"); + font-style: normal; + font-weight: 700; + font-display: swap; +} + +:root { + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + color: #113946; + background: #f6fbfb; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + --app-bg: #f6fbfb; + --app-bg-strong: #e8f8f8; + --panel: #ffffff; + --panel-soft: #f0fbfb; + --text: #103744; + --muted: #4b6470; + --border: rgba(8, 70, 82, 0.14); + --brand: #0891b2; + --brand-strong: #0e7490; + --brand-soft: rgba(8, 145, 178, 0.12); + --cta: #059669; + --cta-hover: #047857; + --amber: #d97706; + --focus: #14b8a6; + --hero-text: #f8ffff; + --hero-muted: rgba(240, 253, 250, 0.82); + --shadow-soft: 0 24px 80px rgba(12, 74, 88, 0.13); + --shadow-card: 0 18px 50px rgba(15, 76, 88, 0.1); + --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.72); +} + +:root[data-theme="dark"] { + color: #e7fbfb; + background: #071417; + --app-bg: #071417; + --app-bg-strong: #0c2228; + --panel: #0f252a; + --panel-soft: #123139; + --text: #e7fbfb; + --muted: #a7c0c7; + --border: rgba(185, 234, 238, 0.16); + --brand: #22d3ee; + --brand-strong: #67e8f9; + --brand-soft: rgba(34, 211, 238, 0.14); + --cta: #10b981; + --cta-hover: #34d399; + --amber: #f59e0b; + --focus: #67e8f9; + --hero-text: #ecfeff; + --hero-muted: rgba(207, 250, 254, 0.78); + --shadow-soft: 0 24px 90px rgba(0, 0, 0, 0.35); + --shadow-card: 0 18px 60px rgba(0, 0, 0, 0.28); + --shadow-inset: inset 0 1px 0 rgba(255, 255, 255, 0.08); +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + min-width: 320px; + min-height: 100vh; + background: + linear-gradient(180deg, var(--app-bg) 0%, var(--app-bg-strong) 45%, var(--app-bg) 100%); +} + +button, +a, +input, +textarea { + font: inherit; +} + +button, +a { + -webkit-tap-highlight-color: transparent; +} + +button { + cursor: pointer; +} + +::selection { + color: white; + background: var(--brand); +} + +.bg-app { + background: var(--app-bg); +} + +.bg-panel\/88 { + background: color-mix(in srgb, var(--panel) 88%, transparent); +} + +.border-panel { + border-color: var(--border); +} + +.text-app { + color: var(--text); +} + +.text-muted { + color: var(--muted); +} + +.text-brand { + color: var(--brand); +} + +.text-hero { + color: var(--hero-text); +} + +.text-hero-muted { + color: var(--hero-muted); +} + +.bg-brand { + background: var(--brand); +} + +.bg-brand-strong, +.hover\:bg-brand-strong:hover { + background: var(--brand-strong); +} + +.bg-cta { + background: var(--cta); +} + +.hover\:bg-cta-hover:hover { + background: var(--cta-hover); +} + +.shadow-nav { + box-shadow: 0 18px 50px rgba(12, 74, 88, 0.14), var(--shadow-inset); +} + +.shadow-brand { + box-shadow: 0 16px 34px rgba(8, 145, 178, 0.28); +} + +.shadow-cta { + box-shadow: 0 16px 32px rgba(5, 150, 105, 0.24); +} + +.nav-link { + border-radius: 999px; + color: var(--muted); + display: inline-flex; + font-size: 0.95rem; + font-weight: 600; + padding: 0.55rem 0.95rem; + text-decoration: none; + transition: color 180ms ease-out, background 180ms ease-out; +} + +.nav-link:hover, +.nav-link-active { + background: var(--brand-soft); + color: var(--text); +} + +.theme-trigger { + align-items: center; + background: var(--panel-soft); + border: 1px solid var(--border); + border-radius: 999px; + color: var(--text); + display: inline-flex; + gap: 0.35rem; + height: 42px; + justify-content: center; + min-width: 72px; + transition: background 180ms ease-out, border-color 180ms ease-out, color 180ms ease-out; +} + +.theme-trigger:hover { + background: var(--brand-soft); + border-color: color-mix(in srgb, var(--brand) 45%, var(--border)); +} + +.theme-popover { + background: color-mix(in srgb, var(--panel) 96%, transparent); + border: 1px solid var(--border); + border-radius: 18px; + box-shadow: var(--shadow-soft); + display: grid; + gap: 0.35rem; + min-width: 150px; + padding: 0.5rem; + position: absolute; + right: 0; + top: calc(100% + 0.75rem); + transform-origin: top right; + z-index: 60; +} + +.theme-popover::before { + background: color-mix(in srgb, var(--panel) 96%, transparent); + border-left: 1px solid var(--border); + border-top: 1px solid var(--border); + content: ""; + height: 12px; + position: absolute; + right: 26px; + top: -7px; + transform: rotate(45deg); + width: 12px; +} + +.theme-option { + align-items: center; + background: transparent; + border: 0; + border-radius: 12px; + color: var(--muted); + display: flex; + gap: 0.65rem; + padding: 0.68rem 0.75rem; + text-align: left; + transition: background 180ms ease-out, color 180ms ease-out; + width: 100%; +} + +.theme-option:hover, +.theme-option-active { + background: var(--brand-soft); + color: var(--text); +} + +.bubble-enter-active, +.bubble-leave-active { + transition: opacity 180ms ease-out, transform 180ms ease-out; +} + +.bubble-enter-from, +.bubble-leave-to { + opacity: 0; + transform: translateY(-6px) scale(0.96); +} + +.hero-section { + background: #08252b; + min-height: 92vh; + overflow: hidden; + position: relative; +} + +.hero-video, +.hero-motion, +.hero-overlay { + inset: 0; + position: absolute; +} + +.hero-video { + height: 100%; + object-fit: cover; + width: 100%; +} + +.hero-overlay { + background: + linear-gradient(90deg, rgba(4, 26, 30, 0.88), rgba(4, 26, 30, 0.58) 46%, rgba(4, 26, 30, 0.7)), + linear-gradient(180deg, rgba(4, 26, 30, 0.3), rgba(4, 26, 30, 0.88)); +} + +.hero-motion { + background: + radial-gradient(circle at 78% 24%, rgba(34, 211, 238, 0.28), transparent 32%), + radial-gradient(circle at 72% 72%, rgba(16, 185, 129, 0.2), transparent 30%), + linear-gradient(130deg, #071417 0%, #0b3038 44%, #10212c 100%); +} + +.motion-grid { + background-image: + linear-gradient(rgba(207, 250, 254, 0.1) 1px, transparent 1px), + linear-gradient(90deg, rgba(207, 250, 254, 0.1) 1px, transparent 1px); + background-size: 54px 54px; + inset: 0; + mask-image: linear-gradient(90deg, transparent, black 20%, black 86%, transparent); + opacity: 0.58; + position: absolute; +} + +.motion-panel { + animation: floatPanel 9s ease-in-out infinite; + background: rgba(236, 254, 255, 0.1); + border: 1px solid rgba(207, 250, 254, 0.18); + border-radius: 24px; + box-shadow: 0 26px 80px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.12); + color: #ecfeff; + display: grid; + gap: 0.65rem; + padding: 1.1rem; + position: absolute; + width: clamp(210px, 24vw, 330px); +} + +.motion-panel-a { + right: 11%; + top: 24%; +} + +.motion-panel-b { + animation-delay: -3s; + bottom: 18%; + right: 28%; +} + +.panel-kicker { + color: rgba(207, 250, 254, 0.72); + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: 0.72rem; + text-transform: uppercase; +} + +.panel-line { + background: rgba(207, 250, 254, 0.24); + border-radius: 999px; + display: block; + height: 8px; + width: 86%; +} + +.panel-line.short { + width: 58%; +} + +.panel-wave { + background: linear-gradient(90deg, var(--brand), var(--cta), var(--amber)); + border-radius: 999px; + display: block; + height: 10px; + position: relative; + width: 100%; +} + +.motion-stream { + animation: streamMove 7s ease-in-out infinite; + background: linear-gradient(90deg, transparent, rgba(103, 232, 249, 0.65), transparent); + height: 2px; + position: absolute; + transform: rotate(-18deg); + width: 38vw; +} + +.stream-a { + right: 2%; + top: 48%; +} + +.stream-b { + animation-delay: -2.6s; + right: 17%; + top: 64%; +} + +.eyebrow { + align-items: center; + background: color-mix(in srgb, var(--panel) 18%, transparent); + border: 1px solid color-mix(in srgb, var(--brand) 36%, transparent); + border-radius: 999px; + color: var(--brand-strong); + display: inline-flex; + font-weight: 700; + gap: 0.45rem; + padding: 0.45rem 0.8rem; +} + +.hero-section .eyebrow { + color: #a7f3d0; +} + +.btn-primary, +.btn-secondary, +.btn-invert { + align-items: center; + border-radius: 999px; + display: inline-flex; + font-weight: 700; + gap: 0.55rem; + justify-content: center; + min-height: 48px; + padding: 0.8rem 1.25rem; + text-decoration: none; + transition: background 180ms ease-out, border-color 180ms ease-out, color 180ms ease-out, transform 180ms ease-out; +} + +.btn-primary { + background: var(--cta); + box-shadow: var(--shadow-card); + color: white; +} + +.btn-primary:hover { + background: var(--cta-hover); + transform: translateY(-1px); +} + +.btn-secondary { + background: color-mix(in srgb, var(--panel) 88%, transparent); + border: 1px solid var(--border); + color: var(--text); +} + +.hero-section .btn-secondary { + background: rgba(236, 254, 255, 0.12); + border-color: rgba(207, 250, 254, 0.22); + color: #ecfeff; +} + +.btn-secondary:hover { + background: var(--brand-soft); +} + +.btn-invert { + background: white; + color: #075985; +} + +.btn-invert:hover { + background: #ecfeff; +} + +.product-console, +.product-snapshot, +.demo-frame { + background: color-mix(in srgb, var(--panel) 88%, transparent); + border: 1px solid var(--border); + border-radius: 30px; + box-shadow: var(--shadow-soft), var(--shadow-inset); + overflow: hidden; +} + +.product-console { + backdrop-filter: blur(22px); + transform: rotate(1deg); +} + +.console-top { + align-items: center; + border-bottom: 1px solid var(--border); + display: flex; + gap: 0.45rem; + padding: 1rem 1.15rem; +} + +.console-top span { + background: var(--brand-soft); + border-radius: 999px; + height: 10px; + width: 10px; +} + +.console-body { + display: grid; + gap: 1rem; + padding: 1.2rem; +} + +.console-card { + align-items: center; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 22px; + display: flex; + justify-content: space-between; + padding: 1rem; +} + +.console-chart { + align-items: end; + background: var(--panel-soft); + border-radius: 22px; + display: flex; + gap: 0.7rem; + height: 180px; + padding: 1rem; +} + +.console-chart span { + background: linear-gradient(180deg, var(--brand), var(--cta)); + border-radius: 999px 999px 6px 6px; + flex: 1; +} + +.console-list { + display: grid; + gap: 0.65rem; +} + +.console-list div { + align-items: center; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 16px; + color: var(--muted); + display: flex; + gap: 0.55rem; + padding: 0.75rem 0.9rem; +} + +.console-list svg { + color: var(--cta); +} + +.section-pad { + padding: 5.5rem 0; +} + +.section-band { + background: + linear-gradient(120deg, color-mix(in srgb, var(--brand) 8%, transparent), transparent 36%), + var(--panel-soft); + padding: 5.5rem 0; +} + +.section-heading { + margin: 0 auto; + max-width: 760px; + text-align: center; +} + +.section-heading.align-left { + margin: 0; + text-align: left; +} + +.section-heading span, +.proof-label { + color: var(--brand-strong); + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0; + text-transform: uppercase; +} + +.section-heading h2, +.cta-band h2, +.contact-panel h2 { + color: var(--text); + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(2rem, 4vw, 3.1rem); + font-weight: 700; + line-height: 1.12; + margin: 0.65rem 0 0; +} + +.metric-card, +.soft-card, +.feature-tile, +.social-proof, +.case-card, +.pricing-card, +.review-card, +.contact-panel, +.contact-form { + background: color-mix(in srgb, var(--panel) 94%, transparent); + border: 1px solid var(--border); + box-shadow: var(--shadow-card), var(--shadow-inset); +} + +.metric-card { + border-radius: 22px; + display: grid; + gap: 0.25rem; + padding: 1.4rem; +} + +.metric-card strong { + color: var(--brand-strong); + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(2rem, 4vw, 3rem); + line-height: 1; +} + +.metric-card span { + color: var(--muted); + font-weight: 600; +} + +.soft-card { + border-radius: 26px; + padding: 1.35rem; +} + +.business-card { + min-height: 250px; +} + +.icon-chip { + align-items: center; + background: var(--brand-soft); + border-radius: 18px; + color: var(--brand-strong); + display: inline-flex; + height: 54px; + justify-content: center; + width: 54px; +} + +.icon-chip[data-accent="emerald"] { + background: rgba(5, 150, 105, 0.13); + color: var(--cta); +} + +.icon-chip[data-accent="amber"] { + background: rgba(217, 119, 6, 0.14); + color: var(--amber); +} + +.business-card h3, +.feature-tile h3, +.feature-row h3, +.case-card h3 { + color: var(--text); + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: 1.28rem; + font-weight: 700; + line-height: 1.25; + margin: 1.1rem 0 0; +} + +.business-card p, +.feature-tile p, +.feature-row p, +.case-card p, +.review-card p, +.pricing-card p, +.contact-panel p { + color: var(--muted); + line-height: 1.75; + margin: 0.75rem 0 0; +} + +.feature-tile { + border-radius: 24px; + color: var(--brand-strong); + min-height: 230px; + padding: 1.2rem; +} + +.social-proof { + align-items: center; + border-radius: 28px; + display: flex; + gap: 2rem; + justify-content: space-between; + padding: 1.5rem; +} + +.social-proof p { + color: var(--muted); + font-size: 1.1rem; + line-height: 1.7; + margin: 0.35rem 0 0; +} + +.proof-logos { + display: flex; + flex-wrap: wrap; + gap: 0.7rem; + justify-content: flex-end; +} + +.proof-logos span, +.target-users div span { + background: var(--panel-soft); + border: 1px solid var(--border); + border-radius: 999px; + color: var(--text); + font-weight: 700; + padding: 0.6rem 0.9rem; +} + +.cta-band { + background: linear-gradient(120deg, #075985, #0f766e 52%, #92400e); + color: white; + padding: 4rem 0; +} + +.cta-band span { + color: rgba(236, 254, 255, 0.78); + display: block; + font-weight: 700; + margin-bottom: 0.5rem; +} + +.cta-band h2 { + color: white; + max-width: 760px; +} + +.product-page { + overflow: hidden; +} + +.product-hero { + background: + radial-gradient(circle at 78% 12%, color-mix(in srgb, var(--brand) 20%, transparent), transparent 34%), + linear-gradient(180deg, var(--app-bg) 0%, var(--panel-soft) 100%); +} + +.product-snapshot { + padding: 1rem; +} + +.snapshot-header { + align-items: center; + display: flex; + justify-content: space-between; + padding: 0.4rem 0.35rem 1rem; +} + +.snapshot-header span { + color: var(--text); + font-weight: 800; +} + +.snapshot-header strong { + background: rgba(5, 150, 105, 0.12); + border-radius: 999px; + color: var(--cta); + padding: 0.35rem 0.65rem; +} + +.snapshot-main { + background: var(--panel-soft); + border: 1px solid var(--border); + border-radius: 24px; + display: grid; + gap: 1rem; + grid-template-columns: 150px 1fr; + padding: 1rem; +} + +.snapshot-main aside { + display: grid; + gap: 0.6rem; +} + +.snapshot-main aside span { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 14px; + color: var(--muted); + font-weight: 700; + padding: 0.75rem 0.85rem; +} + +.snapshot-content { + display: grid; + gap: 1rem; +} + +.snapshot-alert { + align-items: center; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 18px; + color: var(--text); + display: flex; + gap: 0.65rem; + padding: 1rem; +} + +.snapshot-alert svg { + color: var(--cta); +} + +.snapshot-cards { + display: grid; + gap: 0.8rem; + grid-template-columns: repeat(3, 1fr); +} + +.snapshot-cards div { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 18px; + display: grid; + gap: 0.3rem; + padding: 1rem; +} + +.snapshot-cards small { + color: var(--muted); +} + +.snapshot-cards strong { + color: var(--brand-strong); + font-size: 1.55rem; +} + +.snapshot-bars { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 18px; + display: grid; + gap: 0.75rem; + padding: 1rem; +} + +.snapshot-bars span { + background: linear-gradient(90deg, var(--brand), var(--cta)); + border-radius: 999px; + height: 12px; +} + +.feature-row { + align-items: flex-start; + display: flex; + gap: 1rem; +} + +.feature-row svg { + color: var(--brand-strong); + flex: 0 0 auto; + margin-top: 0.2rem; +} + +.feature-row h3 { + margin-top: 0; +} + +.target-users { + align-items: center; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 24px; + display: flex; + gap: 1rem; + justify-content: space-between; + padding: 1rem; +} + +.target-users > span { + color: var(--brand-strong); + font-weight: 800; +} + +.target-users div { + display: flex; + flex-wrap: wrap; + gap: 0.55rem; + justify-content: flex-end; +} + +.demo-frame { + aspect-ratio: 16 / 10; + position: relative; +} + +.demo-video { + background: #071417; + height: 100%; + object-fit: cover; + width: 100%; +} + +.demo-play { + align-items: center; + background: rgba(255, 255, 255, 0.92); + border-radius: 999px; + color: #075985; + display: flex; + height: 74px; + justify-content: center; + left: 50%; + pointer-events: none; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); + width: 74px; +} + +.check-line { + align-items: center; + color: var(--muted); + display: flex; + gap: 0.55rem; +} + +.check-line svg { + color: var(--cta); +} + +.case-card, +.pricing-card, +.review-card, +.contact-panel, +.contact-form { + border-radius: 26px; + padding: 1.35rem; +} + +.case-card span { + color: var(--brand-strong); + font-weight: 800; +} + +.pricing-card { + display: flex; + flex-direction: column; + min-height: 560px; +} + +.pricing-featured { + background: linear-gradient(180deg, color-mix(in srgb, var(--brand) 16%, var(--panel)), var(--panel)); + border-color: color-mix(in srgb, var(--brand) 42%, var(--border)); + transform: translateY(-10px); +} + +.pricing-head { + align-items: center; + color: var(--brand-strong); + display: flex; + font-weight: 800; + justify-content: space-between; +} + +.pricing-card strong { + color: var(--text); + display: block; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: 2.5rem; +} + +.pricing-card small { + color: var(--muted); +} + +.pricing-card ul { + display: grid; + gap: 0.75rem; + list-style: none; + margin: 1.35rem 0; + padding: 0; +} + +.pricing-card li { + align-items: center; + color: var(--text); + display: flex; + gap: 0.55rem; +} + +.pricing-card li svg { + color: var(--cta); +} + +.pricing-button { + align-items: center; + background: var(--text); + border-radius: 999px; + color: var(--app-bg); + display: inline-flex; + font-weight: 800; + justify-content: center; + margin-top: auto; + min-height: 46px; + padding: 0.75rem 1rem; + text-decoration: none; + transition: background 180ms ease-out, color 180ms ease-out; +} + +.pricing-button:hover { + background: var(--brand-strong); + color: #062c32; +} + +.stars { + color: var(--amber); + display: flex; + gap: 0.2rem; +} + +.review-card { + display: grid; + gap: 1rem; +} + +.review-card strong, +.review-card span { + display: block; +} + +.review-card strong { + color: var(--text); +} + +.review-card span { + color: var(--muted); + margin-top: 0.1rem; +} + +.faq-list { + display: grid; + gap: 0.8rem; +} + +.faq-item { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 20px; + color: var(--text); + padding: 1.05rem 1.15rem; + text-align: left; + transition: background 180ms ease-out, border-color 180ms ease-out; +} + +.faq-item:hover { + background: var(--panel-soft); + border-color: color-mix(in srgb, var(--brand) 42%, var(--border)); +} + +.faq-item span { + display: block; + font-weight: 800; +} + +.faq-item p { + color: var(--muted); + line-height: 1.7; + margin: 0.65rem 0 0; +} + +.contact-panel { + background: linear-gradient(145deg, color-mix(in srgb, var(--brand) 12%, var(--panel)), var(--panel)); +} + +.contact-panel svg { + color: var(--brand-strong); +} + +.contact-lines { + display: grid; + gap: 0.65rem; + margin-top: 1.5rem; +} + +.contact-lines span { + background: var(--panel-soft); + border: 1px solid var(--border); + border-radius: 14px; + color: var(--text); + font-weight: 700; + padding: 0.75rem 0.9rem; +} + +.contact-form { + display: grid; + gap: 1rem; +} + +.contact-form label { + color: var(--text); + display: grid; + font-weight: 800; + gap: 0.45rem; +} + +.contact-form input, +.contact-form textarea { + background: var(--panel-soft); + border: 1px solid var(--border); + border-radius: 16px; + color: var(--text); + outline: none; + padding: 0.85rem 0.95rem; + resize: vertical; + transition: border-color 180ms ease-out, box-shadow 180ms ease-out; +} + +.contact-form input:focus, +.contact-form textarea:focus { + border-color: var(--focus); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--focus) 18%, transparent); +} + +@keyframes floatPanel { + 0%, + 100% { + transform: translate3d(0, 0, 0); + } + 50% { + transform: translate3d(-10px, -16px, 0); + } +} + +@keyframes streamMove { + 0%, + 100% { + opacity: 0.25; + transform: translateX(0) rotate(-18deg); + } + 50% { + opacity: 0.9; + transform: translateX(-44px) rotate(-18deg); + } +} + +@media (max-width: 900px) { + .social-proof, + .target-users { + align-items: flex-start; + flex-direction: column; + } + + .proof-logos, + .target-users div { + justify-content: flex-start; + } + + .snapshot-main { + grid-template-columns: 1fr; + } + + .snapshot-main aside { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .pricing-featured { + transform: none; + } +} + +@media (max-width: 640px) { + .section-pad, + .section-band { + padding: 4rem 0; + } + + .hero-section { + min-height: 100vh; + } + + .hero-overlay { + background: + linear-gradient(180deg, rgba(4, 26, 30, 0.7), rgba(4, 26, 30, 0.92)), + linear-gradient(90deg, rgba(4, 26, 30, 0.82), rgba(4, 26, 30, 0.72)); + } + + .motion-panel, + .motion-stream { + display: none; + } + + .snapshot-cards { + grid-template-columns: 1fr; + } + + .snapshot-main aside { + grid-template-columns: 1fr; + } + + .btn-primary, + .btn-secondary, + .btn-invert { + width: 100%; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + } +} + +/* Screenshot pass: stable navigation, readable Chinese spacing, and non-jitter sticky cards. */ +body { + font-family: "MapleMono NF CN", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif; +} + +p, +li, +input, +textarea { + letter-spacing: 0; +} + +.site-nav { + display: grid; + grid-template-columns: minmax(190px, 1fr) auto minmax(190px, 1fr); + min-height: 64px; + padding: 0.42rem; +} + +.site-logo { + justify-self: start; + min-width: 190px; +} + +.desktop-primary-nav { + justify-self: center; + position: static; + transform: none; +} + +.site-actions { + justify-content: flex-end; + justify-self: end; + min-width: 190px; +} + +.theme-control { + flex: 0 0 auto; + position: relative; +} + +.theme-popover { + left: auto; + min-width: 168px; + right: 0; + top: calc(100% + 0.75rem); + width: 168px; + z-index: 80; +} + +.theme-popover::before { + left: auto; + right: 16px; +} + +.hero-copy { + max-width: min(100%, 980px); +} + +.cinematic-title { + letter-spacing: 0; + line-height: 0.98; + text-wrap: balance; +} + +.cinematic-subtitle { + line-height: 1.75; + max-width: min(100%, 760px); +} + +.home-heading-cn { + font-size: clamp(2.6rem, 8vw, 7.5rem); + font-weight: 700; + letter-spacing: 0; + line-height: 1.08; + max-width: 1180px; + text-transform: none; + text-wrap: balance; +} + +.home-marquee-section { + padding: clamp(5rem, 8vw, 7rem) 0 clamp(4rem, 7vw, 6rem); +} + +.marquee-heading { + margin-bottom: clamp(2rem, 4vw, 3.5rem); + max-width: 1180px; +} + +.marquee-track { + transition-duration: 120ms; +} + +.marquee-card { + border-radius: 1.35rem; + flex-basis: clamp(320px, 31vw, 430px); + height: clamp(210px, 20vw, 270px); +} + +.marquee-card strong { + font-size: clamp(1.05rem, 1.55vw, 1.35rem); + line-height: 1.25; +} + +.creator-about-section { + padding: clamp(6rem, 9vw, 8rem) 1.25rem; +} + +.about-inner { + gap: clamp(1.8rem, 4vw, 3.25rem); + max-width: 960px; +} + +.animated-copy { + font-family: "MapleMono NF CN", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif; + font-size: clamp(1.05rem, 1.65vw, 1.4rem); + font-weight: 400; + letter-spacing: 0.02em; + line-height: 2.05; + max-width: 880px; +} + +.about-segment { + display: inline; + margin-right: 0.2em; + transition: opacity 180ms linear; +} + +.creator-services-section { + padding-bottom: clamp(6rem, 9vw, 8rem); +} + +.services-heading { + font-weight: 700; + letter-spacing: 0; + line-height: 0.98; +} + +.service-item h3 { + letter-spacing: 0; + line-height: 1.25; + text-transform: none; +} + +.creator-projects-section { + padding-top: clamp(5.5rem, 9vw, 8rem); +} + +.case-section-heading { + margin: 0 auto clamp(2.5rem, 6vw, 5rem); + max-width: 1180px; + padding: 0 0.25rem; +} + +.case-section-heading > span { + color: rgba(215, 226, 234, 0.66); + display: block; + font-size: 0.85rem; + font-weight: 700; + letter-spacing: 0.08em; + margin-bottom: 0.75rem; + text-transform: uppercase; +} + +.stable-case-list { + display: grid; + gap: clamp(2rem, 4vw, 3.25rem); +} + +.stable-case-card { + margin-top: 0 !important; + min-height: auto; + transform: none !important; + will-change: auto; +} + +.case-card-head { + align-items: start; + grid-template-columns: minmax(72px, 120px) minmax(0, 1fr) auto; +} + +.case-card-head > span { + font-size: clamp(2.6rem, 7vw, 6.6rem); + line-height: 0.92; +} + +.case-card-copy { + min-width: 0; +} + +.case-card-head h3 { + font-size: clamp(1.45rem, 3.4vw, 2.85rem); + letter-spacing: 0; + line-height: 1.16; + text-transform: none; + text-wrap: balance; +} + +.case-card-head p { + font-size: clamp(0.95rem, 1.25vw, 1.08rem); + line-height: 1.8; + max-width: 48rem; +} + +.case-card-action { + align-self: start; + justify-self: end; +} + +.stable-case-card:hover .case-image-grid img { + transform: none; +} + +.home-contact-section { + align-items: center; + column-gap: clamp(2rem, 6vw, 5rem); + padding-bottom: clamp(6rem, 9vw, 8rem); +} + +.home-contact-copy { + max-width: 680px; +} + +.home-contact-copy .home-heading-cn { + font-size: clamp(2.5rem, 6.5vw, 6rem); +} + +.contact-action { + margin-top: 2rem; +} + +.home-contact-section .contact-metrics { + max-width: none; +} + +.contact-metrics div { + min-height: 142px; +} + +.product-hero-title { + letter-spacing: 0; + line-height: 1.08; + text-wrap: balance; +} + +.product-hero-copytext { + line-height: 1.85; + max-width: 680px; +} + +.feature-row h3, +.case-card h3, +.section-heading h2, +.contact-panel h2 { + letter-spacing: 0; + text-wrap: balance; +} + +.pricing-reveal, +.feature-reveal, +.case-reveal, +.review-reveal { + height: 100%; +} + +.pricing-card, +.soft-card, +.case-card, +.review-card { + height: 100%; +} + +.pricing-card { + min-height: 0; +} + +.pricing-card:hover, +.soft-card:hover, +.case-card:hover, +.review-card:hover { + border-color: color-mix(in srgb, var(--brand) 32%, var(--border)); + transform: translateY(-2px); +} + +.faq-list { + display: grid; + gap: 0.85rem; +} + +.faq-item span, +.faq-item p { + text-align: left; +} + +.site-footer-inner { + grid-template-columns: minmax(220px, 0.9fr) minmax(260px, 1fr) minmax(220px, 0.85fr); +} + +.site-footer-brand { + display: grid; + gap: 0.35rem; +} + +.site-footer-records { + justify-content: flex-end; +} + +@media (max-width: 1023px) { + .site-nav { + grid-template-columns: minmax(0, 1fr) auto; + } + + .site-logo, + .site-actions { + min-width: 0; + } + + .site-actions { + width: auto; + } + + .site-footer-inner { + grid-template-columns: 1fr; + } + + .site-footer-records { + justify-content: flex-start; + } +} + +@media (max-width: 767px) { + .home-heading-cn { + font-size: clamp(2.3rem, 13vw, 4.25rem); + line-height: 1.12; + } + + .animated-copy { + font-size: 1rem; + line-height: 1.9; + text-align: left; + } + + .about-inner { + justify-items: stretch; + text-align: left; + } + + .case-card-head { + grid-template-columns: 1fr; + } + + .case-card-action { + justify-self: start; + } + + .stable-case-card { + position: relative; + top: auto !important; + } + + .home-contact-section { + align-items: stretch; + } + + .contact-metrics { + grid-template-columns: 1fr; + } +} + +/* Cinematic home refresh */ +.liquid-glass { + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + background: rgba(255, 255, 255, 0.01); + background-blend-mode: luminosity; + border: none; + box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1); + overflow: hidden; + position: relative; +} + +.liquid-glass::before { + background: linear-gradient(180deg, rgba(255, 255, 255, 0.45) 0%, rgba(255, 255, 255, 0.15) 20%, rgba(255, 255, 255, 0) 40%, rgba(255, 255, 255, 0) 60%, rgba(255, 255, 255, 0.15) 80%, rgba(255, 255, 255, 0.45) 100%); + border-radius: inherit; + content: ""; + inset: 0; + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask-composite: exclude; + padding: 1.4px; + pointer-events: none; + position: absolute; +} + +.animate-blur-fade-up { + animation: blurFadeUp 1s ease-out forwards; + opacity: 0; +} + +@keyframes blurFadeUp { + from { + filter: blur(20px); + opacity: 0; + transform: translateY(40px); + } + to { + filter: blur(0); + opacity: 1; + transform: translateY(0); + } +} + +.site-header { + left: 0; + padding: 1rem; + position: fixed; + right: 0; + top: 0; + z-index: 50; +} + +.site-nav { + align-items: center; + color: white; + display: flex; + justify-content: space-between; + margin: 0 auto; + max-width: 1440px; + min-height: 56px; + position: relative; +} + +.site-logo { + align-items: center; + color: white; + display: inline-flex; + font-weight: 700; + gap: 0.75rem; + height: 2.5rem; + letter-spacing: 0; + text-decoration: none; +} + +.site-logo-mark { + align-items: center; + border-radius: 999px; + color: white; + display: inline-flex; + height: 2.5rem; + justify-content: center; + width: 2.5rem; +} + +.desktop-primary-nav { + display: none; + gap: 0.5rem; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%, -50%); +} + +.site-nav-solid { + background: color-mix(in srgb, var(--panel) 86%, transparent); + border: 1px solid var(--border); + border-radius: 999px; + box-shadow: var(--shadow-card), var(--shadow-inset); + color: var(--text); + padding: 0.45rem 0.55rem; +} + +.site-nav-solid .site-logo, +.site-nav-solid .icon-pill, +.site-nav-solid .action-pill { + color: var(--text); +} + +.site-nav-solid .primary-nav-link { + color: var(--muted); +} + +.site-nav-solid .primary-nav-link:hover, +.site-nav-solid .primary-nav-link-active { + background: var(--brand-soft); + color: var(--text); +} + +.site-nav-solid .desktop-submenu, +.site-nav-solid .theme-popover, +.site-nav-solid .mobile-submenu { + background: color-mix(in srgb, var(--panel) 94%, transparent); +} + +.site-nav-solid .submenu-link, +.site-nav-solid .mobile-sub-link { + color: var(--muted); +} + +.site-nav-solid .submenu-link:hover, +.site-nav-solid .mobile-sub-link:hover { + background: var(--brand-soft); + color: var(--text); +} + +.primary-nav-item { + position: relative; +} + +.primary-nav-link { + align-items: center; + border-radius: 999px; + color: rgba(255, 255, 255, 0.82); + display: inline-flex; + font-size: 0.9rem; + font-weight: 600; + gap: 0.35rem; + padding: 0.65rem 1rem; + text-decoration: none; + transition: color 200ms ease, background 200ms ease; +} + +.primary-nav-link:hover, +.primary-nav-link-active { + background: rgba(255, 255, 255, 0.08); + color: white; +} + +.desktop-submenu { + border-radius: 24px; + display: grid; + gap: 0.25rem; + left: 50%; + min-width: 180px; + padding: 0.5rem; + position: absolute; + top: calc(100% + 0.75rem); + transform: translateX(-50%); +} + +.submenu-link { + border-radius: 16px; + color: rgba(255, 255, 255, 0.78); + font-size: 0.9rem; + font-weight: 600; + padding: 0.75rem 0.85rem; + text-decoration: none; + transition: background 200ms ease, color 200ms ease, transform 200ms ease; + white-space: nowrap; +} + +.submenu-link:hover { + background: rgba(255, 255, 255, 0.1); + color: white; + transform: translateX(3px); +} + +.site-actions { + align-items: center; + display: flex; + gap: 0.55rem; +} + +.site-actions .nav-action { + display: none; +} + +.action-pill, +.icon-pill, +.arrow-pill, +.learn-button { + align-items: center; + color: white; + display: inline-flex; + font-weight: 600; + gap: 0.45rem; + justify-content: center; + text-decoration: none; +} + +.action-pill { + border-radius: 999px; + min-height: 2.5rem; + padding: 0.55rem 1.1rem; +} + +.icon-pill, +.mobile-menu-button { + border-radius: 999px; + height: 2.5rem; + width: 2.5rem; +} + +.icon-pill { + color: white; +} + +.mobile-menu-button { + display: inline-flex; + position: relative; +} + +.mobile-menu-button svg { + position: absolute; + transition: opacity 500ms ease-out, transform 500ms ease-out; +} + +.mobile-menu-button svg:last-child { + opacity: 0; + transform: rotate(-180deg) scale(0.5); +} + +.menu-icon-hidden { + opacity: 0; + transform: rotate(180deg) scale(0.5); +} + +.mobile-menu-button .menu-icon-visible { + opacity: 1; + transform: rotate(0deg) scale(1); +} + +.mobile-submenu { + background: rgba(17, 24, 39, 0.95); + border-radius: 24px; + color: white; + display: grid; + gap: 0.5rem; + left: 1rem; + padding: 0.75rem; + position: absolute; + right: 1rem; + top: 76px; + z-index: 40; +} + +.mobile-menu-group { + border-bottom: 1px solid rgba(255, 255, 255, 0.08); + padding-bottom: 0.45rem; +} + +.mobile-menu-group:last-child { + border-bottom: 0; + padding-bottom: 0; +} + +.mobile-group-trigger { + align-items: center; + background: transparent; + border: 0; + color: white; + display: flex; + font-weight: 700; + justify-content: space-between; + padding: 0.75rem; + width: 100%; +} + +.mobile-group-trigger svg { + transition: transform 240ms ease-out; +} + +.mobile-group-links { + display: grid; + gap: 0.2rem; + padding: 0 0.25rem 0.5rem; +} + +.mobile-sub-link { + border-radius: 14px; + color: rgba(255, 255, 255, 0.72); + font-size: 0.95rem; + padding: 0.72rem 0.85rem; + text-decoration: none; +} + +.mobile-sub-link:hover { + background: rgba(255, 255, 255, 0.08); + color: white; +} + +.mobile-menu-enter-active, +.mobile-menu-leave-active { + transition: opacity 500ms ease-out, transform 500ms ease-out; +} + +.mobile-menu-enter-from, +.mobile-menu-leave-to { + opacity: 0; + pointer-events: none; + transform: translateY(-1rem); +} + +.home-page { + background: transparent; + color: #d7e2ea; + overflow-x: clip; +} + +.cinematic-hero { + background: #000; + display: flex; + flex-direction: column; + min-height: 100vh; + overflow: hidden; + position: relative; +} + +.cinematic-video { + height: 100%; + inset: 0; + object-fit: cover; + position: absolute; + width: 100%; + z-index: 0; +} + +.hero-silk-layer { + inset: 0; + mix-blend-mode: screen; + opacity: 0.18; + pointer-events: none; + position: absolute; + z-index: 1; +} + +.bottom-blur-overlay { + -webkit-backdrop-filter: blur(24px); + backdrop-filter: blur(24px); + inset: 0; + -webkit-mask-image: linear-gradient(to top, black 0%, transparent 45%); + mask-image: linear-gradient(to top, black 0%, transparent 45%); + pointer-events: none; + position: absolute; + z-index: 2; +} + +.cinematic-content { + align-items: end; + display: flex; + flex: 1; + flex-direction: column; + gap: 2rem; + justify-content: end; + min-height: 100vh; + padding: 8rem 1rem 2rem; + position: relative; + z-index: 10; +} + +.hero-copy { + width: 100%; +} + +.hero-meta { + align-items: center; + color: rgba(255, 255, 255, 0.84); + display: flex; + flex-wrap: wrap; + font-size: 0.82rem; + gap: 0.85rem; + margin-bottom: 1.5rem; +} + +.hero-meta span { + align-items: center; + display: inline-flex; + font-weight: 600; + gap: 0.4rem; +} + +.cinematic-title { + color: white; + display: block; + font-size: clamp(3rem, 13vw, 9.5rem); + font-weight: 400; + letter-spacing: -0.04em; + line-height: 0.92; + margin: 0 0 1.2rem; + perspective: 900px; +} + +.cinematic-subtitle { + color: rgba(209, 213, 219, 0.88); + font-size: clamp(1rem, 2vw, 1.35rem); + line-height: 1.6; + margin: 0 0 1.6rem; + max-width: 46rem; +} + +.decrypted-final { + color: white; + font-weight: 700; +} + +.decrypted-ghost { + color: rgba(20, 184, 166, 0.78); + font-weight: 700; +} + +.hero-actions, +.hero-arrows { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; +} + +.watch-button, +.learn-button, +.arrow-pill { + border-radius: 999px; + min-height: 2.9rem; + padding: 0.72rem 1.35rem; +} + +.watch-button { + align-items: center; + background: linear-gradient(135deg, #ffffff 0%, #c8fff2 48%, #ffffff 100%); + color: #041012; + display: inline-flex; + font-weight: 700; + gap: 0.5rem; + text-decoration: none; + transition: background 180ms ease-out, transform 180ms ease-out; + box-shadow: 0 20px 48px rgba(20, 184, 166, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.72); +} + +.watch-button:hover { + background: #e5e7eb; + transform: translateY(-1px); +} + +.hero-arrows { + width: 100%; +} + +.home-marquee-section { + background: rgba(12, 12, 12, 0.72); + overflow: hidden; + padding: 6rem 0 2.5rem; +} + +.marquee-heading { + margin: 0 auto 2.5rem; + max-width: 1120px; + padding: 0 1rem; +} + +.marquee-heading span, +.home-contact-section > div > span { + color: rgba(215, 226, 234, 0.62); + display: block; + font-size: 0.85rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.mega-heading { + background: linear-gradient(180deg, #646973 0%, #bbccd7 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(3rem, 12vw, 10rem); + font-weight: 900; + letter-spacing: -0.045em; + line-height: 1; + text-transform: uppercase; +} + +.marquee-rows { + display: grid; + gap: 0.75rem; +} + +.marquee-track { + display: flex; + gap: 0.75rem; + transform: translate3d(0, 0, 0); + transition: transform 80ms linear; + will-change: transform; + width: max-content; +} + +.marquee-card { + border: 1px solid rgba(215, 226, 234, 0.12); + border-radius: 1.6rem; + flex: 0 0 390px; + height: 246px; + overflow: hidden; + position: relative; + transform: translateZ(0); + transition: border-color 220ms ease, transform 220ms ease, box-shadow 220ms ease; +} + +.glare-card::before { + background: linear-gradient(115deg, transparent 0%, rgba(255, 255, 255, 0.28) 42%, transparent 64%); + content: ""; + height: 160%; + left: -80%; + pointer-events: none; + position: absolute; + top: -30%; + transform: translateX(0) rotate(8deg); + transition: transform 620ms cubic-bezier(0.16, 1, 0.3, 1); + width: 55%; + z-index: 2; +} + +.glare-card:hover { + border-color: rgba(255, 255, 255, 0.34); + box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35); + transform: translateY(-4px); +} + +.glare-card:hover::before { + transform: translateX(420%) rotate(8deg); +} + +.marquee-card img { + height: 100%; + object-fit: cover; + width: 100%; +} + +.marquee-card::after { + background: linear-gradient(to top, rgba(0, 0, 0, 0.74), transparent 56%); + content: ""; + inset: 0; + position: absolute; +} + +.marquee-card div { + bottom: 1rem; + display: grid; + gap: 0.25rem; + left: 1rem; + position: absolute; + right: 1rem; + z-index: 1; +} + +.marquee-card span { + color: rgba(255, 255, 255, 0.68); + font-size: 0.78rem; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.marquee-card strong { + color: white; + font-size: 1.35rem; +} + +.creator-about-section { + align-items: center; + background: rgba(12, 12, 12, 0.62); + display: flex; + justify-content: center; + min-height: 100vh; + overflow: hidden; + padding: 5rem 1.25rem; + position: relative; +} + +.creator-about-section::before { + background: radial-gradient(circle at 50% 50%, rgba(20, 184, 166, 0.16), transparent 44%); + content: ""; + inset: 12%; + pointer-events: none; + position: absolute; +} + +.about-inner { + align-items: center; + display: grid; + gap: clamp(2.25rem, 5vw, 5rem); + justify-items: center; + max-width: 760px; + position: relative; + text-align: center; + z-index: 2; +} + +.animated-copy { + color: #f5fbff; + font-size: clamp(1rem, 2vw, 1.35rem); + font-weight: 500; + line-height: 1.9; + margin: 0; + max-width: 620px; +} + +.animated-copy span { + transition: opacity 120ms linear; +} + +.floating-medical-chip { + align-items: center; + background: rgba(215, 226, 234, 0.08); + border: 1px solid rgba(215, 226, 234, 0.16); + border-radius: 999px; + color: #d7e2ea; + display: inline-flex; + font-weight: 700; + gap: 0.45rem; + padding: 0.8rem 1rem; + position: absolute; +} + +.chip-a { + left: 4%; + top: 8%; +} + +.chip-b { + right: 5%; + top: 10%; +} + +.chip-c { + bottom: 12%; + left: 9%; +} + +.chip-d { + bottom: 11%; + right: 10%; +} + +.creator-contact-button, +.live-project-button { + align-items: center; + border-radius: 999px; + display: inline-flex; + font-weight: 700; + justify-content: center; + letter-spacing: 0.08em; + text-decoration: none; + text-transform: uppercase; +} + +.creator-contact-button { + background: linear-gradient(123deg, #18011f 7%, #b600a8 37%, #7621b0 72%, #be4c00 100%); + box-shadow: 0 4px 4px rgba(181, 1, 167, 0.25), 4px 4px 12px #7721b1 inset; + color: white; + outline: 2px solid white; + outline-offset: -3px; + padding: 0.9rem 2.5rem; +} + +.creator-services-section { + background: #fff; + border-radius: clamp(2.5rem, 6vw, 4rem) clamp(2.5rem, 6vw, 4rem) 0 0; + color: #0c0c0c; + padding: clamp(5rem, 9vw, 7rem) 1.25rem; +} + +.services-heading { + color: #0c0c0c; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(3rem, 12vw, 10rem); + font-weight: 900; + letter-spacing: -0.045em; + line-height: 0.88; + margin: 0 0 clamp(4rem, 8vw, 7rem); + text-align: center; + text-transform: uppercase; +} + +.services-list { + margin: 0 auto; + max-width: 980px; +} + +.service-reveal { + display: block; +} + +.service-item { + align-items: center; + border-top: 1px solid rgba(12, 12, 12, 0.15); + display: grid; + gap: 1.5rem; + grid-template-columns: minmax(90px, 0.35fr) 1fr; + padding: clamp(2rem, 5vw, 3rem) 0; +} + +.service-item:last-child { + border-bottom: 1px solid rgba(12, 12, 12, 0.15); +} + +.service-item > span { + color: #0c0c0c; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(3rem, 10vw, 8.75rem); + font-weight: 900; + line-height: 0.8; +} + +.service-item h3 { + color: #0c0c0c; + font-size: clamp(1rem, 2.2vw, 2.1rem); + font-weight: 600; + letter-spacing: 0.04em; + margin: 0 0 0.75rem; + text-transform: uppercase; +} + +.service-item p { + color: rgba(12, 12, 12, 0.62); + font-size: clamp(0.92rem, 1.6vw, 1.25rem); + font-weight: 300; + line-height: 1.75; + margin: 0; + max-width: 42rem; +} + +.creator-projects-section { + background: rgba(12, 12, 12, 0.78); + border-radius: clamp(2.5rem, 6vw, 4rem) clamp(2.5rem, 6vw, 4rem) 0 0; + margin-top: -3rem; + padding: clamp(5rem, 10vw, 8rem) 1rem; + position: relative; + z-index: 2; +} + +.creator-projects-section > .mega-heading { + margin: 0 auto clamp(3rem, 7vw, 6rem); + max-width: 1200px; +} + +.medical-scroll-stack { + margin: 0 auto; + max-width: 1180px; + overflow: visible !important; +} + +.stable-case-list { + margin: 0 auto; + max-width: 1180px; +} + +.medical-scroll-stack .scroll-stack-inner { + display: grid; + gap: 0; +} + +.medical-case-stack-item, +.stable-case-card { + background: #0c0c0c; + border: 1.4px solid rgba(215, 226, 234, 0.82); + border-radius: clamp(2.5rem, 5vw, 3.75rem); + box-shadow: 0 34px 110px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.08); + height: auto !important; + margin-bottom: 0 !important; + margin-top: clamp(2.5rem, 7vw, 5rem) !important; + min-height: 76vh; + padding: clamp(1rem, 3vw, 2rem); + position: relative; +} + +.stable-case-card { + position: sticky; + transform: scale(var(--case-scale)); + transform-origin: top center; + will-change: transform; +} + +.case-card-head { + align-items: center; + display: grid; + gap: 1rem; + grid-template-columns: minmax(86px, auto) minmax(0, 1fr) auto; + margin-bottom: clamp(1.5rem, 4vw, 2.5rem); +} + +.case-card-head > span { + color: #d7e2ea; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(3rem, 10vw, 8rem); + font-weight: 900; + line-height: 0.8; +} + +.case-card-head small { + color: rgba(215, 226, 234, 0.58); + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.case-card-head h3 { + color: #d7e2ea; + font-size: clamp(1.4rem, 4vw, 3rem); + font-weight: 600; + margin: 0.25rem 0; + text-transform: uppercase; +} + +.case-card-head p { + color: rgba(215, 226, 234, 0.72); + line-height: 1.65; + margin: 0; + max-width: 44rem; +} + +.live-project-button { + border: 2px solid #d7e2ea; + color: #d7e2ea; + padding: 0.85rem 1.5rem; + white-space: nowrap; +} + +.live-project-button:hover { + background: rgba(215, 226, 234, 0.1); +} + +.case-image-grid { + display: grid; + gap: 1rem; + grid-template-columns: 0.42fr 0.58fr; +} + +.case-image-grid > div { + display: grid; + gap: 1rem; +} + +.case-image-grid img { + border-radius: clamp(1.75rem, 4vw, 3.25rem); + height: 100%; + object-fit: cover; + transition: filter 260ms ease, transform 260ms ease; + width: 100%; +} + +.medical-case-stack-item:hover .case-image-grid img, +.stable-case-card:hover .case-image-grid img { + filter: saturate(1.08) contrast(1.02); + transform: scale(1.012); +} + +.case-image-grid > div img:first-child { + height: clamp(130px, 16vw, 230px); +} + +.case-image-grid > div img:last-child { + height: clamp(160px, 22vw, 340px); +} + +.case-image-grid > img { + min-height: clamp(320px, 42vw, 590px); +} + +.home-contact-section { + align-items: start; + background: rgba(12, 12, 12, 0.76); + color: #d7e2ea; + display: grid; + gap: 2rem; + grid-template-columns: 1fr; + margin: 0 auto; + max-width: 1180px; + padding: clamp(5rem, 10vw, 8rem) 1.25rem; + width: 100%; +} + +.site-footer { + background: #050707; + border-top: 1px solid rgba(215, 226, 234, 0.12); + color: #d7e2ea; + padding: 2.25rem 1.25rem; +} + +.site-footer-inner { + align-items: start; + display: grid; + gap: 1.25rem; + margin: 0 auto; + max-width: 1180px; +} + +.site-footer strong, +.site-footer span, +.site-footer a { + color: #eef7fb; +} + +.site-footer-inner > div:first-child { + display: grid; + gap: 0.35rem; +} + +.site-footer-inner > div:first-child span, +.site-footer-records span, +.site-footer-records a { + color: rgba(238, 247, 251, 0.72); + font-size: 0.86rem; +} + +.site-footer nav { + display: flex; + flex-wrap: wrap; + gap: 0.75rem 1.15rem; +} + +.site-footer nav a { + color: rgba(238, 247, 251, 0.82); + font-weight: 700; + text-decoration: none; +} + +.site-footer nav a:hover, +.site-footer-records a:hover { + color: white; +} + +.site-footer-records { + display: flex; + flex-wrap: wrap; + gap: 0.5rem 1rem; +} + +.home-contact-section > div:first-child { + max-width: 980px; +} + +.home-contact-section p { + color: rgba(215, 226, 234, 0.72); + font-size: clamp(1rem, 2vw, 1.25rem); + line-height: 1.8; + margin: 1.25rem 0 0; + max-width: 52rem; +} + +.contact-metrics { + display: grid; + gap: 0.75rem; + grid-template-columns: repeat(2, minmax(0, 1fr)); + max-width: 720px; + width: 100%; +} + +.contact-metrics div { + background: rgba(215, 226, 234, 0.06); + border: 1px solid rgba(215, 226, 234, 0.12); + border-radius: 1.5rem; + display: grid; + gap: 0.25rem; + padding: 1.1rem; +} + +.contact-metrics strong { + color: white; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(2rem, 5vw, 4rem); + line-height: 0.95; +} + +.contact-metrics span { + color: rgba(215, 226, 234, 0.66); + font-weight: 700; +} + +@media (min-width: 768px) { + .cinematic-content { + align-items: end; + flex-direction: row; + gap: 2rem; + padding: 8rem 3rem 4rem; + } + + .hero-copy { + flex: 1; + max-width: 100%; + } + + .hero-arrows { + justify-content: flex-end; + width: auto; + } +} + +@media (min-width: 640px) { + .site-actions .nav-action { + display: inline-flex; + } +} + +@media (min-width: 1024px) { + .site-header { + padding: 1.5rem 3rem; + } + + .desktop-primary-nav { + display: flex; + } + + .mobile-menu-button { + display: none; + } + + .cinematic-content { + margin: 0 auto; + max-width: 1440px; + padding-left: 3rem; + padding-right: 3rem; + width: 100%; + } + + .home-contact-section { + grid-template-columns: minmax(0, 1.1fr) minmax(280px, 0.9fr); + max-width: 1180px; + } + + .home-contact-section > a { + grid-column: 1; + justify-self: start; + } +} + +@media (max-width: 767px) { + .marquee-card { + flex-basis: 300px; + height: 200px; + } + + .floating-medical-chip { + display: none; + } + + .service-item { + grid-template-columns: 1fr; + } + + .case-card-head { + grid-template-columns: 1fr; + } + + .live-project-button { + justify-self: start; + } + + .case-image-grid { + grid-template-columns: 1fr; + } + + .medical-case-stack-item, + .stable-case-card { + min-height: auto; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + } + + .marquee-track, + .animated-copy span, + .medical-case-stack-item, + .stable-case-card { + transform: none !important; + } +} + +/* Theme background and final visual alignment */ +:root { + --page-veil: rgba(246, 251, 251, 0.72); + --page-veil-strong: rgba(255, 255, 255, 0.86); + --section-surface: rgba(255, 255, 255, 0.78); + --section-surface-strong: rgba(255, 255, 255, 0.92); + --media-border: rgba(8, 70, 82, 0.16); + --soft-line: rgba(8, 70, 82, 0.12); + --heading-gradient: linear-gradient(180deg, #082f3a 0%, #0891b2 58%, #0f766e 100%); + --quiet-heading-gradient: linear-gradient(180deg, #0f3b46 0%, #51707a 100%); +} + +:root[data-theme="dark"] { + --page-veil: rgba(7, 20, 23, 0.7); + --page-veil-strong: rgba(12, 34, 40, 0.78); + --section-surface: rgba(15, 37, 42, 0.72); + --section-surface-strong: rgba(15, 37, 42, 0.88); + --media-border: rgba(185, 234, 238, 0.16); + --soft-line: rgba(185, 234, 238, 0.13); + --heading-gradient: linear-gradient(180deg, #f1fdff 0%, #9eeaf3 54%, #22d3ee 100%); + --quiet-heading-gradient: linear-gradient(180deg, #f4fdff 0%, #8eaab3 100%); +} + +.theme-backdrop { + background: + radial-gradient(circle at 12% 18%, color-mix(in srgb, var(--brand) 14%, transparent), transparent 30%), + radial-gradient(circle at 86% 42%, color-mix(in srgb, var(--cta) 12%, transparent), transparent 34%), + linear-gradient(180deg, var(--app-bg) 0%, var(--app-bg-strong) 48%, var(--app-bg) 100%); + position: relative; +} + +.theme-backdrop::before { + background: + linear-gradient(180deg, var(--page-veil-strong) 0%, var(--page-veil) 18%, var(--page-veil) 82%, var(--page-veil-strong) 100%); + content: ""; + inset: 0; + pointer-events: none; + position: absolute; + z-index: 1; +} + +.theme-backdrop-canvas { + contain: strict; + height: 100vh; + inset: 0; + opacity: 0.58; + pointer-events: auto; + position: fixed; + transform: translateZ(0); + width: 100vw; + will-change: transform, opacity; + z-index: 0; +} + +:root[data-theme="dark"] .theme-backdrop-canvas { + opacity: 0.72; +} + +.theme-backdrop-content { + pointer-events: auto; + position: relative; + z-index: 2; +} + +.home-route-backdrop { + background: + radial-gradient(circle at 18% 10%, rgba(20, 184, 166, 0.18), transparent 34%), + radial-gradient(circle at 84% 34%, rgba(215, 226, 234, 0.11), transparent 38%), + linear-gradient(180deg, #0c0c0c 0%, #050707 48%, #0c0c0c 100%); +} + +.home-route-backdrop::before { + background: linear-gradient(180deg, rgba(5, 7, 7, 0.42), rgba(5, 7, 7, 0.22) 24%, rgba(5, 7, 7, 0.3) 76%, rgba(5, 7, 7, 0.58)); +} + +.home-route-backdrop .theme-backdrop-canvas { + opacity: 0.5; +} + +:root[data-theme="dark"] .home-route-backdrop .theme-backdrop-canvas { + opacity: 0.62; +} + +.theme-control > .theme-popover { + display: none; +} + +.desktop-submenu.liquid-glass { + overflow: hidden; + position: absolute; + z-index: 120; +} + +.theme-popover-floating { + left: 0; + position: fixed; + right: auto; + top: 0; + width: 168px; + z-index: 1000; +} + +.theme-popover-floating::before { + left: var(--theme-arrow-x, 140px); + right: auto; + transform: translateX(-50%) rotate(45deg); +} + +.theme-popover-floating, +.desktop-submenu, +.mobile-submenu { + background: color-mix(in srgb, var(--panel) 90%, transparent); + border: 1px solid var(--border); + box-shadow: var(--shadow-card), var(--shadow-inset); +} + +.product-page { + background: var(--app-bg); + color: var(--text); +} + +.product-page .product-hero, +.product-page .section-band, +.product-page .section-pad { + background: transparent; + color: var(--text); +} + +.product-page .product-hero-title { + background: var(--heading-gradient); + -webkit-background-clip: text; + background-clip: text; + color: transparent; +} + +.product-page .section-heading span { + color: color-mix(in srgb, var(--brand-strong) 70%, var(--muted)); +} + +.product-page .product-snapshot, +.product-page .soft-card, +.product-page .target-users, +.product-page .demo-frame, +.product-page .case-card, +.product-page .pricing-card, +.product-page .review-card, +.product-page .contact-panel, +.product-page .contact-form, +.product-page .faq-item { + -webkit-backdrop-filter: blur(18px); + backdrop-filter: blur(18px); + background: var(--section-surface); + border: 1px solid var(--media-border); + box-shadow: var(--shadow-card), var(--shadow-inset); + color: var(--text); +} + +.product-page .snapshot-header span, +.product-page .section-heading h2, +.product-page .product-hero-copytext, +.product-page .case-card h3, +.product-page .review-card p, +.product-page .contact-panel h2, +.product-page .faq-item span, +.product-page .faq-item p { + color: var(--text); +} + +.product-page .target-users div span, +.product-page .pricing-card p, +.product-page .pricing-card li, +.product-page .check-line, +.product-page .text-muted { + color: var(--muted); +} + +.product-page .product-hero { + min-height: 92vh; +} + +.product-page .product-snapshot, +.product-page .demo-frame { + border-radius: 30px; + overflow: hidden; +} + +.product-page .snapshot-main, +.product-page .snapshot-main aside span, +.product-page .snapshot-alert, +.product-page .snapshot-cards div, +.product-page .snapshot-bars, +.product-page .contact-form input, +.product-page .contact-form textarea, +.product-page .faq-item { + background: color-mix(in srgb, var(--panel) 78%, transparent); + border-color: var(--border); +} + +.product-page .pricing-featured { + background: + linear-gradient(180deg, color-mix(in srgb, var(--brand) 18%, var(--section-surface-strong)), var(--section-surface)); + border-color: color-mix(in srgb, var(--brand) 48%, var(--border)); +} + +.product-page .demo-video { + border-radius: 28px; +} + +.product-page .demo-play { + background: color-mix(in srgb, var(--panel) 88%, transparent); + color: var(--brand-strong); + box-shadow: var(--shadow-card); +} + +.site-footer { + background: color-mix(in srgb, var(--app-bg) 92%, black); + border-top-color: var(--border); + color: var(--text); +} + +.site-footer strong, +.site-footer span, +.site-footer a, +.site-footer nav a { + color: var(--text); +} + +.site-footer-inner > div:first-child span, +.site-footer-records span, +.site-footer-records a { + color: var(--muted); +} + +@media (max-width: 767px) { + .theme-backdrop-canvas { + opacity: 0.42; + pointer-events: none; + } + + :root[data-theme="dark"] .theme-backdrop-canvas { + opacity: 0.54; + } + + .product-page .product-hero { + min-height: auto; + } + + .product-page .product-snapshot, + .product-page .demo-frame { + border-radius: 1.5rem; + } +} + +/* Product page dual-theme finish */ +.product-route-backdrop, +.product-page { + --product-bg: #f7fafb; + --product-bg-deep: #edf2f4; + --product-ink: #101416; + --product-muted: #5f6f78; + --product-faint: #8a969d; + --product-panel: rgba(255, 255, 255, 0.92); + --product-panel-solid: #ffffff; + --product-panel-soft: rgba(242, 246, 248, 0.92); + --product-glass: rgba(255, 255, 255, 0.72); + --product-line: rgba(15, 23, 42, 0.12); + --product-line-strong: rgba(116, 132, 142, 0.32); + --product-primary: #6d7f87; + --product-primary-strong: #2f3a3f; + --product-accent: #8fa1a9; + --product-accent-soft: rgba(215, 226, 234, 0.2); + --product-sky: #c8fff2; + --product-star: #7b8b92; + --product-shadow: 0 22px 58px rgba(15, 23, 42, 0.1); + --product-shadow-hover: 0 28px 72px rgba(15, 23, 42, 0.14); + color: var(--product-ink); + overflow: clip; +} + +.product-page { + background: transparent; +} + +:root[data-theme="dark"] .product-route-backdrop, +:root[data-theme="dark"] .product-page { + --product-bg: #0c0c0c; + --product-bg-deep: #050707; + --product-ink: #eef7fb; + --product-muted: rgba(215, 226, 234, 0.72); + --product-faint: rgba(215, 226, 234, 0.48); + --product-panel: rgba(12, 12, 12, 0.9); + --product-panel-solid: #0c0c0c; + --product-panel-soft: rgba(215, 226, 234, 0.055); + --product-glass: rgba(12, 12, 12, 0.62); + --product-line: rgba(215, 226, 234, 0.13); + --product-line-strong: rgba(215, 226, 234, 0.32); + --product-primary: #d7e2ea; + --product-primary-strong: #ffffff; + --product-accent: rgba(238, 247, 251, 0.82); + --product-accent-soft: rgba(215, 226, 234, 0.08); + --product-sky: #c8fff2; + --product-star: #d7e2ea; + --product-shadow: 0 28px 78px rgba(0, 0, 0, 0.34); + --product-shadow-hover: 0 34px 96px rgba(0, 0, 0, 0.44); +} + +.product-route-backdrop { + background: + radial-gradient(circle at 16% 12%, rgba(215, 226, 234, 0.22), transparent 34%), + radial-gradient(circle at 88% 30%, rgba(200, 255, 242, 0.14), transparent 36%), + linear-gradient(180deg, var(--product-bg) 0%, var(--product-bg-deep) 46%, var(--product-bg) 100%); +} + +:root[data-theme="dark"] .product-route-backdrop { + background: + radial-gradient(circle at 18% 12%, rgba(215, 226, 234, 0.08), transparent 34%), + radial-gradient(circle at 78% 24%, rgba(200, 255, 242, 0.07), transparent 38%), + linear-gradient(180deg, #0c0c0c 0%, #050707 48%, #0c0c0c 100%); +} + +.product-route-backdrop::before { + background: + linear-gradient(180deg, rgba(255, 255, 255, 0.76), rgba(245, 251, 252, 0.62) 20%, rgba(245, 251, 252, 0.64) 82%, rgba(255, 255, 255, 0.78)); +} + +:root[data-theme="dark"] .product-route-backdrop::before { + background: + linear-gradient(180deg, rgba(5, 11, 13, 0.78), rgba(5, 11, 13, 0.58) 22%, rgba(5, 11, 13, 0.62) 82%, rgba(5, 11, 13, 0.82)); +} + +.product-route-backdrop .theme-backdrop-canvas { + opacity: 0.16; +} + +:root[data-theme="dark"] .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.28; +} + +.product-page .product-hero, +.product-page .section-pad, +.product-page .section-band { + background: transparent; + color: var(--product-ink); +} + +.product-page .product-hero { + min-height: 92vh; +} + +.product-page .eyebrow, +.product-page .section-heading span, +.product-page .target-users > span, +.product-page .case-card span, +.product-page .pricing-head, +.product-page .contact-panel > svg { + color: var(--product-primary); +} + +.product-page .eyebrow { + background: var(--product-accent-soft); + border-color: var(--product-line-strong); +} + +.product-page .product-hero-title { + background: linear-gradient(180deg, var(--product-ink) 0%, #7d8b92 64%, #4f5d63 100%); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + display: block; + font-family: "MapleMono NF CN", "Microsoft YaHei", system-ui, sans-serif; + font-size: clamp(2.8rem, 4.8vw, 4.9rem); + font-weight: 900; + letter-spacing: 0; + line-height: 0.96; + margin: 1rem 0 1.35rem; + max-width: min(100%, 680px); + overflow-wrap: anywhere; + text-wrap: balance; + width: 100%; + overflow: visible !important; + white-space: normal; + word-break: break-all; +} + +.product-page .product-hero-title .split-line, +.product-page .product-hero-title .split-word, +.product-page .product-hero-title .split-char { + overflow: visible !important; +} + +.product-page .product-hero-title span { + display: block; +} + +:root[data-theme="dark"] .product-page .product-hero-title { + background: linear-gradient(180deg, #ffffff 0%, #d7e2ea 58%, #c8fff2 100%); + -webkit-background-clip: text; + background-clip: text; +} + +.product-page .product-hero-copytext, +.product-page .section-heading h2, +.product-page .feature-row h3, +.product-page .case-card h3, +.product-page .pricing-card strong, +.product-page .review-card strong, +.product-page .contact-panel h2, +.product-page .faq-item span, +.product-page .contact-form label { + color: var(--product-ink); +} + +.product-page .product-hero-copytext, +.product-page .feature-row p, +.product-page .case-card p, +.product-page .pricing-card p, +.product-page .pricing-card small, +.product-page .pricing-card li, +.product-page .review-card p, +.product-page .review-card span, +.product-page .contact-panel p, +.product-page .check-line, +.product-page .faq-item p, +.product-page .text-muted { + color: var(--product-muted); +} + +.product-page .mx-auto, +.product-page .grid, +.product-page .product-hero-copy, +.product-page .product-snapshot-shell, +.product-page .demo-frame-shell, +.product-page .demo-copy-shell, +.product-page .contact-form-shell { + min-width: 0; +} + +.product-page .product-snapshot, +.product-page .demo-frame { + -webkit-backdrop-filter: blur(18px); + backdrop-filter: blur(18px); + background: var(--product-glass); + border: 1px solid var(--product-line-strong); + border-radius: 28px; + box-shadow: var(--product-shadow), inset 0 1px 0 rgba(255, 255, 255, 0.58); + overflow: hidden; +} + +:root[data-theme="dark"] .product-page .product-snapshot, +:root[data-theme="dark"] .product-page .demo-frame { + box-shadow: var(--product-shadow), inset 0 1px 0 rgba(255, 255, 255, 0.08); +} + +.product-page .soft-card, +.product-page .target-users, +.product-page .case-card, +.product-page .pricing-card, +.product-page .review-card, +.product-page .contact-panel, +.product-page .contact-form, +.product-page .faq-item { + -webkit-backdrop-filter: none; + backdrop-filter: none; + background: var(--product-panel); + border: 1px solid var(--product-line); + box-shadow: var(--product-shadow); + color: var(--product-ink); + position: relative; + transition: border-color 180ms ease-out, box-shadow 180ms ease-out, transform 180ms ease-out; +} + +.product-page .soft-card, +.product-page .target-users, +.product-page .case-card, +.product-page .pricing-card, +.product-page .review-card, +.product-page .contact-panel, +.product-page .contact-form { + overflow: hidden; +} + +.product-page .soft-card::before, +.product-page .case-card::before, +.product-page .pricing-card::before, +.product-page .review-card::before, +.product-page .contact-panel::before, +.product-page .contact-form::before { + background: linear-gradient(110deg, transparent 0%, rgba(255, 255, 255, 0.34) 46%, transparent 68%); + content: ""; + height: 150%; + left: -82%; + pointer-events: none; + position: absolute; + top: -25%; + transform: translateX(0) rotate(8deg); + transition: transform 620ms cubic-bezier(0.2, 0.8, 0.2, 1); + width: 42%; +} + +:root[data-theme="dark"] .product-page .soft-card::before, +:root[data-theme="dark"] .product-page .case-card::before, +:root[data-theme="dark"] .product-page .pricing-card::before, +:root[data-theme="dark"] .product-page .review-card::before, +:root[data-theme="dark"] .product-page .contact-panel::before, +:root[data-theme="dark"] .product-page .contact-form::before { + background: linear-gradient(110deg, transparent 0%, rgba(148, 255, 238, 0.12) 46%, transparent 68%); +} + +.product-page .soft-card:hover, +.product-page .case-card:hover, +.product-page .pricing-card:hover, +.product-page .review-card:hover, +.product-page .faq-item:hover { + border-color: var(--product-line-strong); + box-shadow: var(--product-shadow-hover); + transform: translateY(-2px); +} + +.product-page .soft-card:hover::before, +.product-page .case-card:hover::before, +.product-page .pricing-card:hover::before, +.product-page .review-card:hover::before, +.product-page .contact-panel:hover::before, +.product-page .contact-form:hover::before { + transform: translateX(430%) rotate(8deg); +} + +.product-page .snapshot-main, +.product-page .snapshot-main aside span, +.product-page .snapshot-alert, +.product-page .snapshot-cards div, +.product-page .snapshot-bars, +.product-page .contact-lines span, +.product-page .contact-form input, +.product-page .contact-form textarea, +.product-page .faq-item { + background: var(--product-panel-soft); + border-color: var(--product-line); + color: var(--product-ink); +} + +.product-page .snapshot-header strong { + background: var(--product-accent-soft); + color: var(--product-primary); +} + +.product-page .snapshot-alert svg, +.product-page .check-line svg, +.product-page .pricing-card li svg { + color: var(--product-primary); +} + +.product-page .snapshot-cards strong { + color: var(--product-accent); +} + +.product-page .snapshot-bars span { + background: linear-gradient(90deg, #8fa1a9, #c8fff2); +} + +.product-page .target-users div span { + background: var(--product-panel-soft); + border-color: var(--product-line); + color: var(--product-ink); +} + +.product-page .btn-primary { + background: linear-gradient(135deg, #ffffff 0%, #c8fff2 48%, #ffffff 100%); + border: 1px solid rgba(255, 255, 255, 0.48); + box-shadow: 0 18px 38px rgba(12, 12, 12, 0.18); + color: #041012; +} + +.product-page .btn-primary:hover { + background: #e5e7eb; + transform: translateY(-1px); +} + +.product-page .btn-secondary { + background: color-mix(in srgb, var(--product-panel-solid) 74%, transparent); + border: 1px solid var(--product-line-strong); + color: var(--product-ink); +} + +.product-page .btn-secondary:hover { + background: var(--product-accent-soft); + border-color: var(--product-line-strong); +} + +.product-page .pricing-card { + min-height: 0; +} + +.product-page .pricing-featured { + background: + linear-gradient(180deg, color-mix(in srgb, var(--product-accent) 10%, var(--product-panel-solid)), var(--product-panel)); + border-color: var(--product-line-strong); + transform: none; +} + +:root[data-theme="dark"] .product-page .pricing-featured { + background: + linear-gradient(180deg, rgba(215, 226, 234, 0.09), var(--product-panel)); +} + +.product-page .pricing-button { + background: var(--product-ink); + color: var(--product-bg); +} + +.product-page .pricing-button:hover { + background: linear-gradient(135deg, #ffffff 0%, #c8fff2 48%, #ffffff 100%); + color: #041012; +} + +.product-page .stars { + color: var(--product-star); +} + +.product-page .demo-video { + background: #050b0d; + border-radius: 24px; +} + +.product-page .demo-play { + background: var(--product-panel); + color: var(--product-primary); + box-shadow: var(--product-shadow); +} + +.product-page .contact-form input::placeholder, +.product-page .contact-form textarea::placeholder { + color: var(--product-faint); +} + +.product-page .contact-form input:focus, +.product-page .contact-form textarea:focus { + border-color: var(--product-line-strong); + box-shadow: 0 0 0 4px color-mix(in srgb, var(--product-primary) 14%, transparent); +} + +@media (max-width: 767px) { + .product-page { + overflow: hidden; + } + + .product-route-backdrop, + .product-route-backdrop .theme-backdrop-content { + max-width: 100%; + overflow-x: clip; + } + + .product-page .product-hero-title { + font-size: clamp(1.9rem, 8.2vw, 2.08rem); + line-height: 1.06; + } + + .product-page .product-hero-copytext { + max-width: 100%; + overflow-wrap: anywhere; + word-break: break-all; + } + + .product-page .btn-primary, + .product-page .btn-secondary { + max-width: 100%; + } + + .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.14; + } + + :root[data-theme="dark"] .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.24; + } + + .product-page .product-hero { + min-height: auto; + } + + .product-page .product-snapshot, + .product-page .demo-frame { + max-width: 100%; + border-radius: 20px; + } + + .product-page .snapshot-header { + align-items: flex-start; + flex-direction: column; + gap: 0.65rem; + } + + .product-page .snapshot-main { + grid-template-columns: 1fr; + padding: 0.85rem; + } + + .product-page .snapshot-main aside, + .product-page .snapshot-cards { + grid-template-columns: 1fr; + } + + .product-page .soft-card, + .product-page .target-users, + .product-page .case-card, + .product-page .pricing-card, + .product-page .review-card, + .product-page .contact-panel, + .product-page .contact-form, + .product-page .faq-item { + border-radius: 18px; + } +} + +/* Final nav contrast, backdrop interaction, and home marquee fixes */ +.site-header { + --nav-ink: #f8ffff; + --nav-muted: rgba(248, 255, 255, 0.78); + --nav-panel: rgba(8, 10, 12, 0.72); + --nav-control: rgba(255, 255, 255, 0.045); + --nav-control-hover: rgba(255, 255, 255, 0.1); + --nav-border: rgba(255, 255, 255, 0.18); + --nav-shadow: 0 24px 70px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.1); +} + +.site-header-solid { + --nav-ink: #101416; + --nav-muted: #4e626c; + --nav-panel: rgba(255, 255, 255, 0.9); + --nav-control: rgba(15, 23, 42, 0.045); + --nav-control-hover: rgba(15, 23, 42, 0.08); + --nav-border: rgba(15, 23, 42, 0.14); + --nav-shadow: 0 20px 55px rgba(15, 23, 42, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.72); +} + +.site-header-home, +:root[data-theme="dark"] .site-header-solid, +:root[data-theme="dark"] .site-header-product { + --nav-ink: #f8ffff; + --nav-muted: rgba(215, 226, 234, 0.78); + --nav-panel: rgba(12, 12, 12, 0.78); + --nav-control: rgba(255, 255, 255, 0.045); + --nav-control-hover: rgba(255, 255, 255, 0.1); + --nav-border: rgba(215, 226, 234, 0.16); + --nav-shadow: 0 24px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.08); +} + +.site-nav { + color: var(--nav-ink); +} + +.site-nav-solid { + background: var(--nav-panel); + border-color: var(--nav-border); + box-shadow: var(--nav-shadow); +} + +.site-header .site-logo, +.site-header .site-logo-mark, +.site-header .icon-pill, +.site-header .action-pill { + color: var(--nav-ink); +} + +.site-header .icon-pill.liquid-glass, +.site-header .action-pill.liquid-glass { + background: var(--nav-control); + border: 1px solid var(--nav-border); + box-shadow: var(--nav-shadow); +} + +.site-header .icon-pill.liquid-glass:hover, +.site-header .action-pill.liquid-glass:hover { + background: var(--nav-control-hover); +} + +.site-header .primary-nav-link { + color: var(--nav-muted); +} + +.site-header .primary-nav-link:hover, +.site-header .primary-nav-link-active { + background: var(--nav-control-hover); + color: var(--nav-ink); +} + +.site-header .desktop-submenu.liquid-glass, +.site-header .mobile-submenu.liquid-glass { + background: var(--nav-panel); + border: 1px solid var(--nav-border); + box-shadow: var(--nav-shadow); + color: var(--nav-ink); +} + +.site-header .submenu-link, +.site-header .mobile-sub-link { + color: var(--nav-muted); +} + +.site-header .submenu-link:hover, +.site-header .mobile-sub-link:hover { + background: var(--nav-control-hover); + color: var(--nav-ink); +} + +.site-header .mobile-group-trigger { + color: var(--nav-ink); +} + +.theme-popover-floating { + background: rgba(255, 255, 255, 0.94); + border: 1px solid rgba(15, 23, 42, 0.14); + box-shadow: 0 24px 64px rgba(15, 23, 42, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.72); + color: #101416; +} + +.theme-popover-floating::before { + background: rgba(255, 255, 255, 0.94); + border-color: rgba(15, 23, 42, 0.14); +} + +.theme-popover-floating .theme-option { + color: #4e626c; +} + +.theme-popover-floating .theme-option:hover, +.theme-popover-floating .theme-option-active { + background: rgba(15, 23, 42, 0.08); + color: #101416; +} + +:root[data-theme="dark"] .theme-popover-floating { + background: rgba(12, 12, 12, 0.92); + border-color: rgba(215, 226, 234, 0.16); + box-shadow: 0 24px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.08); + color: #f8ffff; +} + +:root[data-theme="dark"] .theme-popover-floating::before { + background: rgba(12, 12, 12, 0.92); + border-color: rgba(215, 226, 234, 0.16); +} + +:root[data-theme="dark"] .theme-popover-floating .theme-option { + color: rgba(215, 226, 234, 0.78); +} + +:root[data-theme="dark"] .theme-popover-floating .theme-option:hover, +:root[data-theme="dark"] .theme-popover-floating .theme-option-active { + background: rgba(255, 255, 255, 0.1); + color: #f8ffff; +} + +.theme-backdrop-canvas, +.theme-backdrop-canvas canvas { + pointer-events: none !important; +} + +.product-route-backdrop::before { + background: linear-gradient(180deg, rgba(255, 255, 255, 0.58), rgba(245, 251, 252, 0.42) 22%, rgba(245, 251, 252, 0.44) 82%, rgba(255, 255, 255, 0.62)); +} + +:root[data-theme="dark"] .product-route-backdrop::before { + background: linear-gradient(180deg, rgba(5, 7, 7, 0.58), rgba(5, 7, 7, 0.38) 22%, rgba(5, 7, 7, 0.42) 82%, rgba(5, 7, 7, 0.64)); +} + +.product-route-backdrop .theme-backdrop-canvas { + opacity: 0.28; +} + +:root[data-theme="dark"] .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.42; +} + +:root[data-theme="light"] .home-page { + background: transparent; + color: #d7e2ea; +} + +:root[data-theme="light"] .home-page .creator-services-section { + background: #f8fafb; + color: #101416; +} + +:root[data-theme="light"] .home-page .creator-services-section p, +:root[data-theme="light"] .home-page .service-item p { + color: #55666f; +} + +:root[data-theme="light"] .home-page .learn-button, +:root[data-theme="light"] .home-page .arrow-pill { + color: #f8ffff; +} + +.home-page .marquee-track { + animation: homeMarqueeLoop 34s linear infinite; + transition: none; +} + +.home-page .marquee-track-reverse { + animation-duration: 38s; + animation-name: homeMarqueeLoopReverse; +} + +@keyframes homeMarqueeLoop { + from { + transform: translate3d(0, 0, 0); + } + to { + transform: translate3d(-33.333%, 0, 0); + } +} + +@keyframes homeMarqueeLoopReverse { + from { + transform: translate3d(-33.333%, 0, 0); + } + to { + transform: translate3d(0, 0, 0); + } +} + +@media (max-width: 767px) { + .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.2; + } + + :root[data-theme="dark"] .product-route-backdrop .theme-backdrop-canvas { + opacity: 0.32; + } + + .home-page .marquee-track { + animation-duration: 28s; + } + + .home-page .marquee-track-reverse { + animation-duration: 32s; + } +} + +@media (prefers-reduced-motion: reduce) { + .home-page .marquee-track, + .home-page .marquee-track-reverse { + animation: none !important; + transform: none !important; + } +} + +/* Shared SiteHeader: home-first geometry with explicit contrast tones */ +.site-header-tone-dark { + --nav-ink: #f8ffff; + --nav-muted: rgba(215, 226, 234, 0.78); + --nav-panel: rgba(12, 12, 12, 0.78); + --nav-shell: rgba(12, 12, 12, 0.34); + --nav-control: rgba(255, 255, 255, 0.045); + --nav-control-hover: rgba(255, 255, 255, 0.1); + --nav-border: rgba(215, 226, 234, 0.16); + --nav-strong-border: rgba(215, 226, 234, 0.24); + --nav-shadow: 0 24px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.08); +} + +.site-header-tone-light { + --nav-ink: #101416; + --nav-muted: #475b64; + --nav-panel: rgba(255, 255, 255, 0.94); + --nav-shell: rgba(255, 255, 255, 0.82); + --nav-control: rgba(15, 23, 42, 0.045); + --nav-control-hover: rgba(15, 23, 42, 0.08); + --nav-border: rgba(15, 23, 42, 0.14); + --nav-strong-border: rgba(15, 23, 42, 0.2); + --nav-shadow: 0 22px 58px rgba(15, 23, 42, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.72); +} + +.site-header .site-nav { + color: var(--nav-ink); + min-height: 64px; + padding: 0.42rem; +} + +.site-header .site-nav-overlay { + background: transparent; + border: 1px solid transparent; + box-shadow: none; +} + +.site-header .site-nav-solid { + background: var(--nav-shell); + border: 1px solid var(--nav-border); + border-radius: 999px; + box-shadow: var(--nav-shadow); +} + +.site-header .site-logo, +.site-header .site-logo-mark, +.site-header .primary-nav-link, +.site-header .icon-pill, +.site-header .action-pill { + color: var(--nav-ink); +} + +.site-header .primary-nav-link { + color: var(--nav-muted); +} + +.site-header .primary-nav-link:hover, +.site-header .primary-nav-link-active { + background: var(--nav-control-hover); + color: var(--nav-ink); +} + +.site-header .icon-pill.liquid-glass, +.site-header .action-pill.liquid-glass { + background: var(--nav-control); + border: 1px solid var(--nav-border); + box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.1); + color: var(--nav-ink); +} + +.site-header .icon-pill.liquid-glass:hover, +.site-header .action-pill.liquid-glass:hover { + background: var(--nav-control-hover); + border-color: var(--nav-strong-border); +} + +.site-header .desktop-submenu.liquid-glass, +.site-header .mobile-submenu.liquid-glass { + background: var(--nav-panel); + border: 1px solid var(--nav-border); + box-shadow: var(--nav-shadow); + color: var(--nav-ink); +} + +.site-header .submenu-link, +.site-header .mobile-sub-link { + color: var(--nav-muted); +} + +.site-header .submenu-link:hover, +.site-header .mobile-sub-link:hover { + background: var(--nav-control-hover); + color: var(--nav-ink); +} + +.site-header .mobile-group-trigger { + color: var(--nav-ink); +} + +.theme-popover-tone-dark { + --nav-ink: #f8ffff; + --nav-muted: rgba(215, 226, 234, 0.78); + --nav-panel: rgba(12, 12, 12, 0.92); + --nav-control-hover: rgba(255, 255, 255, 0.1); + --nav-border: rgba(215, 226, 234, 0.16); + --nav-shadow: 0 24px 70px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.08); +} + +.theme-popover-tone-light { + --nav-ink: #101416; + --nav-muted: #475b64; + --nav-panel: rgba(255, 255, 255, 0.94); + --nav-control-hover: rgba(15, 23, 42, 0.08); + --nav-border: rgba(15, 23, 42, 0.14); + --nav-shadow: 0 24px 64px rgba(15, 23, 42, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.72); +} + +.theme-popover-floating { + background: var(--nav-panel); + border: 1px solid var(--nav-border); + box-shadow: var(--nav-shadow); + color: var(--nav-ink); +} + +.theme-popover-floating::before { + background: var(--nav-panel); + border-color: var(--nav-border); +} + +.theme-popover-floating .theme-option { + color: var(--nav-muted); +} + +.theme-popover-floating .theme-option:hover, +.theme-popover-floating .theme-option-active { + background: var(--nav-control-hover); + color: var(--nav-ink); +} diff --git a/src/views/index/index.vue b/src/views/index/index.vue index 38bc235..ddcb68c 100644 --- a/src/views/index/index.vue +++ b/src/views/index/index.vue @@ -1,11 +1,321 @@ - - - diff --git a/src/views/product/index.vue b/src/views/product/index.vue new file mode 100644 index 0000000..42be678 --- /dev/null +++ b/src/views/product/index.vue @@ -0,0 +1,326 @@ + + +