/* ============================================================ page-edm-bem.css — Turn B:BEM 元件層 group: ops · accent: --momo-warm-mahogany ============================================================ */ /* ---------- Page head ---------- */ .edm-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--momo-space-4); flex-wrap: wrap; margin-bottom: var(--momo-space-5); padding-bottom: var(--momo-space-4); border-bottom: 1px solid var(--momo-border-light); } .edm-head__main { flex: 1 1 480px; min-width: 0; } .edm-head__title { display: flex; align-items: center; gap: var(--momo-space-3); margin: 0 0 var(--momo-space-2) 0; font-family: var(--momo-font-heading); font-weight: var(--momo-font-bold); font-size: var(--momo-text-2xl); color: var(--momo-ink-primary); letter-spacing: 0; } .edm-head__icon { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--momo-radius-sm); background: var(--momo-warm-mahogany-soft); color: var(--momo-warm-mahogany); font-size: var(--momo-text-lg); flex-shrink: 0; } .edm-head__meta { display: flex; align-items: center; flex-wrap: wrap; gap: var(--momo-space-2) var(--momo-space-4); font-size: var(--momo-text-sm); color: var(--momo-ink-tertiary); } .edm-head__meta-item { display: inline-flex; align-items: center; gap: var(--momo-space-1); } .edm-head__meta-label { color: var(--momo-ink-tertiary); font-weight: var(--momo-font-medium); } .edm-head__meta-value { color: var(--momo-ink-secondary); font-weight: var(--momo-font-semibold); font-family: var(--momo-font-mono); } .edm-head__actions { display: flex; gap: var(--momo-space-2); flex-wrap: wrap; align-items: center; } /* ---------- Promo nav (動態頁籤) ---------- */ .edm-promonav { display: flex; flex-wrap: wrap; gap: var(--momo-space-2); margin-bottom: var(--momo-space-5); padding: var(--momo-space-2); background: var(--momo-surface-2); border-radius: var(--momo-radius-md); border: 1px solid var(--momo-border-light); } .edm-promonav__item { padding: var(--momo-space-2) var(--momo-space-4); border-radius: var(--momo-radius-sm); font-size: var(--momo-text-sm); font-weight: var(--momo-font-medium); color: var(--momo-ink-secondary); background: transparent; border: 1px solid transparent; text-decoration: none; transition: all 0.16s ease; } .edm-promonav__item:hover { color: var(--momo-warm-mahogany); background: var(--momo-surface-0); } .edm-promonav__item.is-active { background: var(--momo-warm-mahogany); color: var(--momo-on-accent, #fff8ef); box-shadow: var(--momo-shadow-soft); } /* ---------- Status banner (排程統計) ---------- */ .edm-statusbar { display: flex; align-items: center; gap: var(--momo-space-3); flex-wrap: wrap; padding: var(--momo-space-3) var(--momo-space-4); margin-bottom: var(--momo-space-4); background: var(--momo-warm-caramel-soft); border: 1px solid var(--momo-warm-caramel); border-radius: var(--momo-radius-sm); font-size: var(--momo-text-sm); } .edm-statusbar__icon { color: var(--momo-warm-caramel-deep); } .edm-statusbar__item { color: var(--momo-ink-secondary); } .edm-statusbar__item strong { color: var(--momo-ink-primary); font-weight: var(--momo-font-semibold); } .edm-statusbar__time { font-family: var(--momo-font-mono); color: var(--momo-ink-primary); font-weight: var(--momo-font-semibold); } .edm-statusbar__badge { display: inline-flex; align-items: center; padding: 0.2em 0.7em; border-radius: var(--momo-radius-pill); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); } .edm-statusbar__badge--ok { background: var(--momo-warm-olive); color: var(--momo-on-accent, #fff8ef); } .edm-statusbar__badge--err { background: var(--momo-warm-honey-deep); color: var(--momo-on-accent, #fff8ef); } /* ---------- Slot tabs (時段) ---------- */ .edm-slottabs { display: flex; flex-wrap: wrap; gap: var(--momo-space-2); border-bottom: 1px solid var(--momo-border); padding-bottom: var(--momo-space-3); margin-bottom: var(--momo-space-4); } .edm-slottabs__btn { display: inline-flex; align-items: center; gap: var(--momo-space-2); padding: var(--momo-space-2) var(--momo-space-4); border-radius: var(--momo-radius-pill); background: var(--momo-surface-0); border: 1px solid var(--momo-border); color: var(--momo-ink-secondary); font-size: var(--momo-text-sm); font-weight: var(--momo-font-medium); cursor: pointer; transition: all 0.16s ease; } .edm-slottabs__btn:hover { color: var(--momo-warm-mahogany); border-color: var(--momo-warm-mahogany-soft); background: var(--momo-surface-2); } .edm-slottabs__btn.active, .edm-slottabs__btn[aria-selected="true"] { background: var(--momo-warm-mahogany); border-color: var(--momo-warm-mahogany); color: var(--momo-on-accent, #fff8ef); box-shadow: var(--momo-shadow-soft); } .edm-slottabs__count { display: inline-flex; align-items: center; justify-content: center; min-width: 26px; padding: 0 var(--momo-space-2); height: 20px; border-radius: var(--momo-radius-pill); background: var(--momo-surface-2); color: var(--momo-ink-primary); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); border: 1px solid var(--momo-border); } .edm-slottabs__btn.active .edm-slottabs__count, .edm-slottabs__btn[aria-selected="true"] .edm-slottabs__count { background: rgba(255, 248, 239, 0.95); color: var(--momo-warm-mahogany); border-color: transparent; } /* ---------- Slot panel header ---------- */ .edm-slotpanel { background: var(--momo-surface-0); border-radius: var(--momo-radius-md); border: 1px solid var(--momo-border-light); box-shadow: var(--momo-shadow-soft); padding: var(--momo-space-5); margin-bottom: var(--momo-space-5); } .edm-slotpanel__head { display: flex; align-items: center; flex-wrap: wrap; gap: var(--momo-space-3); padding-bottom: var(--momo-space-3); margin-bottom: var(--momo-space-4); border-bottom: 1px solid var(--momo-border-light); } .edm-slotpanel__title { font-family: var(--momo-font-heading); font-weight: var(--momo-font-semibold); font-size: var(--momo-text-lg); color: var(--momo-ink-primary); margin: 0; } .edm-slotpanel__statgroup { display: inline-flex; flex-wrap: wrap; gap: var(--momo-space-2); } .edm-slotpanel__stat { display: inline-flex; align-items: center; gap: var(--momo-space-1); padding: 0.22em 0.7em; border-radius: var(--momo-radius-pill); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); border: 1px solid transparent; } .edm-slotpanel__stat--new { background: var(--momo-warm-mahogany-soft); color: var(--momo-warm-mahogany); border-color: var(--momo-warm-mahogany-soft); } .edm-slotpanel__stat--up { background: var(--momo-warm-honey-soft); color: var(--momo-warm-honey-deep); border-color: var(--momo-warm-honey-soft); } .edm-slotpanel__stat--down { background: var(--momo-warm-olive-soft); color: var(--momo-warm-olive); border-color: var(--momo-warm-olive-soft); } .edm-slotpanel__stat--delisted { background: var(--momo-surface-2); color: var(--momo-ink-tertiary); border-color: var(--momo-border); } /* ---------- Product table ---------- */ .edm-prodtable { width: 100%; } .edm-prodtable th { background: var(--momo-surface-2); color: var(--momo-ink-secondary); font-weight: var(--momo-font-semibold); font-size: var(--momo-text-xs); text-transform: uppercase; letter-spacing: 0.04em; padding: var(--momo-space-3); border-bottom: 1px solid var(--momo-border); text-align: left; } .edm-prodtable th a { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: var(--momo-space-1); } .edm-prodtable th a:hover { color: var(--momo-warm-mahogany); } .edm-prodtable th .fa-sort, .edm-prodtable th .fa-sort-up, .edm-prodtable th .fa-sort-down { font-size: 0.75em; opacity: 0.7; } .edm-prodtable td { padding: var(--momo-space-3); vertical-align: middle; border-bottom: 1px solid var(--momo-border-light); } .edm-prodtable tr:hover td { background: var(--momo-surface-1); } .edm-prodtable tr:last-child td { border-bottom: none; } .edm-prodtable .text-end { text-align: right; } .edm-prodtable .text-center { text-align: center; } /* category badge cell */ .edm-cat-badge { display: inline-flex; align-items: center; padding: 0.22em 0.75em; border-radius: var(--momo-radius-pill); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); border: 1px solid var(--momo-border-light); } .edm-cat-badge--unknown { background: var(--momo-surface-2); color: var(--momo-ink-tertiary); } /* product cell */ .edm-prod { display: flex; align-items: flex-start; gap: var(--momo-space-3); } .edm-prod__thumb { width: 60px; height: 60px; flex-shrink: 0; object-fit: cover; border-radius: var(--momo-radius-sm); border: 1px solid var(--momo-border-light); background: var(--momo-surface-2); } .edm-prod__thumb--placeholder { display: flex; align-items: center; justify-content: center; color: var(--momo-ink-tertiary); font-size: var(--momo-text-xs); } .edm-prod__body { flex: 1; min-width: 0; } .edm-prod__name { display: block; text-decoration: none; color: var(--momo-ink-primary); font-weight: var(--momo-font-semibold); font-size: var(--momo-text-sm); line-height: 1.4; margin-bottom: var(--momo-space-1); } .edm-prod__name:hover { color: var(--momo-warm-mahogany); } .edm-prod__chips { display: flex; align-items: center; flex-wrap: wrap; gap: var(--momo-space-2); } .edm-prod__icode { display: inline-flex; align-items: center; gap: var(--momo-space-1); font-family: var(--momo-font-mono); font-size: var(--momo-text-xs); color: var(--momo-ink-tertiary); font-weight: var(--momo-font-medium); cursor: pointer; transition: color 0.12s ease; } .edm-prod__icode:hover { color: var(--momo-warm-mahogany); } .edm-prod__icode.is-copied { color: var(--momo-warm-olive); } /* status chip */ .edm-chip { display: inline-flex; align-items: center; padding: 0.2em 0.6em; border-radius: var(--momo-radius-pill); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); border: 1px solid transparent; } .edm-chip--new { background: var(--momo-warm-mahogany); color: var(--momo-on-accent, #fff8ef); } .edm-chip--down { background: var(--momo-warm-olive-soft); color: var(--momo-warm-olive); border-color: var(--momo-warm-olive-soft); } .edm-chip--up { background: var(--momo-warm-honey-soft); color: var(--momo-warm-honey-deep); border-color: var(--momo-warm-honey-soft); } .edm-chip--delisted { background: var(--momo-surface-2); color: var(--momo-ink-tertiary); border-color: var(--momo-border); } .edm-chip--discount { background: var(--momo-warm-honey); color: var(--momo-on-accent, #fff8ef); } .edm-chip--qty { background: var(--momo-warm-honey-soft); color: var(--momo-warm-honey-deep); border-color: var(--momo-warm-honey); } .edm-chip--active { background: var(--momo-warm-olive-soft); color: var(--momo-warm-olive); border-color: var(--momo-warm-olive); } /* price cell */ .edm-price__delta { display: inline-block; padding: 0.18em 0.6em; border-radius: var(--momo-radius-pill); font-size: var(--momo-text-xs); font-weight: var(--momo-font-semibold); margin-bottom: var(--momo-space-1); } .edm-price__delta--down { background: var(--momo-warm-olive-soft); color: var(--momo-warm-olive); } .edm-price__delta--up { background: var(--momo-warm-honey-soft); color: var(--momo-warm-honey-deep); } .edm-price__row { display: flex; align-items: baseline; justify-content: flex-end; gap: var(--momo-space-2); } .edm-price__old { text-decoration: line-through; color: var(--momo-ink-tertiary); font-size: var(--momo-text-xs); font-family: var(--momo-font-mono); } .edm-price__cur { font-family: var(--momo-font-mono); font-weight: var(--momo-font-bold); font-size: var(--momo-text-base); color: var(--momo-ink-primary); } .edm-price__cur--down { color: var(--momo-warm-olive); } .edm-price__cur--up { color: var(--momo-warm-honey-deep); }