:root {
  --bg: #eef1f7;
  --card: #ffffff;
  --ink: #1f2933;
  --ink-dim: #7b8794;
  --line: #e4e9f1;
  --brand: #4f6ef7;
  --brand-dark: #3b55d6;
  --brand-soft: #eef1ff;
  --today: #4f6ef7;
  --ok: #18a06b;
  --doing: #e5862f;
  --todo: #7b8794;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg);
  color: var(--ink);
}
.page { max-width: 1500px; margin: 0 auto; padding: 18px; }
.top {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  flex-wrap: wrap; background: var(--card); border: 1px solid var(--line);
  border-radius: 16px; padding: 14px 18px;
}
.brand { font-size: 18px; font-weight: 700; }
.controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 1; justify-content: flex-end; }
.title-wrap { display: inline-flex; align-items: baseline; gap: 8px; margin: 0 8px; min-width: 220px; justify-content: flex-end; }
#view-title { font-size: 20px; font-weight: 700; }
.view-sub { color: var(--ink-dim); font-size: 13px; }
.btn {
  border: 1px solid var(--line); background: #fff; color: var(--ink);
  border-radius: 10px; padding: 8px 12px; font-size: 14px; cursor: pointer; transition: all .15s;
}
.btn:hover { background: var(--brand-soft); border-color: var(--brand); }
.btn.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn.primary:hover { background: var(--brand-dark); }
.btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.viewtoggle { display: inline-flex; gap: 6px; }
.colleagues {
  display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin: 14px 2px;
  position: sticky; bottom: 0; background: var(--card); border-top: 1px solid var(--line);
  padding: 10px 4px; border-radius: 12px; z-index: 6;
}
.chip {
  border: 1px solid var(--line); background: var(--card); color: var(--ink);
  border-radius: 999px; padding: 6px 14px; font-size: 13px; cursor: pointer; transition: all .15s;
}
.chip.active { border-color: var(--brand); background: var(--brand-soft); font-weight: 600; }
.chip[style*="--chip"] { border-left: 4px solid var(--chip); }

.main { background: var(--card); border: 1px solid var(--line); border-radius: 16px; overflow: hidden; padding: 12px; }

/* WEEK VIEW */
.week { display: grid; grid-template-columns: repeat(7, 1fr); gap: 1px; background: var(--line); }
.wcol { background: var(--card); min-height: 240px; display: flex; flex-direction: column; }
.wcol.today { background: var(--brand-soft); box-shadow: inset 0 0 0 2px var(--brand); }
.whead { padding: 10px 8px; border-bottom: 1px solid var(--line); }
.wd { font-weight: 700; font-size: 14px; }
.wdate { color: var(--ink-dim); font-size: 13px; margin-left: 4px; display: block; }
.wlunar { color: var(--ink-dim); font-size: 12px; display: block; }
.term { display: inline-block; margin-top: 4px; font-size: 11px; color: var(--brand-dark); background: var(--brand-soft); padding: 1px 6px; border-radius: 6px; }
.wbody { flex: 1; padding: 6px; display: flex; flex-direction: column; gap: 6px; }
.empty { flex: 1; }

