diff --git a/.hermes/shared-memory/decision-log.md b/.hermes/shared-memory/decision-log.md index 783fabbd..26dd9941 100644 --- a/.hermes/shared-memory/decision-log.md +++ b/.hermes/shared-memory/decision-log.md @@ -678,3 +678,11 @@ - 影响范围:平台入口、推荐流、公开详情、试玩启动、跳一跳运行态、`api-server` / SpacetimeDB 公开投影和 shared contracts。 - 验证方式:从平台推荐或公开详情进入跳一跳作品时,路由 source type 为 `jump-hop`、public code 为 `JH-*`,运行态启动消费后端返回的完整 profile / run 数据;后端 smoke 统一使用 `npm run dev:api-server` 启动并检查 `/healthz`。 - 关联文档:`docs/prd/【玩法创作】跳一跳俯视角玩法模板PRD-2026-05-19.md`、`docs/【玩法创作】平台入口与玩法链路-2026-05-15.md`、`docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`。 + +# 2026-05-20 陶泥儿主视觉配色回收为暖白/陶土橙 + +- 背景:用户要求只替换产品各界面的 UI 颜色,不改布局,并以两张陶泥儿主视觉图作为配色依据。 +- 决策:平台亮色主题的主色回收到暖白 / 米杏底、陶土橙主按钮、深棕正文与浅杏边框;后台管理也同步切换到同一暖橙体系。主题变量优先通过 `src/index.css` 的 `--platform-*` token 统一控制,零散组件只做必要的局部替换。 +- 影响范围:主站平台壳层、常用表单 / 按钮 / 卡片 / 背景、后台管理 UI、业务进度条和小游戏结果条的通用强调色。 +- 验证方式:优先检查 `src/index.css` 与 `apps/admin-web/src/styles/admin.css` 是否还存在旧粉色主色;再用编码检查和可执行的本地 typecheck / build 验证。 +- 关联文档:`docs/【项目基线】当前产品与工程约束-2026-05-15.md`。 diff --git a/apps/admin-web/src/styles/admin.css b/apps/admin-web/src/styles/admin.css index 93ee4007..162c9678 100644 --- a/apps/admin-web/src/styles/admin.css +++ b/apps/admin-web/src/styles/admin.css @@ -1,6 +1,6 @@ :root { - color: #17212b; - background: #eef3f6; + color: #3d1f10; + background: #f8efe7; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; @@ -16,7 +16,7 @@ body { min-width: 320px; min-height: 100vh; margin: 0; - background: #eef3f6; + background: #f8efe7; } button, @@ -49,31 +49,31 @@ button:disabled { .admin-loading-screen { gap: 12px; - color: #5c6b77; + color: #7b6150; } .admin-loading-mark { width: 24px; height: 24px; - border: 3px solid #d1dde6; - border-top-color: #126e82; + border: 3px solid #e1ccbb; + border-top-color: #b6623f; border-radius: 50%; animation: admin-spin 0.8s linear infinite; } .admin-login-screen { background: - linear-gradient(145deg, rgba(18, 110, 130, 0.12), transparent 36%), - linear-gradient(315deg, rgba(165, 94, 54, 0.12), transparent 34%), - #eef3f6; + linear-gradient(145deg, rgba(204, 117, 76, 0.14), transparent 36%), + linear-gradient(315deg, rgba(226, 171, 134, 0.16), transparent 34%), + #f8efe7; } .admin-login-panel, .admin-panel { - border: 1px solid #d8e2e8; + border: 1px solid #e1ccbb; border-radius: 8px; background: #ffffff; - box-shadow: 0 12px 36px rgba(23, 33, 43, 0.08); + box-shadow: 0 12px 36px rgba(112, 57, 30, 0.08); } .admin-login-panel { @@ -92,14 +92,14 @@ button:disabled { .admin-login-brand h1 { margin: 0; - color: #17212b; + color: #3d1f10; font-size: 26px; line-height: 1.16; } .admin-login-brand span, .admin-brand span { - color: #667682; + color: #8f7868; font-size: 12px; } @@ -108,10 +108,10 @@ button:disabled { width: 38px; height: 38px; place-items: center; - border: 1px solid #bcd2db; + border: 1px solid #dfc8b7; border-radius: 8px; - color: #126e82; - background: #e7f3f5; + color: #b6623f; + background: #f4e5d7; } .admin-brand-icon-large { @@ -129,7 +129,7 @@ button:disabled { display: flex; flex-direction: column; gap: 24px; - border-right: 1px solid #d8e2e8; + border-right: 1px solid #e1ccbb; background: #ffffff; padding: 22px 18px; } @@ -164,13 +164,13 @@ button:disabled { gap: 10px; min-height: 42px; padding: 0 12px; - color: #52616d; + color: #755a49; background: transparent; } .admin-nav-button[data-active="true"] { - color: #0f5666; - background: #e7f3f5; + color: #8f3f27; + background: #f4e5d7; } .admin-main { @@ -184,7 +184,7 @@ button:disabled { align-items: center; justify-content: flex-end; gap: 12px; - border-bottom: 1px solid #d8e2e8; + border-bottom: 1px solid #e1ccbb; background: rgba(255, 255, 255, 0.86); padding: 0 24px; } @@ -200,7 +200,7 @@ button:disabled { } .admin-user small { - color: #667682; + color: #8f7868; } .admin-content { @@ -232,7 +232,7 @@ button:disabled { .admin-page-heading h2, .admin-panel-heading h3 { margin: 0; - color: #17212b; + color: #3d1f10; } .admin-page-heading h2 { @@ -241,7 +241,7 @@ button:disabled { .admin-page-heading p { margin: 3px 0 0; - color: #667682; + color: #8f7868; } .admin-panel { @@ -256,7 +256,7 @@ button:disabled { } .admin-panel-heading span { - color: #667682; + color: #8f7868; font-size: 13px; } @@ -314,12 +314,12 @@ button:disabled { } .admin-table tbody tr[data-clickable="true"]:hover { - background: #f5fafb; + background: #fff7f0; } .admin-text-button:hover, .admin-text-button:focus-visible { - color: #126e82; + color: #b6623f; text-decoration: underline; outline: none; } @@ -345,7 +345,7 @@ button:disabled { } .admin-query-summary { - color: #667682; + color: #8f7868; font-size: 12px; font-weight: 650; } @@ -354,7 +354,7 @@ button:disabled { display: grid; min-width: 0; gap: 7px; - color: #4c5c68; + color: #6f5848; font-size: 13px; font-weight: 650; } @@ -372,16 +372,16 @@ button:disabled { .admin-field textarea { width: 100%; min-height: 42px; - border: 1px solid #cbd8e0; + border: 1px solid #dfc8b7; border-radius: 8px; - color: #17212b; - background: #fbfdfe; + color: #3d1f10; + background: #fffdf9; padding: 9px 11px; outline: none; } .admin-field-note { - color: #667682; + color: #8f7868; font-size: 12px; font-weight: 500; line-height: 1.45; @@ -395,8 +395,8 @@ button:disabled { .admin-field input:focus, .admin-field select:focus, .admin-field textarea:focus { - border-color: #126e82; - box-shadow: 0 0 0 3px rgba(18, 110, 130, 0.16); + border-color: #b6623f; + box-shadow: 0 0 0 3px rgba(204, 117, 76, 0.16); } .admin-combobox { @@ -419,16 +419,16 @@ button:disabled { align-items: center; justify-content: center; min-height: 42px; - border: 1px solid #cbd8e0; + border: 1px solid #dfc8b7; border-left: 0; border-radius: 0 8px 8px 0; - color: #52616d; - background: #fbfdfe; + color: #755a49; + background: #fffdf9; } .admin-combobox:focus-within .admin-combobox-toggle { - border-color: #126e82; - box-shadow: 0 0 0 3px rgba(18, 110, 130, 0.16); + border-color: #b6623f; + box-shadow: 0 0 0 3px rgba(204, 117, 76, 0.16); } .admin-combobox-menu { @@ -440,10 +440,10 @@ button:disabled { display: grid; max-height: 260px; overflow: auto; - border: 1px solid #cbd8e0; + border: 1px solid #dfc8b7; border-radius: 8px; background: #ffffff; - box-shadow: 0 16px 40px rgba(23, 33, 43, 0.14); + box-shadow: 0 16px 40px rgba(112, 57, 30, 0.14); padding: 6px; } @@ -453,7 +453,7 @@ button:disabled { width: 100%; border: 0; border-radius: 7px; - color: #17212b; + color: #3d1f10; background: transparent; padding: 9px 10px; text-align: left; @@ -461,12 +461,12 @@ button:disabled { .admin-combobox-option:hover, .admin-combobox-option:focus-visible { - background: #e7f3f5; + background: #f4e5d7; outline: none; } .admin-combobox-option span { - color: #0f5666; + color: #8f3f27; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; @@ -475,7 +475,7 @@ button:disabled { .admin-combobox-option small, .admin-combobox-empty { - color: #667682; + color: #8f7868; font-size: 12px; font-weight: 500; line-height: 1.45; @@ -495,7 +495,7 @@ button:disabled { justify-content: flex-end; gap: 8px; min-height: 42px; - color: #4c5c68; + color: #6f5848; font-size: 13px; font-weight: 650; } @@ -503,7 +503,7 @@ button:disabled { .admin-switch-field input { width: 18px; height: 18px; - accent-color: #126e82; + accent-color: #b6623f; } .admin-primary-button, @@ -522,7 +522,7 @@ button:disabled { z-index: 80; display: grid; place-items: center; - background: rgba(23, 33, 43, 0.42); + background: rgba(61, 31, 16, 0.34); padding: 16px; } @@ -530,10 +530,10 @@ button:disabled { display: grid; width: min(100%, 420px); gap: 16px; - border: 1px solid #d8e2e8; + border: 1px solid #e1ccbb; border-radius: 10px; background: #ffffff; - box-shadow: 0 22px 60px rgba(23, 33, 43, 0.24); + box-shadow: 0 22px 60px rgba(112, 57, 30, 0.24); padding: 18px; } @@ -543,10 +543,10 @@ button:disabled { max-height: min(90dvh, 760px); gap: 16px; overflow: auto; - border: 1px solid #d8e2e8; + border: 1px solid #e1ccbb; border-radius: 10px; background: #ffffff; - box-shadow: 0 22px 60px rgba(23, 33, 43, 0.24); + box-shadow: 0 22px 60px rgba(112, 57, 30, 0.24); padding: 18px; } @@ -557,7 +557,7 @@ button:disabled { .admin-confirm-warning { border: 1px solid #efc894; border-radius: 8px; - color: #8a5a1b; + color: #8f4b26; background: #fffaf3; padding: 10px 12px; font-size: 13px; @@ -576,26 +576,26 @@ button:disabled { .admin-primary-button { color: #ffffff; - background: #126e82; + background: #b6623f; } .admin-secondary-button, .admin-icon-button { - border: 1px solid #cbd8e0; - color: #2f4550; + border: 1px solid #dfc8b7; + color: #4b2412; background: #ffffff; } .admin-danger-button { color: #ffffff; - background: #a44242; + background: #a6402f; } .admin-ghost-button { width: 34px; height: 34px; - color: #52616d; - background: #eef3f6; + color: #755a49; + background: #f8efe7; } .admin-ghost-button.admin-query-reset-button { @@ -608,7 +608,7 @@ button:disabled { .admin-text-button { display: inline; border: 0; - color: #0f5666; + color: #8f3f27; background: transparent; padding: 0; text-align: left; @@ -616,9 +616,9 @@ button:disabled { } .admin-alert { - border: 1px solid #efc0bd; + border: 1px solid #e2b9a4; border-radius: 8px; - color: #8a2f2f; + color: #8f3f27; background: #fff4f3; padding: 10px 12px; font-size: 13px; @@ -638,7 +638,7 @@ button:disabled { } .admin-info-list dt { - color: #667682; + color: #8f7868; font-size: 12px; } @@ -646,7 +646,7 @@ button:disabled { min-width: 0; margin: 0; overflow-wrap: anywhere; - color: #17212b; + color: #3d1f10; font-size: 13px; font-weight: 650; } @@ -666,26 +666,26 @@ button:disabled { .admin-table th, .admin-table td { - border-bottom: 1px solid #e4edf2; + border-bottom: 1px solid #eaded2; padding: 10px; text-align: left; vertical-align: top; } .admin-table th { - color: #667682; + color: #8f7868; font-size: 12px; } .admin-table td small { display: block; margin-top: 3px; - color: #667682; + color: #8f7868; font-size: 12px; } .admin-muted-text { - color: #86939c; + color: #a38f80; } .admin-tag-list { @@ -699,10 +699,10 @@ button:disabled { display: inline-flex; max-width: 100%; align-items: center; - border: 1px solid #cbdfe6; + border: 1px solid #dfc8b7; border-radius: 999px; - background: #eef7f8; - color: #0f5666; + background: #f7eadf; + color: #8f3f27; padding: 3px 8px; font-size: 12px; font-weight: 750; @@ -744,7 +744,7 @@ button:disabled { gap: 6px; max-width: 100%; border: 0; - color: #667682; + color: #8f7868; background: transparent; padding: 0; text-align: left; @@ -773,7 +773,7 @@ button:disabled { .admin-table-sort-button:hover, .admin-table-sort-button:focus-visible, .admin-table-sort-button[data-active="true"] { - color: #0f5666; + color: #8f3f27; outline: none; } @@ -782,7 +782,7 @@ button:disabled { max-height: 160px; margin: 0; overflow: auto; - color: #2f4550; + color: #4b2412; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; font-size: 12px; @@ -801,18 +801,18 @@ button:disabled { } .admin-status-ok { - color: #17623c; - background: #e6f5ed; + color: #2f7b46; + background: #edf8ef; } .admin-status-pending { - color: #8a5a1b; - background: #fff4df; + color: #8f4b26; + background: #fdf1e5; } .admin-status-error { - color: #8a2f2f; - background: #fff1ef; + color: #8f3f27; + background: #fff0e9; } .admin-error-list { @@ -820,7 +820,7 @@ button:disabled { gap: 8px; margin: 0; padding-left: 18px; - color: #8a5a1b; + color: #8f4b26; overflow-wrap: anywhere; } @@ -830,7 +830,7 @@ button:disabled { } .admin-subsection-heading { - color: #4c5c68; + color: #6f5848; font-size: 13px; font-weight: 650; } @@ -850,7 +850,7 @@ button:disabled { .admin-header-row input { min-width: 0; min-height: 38px; - border: 1px solid #cbd8e0; + border: 1px solid #dfc8b7; border-radius: 8px; padding: 8px 10px; } @@ -863,10 +863,10 @@ button:disabled { max-height: 520px; margin: 0; overflow: auto; - border: 1px solid #dce6ec; + border: 1px solid #eaded2; border-radius: 8px; - background: #17212b; - color: #e9f2f4; + background: #3d1f10; + color: #fdf9f5; padding: 14px; font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; @@ -880,19 +880,19 @@ button:disabled { display: grid; min-height: 140px; place-items: center; - border: 1px dashed #cbd8e0; + border: 1px dashed #dfc8b7; border-radius: 8px; - color: #667682; - background: #fbfdfe; + color: #8f7868; + background: #fffdf9; } .admin-segmented-control { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; - border: 1px solid #d8e2e8; + border: 1px solid #e1ccbb; border-radius: 8px; - background: #eef3f6; + background: #f8efe7; padding: 4px; } @@ -900,15 +900,15 @@ button:disabled { min-height: 36px; border: 0; border-radius: 6px; - color: #52616d; + color: #755a49; background: transparent; font-weight: 700; } .admin-segmented-control button[data-active="true"] { - color: #0f5666; + color: #8f3f27; background: #ffffff; - box-shadow: 0 2px 8px rgba(23, 33, 43, 0.08); + box-shadow: 0 2px 8px rgba(112, 57, 30, 0.08); } .admin-bottom-nav { @@ -964,7 +964,7 @@ button:disabled { z-index: 20; display: grid; grid-template-columns: repeat(auto-fit, minmax(64px, 1fr)); - border-top: 1px solid #d8e2e8; + border-top: 1px solid #e1ccbb; background: rgba(255, 255, 255, 0.94); padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); backdrop-filter: blur(10px); @@ -974,15 +974,15 @@ button:disabled { display: grid; gap: 4px; min-height: 48px; - color: #667682; + color: #8f7868; background: transparent; font-size: 11px; font-weight: 700; } .admin-bottom-nav-button[data-active="true"] { - color: #0f5666; - background: #e7f3f5; + color: #8f3f27; + background: #f4e5d7; } } diff --git a/docs/【项目基线】当前产品与工程约束-2026-05-15.md b/docs/【项目基线】当前产品与工程约束-2026-05-15.md index 7b539e81..607782c8 100644 --- a/docs/【项目基线】当前产品与工程约束-2026-05-15.md +++ b/docs/【项目基线】当前产品与工程约束-2026-05-15.md @@ -94,6 +94,7 @@ server-rs + Axum + SpacetimeDB 8. 图像输入通用 UI 统一走 `src/components/common/CreativeImageInputPanel.tsx`。外层页面持有业务状态,组件只承担上传卡、预览、参考图缩略图、AI 重绘开关、错误展示和提交按钮。 9. 发现页 `分类` 子频道的筛选必须打开独立 dialog / drawer / modal,至少支持玩法类型过滤与排序切换;筛选结果为空时显示空状态,不把筛选内容展开在当前列表下方。 10. “我的”页泥点、游戏时长、玩过三张统计卡只展示各自标签和值,内容居中且不换行,不在统计区底部展示“更新于”时间。 +11. 平台亮色 UI 配色以陶泥儿主视觉为准:暖白 / 米杏底、陶土橙主按钮、深棕正文与浅杏边框;新增界面优先复用 `src/index.css` 的 `--platform-*` 主题变量和 `apps/admin-web/src/styles/admin.css` 的同系色值,不再引入粉红、蓝绿等独立主色方案。 ## 文案与编码 diff --git a/src/PuzzlePlaygroundApp.tsx b/src/PuzzlePlaygroundApp.tsx index d5794bfd..429b0761 100644 --- a/src/PuzzlePlaygroundApp.tsx +++ b/src/PuzzlePlaygroundApp.tsx @@ -22,7 +22,7 @@ const PLACEHOLDER_PUZZLE_IMAGE = - + diff --git a/src/components/CustomWorldEntityCatalog.tsx b/src/components/CustomWorldEntityCatalog.tsx index 02b7c773..005c373a 100644 --- a/src/components/CustomWorldEntityCatalog.tsx +++ b/src/components/CustomWorldEntityCatalog.tsx @@ -173,7 +173,7 @@ function ImageFrame({ }) { return (
{src ? (
@@ -313,7 +313,7 @@ function OpeningCgPreview({
{isGenerating ? (
-
+
) : null} {openingCg?.status === 'failed' && openingCg.errorMessage ? ( @@ -437,7 +437,7 @@ function CatalogCard({
@@ -453,7 +453,7 @@ function CatalogCard({ onClick={disabled ? undefined : onClick} aria-disabled={disabled} className={`w-full rounded-[1.3rem] border p-2.5 text-left transition-colors xl:p-3 ${ - isSelected ? 'border-rose-300/35 bg-rose-500/10' : 'platform-subpanel' + isSelected ? 'border-[var(--platform-button-danger-border)] bg-[var(--platform-button-danger-fill)]' : 'platform-subpanel' }`} >
@@ -491,7 +491,7 @@ function CatalogCard({ onClick={disabled ? undefined : onClick} aria-disabled={disabled} className={`w-full rounded-[1.4rem] border p-3 text-left transition-colors ${ - isSelected ? 'border-rose-300/35 bg-rose-500/10' : 'platform-subpanel' + isSelected ? 'border-[var(--platform-button-danger-border)] bg-[var(--platform-button-danger-fill)]' : 'platform-subpanel' }`} >
@@ -899,7 +899,7 @@ export function CustomWorldEntityCatalog({ ref={scrollContainerRef} className="h-full min-h-0 space-y-3 overflow-y-auto overscroll-contain pr-1 scrollbar-hide xl:space-y-4 xl:pr-2 2xl:space-y-5 2xl:pr-3" > -
+
世界档案
@@ -913,7 +913,7 @@ export function CustomWorldEntityCatalog({
-
+
{RESULT_TABS.map((tab) => (
diff --git a/src/components/CustomWorldGenerationView.tsx b/src/components/CustomWorldGenerationView.tsx index 70ff15d7..b540a4f0 100644 --- a/src/components/CustomWorldGenerationView.tsx +++ b/src/components/CustomWorldGenerationView.tsx @@ -225,7 +225,7 @@ export function CustomWorldGenerationView({
@@ -283,9 +283,9 @@ export function CustomWorldGenerationView({ )} className={`rounded-2xl border px-4 py-3 transition-colors ${ step.status === 'completed' - ? 'border-emerald-400/16 bg-emerald-500/8' + ? 'border-[var(--platform-success-border)] bg-[var(--platform-success-bg)]' : step.status === 'active' - ? 'border-sky-300/22 bg-sky-500/10' + ? 'border-[var(--platform-cool-border)] bg-[var(--platform-cool-bg)]' : 'platform-subpanel' } custom-world-generation-step`} initial={ @@ -317,9 +317,9 @@ export function CustomWorldGenerationView({ {error ? ( -
+
{error}
) : null} @@ -364,7 +364,7 @@ export function CustomWorldGenerationView({ diff --git a/src/components/auth/AccountModal.tsx b/src/components/auth/AccountModal.tsx index 6c346beb..45de37cb 100644 --- a/src/components/auth/AccountModal.tsx +++ b/src/components/auth/AccountModal.tsx @@ -260,7 +260,7 @@ function ThemeOptionCard({ onClick={onClick} className={`platform-subpanel w-full rounded-[1.5rem] p-4 text-left transition ${ active - ? 'border-[var(--platform-surface-hover-border)] shadow-[0_18px_44px_rgba(255,91,132,0.14)]' + ? 'border-[var(--platform-surface-hover-border)] shadow-[0_18px_44px_rgba(112,57,30,0.14)]' : 'hover:border-[var(--platform-surface-hover-border)]' }`} > @@ -534,8 +534,8 @@ export function AccountModal({ onPlatformThemeChange('light')} />
-
+
陶泥儿
视觉叙事 RPG
diff --git a/src/components/bark-battle-creation/BarkBattleConfigEditor.tsx b/src/components/bark-battle-creation/BarkBattleConfigEditor.tsx index fd2345ff..aed59239 100644 --- a/src/components/bark-battle-creation/BarkBattleConfigEditor.tsx +++ b/src/components/bark-battle-creation/BarkBattleConfigEditor.tsx @@ -127,7 +127,7 @@ export function BarkBattleConfigEditor({ value={title} disabled={isBusy} onChange={(event) => setTitle(event.target.value)} - className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-base font-semibold text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-base font-semibold text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" maxLength={40} aria-label="作品标题" /> @@ -141,7 +141,7 @@ export function BarkBattleConfigEditor({ value={description} disabled={isBusy} onChange={(event) => setDescription(event.target.value)} - className="h-[5.5rem] min-h-[5.5rem] w-full resize-none rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 py-3 text-base leading-6 text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-[5.5rem] min-h-[5.5rem] w-full resize-none rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 py-3 text-base leading-6 text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" maxLength={160} placeholder="" aria-label="简介" @@ -157,7 +157,7 @@ export function BarkBattleConfigEditor({ value={themePreset} disabled={isBusy} onChange={(event) => setThemePreset(event.target.value)} - className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" aria-label="主题背景" > {THEME_OPTIONS.map((option) => ( @@ -180,7 +180,7 @@ export function BarkBattleConfigEditor({ event.target.value as BarkBattleDifficultyPreset, ) } - className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" aria-label="难度预设" > {DIFFICULTY_OPTIONS.map((option) => ( @@ -201,7 +201,7 @@ export function BarkBattleConfigEditor({ onChange={(event) => setPlayerDogSkinPreset(event.target.value) } - className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" aria-label="玩家狗狗" > {DOG_SKIN_OPTIONS.map((option) => ( @@ -222,7 +222,7 @@ export function BarkBattleConfigEditor({ onChange={(event) => setOpponentDogSkinPreset(event.target.value) } - className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100" + className="h-11 w-full rounded-[1.05rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 text-sm font-black text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)]" aria-label="对手狗狗" > {DOG_SKIN_OPTIONS.map((option) => ( diff --git a/src/components/common/CreativeImageInputPanel.tsx b/src/components/common/CreativeImageInputPanel.tsx index 8116edb4..678b1c2d 100644 --- a/src/components/common/CreativeImageInputPanel.tsx +++ b/src/components/common/CreativeImageInputPanel.tsx @@ -207,7 +207,7 @@ export function CreativeImageInputPanel({ type="button" disabled={disabled} onClick={onHistoryClick} - className={`absolute right-3 top-3 z-10 inline-flex items-center gap-1.5 rounded-full border border-white/80 bg-white/94 px-3 py-2 text-[11px] font-black text-[var(--platform-text-strong)] shadow-sm backdrop-blur transition hover:text-[#ff4056] ${ + className={`absolute right-3 top-3 z-10 inline-flex items-center gap-1.5 rounded-full border border-white/80 bg-white/94 px-3 py-2 text-[11px] font-black text-[var(--platform-text-strong)] shadow-sm backdrop-blur transition hover:text-[var(--platform-accent)] ${ disabled ? 'cursor-not-allowed opacity-55' : '' }`} aria-label={labels.history ?? '选择历史图片'} @@ -232,7 +232,7 @@ export function CreativeImageInputPanel({
{error ? ( -
+
{error}
) : null} diff --git a/src/components/creation-agent/CreationAgentWorkspace.tsx b/src/components/creation-agent/CreationAgentWorkspace.tsx index e2c7935b..1bfa19e1 100644 --- a/src/components/creation-agent/CreationAgentWorkspace.tsx +++ b/src/components/creation-agent/CreationAgentWorkspace.tsx @@ -136,7 +136,7 @@ function CreationAgentOperationBanner({ : 'platform-banner--success'; const progress = normalizeCreationAgentProgress(visibleOperation.progress); const progressFillStyle = isFailed - ? { background: 'linear-gradient(90deg, #fb7185 0%, #f43f5e 100%)' } + ? { background: 'linear-gradient(90deg, #c7653d 0%, #a6402f 100%)' } : isRunning ? { background: 'var(--platform-button-primary-fill)' } : { background: 'linear-gradient(90deg, #86efac 0%, #34d399 100%)' }; diff --git a/src/components/creative-agent/CreativeAgentWorkspace.tsx b/src/components/creative-agent/CreativeAgentWorkspace.tsx index 918da8cb..30d527aa 100644 --- a/src/components/creative-agent/CreativeAgentWorkspace.tsx +++ b/src/components/creative-agent/CreativeAgentWorkspace.tsx @@ -171,7 +171,7 @@ export function CreativeAgentWorkspace({ {targetBinding ? (
- +
@@ -203,7 +203,7 @@ export function CreativeAgentWorkspace({ key={message.id} className={`max-w-[86%] rounded-[1.15rem] px-4 py-3 text-sm leading-6 ${ message.role === 'user' - ? 'ml-auto bg-[var(--platform-button-primary-fill)] text-[var(--platform-button-primary-text)]' + ? 'ml-auto bg-[var(--platform-button-primary-solid)] text-[var(--platform-button-primary-text)]' : 'platform-subpanel text-[var(--platform-text-base)]' }`} > diff --git a/src/components/jump-hop-result/JumpHopResultView.tsx b/src/components/jump-hop-result/JumpHopResultView.tsx index acef8e4f..d2f6cd78 100644 --- a/src/components/jump-hop-result/JumpHopResultView.tsx +++ b/src/components/jump-hop-result/JumpHopResultView.tsx @@ -60,13 +60,13 @@ const difficultyToneByValue: Record< { accent: string; soft: string; label: string } > = { advanced: { - accent: '#f97316', + accent: '#df7f40', soft: 'rgba(249, 115, 22, 0.16)', label: '进阶', }, challenge: { - accent: '#e11d48', - soft: 'rgba(225, 29, 72, 0.16)', + accent: '#b64a35', + soft: 'rgba(182, 98, 63, 0.16)', label: '挑战', }, easy: { diff --git a/src/components/jump-hop-runtime/JumpHopRuntimeShell.tsx b/src/components/jump-hop-runtime/JumpHopRuntimeShell.tsx index 08859ffd..7d99810c 100644 --- a/src/components/jump-hop-runtime/JumpHopRuntimeShell.tsx +++ b/src/components/jump-hop-runtime/JumpHopRuntimeShell.tsx @@ -290,9 +290,9 @@ export function JumpHopRuntimeShell({ }; return ( -
+
-
+
diff --git a/src/components/visual-novel-creation/VisualNovelAgentWorkspace.tsx b/src/components/visual-novel-creation/VisualNovelAgentWorkspace.tsx index 003ddf6a..48893bcf 100644 --- a/src/components/visual-novel-creation/VisualNovelAgentWorkspace.tsx +++ b/src/components/visual-novel-creation/VisualNovelAgentWorkspace.tsx @@ -142,10 +142,10 @@ function VisualNovelStyleButton({ aria-pressed={active} aria-label={label} onClick={onClick} - className={`group relative h-[4.9rem] w-[5.85rem] shrink-0 snap-start overflow-hidden rounded-[0.95rem] border p-0 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-rose-200 sm:h-[5.45rem] sm:w-[6.4rem] ${ + className={`group relative h-[4.9rem] w-[5.85rem] shrink-0 snap-start overflow-hidden rounded-[0.95rem] border p-0 text-left transition focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--platform-warm-border)] sm:h-[5.45rem] sm:w-[6.4rem] ${ active - ? 'border-rose-300 bg-white shadow-[0_8px_18px_rgba(190,18,60,0.10)] ring-2 ring-rose-100' - : 'border-[var(--platform-subpanel-border)] bg-white/70 hover:border-rose-200 hover:bg-white/95' + ? 'border-[var(--platform-surface-hover-border)] bg-white shadow-[0_8px_18px_rgba(112,57,30,0.10)] ring-2 ring-[var(--platform-warm-border)]' + : 'border-[var(--platform-subpanel-border)] bg-white/70 hover:border-[var(--platform-surface-hover-border)] hover:bg-white/95' } ${disabled ? 'cursor-not-allowed opacity-55' : ''}`} > {imageSrc ? ( @@ -160,12 +160,12 @@ function VisualNovelStyleButton({ )} {active ? ( - + ) : null} @@ -254,7 +254,7 @@ export function VisualNovelAgentWorkspace({

{title}

- + BETA
@@ -280,7 +280,7 @@ export function VisualNovelAgentWorkspace({ ideaText: event.target.value, })) } - className="h-full min-h-[7.75rem] w-full resize-none rounded-[1.15rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 py-3 text-base leading-6 text-[var(--platform-text-strong)] outline-none transition focus:border-rose-200 focus:bg-white focus:ring-2 focus:ring-rose-100 sm:min-h-[9rem] lg:min-h-[14rem]" + className="h-full min-h-[7.75rem] w-full resize-none rounded-[1.15rem] border border-[var(--platform-subpanel-border)] bg-white/90 px-4 py-3 text-base leading-6 text-[var(--platform-text-strong)] outline-none transition focus:border-[var(--platform-surface-hover-border)] focus:bg-white focus:ring-2 focus:ring-[var(--platform-warm-border)] sm:min-h-[9rem] lg:min-h-[14rem]" aria-label="一句话创作" /> diff --git a/src/components/visual-novel-runtime/VisualNovelAttributePanel.tsx b/src/components/visual-novel-runtime/VisualNovelAttributePanel.tsx index c94da2d7..a2a7576f 100644 --- a/src/components/visual-novel-runtime/VisualNovelAttributePanel.tsx +++ b/src/components/visual-novel-runtime/VisualNovelAttributePanel.tsx @@ -25,7 +25,7 @@ export function VisualNovelAttributePanel({ run }: VisualNovelAttributePanelProp
diff --git a/src/components/visual-novel-runtime/VisualNovelSavePanel.tsx b/src/components/visual-novel-runtime/VisualNovelSavePanel.tsx index 5debd432..96b9d967 100644 --- a/src/components/visual-novel-runtime/VisualNovelSavePanel.tsx +++ b/src/components/visual-novel-runtime/VisualNovelSavePanel.tsx @@ -42,7 +42,7 @@ export function VisualNovelSavePanel({ type="button" disabled={!onSaveRun || isSaving} onClick={onSaveRun} - className="flex min-h-12 w-full items-center justify-center gap-2 rounded-full border border-[var(--platform-subpanel-border)] bg-[var(--platform-button-primary-fill)] px-4 text-sm font-black text-white transition hover:brightness-105 disabled:cursor-not-allowed disabled:opacity-55" + className="flex min-h-12 w-full items-center justify-center gap-2 rounded-full border border-[var(--platform-subpanel-border)] bg-[var(--platform-button-primary-solid)] px-4 text-sm font-black text-white transition hover:brightness-105 disabled:cursor-not-allowed disabled:opacity-55" > {isSaving ? ( diff --git a/src/games/bark-battle/ui/BarkBattleHud.css b/src/games/bark-battle/ui/BarkBattleHud.css index 65aded4d..f9b7a6ec 100644 --- a/src/games/bark-battle/ui/BarkBattleHud.css +++ b/src/games/bark-battle/ui/BarkBattleHud.css @@ -111,7 +111,7 @@ } .bark-battle-primary-button { - background: linear-gradient(135deg, #facc15, #fb7185); + background: linear-gradient(135deg, #facc15, #c7653d); } .bark-battle-status-card, diff --git a/src/index.css b/src/index.css index a1691f57..7434dda0 100644 --- a/src/index.css +++ b/src/index.css @@ -35,7 +35,7 @@ --platform-bottom-nav-label-tracking: 0.18em; --platform-bottom-nav-content-gap: 0.22rem; --platform-bottom-nav-active-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08), - 0 8px 18px rgba(255, 91, 132, 0.1); + 0 8px 18px rgba(182, 98, 63, 0.1); } html, @@ -485,272 +485,277 @@ body { .platform-theme--light { color-scheme: light; + --platform-accent: #c7653d; --platform-body-fill: radial-gradient( - circle at top left, - rgba(255, 196, 214, 0.14), - transparent 24% - ), - radial-gradient( - circle at 88% 4%, - rgba(255, 222, 196, 0.12), - transparent 20% - ), - radial-gradient( - circle at bottom, - rgba(255, 214, 225, 0.08), + circle at 8% 0%, + rgba(240, 203, 169, 0.24), transparent 26% ), - linear-gradient(180deg, #fffdfd 0%, #fffefe 50%, #fff8fa 100%); - --platform-panel-shadow: 0 22px 60px rgba(215, 87, 134, 0.12), - 0 8px 20px rgba(255, 255, 255, 0.82); + radial-gradient( + circle at 92% 8%, + rgba(226, 171, 134, 0.2), + transparent 22% + ), + radial-gradient( + circle at 54% 100%, + rgba(204, 117, 76, 0.08), + transparent 30% + ), + linear-gradient(180deg, #fffdf9 0%, #fdf9f5 54%, #f8efe7 100%); + --platform-panel-shadow: 0 22px 60px rgba(112, 57, 30, 0.1), + 0 8px 22px rgba(255, 255, 255, 0.82); --platform-panel-fill: linear-gradient( 180deg, rgba(255, 255, 255, 0.985), - rgba(255, 250, 251, 0.96) + rgba(253, 248, 243, 0.96) ); --platform-panel-fill-soft: linear-gradient( 180deg, - rgba(255, 255, 255, 0.95), - rgba(255, 248, 250, 0.88) + rgba(255, 254, 252, 0.96), + rgba(250, 243, 236, 0.9) ); --platform-hero-fill: linear-gradient( 135deg, - rgba(255, 139, 162, 0.9), - rgba(255, 184, 153, 0.88) + rgba(244, 226, 211, 0.96), + rgba(238, 208, 183, 0.9) ); - --platform-hero-glow-a: rgba(255, 255, 255, 0.22); - --platform-hero-glow-b: rgba(255, 228, 211, 0.2); + --platform-hero-glow-a: rgba(255, 255, 255, 0.42); + --platform-hero-glow-b: rgba(228, 149, 91, 0.18); --platform-hero-overlay-strong: linear-gradient( 135deg, - rgba(255, 146, 170, 0.78), - rgba(255, 201, 171, 0.72) + rgba(238, 208, 183, 0.66), + rgba(204, 117, 76, 0.18) ); --platform-hero-overlay-soft: linear-gradient( 180deg, - rgba(255, 255, 255, 0.1), - rgba(255, 246, 249, 0.26) + rgba(255, 255, 255, 0.34), + rgba(248, 233, 219, 0.22) ); - --platform-surface-border: rgba(239, 221, 228, 0.9); - --platform-surface-hover-border: rgba(255, 154, 188, 0.58); - --platform-shell-glow-1: rgba(255, 255, 255, 0.2); - --platform-shell-glow-2: rgba(255, 220, 229, 0.18); - --platform-shell-glow-3: rgba(255, 221, 194, 0.14); - --platform-surface-glow-a: rgba(255, 213, 225, 0.14); - --platform-surface-glow-b: rgba(255, 224, 201, 0.12); - --platform-text-strong: #28151d; - --platform-text-base: #5c4650; - --platform-text-soft: #886f79; - --platform-brand-logo-title: #3b1a24; - --platform-brand-logo-subtitle: #d93570; - --platform-brand-logo-shadow: #8f5870; - --platform-line-soft: rgba(236, 214, 221, 0.72); + --platform-surface-border: rgba(226, 203, 184, 0.88); + --platform-surface-hover-border: rgba(204, 117, 76, 0.42); + --platform-shell-glow-1: rgba(255, 255, 255, 0.34); + --platform-shell-glow-2: rgba(238, 208, 183, 0.22); + --platform-shell-glow-3: rgba(210, 132, 93, 0.12); + --platform-surface-glow-a: rgba(240, 203, 169, 0.18); + --platform-surface-glow-b: rgba(204, 117, 76, 0.1); + --platform-text-strong: #3d1f10; + --platform-text-base: #6f5848; + --platform-text-soft: #988476; + --platform-text-muted: #a38f80; + --platform-brand-logo-title: #4a220f; + --platform-brand-logo-subtitle: #c7653d; + --platform-brand-logo-shadow: #caa48b; + --platform-line-soft: rgba(226, 203, 184, 0.72); --platform-subpanel-fill: linear-gradient( 180deg, - rgba(255, 255, 255, 0.94), - rgba(255, 250, 251, 0.9) + rgba(255, 254, 252, 0.94), + rgba(250, 243, 236, 0.9) ); - --platform-subpanel-border: rgba(233, 217, 223, 0.82); - --platform-warm-border: rgba(255, 140, 116, 0.28); - --platform-warm-bg: rgba(255, 140, 116, 0.14); - --platform-warm-text: #cf4f4e; - --platform-cool-border: rgba(255, 83, 142, 0.24); - --platform-cool-bg: rgba(255, 83, 142, 0.14); - --platform-cool-text: #d93570; - --platform-neutral-border: rgba(232, 191, 205, 0.44); - --platform-neutral-bg: rgba(255, 255, 255, 0.68); - --platform-neutral-text: #715662; - --platform-button-primary-border: rgba(255, 101, 147, 0.3); - --platform-button-primary-fill: linear-gradient(135deg, #ff4f8b, #ff8a73); - --platform-button-primary-text: #fff7fb; - --platform-button-secondary-fill: rgba(255, 255, 255, 0.72); - --platform-button-secondary-text: #4b3340; - --platform-button-ghost-fill: rgba(255, 255, 255, 0.52); - --platform-button-ghost-text: #6e5460; - --platform-button-danger-border: rgba(251, 113, 133, 0.22); - --platform-button-danger-fill: rgba(255, 228, 233, 0.94); - --platform-button-danger-text: #c2415d; - --platform-success-border: rgba(52, 211, 153, 0.24); - --platform-success-bg: rgba(236, 253, 245, 0.92); - --platform-success-text: #0f8a61; - --platform-icon-fill: rgba(255, 255, 255, 0.62); - --platform-icon-border: rgba(232, 191, 205, 0.46); - --platform-icon-text: #7a5d67; + --platform-subpanel-border: rgba(225, 204, 187, 0.82); + --platform-warm-border: rgba(204, 117, 76, 0.28); + --platform-warm-bg: rgba(234, 204, 179, 0.32); + --platform-warm-text: #b6623f; + --platform-cool-border: rgba(199, 117, 76, 0.24); + --platform-cool-bg: rgba(238, 208, 183, 0.26); + --platform-cool-text: #b76038; + --platform-neutral-border: rgba(226, 203, 184, 0.44); + --platform-neutral-bg: rgba(255, 253, 250, 0.7); + --platform-neutral-text: #7b6150; + --platform-button-primary-border: rgba(182, 98, 63, 0.32); + --platform-button-primary-solid: #c7653d; + --platform-button-primary-fill: linear-gradient(135deg, #df7f40, #b95d3a); + --platform-button-primary-text: #fffaf5; + --platform-button-secondary-fill: rgba(255, 253, 250, 0.78); + --platform-button-secondary-text: #4b2412; + --platform-button-ghost-fill: rgba(255, 253, 250, 0.56); + --platform-button-ghost-text: #755a49; + --platform-button-danger-border: rgba(185, 75, 58, 0.22); + --platform-button-danger-fill: rgba(255, 237, 229, 0.94); + --platform-button-danger-text: #a6402f; + --platform-success-border: rgba(73, 144, 96, 0.24); + --platform-success-bg: rgba(237, 248, 239, 0.92); + --platform-success-text: #2f7b46; + --platform-icon-fill: rgba(255, 253, 250, 0.68); + --platform-icon-border: rgba(226, 203, 184, 0.5); + --platform-icon-text: #7b5c49; --platform-nav-fill: linear-gradient( 180deg, - rgba(255, 255, 255, 0.96), - rgba(255, 249, 250, 0.92) + rgba(255, 254, 252, 0.96), + rgba(250, 243, 236, 0.92) ); --platform-nav-active-fill: linear-gradient( 180deg, - rgba(255, 91, 132, 0.16), - rgba(255, 151, 116, 0.16) + rgba(238, 208, 183, 0.48), + rgba(204, 117, 76, 0.16) ); - --platform-nav-active-border: rgba(255, 126, 154, 0.32); - --platform-nav-active-shadow: 0 10px 22px rgba(255, 91, 132, 0.12); + --platform-nav-active-border: rgba(204, 117, 76, 0.34); + --platform-nav-active-shadow: 0 10px 24px rgba(182, 98, 63, 0.12); --platform-modal-fill: linear-gradient( 180deg, - rgba(255, 255, 255, 0.96), - rgba(255, 245, 248, 0.95) + rgba(255, 254, 252, 0.97), + rgba(250, 243, 236, 0.95) ); - --platform-modal-border: rgba(255, 255, 255, 0.52); + --platform-modal-border: rgba(255, 255, 255, 0.58); --platform-desktop-shell-fill: linear-gradient( 180deg, rgba(255, 255, 255, 0.99), - rgba(255, 251, 252, 0.985) + rgba(253, 249, 245, 0.985) ); - --platform-desktop-shell-border: rgba(240, 228, 232, 0.94); - --platform-desktop-shell-inner-border: rgba(241, 230, 234, 0.92); + --platform-desktop-shell-border: rgba(230, 213, 199, 0.94); + --platform-desktop-shell-inner-border: rgba(233, 218, 205, 0.92); --platform-desktop-topbar-fill: linear-gradient( 180deg, rgba(255, 255, 255, 0.95), - rgba(255, 251, 252, 0.92) + rgba(253, 249, 245, 0.92) ); --platform-desktop-panel-fill: linear-gradient( 180deg, - rgba(255, 255, 255, 0.95), - rgba(255, 250, 251, 0.91) + rgba(255, 254, 252, 0.95), + rgba(250, 243, 236, 0.91) ); - --platform-desktop-panel-border: rgba(238, 223, 228, 0.88); - --platform-desktop-hover-shadow: 0 16px 28px rgba(222, 82, 124, 0.12); + --platform-desktop-panel-border: rgba(226, 203, 184, 0.88); + --platform-desktop-hover-shadow: 0 16px 30px rgba(112, 57, 30, 0.12); --platform-overlay-fill: linear-gradient( 180deg, - rgba(255, 184, 204, 0.14), - rgba(255, 255, 255, 0.56) + rgba(240, 203, 169, 0.14), + rgba(255, 255, 255, 0.58) ); - --platform-track-border: rgba(234, 193, 208, 0.46); - --platform-track-fill: rgba(255, 255, 255, 0.88); + --platform-track-border: rgba(226, 203, 184, 0.48); + --platform-track-fill: rgba(255, 253, 250, 0.9); --platform-page-fill: linear-gradient( 180deg, rgba(255, 255, 255, 0.9), - rgba(255, 250, 251, 0.8) + rgba(250, 243, 236, 0.8) ); - --platform-page-border: rgba(241, 230, 234, 0.88); - --platform-input-fill: rgba(255, 255, 255, 0.94); - --platform-input-fill-focus: rgba(255, 255, 255, 0.96); + --platform-page-border: rgba(233, 218, 205, 0.88); + --platform-input-fill: rgba(255, 253, 250, 0.94); + --platform-input-fill-focus: rgba(255, 254, 252, 0.96); --platform-input-highlight: rgba(255, 255, 255, 0.9); - --platform-input-focus-ring: rgba(255, 91, 132, 0.14); - --platform-nav-item-text: #7c6770; - --platform-nav-item-text-active: #2d1820; - --platform-nav-item-hover-fill: rgba(255, 244, 247, 0.92); - --platform-nav-item-icon-fill: rgba(248, 244, 246, 1); - --platform-nav-item-icon-text: #7a5d67; - --platform-nav-item-icon-active-fill: rgba(255, 255, 255, 0.98); - --platform-nav-item-icon-active-text: #d93570; - --platform-nav-icon-active-shadow: 0 12px 24px rgba(255, 91, 132, 0.16); + --platform-input-focus-ring: rgba(204, 117, 76, 0.15); + --platform-nav-item-text: #80695a; + --platform-nav-item-text-active: #3d1f10; + --platform-nav-item-hover-fill: rgba(253, 248, 243, 0.94); + --platform-nav-item-icon-fill: rgba(250, 243, 236, 1); + --platform-nav-item-icon-text: #7b5c49; + --platform-nav-item-icon-active-fill: rgba(255, 254, 252, 0.98); + --platform-nav-item-icon-active-text: #c7653d; + --platform-nav-icon-active-shadow: 0 12px 24px rgba(182, 98, 63, 0.16); --platform-profile-hero-fill: linear-gradient( 180deg, - rgba(255, 255, 255, 0.96), - rgba(255, 245, 248, 0.9) + rgba(255, 254, 252, 0.96), + rgba(250, 239, 229, 0.9) ); - --platform-profile-hero-border: rgba(255, 255, 255, 0.52); - --platform-profile-hero-shadow: 0 20px 56px rgba(216, 74, 124, 0.18); + --platform-profile-hero-border: rgba(255, 255, 255, 0.56); + --platform-profile-hero-shadow: 0 20px 56px rgba(112, 57, 30, 0.16); --platform-profile-avatar-fill: linear-gradient( 135deg, - rgba(255, 79, 139, 0.96), - rgba(255, 140, 110, 0.9) + rgba(223, 127, 64, 0.96), + rgba(181, 91, 56, 0.92) ); - --platform-profile-avatar-shadow: 0 14px 30px rgba(255, 79, 139, 0.24); - --platform-profile-chip-fill: rgba(255, 255, 255, 0.88); - --platform-profile-chip-hover-fill: rgba(255, 255, 255, 0.96); - --platform-profile-chip-text: #6a505b; - --platform-profile-action-fill: linear-gradient(135deg, #ff4f8b, #ff8a73); - --platform-profile-action-text: #fff7fb; - --platform-profile-action-shadow: 0 14px 30px rgba(255, 79, 139, 0.24); + --platform-profile-avatar-shadow: 0 14px 30px rgba(182, 98, 63, 0.22); + --platform-profile-chip-fill: rgba(255, 253, 250, 0.88); + --platform-profile-chip-hover-fill: rgba(255, 254, 252, 0.96); + --platform-profile-chip-text: #755a49; + --platform-profile-action-fill: linear-gradient(135deg, #df7f40, #b95d3a); + --platform-profile-action-solid: #c7653d; + --platform-profile-action-text: #fffaf5; + --platform-profile-action-shadow: 0 14px 30px rgba(182, 98, 63, 0.22); --platform-card-overlay-soft: linear-gradient( 180deg, rgba(255, 255, 255, 0.08), - rgba(255, 247, 249, 0.82) + rgba(250, 243, 236, 0.82) ); --platform-card-overlay-strong: linear-gradient( 180deg, rgba(255, 255, 255, 0.16), - rgba(255, 243, 247, 0.92) + rgba(248, 239, 231, 0.92) ); --platform-card-overlay-deep: radial-gradient( circle at top left, rgba(255, 255, 255, 0.2), transparent 30% ), - radial-gradient(circle at right, rgba(255, 205, 178, 0.14), transparent 28%), - linear-gradient(180deg, rgba(255, 255, 255, 0.2), rgba(255, 241, 246, 0.9)); + radial-gradient(circle at right, rgba(228, 149, 91, 0.14), transparent 28%), + linear-gradient(180deg, rgba(255, 255, 255, 0.2), rgba(248, 239, 231, 0.9)); --platform-recommend-runtime-fill: var(--platform-panel-fill); - --platform-recommend-runtime-border: rgba(232, 191, 205, 0.42); - --platform-recommend-runtime-shadow: 0 18px 44px rgba(215, 87, 134, 0.13), + --platform-recommend-runtime-border: rgba(226, 203, 184, 0.42); + --platform-recommend-runtime-shadow: 0 18px 44px rgba(112, 57, 30, 0.12), inset 0 0 0 1px rgba(255, 255, 255, 0.58); --platform-recommend-runtime-state-fill: radial-gradient( circle at 50% 18%, - rgba(255, 91, 132, 0.12), + rgba(204, 117, 76, 0.12), transparent 34% ), linear-gradient( 180deg, rgba(255, 255, 255, 0.98), - rgba(255, 246, 249, 0.94) + rgba(250, 243, 236, 0.94) ); --platform-recommend-runtime-state-text: var(--platform-text-strong); --puzzle-runtime-shell-fill: var(--platform-body-fill); --puzzle-runtime-stage-fill: radial-gradient( circle at 50% 18%, - rgba(255, 91, 132, 0.13), + rgba(204, 117, 76, 0.13), transparent 30% ), radial-gradient( circle at 18% 82%, - rgba(255, 138, 115, 0.13), + rgba(240, 203, 169, 0.18), transparent 28% ), - linear-gradient(180deg, #fffefe 0%, #fff7fa 58%, #fff1f5 100%); - --puzzle-runtime-grid-line: rgba(130, 75, 95, 0.06); + linear-gradient(180deg, #fffdf9 0%, #fbf5ed 58%, #f4e5d7 100%); + --puzzle-runtime-grid-line: rgba(112, 57, 30, 0.06); --puzzle-runtime-text-strong: var(--platform-text-strong); --puzzle-runtime-text-base: var(--platform-text-base); --puzzle-runtime-text-soft: var(--platform-text-soft); - --puzzle-runtime-surface-fill: rgba(255, 255, 255, 0.76); - --puzzle-runtime-surface-fill-strong: rgba(255, 255, 255, 0.9); - --puzzle-runtime-surface-border: rgba(232, 191, 205, 0.48); - --puzzle-runtime-board-fill: rgba(255, 255, 255, 0.68); - --puzzle-runtime-board-border: rgba(255, 126, 154, 0.28); - --puzzle-runtime-board-shadow: 0 30px 80px rgba(215, 87, 134, 0.14); - --puzzle-runtime-piece-fill: rgba(255, 255, 255, 0.74); + --puzzle-runtime-surface-fill: rgba(255, 253, 250, 0.76); + --puzzle-runtime-surface-fill-strong: rgba(255, 253, 250, 0.9); + --puzzle-runtime-surface-border: rgba(226, 203, 184, 0.48); + --puzzle-runtime-board-fill: rgba(255, 253, 250, 0.68); + --puzzle-runtime-board-border: rgba(204, 117, 76, 0.28); + --puzzle-runtime-board-shadow: 0 30px 80px rgba(112, 57, 30, 0.14); + --puzzle-runtime-piece-fill: rgba(255, 253, 250, 0.74); --puzzle-runtime-piece-border: transparent; - --puzzle-runtime-piece-empty-fill: rgba(255, 228, 236, 0.34); - --puzzle-runtime-piece-empty-text: rgba(92, 70, 80, 0.38); + --puzzle-runtime-piece-empty-fill: rgba(238, 208, 183, 0.34); + --puzzle-runtime-piece-empty-text: rgba(111, 88, 72, 0.4); --puzzle-runtime-piece-selected-fill: linear-gradient( 135deg, - #ff4f8b, - #ff8a73 + #df7f40, + #b95d3a ); - --puzzle-runtime-piece-selected-text: #fff7fb; + --puzzle-runtime-piece-selected-text: #fffaf5; --puzzle-runtime-piece-selected-border: transparent; - --puzzle-runtime-next-card-overlay: rgba(61, 24, 38, 0.06); - --puzzle-runtime-control-fill: rgba(255, 255, 255, 0.72); - --puzzle-runtime-control-hover-fill: rgba(255, 91, 132, 0.1); + --puzzle-runtime-next-card-overlay: rgba(74, 34, 15, 0.06); + --puzzle-runtime-control-fill: rgba(255, 253, 250, 0.72); + --puzzle-runtime-control-hover-fill: rgba(204, 117, 76, 0.1); --puzzle-runtime-primary-fill: var(--platform-button-primary-fill); --puzzle-runtime-primary-text: var(--platform-button-primary-text); --puzzle-runtime-primary-shadow: var(--platform-profile-action-shadow); --puzzle-runtime-accent-text: var(--platform-cool-text); - --puzzle-runtime-cool-text: #0f8fa9; - --puzzle-runtime-danger-fill: rgba(255, 228, 233, 0.9); - --puzzle-runtime-danger-text: #c2415d; - --puzzle-runtime-backdrop-fill: rgba(43, 20, 32, 0.34); + --puzzle-runtime-cool-text: #6e8d42; + --puzzle-runtime-danger-fill: rgba(255, 237, 229, 0.9); + --puzzle-runtime-danger-text: #a6402f; + --puzzle-runtime-backdrop-fill: rgba(61, 31, 16, 0.34); --puzzle-runtime-dialog-fill: radial-gradient( circle at 12% 0%, - rgba(255, 91, 132, 0.18), + rgba(204, 117, 76, 0.18), transparent 36% ), linear-gradient( 180deg, - rgba(255, 255, 255, 0.98), - rgba(255, 246, 249, 0.95) + rgba(255, 254, 252, 0.98), + rgba(250, 243, 236, 0.95) ); - --puzzle-runtime-dialog-border: rgba(255, 126, 154, 0.3); - --puzzle-runtime-table-fill: rgba(255, 255, 255, 0.62); - --puzzle-runtime-table-row-fill: rgba(255, 91, 132, 0.12); - --puzzle-runtime-next-card-fill: rgba(255, 255, 255, 0.66); - --puzzle-runtime-next-card-hover-fill: rgba(255, 91, 132, 0.1); + --puzzle-runtime-dialog-border: rgba(204, 117, 76, 0.3); + --puzzle-runtime-table-fill: rgba(255, 253, 250, 0.62); + --puzzle-runtime-table-row-fill: rgba(204, 117, 76, 0.12); + --puzzle-runtime-next-card-fill: rgba(255, 253, 250, 0.66); + --puzzle-runtime-next-card-hover-fill: rgba(204, 117, 76, 0.1); } .platform-theme--dark { color-scheme: dark; + --platform-accent: #5b6cff; --platform-body-fill: radial-gradient( circle at top, rgba(129, 140, 248, 0.2), @@ -797,6 +802,7 @@ body { --platform-text-strong: #ffffff; --platform-text-base: rgb(228 228 231); --platform-text-soft: rgb(161 161 170); + --platform-text-muted: rgb(161 161 170); --platform-brand-logo-title: #fff7dc; --platform-brand-logo-subtitle: #9fe7ff; --platform-brand-logo-shadow: #040814; @@ -813,6 +819,7 @@ body { --platform-neutral-bg: rgba(255, 255, 255, 0.05); --platform-neutral-text: rgb(228 228 231); --platform-button-primary-border: rgba(129, 140, 248, 0.3); + --platform-button-primary-solid: #5b6cff; --platform-button-primary-fill: linear-gradient(135deg, #5b6cff, #3dd9ff); --platform-button-primary-text: rgb(238 248 255); --platform-button-secondary-fill: rgba(255, 255, 255, 0.05); @@ -907,6 +914,7 @@ body { --platform-profile-chip-hover-fill: rgba(255, 255, 255, 0.14); --platform-profile-chip-text: rgb(228 228 231); --platform-profile-action-fill: linear-gradient(135deg, #5b6cff, #3dd9ff); + --platform-profile-action-solid: #5b6cff; --platform-profile-action-text: rgb(238 248 255); --platform-profile-action-shadow: 0 14px 32px rgba(91, 108, 255, 0.22); --platform-card-overlay-soft: linear-gradient( @@ -1748,9 +1756,9 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { } .platform-pill--rose { - border-color: rgba(251, 113, 133, 0.2); - background: rgba(244, 63, 94, 0.1); - color: rgb(255 228 230); + border-color: var(--platform-button-danger-border); + background: var(--platform-button-danger-fill); + color: var(--platform-button-danger-text); } .platform-pill--success { @@ -1872,7 +1880,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { } .creation-work-card__swipe-button--danger { - background: linear-gradient(180deg, #fb7185, #e11d48); + background: linear-gradient(180deg, #c7653d, #8f3f27); } .creation-work-card__swipe-button:disabled { @@ -2087,7 +2095,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { width: 0.6rem; height: 0.6rem; border-radius: 9999px; - background: #ef4444; + background: #b64a35; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.26), 0 0 12px rgba(239, 68, 68, 0.68); @@ -2129,7 +2137,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { } .creation-work-card-stat--like { - --creation-work-stat-accent: #ff6b6b; + --creation-work-stat-accent: #b64a35; } .creation-work-card-stat__label { @@ -2177,7 +2185,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { display: inline-flex; align-items: center; gap: 0.08rem; - color: #ef233c; + color: #b64a35; font-size: 0.54rem; font-weight: 900; line-height: 1; @@ -2334,7 +2342,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { border-color: var(--platform-button-primary-border); background: var(--platform-button-primary-fill); color: var(--platform-button-primary-text); - box-shadow: 0 16px 34px rgba(255, 91, 132, 0.18); + box-shadow: 0 16px 34px rgba(182, 98, 63, 0.18); } .platform-button--secondary { @@ -2409,7 +2417,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { border-color: var(--platform-button-primary-border); background: var(--platform-button-primary-fill); color: var(--platform-button-primary-text); - box-shadow: 0 12px 26px rgba(255, 91, 132, 0.16); + box-shadow: 0 12px 26px rgba(182, 98, 63, 0.16); } .platform-close-confirm-dialog__button--secondary { @@ -2567,7 +2575,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { width: 0.48rem; height: 0.48rem; border-radius: 9999px; - background: #ef4444; + background: #b64a35; box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.28), 0 0 12px rgba(239, 68, 68, 0.72); @@ -5440,9 +5448,9 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { } .platform-banner--danger { - border-color: rgba(251, 113, 133, 0.2); - background: rgba(244, 63, 94, 0.1); - color: #c2415d; + border-color: var(--platform-button-danger-border); + background: var(--platform-button-danger-fill); + color: #a6402f; } .platform-progress-track { @@ -5492,7 +5500,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { rgba(255, 138, 115, 0.22), transparent 34% ), - linear-gradient(135deg, #fff9fb 0%, #ffe8f0 48%, #ffdacf 100%); + linear-gradient(135deg, #fffdf9 0%, #f4e5d7 48%, #eaccb3 100%); } .platform-theme--light @@ -6060,14 +6068,14 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { border-color: var(--platform-surface-border) !important; background: radial-gradient( circle at top left, - rgba(255, 204, 219, 0.34), + rgba(240, 203, 169, 0.34), transparent 34% ), - linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(255, 248, 250, 0.9)) !important; + linear-gradient(135deg, rgba(255, 255, 255, 0.96), rgba(250, 243, 236, 0.9)) !important; color: var(--platform-text-strong) !important; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.84), - 0 18px 42px rgba(222, 82, 124, 0.1); + 0 18px 42px rgba(112, 57, 30, 0.1); } .platform-theme--light @@ -6106,18 +6114,18 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { border-color: var(--platform-button-primary-border) !important; background: var(--platform-button-primary-fill) !important; color: var(--platform-button-primary-text) !important; - box-shadow: 0 12px 26px rgba(255, 91, 132, 0.16); + box-shadow: 0 12px 26px rgba(182, 98, 63, 0.16); } .platform-theme--light .map-modal-overlay { - background: rgba(73, 45, 56, 0.24) !important; + background: rgba(74, 34, 15, 0.24) !important; } .platform-theme--light .map-modal-shell { background: var(--platform-modal-fill); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78), - 0 24px 70px rgba(131, 77, 98, 0.2) !important; + 0 24px 70px rgba(112, 57, 30, 0.2) !important; } .platform-theme--light .map-modal-backdrop { @@ -6129,7 +6137,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { background: linear-gradient( 180deg, rgba(255, 255, 255, 0.7), - rgba(255, 247, 250, 0.88) + rgba(250, 243, 236, 0.88) ) !important; } @@ -6146,7 +6154,7 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock { } .platform-theme--light .map-modal-shell svg line { - stroke: rgba(217, 53, 112, 0.32); + stroke: rgba(199, 101, 61, 0.32); } button { @@ -7045,23 +7053,23 @@ button { border: 1px solid color-mix( in srgb, - var(--platform-work-like-accent, #ff6b6b) 24%, + var(--platform-work-like-accent, #c7653d) 24%, transparent ); border-radius: 1rem; background: color-mix( in srgb, - var(--platform-work-like-accent, #ff6b6b) 10%, + var(--platform-work-like-accent, #c7653d) 10%, var(--platform-panel-fill) 90% ); - color: var(--platform-work-like-accent, #ff6b6b); + color: var(--platform-work-like-accent, #c7653d); padding: 0.6rem 0.75rem; font-size: 0.8125rem; font-weight: 900; box-shadow: 0 0.55rem 1.2rem color-mix( in srgb, - var(--platform-work-like-accent, #ff6b6b) 10%, + var(--platform-work-like-accent, #c7653d) 10%, transparent ); } @@ -7080,7 +7088,7 @@ button { } .platform-work-detail__stat { - --platform-work-stat-accent: #ff4f8b; + --platform-work-stat-accent: #c7653d; position: relative; min-width: 0; overflow: hidden; @@ -7103,7 +7111,7 @@ button { } .platform-work-detail__stat--like { - --platform-work-stat-accent: #ff6b6b; + --platform-work-stat-accent: #b64a35; } .platform-work-detail__stat--time {