* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: #f6f4ee;
  color: #1c1c1c;
  font-size: 14px;
}
.app { display: flex; min-height: 100vh; }

/* ---- 侧边栏 ---- */
.sidebar {
  width: 212px; flex-shrink: 0; background: #fff; border-right: 1px solid #eee9df;
  padding: 18px 12px; display: flex; flex-direction: column; gap: 4px;
  position: sticky; top: 0; height: 100vh;
}
.brand { font-size: 16px; font-weight: 700; padding: 4px 10px 10px; }
.brand-clock { font-size: 26px; font-weight: 700; letter-spacing: 1px; padding: 0 10px; font-variant-numeric: tabular-nums; }
.brand-date { font-size: 12px; color: #999; padding: 2px 10px 0; }
.brand-weather { font-size: 13px; color: #555; padding: 6px 10px 12px; border-bottom: 1px solid #f0ece2; margin-bottom: 10px; }
.nav-item {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 12px; border-radius: 10px; color: #555; text-decoration: none; font-size: 13.5px;
  transition: background .15s, color .15s;
}
.nav-item:hover { background: #f4f2ec; }
.nav-item.active { background: #e6f5ec; color: #1f8a5d; font-weight: 600; }
.sidebar-foot { margin-top: auto; background: #ffe9b8; border-radius: 12px; padding: 12px 14px; }
.foot-label { font-size: 12px; color: #8a6116; }
.foot-value { font-size: 22px; font-weight: 700; color: #5f4306; }

/* ---- 主区 ---- */
.main { flex: 1; min-width: 0; padding: 22px 26px; display: flex; flex-direction: column; gap: 18px; }
.topbar { display: flex; align-items: center; justify-content: space-between; }
.greet { font-size: 18px; font-weight: 700; }
.date { font-size: 13px; color: #999; margin-top: 2px; }
.actions { display: flex; gap: 8px; }
button { font-size: 13px; padding: 8px 14px; border: 1px solid #e2ddd2; background: #fff; border-radius: 10px; cursor: pointer; }
button:hover { background: #f7f5ef; }

/* ---- 黄色大指标卡（参考截图「今日任务进度」）---- */
.hero-card {
  background: linear-gradient(135deg, #ffe8a6, #ffdf8e);
  border-radius: 16px; padding: 18px 22px;
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  box-shadow: 0 2px 8px rgba(200, 160, 40, .12);
}
.hero-title { font-size: 15px; font-weight: 700; color: #5f4306; margin-bottom: 12px; }
.hero-nums { display: flex; gap: 34px; }
.hn-value { font-size: 30px; font-weight: 700; color: #2b2b2b; font-variant-numeric: tabular-nums; }
.hn-label { font-size: 12.5px; color: #8a6116; margin-top: 2px; }
.hn-overdue { color: #c0392b; }
.hero-right { text-align: right; }
.hero-date { font-size: 13px; color: #8a6116; font-weight: 600; }
.hero-tip { font-size: 12.5px; color: #8a6116; margin-top: 8px; max-width: 220px; }

/* ---- 区块 ---- */
.block { background: #fff; border: 1px solid #eee9df; border-radius: 16px; padding: 18px; }
.block-title { font-size: 15px; font-weight: 700; margin-bottom: 14px; }
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }

/* ---- 项目卡片墙 ---- */
.project-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.pcard { border-radius: 14px; padding: 14px; transition: transform .12s, box-shadow .12s; }
.pcard:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.pcard-head { display: flex; justify-content: space-between; align-items: center; }
.pcard-name { font-size: 14px; font-weight: 700; }
.pcard-tag { font-size: 12px; }
.pcard-sub { font-size: 12px; margin: 8px 0; }
.bar { height: 6px; background: rgba(255, 255, 255, 0.65); border-radius: 4px; overflow: hidden; }
.bar-fill { height: 6px; border-radius: 4px; }
.pcard-rate { font-size: 12px; margin-top: 5px; }

/* ---- 今日待办 ---- */
.today-list { display: flex; flex-direction: column; gap: 8px; }
.titem { display: flex; align-items: center; gap: 10px; background: #fbfaf6; border: 1px solid #eee9df; border-radius: 10px; padding: 10px 12px; }
.dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.ttext { font-size: 13.5px; flex: 1; }
.due { font-size: 12px; color: #aaa; }
.due-over { font-size: 12px; color: #c0392b; font-weight: 600; }

/* ---- 迷你看板 ---- */
.mini-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.mini-col { border-radius: 12px; padding: 12px; text-align: center; }
.mini-col.todo { background: #ffe9b8; } .mini-col.doing { background: #dbeafd; } .mini-col.done { background: #dff3e8; }
.mini-head { font-size: 13px; font-weight: 600; color: #555; }
.mini-count { font-size: 26px; font-weight: 700; margin-top: 4px; color: #2b2b2b; }

/* ---- 看板页 ---- */
.board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.col { background: #faf8f3; border: 1px solid #eee9df; border-radius: 14px; padding: 12px; min-height: 200px; }
.col-head { font-size: 14px; font-weight: 700; margin-bottom: 12px; display: flex; justify-content: space-between; }
.col-count { background: #fff; border: 1px solid #e2ddd2; border-radius: 8px; padding: 1px 9px; font-size: 12px; }
.col-body { display: flex; flex-direction: column; gap: 8px; min-height: 60px; }
.task { display: flex; align-items: center; gap: 8px; background: #fff; border: 1px solid #e8e3d8; border-radius: 10px; padding: 10px; cursor: grab; }
.task:active { cursor: grabbing; }
.t-title { font-size: 13px; flex: 1; }
.t-due { font-size: 11px; color: #aaa; }
.col.drag-over { outline: 2px dashed #1f8a5d; }

/* ---- 文档资源页 ---- */
.docs-section { margin-bottom: 6px; }
.doc-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.doc-card {
  display: flex; align-items: center; gap: 12px;
  border-radius: 14px; padding: 14px; text-decoration: none; color: inherit;
  transition: transform .12s, box-shadow .12s;
}
.doc-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.doc-icon { font-size: 26px; }
.doc-name { font-size: 14px; font-weight: 600; }
.doc-url { font-size: 12px; color: #999; margin-top: 3px; word-break: break-all; }
.doc-del { margin-left: auto; border: none; background: rgba(255,255,255,.6); border-radius: 8px; padding: 4px 8px; font-size: 12px; color: #a05; cursor: pointer; flex-shrink: 0; }
.doc-del:hover { background: #fff; }
.doc-form { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.doc-form input, .doc-form select {
  font-size: 13px; padding: 8px 10px; border: 1px solid #e2ddd2; border-radius: 10px; background: #fff;
}
.doc-form input[name="name"] { flex: 1; min-width: 140px; }
.doc-form input[name="url"] { flex: 2; min-width: 220px; }
.doc-empty { color: #aaa; font-size: 13px; padding: 14px 0; }

/* ---- 通用表单 / 标签 ---- */
.form-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.form-row input, .form-row select, .form-row textarea {
  font-size: 13px; padding: 8px 10px; border: 1px solid #e2ddd2; border-radius: 10px; background: #fff; font-family: inherit;
}
.form-row input[type="text"], .form-row input[name="name"], .form-row input[name="ticket"], .form-row input[name="url"], .form-row input[name="channel"] { flex: 1; min-width: 140px; }
.form-row textarea { flex: 1; min-width: 220px; min-height: 38px; resize: vertical; }
.tag { font-size: 11px; padding: 2px 8px; border-radius: 8px; background: #eef0f3; color: #666; }
.tag-high { background: #ffe1df; color: #c0392b; }
.tag-mid { background: #fff3d6; color: #9a6b00; }
.tag-low { background: #e6f5ec; color: #1f8a5d; }

/* ---- 概览小卡（驾驶舱补充）---- */
.sum-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.sum-card { border-radius: 14px; padding: 14px 16px; display: flex; align-items: center; gap: 12px; }
.sum-card.inv { background: #eaf3ff; }
.sum-card.price { background: #fff1e0; }
.sum-ico { font-size: 26px; }
.sum-meta { flex: 1; }
.sum-num { font-size: 20px; font-weight: 700; }
.sum-sub { font-size: 12px; color: #888; margin-top: 2px; }
.sum-link { font-size: 12.5px; color: #1f8a5d; text-decoration: none; font-weight: 600; }

/* ---- 项目记事本 ---- */
.notes-add { display: flex; gap: 8px; margin-bottom: 14px; }
.notes-add textarea { flex: 1; min-height: 42px; padding: 9px 11px; border: 1px solid #e2ddd2; border-radius: 10px; font-family: inherit; font-size: 13px; resize: vertical; }
.note-item { display: flex; align-items: flex-start; gap: 10px; background: #fbfaf6; border: 1px solid #eee9df; border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; }
.note-check { margin-top: 3px; width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; }
.note-body { flex: 1; font-size: 13.5px; }
.note-date { font-size: 11px; color: #aaa; margin-top: 3px; }
.note-done .note-body { text-decoration: line-through; color: #aaa; }
.note-del { border: none; background: transparent; color: #bbb; cursor: pointer; font-size: 13px; padding: 0 4px; }
.note-del:hover { color: #c0392b; }

/* ---- 票价记录 ---- */
.price-current { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }
.pc-chip { background: linear-gradient(135deg,#fff1e0,#ffe2bf); border-radius: 12px; padding: 10px 14px; min-width: 150px; }
.pc-name { font-size: 13px; font-weight: 700; }
.pc-price { font-size: 22px; font-weight: 700; color: #b4610a; font-variant-numeric: tabular-nums; }
.pc-meta { font-size: 11px; color: #9a6b00; margin-top: 2px; }
.ptable { width: 100%; border-collapse: collapse; font-size: 13px; }
.ptable th { text-align: left; color: #999; font-weight: 600; padding: 8px 10px; border-bottom: 1px solid #eee9df; }
.ptable td { padding: 9px 10px; border-bottom: 1px solid #f4f1ea; }
.ptable tr:hover td { background: #fbfaf6; }
.price-val { font-weight: 700; color: #b4610a; font-variant-numeric: tabular-nums; }
.mini-del { border: none; background: transparent; color: #bbb; cursor: pointer; font-size: 13px; }
.mini-del:hover { color: #c0392b; }

/* ---- 进货清单 ---- */
.inv-list { display: flex; flex-direction: column; gap: 8px; }
.inv-item { display: flex; align-items: center; gap: 10px; background: #fbfaf6; border: 1px solid #eee9df; border-radius: 10px; padding: 10px 12px; }
.inv-check { width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; }
.inv-name { flex: 1; font-size: 13.5px; }
.inv-qty { font-size: 12px; color: #666; }
.inv-bought .inv-name { text-decoration: line-through; color: #aaa; }
.inv-bought .inv-qty { color: #ccc; }

/* ---- 快捷打开 ---- */
.launcher-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.lcard { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid #eee9df; border-radius: 14px; padding: 14px; transition: transform .12s, box-shadow .12s; }
.lcard:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.lcard-ico { font-size: 26px; }
.lcard-name { font-size: 14px; font-weight: 600; flex: 1; }
.lcard-url { font-size: 12px; color: #999; margin-top: 3px; word-break: break-all; }
.lcard-actions { display: flex; gap: 6px; flex-shrink: 0; }
.lbtn { border: 1px solid #e2ddd2; background: #fff; border-radius: 8px; padding: 4px 9px; font-size: 12px; cursor: pointer; }
.lbtn:hover { background: #f7f5ef; }
.lbtn-open { background: #e6f5ec; color: #1f8a5d; border-color: #cfe9d8; }