.task {
  border: 1px solid var(--line); border-left: 3px solid var(--brand);
  border-radius: 8px; padding: 8px; cursor: pointer; background: #fff; transition: box-shadow .15s;
}
.task:hover { box-shadow: 0 2px 8px rgba(31,41,51,.08); }
.task-main { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.task-title { font-size: 14px; font-weight: 600; }
.task-time { font-size: 12px; color: var(--ink-dim); }
.task-meta { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.task-title { font-size: 14px; font-weight: 600; text-decoration: none; color: var(--ink); }
a.task-title { color: var(--brand); }
a.task-title:hover { text-decoration: underline; }
.ext { color: var(--brand-dark); font-size: 12px; margin-left: 2px; }
.task-time { font-size: 12px; color: var(--ink-dim); }
.assignee { font-size: 11px; border-radius: 6px; padding: 1px 6px; }
.src { font-size: 11px; color: var(--brand-dark); text-decoration: none; background: var(--brand-soft); padding: 1px 6px; border-radius: 6px; white-space: nowrap; }
.src:hover { text-decoration: underline; }
.status-toggle { font-size: 11px; padding: 2px 7px; border-radius: 6px; cursor: pointer; user-select: none; }
.status-toggle.s-done { background: #e5f6ee; color: var(--ok); }
.status-toggle.s-doing { background: #fdf1e3; color: var(--doing); }
.status-toggle.s-todo { background: #eef1f5; color: var(--todo); }
.reassign { font-size: 11px; border: 1px solid var(--line); border-radius: 6px; padding: 2px 5px; color: var(--ink-dim); background: #fff; }

/* MONTH VIEW */
.month { display: block; }
.mweek { display: grid; grid-template-columns: repeat(7,1fr); gap: 1px; background: var(--line); }
.mw { text-align: center; padding: 8px 0; font-weight: 600; font-size: 13px; color: var(--ink-dim); background: var(--card); }
.mgrid { display: grid; grid-template-columns: repeat(7,1fr); gap: 1px; background: var(--line); grid-auto-rows: 96px; }
.mcell { background: var(--card); padding: 6px; cursor: pointer; position: relative; overflow: hidden; }
.mcell.dim { background: #f8fafc; color: var(--ink-dim); }
.mcell.today { background: var(--brand-soft); box-shadow: inset 0 0 0 2px var(--brand); }
.mnum { font-size: 17px; font-weight: 700; }
.mlunar { font-size: 11px; color: var(--ink-dim); margin-top: 2px; }
.mcell.today .mlunar { color: var(--brand-dark); }
.mcells { margin-top: 4px; display: flex; flex-direction: column; gap: 2px; }
.mtask { font-size: 11px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid var(--c); padding-left: 4px; }

.statusbar { display: flex; gap: 10px; align-items: center; margin-top: 14px; }
.mode-badge { font-size: 12px; color: var(--ink-dim); background: var(--card); border: 1px solid var(--line); padding: 5px 10px; border-radius: 8px; }
.warn { font-size: 12px; color: #b6791f; background: #fff7e6; border: 1px solid #f4d9a6; padding: 5px 10px; border-radius: 8px; }

@media (max-width: 720px) {
  .page { padding: 10px; }
  .top { flex-direction: column; align-items: stretch; gap: 6px; padding: 12px; }
  .brand { font-size: 16px; font-weight: 800; text-align: center; color: var(--brand); }
  .controls { justify-content: center; width: 100%; gap: 6px; }
  /* 日期：大标题居中 */
  .title-wrap { min-width: 0; order: -1; width: 100%; justify-content: center; gap: 8px; margin: 2px 0 6px; }
  #view-title { font-size: 24px; font-weight: 800; }
  #view-sub { font-size: 12px; color: var(--brand-dark); }
  /* 导航行：‹ 今天 › 📅 */
  #prevBtn, #todayBtn, #nextBtn, #pickDateBtn { font-size: 13px; padding: 7px 10px; min-height: 32px; border-radius: 8px; }
  #todayBtn { min-width: 58px; font-weight: 600; }
  /* 视图切换：分段式 */
  .viewtoggle { order: 3; width: 100%; display: flex; gap: 0; border: 1px solid var(--line); border-radius: 999px; overflow: hidden; background: var(--card); }
  .viewtoggle .btn { flex: 1; text-align: center; font-size: 14px; padding: 8px 0; min-height: 34px; border: 0; border-radius: 0; background: transparent; color: var(--ink-dim); }
  .viewtoggle .btn.primary { background: var(--brand); color: #fff; font-weight: 600; }
  /* 操作行：两个并排 */
  #addBtn, #quickAddBtn { order: 4; flex: 1 1 auto; min-width: 0; font-size: 14px; }
  /* 周历在手机上左右滑动查看 */
  .week { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; gap: 6px; background: transparent; padding: 4px; }
  .wcol { flex: 0 0 128px; min-width: 128px; min-height: 200px; border: 1px solid var(--line); border-radius: 10px; }
  .wbody { padding: 6px; }
  .whead { padding: 8px 6px; }
  .mgrid { grid-auto-rows: 54px; }
  /* 触控目标加大 */
  .task { padding: 10px; }
  .assignee, .status-toggle, .src, .reassign { font-size: 12px; padding: 4px 8px; }
  .chip { padding: 8px 14px; font-size: 13px; }
  .btn { padding: 10px 12px; min-height: 40px; }
  .colleagues { gap: 6px; }
}

/* 更大触控区域与滚动体验 */
.task-title, .status-toggle { -webkit-tap-highlight-color: transparent; }

/* 已完成：折叠成小标记 */
.task.done-task { border-left-color: var(--ok); background: #f0faf4; cursor: default; padding: 5px 8px; }
.done-badge { font-size: 12px; color: var(--ok); font-weight: 700; }

/* 任务卡片：更紧凑、分行显示 */
.task { padding: 6px 8px; }
.task-status { font-size: 11px; padding: 1px 7px; border-radius: 6px; cursor: pointer; user-select: none; display: inline-block; margin-bottom: 3px; }
.task-status.s-done { background: #e5f6ee; color: var(--ok); }
.task-status.s-doing { background: #fdf1e3; color: var(--doing); }
.task-status.s-todo { background: #eef1f5; color: var(--todo); }
.task-main { display: block; margin: 2px 0; }
.task-title { font-size: 13px; font-weight: 600; text-decoration: none; color: var(--ink); }
a.task-title { color: var(--brand); }
a.task-title:hover { text-decoration: underline; }
.task-people { font-size: 11px; color: var(--ink-dim); margin: 2px 0; }
.task-start { font-size: 11px; color: var(--ink-dim); margin: 1px 0; }
.src { font-size: 11px; color: var(--brand-dark); text-decoration: none; background: var(--brand-soft); padding: 1px 6px; border-radius: 6px; }
.done-task { padding: 6px 8px; }
.done-head { font-size: 12px; color: var(--ok); font-weight: 700; }
.done-title { font-size: 13px; font-weight: 600; color: var(--ink); margin: 1px 0; }
.done-dates { font-size: 11px; color: var(--ink-dim); }

/* 当日展开视图 */
.dayview { max-width: 760px; margin: 0 auto; }
.dvhead { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.dvtitle { font-size: 18px; font-weight: 700; }
.dvcount { color: var(--ink-dim); font-size: 13px; }
.dvbody .task { margin-bottom: 8px; }

/* 新建任务弹窗 */
.modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.35); display: flex; align-items: center; justify-content: center; z-index: 999; }
.modal { background: #fff; border-radius: 14px; width: min(420px, 92vw); padding: 18px; box-shadow: 0 10px 40px rgba(0,0,0,.2); }
.modal-head { font-size: 17px; font-weight: 700; margin-bottom: 14px; }
.modal-body label { display: block; font-size: 13px; color: var(--ink-dim); margin: 10px 0 4px; }
.modal-body input, .modal-body select { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; font-size: 14px; font-family: inherit; box-sizing: border-box; }
.modal-foot { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }

.whoami-label { font-size: 13px; color: var(--ink-dim); margin-right: 6px; }
.whoami { border: 1px solid var(--line); border-radius: 10px; padding: 7px 12px; font-size: 13px; color: var(--ink); background: #fff; cursor: pointer; }

/* 竖排周历（每天一行，更宽敞） */
.weeksV { display: block; }
.wrow { border: 1px solid var(--line); border-left: 4px solid var(--line); border-radius: 10px; margin-bottom: 8px; padding: 8px 10px; }
.wrow.today { border-left-color: var(--brand); background: var(--brand-soft); box-shadow: inset 0 0 0 1px var(--brand); }
.wrow-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.wrow-head .wd { font-weight: 700; font-size: 14px; }
.wrow-head .wdate { color: var(--ink-dim); font-size: 13px; }
.wrow-head .wlunar { color: var(--ink-dim); font-size: 12px; }
.wrow-body { display: flex; flex-wrap: wrap; gap: 8px; }
.wrow-body .task { flex: 1 1 200px; max-width: 340px; }

/* 完成状态选项卡 */
.completion { display: flex; align-items: center; gap: 8px; margin: 8px 2px; flex-wrap: wrap; }
.comp-label { font-size: 13px; color: var(--ink-dim); }
.ctab { border: 1px solid var(--line); background: var(--card); color: var(--ink); border-radius: 999px; padding: 6px 14px; font-size: 13px; cursor: pointer; transition: all .15s; }
.ctab:hover { background: var(--brand-soft); border-color: var(--brand); }
.ctab.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-dark); font-weight: 600; }

.task-actions { display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
.task-actions .del { cursor: pointer; }
.src.noedit { opacity: .6; }
.task-menu { position: fixed; z-index: 9999; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 8px 30px rgba(0,0,0,.15); padding: 4px; min-width: 150px; }
.tm-item { display: block; padding: 8px 12px; font-size: 13px; color: var(--ink); text-decoration: none; border-radius: 6px; cursor: pointer; }
.tm-item:hover { background: var(--brand-soft); }
.tm-del { color: #d64f7a; }

/* 当日分两侧 */
.dvsplit { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.dvcol { border: 1px solid var(--line); border-radius: 12px; padding: 10px; }
.dvcol-h { font-weight: 700; font-size: 14px; margin-bottom: 8px; }
.dvbody .task, .dvcol .task { margin-bottom: 8px; }
/* 卡片三行 */
.task { display: block; }
.task-line1 { display: flex; align-items: center; gap: 6px; }
.pill { font-size: 11px; padding: 2px 7px; border-radius: 6px; white-space: nowrap; }
.status-toggle.pill { cursor: pointer; }
.prio { font-weight: 600; }
.task-line2 { font-size: 14px; font-weight: 600; margin: 4px 0 2px; }
.task-line3 { font-size: 11px; color: var(--ink-dim); }
@media (max-width: 720px){ .dvsplit { grid-template-columns: 1fr; } }

/* 日期选择器 */
.title-wrap { cursor: pointer; }
#pickDateBtn { cursor: pointer; }
.date-picker .mgrid { grid-auto-rows: 42px; }
.dp-grid.dpw { background: var(--line); }
.dp-cellwrap { }
.dpcell { background: var(--card); padding: 4px 2px; cursor: pointer; text-align: center; position: relative; overflow: hidden; }
.dpcell.dim { background: #f8fafc; color: var(--ink-dim); }
.dpcell.today { background: var(--brand-soft); }
.dpcell.sel { box-shadow: inset 0 0 0 2px var(--brand); background: var(--brand-soft); }
.dpcell .mnum { font-size: 14px; }
.dpcell .mlunar { font-size: 10px; }
.dp-head { display: flex; align-items: center; justify-content: space-between; margin: 6px 0 12px; }
.dp-head .dp-title { font-weight: 700; font-size: 16px; }
.dp-grid { margin-bottom: 2px; }
.date-picker .mweek { grid-auto-rows: auto; }
.dpw { text-align: center; font-size: 11px; color: var(--ink-dim); padding: 5px 0; background: var(--card); }
.dpcell { min-height: 40px; }

/* 新建弹窗 · 多选负责人 / 全公司 */
.ct-assignees { margin: 4px 0 6px; }
.ct-all { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; margin: 8px 0 6px; color: var(--brand-dark); cursor: pointer; }
.ct-memberlist { display: flex; flex-wrap: wrap; gap: 6px 14px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; max-height: 132px; overflow: auto; }
.ct-pick-wrap { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; cursor: pointer; white-space: nowrap; }
.modal-body .ct-all input, .modal-body .ct-pick-wrap input { width: auto; margin: 0; flex: none; }

/* 企业微信登录 / 身份锁定 */
.login-wecom { display: block; text-align: center; padding: 11px 14px; font-size: 15px; margin: 6px 0 2px; text-decoration: none; }
.login-sep { text-align: center; color: var(--ink-dim); font-size: 12px; margin: 10px 0 8px; }
.whoami-locked { border: 1px solid var(--line); border-radius: 10px; padding: 7px 12px; font-size: 13px; color: var(--ink); background: var(--brand-soft); }

/* 粘贴生成待办 · 文本域 */
.modal-body textarea { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; font-size: 14px; font-family: inherit; box-sizing: border-box; resize: vertical; min-height: 84px; }

/* 编辑任务弹窗 / 谨慎入口 */
.tm-dim { color: var(--ink-dim); opacity: .72; font-size: 12px; }

/* ---- 负责人下拉多选（人名收进下拉，不平铺） ---- */
.dd { position: relative; margin: 4px 0 6px; }
.dd-btn { width: 100%; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 8px; background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; font-size: 14px; color: var(--ink); cursor: pointer; text-align: left; }
.dd-btn:hover { border-color: var(--brand); }
.dd-btn .dd-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dd-caret { font-size: 12px; color: var(--ink-dim); flex: none; }
.dd-panel { display: none; position: absolute; z-index: 80; left: 0; right: 0; top: calc(100% + 4px); max-height: 230px; overflow: auto; background: #fff; border: 1px solid var(--line); border-radius: 10px; box-shadow: 0 12px 28px rgba(20,30,50,.16); padding: 6px; }
.dd-panel.open { display: block; }
.dd-panel .ct-all { display: flex; align-items: center; gap: 6px; margin: 2px 0 6px; padding: 8px 10px; border-radius: 6px; border-bottom: 1px solid var(--line); color: var(--brand-dark); font-weight: 600; cursor: pointer; }
.dd-panel .ct-pick-wrap { display: flex; align-items: center; gap: 6px; padding: 8px 10px; border-radius: 6px; font-size: 14px; cursor: pointer; }
.dd-panel .ct-pick-wrap:hover { background: var(--brand-soft); }
.dd-panel input { width: auto; margin: 0; flex: none; }

/* ---- 登录页身份下拉 ---- */
.login-select { width: 100%; box-sizing: border-box; padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px; font-size: 15px; color: var(--ink); background: #fff; margin-bottom: 10px; }
.login-go { width: 100%; }

/* ---- 桌面端（含企业微信电脑端）：放宽日历容器，避免像平板/手机那样局促 ---- */
@media (min-width: 721px) {
  .dayview { max-width: 1180px; }
  .dvsplit { gap: 16px; }
  .dvcol { min-height: 220px; }
  .task { padding: 10px 12px; }
  .task-line2 { font-size: 15px; }
  .task-line3 { font-size: 12px; }
  .main { padding: 16px 18px; }
  .page { padding: 22px 26px; }
}
@media (min-width: 1280px) {
  .dayview { max-width: 1320px; }
}

/* ---- 登录页卡片（之前缺失，导致登录页没有样式） ---- */
.login-wrap { display: flex; align-items: center; justify-content: center; padding: 30px 16px; box-sizing: border-box; }
.login-card { width: 100%; max-width: 380px; background: var(--card); border: 1px solid var(--line); border-radius: 18px; padding: 26px 22px 22px; box-shadow: 0 14px 38px rgba(20,30,50,.10); }
.login-title { font-size: 18px; font-weight: 800; color: var(--ink); margin-bottom: 16px; text-align: center; }
.login-opts { margin-top: 2px; }
.login-hint { margin-top: 14px; font-size: 12px; color: var(--ink-dim); text-align: center; line-height: 1.6; }

/* ---- 企业微信头像 ---- */
.whoami-avatar { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; border: 1px solid var(--line); background: var(--brand-soft); vertical-align: middle; flex: none; }
.whoami-locked { display: inline-flex; align-items: center; gap: 8px; }

/* ---- 任务卡新版式（方案B：标题在上，状态/执行/时间在下） ---- */
.task-line2 { font-size: 16.5px; font-weight: 700; line-height: 1.45; margin: 0 0 2px; }
.task-line3 { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; font-size: 12px; color: var(--ink-dim); margin-top: 7px; }
.task-who { font-size: 12px; color: var(--ink-dim); }
@media (min-width: 721px) {
  .task-line2 { font-size: 17px; }
  .task { padding: 11px 13px; }
}
@media (max-width: 720px) {
  .task-line2 { font-size: 15.5px; }
}

/* ---- 任务卡附件图片 ---- */
.task-imgs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 9px; }
.task-img-link { display: block; line-height: 0; border-radius: 10px; overflow: hidden; border: 1px solid var(--line); }
.task-img { width: 80px; height: 80px; object-fit: cover; display: block; background: var(--brand-soft); }
.task-img-link:hover .task-img { opacity: .9; }
@media (min-width: 721px) {
  .task-img { width: 92px; height: 92px; }
}

/* ---- 图片放任务卡右侧 ---- */
.task.task-has-img { display: flex; align-items: center; gap: 12px; }
.task.task-has-img .task-body { flex: 1; min-width: 0; }
.task.task-has-img .task-imgs { flex: none; margin-top: 0; }

/* ---- 新建任务的图片粘贴区 ---- */
.paste-zone { border: 1.5px dashed var(--line); border-radius: 10px; padding: 12px 10px; text-align: center; cursor: pointer; background: #fafbfe; transition: all .15s; }
.paste-zone:hover, .paste-zone.dragover { border-color: var(--brand); background: var(--brand-soft); }
.paste-hint { font-size: 12.5px; color: var(--ink-dim); }
.paste-thumbs { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; justify-content: center; }
.paste-thumb { position: relative; width: 68px; height: 68px; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); }
.paste-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.paste-thumb .rm { position: absolute; top: 0; right: 0; background: rgba(0,0,0,.55); color: #fff; border: 0; width: 19px; height: 19px; line-height: 19px; font-size: 12px; cursor: pointer; border-radius: 0 0 0 7px; padding: 0; }

/* ---- 日视图：我收到的 / 我发起的 标签切换（手机端不再上下堆叠） ---- */
.dv-tabs { display: flex; gap: 8px; margin: 2px 0 12px; }
.dv-tab { flex: 1; border: 1px solid var(--line); background: var(--card); border-radius: 10px; padding: 10px 8px; font-size: 14px; font-weight: 600; color: var(--ink-dim); cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 7px; -webkit-tap-highlight-color: transparent; }
.dv-tab.active { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-dark); }
.dv-num { font-size: 12px; font-weight: 700; background: rgba(79,110,247,.14); color: var(--brand-dark); border-radius: 999px; padding: 1px 8px; min-width: 22px; text-align: center; }
.dvsplit.dv-one { grid-template-columns: 1fr; }

/* ---- 登录页错误提示（免登失败原因） ---- */
.login-err { background: #fff6f6; border: 1px solid #f6d5d5; color: #c0392b; font-size: 12.5px; line-height: 1.55; border-radius: 10px; padding: 10px 12px; margin-bottom: 12px; word-break: break-all; text-align: left; }

/* ---- 日视图响应式：手机端按标签只显示一栏；电脑端左右两栏并排 ---- */
@media (min-width: 721px) {
  .dv-tabs { display: none; }                    /* 电脑端不需要标签 */
  .dvsplit { grid-template-columns: 1fr 1fr; }   /* 左右两栏 */
}
@media (max-width: 720px) {
  .dvsplit { grid-template-columns: 1fr; }
  .dvsplit.dv-tab-toMe .dvcol-mine { display: none; }
  .dvsplit.dv-tab-mine .dvcol-toMe { display: none; }
}

/* ---- 任务卡上的编辑按钮（手机端没有右键，用这个） ---- */
.task-edit { border: 0; background: transparent; font-size: 14px; line-height: 1; cursor: pointer; padding: 3px 7px; border-radius: 7px; margin-left: auto; opacity: .55; -webkit-tap-highlight-color: transparent; flex: none; }
.task-edit:hover, .task-edit:active { background: var(--brand-soft); opacity: 1; }

/* ---- 手机端顶部：刷新按钮 ---- */
@media (max-width: 720px) {
  #refreshBtn { order: 4; flex: 0 0 auto; min-width: 48px; font-size: 16px; }
}
