/* ============================================================
   个人工作台 · 主题体系 V2（任务 19）
   三主题：暗夜紫晶(violet 默认) / 暖夜琥珀(amber) / 白昼简洁(light)
   规格源：docs/design-preview/three-schemes-v2.html（s1/s2/s3 逐值对照）
   ============================================================ */

/* ── 方案一 · 暗夜紫晶（默认，:root） ─────────────────────── */
:root{
  --tl-name-w:240px;   /* Timeline 左任务列宽(移动端 media query 覆盖为 110px) */
  --bg:#000000; --bg-elevated:#101018; --card:rgba(139,124,255,.045);
  --border:rgba(255,255,255,.05); --border-strong:rgba(255,255,255,.12);
  --text:#eceefb; --text-dim:#8a90b8; --text-faint:#555b7e;
  --accent:#8b7cff; --accent-2:#a78bfa; --accent-hover:#9d8fff; --accent-focus:#7c6cff;
  /* 橙紫语义（任务 24b）：--ok/--danger=进行中橙 #ef9a5a，--warn=逾期琥珀 #e5ba72，--p-* 紫族 */
  --danger:#ef9a5a; --warn:#e5ba72; --ok:#ef9a5a;
  --danger-bg:rgba(239,154,90,.12); --warn-bg:rgba(232,170,80,.1); --ok-bg:rgba(239,154,90,.1);
  --danger-border:rgba(239,154,90,.2); --warn-border:rgba(232,170,80,.18); --ok-border:rgba(239,154,90,.18);
  --p-main:#8b7cff; --p-light:#b9b2ff; --p-deep:#5e55c9;
  --accent-bg:rgba(139,124,255,.12); --accent-border:rgba(139,124,255,.3);
  --radius:12px; --radius-sm:8px; --radius-lg:18px; --pill:9999px;
  --mono:ui-monospace,'SF Mono',SFMono-Regular,Menlo,monospace;
  --t:160ms ease;
  --grad-a:#7c6cff; --grad-b:#d59dff;
  --glass-blur:blur(20px) saturate(150%);
  --scroll-thumb:rgba(139,124,255,.35);
  --grid-line:rgba(255,255,255,.022);
  --focus-ring:rgba(139,124,255,.16);
  /* 卡片 */
  --card-bg:rgba(139,124,255,.032);
  --card-hairline:rgba(255,255,255,.05);
  --card-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 10px 30px rgba(0,0,0,.38);
  --card-shadow-hover:inset 0 1px 0 rgba(255,255,255,.06),0 16px 40px rgba(0,0,0,.5);
  --card-h3:#a99bff; --cnt-text:#555b7e;
  /* 壳 */
  --topbar-bg:rgba(10,11,18,.8);
  --drawer-bg:rgba(16,16,24,.92);
  --side-bg:rgba(139,124,255,.045);
  --side-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 14px 44px rgba(0,0,0,.5);
  --modal-bg:rgba(19,19,32,.97);
  --board-bg:rgba(16,16,24,.6);
  /* 品牌/导航 */
  --brand:#eceefb; --nav-sec:#4a4f72; --nav:#7d84a8;
  --nav-hover-bg:rgba(255,255,255,.05); --nav-hover:#d5d8ec;
  --nav-on-bg:linear-gradient(120deg,rgba(139,124,255,.17),rgba(167,139,250,.11));
  --nav-on-color:#f0eeff; --nav-on-border:transparent;
  --lg-bg:linear-gradient(135deg,#8b7cff,#a78bfa);
  --grad-deep:linear-gradient(135deg,#4536c9,#7c6cff);
  --grad-mid:linear-gradient(135deg,#7c6cff,#a78bfa);
  --grad-light:linear-gradient(135deg,#a78bfa,#d2c8ff);
  --lg-shadow:0 0 16px rgba(139,124,255,.5),inset 0 1px 0 rgba(255,255,255,.35);
  --cnt-bg:linear-gradient(135deg,#8b7cff,#a78bfa); --cnt-color:#fff;
  --cnt-shadow:0 0 10px rgba(139,124,255,.5);
  /* 顶栏 */
  --crumb:#555b7e; --crumb-strong:#b6bcd8;
  --cmdk-bg:rgba(255,255,255,.04); --cmdk-border:rgba(255,255,255,.08); --cmdk-color:#555b7e;
  --cmdk-hover-border:rgba(139,124,255,.4); --cmdk-hover-color:#c9cde8;
  --cmdk-hover-glow:0 0 14px rgba(139,124,255,.15);
  /* 概览卡（任务 24b） */
  --ov-bg:rgba(139,124,255,.06); --ov-border:rgba(255,255,255,.09);
  --ov-go:#6d739d; /* 概览卡「进入 →」色（对齐 demo home-v6-orange） */
  /* hero / kpi */
  --hero-h1:#eceefb; --hero-sub:#555b7e;
  --em-grad:linear-gradient(100deg,#b9b2ff,#d9c6ff);
  --kpi-bg:rgba(139,124,255,.05); --kpi-border:rgba(255,255,255,.05);
  --kpi-v:#eceefb; --kpi-acc-v:#b9b2ff; --kpi-l:#555b7e;
  /* 事项行 */
  --trow-bg:rgba(139,124,255,.035); --trow-border:rgba(255,255,255,.04);
  --trow-hover-bg:rgba(139,124,255,.08); --trow-hover-border:rgba(139,124,255,.25);
  --trow-hover-shadow:0 4px 16px rgba(80,70,180,.15);
  --chk-border:#555b7e; --trow-tt:#e6e8f6; --trow-done-tt:#555b7e; --trow-meta:#555b7e;
  --done-chk-color:#fff;
  /* 进度 */
  --prog-bg:rgba(255,255,255,.07);
  --prog-fill:linear-gradient(90deg,#8b7cff,#a78bfa);
  --prog-glow:0 0 10px rgba(139,124,255,.55);
  /* 模块 tile */
  --mtile-bg:rgba(139,124,255,.04);
  --mtile-hover-border:rgba(139,124,255,.35); --mtile-hover-shadow:0 8px 24px rgba(80,70,180,.2);
  --mtile-nm:#c9cde6;
  /* 消息 */
  --msg-bg:rgba(139,124,255,.035); --msg-border:rgba(255,255,255,.04);
  --msg-hover-bg:rgba(139,124,255,.07); --msg-hover-border:rgba(139,124,255,.22);
  --msg-ud:#8b7cff; --msg-ud-glow:0 0 9px rgba(139,124,255,.9);
  --msg-src:#555b7e; --msg-mt:#e6e8f6; --msg-mb:#555b7e;
  /* 按钮 */
  --pri-bg:linear-gradient(135deg,#8b7cff,#a78bfa); --pri-color:#fff;
  --pri-shadow:0 2px 16px rgba(139,124,255,.4),inset 0 1px 0 rgba(255,255,255,.28);
  --pri-hover-shadow:0 5px 22px rgba(139,124,255,.55);
  --pri-hover-filter:brightness(1.1);
  --sec-bg:rgba(255,255,255,.05); --sec-border:rgba(255,255,255,.1);
  --sec-color:#c9cde6; --sec-hover-bg:rgba(255,255,255,.09);
  /* 输入 */
  --inp-bg:rgba(255,255,255,.03); --inp-border:rgba(255,255,255,.1); --inp-color:#e6e8f6;
  --inp-focus-border:rgba(139,124,255,.55); --inp-focus-ring:0 0 0 3px rgba(139,124,255,.16);
  /* 图表 */
  --bar-idle:rgba(139,124,255,.28);
  --bar-cur:linear-gradient(180deg,#a78bfa,#8b7cff);
  --bar-cur-glow:0 0 12px rgba(139,124,255,.5);
}

/* ── 方案二 · 暖夜琥珀 ─────────────────────────────────── */
html[data-theme="amber"]{
  --grad-a:#f5a623; --grad-b:#ffd97a;
  --bg:#000000; --bg-elevated:#151309; --card:rgba(245,166,35,.035);
  --border:rgba(255,255,255,.05); --border-strong:rgba(255,255,255,.12);
  --text:#f2ede4; --text-dim:#a89b83; --text-faint:#5f5647;
  --accent:#f5a623; --accent-2:#f7c948; --accent-hover:#f7b840; --accent-focus:#f5a623;
  --danger:#ef9a5a; --warn:#b9a6ff; --ok:#ef9a5a;
  --danger-bg:rgba(239,154,90,.12); --warn-bg:rgba(185,166,255,.1); --ok-bg:rgba(239,154,90,.1);
  --danger-border:rgba(239,154,90,.2); --warn-border:rgba(185,166,255,.28); --ok-border:rgba(239,154,90,.2);
  --p-main:#f5a623; --p-light:#ffd97a; --p-deep:#8a5b04;
  --accent-bg:rgba(245,166,35,.12); --accent-border:rgba(245,166,35,.35);
  --glass-blur:blur(18px) saturate(140%);
  --scroll-thumb:rgba(245,166,35,.35);
  --grid-line:rgba(255,255,255,.04);
  --focus-ring:rgba(245,166,35,.15);
  --card-bg:rgba(245,166,35,.028);
  --card-hairline:rgba(255,255,255,.05);
  --card-shadow:0 10px 30px rgba(0,0,0,.4);
  --card-shadow-hover:0 16px 40px rgba(0,0,0,.5);
  --card-h3:#a89b83; --cnt-text:#5f5647;
  --topbar-bg:rgba(13,12,9,.8);
  --drawer-bg:rgba(21,19,12,.93);
  --side-bg:rgba(245,166,35,.035);
  --side-shadow:0 14px 44px rgba(0,0,0,.5);
  --modal-bg:rgba(26,23,14,.97);
  --board-bg:rgba(21,19,13,.6);
  --brand:#f2ede4; --nav-sec:#5f5647; --nav:#94897a;
  --nav-hover-bg:rgba(255,255,255,.05); --nav-hover:#e8e0d2;
  --nav-on-bg:linear-gradient(120deg,rgba(245,166,35,.16),rgba(247,201,72,.08));
  --nav-on-color:#fff4e2; --nav-on-border:transparent;
  --lg-bg:linear-gradient(135deg,#f5a623,#f7c948);
  --grad-deep:linear-gradient(135deg,#9a6a04,#f5a623);
  --grad-mid:linear-gradient(135deg,#f5a623,#f7c948);
  --grad-light:linear-gradient(135deg,#f7c948,#fbd97d);
  --lg-shadow:0 0 16px rgba(245,166,35,.45),inset 0 1px 0 rgba(255,255,255,.4);
  --cnt-bg:linear-gradient(135deg,#f5a623,#f7c948); --cnt-color:#241a05;
  --cnt-shadow:0 0 10px rgba(245,166,35,.45);
  --crumb:#5f5647; --crumb-strong:#cfc5b2;
  --cmdk-bg:rgba(255,255,255,.04); --cmdk-border:rgba(255,255,255,.08); --cmdk-color:#5f5647;
  --cmdk-hover-border:rgba(245,166,35,.4); --cmdk-hover-color:#e8e0d2;
  --cmdk-hover-glow:0 0 14px rgba(245,166,35,.12);
  --ov-bg:rgba(245,166,35,.05); --ov-border:rgba(255,255,255,.09);
  --ov-go:#8d7e63; /* 概览卡「进入 →」色 */
  --hero-h1:#f2ede4; --hero-sub:#5f5647;
  --em-grad:linear-gradient(100deg,#ffd9a0,#ffe9bd);
  --kpi-bg:rgba(245,166,35,.04); --kpi-border:rgba(255,255,255,.05);
  --kpi-v:#f2ede4; --kpi-acc-v:#ffd9a0; --kpi-l:#6b6152;
  --trow-bg:rgba(255,255,255,.03); --trow-border:rgba(255,255,255,.045);
  --trow-hover-bg:rgba(245,166,35,.07); --trow-hover-border:rgba(245,166,35,.28);
  --trow-hover-shadow:0 4px 16px rgba(120,80,10,.2);
  --chk-border:#6b6152; --trow-tt:#f0eadf; --trow-done-tt:#6b6152; --trow-meta:#6b6152;
  --done-chk-color:#241a05;
  --prog-bg:rgba(255,255,255,.08);
  --prog-fill:linear-gradient(90deg,#f5a623,#f7c948);
  --prog-glow:none;
  --mtile-bg:rgba(245,166,35,.035);
  --mtile-hover-border:rgba(245,166,35,.4); --mtile-hover-shadow:0 8px 24px rgba(120,80,10,.22);
  --mtile-nm:#ded5c2;
  --msg-bg:rgba(255,255,255,.03); --msg-border:rgba(255,255,255,.045);
  --msg-hover-bg:rgba(245,166,35,.06); --msg-hover-border:rgba(245,166,35,.25);
  --msg-ud:#f5a623; --msg-ud-glow:0 0 9px rgba(245,166,35,.85);
  --msg-src:#6b6152; --msg-mt:#f0eadf; --msg-mb:#6b6152;
  --pri-bg:linear-gradient(135deg,#f5a623,#f7c948); --pri-color:#241a05;
  --pri-shadow:0 2px 16px rgba(245,166,35,.35),inset 0 1px 0 rgba(255,255,255,.4);
  --pri-hover-shadow:0 5px 22px rgba(245,166,35,.5);
  --pri-hover-filter:brightness(1.08);
  --sec-bg:rgba(255,255,255,.05); --sec-border:rgba(255,255,255,.1);
  --sec-color:#ded5c2; --sec-hover-bg:rgba(255,255,255,.09);
  --inp-bg:rgba(255,255,255,.03); --inp-border:rgba(255,255,255,.1); --inp-color:#f0eadf;
  --inp-focus-border:rgba(245,166,35,.55); --inp-focus-ring:0 0 0 3px rgba(245,166,35,.15);
  --bar-idle:rgba(245,166,35,.25);
  --bar-cur:linear-gradient(180deg,#f7c948,#f5a623);
  --bar-cur-glow:0 0 12px rgba(245,166,35,.45);
}

/* ── 方案三 · 白昼简洁 ─────────────────────────────────── */
html[data-theme="light"]{
  --grad-a:#4f46e5; --grad-b:#8f7bf0;
  --bg:#f3f4f7; --bg-elevated:#ffffff; --card:rgba(255,255,255,.9);
  --border:#e7e8ee; --border-strong:#dcdee6;
  --text:#17181d; --text-dim:#6b6e78; --text-faint:#9a9da6;
  --accent:#4f46e5; --accent-2:#7c6bf0; --accent-hover:#4f46e5; --accent-focus:#4f46e5;
  --danger:#f97316; --warn:#eab308; --ok:#f97316;
  --danger-bg:#ffefe3; --warn-bg:#fdf8e0; --ok-bg:#ffefe3;
  --danger-border:#ffd9b8; --warn-border:#f5e5a8; --ok-border:#ffd9b8;
  --p-main:#4f46e5; --p-light:#7c6bf0; --p-deep:#3730a3;
  --accent-bg:#edeef8; --accent-border:#e0e2f5;
  --glass-blur:blur(16px);
  --scroll-thumb:#c3c6d1;
  --grid-line:transparent;
  --focus-ring:rgba(79,70,229,.12);
  --card-bg:#ffffff;
  --card-hairline:#e9eaf0;
  --card-shadow:0 1px 3px rgba(30,35,60,.05),0 8px 24px rgba(30,35,60,.05);
  --card-shadow-hover:0 2px 6px rgba(30,35,60,.06),0 14px 36px rgba(30,35,60,.09);
  --card-h3:#8a8d98; --cnt-text:#b3b6c0;
  --topbar-bg:rgba(255,255,255,.75);
  --drawer-bg:rgba(255,255,255,.96);
  --side-bg:rgba(255,255,255,.75);
  --side-shadow:0 8px 28px rgba(30,35,60,.07);
  --modal-bg:#ffffff;
  --board-bg:#ffffff;
  --brand:#17181d; --nav-sec:#a3a6b0; --nav:#6b6e78;
  --nav-hover-bg:#f0f1f5; --nav-hover:#17181d;
  --nav-on-bg:#edeef8;
  --nav-on-color:#17181d; --nav-on-border:#e0e2f5;
  --lg-bg:linear-gradient(135deg,#4f46e5,#7c6bf0);
  --grad-deep:linear-gradient(135deg,#3730a3,#4f46e5);
  --grad-mid:linear-gradient(135deg,#4f46e5,#7c6bf0);
  --grad-light:linear-gradient(135deg,#7c6bf0,#9d97ff);
  --lg-shadow:0 2px 10px rgba(79,70,229,.3),inset 0 1px 0 rgba(255,255,255,.35);
  --cnt-bg:linear-gradient(135deg,#4f46e5,#7c6bf0); --cnt-color:#fff;
  --cnt-shadow:none;
  --crumb:#9a9da6; --crumb-strong:#4a4d57;
  --cmdk-bg:#ffffff; --cmdk-border:#e0e1e8; --cmdk-color:#9a9da6;
  --cmdk-hover-border:#c9cbf5; --cmdk-hover-color:#4a4d57;
  --cmdk-hover-glow:none;
  --ov-bg:#ffffff; --ov-border:#e9eaf0;
  --ov-go:#9a9da6; /* 概览卡「进入 →」色 */
  --hero-h1:#17181d; --hero-sub:#9a9da6;
  --em-grad:linear-gradient(100deg,#4f46e5,#7c6bf0);
  --kpi-bg:#ffffff; --kpi-border:#e9eaf0;
  --kpi-v:#1d1e24; --kpi-acc-v:#4f46e5; --kpi-l:#9a9da6;
  --trow-bg:#fafafc; --trow-border:#eceef3;
  --trow-hover-bg:#f2f2fa; --trow-hover-border:#d8daf0;
  --trow-hover-shadow:0 2px 8px rgba(79,70,229,.06);
  --chk-border:#c3c6d1; --trow-tt:#1d1e24; --trow-done-tt:#b3b6c0; --trow-meta:#9a9da6;
  --done-chk-color:#fff;
  --prog-bg:#eceef3;
  --prog-fill:linear-gradient(90deg,#4f46e5,#7c6bf0);
  --prog-glow:none;
  --mtile-bg:#ffffff;
  --mtile-hover-border:#c9cbf5; --mtile-hover-shadow:0 8px 24px rgba(79,70,229,.1);
  --mtile-nm:#4a4d57;
  --msg-bg:#fafafc; --msg-border:#eceef3;
  --msg-hover-bg:#f2f2fa; --msg-hover-border:#d8daf0;
  --msg-ud:#4f46e5; --msg-ud-glow:none;
  --msg-src:#9a9da6; --msg-mt:#1d1e24; --msg-mb:#9a9da6;
  --pri-bg:linear-gradient(135deg,#4f46e5,#7c6bf0); --pri-color:#fff;
  --pri-shadow:0 2px 10px rgba(79,70,229,.3),inset 0 1px 0 rgba(255,255,255,.25);
  --pri-hover-shadow:0 4px 16px rgba(79,70,229,.4);
  --pri-hover-filter:brightness(1.06);
  --sec-bg:#ffffff; --sec-border:#e0e1e8;
  --sec-color:#4a4d57; --sec-hover-bg:#f4f5f8;
  --inp-bg:#ffffff; --inp-border:#e0e1e8; --inp-color:#1d1e24;
  --inp-focus-border:#4f46e5; --inp-focus-ring:0 0 0 3px rgba(79,70,229,.12);
  --bar-idle:#dcdef5;
  --bar-cur:linear-gradient(180deg,#7c6bf0,#4f46e5);
  --bar-cur-glow:0 2px 10px rgba(79,70,229,.3);
}

/* ============================================================
   基础与全局
   ============================================================ */
html{color-scheme:dark}
html[data-theme="light"]{color-scheme:light}
*{box-sizing:border-box;margin:0;padding:0}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);
  font-family:-apple-system,'PingFang SC','Inter',system-ui,sans-serif;font-size:14px;
  -webkit-font-smoothing:antialiased}
body{transition:background var(--t),color var(--t)}
button{font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .16s ease}
.mono{font-family:var(--mono)}
svg.i{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}

/* 背景网格（demo .gridbg） */
.gridbg{position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);
  background-size:32px 32px;
  mask-image:radial-gradient(ellipse 85% 75% at 50% 20%,#000 20%,transparent 75%);
  -webkit-mask-image:radial-gradient(ellipse 85% 75% at 50% 20%,#000 20%,transparent 75%)}

/* ============================================================
   壳：顶栏 / 侧栏 / 主区 / 抽屉
   ============================================================ */
.topbar{position:fixed;top:0;left:0;right:0;height:44px;z-index:40;display:flex;align-items:center;justify-content:space-between;
  padding:0 16px 0 84px;background:var(--topbar-bg);border-bottom:1px solid var(--card-hairline);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.crumb{font-size:12px;color:var(--crumb)}
.crumb b{color:var(--crumb-strong);font-weight:550}
.cmdk{margin-left:auto;display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:10px;font-size:11.5px;cursor:pointer;
  transition:all .16s;background:var(--cmdk-bg);border:1px solid var(--cmdk-border);color:var(--cmdk-color)}
.cmdk svg.i{width:13px;height:13px}
.cmdk:hover{border-color:var(--cmdk-hover-border);color:var(--cmdk-hover-color);box-shadow:var(--cmdk-hover-glow)}
/* 顶栏铃铛（任务 24b）：hover 高亮 + 未读紫色渐变 dot */
.msgbell{position:relative;display:flex;align-items:center;padding:6px 8px;border-radius:10px;cursor:pointer;
  border:1px solid transparent;transition:all var(--t);margin-left:8px}
/* 顶栏「更新」按钮：即时同步 */
.syncbtn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:10px;font-size:11.5px;
  color:var(--text-dim);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);cursor:pointer;
  transition:all var(--t);margin-left:8px;font-family:inherit}
.syncbtn:hover{border-color:var(--accent-border);color:var(--text);background:var(--accent-bg)}
.syncbtn:disabled{opacity:.6;cursor:default}
.msgbell:hover{border-color:var(--accent-border);background:var(--accent-bg)}
.msgbell .dot{position:absolute;top:-3px;right:-5px;min-width:16px;height:16px;padding:0 3px;border-radius:99px;
  background:var(--lg-bg);color:var(--cnt-color);font-size:9px;font-weight:700;
  display:flex;align-items:center;justify-content:center;box-shadow:var(--cnt-shadow);font-family:var(--mono)}
.sidebar{width:220px;min-width:220px;display:flex;flex-direction:column;gap:2px;
  padding:12px 12px 16px;margin:54px 0 14px 14px;border-radius:18px;
  background:var(--side-bg);border:1px solid var(--card-hairline);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--side-shadow)}
.brand{display:flex;align-items:center;gap:9px;padding:4px 8px 18px;font-size:13.5px;font-weight:650;color:var(--brand)}
.brand .lg{width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;
  color:var(--cnt-color);font-weight:800;font-size:12.5px;line-height:1;background:var(--lg-bg);box-shadow:var(--lg-shadow)}
.nav-sec{font-size:9px;letter-spacing:.16em;text-transform:uppercase;margin:14px 10px 6px;color:var(--nav-sec);font-family:var(--mono)}
.nav-item{display:flex;align-items:center;gap:10px;padding:7.5px 10px;border-radius:10px;font-size:12.5px;cursor:pointer;
  margin-bottom:2px;transition:all .16s ease;color:var(--nav);border:1px solid transparent}
.nav-item:hover{background:var(--nav-hover-bg);color:var(--nav-hover)}
.nav-item.active{color:var(--nav-on-color);background:var(--nav-on-bg);border-color:var(--nav-on-border)}
.nav-item.active svg.i{color:var(--accent)}
.nav-item .cnt{margin-left:auto;font-size:9.5px;font-weight:600;border-radius:999px;padding:1px 6px;
  color:var(--cnt-color);background:var(--cnt-bg);box-shadow:var(--cnt-shadow)}
main{flex:1;padding:56px 16px 16px;overflow-y:auto;min-width:0}
section.view{display:none}
section.view.active{display:block}
#hermesDrawer{position:fixed;top:calc(44px + env(safe-area-inset-top));right:0;bottom:0;width:420px;background:var(--drawer-bg);
  border-left:1px solid var(--card-hairline);transform:translateX(100%);transition:transform .18s;
  z-index:50;display:flex;flex-direction:column;
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
#hermesDrawer.open{transform:translateX(0)}

/* ============================================================
   按钮（四级 + 旧 .primary 兼容）
   ============================================================ */
.btn{display:inline-flex;align-items:center;gap:7px;padding:8.5px 15px;border-radius:11px;font-size:12.5px;font-weight:550;
  cursor:pointer;border:none;font-family:inherit;transition:all .17s ease;
  white-space:nowrap;align-self:flex-start;height:auto;min-height:0}
.btn svg.i{width:13px;height:13px}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}
.btn.pri{background:var(--pri-bg);color:var(--pri-color);box-shadow:var(--pri-shadow)}
.btn.pri:hover{filter:var(--pri-hover-filter);box-shadow:var(--pri-hover-shadow)}
.btn.sec{background:var(--sec-bg);border:1px solid var(--sec-border);color:var(--sec-color)}
.btn.sec:hover{background:var(--sec-hover-bg)}
.btn.ghost{background:transparent;border:1px solid transparent;color:var(--text-dim)}
.btn.ghost:hover{background:var(--sec-bg);color:var(--text)}
.btn.danger{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger)}
.btn.danger:hover{filter:brightness(1.15)}
button.primary{display:inline-flex;align-items:center;gap:7px;padding:8.5px 15px;border-radius:11px;font-size:12.5px;font-weight:550;
  cursor:pointer;border:none;font-family:inherit;transition:all .17s ease;
  white-space:nowrap;align-self:flex-start;height:auto;min-height:0;
  background:var(--pri-bg);color:var(--pri-color);box-shadow:var(--pri-shadow)}
button.primary:hover{filter:var(--pri-hover-filter);box-shadow:var(--pri-hover-shadow)}
/* 裸按钮默认次级外观（取消/返回/消息行操作等） */
button:not(.primary):not(.btn):not(.chip):not(.chip-mini):not(.bdg):not(.tfseg):not(.tfchip):not(.tmenu):not(.src-chip):not(.st-tab){
  background:var(--sec-bg);border:1px solid var(--sec-border);color:var(--sec-color);
  padding:7px 14px;border-radius:10px;font-size:12.5px}
button:not(.primary):not(.btn):not(.chip):not(.chip-mini):not(.bdg):not(.tfseg):not(.tfchip):not(.tmenu):not(.src-chip):not(.st-tab):hover{background:var(--sec-hover-bg);color:var(--text)}
button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus-ring)}

/* ============================================================
   卡片
   ============================================================ */
.card{border-radius:18px;padding:17px 18px;margin-bottom:12px;
  background:var(--card-bg);border:1px solid var(--card-hairline);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--card-shadow);
  transition:transform .18s,box-shadow .18s,border-color .18s}
.card:hover{transform:translateY(-2px);box-shadow:var(--card-shadow-hover)}
.card h3{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:600;letter-spacing:.12em;
  flex-wrap:wrap;text-transform:uppercase;margin:0 0 24px;color:var(--card-h3);font-family:var(--mono)}
.card h3 .tl-srcfilters{display:inline-flex;gap:5px}
.card h3 .tl-limitbtn{flex-shrink:0}
.card h3 svg.i{width:13px;height:13px;color:var(--accent)}
.card h3 .cnt{margin-left:auto;font-weight:400;letter-spacing:.02em;text-transform:none;color:var(--cnt-text)}
.empty{color:var(--text-faint);font-size:12px;padding:16px 0;text-align:center;font-family:var(--mono)}

/* ============================================================
   徽标 / 进度
   ============================================================ */
.bdg{font-size:9.5px;font-weight:600;letter-spacing:.05em;padding:2.5px 8px;border-radius:999px;flex-shrink:0}
.bdg.hi{color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger-border)}
.bdg.md{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-border)}
.bdg.lo{color:var(--p-light);background:var(--accent-bg);border:1px solid var(--accent-border)}
/* 琥珀主题:首页「我的事项」重要性徽标——MID=黄、LOW=非常浅灰黄 */
html[data-theme="amber"] #dashMyList .bdg.md{color:#f7c948;background:rgba(247,201,72,.12);border:1px solid rgba(247,201,72,.35)}
html[data-theme="amber"] #dashMyList .bdg.lo{color:#c7bd97;background:rgba(199,189,151,.1);border:1px solid rgba(199,189,151,.3)}
.bdg.od{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-border)}
.badge{padding:2px 8px;border-radius:99px;font-size:11px;border:1px solid transparent}
.badge.high{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-border)}
.badge.medium{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-border)}
.badge.low{color:var(--p-light);background:var(--accent-bg);border-color:var(--accent-border)}
.badge.team{color:var(--accent);background:var(--accent-bg);border-color:var(--accent-border)}
.prog{height:4px;border-radius:3px;overflow:hidden;background:var(--prog-bg)}
.prog>div{height:100%;border-radius:3px;background:var(--prog-fill);box-shadow:var(--prog-glow)}
.progress-bar{width:90px;height:5px;background:var(--prog-bg);border-radius:3px;overflow:hidden}
.progress-bar>div{height:100%;background:var(--prog-fill);box-shadow:var(--prog-glow)}

/* ============================================================
   chips / 事项行（旧兼容）/ 看板
   ============================================================ */
.chip{padding:6px 14px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);cursor:pointer;font-size:12px}
.chip:hover{background:var(--sec-bg);color:var(--text)}
.chip.active{background:var(--pri-bg);border-color:transparent;color:var(--pri-color)}
.dir-btn{padding:4px 9px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);cursor:pointer;font-size:11px;font-family:var(--mono);line-height:1}
.dir-btn:hover{background:var(--sec-bg);color:var(--text)}
.dir-btn.on{background:var(--pri-bg);border-color:transparent;color:var(--pri-color)}
/* 自定义标签:筛选栏 chip / 表单勾选 chip / 行内小胶囊 */
.tag-chip{padding:4px 10px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);cursor:pointer;font-size:11px}
.tag-chip em{font-style:normal;opacity:.55;margin-left:3px;font-size:10px}
.tag-chip.on{background:var(--pri-bg);border-color:transparent;color:var(--pri-color)}
.tf-tag{padding:5px 12px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);cursor:pointer;font-size:12px;margin:0 6px 6px 0}
.tf-tag.on{background:var(--pri-bg);border-color:transparent;color:var(--pri-color)}
.row-tag{font-size:10px;padding:2px 8px;border-radius:99px;border:1px solid var(--sec-border);
  color:var(--text-dim);flex-shrink:0}
/* 个人事项:生活标题浅紫 */
.title-life{color:#b7a6ff !important}
/* 行首小方框:自定义绘制(accent-color 在部分平台上不生效)——未完成按重要级着色,
   已完成勾选后灰底对勾 */
.pmeta-input{width:52px;background:var(--sec-bg);border:1px solid var(--pri-border);border-radius:6px;
  color:var(--text);font-family:var(--mono);font-size:12px;padding:3px 6px}
.task-row input[type=checkbox]{appearance:none;-webkit-appearance:none;width:15px;height:15px;flex-shrink:0;
  border:2px solid var(--text-dim);border-radius:4px;background:transparent;cursor:pointer;
  display:inline-grid;place-content:center;margin:0}
.task-row input[type=checkbox]:checked{background:var(--text-dim);border-color:var(--text-dim)}
.task-row input[type=checkbox]:checked::before{content:'';width:8px;height:5px;
  border-left:2px solid var(--bg-elevated);border-bottom:2px solid var(--bg-elevated);transform:rotate(-45deg) translateY(-1px)}
.task-row:not(.done) input.cb-pri-high{border-color:var(--danger);background:color-mix(in srgb, var(--danger) 14%, transparent)}
.task-row:not(.done) input.cb-pri-medium{border-color:var(--warn);background:color-mix(in srgb, var(--warn) 14%, transparent)}
.task-row:not(.done) input.cb-pri-low{border-color:var(--p-light);background:color-mix(in srgb, var(--p-light) 14%, transparent)}
/* 未完成/已完成之间的分割线 */
.task-divider{height:2px;background:var(--border-strong);margin:18px 2px 22px;border-radius:1px;opacity:.85}
.row-tag.cat{color:var(--pri-color);border-color:var(--pri-bg)}
/* 筛选下拉与自定义标签多选浮层 */
.ff-label{font-size:11px;color:var(--text-faint);font-family:var(--mono);white-space:nowrap}
.ff-select{appearance:none;background:var(--sec-bg);border:1px solid var(--sec-border);border-radius:8px;
  color:var(--text);font-size:12px;padding:6px 26px 6px 10px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--text-dim) 50%),linear-gradient(135deg,var(--text-dim) 50%,transparent 50%);
  background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.ff-select:hover{border-color:var(--pri-border)}
.tag-drop{padding:6px 14px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);cursor:pointer;font-size:12px}
.tag-drop:hover{background:var(--sec-bg);color:var(--text)}
.tag-drop.on{background:var(--pri-bg);border-color:transparent;color:var(--pri-color)}
.tag-pop{position:fixed;z-index:999;min-width:160px;max-height:280px;overflow-y:auto;
  background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:10px;box-shadow:var(--card-shadow);
  padding:6px;display:flex;flex-direction:column;gap:2px}
.tag-opt{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text);padding:6px 8px;
  border-radius:7px;cursor:pointer}
.tag-opt:hover{background:var(--card-hairline)}
.tag-opt input{accent-color:var(--p-main);margin:0}
.tag-opt em{font-style:normal;opacity:.55;margin-left:auto;font-size:10px}
.chip-mini{padding:3px 10px;border-radius:99px;border:1px solid var(--sec-border);font-size:11px;cursor:pointer;
  background:transparent;color:var(--text-dim)}
/* 全局:移动端禁用双击缩放(touch-action),桌面无副作用 */
button{touch-action:manipulation}
.task-row{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--trow-bg);
  border:1px solid var(--trow-border);border-radius:var(--radius);margin-bottom:8px;cursor:pointer;transition:all .16s ease}
.task-row:hover{border-color:var(--trow-hover-border);background:var(--trow-hover-bg)}
.task-row .title{font-size:14px;color:var(--trow-tt);white-space:nowrap}
.task-row.done .title{color:var(--trow-done-tt);text-decoration:line-through}

/* ============================================================
   事项管理增强（需求 1/2/4）：分段勾选栏 / 可拖进度条 / 状态徽标 / 标签小菜单 / 拖动排序
   ============================================================ */
/* 表单分段勾选栏：选项平铺、点选即生效 */
.tf-seg{display:flex;gap:4px;flex:1;min-width:0}
.tf-seg button{padding:4px 9px;border-radius:8px;font-size:12px;border:1px solid var(--border-strong);
  background:transparent;color:var(--text-dim);cursor:pointer;transition:all var(--t);white-space:nowrap}
.tf-seg button:hover{border-color:var(--accent);color:var(--text)}
.tf-seg button.active{background:var(--accent-bg);border-color:var(--accent);color:var(--text);
  box-shadow:0 0 0 3px var(--focus-ring)}
/* 可点击/拖动进度条（原生 range，填充用 --p 百分比渐变，主题渐变色） */
.prange{-webkit-appearance:none;appearance:none;width:90px;height:5px;margin:0;border-radius:3px;outline:none;cursor:pointer;
  background:linear-gradient(90deg,var(--grad-a) 0%,var(--grad-b) var(--p,0%),var(--prog-bg) var(--p,0%))}
.prange::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;
  border:none;box-shadow:0 1px 5px rgba(0,0,0,.55),0 0 0 3px rgba(139,124,255,.25);transition:transform .12s}
.prange:hover::-webkit-slider-thumb{transform:scale(1.2)}
.prange:active::-webkit-slider-thumb{transform:scale(1.35)}
.prange.sm{width:64px}
/* 进度百分比：首页 meta 同款（小号淡色等宽数字） */
.pmeta{font-size:10.5px;color:var(--text-faint);width:34px;letter-spacing:.02em}
/* 状态标签：首页 .bdg 同款药丸（紫=待办 / 橙=进行中 / 灰=已完成） */
.bdg.st-todo{color:var(--accent);background:var(--accent-bg);border:1px solid var(--accent-border)}
.bdg.st-doing{color:var(--ok);background:rgba(239,154,90,.12);border:1px solid rgba(239,154,90,.3)}
.bdg.st-paused{color:#d9a24a;background:rgba(217,162,74,.12);border:1px solid rgba(217,162,74,.35)}
.bdg.st-done{color:var(--text-dim);background:transparent;border:1px solid var(--border-strong)}
button.bdg{font-family:inherit;cursor:pointer}
button.bdg:hover{filter:brightness(1.15)}
/* 标签小菜单（状态/重要性点击快改） */
.tag-menu{position:fixed;display:flex;flex-direction:column;gap:2px;min-width:92px;padding:6px;border-radius:10px;
  background:var(--bg-elevated);border:1px solid var(--border-strong);box-shadow:0 12px 32px rgba(0,0,0,.5);z-index:300}
.tag-menu button{text-align:left;padding:6px 10px;border-radius:6px;font-size:12.5px;color:var(--text-dim);
  background:transparent;border:none;cursor:pointer;font-family:inherit}
.tag-menu button:hover{background:var(--accent-bg);color:var(--text)}
.tag-menu button.active{color:var(--accent);font-weight:600}
/* 列表拖动排序：拖起半透明 + 落点指示线 */
.task-row[draggable="true"]{cursor:grab}
.task-row[draggable="true"]:active{cursor:grabbing}
.task-row.dragging{opacity:.45}
.task-row.drop-before{box-shadow:0 -2px 0 0 var(--accent)}
.task-row.drop-after{box-shadow:0 2px 0 0 var(--accent)}
.board-col{flex:1;background:var(--board-bg);border:1px solid var(--card-hairline);border-radius:12px;padding:12px;min-height:300px}
.board-card{background:var(--trow-bg);border:1px solid var(--trow-border);border-radius:10px;padding:12px;margin-bottom:8px;
  cursor:grab;transition:border-color .16s}
.board-card:active{cursor:grabbing}
.board-card:hover{border-color:var(--trow-hover-border)}

/* ============================================================
   仪表盘：hero / KPI / 网格 / trow / 图表 / mtile / 消息
   ============================================================ */
.hero{display:flex;align-items:flex-end;gap:18px;padding:2px 6px 18px}
.hero h1{font-size:21px;font-weight:700;letter-spacing:-.02em;line-height:1.25;color:var(--hero-h1)}
.hero h1 em{font-style:normal;background:var(--em-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero .sub{margin-top:5px;font-size:11px;color:var(--hero-sub);font-family:var(--mono)}
.kpirow{display:flex;gap:10px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}
.kpibig{min-width:96px;padding:12px 14px;border-radius:14px;text-align:left;transition:transform .18s;
  background:var(--kpi-bg);border:1px solid var(--kpi-border)}
.kpibig:hover{transform:translateY(-2px)}
.kpibig .v{font-size:24px;font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--kpi-v);font-family:var(--mono)}
.kpibig .v .u{font-size:11px;font-weight:500;opacity:.55;margin-left:2px}
.kpibig .l{font-size:9px;letter-spacing:.1em;text-transform:uppercase;margin-top:4px;opacity:.6;color:var(--kpi-l);font-family:var(--mono)}
.kpibig.acc .v{color:var(--kpi-acc-v)}
.kpi{padding:10px 14px;border-radius:12px;text-align:left;background:var(--kpi-bg);border:1px solid var(--kpi-border)}
.kpi .v{font-size:18px;font-weight:700;letter-spacing:-.02em;color:var(--kpi-v);font-family:var(--mono)}
.kpi .l{font-size:9px;letter-spacing:.1em;text-transform:uppercase;margin-top:2px;color:var(--kpi-l);font-family:var(--mono)}
.grid{display:grid;grid-template-columns:7fr 5fr;gap:12px;align-items:start}
.colL,.colR{display:flex;flex-direction:column;min-width:0}
.trow{display:flex;align-items:center;gap:11px;padding:10.5px 12px;border-radius:12px;margin-bottom:6px;cursor:pointer;
  transition:all .16s ease;background:var(--trow-bg);border:1px solid var(--trow-border)}
.trow:hover{transform:translateY(-1px);background:var(--trow-hover-bg);border-color:var(--trow-hover-border);box-shadow:var(--trow-hover-shadow)}
.trow .chk{width:15px;height:15px;border-radius:5px;border:1px solid var(--chk-border);display:flex;align-items:center;
  justify-content:center;flex-shrink:0;color:transparent;font-size:9px}
.trow.done .chk{color:var(--done-chk-color);border-color:transparent;background:var(--pri-bg)}
.trow .tt{flex:1;font-size:12.8px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--trow-tt)}
.trow.done .tt{text-decoration:line-through;color:var(--trow-done-tt)}
.trow .meta{font-size:10px;flex-shrink:0;color:var(--trow-meta);font-family:var(--mono)}
.chartwrap{display:flex;align-items:flex-end;gap:8px;height:96px;padding:6px 2px 0}
.barcol{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.barcol .b{width:100%;max-width:22px;border-radius:5px 5px 3px 3px;transition:filter .16s,transform .16s;cursor:pointer;
  background:var(--bar-idle)}
.barcol .b:hover{filter:brightness(1.25);transform:scaleY(1.02)}
.barcol.cur .b{background:var(--bar-cur);box-shadow:var(--bar-cur-glow)}
.barcol .d{font-size:8.5px;opacity:.5;color:var(--trow-meta);font-family:var(--mono)}
.chartcap{display:flex;justify-content:space-between;margin-top:8px;font-size:9px;opacity:.5;color:var(--trow-meta);font-family:var(--mono)}
.mods{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mtile{padding:16px 8px;text-align:center;border-radius:16px;cursor:pointer;transition:all .18s ease;
  background:var(--mtile-bg);border:1px solid var(--card-hairline)}
.mtile:hover{transform:translateY(-3px);border-color:var(--mtile-hover-border);box-shadow:var(--mtile-hover-shadow)}
.mtile .ic{width:38px;height:38px;margin:0 auto;display:flex;align-items:center;justify-content:center;
  border-radius:11px;background:var(--lg-bg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 4px 14px color-mix(in srgb,var(--accent) 35%,transparent);font-size:20px;line-height:1}
.mtile .ic svg{width:19px;height:19px;fill:none;stroke:#fff;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.mtile.off{opacity:.45}
.mtile .nm{margin-top:10px;font-size:11.5px;color:var(--mtile-nm);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px}
.msg{display:flex;gap:11px;padding:11px 12px;border-radius:12px;margin-bottom:6px;align-items:flex-start;cursor:pointer;
  transition:all .16s;background:var(--msg-bg);border:1px solid var(--msg-border)}
.msg:hover{background:var(--msg-hover-bg);border-color:var(--msg-hover-border)}
.msg .ud{width:6px;height:6px;border-radius:50%;margin-top:6px;flex-shrink:0;background:var(--msg-ud);box-shadow:var(--msg-ud-glow)}
.msg .src{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--msg-src);font-family:var(--mono)}
.msg .mt{font-size:12.5px;margin:2px 0 1px;color:var(--msg-mt);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg .mb{font-size:10px;color:var(--msg-mb);font-family:var(--mono);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msg-row{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;background:var(--msg-bg);
  border:1px solid var(--msg-border);border-radius:12px;margin-bottom:8px;cursor:pointer;transition:all .16s}
.msg-row:hover{background:var(--msg-hover-bg);border-color:var(--msg-hover-border)}
.btns{display:flex;gap:9px;flex-wrap:wrap;align-items:flex-start}

/* ============================================================
   模态 / 输入
   ============================================================ */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:100;display:flex;align-items:center;
  justify-content:center;backdrop-filter:blur(4px)}
.modal{width:min(640px, calc(100vw - 32px));max-height:calc(100vh - 36px);overflow-y:auto;overflow-x:hidden;background:var(--modal-bg);border:1px solid var(--card-hairline);
  border-radius:18px;padding:24px;box-shadow:var(--card-shadow),0 24px 64px rgba(0,0,0,.5)}
.modal label{display:block;font-size:12px;color:var(--text-dim);margin:14px 0 6px}
.modal input,.modal textarea,.modal select{width:100%;box-sizing:border-box;background:var(--inp-bg);border:1px solid var(--inp-border);
  border-radius:8px;padding:10px 12px;color:var(--inp-color);font-size:14px}
.modal input:focus,.modal textarea:focus,.modal select:focus{outline:none;border-color:var(--inp-focus-border);
  box-shadow:var(--inp-focus-ring)}
input,textarea,select{font-family:inherit}
select{background:var(--inp-bg);border:1px solid var(--inp-border);border-radius:8px;padding:6px 12px;color:var(--inp-color)}
.inp{padding:8.5px 13px;border-radius:11px;font-size:12px;width:170px;border:1px solid var(--inp-border);
  background:var(--inp-bg);color:var(--inp-color)}
.inp:focus{outline:none;border-color:var(--inp-focus-border);box-shadow:var(--inp-focus-ring)}

/* ============================================================
   设置页 · 主题选择
   ============================================================ */
.theme-opt{display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:12px;cursor:pointer;font-size:12.5px;
  border:1px solid var(--sec-border);color:var(--text-dim);transition:all .16s ease;user-select:none}
.theme-opt:hover{background:var(--sec-bg);color:var(--text)}
.theme-opt.sel{border-color:var(--accent);color:var(--text);background:var(--accent-bg);
  box-shadow:0 0 0 3px var(--focus-ring)}
.theme-opt .sw{width:16px;height:16px;border-radius:6px;border:1.5px solid;display:inline-block;flex-shrink:0}

/* 命令面板结果项（主题化 hover，修复硬编码深色背景） */
.p-item{padding:10px 18px;cursor:pointer;font-size:14px;transition:background var(--t)}
.p-item:hover{background:var(--bg-elevated)}
html[data-theme="light"] .p-item:hover{background:#e9e9f4}

/* ============================================================
   任务 23c · 三版块看板：统计行 / AI 打标小菜单 / 团队胶囊 / 逾期
   ============================================================ */
/* 统计行：等宽小字 + 彩色计数（个人/团队/AI 版块统计） */
.statline{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:0 0 12px;font-family:var(--mono)}
.statline .stat{font-size:10.5px;color:var(--text-faint);letter-spacing:.02em}
.statline .stat b{font-size:13px;font-weight:700;color:var(--text);margin-left:3px}

/* 团队三色胶囊（媒采/会员/AI：--accent 系三档色） */
.team-chip{display:inline-flex;align-items:center;gap:5px;padding:2.5px 10px;border-radius:999px;font-size:10.5px;font-weight:600;
  flex-shrink:0;border:1px solid var(--sec-border);color:var(--text-dim);background:var(--sec-bg);font-family:var(--mono)}
.team-chip b{font-weight:700}
.team-chip.t-media{color:var(--accent);background:var(--accent-bg);border-color:var(--accent-border)}
.team-chip.t-member{color:var(--accent-2);background:var(--kpi-bg);border-color:var(--accent-border)}
.team-chip.t-ai{color:var(--warn);background:var(--warn-bg);border-color:var(--warn-border)}

/* 逾期徽标（任务 24b：琥珀语义，同 .bdg.od） */
.overdue{font-size:9px;font-weight:700;padding:2px 7px;border-radius:999px;flex-shrink:0;letter-spacing:.05em;
  color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn-border)}

/* AI 打标弹出小菜单：绝对定位卡片 + 选项 hover + 阴影 */
.ai-menu{position:fixed;z-index:300;min-width:104px;padding:5px;border-radius:12px;
  background:var(--modal-bg);border:1px solid var(--border-strong);
  box-shadow:0 16px 40px rgba(0,0,0,.5),var(--card-shadow);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.ai-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;padding:7px 12px;border-radius:8px;
  font-size:12.5px;color:var(--text-dim);transition:background var(--t),color var(--t)}
.ai-menu button:hover{background:var(--sec-bg);color:var(--text)}
.ai-menu button.cur{color:var(--accent);font-weight:650}
.ai-row .bdg.ai-pr{cursor:pointer}

/* ============================================================
   任务 23d · 甘特时间轴视图
   ============================================================ */
/* 工具栏：翻页 + 今天 + 图例（三队色 + 进度说明） */
/*（.tl-toolbar 死样式已随 25a headbar 重写移除）*/
.tl-pager{display:flex;gap:6px;align-items:center}
.tl-prev,.tl-next{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--sec-bg);border:1px solid var(--sec-border);color:var(--sec-color);font-size:15px;line-height:1}
.tl-prev:hover,.tl-next:hover{background:var(--sec-hover-bg);color:var(--text)}
.tl-prev:disabled,.tl-next:disabled{opacity:.35;cursor:default}
.tl-today{padding:5.5px 12px;border-radius:99px;border:1px solid var(--sec-border);background:transparent;
  color:var(--text-dim);font-size:12px}
.tl-today:hover{background:var(--sec-bg);color:var(--text)}
.tl-range{font-size:10.5px;color:var(--text-dim);letter-spacing:.03em}
/*（图例已随 25b 移除，无残留样式）*/

/* 主区：左任务列（吸顶不随横滚）+ 右 14 列日期区（横向滚动） */
.tl-wrap{overflow-x:auto;border:1px solid var(--card-hairline);border-radius:var(--radius);
  background:var(--card-bg)}
.tl-grid{display:grid;grid-template-columns:var(--tl-name-w,240px) repeat(14,1fr);min-width:100%}
.tl-head{border-bottom:1px solid var(--card-hairline)}
.tl-name{position:sticky;left:0;z-index:5;display:flex;flex-direction:column;justify-content:center;gap:3px;
  padding:6px 12px;height:46px;background:var(--bg-elevated);border-right:1px solid var(--card-hairline);
  cursor:pointer;min-width:0}
.tl-head .tl-name{justify-content:flex-start;padding-top:9px;font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--card-h3);font-family:var(--mono);cursor:default}
/* 任务数量选择器(首页 Timeline):「任务(N/总数)▾」下拉 */
.tl-limitcell{position:relative}
.tl-limitbtn{display:inline-flex;align-items:center;gap:4px;background:transparent;border:none;color:inherit;
  font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;padding:2px 4px;border-radius:6px}
.tl-limitbtn:hover{background:var(--card-hairline)}
/* 我的事项:数量选择按钮缩小,与首条事项留出呼吸间距 */
#dashListLimit{font-size:10px;padding:1px 6px;opacity:.85}
#dashMyList{margin-top:7px}
.tl-limitmenu{position:fixed;z-index:999;min-width:96px;
  background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:10px;box-shadow:var(--card-shadow);
  padding:4px;display:flex;flex-direction:column;gap:2px}
.tl-limitopt{display:block;width:100%;text-align:left;background:transparent;border:none;color:var(--text);
  font-size:12px;padding:6px 10px;border-radius:7px;cursor:pointer;letter-spacing:normal;text-transform:none}
.tl-limitopt:hover{background:var(--card-hairline)}
.tl-limitopt.on{color:var(--p-main);font-weight:600}
/* 25a：任务名行 = src-tag + 标题（对齐 demo .tl-side .tr 样式，长标题省略号不与标签重叠） */
.tl-tr{display:flex;align-items:center;gap:7px;min-width:0}
.tl-tr .src-tag{flex-shrink:0}
.tl-tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:10.5px;color:var(--trow-tt)}
/*（.tl-toolbar/.tl-badges/.tl-prog 死样式已随单行精简移除）*/
.tl-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;height:46px;
  border-right:1px solid var(--border);font-family:var(--mono)}
.tl-day b{font-size:11px;font-weight:600;color:var(--text-dim)}
.tl-day span{font-size:9px;color:var(--text-faint)}
.tl-day.today{background:var(--accent-bg)}
.tl-day.today b,.tl-day.today span{color:var(--accent)}
.tl-row{position:relative;border-bottom:1px solid var(--card-hairline)}
.tl-row:hover .tl-name{background:var(--trow-hover-bg)}
.tl-cell{position:relative;height:46px;border-right:1px solid var(--border);cursor:crosshair}
.tl-cell.wkend{background:var(--card)}
.tl-cell.today{background:var(--accent-bg)}
.tl-row:hover .tl-cell{background:var(--trow-hover-bg)}
.tl-row:hover .tl-cell.wkend{background:var(--trow-hover-bg)}
.tl-row:hover .tl-cell.today{background:var(--accent-bg)}

/* 横条：实色填充（进度）+ 半透明剩余；open 端渐隐表示无起/止 */
.tl-bars{position:absolute;left:var(--tl-name-w,240px);right:0;top:0;bottom:0;pointer-events:none}
.tl-bars .tl-bar,.tl-bars .tl-note{pointer-events:auto}
.tl-bar{position:absolute;top:12px;height:22px;border-radius:7px;overflow:hidden;z-index:2;cursor:pointer;
  display:flex;box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
.tl-bar .fill{height:100%;background:var(--tl-color)}
.tl-bar .rest{height:100%;background:var(--tl-color);opacity:.28}
.tl-bar:hover{filter:brightness(1.18)}
.tl-bar.open-r::after{content:'';position:absolute;right:0;top:0;bottom:0;width:14px;
  background:linear-gradient(90deg,transparent,var(--bg-elevated))}
.tl-bar.open-l::before{content:'';position:absolute;left:0;top:0;bottom:0;width:14px;
  background:linear-gradient(270deg,transparent,var(--bg-elevated))}

/* 备注点（圆点，hover 摘要 title，点击 查看/删除） */
.tl-dots{position:absolute;left:0;right:0;bottom:3px;display:flex;justify-content:center;gap:3px;
  z-index:3;pointer-events:none}
.tl-dots .tl-note{pointer-events:auto;cursor:pointer}
.tl-note{width:10px;height:8px;border-radius:0;background:none;box-shadow:none;position:relative}
/*（旧圆点 .tl-note 定义已删除，只保留三角版）*/

/* 备注小菜单 */
.tl-menu{position:fixed;z-index:300;min-width:92px;padding:5px;border-radius:12px;
  background:var(--modal-bg);border:1px solid var(--border-strong);
  box-shadow:0 16px 40px rgba(0,0,0,.5),var(--card-shadow);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur)}
.tl-menu button{display:block;width:100%;text-align:left;background:transparent;border:none;padding:7px 12px;
  border-radius:8px;font-size:12.5px;color:var(--text-dim);transition:background var(--t),color var(--t)}
.tl-menu button:hover{background:var(--sec-bg);color:var(--text)}
/* 备注悬停浮窗 */
.tl-ttip{position:fixed;display:none;z-index:400;max-width:280px;padding:8px 12px;border-radius:10px;
  background:var(--bg-elevated);border:1px solid var(--border-strong);box-shadow:0 8px 24px rgba(0,0,0,.5);
  font-size:12px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-word;pointer-events:none}
.tl-menu button[data-act="del"]:hover{color:var(--danger)}

/* 空态 / 无周期任务折叠列表 */
.tl-empty{color:var(--text-faint);font-size:12px;padding:36px 0;text-align:center;font-family:var(--mono)}
.tl-empty-sm{color:var(--text-faint);font-size:11px;padding:8px 2px 2px;font-family:var(--mono)}
.tl-nocycle{margin-top:14px}
.tl-nocycle summary{cursor:pointer;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--card-h3);font-family:var(--mono);padding:4px 2px;user-select:none}
.tl-nocycle summary:hover{color:var(--text-dim)}
.tl-nocycle-row{cursor:pointer}
.tl-note-body{white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.7;color:var(--text);
  margin-top:12px;padding:12px 14px;border-radius:10px;background:var(--sec-bg);border:1px solid var(--sec-border)}

/* ============================================================
   任务 24b · 首页 V6：三概览卡 / 环图 / 团队进度 / 首页时间轴标题
   规格源：docs/design-preview/home-v6-orange.html（颜色走 token 变量化）
   ============================================================ */
.overview{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px;align-items:stretch}
.ov-card{border-radius:16px;padding:16px 20px;min-height:156px;cursor:pointer;
  transition:transform .18s,box-shadow .18s,border-color .18s;
  display:flex;flex-direction:column;justify-content:flex-start;min-width:0;
  background:var(--ov-bg);border:1px solid var(--ov-border);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  box-shadow:var(--card-shadow)}
.ov-card:hover{transform:translateY(-3px);border-color:var(--accent-border)}
.ov-head{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--card-h3);
  font-family:var(--mono);letter-spacing:.05em}
.ov-head svg.i{color:var(--accent)}
.ov-head .go{margin-left:auto;color:var(--ov-go);font-size:11px;font-family:inherit;letter-spacing:0}
.ov-body{display:flex;align-items:center;gap:16px;margin-top:14px}
.ov-main{flex:1;min-width:0}
.ov-main .big{font-size:38px;font-weight:700;letter-spacing:-.04em;line-height:1;
  color:var(--hero-h1);font-family:var(--mono)}
.ov-main .big.acc{color:var(--p-light)}
.ov-main .big.ok{color:var(--ok)}
.ov-main .unit{font-size:11.5px;color:var(--text-dim);margin-left:6px}
/* 指标行：数字语义色（紫=待办/排队，橙=进行中，琥珀=逾期/待继续）+ 灰标签 */
.ov-metrics{display:flex;flex-direction:column;gap:8px;margin-left:8px}
.ov-metric{display:flex;align-items:baseline;gap:10px}
.ov-metric .num{font-size:30px;font-weight:700;font-family:var(--mono);letter-spacing:-.02em;
  min-width:62px;text-align:right;line-height:1.05;font-variant-numeric:tabular-nums}
.ov-metric .lbl{font-size:10.5px;color:var(--text-dim);font-family:var(--mono);line-height:1.35}
.num.p{color:var(--p-light)}
.num.g{color:var(--ok)}
.num.a{color:var(--warn)}
/* 琥珀主题:概览卡三色试验——浅黄(待办)/主黄(进行中,F logo同色)/棕(逾期),仅首页概览卡生效 */
html[data-theme="amber"] .ov-card{--p-main:#f5c96a;--p-light:#f5c96a;--ok:#f5a623;--warn:#8a5b04}
/* 环图：conic-gradient 精确比例（JS 动态生成），粗环 + 发光层 */
.donut{flex-shrink:0;position:relative;width:116px;height:116px;margin-right:20px}
.donut .ring{position:absolute;inset:0;border-radius:50%;
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 15px),#000 calc(100% - 14.5px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 15px),#000 calc(100% - 14.5px))}
.donut .glow{position:absolute;inset:0;border-radius:50%;filter:blur(6px);opacity:.15}
.donut .dlabel{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;font-family:var(--mono)}
.donut .dlabel b{font-size:19px;color:var(--trow-tt);line-height:1.1}
.donut .dlabel span{font-size:10.5px;color:var(--text-dim)}
/* 团队卡：三队胶囊 + 总进度条 */
.ov-teams{display:flex;gap:8px;margin-top:auto;padding-top:10px}
.tc{padding:3px 11px;border-radius:99px;font-size:10.5px;font-family:var(--mono);border:1px solid;
  color:var(--mtile-nm);background:var(--sec-bg)}
.tc b{color:inherit;margin-right:5px}
.ov-prog{height:4px;border-radius:3px;background:var(--prog-bg);margin-top:10px;overflow:hidden}
.ov-prog>div{height:100%;border-radius:3px;background:var(--prog-fill)}
.note-demo{font-size:9.5px;color:var(--text-faint);font-family:var(--mono);margin-top:6px}
/* 首页 Timeline（24c：全空间时间轴挂载点） */
#homeTimeline .tl-headbar{margin:22px 0 12px}

/* ============================================================
   任务 24c · Timeline 日/周/月三视图 + 全空间合并
   ============================================================ */
/* 一行式头部：标题 + 日/周/月 tabs + 翻页/今天 */
.tl-headbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.tl-headbar h2{margin:0;font-size:16px;font-weight:700;color:var(--trow-tt);letter-spacing:-.01em;flex-shrink:0}
.tl-tabs{display:flex;gap:6px;flex-shrink:0}
.tl-tab{padding:5px 15px;border-radius:99px;font-size:11.5px;cursor:pointer;border:1px solid var(--border-strong);
  color:var(--text-dim);background:transparent;transition:all var(--t);font-family:inherit}
.tl-tab:hover{border-color:var(--accent-border);color:var(--text)}
.tl-tab.on{background:linear-gradient(135deg,var(--grad-a),var(--grad-b));color:var(--cnt-color);border-color:transparent;
  box-shadow:0 2px 12px color-mix(in srgb,var(--grad-a) 38%,transparent)}
.tl-nav{margin-left:auto;display:flex;gap:6px;align-items:center;flex-shrink:0}
.tl-mlabel{font-size:11.5px;color:var(--text-dim);font-family:var(--mono);min-width:84px;text-align:center}

/* 卡片外壳 + 图例行（图例在图下方，今日虚线不延及）；25a 对齐 demo：ov 底色/边框/16px 圆角/18px 20px 内边距 */
.tl-card{border-radius:16px;padding:18px 20px;background:var(--ov-bg);border:1px solid var(--ov-border);
  backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--card-shadow);
  overflow:hidden;margin-bottom:16px}
.tl-card .tl-wrap{border:none;border-radius:0;background:transparent}
/*（图例已随 25b 移除，无残留样式）*/

/* 来源标签：三梯度紫渐变块+白字（个人/媒采最深、会员/团队居中、AI最浅） */
.src-tag{font-size:8.5px;padding:1.5px 6px;border-radius:99px;font-family:var(--mono);border:1px solid transparent;
  flex-shrink:0;color:#fff;text-shadow:0 1px 1.5px rgba(0,0,0,.35)}
.src-tag.p,.src-tag.m{background:var(--grad-deep)}
.src-tag.h{background:var(--grad-mid)}
.src-tag.a{background:var(--grad-light)}
/* 首页 Timeline 来源开关（日/周/月旁）：同款三梯度紫渐变块+白字 */
.tl-srcfilters{display:flex;gap:4px;align-items:center}
.src-chip{font-size:10.5px;font-weight:600;padding:2.5px 10px;border-radius:99px;cursor:pointer;
  border:1px solid transparent;transition:opacity var(--t),filter var(--t);font-family:inherit;color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.4)}
.src-chip.s-personal{background:var(--grad-deep)}
.src-chip.s-team{background:var(--grad-mid)}
.src-chip.s-ai{background:var(--grad-light)}
.src-chip.off{opacity:.28;filter:saturate(.35) grayscale(.7)}
.src-chip:hover{opacity:1;filter:none}

/* ============================================================
   任务统计视图 + 首页统计 tile
   ============================================================ */
.st-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:10px;flex-wrap:wrap}
.st-tabs{display:flex;gap:6px}
.st-tab{padding:5px 14px;border-radius:99px;font-size:11.5px;cursor:pointer;border:1px solid var(--border-strong);
  background:transparent;color:var(--text-dim);font-family:inherit;transition:all var(--t)}
.st-tab.on{background:var(--grad-mid);border-color:transparent;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.st-cards{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.st-card{flex:1;min-width:120px;background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.st-card b{font-size:24px;color:var(--text);font-family:var(--mono)}
.st-card span{font-size:11px;color:var(--text-faint)}
.st-srcs{background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:12px;padding:14px 16px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px}
.st-srow{display:flex;align-items:center;gap:12px}
.st-sname{width:40px;font-size:12px;font-weight:600;color:var(--text)}
.st-snums{flex:1;font-size:11.5px;color:var(--text-dim)}
.st-snums b{color:var(--text);font-family:var(--mono)}
.st-sbar{width:160px;height:6px;border-radius:3px;background:var(--prog-bg);overflow:hidden}
.st-sbar div{height:100%;background:var(--grad-mid)}
.st-spct{width:38px;text-align:right;font-size:11px;color:var(--text-dim);font-family:var(--mono)}
.st-legend{display:flex;gap:14px;align-items:center;font-size:11px;color:var(--text-faint);margin-bottom:10px}
.st-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.st-legend i.i-new{background:var(--grad-mid)}
.st-legend i.i-fin{background:var(--ok)}
.st-chart{display:flex;align-items:flex-end;gap:6px;background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:12px;padding:18px 16px 12px;overflow-x:auto;min-height:190px}
.st-col{flex:1;min-width:14px;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%}
.st-bars{display:flex;align-items:flex-end;gap:3px;height:130px;width:100%;justify-content:center}
.st-bar{width:7px;border-radius:2px 2px 0 0;min-height:2px}
.st-bar.new{background:var(--grad-mid)}
.st-bar.fin{background:linear-gradient(180deg,color-mix(in srgb,var(--ok) 80%,#fff),var(--ok))}
.st-clabel{font-size:9px;color:var(--text-faint);font-family:var(--mono);white-space:nowrap}
.st-hint{font-size:10.5px;color:var(--text-faint);margin-top:8px}
.st-total{display:flex;gap:10px;flex-wrap:wrap}
.st-tot-item{flex:1;min-width:120px;background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:4px}
.st-tot-item b{font-size:26px;color:var(--text);font-family:var(--mono)}
.st-tot-item span{font-size:11px;color:var(--text-faint)}
.stat-tile{cursor:pointer}
.stat-tile .st-mini{font-size:10px;color:var(--text-faint);margin-top:4px;font-family:var(--mono)}
.stat-tile .st-mini b{color:var(--text)}
/* 首页任务统计独立板块 */
.stat-card{cursor:pointer;transition:border-color var(--t),box-shadow var(--t)}
.stat-card:hover{border-color:color-mix(in srgb,var(--p-main) 45%,transparent);box-shadow:var(--card-shadow)}
.stat-card h3{display:flex;align-items:center;gap:8px}
.stat-card h3 .go{margin-left:auto;color:var(--cnt-text);font-weight:400;font-size:10.5px;font-family:var(--mono);letter-spacing:.02em;text-transform:none}
.stat-metrics{display:flex;gap:8px;margin-top:12px}
.stat-m{flex:1;background:var(--bg-elevated);border:1px solid var(--card-hairline);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.stat-m b{font-size:20px;color:var(--text);font-family:var(--mono)}
.stat-m span{font-size:10.5px;color:var(--text-faint)}
.stat-foot{margin-top:12px;font-size:11px;color:var(--text-faint)}
.stat-foot b{color:var(--text);font-family:var(--mono)}



/* 今日虚线：仅在任务行区域（JS 定位 top/left，不穿日期头、不延图例） */
.tl-wrap{position:relative}
.tl-todayline{position:absolute;bottom:0;width:1px;border-left:1.5px dashed var(--p-main);
  opacity:.6;box-shadow:0 0 6px color-mix(in srgb, var(--p-main) 25%, transparent);pointer-events:none;z-index:6}

/* 备注正三角（尖口朝上对准横条，颜色随来源） */
.tl-note{width:10px;height:8px;border-radius:0;background:none;box-shadow:none;position:relative}
.tl-note .tri{position:absolute;left:50%;top:0;transform:translateX(-50%);width:0;height:0;
  border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:8px solid var(--tl-color);
  filter:drop-shadow(0 0 4px color-mix(in srgb, var(--tl-color) 55%, transparent))}
.tl-note:hover .tri{filter:drop-shadow(0 0 7px color-mix(in srgb, var(--tl-color) 95%, transparent))}

/* ── 周视图（25a）：每列一周，8 周窗口（今天所在周·周一起），横条按周跨度百分比落位 ── */
.tl-wrap.tl-mode-week .tl-grid{grid-template-columns:var(--tl-name-w,240px) repeat(8,1fr);min-width:calc(var(--tl-name-w,240px) + 8*64px)}
.tl-whead b{font-size:11px;font-weight:600;color:var(--text-dim);letter-spacing:.02em}
/* 本周高亮：文字亮紫加粗（无背景块，同 demo 周头高亮语义） */
.tl-whead.today{background:none}
.tl-whead.today b{color:var(--p-light);font-weight:800}
/* 周视图横条区：绝对定位覆盖周区（百分比落位），本周虚线按列贴位 */
.tl-wbars{position:absolute;left:var(--tl-name-w,240px);top:0;bottom:0;right:0;pointer-events:none;z-index:2}
.tl-wbars .tl-bar{pointer-events:auto}
.tl-wbars .tl-todayline{top:0;bottom:0}

/* ── 月视图：当月月历（周一起，行=周，列=7 天） ── */
.tl-wrap.tl-mode-month{overflow:hidden}
.tl-mgrid{display:flex;flex-direction:column}
.tl-mweekhead{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--card-hairline)}
.tl-mwd{padding:7px 0;text-align:center;font-size:9px;letter-spacing:.1em;color:var(--card-h3);
  font-family:var(--mono);border-right:1px solid var(--border)}
.tl-mwd:last-child{border-right:none}
.tl-mweek{position:relative;display:grid;grid-template-columns:repeat(7,1fr)}
.tl-mcell{position:relative;min-height:104px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);
  padding:4px 6px;cursor:crosshair}
.tl-mcell .md{font-size:11px;font-family:var(--mono);color:var(--text-dim);line-height:1.4}
.tl-mcell.other{background:var(--bg-elevated)}
.tl-mcell.other .md{color:var(--text-faint)}
.tl-mcell.wkend{background:var(--card)}
.tl-mcell.other.wkend{background:var(--bg-elevated)}
/* 今日格高亮：仅文字亮紫加粗，无背景块 */
.tl-mcell.today .md{color:var(--p-light);font-weight:800}
.tl-mnotes{position:absolute;bottom:3px;left:6px;right:6px;display:flex;gap:3px;flex-wrap:wrap;pointer-events:none}
.tl-mnotes .tl-note{pointer-events:auto}
/* 月视图任务横条：跨天落位，任务名缩略 */
.tl-mbars{position:absolute;inset:0;pointer-events:none}
.tl-mbar{position:absolute;height:14px;border-radius:4px;overflow:hidden;padding:0 5px;font-size:9px;line-height:14px;
  color:#fff;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.45);background:var(--tl-color);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;pointer-events:auto;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16)}
.tl-mbar:hover{filter:brightness(1.2)}

/* 月格多任务备注选择器 */
.tl-pick{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.tl-pick button{display:flex;gap:8px;align-items:center;padding:9px 12px;border-radius:10px;background:var(--sec-bg);
  border:1px solid var(--sec-border);color:var(--text);cursor:pointer;text-align:left;font-size:12.5px}
.tl-pick button:hover{border-color:var(--accent-border);background:var(--sec-hover-bg)}


/* ── 响应式：窄窗口折叠布局（双AI审核 #7/#8）── */
@media (max-width:1080px){
  .overview{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr}
  .mods{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
}

/* ── 任务 13：响应式 ≤900px（抽屉侧栏 / 单列 / 行压缩）── */
/* 汉堡按钮默认隐藏（由顶栏任务挂载，仅 ≤900px 显示） */
.hamburger{display:none}
@media (max-width:900px){
  /* 顶栏移动端:去红绿灯左内边距;隐藏面包屑;搜索框弹性占中;同步按钮图标化 */
  .topbar{padding:0 10px 0 12px;gap:6px;flex-wrap:nowrap}
  .topbar .crumb{display:none}
  .cmdk{margin-left:0;margin-right:8px;flex:1;min-width:0;max-width:none;padding:7px 10px}
  .cmdk span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .syncbtn span{display:none}
  .syncbtn{padding:6px 8px;margin-left:0}
  .msgbell{padding:6px 6px;margin-left:0}
  /* 44pt 触控目标 */
  .hamburger{width:44px;height:44px}
  .syncbtn,.msgbell{min-width:40px;min-height:40px}

  /* Timeline 移动端:左列缩到 110px,日期列保最小宽靠横向滚动 */
  :root{--tl-name-w:110px}
  .tl-grid{min-width:calc(var(--tl-name-w) + 14*46px)}
  .tl-wrap.tl-mode-week .tl-grid{min-width:calc(var(--tl-name-w) + 8*64px)}
  .tl-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
  .tl-prev,.tl-next{width:40px;height:40px}
  .tl-tab{padding:8px 12px}
  .tl-name{padding:6px 8px}

  /* iOS 安全区(PWA 全屏/刘海屏) */
  .topbar{height:calc(44px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top)}
  main{padding:calc(52px + env(safe-area-inset-top)) 12px calc(16px + env(safe-area-inset-bottom))}

  /* iOS 聚焦不自动放大:输入控件 ≥16px */
  .modal input,.modal textarea,.modal select,.inp,input[type=text],input[type=password],input[type=date],textarea,select{font-size:16px}

  /* Hermes 抽屉不超屏 */
  #hermesDrawer{width:min(420px,100vw)}

  /* 去掉 .tl-card 冗余横滚(内层 .tl-wrap 已是滚容器) */
  .tl-card{overflow-x:visible}

  /* 侧栏 → 左侧滑出抽屉（默认收起 -240px，body.side-open 展开） */
  .sidebar{position:fixed;left:-240px;top:0;bottom:0;z-index:120;transition:left .25s ease;
    margin:0;width:240px;min-width:240px;border-radius:0 18px 18px 0}
  body.side-open .sidebar{left:0}
  .hamburger{display:flex}
  /* 主区 padding(顶部保留固定顶栏 44px 高度;安全区已在上一声明合并) */
  main{padding-left:12px;padding-right:12px}
  .overview{grid-template-columns:1fr}
  .ov-metric .num{font-size:24px}
  .hero h1{font-size:20px}
  .st-chart{min-height:150px}
  .tl-card{overflow-x:auto}
  /* 事项行压缩：次要列（进度数字 / meta）收起，进度仍由 prange 表达 */
  .trow .meta,.trow .pmeta{display:none}
  .task-row .pmeta{display:none}
  .modal{width:92vw!important;max-height:86vh;max-height:86dvh;overflow-y:auto}
  .mods{grid-template-columns:repeat(2,1fr)}
  /* 任务行移动端:允许换行,标题占满首行并省略号截断,进度条收窄 */
  .task-row{flex-wrap:wrap;row-gap:6px}
  .task-row .title{flex:1 1 100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .task-row .prange{width:64px}
  .task-row input[type=checkbox]{width:22px;height:22px}
  .task-row input[type=checkbox]:checked::before{width:11px;height:7px}
  /* 看板移动端:横向 snap 滚动列(触屏可左右滑看各列,点击卡片编辑) */
  .board-cols{overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px;-webkit-overflow-scrolling:touch}
  .board-col{flex:0 0 84vw;scroll-snap-align:start}
  .board-card{cursor:pointer}
  /* 触控目标 ≥44px(仅移动端) */
  .nav-item{min-height:44px}
  .tf-seg button{min-height:44px}
  .ff-select,.dir-btn,.tag-drop{min-height:44px;padding:8px 14px}
  .tag-opt{padding:10px 8px}
  .chip{padding:8px 14px}
  /* 事项视图工具栏:新建按钮不被挤压,日期表头提高对比度 */
  #newTaskBtn{flex-shrink:0}
  .tl-day b{color:var(--text)}
  .tl-day span{color:var(--text-dim);font-size:10px}
  /* 时间轴小元素触控区扩展(视觉不变) */
  .tl-bar,.tl-mbar,.tl-note{position:relative}
  .tl-bar::after,.tl-mbar::after,.tl-note::after{content:'';position:absolute;inset:-12px}
  /* div 型交互元素禁用双击缩放 */
  .tl-cell,.tl-bar,.tl-note,.board-card,.task-row,.trow,.ov-card,.mtile,.nav-item,.tl-mbar{touch-action:manipulation}
  /* 首页我的事项:移动端保留时间信息(换行显示在标题下方) */
  .trow .meta{display:block;width:100%;font-size:11px}
  .trow .pmeta{display:none}
}

/* ── 任务 13：触控降级（无 hover 设备）──
   拖拽排序不可用 → 隐藏拖拽把手/禁用 grab 光标，显示「上移/下移」微按钮 */
.touch-move{display:none}
@media (hover:none){
  .task-row[draggable="true"]{cursor:default}
  .drag-handle,.grip{display:none!important}
  .touch-move{display:inline-flex;align-items:center;justify-content:center;
    min-width:22px;height:22px;padding:0 6px;border-radius:6px;
    border:1px solid var(--border-strong);background:var(--bg-elevated);
    color:var(--text-dim);font-size:11px;line-height:1;font-family:inherit;cursor:pointer;
    transition:all var(--t);vertical-align:middle;user-select:none;-webkit-user-select:none}
  .touch-move:hover,.touch-move:active{border-color:var(--accent-border);color:var(--text);background:var(--accent-bg)}
}

/* 首页我的事项:标题前4字符为快速改名触发区(悬浮提示) */
.qt-zone{cursor:text}
.qt-zone:hover{border-bottom:1px dashed var(--text-faint)}
/* 时间轴备注展示(编辑事项栏只读) */
.tf-notes{display:flex;flex-direction:column;gap:6px;max-height:170px;overflow-y:auto}
.tf-note{font-size:12.5px;color:var(--text-dim);background:var(--sec-bg);border:1px solid var(--sec-border);
  border-radius:8px;padding:7px 10px;line-height:1.5}
.tf-note b{color:var(--text);margin-right:8px;font-family:var(--mono);font-weight:600}
