Compare commits
3
Commits
fb6a84cb7e
...
47b93b85c1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47b93b85c1 | ||
|
|
e0fcec2293 | ||
|
|
2ca22043a7 |
@@ -1142,3 +1142,264 @@ fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
|
|||||||
.keypad .key { height: 50px; font-size: 18px; font-weight: 600; }
|
.keypad .key { height: 50px; font-size: 18px; font-weight: 600; }
|
||||||
.keypad .key-ok { color: #fff; }
|
.keypad .key-ok { color: #fff; }
|
||||||
.season-band { opacity: 0.6; }
|
.season-band { opacity: 0.6; }
|
||||||
|
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
v1.9.2 · 墨绿渐变设计系统(覆盖层,保留全部组件类名)
|
||||||
|
明暗两套均由 [data-theme] / [data-bs-theme] 双属性驱动
|
||||||
|
============================================================ */
|
||||||
|
|
||||||
|
:root, :root[data-theme="light"], :root[data-bs-theme="light"] {
|
||||||
|
--ink-0: #f5f8f6;
|
||||||
|
--ink-1: #eaf1ed;
|
||||||
|
--ink-2: #ffffff;
|
||||||
|
--ink-line: #d7e3dc;
|
||||||
|
--ink-ink: #10241d;
|
||||||
|
--ink-ink-2: #2d4a3f;
|
||||||
|
--ink-muted: #6a8579;
|
||||||
|
--ink-green: #16543f;
|
||||||
|
--ink-green-2: #1d7a58;
|
||||||
|
--ink-green-3: #2fa37a;
|
||||||
|
--ink-glow: rgba(47, 163, 122, 0.18);
|
||||||
|
--ink-grad: linear-gradient(135deg, #16543f 0%, #1d7a58 45%, #2fa37a 100%);
|
||||||
|
--ink-grad-soft: linear-gradient(135deg, rgba(22,84,63,.08), rgba(47,163,122,.04));
|
||||||
|
--bs-body-bg: #f5f8f6;
|
||||||
|
--bs-body-color: #10241d;
|
||||||
|
--bs-border-color: #d7e3dc;
|
||||||
|
--bs-secondary-bg: #eaf1ed;
|
||||||
|
--bs-tertiary-bg: #e2ece6;
|
||||||
|
--bs-primary: #16543f;
|
||||||
|
--bs-primary-rgb: 22, 84, 63;
|
||||||
|
--bs-success: #1d7a58;
|
||||||
|
--bs-success-rgb: 29, 122, 88;
|
||||||
|
--bs-link-color: #16543f;
|
||||||
|
--bs-border-radius: .65rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root[data-theme="dark"], :root[data-bs-theme="dark"] {
|
||||||
|
--ink-0: #0b1512;
|
||||||
|
--ink-1: #101d18;
|
||||||
|
--ink-2: #14241e;
|
||||||
|
--ink-line: #1f352c;
|
||||||
|
--ink-ink: #e6f2ec;
|
||||||
|
--ink-ink-2: #b9d2c6;
|
||||||
|
--ink-muted: #7f9c8f;
|
||||||
|
--ink-green: #2fa37a;
|
||||||
|
--ink-green-2: #3dbd90;
|
||||||
|
--ink-green-3: #63d6ad;
|
||||||
|
--ink-glow: rgba(63, 214, 173, 0.22);
|
||||||
|
--ink-grad: linear-gradient(135deg, #0d3a2b 0%, #145841 45%, #1d7a58 100%);
|
||||||
|
--ink-grad-soft: linear-gradient(135deg, rgba(29,122,88,.18), rgba(63,214,173,.06));
|
||||||
|
--bs-body-bg: #0b1512;
|
||||||
|
--bs-body-color: #e6f2ec;
|
||||||
|
--bs-border-color: #1f352c;
|
||||||
|
--bs-secondary-bg: #101d18;
|
||||||
|
--bs-tertiary-bg: #16261f;
|
||||||
|
--bs-primary: #3dbd90;
|
||||||
|
--bs-primary-rgb: 61, 189, 144;
|
||||||
|
--bs-success: #3dbd90;
|
||||||
|
--bs-success-rgb: 61, 189, 144;
|
||||||
|
--bs-link-color: #63d6ad;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background:
|
||||||
|
radial-gradient(1200px 520px at 12% -10%, rgba(47,163,122,.16), transparent 60%),
|
||||||
|
radial-gradient(900px 420px at 100% 0%, rgba(22,84,63,.14), transparent 55%),
|
||||||
|
var(--ink-0) !important;
|
||||||
|
color: var(--ink-ink) !important;
|
||||||
|
font-family: "Inter", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
}
|
||||||
|
|
||||||
|
a { color: var(--bs-link-color); text-decoration: none; }
|
||||||
|
a:hover { color: var(--ink-green-3); }
|
||||||
|
|
||||||
|
/* 顶栏 */
|
||||||
|
.navbar {
|
||||||
|
background: linear-gradient(90deg, rgba(22,84,63,.10), rgba(47,163,122,.05)) !important;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
border-bottom: 1px solid var(--ink-line) !important;
|
||||||
|
}
|
||||||
|
.navbar-brand {
|
||||||
|
background: var(--ink-grad);
|
||||||
|
-webkit-background-clip: text; background-clip: text; color: transparent !important;
|
||||||
|
font-weight: 800; letter-spacing: .04em;
|
||||||
|
}
|
||||||
|
.navbar .nav-link { color: var(--ink-ink-2) !important; border-radius: .5rem; padding: .35rem .7rem !important; }
|
||||||
|
.navbar .nav-link:hover { background: var(--ink-grad-soft); color: var(--ink-ink) !important; }
|
||||||
|
.navbar .nav-link.active {
|
||||||
|
color: #fff !important;
|
||||||
|
background: var(--ink-grad);
|
||||||
|
box-shadow: 0 6px 18px -8px var(--ink-glow);
|
||||||
|
}
|
||||||
|
.navbar .form-control {
|
||||||
|
background: var(--ink-2); border-color: var(--ink-line); color: var(--ink-ink);
|
||||||
|
}
|
||||||
|
.navbar .form-control:focus { border-color: var(--ink-green-3); box-shadow: 0 0 0 .2rem var(--ink-glow); }
|
||||||
|
|
||||||
|
/* 徽标 */
|
||||||
|
.badge.text-bg-danger { background: linear-gradient(135deg, #8f2f2a, #c4453d) !important; }
|
||||||
|
.badge.text-bg-warning { background: linear-gradient(135deg, #8a5a14, #c98a2c) !important; color: #fff !important; }
|
||||||
|
.badge.text-bg-secondary { background: var(--ink-1) !important; color: var(--ink-ink-2) !important; border: 1px solid var(--ink-line); }
|
||||||
|
|
||||||
|
/* 按钮 */
|
||||||
|
.btn { border-radius: .55rem; font-weight: 600; transition: transform .08s ease, box-shadow .15s ease, background .15s ease; }
|
||||||
|
.btn:active { transform: translateY(1px); }
|
||||||
|
.btn-primary, .btn-success {
|
||||||
|
background: var(--ink-grad) !important; border: 0 !important; color: #fff !important;
|
||||||
|
box-shadow: 0 8px 20px -12px var(--ink-glow);
|
||||||
|
}
|
||||||
|
.btn-primary:hover, .btn-success:hover { filter: brightness(1.08); }
|
||||||
|
.btn-outline-secondary { border-color: var(--ink-line); color: var(--ink-ink-2); }
|
||||||
|
.btn-outline-secondary:hover { background: var(--ink-grad-soft); border-color: var(--ink-green-3); color: var(--ink-ink); }
|
||||||
|
.btn-ghost { background: transparent; border: 1px solid transparent; color: var(--ink-ink-2); }
|
||||||
|
.btn-ghost:hover { background: var(--ink-1); border-color: var(--ink-line); }
|
||||||
|
.btn-danger, .btn-urgent { background: linear-gradient(135deg, #8f2f2a, #c4453d) !important; border: 0; color: #fff; }
|
||||||
|
|
||||||
|
/* 卡片与面板 */
|
||||||
|
.card, .panel, .table-wrap, .drawer, .section.card, .form.card, .minical {
|
||||||
|
background: var(--ink-2) !important;
|
||||||
|
border: 1px solid var(--ink-line) !important;
|
||||||
|
border-radius: 1rem !important;
|
||||||
|
box-shadow: 0 18px 40px -32px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.04);
|
||||||
|
}
|
||||||
|
.card-header, .panel-head { background: var(--ink-grad-soft) !important; border-color: var(--ink-line) !important; }
|
||||||
|
|
||||||
|
/* 表格 */
|
||||||
|
.table { --bs-table-bg: transparent; --bs-table-color: var(--ink-ink); margin: 0; }
|
||||||
|
.table thead th { background: var(--ink-1) !important; color: var(--ink-muted) !important; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; border-color: var(--ink-line) !important; }
|
||||||
|
.table td { border-color: var(--ink-line) !important; vertical-align: middle; }
|
||||||
|
.table tbody tr:hover { background: var(--ink-grad-soft); }
|
||||||
|
|
||||||
|
/* 表单 */
|
||||||
|
.form-control, .form-select {
|
||||||
|
background: var(--ink-2); border-color: var(--ink-line); color: var(--ink-ink); border-radius: .55rem;
|
||||||
|
}
|
||||||
|
.form-control:focus, .form-select:focus { border-color: var(--ink-green-3); box-shadow: 0 0 0 .2rem var(--ink-glow); background: var(--ink-2); color: var(--ink-ink); }
|
||||||
|
.form-label, label > span { color: var(--ink-ink-2); font-weight: 600; font-size: .8rem; }
|
||||||
|
|
||||||
|
/* 日历 */
|
||||||
|
.cal-grid { border-radius: 1rem; overflow: hidden; background: var(--ink-2); }
|
||||||
|
.cal-dow { background: var(--ink-1); border-color: var(--ink-line); }
|
||||||
|
.cal-cell { border-color: var(--ink-line); color: var(--ink-ink); }
|
||||||
|
.cal-cell:hover { background: var(--ink-grad-soft); }
|
||||||
|
.cal-cell.out { opacity: .35; }
|
||||||
|
.cal-cell.sel { box-shadow: inset 0 0 0 2px var(--ink-green-3); }
|
||||||
|
.cal-cell.today .dnum { background: var(--ink-grad); color: #fff; box-shadow: 0 6px 16px -8px var(--ink-glow); }
|
||||||
|
.cal-cell.heat-1 { background: rgba(47,163,122,.07); }
|
||||||
|
.cal-cell.heat-2 { background: rgba(47,163,122,.12); }
|
||||||
|
.cal-cell.heat-3 { background: rgba(47,163,122,.18); }
|
||||||
|
.cal-cell.heat-4 { background: rgba(47,163,122,.26); }
|
||||||
|
.cell-count b { color: var(--ink-green-3); font-weight: 800; }
|
||||||
|
.cell-count span { color: var(--ink-muted); }
|
||||||
|
|
||||||
|
/* 抽屉 */
|
||||||
|
.drawer { backdrop-filter: blur(6px); }
|
||||||
|
.drawer-head { background: var(--ink-grad-soft) !important; border-color: var(--ink-line) !important; }
|
||||||
|
.drawer-clock b { background: var(--ink-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
|
||||||
|
.task.list-group-item { border-color: var(--ink-line) !important; }
|
||||||
|
.task.urgent { background: linear-gradient(90deg, rgba(196,69,61,.14), transparent); }
|
||||||
|
.ticket { border-radius: .35rem; }
|
||||||
|
|
||||||
|
/* 小键盘 */
|
||||||
|
.keypad .key { background: var(--ink-2); border-color: var(--ink-line); color: var(--ink-ink); height: 52px; border-radius: .75rem; }
|
||||||
|
.keypad .key:hover { border-color: var(--ink-green-3); color: var(--ink-green-3); transform: translateY(-1px); }
|
||||||
|
.keypad .key-ok { background: var(--ink-grad); border: 0; color: #fff; box-shadow: 0 10px 24px -12px var(--ink-glow); }
|
||||||
|
|
||||||
|
/* 标签页 */
|
||||||
|
.pkg-tabs a, .scr-tabs a { background: var(--ink-2); border-color: var(--ink-line); color: var(--ink-ink-2); border-radius: 999px; }
|
||||||
|
.pkg-tabs a.on, .scr-tabs a.on { background: var(--ink-grad); border-color: transparent; color: #fff; }
|
||||||
|
|
||||||
|
/* 提示与弹层 */
|
||||||
|
.alert { border-radius: .75rem; border: 1px solid var(--ink-line); }
|
||||||
|
.flash { background: var(--ink-grad) !important; color: #fff; border-radius: .75rem; }
|
||||||
|
.dropdown-menu { background: var(--ink-2); border-color: var(--ink-line); border-radius: .75rem; box-shadow: 0 20px 40px -24px rgba(0,0,0,.6); }
|
||||||
|
.dropdown-item { color: var(--ink-ink-2); }
|
||||||
|
.dropdown-item:hover { background: var(--ink-grad-soft); color: var(--ink-ink); }
|
||||||
|
|
||||||
|
/* 滚动条 */
|
||||||
|
* { scrollbar-color: var(--ink-green-3) transparent; scrollbar-width: thin; }
|
||||||
|
::-webkit-scrollbar { width: 10px; height: 10px; }
|
||||||
|
::-webkit-scrollbar-thumb { background: var(--ink-green-2); border-radius: 999px; border: 2px solid var(--ink-0); }
|
||||||
|
|
||||||
|
/* 大屏同步 */
|
||||||
|
.scr { background: transparent; }
|
||||||
|
.scr-brand .mark { background: var(--ink-grad); }
|
||||||
|
.scr-kpis .kpi { background: var(--ink-2); border-color: var(--ink-line); border-radius: 1rem; }
|
||||||
|
.kpi b { background: var(--ink-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }
|
||||||
|
.heat-cell { border-color: var(--ink-line); background: var(--ink-1); }
|
||||||
|
.heat-cell.h1 { background: rgba(47,163,122,.14); }
|
||||||
|
.heat-cell.h2 { background: rgba(47,163,122,.26); }
|
||||||
|
.heat-cell.h3 { background: rgba(47,163,122,.40); }
|
||||||
|
.heat-cell.h4 { background: rgba(47,163,122,.58); }
|
||||||
|
|
||||||
|
|
||||||
|
/* ---------- v1.9.3 fixes:布局与对比度 ---------- */
|
||||||
|
|
||||||
|
/* 日历头部:左右两组垂直居中 */
|
||||||
|
.cal-head, .cal-toolbar, .month-nav {
|
||||||
|
display: flex; align-items: center; gap: 10px;
|
||||||
|
flex-wrap: wrap; min-height: 40px;
|
||||||
|
}
|
||||||
|
.cal-head h1, .month-nav h1, .month-nav b { margin: 0; line-height: 1.2; display: inline-flex; align-items: center; }
|
||||||
|
.cal-head .btn, .month-nav .btn, .cal-toolbar .btn { align-self: center; }
|
||||||
|
|
||||||
|
/* 任务卡:正文与操作按钮分两列,按钮横排、不换行 */
|
||||||
|
.task {
|
||||||
|
display: flex !important; align-items: flex-start; gap: 10px;
|
||||||
|
flex-wrap: nowrap; padding-block: 10px;
|
||||||
|
}
|
||||||
|
.task-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
|
||||||
|
.task-actions { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; margin-left: auto; }
|
||||||
|
.task-actions form { display: inline-flex; margin: 0; }
|
||||||
|
.task-actions .btn, .task .btn { white-space: nowrap; padding-block: .2rem; }
|
||||||
|
.task-title {
|
||||||
|
color: var(--ink-ink) !important; font-weight: 650; text-decoration: none;
|
||||||
|
overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
||||||
|
}
|
||||||
|
.task-title:hover { color: var(--ink-green-3) !important; }
|
||||||
|
.task-meta, .task-sub, .task-note, .task .muted {
|
||||||
|
color: var(--ink-muted) !important; font-size: .78rem;
|
||||||
|
}
|
||||||
|
.task.urgent .task-title { color: #f08a82 !important; }
|
||||||
|
|
||||||
|
/* 标签/徽记:浅底深字,任何主题都读得清 */
|
||||||
|
.tagchip, .chip, .pkg-tag, .tag {
|
||||||
|
display: inline-flex; align-items: center; gap: 4px;
|
||||||
|
padding: 1px 8px; border-radius: 999px;
|
||||||
|
background: rgba(47,163,122,.16) !important;
|
||||||
|
border: 1px solid rgba(47,163,122,.38) !important;
|
||||||
|
color: var(--ink-ink) !important;
|
||||||
|
font-size: .72rem; font-weight: 600; line-height: 1.7;
|
||||||
|
}
|
||||||
|
[data-theme="dark"] .tagchip, [data-theme="dark"] .chip,
|
||||||
|
[data-bs-theme="dark"] .tagchip, [data-bs-theme="dark"] .chip {
|
||||||
|
background: rgba(99,214,173,.18) !important;
|
||||||
|
border-color: rgba(99,214,173,.42) !important;
|
||||||
|
color: #d8f5e9 !important;
|
||||||
|
}
|
||||||
|
[data-theme="dark"] .tagchip, [data-bs-theme="dark"] .tagchip { color: #bfe9d8 !important; }
|
||||||
|
|
||||||
|
/* 套餐表格行操作按钮 */
|
||||||
|
.actions, .row-actions, td .actions {
|
||||||
|
display: flex; align-items: center; gap: 8px; flex-wrap: nowrap;
|
||||||
|
}
|
||||||
|
.actions form, .row-actions form { display: inline-flex; margin: 0; }
|
||||||
|
.actions .btn, .row-actions .btn, td .btn { white-space: nowrap; padding-block: .2rem; }
|
||||||
|
|
||||||
|
/* 订阅卡动作行 */
|
||||||
|
.subcard-foot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
||||||
|
.subcard-foot form { display: inline-flex; margin: 0; }
|
||||||
|
|
||||||
|
/* 表格正文对比度 */
|
||||||
|
.table td, .table td a, .table td strong { color: var(--ink-ink); }
|
||||||
|
.table td .muted, .table td small { color: var(--ink-muted) !important; }
|
||||||
|
|
||||||
|
/* v1.9.3 对比度补丁 */
|
||||||
|
.badge.text-bg-success { background: #1d7a58 !important; color: #f2fffa !important; }
|
||||||
|
.table thead th { color: #4f6a5e !important; }
|
||||||
|
[data-bs-theme="dark"] .table thead th, [data-theme="dark"] .table thead th { color: var(--ink-muted) !important; }
|
||||||
|
.task-meta, .task-sub, .task-note { color: #55705f !important; }
|
||||||
|
[data-bs-theme="dark"] .task-meta, [data-theme="dark"] .task-meta,
|
||||||
|
[data-bs-theme="dark"] .task-sub, [data-theme="dark"] .task-sub { color: #9dbbac !important; }
|
||||||
@@ -58,7 +58,10 @@
|
|||||||
html, body { height: 100%; margin: 0; }
|
html, body { height: 100%; margin: 0; }
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background: var(--bg);
|
background:
|
||||||
|
radial-gradient(1200px 600px at 15% -10%, rgba(47,163,122,.18), transparent 60%),
|
||||||
|
radial-gradient(900px 500px at 100% 0%, rgba(22,84,63,.22), transparent 55%),
|
||||||
|
var(--bg);
|
||||||
color: var(--ink);
|
color: var(--ink);
|
||||||
font-family: "Bahnschrift", "Microsoft YaHei UI", "PingFang SC", system-ui, sans-serif;
|
font-family: "Bahnschrift", "Microsoft YaHei UI", "PingFang SC", system-ui, sans-serif;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
@@ -418,3 +421,19 @@ body::before {
|
|||||||
.heat-cell.h3 { background: rgba(var(--bs-success-rgb), 0.40); }
|
.heat-cell.h3 { background: rgba(var(--bs-success-rgb), 0.40); }
|
||||||
.heat-cell.h4 { background: rgba(var(--bs-success-rgb), 0.58); }
|
.heat-cell.h4 { background: rgba(var(--bs-success-rgb), 0.58); }
|
||||||
.scr-kpis .kpi { --bs-card-border-color: var(--bs-border-color); }
|
.scr-kpis .kpi { --bs-card-border-color: var(--bs-border-color); }
|
||||||
|
|
||||||
|
/* v1.9.2 ink */
|
||||||
|
.scr-tabs a.on { background: linear-gradient(135deg,#16543f,#2fa37a); border-color: transparent; }
|
||||||
|
|
||||||
|
/* v1.9.4:大屏弱化文字提亮,提升可读性 */
|
||||||
|
.scr { --muted: #9fb8ab; --ink-2: #b9d2c6; }
|
||||||
|
.scr-links, .scr-foot, .scr-head .sub, .scr-head em,
|
||||||
|
.kpi small, .kpi .unit, .panel-sub,
|
||||||
|
.top-item .meta, .top-item .sub, .due-item .sub,
|
||||||
|
.heat-cell .lbl, .scr-note { color: #a9c3b6 !important; }
|
||||||
|
.scr a { color: #8fe0bf !important; }
|
||||||
|
.cal-dow span, .scr-cal .dow { color: #a9c3b6 !important; }
|
||||||
|
.kpi b, .kpi strong { color: #eafff6 !important; }
|
||||||
|
.heat-cell.h1 { color: #dff5ea; }
|
||||||
|
/* v1.9.4:非本月日期再提亮一档 */
|
||||||
|
.heat-cell.out, .scr-cal .out { color: #a9c3b6 !important; opacity: .85; }
|
||||||
@@ -26,7 +26,7 @@ import (
|
|||||||
"daili/internal/web"
|
"daili/internal/web"
|
||||||
)
|
)
|
||||||
|
|
||||||
const version = "1.9.1"
|
const version = "1.9.4"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfgFlag := flag.String("config", "", "配置文件路径(默认:exe 同级的 "+config.FileName+")")
|
cfgFlag := flag.String("config", "", "配置文件路径(默认:exe 同级的 "+config.FileName+")")
|
||||||
|
|||||||
Reference in New Issue
Block a user