diff --git a/templates/components/_analysis_report_tabs.html b/templates/components/_analysis_report_tabs.html index f559e89..60aca1a 100644 --- a/templates/components/_analysis_report_tabs.html +++ b/templates/components/_analysis_report_tabs.html @@ -37,8 +37,8 @@ color: var(--momo-text-primary, #2a2520); } .analysis-report-tab.is-active { - border-color: var(--momo-page-accent-dark, #65411f); - background: linear-gradient(135deg, var(--momo-page-accent, #8a5a2b), var(--momo-page-accent-dark, #65411f)); + border-color: var(--momo-page-accent-dark, #a95846); + background: linear-gradient(135deg, var(--momo-page-accent, #d96f52), var(--momo-page-accent-dark, #a95846)); color: var(--momo-page-inverse, #fff8ee); } .analysis-report-tab.is-external { diff --git a/templates/components/_navbar.html b/templates/components/_navbar.html index 4c96bcf..02c3df8 100755 --- a/templates/components/_navbar.html +++ b/templates/components/_navbar.html @@ -14,8 +14,8 @@ --momo-legacy-paper: #f3eee2; --momo-legacy-ink: #2a2520; --momo-legacy-muted: #645c52; - --momo-legacy-accent: #c96442; - --momo-legacy-accent-dark: #8f4530; + --momo-legacy-accent: #d96f52; + --momo-legacy-accent-dark: #a95846; --momo-legacy-accent-soft: rgba(201, 100, 66, 0.12); --momo-legacy-line: rgba(42, 37, 32, 0.16); --momo-legacy-inverse: #fff8ee; @@ -101,7 +101,7 @@ .btn-primary:hover, .btn-primary:focus { color: var(--momo-legacy-inverse) !important; - background: linear-gradient(135deg, #b1543a, #7a3520) !important; + background: linear-gradient(135deg, #c65f45, #9f4f3e) !important; border-color: #7a3520 !important; } diff --git a/templates/daily_sales.html b/templates/daily_sales.html index a26083b..a1bcc12 100644 --- a/templates/daily_sales.html +++ b/templates/daily_sales.html @@ -130,16 +130,8 @@ font-weight: 600; } - .trend-up { - color: #2ecc71; - } - - .trend-down { - color: #e74c3c; - } - .bg-purple { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, var(--momo-warm-rust), var(--momo-warm-mahogany)); } .chart-container { @@ -174,7 +166,7 @@ padding: 2rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); margin-bottom: 2rem; - border: 1px solid rgba(102, 126, 234, 0.1); + border: 1px solid var(--momo-border-strong); } .calendar-header { @@ -196,12 +188,12 @@ } .calendar-header h5:hover { - color: #667eea; + color: var(--momo-warm-caramel); transform: translateX(-4px); } .calendar-header h5:hover i { - color: #667eea; + color: var(--momo-warm-caramel); transform: rotate(360deg); transition: transform 0.5s ease; } @@ -212,7 +204,7 @@ } .calendar-nav button { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, var(--momo-warm-caramel), var(--momo-warm-mahogany)); border: none; border-radius: 10px; padding: 0.6rem 1.2rem; @@ -221,12 +213,12 @@ transition: all 0.3s ease; font-size: 0.9rem; font-weight: 600; - box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); + box-shadow: 0 4px 12px rgba(217, 111, 82, 0.26); } .calendar-nav button:hover { transform: translateY(-2px); - box-shadow: 0 6px 16px rgba(102, 126, 234, 0.4); + box-shadow: 0 6px 16px rgba(217, 111, 82, 0.32); } .calendar-nav button:active { @@ -261,19 +253,19 @@ .calendar-day:hover { transform: translateY(-3px) scale(1.02); - box-shadow: 0 8px 20px rgba(102, 126, 234, 0.15); - border-color: #667eea; - background: linear-gradient(135deg, #ffffff 0%, #f8f9ff 100%); + box-shadow: 0 8px 20px rgba(217, 111, 82, 0.16); + border-color: var(--momo-warm-caramel); + background: linear-gradient(135deg, #ffffff 0%, var(--momo-warm-peach-soft) 100%); } .calendar-day.has-data { - background: linear-gradient(135deg, #ffffff 0%, #fafbff 100%); + background: linear-gradient(135deg, #ffffff 0%, rgba(255, 248, 238, 0.9) 100%); border-color: #d0d5e0; } .calendar-day.has-data:hover { - border-color: #667eea; - box-shadow: 0 8px 24px rgba(102, 126, 234, 0.2); + border-color: var(--momo-warm-caramel); + box-shadow: 0 8px 24px rgba(217, 111, 82, 0.2); } .calendar-day.other-month { @@ -282,10 +274,10 @@ } .calendar-day.selected { - border-color: #667eea !important; + border-color: var(--momo-warm-caramel) !important; border-width: 5px !important; - box-shadow: 0 0 0 6px rgba(102, 126, 234, 0.25), 0 12px 32px rgba(102, 126, 234, 0.4), inset 0 2px 10px rgba(102, 126, 234, 0.15) !important; - background: linear-gradient(135deg, #e8edff 0%, #d0d9ff 100%) !important; + box-shadow: 0 0 0 6px rgba(217, 111, 82, 0.22), 0 12px 32px rgba(217, 111, 82, 0.28), inset 0 2px 10px rgba(217, 111, 82, 0.12) !important; + background: linear-gradient(135deg, var(--momo-warm-peach-soft) 0%, var(--momo-warm-caramel-soft) 100%) !important; transform: scale(1.08) !important; position: relative; animation: pulseGlow 2s ease-in-out infinite; @@ -298,7 +290,7 @@ right: -8px; width: 32px; height: 32px; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, var(--momo-warm-caramel), var(--momo-warm-mahogany)); border-radius: 50%; color: white; display: flex; @@ -306,7 +298,7 @@ justify-content: center; font-size: 1.2rem; font-weight: 900; - box-shadow: 0 4px 12px rgba(102, 126, 234, 0.5); + box-shadow: 0 4px 12px rgba(217, 111, 82, 0.36); z-index: 10; } @@ -319,11 +311,11 @@ 0%, 100% { - box-shadow: 0 0 0 6px rgba(102, 126, 234, 0.25), 0 12px 32px rgba(102, 126, 234, 0.4), inset 0 2px 10px rgba(102, 126, 234, 0.15); + box-shadow: 0 0 0 6px rgba(217, 111, 82, 0.22), 0 12px 32px rgba(217, 111, 82, 0.28), inset 0 2px 10px rgba(217, 111, 82, 0.12); } 50% { - box-shadow: 0 0 0 8px rgba(102, 126, 234, 0.35), 0 16px 40px rgba(102, 126, 234, 0.5), inset 0 2px 10px rgba(102, 126, 234, 0.2); + box-shadow: 0 0 0 8px rgba(217, 111, 82, 0.28), 0 16px 40px rgba(217, 111, 82, 0.34), inset 0 2px 10px rgba(217, 111, 82, 0.16); } } @@ -424,17 +416,17 @@ .date-selector:focus { outline: none; - border-color: #667eea; - box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); + border-color: var(--momo-warm-caramel); + box-shadow: 0 0 0 3px rgba(217, 111, 82, 0.12); } /* 頁面標題樣式 */ .page-header { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, var(--momo-warm-caramel), var(--momo-warm-mahogany)); padding: 2rem; border-radius: 16px; margin-bottom: 2rem; - box-shadow: 0 8px 24px rgba(102, 126, 234, 0.25); + box-shadow: 0 8px 24px rgba(217, 111, 82, 0.22); } .page-header h4 { @@ -462,19 +454,19 @@ /* 按鈕樣式優化 */ .btn-success { - background: linear-gradient(135deg, #51cf66 0%, #37b24d 100%); + background: linear-gradient(135deg, var(--momo-warm-earth), var(--momo-warm-honey)); border: none; border-radius: 10px; padding: 0.6rem 1.5rem; font-weight: 600; - box-shadow: 0 4px 12px rgba(81, 207, 102, 0.3); + box-shadow: 0 4px 12px rgba(154, 143, 89, 0.24); transition: all 0.3s ease; } .btn-success:hover { transform: translateY(-2px); - box-shadow: 0 6px 16px rgba(81, 207, 102, 0.4); - background: linear-gradient(135deg, #40c057 0%, #2f9e44 100%); + box-shadow: 0 6px 16px rgba(154, 143, 89, 0.32); + background: linear-gradient(135deg, var(--momo-warm-honey), var(--momo-warm-earth)); } /* 表格樣式優化 */ @@ -484,7 +476,7 @@ } .table thead { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, var(--momo-warm-mahogany), var(--momo-warm-caramel)); color: #fff; } @@ -1307,10 +1299,33 @@ + +{% extends 'ewoooc_base.html' %} +{% block title %}營運成長報表 - EwoooC{% endblock %} + +{% block extra_css %} - - - {% include 'components/_navbar.html' %} + .growth-analysis-page .bg-primary, + .growth-analysis-page .bg-success, + .growth-analysis-page .bg-info { + background: linear-gradient(135deg, var(--momo-page-accent-dark), var(--momo-page-accent)) !important; + } -
+ .growth-analysis-page .bg-success { + background: linear-gradient(135deg, var(--momo-warm-earth), var(--momo-warm-honey)) !important; + } + + .growth-analysis-page .bg-info { + background: linear-gradient(135deg, var(--momo-warm-rust), var(--momo-warm-caramel)) !important; + } + + .growth-analysis-page .text-success, + .growth-analysis-page .trend-up { + color: var(--momo-warm-honey) !important; + } + + .growth-analysis-page .trend-down { + color: var(--momo-warm-rust) !important; + } + +{% endblock %} + +{% block ewooo_content %} +
{% include 'components/_analysis_report_tabs.html' %}

營運成長策略報表

@@ -135,9 +164,11 @@
+{% endblock %} + +{% block extra_js %} + - - - - +{% endblock %} diff --git a/templates/sales_analysis.html b/templates/sales_analysis.html index e7c3059..8aa0fdf 100644 --- a/templates/sales_analysis.html +++ b/templates/sales_analysis.html @@ -1,78 +1,15 @@ - - - +{% extends 'ewoooc_base.html' %} +{% block title %}業績分析 - EwoooC{% endblock %} - - - - - - - 業績分析 - EwoooC - - +{% block extra_css %} - - - - + .sales-analysis-page .card, + .sales-analysis-page .panel, + .sales-analysis-page .filter-section { + border-radius: 8px; + } - - {% include 'components/_navbar.html' %} + .sales-analysis-page .bg-primary, + .sales-analysis-page .btn-primary { + background: linear-gradient(135deg, var(--momo-warm-caramel), var(--momo-warm-mahogany)) !important; + border-color: var(--momo-warm-mahogany) !important; + } + + .sales-analysis-page .btn-success, + .sales-analysis-page .bg-success { + background: linear-gradient(135deg, var(--momo-warm-earth), var(--momo-warm-honey)) !important; + border-color: var(--momo-warm-earth) !important; + } + + .sales-analysis-page .text-primary, + .sales-analysis-page .text-success { + color: var(--momo-warm-caramel) !important; + } + + .sales-analysis-page .badge.bg-secondary { + background-color: rgba(111, 102, 90, 0.86) !important; + } + +{% endblock %} + +{% block ewooo_content %}
@@ -607,7 +569,7 @@
-
+
{% include 'components/_analysis_report_tabs.html' %}
@@ -651,29 +613,26 @@
+ style="background: linear-gradient(135deg, var(--momo-warm-caramel), var(--momo-warm-mahogany)); border: none;">
進階篩選與分析
+ autocomplete="off" onchange="setFilter('metric', 'amount')" {% if selected_metric=='amount' %}checked{% endif %}> + autocomplete="off" onchange="setFilter('metric', 'qty')" {% if selected_metric=='qty' %}checked{% endif %}> {% if cols.cost or cols.profit %} + autocomplete="off" onchange="setFilter('metric', 'profit')" {% if selected_metric=='profit' %}checked{% endif %}> @@ -701,16 +660,11 @@ onchange="handleDataRangeChange(this)"> - - - - - + + + + +
@@ -1750,14 +1704,18 @@
{% endif %}
+ {% endif %} +{% endblock %} + +{% block extra_js %} + + + - - {% endif %} - {% if not error %} - - - - - +{% endblock %} diff --git a/web/static/css/ewoooc-tokens.css b/web/static/css/ewoooc-tokens.css index bd1e021..5dd14ce 100644 --- a/web/static/css/ewoooc-tokens.css +++ b/web/static/css/ewoooc-tokens.css @@ -1,7 +1,7 @@ /** * MOMO Pro × Nothing × Claude 設計 Token v2.0 * — Nothing 的點陣骨架(黑白、像素、工業) - * — Claude 的暖米基底(#f0eee9、焦糖橘 #c96442) + * — Claude 的暖米基底(#f0eee9、EwoooC 珊瑚橘 #d96f52) */ :root { @@ -22,32 +22,34 @@ --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 珊瑚橘(accent) */ + --momo-accent: #d96f52; /* 主 accent */ + --momo-accent-50: #fff4ef; + --momo-accent-100: #fde4d8; + --momo-accent-200: #f8c6b3; + --momo-accent-500: #d96f52; + --momo-accent-600: #c65f45; + --momo-accent-700: #9f4f3e; + --momo-accent-soft: rgba(217,111,82,0.13); --momo-accent-strong: var(--momo-accent-700); /* ===== 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: #d96f52; /* 珊瑚橘 — 主 accent / 主要動作 */ + --momo-warm-peach: #f29f7e; /* 蜜桃 — hover / 淡底層 */ + --momo-warm-honey: #d6a12f; /* 琥珀金 — 提醒 / 次重點 */ + --momo-warm-rust: #c85f6a; /* 玫瑰銅 — 下降 / 風險 */ + --momo-warm-mahogany: #a95846; /* 暖陶紅 — 強調 / active */ + --momo-warm-earth: #9a8f59; /* 暖橄欖 — 中性成功 / 輔助 */ /* 對應淡色(背景 / 軟標籤用) */ - --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); + --momo-warm-caramel-soft: rgba(217,111,82,0.13); + --momo-warm-peach-soft: rgba(242,159,126,0.18); + --momo-warm-honey-soft: rgba(214,161,47,0.15); + --momo-warm-rust-soft: rgba(200,95,106,0.14); + --momo-warm-mahogany-soft:rgba(169,88,70,0.13); + --momo-warm-earth-soft: rgba(154,143,89,0.15); /* 頁面調性:共用 shell 與反白 UI 以此套用各頁暖色 accent */ --momo-page-accent: var(--momo-warm-caramel); @@ -140,7 +142,7 @@ --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; + --momo-primary-900: #7f3f32; /* 導航(Nothing 黑) */ --momo-nav-start: #1a1a1a; @@ -154,8 +156,8 @@ --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-danger: var(--momo-warm-rust); + --momo-gradient-warning: var(--momo-warm-honey); --momo-gradient-info: #2d5d80; --momo-gradient-subtle: linear-gradient(180deg, #f7f5ef 0%, #ebe8e1 100%); @@ -164,11 +166,11 @@ --momo-success-bg: #e3ebd9; --momo-success-border: #c5d4b0; --momo-success-text: #1f5a2d; - --momo-danger: #b5342f; + --momo-danger: var(--momo-warm-rust); --momo-danger-bg: #f0d8d4; --momo-danger-border: #d9b1ac; --momo-danger-text: #7d2520; - --momo-warning: #b88416; + --momo-warning: var(--momo-warm-honey); --momo-warning-bg: #f3e7c4; --momo-warning-border: #d9c590; --momo-warning-text: #6e500e; @@ -183,8 +185,8 @@ --momo-text-tertiary: #9b9081; --momo-text-disabled: #c4baa8; --momo-text-inverse: #faf7f0; - --momo-text-link: #c96442; - --momo-text-link-hover: #8f4530; + --momo-text-link: var(--momo-warm-caramel); + --momo-text-link-hover: var(--momo-warm-mahogany); --momo-text-strong: var(--momo-text-primary); --momo-text-muted: var(--momo-text-secondary); --momo-muted: var(--momo-text-secondary); @@ -196,7 +198,7 @@ --momo-border-strong: rgba(42,37,32,0.42); --momo-border-subtle: var(--momo-border-light); --momo-border-dark: #2a2520; - --momo-border-focus: #c96442; + --momo-border-focus: var(--momo-warm-caramel); --momo-divider: rgba(42,37,32,0.12); /* Overlay */