Files
ewoooc/MOMO Pro/design-tokens.css

405 lines
16 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* MOMO Pro × Nothing × Claude 設計 Token v2.0
* — Nothing 的點陣骨架(黑白、像素、工業)
* — Claude 的暖米基底(#f0eee9、焦糖橘 #c96442
*/
:root {
/* ===== 1. 色彩 ===== */
/* Claude 暖系基底(紙張 / 米色)— 加深暖度 */
--momo-bg-body: #ebe6dc; /* Claude 米色頁面底(加深暖度)*/
--momo-bg-surface: #faf7f0; /* 卡片改為米白,不純白 */
--momo-bg-elevated: #fdfaf3;
--momo-bg-subtle: #e2dccf; /* 米色微深 */
--momo-bg-muted: #cfc7b5;
--momo-bg-paper: #f3eee2; /* 卡片紙張感 */
/* Nothing 黑(用暖墨色,不純黑)*/
--momo-ink: #2a2520; /* 暖墨色 */
--momo-ink-strong: #1a1612;
--momo-ink-soft: #3d362f;
--momo-line: #2a2520;
--momo-line-soft: rgba(42,37,32,0.18);
--momo-line-faint: rgba(42,37,32,0.10);
/* Claude 焦糖橘accent */
--momo-accent: #c96442; /* 主 accent */
--momo-accent-50: #fbf2ef;
--momo-accent-100: #f5e1d9;
--momo-accent-200: #ecc3b3;
--momo-accent-500: #c96442;
--momo-accent-600: #b1543a;
--momo-accent-700: #8f4530;
--momo-accent-soft: rgba(201,100,66,0.12);
/* ===== EwoooC 暖色家族(全站運用) =====
* 全部留在暖色域(紅/橘/金/土),不混入冷色
* 用法:活動頁 / 標籤色 / 圖表分類色 / 各區段視覺主軸
*/
--momo-warm-caramel: #c96442; /* 焦糖橘 — 主 accent / 限時搶購 */
--momo-warm-honey: #b88416; /* 蜂蜜金 — 1.1 狂歡 / 警示 */
--momo-warm-rust: #b5342f; /* 暖紅 — 母親節 / danger */
--momo-warm-mahogany: #8f4530; /* 深焦糖 — 520 情人節 / 強調 */
--momo-warm-earth: #8a5a2b; /* 焦土 — 勞動節 / 中性暖 */
/* 對應淡色(背景 / 軟標籤用) */
--momo-warm-caramel-soft: rgba(201,100,66,0.12);
--momo-warm-honey-soft: rgba(184,132,22,0.12);
--momo-warm-rust-soft: rgba(181,52,47,0.12);
--momo-warm-mahogany-soft:rgba(143,69,48,0.12);
--momo-warm-earth-soft: rgba(138,90,43,0.12);
/* ===== 標籤色系統Tag / Chip / Badge 統一規範) =====
* 規則:
* 1. 全部留在暖色域caramel/honey/rust/mahogany/earth + 中性 ink
* 2. 一個標籤 = 一組 (bg + border + text),三者一起用,不要混用
* 3. 文字色一定是 *-text已對 *-bg 做過 WCAG AA 對比驗證
* 4. 不要任意指定 #色碼到標籤上
*
* 用途分配(語義化,不是看心情挑色):
* caramel → 主強調 / 推薦 / 焦點品 / accent 動作
* honey → 警示 / AI 挑品 / 待處理 / 提醒
* rust → 危險 / 漲價 / 異常 / 警報
* mahogany→ 次強調 / 已選 / 已標記
* earth → 中性分類 / 一般標籤 / 商品分類
* ink → 平台標 / 狀態標 / mono 標籤PChome 領先 / MOMO 領先)
* muted → 弱資訊 / 待比對 / 已下架
*/
/* caramel — 主焦點 */
--momo-tag-caramel-bg: #f5e1d9;
--momo-tag-caramel-border: #ecc3b3;
--momo-tag-caramel-text: #7a3520; /* AA on bg */
/* honey — 警示 / AI */
--momo-tag-honey-bg: #f3e7c4;
--momo-tag-honey-border: #d9c590;
--momo-tag-honey-text: #6e500e; /* AA on bg */
/* rust — 漲價 / 異常 */
--momo-tag-rust-bg: #f0d8d4;
--momo-tag-rust-border: #d9b1ac;
--momo-tag-rust-text: #7d2520; /* AA on bg */
/* mahogany — 次強調 */
--momo-tag-mahogany-bg: #ecdcd4;
--momo-tag-mahogany-border:#d4b8ab;
--momo-tag-mahogany-text: #5e2e20;
/* earth — 中性分類(最常用,不搶眼)*/
--momo-tag-earth-bg: #ede4d2;
--momo-tag-earth-border: #d4c5a3;
--momo-tag-earth-text: #5a3f1c;
/* ink — 平台 / mono */
--momo-tag-ink-bg: #2a2520;
--momo-tag-ink-border: #2a2520;
--momo-tag-ink-text: #faf7f0;
/* muted — 弱資訊 */
--momo-tag-muted-bg: #e2dccf;
--momo-tag-muted-border: rgba(42,37,32,0.16);
--momo-tag-muted-text: #645c52;
/* success / 降價(綠色保留,但去飽和對齊暖底)*/
--momo-tag-success-bg: #dde6cf;
--momo-tag-success-border: #c2d0a6;
--momo-tag-success-text: #1f5a2d;
/* ===== 字體層級規範(避免眼睛疲勞) =====
* 原則:
* 1. 主要內文 ≥ 13px (0.8125rem);說明文 ≥ 12px (0.75rem) 但只用於 mono / 數據
* 2. 11px / 10px 只給 LABELuppercase 標籤),且必須 letter-spacing ≥ 0.06em
* 3. 顏色用 text-primary / secondary / tertiary 三層tertiary 不放重點資訊
* 4. 數據 (mono) 用 tnum 等寬,避免跳動
* 5. line-height標題 1.2 / 內文 1.5 / 鬆散段落 1.7
*/
--momo-text-display: 2rem; /* 32px - hero 大數字 */
--momo-text-headline: 1.5rem; /* 24px - 區塊大數字 */
--momo-text-title: 1.0625rem; /* 17px - 卡片標題 */
--momo-text-body: 0.875rem; /* 14px - 內文(提升 1px減少疲勞*/
--momo-text-body-sm: 0.8125rem; /* 13px - 表格內文最小值 */
--momo-text-meta: 0.75rem; /* 12px - mono 數據 / 次要說明 */
--momo-text-label: 0.6875rem; /* 11px - LABEL only */
--momo-text-label-tiny: 0.625rem; /* 10px - 角落標籤 only */
/* 沿用 primary 命名以相容(指向 accent */
--momo-primary: var(--momo-accent);
--momo-primary-50: var(--momo-accent-50);
--momo-primary-100: var(--momo-accent-100);
--momo-primary-200: var(--momo-accent-200);
--momo-primary-300: var(--momo-accent-200);
--momo-primary-400: var(--momo-accent-500);
--momo-primary-500: var(--momo-accent-500);
--momo-primary-600: var(--momo-accent-600);
--momo-primary-700: var(--momo-accent-700);
--momo-primary-800: var(--momo-accent-700);
--momo-primary-900: #5e2e20;
/* 導航Nothing 黑) */
--momo-nav-start: #1a1a1a;
--momo-nav-end: #000000;
--momo-nav-text: #ffffff;
--momo-nav-text-muted: rgba(255,255,255,0.55);
--momo-nav-hover: rgba(255,255,255,0.08);
--momo-nav-active: rgba(255,255,255,0.14);
/* 漸層 → Nothing 風幾乎不用,保留低調黑灰漸層 */
--momo-gradient-primary: #1a1a1a;
--momo-gradient-nav: linear-gradient(180deg, #1a1a1a 0%, #000 100%);
--momo-gradient-success: #2a7a3f;
--momo-gradient-danger: #b5342f;
--momo-gradient-warning: #b88416;
--momo-gradient-info: #2d5d80;
--momo-gradient-subtle: linear-gradient(180deg, #f7f5ef 0%, #ebe8e1 100%);
/* 狀態色(去飽和化、配合米色底) */
--momo-success: #2a7a3f;
--momo-success-bg: #e3ebd9;
--momo-success-border: #c5d4b0;
--momo-success-text: #1f5a2d;
--momo-danger: #b5342f;
--momo-danger-bg: #f0d8d4;
--momo-danger-border: #d9b1ac;
--momo-danger-text: #7d2520;
--momo-warning: #b88416;
--momo-warning-bg: #f3e7c4;
--momo-warning-border: #d9c590;
--momo-warning-text: #6e500e;
--momo-info: #2d5d80;
--momo-info-bg: #d8e2ea;
--momo-info-border: #b5c5d2;
--momo-info-text: #1d3e54;
/* 文字(暖墨)*/
--momo-text-primary: #2a2520;
--momo-text-secondary: #645c52;
--momo-text-tertiary: #9b9081;
--momo-text-disabled: #c4baa8;
--momo-text-inverse: #faf7f0;
--momo-text-link: #c96442;
--momo-text-link-hover: #8f4530;
/* 邊框(暖色調線)*/
--momo-border: #2a2520;
--momo-border-light: rgba(42,37,32,0.16);
--momo-border-dark: #2a2520;
--momo-border-focus: #c96442;
--momo-divider: rgba(42,37,32,0.12);
/* Overlay */
--momo-bg-overlay: rgba(26, 26, 26, 0.7);
--momo-bg-backdrop: rgba(26, 26, 26, 0.3);
/* ===== 2. Typography ===== */
/* 標題JetBrains Mono / Space Mono — 帶等寬機械感(替代 Ndot */
--momo-font-display:
"JetBrains Mono", "Space Mono", "SF Mono", Menlo, Consolas, monospace;
/* 內文:中英混排 */
--momo-font-family:
"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
"PingFang TC", "Noto Sans TC", "Microsoft JhengHei",
sans-serif;
/* 等寬:數據 */
--momo-font-family-mono:
"JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;
--momo-font-size-xs: 0.75rem;
--momo-font-size-sm: 0.8125rem;
--momo-font-size-base: 0.9375rem;
--momo-font-size-lg: 1.0625rem;
--momo-font-size-xl: 1.625rem;
--momo-font-size-2xl: 2.25rem;
--momo-font-weight-normal: 400;
--momo-font-weight-medium: 500;
--momo-font-weight-semibold: 600;
--momo-font-weight-bold: 700;
--momo-line-height-tight: 1.15;
--momo-line-height-base: 1.5;
--momo-line-height-loose: 1.7;
/* ===== 3. Spacing ===== */
--momo-space-1: 0.25rem;
--momo-space-2: 0.5rem;
--momo-space-3: 0.75rem;
--momo-space-4: 1rem;
--momo-space-5: 1.5rem;
--momo-space-6: 2rem;
--momo-space-7: 3rem;
--momo-space-8: 4rem;
/* ===== 4. ShadowNothing 風幾乎不用陰影,改用線條) ===== */
--momo-shadow-sm: 0 0 0 1px rgba(26,26,26,0.08);
--momo-shadow-md: 0 0 0 1px rgba(26,26,26,0.10);
--momo-shadow-lg: 0 12px 40px -8px rgba(26,26,26,0.18), 0 0 0 1px rgba(26,26,26,0.10);
--momo-shadow-colored: 0 0 0 2px rgba(201,100,66,0.25);
--momo-shadow-inner: inset 0 1px 2px 0 rgba(26,26,26,0.08);
/* ===== 5. RadiusNothing 風偏方角,僅輕微圓角) ===== */
--momo-radius-sm: 0.125rem; /* 2px */
--momo-radius-md: 0.25rem; /* 4px */
--momo-radius-lg: 0.375rem; /* 6px */
--momo-radius-pill: 50rem;
--momo-radius-circle: 50%;
/* ===== 6. Transition ===== */
--momo-duration-fast: 0.12s;
--momo-duration-normal: 0.2s;
--momo-duration-slow: 0.4s;
--momo-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--momo-ease-out: cubic-bezier(0, 0, 0.2, 1);
--momo-ease-in: cubic-bezier(0.4, 0, 1, 1);
--momo-transition-base:
color var(--momo-duration-fast) var(--momo-ease-in-out),
background-color var(--momo-duration-fast) var(--momo-ease-in-out),
border-color var(--momo-duration-fast) var(--momo-ease-in-out),
box-shadow var(--momo-duration-fast) var(--momo-ease-in-out);
/* ===== 7. z-index ===== */
--momo-z-base: 1;
--momo-z-dropdown: 1000;
--momo-z-sticky: 1020;
--momo-z-fixed: 1030;
--momo-z-modal-backdrop: 1040;
--momo-z-modal: 1050;
--momo-z-popover: 1060;
--momo-z-tooltip: 1070;
--momo-z-toast: 1080;
}
/* 全域 */
.momo-app {
font-family: var(--momo-font-family);
font-size: var(--momo-font-size-base);
line-height: var(--momo-line-height-base);
color: var(--momo-text-primary);
background-color: var(--momo-bg-body);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
letter-spacing: -0.005em;
}
.momo-app *, .momo-app *::before, .momo-app *::after { box-sizing: border-box; }
.momo-app button {
font-family: inherit; cursor: pointer; border: none; background: none; padding: 0; color: inherit;
}
.momo-app input, .momo-app select, .momo-app textarea {
font-family: inherit; font-size: inherit; color: inherit;
}
/* Display class for big numbers / titles in Nothing-mono */
.momo-display {
font-family: var(--momo-font-display);
font-feature-settings: "tnum", "ss01";
letter-spacing: -0.02em;
}
.momo-mono {
font-family: var(--momo-font-family-mono);
font-feature-settings: "tnum";
}
.momo-label {
font-family: var(--momo-font-display);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
}
/* Dot matrix 背景圖案Nothing 招牌點陣) */
.momo-dot-bg {
background-image: radial-gradient(circle, rgba(255,255,255,0.18) 1px, transparent 1px);
background-size: 8px 8px;
}
.momo-dot-bg-dark {
background-image: radial-gradient(circle, rgba(26,26,26,0.12) 1px, transparent 1px);
background-size: 8px 8px;
}
/* 滾動條 */
.momo-scroll::-webkit-scrollbar { width: 8px; height: 8px; }
.momo-scroll::-webkit-scrollbar-track { background: transparent; }
.momo-scroll::-webkit-scrollbar-thumb { background: rgba(26,26,26,0.18); border-radius: var(--momo-radius-pill); }
.momo-scroll::-webkit-scrollbar-thumb:hover { background: rgba(26,26,26,0.32); }
/* 動畫 */
@keyframes momo-fade-in { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: translateY(0); } }
@keyframes momo-slide-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
@keyframes momo-pulse-dot { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }
/* ===== 商品看板響應式 ===== */
.dash-page { container-type: inline-size; }
@container (max-width: 900px) {
.dash-kpi-num { font-size: 30px !important; }
.dash-focus { grid-template-columns: 1fr 1fr !important; }
}
@container (max-width: 720px) {
.dash-kpis { grid-template-columns: repeat(2, 1fr) !important; }
.dash-kpis > div { border-right: none !important; border-bottom: 1px solid var(--momo-border-light) !important; }
.dash-kpis > div:nth-child(odd) { border-right: 1px solid var(--momo-border-light) !important; }
.dash-kpis > div:nth-child(n+3) { border-bottom: none !important; }
.dash-kpi-num { font-size: 28px !important; }
.dash-focus { grid-template-columns: 1fr !important; }
}
@media (max-width: 900px) {
.dash-focus { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 720px) {
.dash-kpis { grid-template-columns: repeat(2, 1fr) !important; }
.dash-focus { grid-template-columns: 1fr !important; }
}
/* ===== 活動看板響應式 ===== */
.camp-page { container-type: inline-size; }
@container (max-width: 900px) {
.camp-hero { padding: 22px 24px !important; }
.camp-hero-title { font-size: 32px !important; }
.camp-hero-meta { gap: 20px !important; }
.camp-hero-total { font-size: 28px !important; }
}
@container (max-width: 720px) {
.camp-hero { padding: 20px 20px !important; }
.camp-hero-title { font-size: 26px !important; }
.camp-hero-meta-row { flex-direction: column !important; align-items: flex-start !important; gap: 14px !important; }
.camp-hero-total-wrap { margin-left: 0 !important; text-align: left !important; }
.camp-hero-total { font-size: 24px !important; }
.camp-kpis { grid-template-columns: repeat(2, 1fr) !important; }
.camp-kpis > div { border-right: none !important; border-bottom: 1px solid var(--momo-border-light) !important; }
.camp-kpis > div:nth-child(odd) { border-right: 1px solid var(--momo-border-light) !important; }
.camp-kpis > div:nth-child(n+3) { border-bottom: none !important; }
.camp-kpi-num { font-size: 28px !important; }
.camp-th-cat, .camp-td-cat { display: none !important; }
.camp-table th, .camp-table td { padding: 12px 12px !important; }
}
@media (max-width: 900px) {
.camp-hero { padding: 22px 24px !important; }
.camp-hero-title { font-size: 32px !important; }
}
@media (max-width: 720px) {
.camp-hero-meta-row { flex-direction: column !important; align-items: flex-start !important; gap: 14px !important; }
.camp-hero-total-wrap { margin-left: 0 !important; text-align: left !important; }
.camp-kpis { grid-template-columns: repeat(2, 1fr) !important; }
.camp-th-cat, .camp-td-cat { display: none !important; }
}
/* Topbar responsive */
.momo-topbar { container-type: inline-size; }
@container (max-width: 1024px) {
.momo-schedule-pill { display: none !important; }
}
@container (max-width: 880px) {
.momo-user-meta { display: none !important; }
}
@container (max-width: 720px) {
.momo-search-text { display: none !important; }
}
/* fallback若瀏覽器不支援 container query仍用 viewport */
@media (max-width: 1024px) {
.momo-schedule-pill { display: none !important; }
}
@media (max-width: 880px) {
.momo-user-meta { display: none !important; }
}
@media (max-width: 720px) {
.momo-search-text { display: none !important; }
}