272 lines
7.7 KiB
CSS
272 lines
7.7 KiB
CSS
/* ═══════════════════════════════════════════════════════════
|
||
* page-dashboard.css — Dashboard 專屬樣式
|
||
* ─────────────────────────────────────────────────────────────
|
||
* 從原 dashboard.html 1548 行 inline style 抽出。
|
||
* 已移除:
|
||
* - 藍紫色硬編碼(#667eea / #764ba2 / #4F46E5 等)
|
||
* - 暗藍 navbar 漸層(已由 ewoooc_base 接管)
|
||
* - 全局 body 漸層背景
|
||
* - 大量 box-shadow / hover translateY
|
||
* 改用 ewoooc-tokens.css 的 var(--momo-*) 系統。
|
||
* ═══════════════════════════════════════════════════════════ */
|
||
|
||
/* ──────────────── KPI 卡片 1:商品監控概況 ──────────────── */
|
||
.momo-app .stat-card {
|
||
position: relative;
|
||
border: 1px solid var(--momo-border-light);
|
||
border-radius: var(--momo-radius-lg);
|
||
background: var(--momo-bg-paper);
|
||
overflow: hidden;
|
||
transition: border-color 0.2s ease;
|
||
}
|
||
|
||
.momo-app .stat-card:hover {
|
||
border-color: var(--momo-page-accent-line);
|
||
}
|
||
|
||
/* 取代原本的 .bg-primary text-white:改成暖色系 inverse 卡 */
|
||
.momo-app .stat-card.bg-primary {
|
||
background: var(--momo-page-accent) !important;
|
||
color: var(--momo-page-inverse) !important;
|
||
border-color: var(--momo-page-accent-dark);
|
||
}
|
||
|
||
.momo-app .stat-card.bg-primary .text-white-50 {
|
||
color: rgba(255, 248, 239, 0.78) !important;
|
||
font-family: var(--momo-font-display);
|
||
font-size: var(--momo-text-label);
|
||
font-weight: 600;
|
||
letter-spacing: 0.06em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.momo-app .stat-card .card-body {
|
||
padding: var(--momo-space-5);
|
||
}
|
||
|
||
.momo-app .stat-card .card-title {
|
||
font-family: var(--momo-font-display);
|
||
font-size: var(--momo-text-body);
|
||
font-weight: 700;
|
||
letter-spacing: 0;
|
||
text-transform: none;
|
||
margin-bottom: var(--momo-space-4);
|
||
opacity: 1;
|
||
}
|
||
|
||
.momo-app .stat-card h2 {
|
||
font-family: var(--momo-font-mono);
|
||
font-size: 2rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0;
|
||
text-shadow: none;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
/* 移除原本貼右下角的巨大裝飾 icon — 過於裝飾,干擾數字閱讀 */
|
||
.momo-app .stat-icon {
|
||
display: none;
|
||
}
|
||
|
||
/* 卡內 4 格 KPI grid container */
|
||
.momo-app .stat-card .row .col-6 > div {
|
||
background: rgba(255, 248, 239, 0.12) !important;
|
||
border: 1px solid rgba(255, 248, 239, 0.18);
|
||
border-radius: var(--momo-radius-md);
|
||
transition: background 0.15s ease;
|
||
}
|
||
|
||
.momo-app .stat-card .row .col-6 > div:hover {
|
||
background: rgba(255, 248, 239, 0.20) !important;
|
||
}
|
||
|
||
/* ──────────────── KPI 卡片 2:今日價格動態 grid ──────────────── */
|
||
.momo-app .kpi-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: var(--momo-space-3);
|
||
}
|
||
|
||
.momo-app .kpi-item {
|
||
padding: var(--momo-space-4);
|
||
border-radius: var(--momo-radius-md);
|
||
background: var(--momo-bg-paper);
|
||
border: 1px solid var(--momo-border-light);
|
||
cursor: pointer;
|
||
transition: border-color 0.15s ease, background 0.15s ease;
|
||
min-height: 110px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.momo-app .kpi-item:hover {
|
||
border-color: var(--momo-page-accent-line);
|
||
background: var(--momo-page-accent-soft);
|
||
}
|
||
|
||
.momo-app .kpi-item-label {
|
||
font-family: var(--momo-font-display);
|
||
font-size: var(--momo-text-label);
|
||
font-weight: 600;
|
||
color: var(--momo-text-secondary);
|
||
letter-spacing: 0.06em;
|
||
text-transform: uppercase;
|
||
margin-bottom: var(--momo-space-2);
|
||
}
|
||
|
||
.momo-app .kpi-item-value {
|
||
font-family: var(--momo-font-mono);
|
||
font-size: 1.5rem;
|
||
font-weight: 700;
|
||
color: var(--momo-text-primary);
|
||
letter-spacing: 0;
|
||
line-height: 1.1;
|
||
}
|
||
|
||
.momo-app .kpi-item-sub {
|
||
font-size: var(--momo-text-label);
|
||
color: var(--momo-text-tertiary);
|
||
margin-top: var(--momo-space-1);
|
||
}
|
||
|
||
/* KPI 變化色 — 漲價(暖紅)/ 降價(橄欖綠) */
|
||
.momo-app .kpi-item.increase .kpi-item-value {
|
||
color: var(--momo-tag-rust-text);
|
||
}
|
||
.momo-app .kpi-item.decrease .kpi-item-value {
|
||
color: var(--momo-tag-olive-text);
|
||
}
|
||
.momo-app .kpi-item.neutral .kpi-item-value {
|
||
color: var(--momo-text-primary);
|
||
}
|
||
|
||
/* ──────────────── 表格 ──────────────── */
|
||
.momo-app .table-responsive {
|
||
border-radius: var(--momo-radius-md);
|
||
border: 1px solid var(--momo-border-light);
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* 商品縮圖 */
|
||
.momo-app .product-thumb {
|
||
width: 56px;
|
||
height: 56px;
|
||
object-fit: cover;
|
||
border-radius: var(--momo-radius-sm);
|
||
border: 1px solid var(--momo-border-light);
|
||
background: var(--momo-bg-subtle);
|
||
}
|
||
|
||
.momo-app .product-info .flex-grow-1 {
|
||
margin-left: var(--momo-space-3);
|
||
min-width: 0;
|
||
}
|
||
|
||
.momo-app .product-link,
|
||
.momo-app .product-name {
|
||
color: var(--momo-text-primary);
|
||
text-decoration: none;
|
||
font-weight: 600;
|
||
display: block;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
max-width: 100%;
|
||
}
|
||
.momo-app .product-link:hover {
|
||
color: var(--momo-page-accent-dark);
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.momo-app .product-id {
|
||
font-family: var(--momo-font-mono);
|
||
font-size: var(--momo-text-label);
|
||
color: var(--momo-text-tertiary);
|
||
cursor: pointer;
|
||
}
|
||
.momo-app .product-id:hover {
|
||
color: var(--momo-page-accent-dark);
|
||
}
|
||
|
||
/* 排序連結 */
|
||
.momo-app .sort-link {
|
||
color: inherit;
|
||
text-decoration: none;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
}
|
||
.momo-app .sort-link.active {
|
||
color: var(--momo-page-accent-dark);
|
||
}
|
||
.momo-app .sort-link:hover {
|
||
color: var(--momo-page-accent-dark);
|
||
}
|
||
|
||
/* 漲跌色 */
|
||
.momo-app .price-up {
|
||
color: var(--momo-tag-rust-text);
|
||
font-weight: 600;
|
||
}
|
||
.momo-app .price-down {
|
||
color: var(--momo-tag-olive-text);
|
||
font-weight: 600;
|
||
}
|
||
.momo-app .price-display {
|
||
font-family: var(--momo-font-mono);
|
||
font-size: 1.05rem;
|
||
color: var(--momo-text-primary);
|
||
}
|
||
|
||
/* status soft badge — 從原本的 bg-danger-soft / bg-success-soft 改用 token */
|
||
.momo-app .badge.bg-danger-soft {
|
||
background: var(--momo-tag-rust-bg) !important;
|
||
color: var(--momo-tag-rust-text) !important;
|
||
border: 1px solid var(--momo-tag-rust-border);
|
||
}
|
||
.momo-app .badge.bg-success-soft {
|
||
background: var(--momo-tag-olive-bg) !important;
|
||
color: var(--momo-tag-olive-text) !important;
|
||
border: 1px solid var(--momo-tag-olive-border);
|
||
}
|
||
.momo-app .badge.bg-secondary-soft {
|
||
background: var(--momo-tag-ink-bg) !important;
|
||
color: var(--momo-tag-ink-text) !important;
|
||
border: 1px solid var(--momo-tag-ink-border);
|
||
}
|
||
.momo-app .badge-status {
|
||
margin-left: var(--momo-space-2);
|
||
font-family: var(--momo-font-mono);
|
||
font-size: 11px;
|
||
font-weight: 600;
|
||
padding: 2px 6px;
|
||
}
|
||
|
||
.momo-app .cursor-pointer {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.momo-app .fs-08 {
|
||
font-size: 0.8rem;
|
||
}
|
||
|
||
/* ──────────────── Modal 內表格 ──────────────── */
|
||
.momo-app .modal-body .table-light {
|
||
background: var(--momo-bg-paper);
|
||
}
|
||
.momo-app .modal-body .table-light th {
|
||
background: var(--momo-bg-paper) !important;
|
||
color: var(--momo-text-secondary) !important;
|
||
}
|
||
|
||
/* 響應式:手機收成單欄 */
|
||
@media (max-width: 768px) {
|
||
.momo-app .kpi-grid {
|
||
grid-template-columns: repeat(2, 1fr);
|
||
}
|
||
.momo-app .stat-card h2 {
|
||
font-size: 1.6rem;
|
||
}
|
||
}
|