/* ============ W. 工作台 设计系统 ============ */
:root{
  --bg:#F7F7F5;
  --bg-2:#F1F2EE;          /* 背景渐变末段（更柔的奶油偏绿）*/
  --surface:#FFFFFF;
  --text:#202124;
  --text-2:#6F7277;
  --border:#E6E7E4;
  --accent:#2F6B57;        /* 深绿强调 */
  --accent-2:#5FB496;      /* 强调渐变次色（更明亮的绿，拉开渐变层次）*/
  --accent-soft:#E7F0EC;
  --yellow:#F4D85A;
  --pink:#E9A8CF;
  --blue:#AFC9EA;
  --green:#B8CB9A;
  --radius:12px;
  --radius-lg:18px;
  --shadow:0 1px 3px rgba(32,33,36,.06),0 6px 18px rgba(32,33,36,.05);
  --sidebar-w:84px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 100%);color:var(--text);font-family:var(--font);
  font-size:15px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none !important;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}
a{color:var(--accent);text-decoration:none;}

/* ---- 开屏 ---- */
.splash{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(160deg,#FBFBF9 0%, #F1F4EE 100%);}
.splash-card{background:var(--surface);border-radius:var(--radius-lg);padding:40px 36px;text-align:center;
  box-shadow:var(--shadow);max-width:360px;width:88%;border:1px solid var(--border);}
.splash-art{width:120px;height:120px;margin:0 auto 18px;filter:drop-shadow(0 8px 18px rgba(47,107,87,.22));}
/* 开屏动画：线条柔美地“画”出来，再轻轻呼吸浮动（与工作台图标同一设计，仅此处动画） */
.splash-anim{animation:spBob 5.2s ease-in-out 2s infinite;transform-origin:60px 60px;}
.splash-anim .sp-line{stroke-dasharray:100;stroke-dashoffset:100;animation:spDraw 1.9s cubic-bezier(.65,0,.35,1) .25s forwards;}
.splash-anim .sp-echo{opacity:0;animation:spFadeIn .9s ease 1.6s forwards;}
.splash-anim .sp-dot{transform-box:fill-box;transform-origin:center;animation:spPulse 3s ease-in-out 2.1s infinite;}
@keyframes spDraw{to{stroke-dashoffset:0;}}
@keyframes spFadeIn{to{opacity:1;}}
@keyframes spBob{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.03)}}
@keyframes spPulse{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.25);opacity:1}}
.splash-date{color:var(--text-2);font-size:13px;letter-spacing:.5px;}
.splash-hi{font-size:26px;font-weight:800;margin:6px 0 4px;color:var(--text);}
.splash-msg{color:var(--text-2);font-size:15px;min-height:44px;margin:8px 0 22px;}
.splash-btn{display:inline-block;padding:14px 36px;font-size:16px;font-weight:700;margin:4px auto 0;}
.splash-foot{margin-top:18px;color:var(--text-2);font-size:12px;letter-spacing:1px;}

/* ---- 布局 ---- */
.app{display:flex;height:100vh;overflow:hidden;}
.main{flex:1;display:flex;flex-direction:column;min-width:0;}

/* ---- 侧边栏（桌面窄栏，不可收起，图标+小标签竖排）---- */
.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:#202124;color:#EDEDED;
  display:flex;flex-direction:column;align-items:center;padding:14px 0 10px;overflow-y:auto;}
