/* 小芽 · 极简待办 */
/* 兼容性约定：目标含华为等旧系统 WebView（Chrome 74~83）。
   - 不用 flex 容器的 gap（Chrome 84+），统一用子元素 margin
   - 不用 inset 简写（Chrome 87+）、不用 dvh（Chrome 108+，vh 兜底） */
/* hidden 必须赢过任何 display:grid/flex（否则 .btn 之类藏不掉） */
[hidden]{display:none !important}
/* ==========================================================================
   设计令牌
   - 基础色：冷白底 + 中性 slate 文字（浅 / 深两套）
   - 模块色：五模块各一低饱和主题色，由 html[data-mod] 覆写
   - 组件只许用 --accent / --accent-soft / --accent-ink / --on-accent，
     填充用 accent、文字与图标用 accent-ink（浅色下比 accent 深一档）、
     实心主题底上的文字用 on-accent
   ========================================================================== */
:root{
  /* 基础色 · 浅 */
  --bg:#F7F8FB;
  --surface:#FFFFFF;
  --surface-top:#FCFCFE;
  --sheet:#FFFFFF;
  --text:#29364B;
  --text-1:#3A4860;
  --text-2:#97A2B5;
  --text-3:#B0BAC9;
  --line:#EAF0F5;
  --line-soft:#F3F7FB;
  --track:#EDF0F6;
  --ring-track:#D7E0EA;
  --ck-line:#CBD5E1;
  --meta-bg:#F2F6FA;
  --meta-tx:#97A2B5;

  /* 模块色 · 默认（待办雾蓝） */
  --accent:#6E9CBB;
  --accent-soft:#EAF2F8;
  --accent-ink:#4F7590;
  --on-accent:#22303F;
  --ring:#6E9CBB;
  --heat-0:#EDF3F0;
  --heat-done:#83BBA9;
  --stat-num:#29364B;

  /* 语义色 */
  --danger:#B4707A;
  --danger-soft:#F8EFF1;
  --late-tx:#A8737A;
  --late-bg:#F8EFF1;

  /* 存量别名（旧规则仍在引用，值收敛到新令牌，避免出现无 fallback 的空色） */
  --bg-soft:var(--line-soft);
  --green-soft:var(--accent-soft);
  --p1:#6E9CBB;
  --p2:#C99A5B;
  --p3:#B4707A;

  /* 悬浮导航 */
  --dock-bg:rgba(255,255,255,.87);
  --dock-bd:rgba(255,255,255,.92);
  --dock-off:#8D9CB2;
  --dock-shadow:0 1px 2px rgba(41,54,75,.04),0 10px 30px rgba(41,54,75,.10);

  --r-s:8px;
  --r-m:12px;
  --r-l:16px;
  --r-full:999px;
  --shadow:0 1px 2px rgba(41,54,75,.03), 0 6px 20px rgba(41,54,75,.05);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro SC","PingFang SC","HarmonyOS Sans SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  color-scheme:light;
}

/* ---------- 数字专属字体（仅数字/拉丁，中文自动回落系统字体） ---------- */
@font-face{
  font-family:'Barlow Semi Condensed';
  font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/barlow-semi-condensed-600.woff2') format('woff2');
}
.NumDIN,.hb-stat b,.heat-hd em,.hb-streak,.heat-grid i.sel::after{
  font-family:'Barlow Semi Condensed','Bahnschrift SemiCondensed','Bahnschrift','Arial Narrow',var(--font);
  font-variant-numeric:tabular-nums;
}

