:root { --bg-page: #FFFFFF; --bg-subtle: #F7F8FA; --bg-hover: #F2F3F5; --border: #EBEDF0; --border-strong: #DCDEE3; --text-1: #1D2129; --text-2: #4E5969; --text-3: #86909C; --accent: #3370FF; --accent-bg: #F0F5FF; --ok: #23A757; --warn: #E8842C; --danger: #E5484D; --dot-empty: #C9CDD4; --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px; --shadow-float: 0 4px 16px rgba(29, 33, 41, 0.08); } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { background: var(--bg-page); color: var(--text-1); font-family: -apple-system, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; font-size: 13px; line-height: 1.6; -webkit-font-smoothing: antialiased; } button, input, select, textarea { font: inherit; color: inherit; } .num { font-variant-numeric: tabular-nums; } .flex1 { flex: 1; } .muted { color: var(--text-3); } .muted2 { color: var(--text-2); } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 0 12px; height: 32px; border-radius: var(--radius-sm); border: 1px solid var(--border-strong); background: var(--bg-page); color: var(--text-1); cursor: pointer; white-space: nowrap; } .btn:hover { background: var(--bg-hover); } .btn:disabled { opacity: 0.45; cursor: not-allowed; } .btn-primary { background: var(--accent); border-color: var(--accent); color: #FFFFFF; } .btn-primary:hover { background: #2B5FD9; } .btn-danger { color: var(--danger); border-color: var(--danger); } .btn-sm { height: 26px; padding: 0 10px; font-size: 12px; } .btn-xs { height: 22px; padding: 0 8px; font-size: 12px; } .input, .select, .textarea { height: 32px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--bg-page); outline: none; width: 100%; } .textarea { height: auto; min-height: 56px; padding: 8px 10px; resize: vertical; } .input:focus, .select:focus, .textarea:focus { border-color: var(--accent); } .input::placeholder, .textarea::placeholder { color: var(--text-3); } .card { border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--bg-page); } .icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; flex: none; border: none; background: transparent; border-radius: var(--radius-sm); color: var(--text-3); cursor: pointer; } .icon-btn:hover { background: var(--bg-hover); color: var(--text-1); } .icon-btn.active { color: var(--accent); } .icon-btn.active-warn { color: var(--warn); } .tag { display: inline-block; padding: 0 8px; height: 22px; line-height: 20px; border-radius: 4px; font-size: 12px; background: var(--bg-subtle); color: var(--text-2); border: 1px solid var(--border); white-space: nowrap; } .dot { width: 6px; height: 6px; border-radius: 50%; display: inline-block; flex: none; } .dot.normal { background: var(--ok); } .dot.late, .dot.early, .dot.incomplete { background: var(--warn); } .dot.absent { background: var(--danger); } .dot.none, .dot.leave { background: var(--dot-empty); } /* 移动端:避免 iOS 聚焦缩放,输入字号提到 16px */ @media (max-width: 720px) { input, select, textarea { font-size: 16px !important; } input[type="checkbox"] { font-size: initial; } } .dot.rest { background: var(--border); } .icon { display: inline-flex; align-items: center; justify-content: center; flex: none; } .icon svg { width: 100%; height: 100%; display: block; }