.sidebar .brand{margin-bottom:14px;display:flex;flex-direction:column;align-items:center;gap:4px;}
.sidebar .brand .logo{width:40px;height:40px;}
.sidebar .brand .bn{font-size:12px;font-weight:800;letter-spacing:1px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;}
.nav-item{width:64px;min-height:60px;margin:4px 0;padding:8px 2px;border-radius:12px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  color:#B9BBBE;font-size:11px;text-align:center;transition:background .15s,color .15s;}
.nav-item svg{width:24px;height:24px;}
.nav-item .lbl{line-height:1.15;}
.nav-item .nav-lock{position:absolute;top:4px;right:4px;}
.nav-item{position:relative;}
.nav-item:hover{background:#2C2E31;color:#fff;}
.nav-item.active{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);color:#fff;}
.nav-sep{width:40px;height:1px;background:#3A3C40;margin:8px 0;}

/* ---- 顶栏 ---- */
.topbar{height:60px;flex:0 0 60px;display:flex;align-items:center;gap:10px;padding:0 22px;
  background:linear-gradient(180deg,var(--surface) 0%,var(--bg) 100%);border-bottom:1px solid var(--border);}
.topbar-title{font-size:19px;font-weight:800;}
.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:10px;}
.icon-btn{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;
  color:var(--text);background:transparent;}
.icon-btn:hover{background:var(--bg);}
.icon-btn svg{width:22px;height:22px;}

/* ---- 内容区 ---- */
.content{flex:1;overflow-y:auto;padding:24px 26px 40px;}
.page-head{display:flex;align-items:flex-end;gap:12px;margin-bottom:18px;flex-wrap:wrap;}
.page-head h2{font-size:21px;font-weight:800;margin:0;}
.page-head .sub{color:var(--text-2);font-size:13px;}
.help-circle{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--border);
  color:var(--text-2);display:inline-flex;align-items:center;justify-content:center;font-size:14px;
  font-weight:700;background:var(--surface);}
.help-circle:hover{border-color:var(--accent);color:var(--accent);}

/* ---- 卡片 ---- */
.card{background:linear-gradient(180deg,#FFFFFF 0%,#FCFDFC 100%);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px;box-shadow:var(--shadow);}
.card.tint-y{background:linear-gradient(180deg,#FCF6DC 0%,#FAF0C6 100%);border-color:#EFE3A6;}
.card.tint-p{background:linear-gradient(180deg,#FBEAF3 0%,#F7DEEC 100%);border-color:#F0C8E0;}
.card.tint-b{background:linear-gradient(180deg,#EEF4FB 0%,#E6EFFA 100%);border-color:#CFE0F1;}
.card.tint-g{background:linear-gradient(180deg,#F0F4E8 0%,#E8F0DC 100%);border-color:#D6E2C4;}
.grid{display:grid;gap:16px;}
.grid-2{grid-template-columns:repeat(2,1fr);}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}
.stat-num{font-size:24px;font-weight:800;line-height:1.1;}

/* 区块标题 */
.section-title{font-weight:800;font-size:15px;margin:22px 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.section-title::before{content:"";width:4px;height:16px;border-radius:3px;background:linear-gradient(180deg,var(--accent) 0%,var(--accent-2) 100%);}
.section-title .dot{width:9px;height:9px;border-radius:50%;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);}
/* 内联小批量删除按钮：不单独成行，放在标题/工具行旁边 */
.bbatch{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;font-size:12px;font-weight:600;line-height:1.3;border:1px solid var(--border);background:var(--surface);color:var(--text-2);border-radius:8px;cursor:pointer;flex:0 0 auto;white-space:nowrap;transition:background .12s,border-color .12s,color .12s;}
.bbatch:hover{background:var(--bg);color:var(--accent);border-color:var(--accent);}
.bbatch:active{transform:scale(.96);}
.bb-r{margin-left:auto;}

/* ---- 按钮 ---- */
/* 绿色「新建/添加」按键：长方形、占位置小一点 */
.btn-primary{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);color:#fff;border-radius:6px;padding:7px 13px;font-weight:700;
  font-size:13px;display:inline-flex;align-items:center;gap:5px;box-shadow:0 2px 8px rgba(47,107,87,.16);white-space:nowrap;flex:0 0 auto;}
.btn-primary:hover{filter:brightness(1.05);}
.btn-primary.btn-sm{padding:5px 11px;font-size:12.5px;border-radius:6px;gap:4px;}
.btn-ghost{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 13px;
  font-weight:600;font-size:13px;color:var(--text);white-space:nowrap;flex:0 0 auto;}
.btn-ghost:hover{background:var(--bg);}
/* 设置页按钮图标统一尺寸，避免内联 SVG 无尺寸导致忽大忽小/撑开按钮 */
.card button svg{width:18px;height:18px;flex:0 0 auto;}
.btn-danger{color:#B23A48;border:1px solid #F0C9CE;background:#FDF3F4;border-radius:9px;padding:7px 13px;font-weight:600;transition:background .15s ease,border-color .15s ease;white-space:nowrap;flex:0 0 auto;}
.btn-danger:hover{background:#FBE7EA;border-color:#E9A9B2;}
.btn-danger.btn-sm{padding:4px 10px;font-size:12px;line-height:1.35;}
.btn-sm{padding:6px 12px;font-size:13px;}
/* 美观的图标删除按钮：默认淡、悬停清晰、按压回弹；仅图标，无文字 */
.del-ic{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;border:none;cursor:pointer;
  background:transparent;color:#B23A48;opacity:.5;flex:0 0 auto;padding:0;transition:background .15s ease,opacity .15s ease,transform .12s ease;}
.del-ic svg{width:15px;height:15px;flex:0 0 auto;}
.del-ic:hover{background:rgba(229,57,53,.12);opacity:1;}
.del-ic:active{transform:scale(.9);}
.cloth-card{position:relative;}
.cloth-card .del-ic{position:absolute;top:6px;right:6px;background:rgba(255,255,255,.82);box-shadow:0 1px 4px rgba(0,0,0,.12);opacity:.85;}
.cloth-card .del-ic:hover{background:rgba(229,57,53,.14);opacity:1;}

/* 开关 toggle */
.switch{position:relative;width:46px;height:26px;border-radius:999px;background:var(--border);border:none;cursor:pointer;transition:background .2s;flex:none;padding:0;}
.switch .knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s;}
.switch.on{background:linear-gradient(135deg,var(--accent),var(--accent-2));}
.switch.on .knob{transform:translateX(20px);}

/* ---- 标签 / 状态 ---- */
.tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;}
.tag.y{background:#FCF6DC;color:#8A6D12;}
.tag.p{background:#FBEAF3;color:#9C3E73;}
.tag.b{background:#EEF4FB;color:#2C5C92;}
.tag.g{background:#F0F4E8;color:#4E6B2E;}
.tag.r{background:#FBEBEC;color:#A23A45;}
.tag.n{background:var(--bg);color:var(--text-2);border:1px solid var(--border);}
.pill{font-size:12px;color:var(--text-2);}
.mo-val{font-size:24px;font-weight:800;line-height:1.12;margin-top:3px;}

/* 进度条 */
.bar{height:10px;border-radius:999px;background:var(--bg);overflow:hidden;}
.bar > i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-2) 100%);}
.bar.b > i{background:linear-gradient(90deg,#5B86B8 0%,#7FA8D0 100%);}
.bar.y > i{background:linear-gradient(90deg,#E0BE3E 0%,#F0D66A 100%);}
.bar.p > i{background:linear-gradient(90deg,#D98BB8 0%,#E9AFD0 100%);}
.bar.g > i{background:linear-gradient(90deg,#9DB87A 0%,#B8CF9A 100%);}

/* ---- 语言学习：每日课程 / 听读 / 打卡 ---- */
.lesson{background:#F3F7F4;border-radius:12px;padding:12px;margin-top:6px;border:1px solid #E1EDE6;}
.lsn-title{font-weight:700;margin-bottom:2px;}
.lw-head{font-size:12px;color:var(--text-2);margin:8px 0 2px;font-weight:600;}
.lw{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px dashed #E3EAE6;}
.lw:last-child{border-bottom:none;}
.lw-w{font-weight:700;}
.lw-r{color:var(--text-2);font-size:12px;}
.lw-m{color:var(--text-2);font-size:12px;margin-left:auto;}
.spk{border:none;background:#FFFFFF;cursor:pointer;font-size:15px;padding:2px 6px;border-radius:8px;line-height:1;box-shadow:0 1px 2px rgba(0,0,0,.08);}
.spk:hover{background:#EAF3EE;}
.lsn-read{margin-top:8px;line-height:1.75;font-size:14px;}
.lsn-tip{margin-top:6px;font-size:12.5px;color:var(--text-2);}
.lang-lock{opacity:.92;border-style:dashed;}
.lang-lock .bar.b > i{background:#C7D3CC;}
/* ---- 小测验 ---- */
.quiz-card{background:#FBF4FA;border:1px solid #F0DDEC;border-radius:12px;padding:12px;margin-top:4px;}
.quiz-q{font-weight:700;margin:8px 0 10px;font-size:14.5px;}
.quiz-opts{display:flex;flex-direction:column;gap:8px;}
.quiz-opt{border:1px solid var(--border);background:#fff;border-radius:10px;padding:10px 12px;text-align:left;cursor:pointer;font-size:14px;transition:.15s;}
.quiz-opt:hover{background:#F4EEF3;}
.quiz-opt.corr{background:#E5F4EA;border-color:#9DD3AE;color:#1f7a45;font-weight:700;}
.quiz-opt.wrong{background:#FBE6E6;border-color:#F0A9A9;color:#b33636;font-weight:700;}
.quiz-fb{margin:10px 0 8px;font-size:13.5px;font-weight:700;}
.quiz-fb.ok{color:#1f7a45;}
.quiz-fb.no{color:#b33636;}
.quiz-score{font-size:15px;font-weight:800;margin:8px 0 10px;}
.quiz-review{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;}
.qr{font-size:12.5px;color:var(--text-2);line-height:1.5;}
.qr .ok{color:#1f7a45;font-weight:800;}
.qr .no{color:#b33636;font-weight:800;}
/* ---- 录音回听 ---- */
.rec-block{margin-top:2px;}
.rec-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;}
.rec-row audio{max-height:34px;}

/* ---- 列表 / 明细 ---- */
.row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);}
.row:last-child{border-bottom:none;}
.row .grow{flex:1;min-width:0;}
.row .title{font-weight:700;font-size:15px;}
.row .meta{color:var(--text-2);font-size:12.5px;margin-top:2px;}
.row-actions{display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0;align-items:center;}
.mini-table{width:100%;border-collapse:collapse;font-size:12.5px;}
.mini-table th,.mini-table td{border:1px solid var(--border);padding:6px 8px;text-align:left;}
.mini-table th{background:var(--bg);font-weight:700;color:var(--text-2);}
.mini-table tbody tr:nth-child(even){background:var(--bg);}

/* 看板 */
.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.kcol{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px;}
.kcol h4{margin:0 0 10px;font-size:13px;font-weight:800;color:var(--text-2);}
.kcard{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px;margin-bottom:10px;}
.kcard .t{font-weight:700;font-size:14px;}

/* 空状态 */
.empty{text-align:center;padding:46px 20px;color:var(--text-2);}

/* 今日工作：按时间段分组（可展开/折叠） */
.dw-group{margin-bottom:2px;}
.dw-group-head{width:100%;display:flex;align-items:center;gap:8px;background:var(--bg);
  border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-weight:800;font-size:14px;
  color:var(--text);transition:background .15s;}
.dw-group-head:hover{background:var(--accent-soft);}
.dw-g-caret{color:var(--accent);font-size:12px;width:14px;text-align:center;}
.dw-g-name{flex:1;text-align:left;}
.dw-group-body{padding:2px 0 4px;}
.dw-thumb{max-width:64px;max-height:64px;border-radius:8px;border:1px solid var(--border);object-fit:cover;}
.wk-photos img{max-width:92px;max-height:92px;border-radius:8px;border:1px solid var(--border);object-fit:cover;}
.usage-row{display:flex;justify-content:space-between;font-size:13px;margin:6px 0 2px;gap:12px}
.usage-bar{height:10px;border-radius:6px;background:var(--accent-soft);overflow:hidden;margin-bottom:2px}
.usage-fill{height:100%;background:linear-gradient(90deg,var(--accent),#ff9a76);transition:width .4s}
.cleanup-row{display:flex;align-items:flex-start;gap:10px;padding:8px 6px;border-bottom:1px solid var(--border);cursor:pointer}
.cleanup-row .title{font-weight:600;font-size:14px}
.cleanup-row input[type=checkbox]{margin-top:3px;width:16px;height:16px;flex:none}
.file-chip{display:inline-flex;align-items:center;gap:4px;max-width:220px;padding:5px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg-soft);color:var(--text);font-size:12.5px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.file-chip:hover{border-color:var(--primary);color:var(--primary);}
.wk-files .file-chip{max-width:200px;}
#dw_drop:focus{outline:none;border-color:var(--primary);}
.empty svg{width:54px;height:54px;opacity:.5;margin-bottom:10px;}
.empty .et{font-weight:700;color:var(--text);font-size:15px;margin-bottom:4px;}

/* 时间线 */
.timeline{position:relative;padding-left:22px;}
.timeline:before{content:"";position:absolute;left:6px;top:4px;bottom:4px;width:2px;background:var(--border);}
.tl-item{position:relative;padding:0 0 18px;}
.tl-item:before{content:"";position:absolute;left:-19px;top:4px;width:11px;height:11px;border-radius:50%;
  background:var(--surface);border:2.5px solid var(--accent);}
.tl-item .tt{font-weight:700;font-size:14px;}
.tl-item .tm{color:var(--text-2);font-size:12.5px;}

/* 表单 */
.field{margin-bottom:14px;}
.field label{display:block;font-size:13px;font-weight:700;margin-bottom:6px;color:var(--text);}
.input,.select,.textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:10px 12px;
  font-family:inherit;font-size:14px;background:var(--surface);color:var(--text);}
.textarea{resize:vertical;min-height:84px;}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);}
.seg{display:inline-flex;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:3px;gap:3px;}
.seg button{padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;color:var(--text-2);display:inline-flex;align-items:center;gap:6px;}
.seg button svg{width:18px;height:18px;display:block;}
.seg button.on{background:var(--surface);color:var(--accent);box-shadow:var(--shadow);}
/* 日常子项目：图标在上、文字在下、网格对齐，移动端自适应列数 */
/* 日常子项目改用标准 .seg（紧凑标签，参考工作子项目）；图标 18px，窄屏自动换行并吸顶 */

/* 弹层 */
.modal-mask{position:fixed;inset:0;background:rgba(32,33,36,.4);z-index:60;display:flex;
  align-items:center;justify-content:center;padding:20px;}
.modal{background:linear-gradient(180deg,#FFFFFF 0%,#FCFDFB 100%);border-radius:var(--radius-lg);max-width:520px;width:100%;
  max-height:86vh;overflow-y:auto;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.25);}
.modal h3{margin:0 0 14px;font-size:18px;font-weight:800;}
.modal .modal-foot{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;}
.batch-list{max-height:54vh;overflow-y:auto;border:1px solid var(--border);border-radius:12px;background:var(--bg);padding:4px;margin:8px 0 6px;}
.batch-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer;font-size:14px;line-height:1.45;transition:background .12s ease;}
.batch-row + .batch-row{border-top:1px solid var(--border);}
.batch-row:hover{background:var(--surface);}
.batch-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex:0 0 auto;cursor:pointer;}
.batch-row span{flex:1;word-break:break-all;color:var(--text);}
.batch-all{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer;border-bottom:1px dashed var(--border);}
.batch-all input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;}
/* 模块级批量删除：按子列表分组展示 */
.batch-group{padding:6px 0;}
.batch-group + .batch-group{border-top:1px solid var(--border);margin-top:2px;}
.batch-group-title{font-size:12px;font-weight:700;color:var(--accent);padding:6px 12px 2px;letter-spacing:.2px;}
.modal pre{background:var(--bg);border-radius:var(--radius);padding:14px;color:var(--text);}
.stage-track{display:flex;gap:8px;flex-wrap:wrap;}
.stage-dot{width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:var(--surface);color:var(--text-2);font-weight:800;font-size:13px;cursor:pointer;transition:transform .12s ease;}
.stage-dot:hover{transform:scale(1.08);}
.stage-dot.g{background:#9DB87A;border-color:#9DB87A;color:#fff;}
.stage-dot.y{background:#F0D77A;border-color:#E0BE3E;color:#5b4a00;}
.stage-dot.p{background:#F3D3E6;border-color:#D98BB8;color:#7a2f55;}

/* 帮助弹层 */
.help-modal{max-width:460px;}
.help-modal h3{display:flex;align-items:center;gap:8px;}
.help-block{margin:10px 0;}
.help-block .h{font-weight:700;font-size:13px;color:var(--accent);margin-bottom:3px;}
.help-block .d{font-size:14px;color:var(--text);}

/* 抽屉（手机“更多”） */
.drawer{position:fixed;top:0;right:0;height:100%;width:78%;max-width:320px;background:var(--surface);
  z-index:62;box-shadow:-10px 0 40px rgba(0,0,0,.2);padding:18px;overflow-y:auto;}
.drawer-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:61;}
.drawer .dhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.drawer .ditem{display:flex;align-items:center;gap:12px;padding:13px 10px;border-radius:10px;font-weight:600;}
.drawer .ditem svg{width:22px;height:22px;color:var(--accent);}
.drawer .ditem:active{background:var(--bg);}
.drawer .dsub{font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--text-2);text-transform:uppercase;padding:14px 10px 4px;opacity:.75;}

/* 回收站 / 清理过期：按日期分组 */
.trash-group,.cleanup-group{margin-bottom:14px;background:var(--bg-soft);border-radius:10px;padding:8px 10px;}
.trash-group-head,.cleanup-group-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 4px 8px;border-bottom:1px dashed var(--border);margin-bottom:6px;}
.trash-group-head b,.cleanup-group-head b{font-size:14px;}
.trash-group-head .meta,.cleanup-group-head .meta{font-size:12px;}
.trash-group .row,.cleanup-group .row{background:var(--surface);border-radius:8px;padding:6px 8px;margin-bottom:4px;}

/* 底部导航（手机） */
.bottomnav{display:none;}
.mobile-only{display:none;}

/* 悬浮快捷添加（手机） */
.fab{position:fixed;right:18px;bottom:78px;width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);color:#fff;
  display:none;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(32,33,36,.25);z-index:56;}
.fab svg{width:26px;height:26px;}
.fab:active{transform:scale(.94);}

/* 轻提示 */
.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:linear-gradient(135deg,#202124 0%,#34373B 100%);color:#fff;
  padding:11px 18px;border-radius:999px;font-size:14px;z-index:80;box-shadow:var(--shadow);}

/* 状态徽标 */
.status{font-size:12px;font-weight:700;padding:2px 9px;border-radius:999px;}
.st-todo{background:#EEF4FB;color:#2C5C92;}
.st-doing{background:#FCF6DC;color:#8A6D12;}
.st-done{background:#F0F4E8;color:#4E6B2E;}
.st-err{background:#FDF3F4;color:#B23A48;}
.st-wait{background:#FBEAF3;color:#9C3E73;}

/* AI 预览卡 */
.ai-preview{border:1px dashed var(--accent);background:var(--accent-soft);border-radius:var(--radius);padding:16px;margin-top:14px;}
.ai-preview .ph{font-weight:800;color:var(--accent);margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.ai-preview .ph svg{width:20px;height:20px;flex:0 0 auto;}
.ai-preview svg{width:20px;height:20px;flex:0 0 auto;}

/* ============ 响应式：手机端 ============ */
@media (max-width:768px){
  .sidebar{display:none;}
  .app{height:100vh;height:100dvh;}
  .mobile-only{display:flex;}
  .main{width:100%;}
  .content{padding:16px 14px 90px;}
  .topbar{padding:0 14px;height:54px;flex-basis:54px;}
  .topbar-title{font-size:17px;}

  .grid-2,.grid-3{grid-template-columns:1fr;}
  .grid-4{grid-template-columns:repeat(2,1fr);} /* 手机端四个汇总卡改为 2 列紧凑，避免全宽过大 */
  .stat-num{font-size:20px;} /* 手机端汇总数字缩小，更美观 */
  /* 资金养成「资金情况」在手机端保持 3 列并排、缩小间距与字号，更紧凑 */
  .money-overview{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:4px;}
  .money-overview .card{padding:11px 9px;}
  .mo-val{font-size:18px;margin-top:2px;}
  .money-overview .pill{font-size:11px;}
  .kanban{grid-template-columns:1fr;}
  .kcol{margin-bottom:10px;}

  /* 子类别标签吸顶：在当前工作类目内切换不跳顶，类目始终可见 */
  .seg{position:sticky;top:0;z-index:6;background:var(--bg);padding:8px 0 8px;margin-bottom:10px;border-bottom:1px solid var(--border);}

  /* 手机端：编辑/删除等所有按键放大可点区域、更美观 */
  .btn-primary,.btn-ghost,.btn-danger{min-height:40px;padding:10px 16px;font-size:14px;border-radius:9px;line-height:1.2;justify-content:center;}
  .btn-sm{min-height:36px;padding:8px 13px;font-size:13px;}
  .btn-primary.btn-sm,.btn-ghost.btn-sm,.btn-danger.btn-sm{min-height:38px;padding:9px 13px;font-size:13.5px;}
  .del-ic{width:34px;height:34px;border-radius:10px;opacity:.6;}
  .del-ic svg{width:18px;height:18px;}
  .bbatch{min-height:34px;padding:7px 12px;font-size:13px;}
  /* 含按键的横向操作行：窄屏自动换行，避免挤压变形 */
  div[style*="display:flex"]:has(button){flex-wrap:wrap;}
  /* 编辑/删除等操作行：手机端竖向铺满、按键加大，单手好点 */
  .row-actions{flex-direction:column;align-items:stretch;gap:8px;}
  .row-actions .btn-primary,.row-actions .btn-ghost,.row-actions .btn-danger{width:100%;min-height:44px;padding:11px 14px;font-size:14.5px;border-radius:10px;justify-content:center;}
  .row-actions .btn-sm{min-height:44px;padding:11px 14px;font-size:14.5px;}

  /* 底部导航：等宽、图标在上文字在下、固定、安全区 */
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;
    background:var(--surface);border-top:1px solid var(--border);
    padding-bottom:env(safe-area-inset-bottom);z-index:55;height:64px;}
  .bn-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    color:var(--text-2);font-size:11px;font-weight:600;min-height:44px;}
  .bn-item svg{width:24px;height:24px;}
  .bn-item.active{color:var(--accent);}
  .bn-add{flex:1;display:flex;align-items:center;justify-content:center;}
  .bn-add .plus{width:52px;height:52px;border-radius:50%;background:var(--accent);color:#fff;
    display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);margin-top:-14px;}
  .bn-add .plus svg{width:26px;height:26px;}

  .modal{padding:20px 18px;}
  .card{padding:15px;}
  .page-head h2{font-size:19px;}
}

/* 帮助悬浮提示（桌面） */
.help-wrap{position:relative;display:inline-flex;}
.help-tip{position:absolute;top:32px;right:0;width:240px;background:#202124;color:#fff;border-radius:10px;
  padding:11px 13px;font-size:12.5px;line-height:1.5;z-index:70;box-shadow:var(--shadow);display:none;}
.help-wrap:hover .help-tip{display:block;}
.help-tip b{color:var(--yellow);}

/* ============ 配色方案（主题）============ */
:root[data-theme="sakura"]{--accent:#C26A92;--accent-2:#E08FB4;--accent-soft:#F8E3EC;--bg:#FBF4F6;--bg-2:#F6ECF0;--surface:#FFFFFF;}
:root[data-theme="sky"]{--accent:#3E7CB1;--accent-2:#6AA5D6;--accent-soft:#E3EEF7;--bg:#F2F7FB;--bg-2:#EAF2F9;--surface:#FFFFFF;}
:root[data-theme="lavender"]{--accent:#7C5FB0;--accent-2:#A07FD6;--accent-soft:#ECE4F6;--bg:#F6F3FB;--bg-2:#F1ECF8;--surface:#FFFFFF;}
:root[data-theme="matcha"]{--accent:#5E8C4E;--accent-2:#86B56B;--accent-soft:#E6F0DD;--bg:#F4F7EF;--bg-2:#EFF4E8;--surface:#FFFFFF;}
:root[data-theme="warm"]{--accent:#C77A3E;--accent-2:#E29A5E;--accent-soft:#F8EAD9;--bg:#FBF5EF;--bg-2:#F8F0E8;--surface:#FFFFFF;}

.theme-row{display:flex;gap:16px;flex-wrap:wrap;margin-top:6px;}
.theme-item{display:flex;flex-direction:column;align-items:center;gap:8px;width:64px;cursor:pointer;}
.swatch{width:48px;height:48px;border-radius:14px;border:2px solid var(--border);position:relative;box-shadow:var(--shadow);}
.swatch.on{border-color:var(--accent);border-width:3px;}
.theme-item .nm{font-size:12px;color:var(--text-2);}
.theme-item{position:relative;}
.icon-del{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border:none;border-radius:50%;background:#E0314B;color:#fff;font-size:11px;line-height:18px;text-align:center;padding:0;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.25);z-index:2;}
.icon-del:hover{background:#c0273f;}

/* ============ 工作类目（可展开侧边栏）============ */
.nav-group-head{width:64px;min-height:46px;margin:4px 0;padding:6px 2px;border-radius:12px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  color:#B9BBBE;font-size:11px;text-align:center;cursor:pointer;transition:background .15s,color .15s;}
.nav-group-head svg{width:22px;height:22px;}
.nav-group-head .caret{font-size:9px;line-height:1;opacity:.7;}
.nav-group-head:hover{background:#2C2E31;color:#fff;}
.nav-group-head.open{color:#fff;}
.nav-sub{width:64px;min-height:48px;margin:2px 0 2px 6px;padding:7px 2px;border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  color:#A7A9AC;font-size:10.5px;text-align:center;border-left:2px solid #3A3C40;}
.nav-sub svg{width:20px;height:20px;}
.nav-sub:hover{background:#2C2E31;color:#fff;}
.nav-sub.active{background:var(--accent);color:#fff;border-left-color:var(--accent);}
.work-card{cursor:pointer;transition:transform .12s,box-shadow .12s;}
.work-card:hover{transform:translateY(-2px);}
.work-card .wc-ic{width:40px;height:40px;color:var(--accent);}
.work-card .wc-ic svg{width:40px;height:40px;}

/* ============ 通用：chips 标签 ============ */
.chips{display:flex;gap:8px;flex-wrap:wrap;}
.chip{padding:7px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--text-2);
  background:var(--bg);border:1px solid var(--border);cursor:pointer;}
.chip.on{background:var(--accent);color:#fff;border-color:var(--accent);}

/* ============ 衣柜 / 搭配 ============ */
.wardrobe{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;}
.cloth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;text-align:center;}
.cloth-card img{width:100%;height:110px;object-fit:cover;border-radius:10px;background:var(--bg);}
.cloth-ph{width:100%;height:110px;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--text-2);}
.cloth-ph svg{width:34px;height:34px;opacity:.5;}
.outfit-items{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap;}
.outfit-items .oi{width:78px;text-align:center;}
.outfit-items .oi img{width:78px;height:90px;object-fit:cover;border-radius:10px;background:var(--bg);}
.outfit-items .oi .cloth-ph{height:90px;}
.inspire-card{border-left:3px solid var(--pink);}
.meal-card .pill{color:var(--accent);}
/* 今日减脂餐推荐：标题 / 日期副标题 / “每天自动更新” 拆成独立元素，窄屏各自成行、不挤一行导致内容折行 */
.meal-subbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.meal-subbar .meta{font-size:12.5px;color:var(--text-2);}
.meal-subbar .pill{white-space:nowrap;}
/* 今日减脂餐推荐高亮 + 全部食谱折叠 */
.meal-card.meal-today{border:1.5px solid var(--accent);box-shadow:0 2px 12px rgba(47,107,87,.12);}
.meal-card .tag.today{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border:none;font-weight:700;}
.meal-all{margin-top:6px;border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:4px 12px;}
.meal-all>summary{cursor:pointer;font-size:13px;color:var(--accent);font-weight:700;padding:8px 0;list-style:none;}
.meal-all>summary::-webkit-details-marker{display:none;}
.meal-all>summary::before{content:'▾ ';}
.meal-all[open]>summary::before{content:'▴ ';}
.meal-all .meal-card{margin-top:10px;}
/* 减脂餐卡片头部：标题 / 今日推荐 / 标签 三项；手机端拆成上下各占一行，避免挤在一行导致「今日推荐」「燕麦南瓜粥+水煮蛋」「低GI·暖胃·高纤维」三处文字中途折行 */
.meal-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
@media (max-width:768px){
  .meal-card-head{flex-direction:column;align-items:flex-start;gap:8px;}
  .meal-card-head .title{font-size:16px;line-height:1.4;width:100%;}
  .meal-card-head .tag.g{white-space:normal;}
}
.train-card{border-left:3px solid var(--blue);}
.train-card.done{border-left-color:var(--accent);background:linear-gradient(180deg,var(--bg-2),transparent);box-shadow:0 0 0 1px var(--accent) inset;}
.train-card a{text-decoration:none;}
/* 推荐训练内嵌视频 */
.train-video{position:relative;margin-top:8px;aspect-ratio:16/9;background:#0c0c12;border-radius:10px;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;}
.train-video .train-play{display:flex;flex-direction:column;align-items:center;gap:8px;color:#fff;padding:0 10px;text-align:center;}
.train-video .play{font-size:30px;line-height:1;opacity:.92;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5));}
.train-video .tp{font-size:12.5px;opacity:.85;}
.train-video:active{transform:scale(.99);}
.train-video-iframe{width:100%;height:100%;border:0;display:block;background:#000;}
.train-links{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;align-items:center;}
.train-links .btn-ghost{flex:1;justify-content:center;min-width:120px;}
/* 健身阶段进度条 */
.fit-stage-card{padding:14px;}
.fit-progress{height:8px;border-radius:6px;background:var(--bg-2);overflow:hidden;position:relative;}
.fit-progress-bar{height:100%;border-radius:6px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .4s ease;}
/* ---- 减脂餐相册 / 拼图 ---- */
.meal-album{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin-top:4px;}
.meal-ph{position:relative;border-radius:10px;overflow:hidden;border:2px solid transparent;cursor:pointer;background:#fff;}
.meal-ph img{display:block;width:100%;height:92px;object-fit:cover;}
.meal-ph-tag{position:absolute;left:4px;bottom:4px;background:rgba(0,0,0,.55);color:#fff;font-size:10px;padding:1px 6px;border-radius:6px;}
.meal-ph.on{border-color:var(--accent);}
.meal-ph-check{position:absolute;right:4px;top:4px;width:18px;height:18px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;}

/* 文档照片 / 周报配图 缩略图（此前无样式，图片会按原尺寸撑大）*/
.df-thumb{max-width:100%;height:auto;border-radius:8px;display:block;background:#fff;border:1px solid var(--border);cursor:zoom-in;}
#weekly_photos, #df_photos{display:flex;gap:8px;flex-wrap:wrap;}

/* 妆容推荐 */
.mk-rec{margin-top:10px;}
.mk-rec-h{font-weight:800;font-size:14px;margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.mk-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.mk-grid>div{background:var(--bg);border-radius:10px;padding:10px 12px;font-size:13.5px;line-height:1.5;}
.mk-grid b{color:var(--accent);}

/* 今日吐槽 */
.vent-hist{margin-top:10px;display:flex;flex-direction:column;gap:8px;}
.vent-row{display:flex;align-items:flex-start;gap:8px;background:var(--bg);border-radius:10px;padding:8px 10px;font-size:13.5px;}
.vent-insight{font-size:13.5px;line-height:1.55;background:var(--bg);border-radius:10px;padding:10px 12px;}
.vent-insight + .vent-insight{margin-top:8px;}

/* 手机端：衣柜与搭配图更小 */
@media (max-width:768px){
  .wardrobe{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;}
  .cloth-card img,.cloth-ph{height:90px;}
  .outfit-items .oi{width:64px;}
  .outfit-items .oi img,.outfit-items .oi .cloth-ph{height:74px;width:64px;}
  .mk-grid{grid-template-columns:1fr;}
}

/* ===================== 首页 ===================== */
.home{display:flex;flex-direction:column;gap:14px;}
.home-hero{background:linear-gradient(135deg,var(--accent),#3E9D7C);color:#fff;border-radius:18px;padding:20px 18px;box-shadow:var(--shadow);}
.home-hero .hh-date{font-size:26px;font-weight:800;letter-spacing:1px;}
.home-hero .hh-week{margin-top:4px;font-size:14px;opacity:.95;}
.home-quote{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 16px;box-shadow:var(--shadow);}
.home-quote .hq-emoji{font-size:24px;line-height:1.2;flex:none;}
.home-quote .hq-body{flex:1;}
.home-quote .hq-text{font-size:15px;font-weight:600;line-height:1.6;color:var(--text);}
.home-quote .hq-sub{margin-top:4px;font-size:12px;color:var(--text-2);}
.home-time{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 16px;box-shadow:var(--shadow);}
.home-time .ht-head{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:14px;font-weight:700;flex-wrap:wrap;}
.home-time .ht-pct{font-size:12.5px;font-weight:600;color:var(--accent);}
.time-bar{margin-top:10px;height:12px;border-radius:999px;background:var(--bg);overflow:hidden;}
.time-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),#F2B5D4);transition:width .6s ease;}
.home-quick .hsec-title,.home-check .hsec-title{font-size:14px;font-weight:800;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.qlink{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:12px 6px;box-shadow:var(--shadow);cursor:pointer;font-size:12.5px;font-weight:600;color:var(--text-2);}
.qlink .ql-ic{font-size:22px;line-height:1;}
.qlink:active{transform:scale(.96);}
.check-list{display:flex;flex-direction:column;gap:10px;}
.cl-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow);}
.cl-box{flex:none;width:28px;height:28px;border-radius:50%;border:2px solid var(--border);background:var(--bg);color:var(--accent);font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s;}
.cl-box.on{background:var(--accent);border-color:var(--accent);color:#fff;}
.cl-main{flex:1;display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0;}
.cl-emoji{font-size:20px;flex:none;}
.cl-text{flex:1;display:flex;flex-direction:column;min-width:0;}
.cl-label{font-size:14.5px;font-weight:700;}
.cl-hint{font-size:12px;color:var(--text-2);}
.cl-go{color:var(--text-2);font-size:18px;flex:none;}
@media (max-width:768px){
  .quick-grid{grid-template-columns:repeat(4,1fr);gap:8px;}
  .qlink{padding:10px 4px;font-size:12px;}
}
@media (max-width:420px){
  .quick-grid{grid-template-columns:repeat(3,1fr);}
  .home-hero .hh-date{font-size:22px;}
}

/* ===================== 角标（项目/任务贴纸） ===================== */
.badge{width:28px;height:28px;object-fit:contain;vertical-align:middle;margin-right:6px;border-radius:6px;flex:none;background:transparent;}
.badge-field{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:8px 10px;margin-bottom:10px;}
.badge-field .badge-cur{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
.badge-field .badge-preview{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:transparent;}
.badge-field .badge-preview.badge-empty{background:linear-gradient(135deg,#F5F2EC,#EAE5DC);color:var(--text-2);font-size:12px;border:1px dashed var(--border);}
.badge-field .badge-label{font-size:13px;font-weight:600;color:var(--text);}
.badge-field .badge-label.badge-muted{color:var(--text-2);font-weight:500;}

.badge-picker{display:flex;flex-direction:column;gap:12px;max-height:70vh;}
.badge-picker .badge-search input{width:100%;}
.badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;overflow-y:auto;max-height:50vh;padding:4px;}
.badge-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border-radius:12px;background:var(--bg);border:2px solid var(--border);cursor:pointer;transition:transform .12s,border-color .12s,background .12s;}
.badge-cell:hover{transform:translateY(-2px);border-color:var(--accent);background:var(--surface);}
.badge-cell.on{border-color:var(--accent);background:linear-gradient(135deg,rgba(91,194,160,.12),rgba(91,194,160,.05));}
.badge-cell .badge{width:48px;height:48px;margin:0;}
.badge-cell .badge-cell-label{font-size:12px;font-weight:600;color:var(--text);text-align:center;}
@media (max-width:480px){
  .badge-grid{grid-template-columns:repeat(3,1fr);}
  .badge-cell .badge{width:40px;height:40px;}
}


/* ===================== 同步状态条 ===================== */
.syncbar{display:none;align-items:center;gap:5px;font-size:12px;color:var(--text-2);padding:3px 10px;border-radius:999px;background:var(--bg);white-space:nowrap;}
.syncbar[data-state="saving"]{color:#B8860B;}
.syncbar[data-state="saved"]{color:#3E8E5A;}
.syncbar[data-state="error"]{color:#C0392B;background:#FBEAEA;}
.syncbar[data-state="offline"]{color:#8A6D3B;}
.syncbar[data-state="local"]{color:#6B7280;}
.syncbar::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor;flex:none;}
@media (max-width:768px){ .syncbar{font-size:11px;padding:2px 8px;} }

/* ===================== 登录 / 注册 覆盖层 ===================== */
.auth-gate{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#EAF5EF 0%,#F6F0E6 100%);padding:20px;overflow:auto;}
.auth-card{width:100%;max-width:380px;background:#fff;border-radius:18px;padding:26px 22px;box-shadow:0 12px 40px rgba(47,107,87,.16);text-align:center;}
.auth-card .auth-logo{width:76px;height:76px;margin:0 auto 10px;}
.auth-card .auth-logo svg{width:100%;height:100%;}
.auth-card h2{margin:4px 0 6px;font-size:20px;text-align:center;}
.auth-card .auth-sub{font-size:13px;color:var(--text-2);margin:0 0 16px;line-height:1.5;}
.auth-card .field{text-align:left;margin-bottom:12px;}
.auth-card .auth-err{color:#C0392B;font-size:12.5px;min-height:16px;margin-bottom:6px;text-align:left;}
.auth-card .btn-primary,.auth-card .btn-ghost{height:44px;font-size:15px;}
.auth-card .btn-text{background:none;border:none;color:var(--accent);font-size:13px;cursor:pointer;padding:6px;}
.auth-card .auth-foot{font-size:11.5px;color:var(--text-2);margin-top:14px;line-height:1.5;}

/* ===================== 工作周报 · 折叠列表 ===================== */
.wk-toolbar{display:flex;gap:8px;align-items:center;margin:12px 0 14px;flex-wrap:wrap;}
.wk-toolbar .input{flex:1;min-width:160px;}
.wk-month{margin-bottom:10px;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface);}
.wk-month-head{width:100%;display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--accent-soft);border:none;cursor:pointer;font-weight:800;font-size:15px;color:var(--accent);}
.wk-month-head .wk-month-name{margin-right:auto;}
.money-tx .tx-sub{font-size:12px;color:var(--text-2);font-weight:600;margin-left:8px;white-space:nowrap;}
.wk-month.collapsed .wk-month-body{display:none;}
.wk-month-body{padding:6px 10px 10px;}
.wk-item{border:1px solid var(--border);border-radius:12px;margin:8px 0;background:#fff;overflow:hidden;}
.wk-item.expanded{border-color:var(--accent-2);}
.wk-head{width:100%;display:flex;align-items:center;gap:8px;padding:11px 12px;background:none;border:none;cursor:pointer;text-align:left;}
.wk-head .wk-title{font-weight:700;font-size:14px;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wk-head .wk-date{font-size:12px;color:var(--text-2);flex:none;}
.wk-body{padding:4px 12px 12px;border-top:1px dashed var(--border);}
.chev{display:inline-block;transition:transform .15s ease;color:var(--accent);font-size:13px;flex:none;width:14px;text-align:center;}
.wk-item .chev{transform:rotate(0deg);}
.wk-item.expanded .wk-head .chev{transform:rotate(90deg);}
.wk-month-head .chev{transform:rotate(0deg);}
.wk-month.collapsed .wk-month-head .chev{transform:rotate(-90deg);}