/* ---------- 五模块主题色 · 浅色 ---------- */
html[data-mod="todo"]{--accent:#6E9CBB;--accent-soft:#EAF2F8;--accent-ink:#4F7590;--ring:#6E9CBB}
html[data-mod="schedule"]{--accent:#788BD1;--accent-soft:#EDF0FC;--accent-ink:#5A6CAF;--ring:#788BD1}
html[data-mod="habit"]{--accent:#83BBA9;--accent-soft:#F0F8F4;--accent-ink:#5A8F7F;--ring:#83BBA9;--heat-0:#EDF3F0;--heat-done:#83BBA9;--stat-num:#1A1D21}
html[data-mod="goal"]{--accent:#A18AC2;--accent-soft:#F2EDF8;--accent-ink:#7C679C;--ring:#A18AC2}
html[data-mod="me"]{--accent:#B19A83;--accent-soft:#F3EEE8;--accent-ink:#8A7360;--ring:#B19A83;--stat-num:#927C65}

/* ---------- 深色模式 ---------- */
[data-theme="dark"]{
  --bg:#14171D;
  --surface:#1E232C;
  --surface-top:#191E26;
  --sheet:#282E38;
  --text:#EDF0F6;
  --text-1:#D8DEE9;
  --text-2:#A5AFC0;
  --text-3:#7D8797;
  --line:#343C49;
  --line-soft:#262D37;
  --track:#303846;
  --ring-track:#3A4450;
  --ck-line:#4A5462;
  --meta-bg:#262D37;
  --meta-tx:#A5AFC0;

  --accent:#91BBD6;
  --accent-soft:#20313E;
  --accent-ink:#91BBD6;
  --on-accent:#14202A;
  --ring:#91BBD6;
  --heat-0:#2E3B36;
  --heat-done:#97CEBC;
  --stat-num:#D0B79D;

  --danger:#CE9096;
  --danger-soft:#2C2226;
  --late-tx:#CE9096;
  --late-bg:#2C2226;

  --bg-soft:#262D37;
  --green-soft:#20313E;
  --p1:#91BBD6;
  --p2:#D2A86C;
  --p3:#CE9096;

  --dock-bg:rgba(36,43,53,.91);
  --dock-bd:#414B5A;
  --dock-off:#7E8A9C;
  --dock-shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.45);

  --shadow:0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.45);
  color-scheme:dark;
}
/* ---------- 五模块主题色 · 深色 ---------- */
html[data-theme="dark"][data-mod="todo"]{--accent:#91BBD6;--accent-soft:#20313E;--accent-ink:#91BBD6;--ring:#91BBD6}
html[data-theme="dark"][data-mod="schedule"]{--accent:#A3B2EF;--accent-soft:#282E47;--accent-ink:#A3B2EF;--ring:#A3B2EF}
html[data-theme="dark"][data-mod="habit"]{--accent:#97CEBC;--accent-soft:#1E352D;--accent-ink:#97CEBC;--ring:#97CEBC;--heat-0:#2E3B36;--heat-done:#97CEBC;--stat-num:#FFFFFF}
html[data-theme="dark"][data-mod="goal"]{--accent:#C0A8DE;--accent-soft:#342A43;--accent-ink:#C0A8DE;--ring:#C0A8DE}
html[data-theme="dark"][data-mod="me"]{--accent:#D0B79D;--accent-soft:#3A3028;--accent-ink:#D0B79D;--ring:#D0B79D;--stat-num:#D0B79D}
[data-theme="dark"] .ic-moon{display:none}
.ic-sun{display:none}
[data-theme="dark"] .ic-sun{display:block}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--text);font-family:var(--font);
  font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,textarea{font-family:inherit;font-size:inherit;color:inherit}
input:focus,textarea:focus,button:focus{outline:none}
input:focus-visible,button:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.app{
  max-width:540px;margin:0 auto;
  min-height:100vh;min-height:100dvh;
  /* 底部给悬浮胶囊导航留位：60 高 + 22 下边距 + 余量 */
  padding:0 20px calc(104px + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;
}

/* ---------- 五模块屏 ---------- */
.screen{display:none}
.screen.is-active{display:flex;flex-direction:column;flex:1;min-height:0}
.scr-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  padding:calc(18px + env(safe-area-inset-top)) 0 12px;
}
.scr-date{margin:0 0 8px;font-size:13px;color:var(--text-2);letter-spacing:.02em}
.scr-title{margin:0;font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.02em}
/* 空状态 */
.empty{
  margin:56px 4px 0;text-align:center;
  color:var(--text-2);font-size:13.5px;line-height:1.9;
}
.empty .empty-ico{
  width:56px;height:56px;margin:0 auto 16px;border-radius:50%;
  background:var(--accent-soft);color:var(--accent-ink);
  display:grid;place-items:center;
}
.empty .empty-ico svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.empty b{display:block;margin-bottom:4px;font-size:15px;font-weight:600;color:var(--text)}

/* ---------- 悬浮胶囊导航 ---------- */
.dock{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(22px + env(safe-area-inset-bottom));
  width:calc(100% - 32px);max-width:508px;height:60px;border-radius:30px;
  background:var(--dock-bg);border:1px solid var(--dock-bd);
  -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
  box-shadow:var(--dock-shadow);
  display:flex;align-items:center;justify-content:space-around;
  z-index:30;
}
.dk{
  width:56px;height:44px;border-radius:22px;display:grid;place-items:center;
  color:var(--dock-off);transition:color .18s ease,background .18s ease;
}
.dk svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.dk.on{color:var(--accent-ink);background:var(--accent-soft)}
.dk:active{transform:scale(.96)}

/* ---------- 我的 · 菜单 ---------- */
.menu{
  margin-top:8px;background:var(--surface);border:1px solid var(--line);
  border-radius:16px;overflow:hidden;
}
.mrow{
  display:flex;align-items:center;width:100%;text-align:left;
  padding:14px 16px;font-size:15px;color:var(--text);
  border-top:1px solid var(--line-soft);
}
.mrow:first-child{border-top:0}
.mrow svg{width:20px;height:20px;margin-right:12px;flex:none;color:var(--accent-ink);fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.mrow .val{margin-left:auto;font-size:13.5px;color:var(--text-2)}
.mrow:active{background:var(--line-soft)}
.mcard{
  margin-top:8px;padding:18px 16px;border-radius:16px;
  background:var(--accent-soft);border:1px solid transparent;
  display:flex;align-items:center;
}
.mcard .mavatar{
  width:44px;height:44px;border-radius:50%;margin-right:14px;flex:none;
  background:linear-gradient(140deg,#E6D9CB,#C6B39D);
  display:grid;place-items:center;color:#fff;font-size:17px;font-weight:600;
}
.mcard .mname{margin:0;font-size:16px;font-weight:600;color:var(--text)}
.mcard .msub{margin:4px 0 0;font-size:12.5px;color:var(--text-2)}

/* ---------- 顶部 ---------- */
.topbar{
  display:flex;align-items:flex-end;justify-content:space-between;
  padding:calc(18px + env(safe-area-inset-top)) 0 12px;
}
.date-line{margin:0 0 8px;font-size:13px;color:var(--text-3);letter-spacing:.02em}
.topbar h1{margin:0;font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.02em}
/* 图标组高度与标题行高一致，底对齐后中心自然落在标题中线上 */
.top-actions{display:flex;align-items:center;height:28px}
.top-actions > * + *{margin-left:1px}
.brand-title{margin:0;font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;min-height:28px}
.icon-btn{
  width:34px;height:34px;border-radius:11px;display:grid;place-items:center;
  color:var(--text-2);transition:background .18s ease,color .18s ease;
}
.icon-btn svg{width:20px;height:20px}
.icon-btn:hover{background:var(--line-soft);color:var(--text)}
.icon-btn.small{width:32px;height:32px;border-radius:10px}

/* ---------- 设备被移除提示条 ---------- */
.revoked-bar[hidden]{display:none}
.revoked-bar{
  display:flex;align-items:center;margin-bottom:12px;
  padding:10px 12px;border-radius:12px;
  background:#FDECEC;color:#A93A3E;font-size:12.5px;line-height:1.5;
}
.revoked-bar svg{width:16px;height:16px;flex:none;margin-right:8px}
.revoked-txt{flex:1}
.revoked-btn{
  flex:none;margin-left:10px;padding:4px 10px;border-radius:8px;
  background:#F6D6D7;color:#8E2D31;font-size:12px;font-weight:500;
}
.revoked-x{
  flex:none;margin-left:2px;width:22px;height:22px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  color:inherit;opacity:.5;font-size:16px;line-height:1;
}
.revoked-x:hover{opacity:.9;background:rgba(0,0,0,.06)}
.revoked-note{color:#A93A3E}
.revoked-note[hidden]{display:none}
[data-theme="dark"] .revoked-bar{background:#3A2225;color:#F0A6A9}
[data-theme="dark"] .revoked-btn{background:#4E2C30;color:#F4B7BA}
[data-theme="dark"] .revoked-x:hover{background:rgba(255,255,255,.1)}
[data-theme="dark"] .revoked-note{color:#F0A6A9}

/* ---------- 版本行 ---------- */
.version-line{
  margin:18px 0 0;text-align:center;
  font-size:11.5px;color:var(--text-3);letter-spacing:.2px;
}

/* ---------- 搜索 ---------- */
/* hidden 属性靠 UA 样式 display:none 生效，会被下面的 display:flex 覆盖，需显式声明 */
.search-wrap[hidden]{display:none}
.search-wrap{
  display:flex;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:0 12px;height:46px;margin-bottom:12px;
}
.search-wrap svg{width:18px;height:18px;color:var(--text-3);flex:none;margin-right:10px}
.search-wrap input{flex:1;border:0;background:none;height:100%;font-size:15px;min-width:0}
.search-wrap input::-webkit-search-cancel-button{display:none}
.text-btn{color:var(--accent-ink);font-size:14px;padding:4px;margin-left:10px;flex:none}

/* ---------- 分段导航（卡片式分段控件） ---------- */
.segments{
  display:flex;align-items:center;gap:2px;
  padding:3px;margin-top:12px;margin-bottom:2px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;
}
.seg{
  position:relative;flex:1;text-align:center;
  padding:7px 0;border-radius:9px;font-size:14.5px;color:var(--text-3);
  transition:color .2s ease,background .2s ease;font-weight:450;
}
.seg.active{color:var(--text);background:var(--line-soft);font-weight:600}
.seg .badge{
  display:inline-block;margin-left:5px;font-size:11px;color:var(--text-3);
  font-variant-numeric:tabular-nums;
}

/* ---------- 快速添加 ---------- */
.quickadd{padding:14px 0 4px}
.quickadd-inner{
  display:flex;align-items:center;
  background:var(--surface);border:1px solid var(--line);border-radius:14px;
  height:48px;padding:0 8px 0 14px;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.quickadd-inner:focus-within{border-color:#D4D4CE;box-shadow:var(--shadow)}
.quickadd-inner .plus{color:var(--text-3);font-size:20px;line-height:1;font-weight:300;margin-right:10px}
.quickadd-inner input{flex:1;border:0;background:none;height:100%;font-size:15px;min-width:0}
.quickadd-inner input::placeholder{color:var(--text-3)}
.quick-submit{
  width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  background:var(--text);color:#fff;flex:none;opacity:.16;transition:opacity .2s ease,transform .12s ease;
  margin-left:10px;
}
.quick-submit svg{width:16px;height:16px}
.quickadd-inner.is-active .quick-submit{opacity:1}
.quick-submit:active{transform:scale(.92)}
.hint{
  margin:8px 2px 0;font-size:12px;color:var(--text-3);
  opacity:.85;transition:opacity .2s ease;
}
.hint b{font-weight:500;color:var(--text-2);background:var(--line-soft);border-radius:5px;padding:1px 4px;margin:0 1px}
.hint.hide{display:none}

/* ---------- 列表 ---------- */
.list{flex:1;padding-top:6px}
.group{margin-top:20px}
.group-head{
  display:flex;align-items:center;gap:6px;
  padding:0 2px 8px;
  cursor:pointer;-webkit-user-select:none;user-select:none;
}
.group-caret{
  flex:none;width:0;height:0;
  border-left:4.5px solid transparent;border-right:4.5px solid transparent;
  border-top:5px solid var(--text-3);
  transition:transform .2s ease;
}
.group-caret.folded{transform:rotate(-90deg)}
.group-title{
  font-size:13px;font-weight:600;letter-spacing:.05em;color:var(--text-3);
  text-transform:uppercase;
}
.group-title.is-danger{color:var(--danger)}
.group-count{font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.tasks{display:flex;flex-direction:column}

.task{
  position:relative;display:flex;align-items:flex-start;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:12px 12px 11px 12px;margin-bottom:7px;overflow:hidden;
  transition:opacity .25s ease, transform .25s ease, border-color .2s ease;
}
.task > .check{margin-right:11px;margin-top:1px}
.task:last-child{margin-bottom:0}
.task-main{flex:1;min-width:0;cursor:pointer}
.task-title{
  /* 方案 C：字号降一档 + 中灰，避免标题过黑抢走焦点 */
  font-size:14.5px;line-height:1.45;word-break:break-word;color:#575C62;
  transition:color .2s ease;
}
.task-meta{display:flex;align-items:center;flex-wrap:wrap;margin-top:5px}
.task-meta > *{margin-right:5px;margin-top:3px}
.meta-item{
  /* 方案 C：标签整体缩小并降一档灰度，随标题一起退后 */
  font-size:11px;line-height:1.5;color:#ADB1B6;
  display:inline-flex;align-items:center;white-space:nowrap;
  padding:1px 7px;border-radius:6px;background:#F6F6F3;
}
/* 今天：降饱和蓝，与整体淡度匹配 */
.meta-item.due-today{color:#5B8CE8;background:#EDF3FD}
/* 逾期：降饱和红 + 去粗体，保留警示但不再跳 */
.meta-item.overdue{color:#BE6A74;background:#FAF1F2;font-weight:400}
.meta-dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.85;margin-right:4px}
.list-tag{display:inline-flex;align-items:center}
.list-tag i{width:6px;height:6px;border-radius:2px;display:block;margin-right:4px}
.note-flag{color:var(--text-3)}

/* 勾选圈 */
.check{
  flex:none;width:24px;height:24px;margin-top:0;border-radius:50%;
  border:2px solid #C9CDC2;background:transparent;
  display:grid;place-items:center;transition:all .2s ease;position:relative;
}
/* 点击热区放大到 44×44，视觉仍是 24px 的圈 */
.check::after{content:"";position:absolute;left:-10px;top:-10px;right:-10px;bottom:-10px;border-radius:50%}
.check svg{width:12px;height:12px;stroke:var(--on-accent);stroke-width:2.4;fill:none;opacity:0;transform:scale(.6);transition:all .2s ease}
.check:hover{border-color:var(--text-3)}
/* 圈色即优先级：低蓝 / 中橙 / 高红 */
.check.p1{border-color:var(--p1)}
.check.p2{border-color:var(--p2)}
.check.p3{border-color:var(--p3)}
.check.on{background:var(--accent);border-color:var(--accent)}
/* 已完成：统一主题绿，不继承优先级色 */
.check.on.p1,.check.on.p2,.check.on.p3{background:var(--accent);border-color:var(--accent)}
.check.on svg{opacity:1;transform:scale(1)}

.task.completing{opacity:0;transform:translateX(6px)}
.task.done .task-title{color:var(--text-3);text-decoration:line-through;text-decoration-color:#D6D6D1}
.task.done{background:var(--surface);border-color:var(--line-soft)}

/* 空状态 */
.empty{
  padding:64px 20px;text-align:center;color:var(--text-3);
}
.sprout-mark{
  width:56px;height:56px;margin:0 auto 14px;
  display:grid;place-items:center;color:var(--accent-ink);
}
.sprout-mark svg{width:28px;height:28px}
.sprout-mark img{width:34px;height:34px;object-fit:contain;opacity:.5;display:block}
.empty p{margin:0;font-size:14.5px;line-height:1.7}
.empty small{display:block;margin-top:6px;font-size:12.5px;opacity:.75}

/* 今日进度行（标题下另起一行）：任务卡片样式，圆环进度 + 动态文案（种子意象） */
.growth-line{
  display:flex;align-items:center;gap:12px;
  margin-top:14px;padding:12px 14px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
}
.growth-line .growth-ring{display:block;flex:none;width:46px;height:46px}
.growth-line svg{display:block;width:100%;height:100%}
.growth-col{display:flex;flex-direction:column;min-width:0}
.growth-main{font-size:14px;color:var(--text-2);line-height:1.35}
.growth-sub{margin-top:3px;font-size:12px;color:var(--text-3);line-height:1.35}
.stat-hint{margin:2px 0 10px;font-size:13px;color:var(--text-3)}

.footer-note{margin:36px 0 0;text-align:center;font-size:11.5px;color:#C4C4BD;letter-spacing:.02em}

/* ---------- 遮罩 & 抽屉 ---------- */
.backdrop{
  position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(23,24,26,.28);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  z-index:40;animation:fade .22s ease;
}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:41;
  max-width:540px;margin:0 auto;
  background:var(--surface);border-radius:22px 22px 0 0;
  padding:10px 20px calc(20px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 40px rgba(23,24,26,.12);
  animation:slideUp .28s cubic-bezier(.2,.8,.2,1);
  max-height:88vh;max-height:88dvh;overflow-y:auto;
}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet.closing{animation:slideDown .2s ease forwards}
@keyframes slideDown{to{transform:translateY(100%);opacity:.6}}
.sheet-grip{width:36px;height:4px;border-radius:4px;background:#E4E4DE;margin:0 auto 14px}
.detail-head{display:flex;align-items:flex-start;margin-bottom:6px}
.detail-head > * + *{margin-left:8px}
.sheet-title{margin:0;font-size:17px;font-weight:600;flex:1}
.d-title{
  flex:1;border:0;background:none;font-size:18px;font-weight:600;line-height:1.4;
  padding:4px 0;min-width:0;
}
.d-title::placeholder{color:#C9C9C2;font-weight:500}
/* Chrome 默认在输入框外画一圈蓝色焦点框，会把上方「任务/日程」小标题压住；光标本身已足够表达聚焦 */
.d-title:focus{outline:none}
.d-note{
  width:100%;border:0;background:var(--line-soft);border-radius:12px;
  padding:11px 13px;font-size:14.5px;line-height:1.6;resize:none;margin:6px 0 4px;
}
.d-note::placeholder{color:var(--text-3)}

.field{padding:14px 0;border-top:1px solid var(--line-soft);margin-top:8px}
.field label{display:block;font-size:12px;font-weight:600;letter-spacing:.05em;color:var(--text-3);margin-bottom:10px}
.chips{display:flex;flex-wrap:wrap;align-items:center}
.chips > *{margin:0 8px 8px 0}
.chip{
  display:inline-flex;align-items:center;
  padding:7px 13px;border-radius:var(--r-full);background:var(--line-soft);
  border:1px solid transparent;
  font-size:14px;color:var(--text-2);transition:all .16s ease;
}
.chip:hover{background:#EFEFEA}
.chip.on{background:var(--accent-soft);color:var(--accent-ink);border-color:var(--accent)}
.chip > * + *{margin-left:6px}
.chip .dot{width:7px;height:7px;border-radius:50%;display:block;margin-right:6px}
.chip .dot.p3{background:var(--p3)}
.chip .dot.p2{background:var(--p2)}
.chip .dot.p1{background:var(--p1)}
.chip.ghost{background:none;border:1px dashed var(--ck-line);color:var(--text-2)}
.chip.ghost.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);font-weight:500}

.sheet-actions{display:flex;margin-top:20px}
.sheet-actions > * + *{margin-left:10px}
.btn{
  flex:1;height:46px;border-radius:var(--r-m);font-size:15px;font-weight:500;
  display:grid;place-items:center;transition:all .16s ease;
}
.btn.primary{background:var(--accent);color:var(--on-accent);font-weight:600}
.btn.primary:active{transform:scale(.99);opacity:.9}
.btn:disabled{opacity:.75;pointer-events:none}
.btn.loading::before{
  content:"";width:14px;height:14px;margin-right:8px;border-radius:50%;
  border:2px solid rgba(255,255,255,.35);border-top-color:#fff;
  display:inline-block;vertical-align:-2px;
  animation:btn-spin .8s linear infinite;
}
@keyframes btn-spin{to{transform:rotate(360deg)}}
.btn.ghost{background:var(--line-soft);color:var(--text-2)}
.btn.ghost:hover{background:#EFEFEA}
.btn.danger{color:var(--danger);background:var(--surface);border:1px solid #F0C9CC}
.btn.danger:hover{background:#FDF4F4}

/* ---------- 统计 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0 4px}
.stat{background:var(--bg);border-radius:14px;padding:14px 12px}
.stat b{display:block;font-size:24px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--text-3)}
.section-label{font-size:12px;font-weight:600;letter-spacing:.05em;color:var(--text-3);margin:20px 0 10px}
.chart{display:flex;align-items:flex-end;height:96px;padding:0 2px}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end}
.chart .col + .col{margin-left:8px}
.chart .bar{width:100%;max-width:26px;background:var(--line-soft);border-radius:6px 6px 3px 3px;transition:height .5s cubic-bezier(.2,.8,.2,1);position:relative}
.chart .bar.has{background:#9DCBAD}
.chart .bar.has.today{background:var(--accent)}
.chart .bar.today{background:var(--accent)}
.chart .lab{font-size:11px;color:var(--text-3);margin-top:6px}
.chart .val{position:absolute;top:-16px;left:0;right:0;text-align:center;font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums}
.bars{display:flex;flex-direction:column}
.bar-row{display:flex;flex-direction:column}
.bar-row + .bar-row{margin-top:12px}
.bar-row .bl{display:flex;justify-content:space-between;font-size:13px;color:var(--text-2)}
.bar-row .bt{height:5px;border-radius:5px;background:var(--line-soft);overflow:hidden;margin-top:6px}
.bar-row .bf{height:100%;border-radius:5px;transition:width .5s ease}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(26px + env(safe-area-inset-bottom));
  transform:translate(-50%,8px);z-index:60;
  display:flex;align-items:center;
  background:#22242A;color:#fff;border-radius:12px;
  padding:11px 16px;font-size:13.5px;
  box-shadow:0 8px 28px rgba(0,0,0,.18);opacity:0;
  transition:opacity .22s ease, transform .22s ease;
  max-width:calc(100vw - 40px);
}
.toast > * + *{margin-left:14px}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast button{color:#8FD4AE;font-size:13.5px;font-weight:500;flex:none}

/* ---------- 同步 ---------- */
.sync-dot{
  position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%;
  background:transparent;transition:background .25s ease,box-shadow .25s ease;
}
#syncBtn{position:relative}
.sync-dot[data-state="syncing"]{background:var(--accent);animation:pulse 1.1s infinite ease-in-out}
.sync-dot[data-state="ok"]{background:var(--accent)}
.sync-dot[data-state="error"]{background:var(--danger)}
.sync-dot[data-state="off"]{display:none}
@keyframes pulse{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}

.sheet-desc{margin:2px 0 18px;font-size:14px;line-height:1.7;color:var(--text-2)}
.sheet-desc.small{font-size:12.5px;color:var(--text-3);margin:10px 0 0}
.sheet-label{font-size:12px;font-weight:600;letter-spacing:.05em;color:var(--text-3);margin:6px 0 8px}
.code-box{
  display:flex;align-items:center;justify-content:space-between;
  background:var(--bg);border:1px dashed #DCDCD6;border-radius:14px;
  padding:14px 16px;
}
.code-box > * + *{margin-left:12px}
.code{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:19px;letter-spacing:.12em;font-weight:600;color:var(--text);
}
.input-line{
  width:100%;height:46px;border:1px solid var(--line);border-radius:12px;
  padding:0 13px;font-size:15px;background:var(--surface);
  transition:border-color .18s ease;
}
.input-line:focus{border-color:#D4D4CE}
.field-hint{margin:7px 2px 0;font-size:11.5px;line-height:1.5;color:var(--text-3)}
.warn-note{
  margin:18px 0 0;padding:11px 13px;border-radius:11px;
  background:#FDF7EC;color:#8A6A2F;font-size:12px;line-height:1.65;
}
.owner-note{
  margin:10px 0 0;padding:10px 13px;border-radius:11px;
  background:var(--green-soft,#EEF6F0);font-size:12px;line-height:1.7;
}
.owner-note .owner-line{color:var(--text-2)}
.owner-note .owner-line b{color:var(--accent-ink);font-weight:600}
.owner-note .owner-hint{color:var(--text-3);font-size:11.5px}
[data-theme="dark"] .owner-note{background:#1F2A24}
[data-theme="dark"] .owner-note .owner-line{color:#B9C4BD}
.devices{margin:16px 0 0;padding:12px 13px;border-radius:11px;background:var(--bg-soft,#F4F4F1)}
.devices-head{display:flex;align-items:baseline;margin-bottom:2px}
.devices-head .sheet-label{margin:0}
.devices-count{margin-left:auto;font-size:11.5px;color:var(--text-3);font-variant-numeric:tabular-nums}
.device-row{display:flex;align-items:center;padding:9px 0;border-top:1px solid var(--line,#ECECE7)}
.device-row:first-child{border-top:0}
.device-meta{flex:1;min-width:0}
.device-name{margin:0;font-size:13px;color:var(--text-1);display:flex;align-items:center}
.device-name span.device-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.device-badge{margin-left:6px;font-size:10.5px;line-height:1.5;padding:1px 6px;border-radius:5px;
  background:var(--accent-soft);color:var(--accent-ink);flex:none}
.device-sub{margin:2px 0 0;font-size:11.5px;color:var(--text-3)}
.device-row .text-btn{flex:none;margin-left:10px;font-size:12px;color:var(--text-3)}
.device-row .text-btn.danger{color:var(--danger)}
.devices .field-hint{margin-top:6px}
[data-theme="dark"] .devices{background:#1B1F1D}
[data-theme="dark"] .device-row{border-top-color:#2A302C}
.sync-actions{display:flex;margin-top:18px}
.sync-actions > * + *{margin-left:10px}
#syncJoinBox .input-line{margin-bottom:4px}

/* ---------- 账号 ---------- */
.account{margin-bottom:4px}
.account-row{display:flex;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.avatar{
  width:40px;height:40px;flex:0 0 40px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--accent-soft);color:var(--accent-ink);
  font-size:17px;font-weight:500;text-transform:uppercase;
}
.account-meta{flex:1;min-width:0;margin:0 12px}
.account-name{margin:0;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-sub{margin:2px 0 0;font-size:12px;color:var(--text-3)}
.small-btn{margin-top:10px;width:100%;font-size:13px;padding:9px 12px}
.divider{
  display:flex;align-items:center;
  margin:18px 0 14px;color:var(--text-3);font-size:12px;
}
.divider > *{margin:0 10px}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}

/* ---------- 子任务：列表内 ---------- */
.task.has-subs{border-bottom:0;padding-bottom:9px}
.task-expand{
  flex:none;width:28px;height:28px;margin:1px 0 0 4px;border-radius:50%;
  display:grid;place-items:center;color:var(--text-3);
  transition:transform .2s ease,color .2s ease,background .2s ease;
}
.task-expand svg{width:16px;height:16px}
.task-expand:hover{background:var(--line-soft);color:var(--text-2)}
.task-expand.on{transform:rotate(180deg);color:var(--text-2)}

.sub-list{padding-left:34px;padding-bottom:10px;border-bottom:1px solid var(--line-soft)}
.sub-list .task.sub{padding:6px 2px 6px 10px;border:0;background:transparent;border-radius:var(--r-s);align-items:center;margin-bottom:0}
.task.sub > .check{width:19px;height:19px;margin:0 10px 0 0;border-width:1.4px}
.task.sub > .check svg{width:10px;height:10px}
.task.sub .task-title{font-size:13.5px;color:#7A7F85}
.task.sub.done .task-title{color:var(--text-3)}
.sub-progress{font-variant-numeric:tabular-nums;color:var(--text-3)}
.sub-progress.all{color:var(--accent-ink)}

/* ---------- 子任务：详情面板内 ---------- */
.sub-count{margin-left:8px;font-size:12px;color:var(--text-3);font-variant-numeric:tabular-nums}
.sub-edit-list:empty{display:none}
.sub-item{display:flex;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.sub-item:last-child{border-bottom:0}
.sub-check{
  flex:none;width:20px;height:20px;margin-right:10px;border-radius:50%;
  border:1.5px solid #D6D6D1;background:transparent;display:grid;place-items:center;
  transition:background .2s ease,border-color .2s ease;
}
.sub-check svg{width:11px;height:11px;color:var(--on-accent);opacity:0;transform:scale(.6);transition:opacity .2s ease,transform .2s ease}
.sub-check.on{background:var(--text);border-color:var(--text)}
.sub-check.on svg{opacity:1;transform:scale(1)}
.sub-title{flex:1;min-width:0;font-size:14.5px;line-height:1.5;word-break:break-word}
.sub-item.done .sub-title{color:var(--text-3);text-decoration:line-through;text-decoration-color:#D6D6D1}
.sub-del{flex:none;width:26px;height:26px;margin-left:8px;border-radius:50%;display:grid;place-items:center;color:var(--text-3)}
.sub-del svg{width:13px;height:13px}
.sub-del:hover{background:var(--line-soft);color:var(--danger)}
.sub-add{
  display:flex;align-items:center;margin-top:4px;padding:9px 12px;
  border-radius:12px;background:var(--bg);border:1px solid var(--line);
}
.sub-add svg{flex:none;width:15px;height:15px;color:var(--text-3);margin-right:8px}
.sub-add input{flex:1;min-width:0;border:0;background:transparent;padding:0;font-size:14px;line-height:1.5}
.sub-add input::placeholder{color:var(--text-3)}
#detailSheet.is-sub .field{display:none}

/* ---------- AI 添加待办 ---------- */
.ai-title{margin:0;font-size:17px;font-weight:600;flex:1}
.ai-sub{margin:0 0 12px;font-size:13px;color:var(--text-2);line-height:1.6}
.ai-no-mic{margin:-4px 0 12px;font-size:12px;color:var(--text-3);line-height:1.6}
.ai-mic-wrap{margin-bottom:12px}
.ai-mic-pill{
  display:flex;align-items:center;justify-content:center;
  width:100%;height:52px;border-radius:var(--r-full);
  background:var(--accent-soft);color:var(--accent-ink);
  font-size:15px;font-weight:500;
  transition:background .2s ease,color .2s ease,transform .15s ease;
}
.ai-mic-pill svg{width:20px;height:20px;flex:none}
.ai-mic-pill .ic-stop{display:none}
.ai-mic-pill:active{transform:scale(.985)}
.ai-mic-pill.rec{background:var(--danger);color:#fff;animation:ai-pulse 1.4s ease infinite}
.ai-mic-pill.rec .ic-mic{display:none}
.ai-mic-pill.rec .ic-stop{display:block}
.ai-mic-pill.rec #aiMicState{margin-right:2px}
@keyframes ai-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(229,72,77,.35)}
  50%{box-shadow:0 0 0 12px rgba(229,72,77,0)}
}
.wave{display:none;align-items:center;height:20px;margin-left:10px}
.ai-mic-pill.rec .wave{display:inline-flex}
.wave i{width:3px;height:14px;margin-right:3px;border-radius:2px;background:currentColor;
  transform:scaleY(.35);transform-origin:center;animation:wave 1s ease infinite}
.wave i:nth-child(2){animation-delay:.15s}
.wave i:nth-child(3){animation-delay:.3s}
.wave i:nth-child(4){animation-delay:.45s}
.ai-mic-pill #aiMicState{font-variant-numeric:tabular-nums}
@keyframes wave{0%,100%{transform:scaleY(.3)}50%{transform:scaleY(1)}}
#aiText{width:100%}
#aiDrafts{max-height:46vh;overflow-y:auto;margin-bottom:4px}
.ai-item{display:flex;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.ai-item:last-child{border-bottom:0}
.ai-item > .check{margin:2px 10px 0 0}
.ai-item.off .ai-title-in{color:var(--text-3);text-decoration:line-through}
.ai-item.sub{padding-left:26px}
.ai-item.sub .ai-title-in{font-size:13px}
.ai-sub-badge{display:inline-block;font-size:11px;color:var(--text-3);background:var(--line-soft);
  border-radius:6px;padding:2px 7px;line-height:1.5}
.ai-item-main{flex:1;min-width:0}
.ai-title-in{
  width:100%;border:0;background:transparent;padding:2px 0;
  font-size:15px;line-height:1.45;border-bottom:1px dashed transparent;
}
.ai-title-in:focus{border-bottom-color:var(--accent)}
.ai-item-meta{display:flex;align-items:center;flex-wrap:wrap;margin-top:4px}
.ai-item-meta > *{margin-right:6px;margin-top:4px}
.ai-date-in,.ai-time-in,.ai-list-in{
  font-size:12px;color:var(--text-2);background:var(--bg);border:1px solid var(--line);
  border-radius:8px;padding:4px 6px;font-family:inherit;
}
.ai-list-in{max-width:130px}
.ai-parent-in{
  font-size:12px;color:var(--text-2);background:var(--bg);border:1px solid var(--line);
  border-radius:8px;padding:4px 6px;font-family:inherit;max-width:190px;margin-top:6px;
}
.ai-note{margin:4px 0 0;font-size:12px;color:var(--text-3)}
.ai-err{margin:10px 0 0;font-size:13px;color:var(--danger);text-align:center}

@media (max-width:360px){
  .app{padding:0 16px 40px}
  .topbar h1,.brand-title{font-size:20px}
  .growth-line .growth-ring{width:44px;height:44px}
  .growth-main{font-size:13.5px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ---------- 深色模式：组件覆写（覆盖各处写死的浅色值） ---------- */
[data-theme="dark"] .check,
[data-theme="dark"] .sub-check{border-color:#4A5250}
[data-theme="dark"] .check.p1{border-color:var(--p1)}
[data-theme="dark"] .check.p2{border-color:var(--p2)}
[data-theme="dark"] .check.p3{border-color:var(--p3)}
/* 已完成优先：压掉上面的优先级圈色（深色下不跟随优先级） */
[data-theme="dark"] .check.on,
[data-theme="dark"] .check.on.p1,
[data-theme="dark"] .check.on.p2,
[data-theme="dark"] .check.on.p3{background:var(--accent);border-color:var(--accent)}
[data-theme="dark"] .task-title{color:#CFD3D1}
[data-theme="dark"] .task.sub .task-title{color:#A9AFAD}
[data-theme="dark"] .meta-item{color:#787E7C;background:#232829}
[data-theme="dark"] .meta-item.due-today{color:#7FA6D0;background:#1D2836}
[data-theme="dark"] .meta-item.overdue{color:#CE8B92;background:#322527}
[data-theme="dark"] .check:hover{border-color:var(--text-3)}
[data-theme="dark"] .quick-submit{color:#15181A}
[data-theme="dark"] .sub-check.on svg{color:#15181A}
[data-theme="dark"] .task.done .task-title,
[data-theme="dark"] .sub-item.done .sub-title{text-decoration-color:#4A5250}
[data-theme="dark"] .footer-note{color:#565C5B}
[data-theme="dark"] .backdrop{background:rgba(0,0,0,.52)}
[data-theme="dark"] .sheet{box-shadow:0 -8px 40px rgba(0,0,0,.5)}
[data-theme="dark"] .sheet-grip{background:#3A4143}
[data-theme="dark"] .d-title::placeholder{color:#686F6E}
[data-theme="dark"] .quickadd-inner:focus-within,
[data-theme="dark"] .input-line:focus{border-color:#454C4F}
[data-theme="dark"] .chip:hover,
[data-theme="dark"] .btn.ghost:hover{background:#262B2E}
[data-theme="dark"] .btn.danger{border-color:#5A3236}
[data-theme="dark"] .btn.danger:hover{background:#2A2124}
[data-theme="dark"] .code-box{border-color:#3A4143}
[data-theme="dark"] .warn-note{background:#332B1D;color:#D9B36A}
[data-theme="dark"] .toast{background:#2A2F33;box-shadow:0 8px 28px rgba(0,0,0,.4)}
[data-theme="dark"] .toast button{color:#6FCF9B}

/* ==========================================================================
   打卡模块
   - 长按 0.6s 打卡：外圈 conic 走满 + 内部实心圆渐显，松手回退
   - 已完成：灰细环保留，环内 12px 实心主题色小圆（不描边、不转绿）
   - 轻点卡片展开 4×7 = 28 天热力图
   ========================================================================== */
.hb-stats{display:flex;margin:14px 0 2px}
.hb-stat{flex:1;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:11px 12px}
.hb-stat+.hb-stat{margin-left:8px}
.hb-stat b{display:block;font-size:18px;font-weight:700;letter-spacing:-.02em;color:var(--stat-num);font-variant-numeric:tabular-nums}
.hb-stat span{display:block;margin-top:2px;font-size:11px;color:var(--text-2)}

.hb-hint{display:flex;align-items:flex-start;margin:12px 2px 0;font-size:11.5px;color:var(--text-3);line-height:1.55}
.hb-hint svg{flex:0 0 14px;width:14px;height:14px;margin:1px 6px 0 0;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round}

.hb-group{display:flex;align-items:baseline;margin:18px 2px 8px;font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--text-2)}
.hb-group em{font-style:normal;margin-left:6px;font-weight:400;color:var(--text-3)}

/* 软糖卡：每个习惯一个马卡龙专属色，圆环/徽章/周点/热力图/卡底全部跟随 */
.hb-card{
  --hbc1:#A9CDB4;--hbc2:#6E9B7E;--hbc0:#EEF4EF;--hbc3:#DCEAE1;--hbc4:#2E4A3A;
  margin-bottom:8px;
  background:linear-gradient(160deg,var(--hbc0) 0%,var(--surface) 70%);
  border:1px solid transparent;border-radius:14px;overflow:hidden;
  transition:border-color .18s ease,background .18s ease}
.hb-card.mc-berry{--hbc1:#F1B8C8;--hbc2:#C97A93;--hbc0:#FBF0F3;--hbc3:#F8DFE7;--hbc4:#5C3745}
.hb-card.mc-taro{--hbc1:#C5B4E0;--hbc2:#937FBF;--hbc0:#F2EFF8;--hbc3:#E6E0F3;--hbc4:#413866}
.hb-card.mc-lemon{--hbc1:#EFD9A0;--hbc2:#BC9A55;--hbc0:#FAF5E9;--hbc3:#F5EBCF;--hbc4:#5C4A22}
.hb-card.mc-peach{--hbc1:#F3C6A8;--hbc2:#C98F62;--hbc0:#FBF1EA;--hbc3:#F9E6D7;--hbc4:#5E4128}
.hb-card.mc-sky{--hbc1:#AECDE8;--hbc2:#6F9CC4;--hbc0:#EDF3F9;--hbc3:#DEEAF6;--hbc4:#2F4A63}
.hb-card.done{background:var(--hbc0)}
.hb-card.charging{border-color:var(--hbc1)}
.hb-row{display:flex;align-items:center;padding:11px 13px 9px;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}

/* 勾选圆：灰细环常驻，长按走 conic 进度，内部实心圆跟随 */
.hb-check{position:relative;flex:0 0 26px;width:26px;height:26px;border-radius:50%;border:2px solid var(--hbc1);box-sizing:border-box}
.hb-ring{position:absolute;left:-2px;top:-2px;right:-2px;bottom:-2px;border-radius:50%;
  background:conic-gradient(var(--hbc1) calc(var(--p,0) * 1%), rgba(0,0,0,0) 0);
  -webkit-mask:radial-gradient(farthest-side, rgba(0,0,0,0) calc(100% - 3px), #000 calc(100% - 2.2px));
  mask:radial-gradient(farthest-side, rgba(0,0,0,0) calc(100% - 3px), #000 calc(100% - 2.2px));
  opacity:0;transition:opacity .14s ease}
.hb-card.charging .hb-ring{opacity:1}
.hb-fill{position:absolute;left:4px;top:4px;right:4px;bottom:4px;border-radius:50%;background:var(--hbc1);opacity:0;transform:scale(.5);transition:opacity .12s linear,transform .12s ease}
.hb-card.charging .hb-fill{opacity:calc(var(--p,0) / 100);transform:scale(calc(.5 + var(--p,0) / 200))}
.hb-check.on::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:12px;border-radius:50%;background:var(--hbc1);transform:translate(-50%,-50%)}

.hb-main{margin-left:11px;flex:1;min-width:0}
.hb-name{margin:0;font-size:13.5px;line-height:1.35;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-card.done .hb-name{color:var(--text-3)}
.hb-sub{display:flex;align-items:center;margin:2px 0 0;font-size:10.5px;color:var(--text-3);white-space:nowrap;overflow:hidden}
.hb-sub>*+*{margin-left:6px}
.hb-streak{color:#fff;background:var(--hbc1);padding:1px 7px;border-radius:9px;font-weight:500}
.weekly{display:inline-flex;align-items:center}
.weekly i{width:5px;height:5px;border-radius:50%;background:var(--line)}
.weekly i+i{margin-left:3px}
.weekly i.f{background:var(--hbc1)}
.wcnt{font-variant-numeric:tabular-nums}

.hmore{flex:0 0 24px;width:24px;height:24px;margin-left:4px;padding:0;border:0;border-radius:12px;background:none;color:var(--text-3);font-size:15px;line-height:1;display:grid;place-items:center;-webkit-tap-highlight-color:transparent}
.hmore:hover{background:var(--line-soft);color:var(--text-2)}

/* 每习惯的热力图：轻点展开 */
.hb-heat{display:grid;grid-template-rows:1fr;opacity:1}
.hb-heat>div{overflow:hidden}
.heat-panel{padding:0 13px 12px}
.heat-hd{display:flex;align-items:baseline;justify-content:space-between;font-size:10.5px;color:var(--text-3);margin-bottom:9px}
.heat-hd em{font-style:normal;color:var(--hbc2);font-weight:600}
.heat-grid{display:grid;grid-template-columns:repeat(14,1fr);gap:4px 7px}
.heat-grid i{position:relative;height:0;padding-bottom:100%;border-radius:4px;background:var(--hbc3);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease}
.heat-grid i.ok{background:var(--hbc1)}
.heat-grid i.ok.recent{background:var(--hbc2)}
.heat-grid i[data-today]{box-shadow:0 0 0 1.5px var(--hbc2)}
/* 点格：微微放大 + 同色柔光，格内浮出几号 */
.heat-grid i.sel{transform:scale(1.22);z-index:2;border-radius:5px;
  box-shadow:0 0 0 2px var(--surface),0 2px 10px -1px var(--hbc2)}
.heat-grid i.sel::after{content:attr(data-d);position:absolute;left:0;top:0;right:0;bottom:0;
  display:grid;place-items:center;font-size:8.5px;font-weight:700;color:var(--hbc4)}
[data-theme="dark"] .heat-grid i.sel{box-shadow:0 0 0 2px var(--bg),0 0 10px 0 var(--hbc2)}
[data-theme="dark"] .heat-grid i.sel::after{color:var(--hbc4)}

/* 已暂停 */
.hfold{display:flex;align-items:center;width:100%;margin:8px 0 6px;padding:7px 2px;border:0;background:none;font-size:11.5px;color:var(--text-3);text-align:left}
.hfold .chev{width:12px;height:12px;margin-left:5px;transition:transform .24s ease}
.hfold.open .chev{transform:rotate(180deg)}
.hp-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;margin-bottom:8px;border:1px dashed var(--line);border-radius:12px;font-size:12.5px;color:var(--text-3)}
.hp-item button{flex:0 0 auto;height:26px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:none;color:var(--accent-ink);font-size:11px}

/* 动作面板 */
.hacts{margin-top:4px}
.hact{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:8px;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:14px;color:var(--text);text-align:left}
.hact i{font-style:normal;font-size:11.5px;color:var(--text-3)}
.hact.danger{color:var(--danger);border-color:var(--danger-soft);background:var(--danger-soft)}
.hact:active{background:var(--line-soft)}
.hrow{display:flex;align-items:center;margin-top:10px}
.hrow input{flex:1;min-width:0;height:44px;padding:0 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);font-size:15px;color:var(--text)}
.hrow input:focus{border-color:var(--accent);outline:none}
.hrow button{flex:0 0 auto;width:auto;height:44px;margin-left:8px;padding:0 16px;border:0;border-radius:11px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:600}
.hchips{display:flex;margin-top:10px}
.hchip{flex:1;height:40px;border:1px solid var(--line);border-radius:11px;background:var(--surface);font-size:13px;color:var(--text-2)}
.hchip+.hchip{margin-left:8px}
.hchip.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink);font-weight:600}
/* 新版面板主按钮：通栏渐变 + 柔和投影（打卡新增 / 改名），覆盖 .hrow button 的窄条样式 */
.hrow .hbtn{
  width:100%;height:48px;margin-left:0;padding:0;border:0;border-radius:13px;
  background:linear-gradient(135deg,var(--accent),var(--accent-ink));
  color:var(--on-accent);font-size:15px;font-weight:600;letter-spacing:8px;text-indent:8px;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 20px -10px var(--accent-ink);
  transition:transform .15s ease,filter .15s ease,box-shadow .15s ease;
}
.hrow .hbtn i{font-style:normal;font-size:16px;font-weight:500;margin-right:5px;letter-spacing:0;text-indent:0}
.hrow .hbtn:active{transform:scale(.985);filter:brightness(1.06);box-shadow:0 5px 12px -8px var(--accent-ink)}
.hnote{margin:10px 2px 0;font-size:11.5px;color:var(--text-3);line-height:1.6}

[data-theme="dark"] .hb-card{--hbc1:#9BC4A8;--hbc2:#C3E1CC;--hbc0:#26382E;--hbc3:#2E4237;--hbc4:#F2F8F4}
[data-theme="dark"] .hb-card.mc-berry{--hbc1:#E3A6BA;--hbc2:#F0C6D3;--hbc0:#3A282E;--hbc3:#3E2C33;--hbc4:#FDF1F5}
[data-theme="dark"] .hb-card.mc-taro{--hbc1:#B4A2D6;--hbc2:#D0C3E9;--hbc0:#2F2B3E;--hbc3:#342F45;--hbc4:#F5F2FB}
[data-theme="dark"] .hb-card.mc-lemon{--hbc1:#DCC17E;--hbc2:#EBD8A4;--hbc0:#39331F;--hbc3:#403A26;--hbc4:#FBF6E9}
[data-theme="dark"] .hb-card.mc-peach{--hbc1:#E2B18C;--hbc2:#F0CBAE;--hbc0:#3C2F25;--hbc3:#443328;--hbc4:#FDF3EA}
[data-theme="dark"] .hb-card.mc-sky{--hbc1:#9BC0E0;--hbc2:#C3DBF0;--hbc0:#263440;--hbc3:#2C3B4A;--hbc4:#F0F7FC}
[data-theme="dark"] .hb-streak{color:var(--hbc2);background:var(--hbc0)}
[data-theme="dark"] .hb-card.charging{border-color:var(--hbc1)}
[data-theme="dark"] .hact:active{background:var(--line-soft)}

/* ============================== 目标 ============================== */
.glist{display:flex;flex-direction:column}
.gcard{margin-bottom:10px;padding:15px 15px 13px;background:var(--surface);border:1px solid var(--line);border-radius:16px;transition:border-color .18s ease}
.gcard.done{border-color:var(--line-soft);background:var(--bg-soft)}
.gh{display:flex;align-items:baseline;justify-content:space-between}
.gh h3{margin:0;font-size:14px;font-weight:500;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px}
.gh em{flex:0 0 auto;font-style:normal;font-size:12px;font-weight:600;color:var(--accent-ink);font-variant-numeric:tabular-nums}
.gbar{height:6px;margin-top:11px;border-radius:3px;background:var(--ring-track);overflow:hidden}
.gbar i{display:block;height:100%;border-radius:3px;background:var(--accent);transition:width .35s cubic-bezier(.2,.8,.2,1)}
.gfoot{display:flex;align-items:baseline;margin-top:9px}
.gval{flex:0 0 auto;font-size:13px;font-weight:600;color:var(--text-1);line-height:1;font-variant-numeric:tabular-nums}
.gof{flex:0 0 auto;margin-left:5px;font-size:11px;color:var(--text-3)}
.gsub{flex:1;min-width:0;margin-left:6px;font-style:normal;font-size:10.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gplus{flex:0 0 auto;align-self:center;margin-left:6px;height:26px;padding:0 11px;border:0;border-radius:8px;background:var(--accent);color:var(--on-accent);font-size:11.5px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gplus:active{opacity:.86}
.gmore{flex:0 0 auto;align-self:center;margin-left:4px;width:26px;height:26px;border:0;background:none;color:var(--text-3);font-size:15px;line-height:1;font-family:inherit;cursor:pointer;border-radius:8px}
.gmore:active{background:var(--line-soft)}
.gfold{display:flex;align-items:center;justify-content:space-between;width:100%;margin-top:11px;padding:10px 0 0;border:0;border-top:1px solid var(--line-soft);background:none;font-family:inherit;font-size:11.5px;color:var(--text-3);cursor:pointer;-webkit-tap-highlight-color:transparent}
.gfold .chev{width:13px;height:13px;flex:0 0 13px;transition:transform .26s cubic-bezier(.2,.8,.2,1)}
.gcard.open .gfold .chev{transform:rotate(180deg)}
.gwrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .26s cubic-bezier(.2,.8,.2,1)}
.gcard.open .gwrap{grid-template-rows:1fr}
.gwrap>div{overflow:hidden;min-height:0}
.gitem{display:flex;align-items:center;padding:9px 0;border-top:1px solid var(--line-soft);font-size:12.5px;color:var(--text-1);cursor:default;-webkit-tap-highlight-color:transparent}
.gwrap .gitem:first-child{border-top:0}
.gitem .gk{flex:0 0 19px;width:19px;height:19px;margin-right:9px;border-radius:50%;border:1.6px solid var(--ck-line);box-sizing:border-box;position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}
/* 只有圆圈能勾完成；视觉 19px，热区扩到 41px 更好点 */
.gitem .gk::before{content:'';position:absolute;left:-11px;top:-11px;right:-11px;bottom:-11px;border-radius:50%}
.gitem.done .gk{border-color:var(--accent);background:var(--accent)}
/* 勾用 flex 居中绘制，再做轻微光学校正，避免绝对定位手调偏移 */
.gitem .gk::after{content:'';width:4.5px;height:8.5px;flex:none;border-right:1.8px solid var(--on-accent);border-bottom:1.8px solid var(--on-accent);transform:translate(-.3px,-2.3px) rotate(42deg);opacity:0}
.gitem.done .gk::after{opacity:1}
.gitem span.gt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gitem.done span.gt{color:var(--text-3);text-decoration:line-through}
.gitem .gtm{flex:0 0 auto;margin-left:8px;font-size:10.5px;color:var(--text-3)}
.gempty-step{padding:10px 0 2px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--text-3);line-height:1.7}
.gdone-bar{display:flex;align-items:center;justify-content:space-between;width:100%;margin:16px 0 10px;padding:0 2px;border:0;background:none;font-family:inherit;font-size:11.5px;color:var(--text-3);cursor:pointer}
.gdone-bar .chev{width:12px;height:12px;transition:transform .26s ease}
.gdone-bar.open .chev{transform:rotate(180deg)}
.gcard.done .gh h3{color:var(--text-2)}
.gcard.done .gbar i{background:var(--accent-ink)}
.gtip{margin:14px 2px 0;font-size:11px;color:var(--text-3);line-height:1.7}

/* 目标面板 */
.gseg{display:flex;margin:0 0 14px;padding:3px;background:var(--line-soft);border-radius:12px}
.gseg button{flex:1;height:34px;border:0;border-radius:9px;background:none;color:var(--text-2);font-size:13px;font-family:inherit;cursor:pointer;transition:background .16s ease,color .16s ease;-webkit-tap-highlight-color:transparent}
.gseg button.on{background:var(--surface);color:var(--accent-ink);font-weight:600;box-shadow:0 1px 2px rgba(41,54,75,.06),0 2px 8px rgba(41,54,75,.05)}
.grow{display:flex;align-items:center;margin:0 0 10px}
.grow .glabel{flex:0 0 68px;font-size:12.5px;color:var(--text-2);letter-spacing:.2px}
.grow .hinput{flex:1;min-width:0;margin:0}
.grow .gunit{flex:0 0 64px;margin-left:8px;padding:0 8px;text-align:center;font-size:14px;color:var(--text-1)}

/* 目标表单输入框：白底描边 + 圆角，焦点给柔光环；去掉浏览器原生填充质感与数字微调箭头 */
.hinput{
  width:100%;box-sizing:border-box;height:44px;padding:0 13px;
  border:1px solid var(--line);border-radius:11px;background:var(--surface);
  color:var(--text);font-family:inherit;font-size:15px;line-height:normal;
  font-variant-numeric:tabular-nums;-webkit-appearance:none;appearance:none;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
  -webkit-tap-highlight-color:transparent;
}
.hinput::placeholder{color:var(--text-3);font-weight:400}
.hinput:hover{border-color:var(--ring-track)}
.hinput:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.hinput[type=number]{-moz-appearance:textfield}
.hinput[type=number]::-webkit-outer-spin-button,
.hinput[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
/* 名称是这一屏的主字段，给更大的落笔区域 */
.hinput.htitle{height:48px;padding:0 15px;border-radius:12px;font-size:15.5px;font-weight:500}
.hinput.htitle::placeholder{font-weight:400}
.gpick{flex:1;min-width:0;height:44px;padding:0 13px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text);font-size:15px;font-family:inherit;text-align:left;cursor:pointer;font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:transparent;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
.gpick:hover{border-color:var(--ring-track)}
.gpick:active{background:var(--line-soft)}
.gpick.gempty{color:var(--text-3)}
.gtwo{display:flex;margin-top:6px}
.gtwo button{flex:1;height:44px;border-radius:12px;font-size:13.5px;font-family:inherit;cursor:pointer;border:1px solid var(--line)}
.gtwo .danger{background:var(--surface);border-color:#E2C9CD;color:#B4707A}
.gtwo .safe{background:var(--surface);color:var(--text-1)}
.gtwo .primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}
.gtwo button + button{margin-left:8px}

/* ---------- 待办详情弹窗：主标题保持，其余字号收一档；备注框收紧 ---------- */
#detailSheet .d-note{font-size:13.5px;line-height:1.55;padding:8px 11px;margin:4px 0 2px;min-height:46px}
#detailSheet .field{padding:12px 0;margin-top:6px}
#detailSheet .field label{font-size:11px;margin-bottom:8px}
#detailSheet .chip{font-size:13px;padding:6px 11px}
#detailSheet .sub-count{font-size:11px}
#detailSheet .sub-title{font-size:13.5px}
#detailSheet .sub-item{padding:7px 0}
#detailSheet .sub-add{padding:8px 11px}
#detailSheet .sub-add input{font-size:13px}
#detailSheet .btn{font-size:14px}

/* ============================== 日程 ============================== */
/* 周条：选中日只在底格加描边，日期数字不改色（老 WebView 不用 gap） */
.sc-week{display:flex;margin-top:14px;padding:8px 6px;background:var(--accent-soft);border-radius:14px}
.sc-day{flex:1;text-align:center;padding:5px 0 6px;border-radius:10px;border:1px solid transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.sc-day span{display:block;font-size:10px;color:var(--text-3)}
.sc-day b{display:block;margin-top:3px;font-size:13px;font-weight:500;color:var(--text)}
.sc-day i{display:block;width:4px;height:4px;margin:3px auto 0;border-radius:2px;background:var(--accent);opacity:0}
.sc-day.has i{opacity:1}
.sc-day.on{background:var(--surface);box-shadow:inset 0 0 0 1px var(--accent)}

.sc-sums{display:flex;flex-wrap:wrap;margin-top:10px}
.sc-sum{margin:0 6px 6px 0;padding:3px 8px;border-radius:7px;background:var(--line-soft);font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums}
.sc-sum.warn{background:var(--danger-soft);color:var(--danger)}

.sc-group{margin-top:14px}
.sc-gtitle{display:flex;align-items:baseline;justify-content:space-between;padding:0 2px 8px;font-size:12.5px;color:var(--text-2)}
.sc-gtitle em{font-style:normal;font-size:10.5px;color:var(--text-3)}

.sc-item{position:relative;display:flex;align-items:center;margin-bottom:10px;padding:11px 12px 11px 18px;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer}
.sc-item::before{content:'';position:absolute;left:6px;top:12px;bottom:12px;width:3px;border-radius:2px;background:var(--accent)}
.sc-item.warn::before{background:var(--danger)}
.sc-item.warn{border-color:#EFD9DC}
.sc-time{flex:0 0 auto;display:flex;flex-direction:column;margin-right:12px}
.sc-time b{font-size:12.5px;font-weight:600;color:var(--text);line-height:1.2;font-variant-numeric:tabular-nums}
.sc-time i{font-style:normal;font-size:9.5px;color:var(--text-3);line-height:1;margin:3px 0}
.sc-time em{font-style:normal;font-size:10.5px;color:var(--text-3);line-height:1.2;font-variant-numeric:tabular-nums}
.sc-mid{flex:1;min-width:0}
.sc-mid h4{margin:0;font-size:13.5px;font-weight:500;color:var(--text);line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-mid p{margin:3px 0 0;font-size:10.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-item.done .sc-mid h4{color:var(--text-3);text-decoration:line-through}
.sc-cf{display:inline-flex;align-items:center;height:18px;margin-left:6px;padding:0 6px;border-radius:5px;background:var(--danger-soft);color:var(--danger);font-size:10px;vertical-align:1px}
.sc-ck{flex:0 0 20px;width:20px;height:20px;margin-left:10px;border-radius:50%;border:1.6px solid var(--ck-line);background:none;position:relative;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sc-ck svg{width:11px;height:11px;stroke:var(--on-accent);opacity:0;transform:scale(.6);transition:opacity .2s ease,transform .2s ease}
.sc-ck.on{border-color:var(--accent);background:var(--accent)}
.sc-ck.on svg{opacity:1;transform:scale(1)}
.sc-note{display:flex;align-items:center;margin:-2px 0 10px;font-size:10.5px;color:var(--danger)}
.sc-note i{flex:0 0 5px;width:5px;height:5px;border-radius:50%;background:var(--danger);margin-right:5px}

.sc-gap{display:flex;align-items:center;margin-bottom:10px;padding:11px 14px;border:1px dashed var(--line);border-radius:16px;background:var(--surface)}
.sc-gap p{flex:1;margin:0;font-size:11px;line-height:1.5;color:var(--text-3)}
.sc-gap button{flex:0 0 auto;height:26px;margin-left:8px;padding:0 10px;border:0;border-radius:7px;background:var(--accent-soft);color:var(--accent-ink);font-size:11px;font-family:inherit;cursor:pointer}
.sc-add{display:flex;align-items:center;justify-content:center;width:100%;height:44px;margin:14px 0 0;border:1px dashed var(--line);border-radius:12px;background:none;font-family:inherit;font-size:12.5px;color:var(--accent-ink);cursor:pointer;-webkit-tap-highlight-color:transparent}
.sc-add:active{background:var(--accent-soft)}

/* 详情弹窗顶部小标签：任务 / 子任务 / 日程（和主标题字号拉开层级） */
.d-kicker{margin:0 0 6px 2px;font-size:11px;font-weight:600;letter-spacing:.6px;color:var(--text-3)}

/* ============================== 日期时间选择面板 ============================== */
/* 盖在详情弹窗（z-index 41）之上 */
.pick-mask{position:fixed;left:0;right:0;top:0;bottom:0;z-index:50;background:rgba(23,24,26,.30);animation:fade .22s ease}
.pick-panel{
  position:fixed;left:0;right:0;bottom:0;z-index:51;
  max-width:540px;margin:0 auto;background:var(--surface);
  border-radius:22px 22px 0 0;padding:12px 18px calc(18px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 40px rgba(23,24,26,.16);
  animation:slideUp .28s cubic-bezier(.2,.8,.2,1);
}
.pick-panel.closing{animation:slideDown .2s ease forwards}
.p-grip{width:36px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}
.p-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.p-title{font-size:14.5px;font-weight:600;color:var(--text)}
.p-nav{display:flex;align-items:center}
.p-month{font-size:12.5px;color:var(--text-2);margin-right:10px;font-variant-numeric:tabular-nums}
.p-nav-btn{width:27px;height:27px;border:0;background:var(--line-soft);border-radius:8px;font-size:14px;color:var(--text-2);font-family:inherit;cursor:pointer;line-height:1}
.p-nav-btn + .p-nav-btn{margin-left:6px}
.pick-wd{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:3px}
.pick-wd span{text-align:center;font-size:10.5px;color:var(--text-3);padding:3px 0}
.pick-cal{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:36px}
.pick-cal i{display:flex;align-items:center;justify-content:center;font-style:normal;font-size:13px;color:var(--text-1);border-radius:10px;cursor:pointer;font-variant-numeric:tabular-nums;-webkit-tap-highlight-color:transparent}
.pick-cal i.pad{cursor:default}
.pick-cal i.off{color:var(--text-3);opacity:.55;cursor:default}
.pick-cal i.today{color:var(--accent-ink);font-weight:600;box-shadow:inset 0 0 0 1px var(--ring)}
.pick-cal i.sel{background:var(--accent);color:var(--on-accent);font-weight:600;box-shadow:none}
.p-sub{font-size:11px;font-weight:600;letter-spacing:.5px;color:var(--text-2);margin:10px 0 7px}
/* 时间滚轮：时/分两列，选中档停在中间高亮条上 */
.pick-wheel{position:relative;height:200px;border-radius:14px;background:var(--line-soft);overflow:hidden;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 26%,#000 74%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 26%,#000 74%,transparent 100%)}
.pick-band{position:absolute;left:8px;right:8px;top:50%;margin-top:-19px;height:38px;border-radius:11px;background:var(--surface);box-shadow:0 1px 6px rgba(23,24,26,.08);pointer-events:none;z-index:1}
.pick-colon{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;font-size:15px;font-weight:600;color:var(--text);pointer-events:none;font-variant-numeric:tabular-nums}
.pick-cols{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;height:200px}
.pick-col{height:200px;box-sizing:border-box;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;padding:81px 0;-webkit-overflow-scrolling:touch}
.pick-col.h{text-align:right;padding-right:6px}
.pick-col.m{text-align:left;padding-left:6px}
.pick-col::-webkit-scrollbar{width:0;height:0}
.pick-slot{display:block;width:100%;text-align:inherit;height:38px;border:0;background:none;font-size:14px;line-height:38px;color:var(--text-3);font-family:inherit;cursor:pointer;font-variant-numeric:tabular-nums;scroll-snap-align:center;-webkit-tap-highlight-color:transparent;transition:color .12s ease,font-size .12s ease}
.pick-slot.on{color:var(--text);font-weight:600;font-size:15px}
.p-acts{display:flex;margin-top:12px}
.p-acts button{height:44px;border-radius:12px;border:0;font-family:inherit;font-size:14px;cursor:pointer;transition:all .16s ease}
.p-clear{flex:0 0 88px;background:var(--line-soft);color:var(--text-2)}
.p-ok{flex:1;margin-left:10px;background:var(--accent);color:var(--on-accent);font-weight:500}
[data-theme="dark"] .pick-cal i.off{opacity:.4}
