/* ============ Hello Kitty Wddddd v3 ============ */
:root {
  --pink: #ff6b9d;
  --pink-l: #ff8eae;
  --pink-s: #ffb6c1;
  --pink-bg: #fff0f5;
  --pink-accent: #ffe4ee;
  --bg: #fff5f8;
  --bg-card: #fff;
  --bg-soft: #fff0f5;
  --text: #5a3a4a;
  --text-s: #9a7a8a;
  --text-m: #c8a8b8;
  --green: #7dd87d;
  --green-bg: #d4f0d8;
  --warn: #ffb86c;
  --danger: #ff6b9d;
  --blue-bg: #e8f0fe;
  --border: #ffe0eb;
  --shadow: 0 2px 12px rgba(255,107,157,0.1);
  --r: 16px;
  --r-sm: 12px;
  --sidebar-w: 72px;
  --drawer-w: 280px;
  --header-h: 60px;
  --safe-top: env(safe-area-inset-top,0px);
  --safe-bottom: env(safe-area-inset-bottom,0px);
}
[data-theme="dark"] {
  --bg: #1a1218;
  --bg-card: #2a1e2a;
  --bg-soft: #3a2a3a;
  --text: #f0e0f0;
  --text-s: #c8b0c8;
  --text-m: #907890;
  --border: #4a3a4a;
  --shadow: 0 2px 12px rgba(0,0,0,0.3);
  --pink: #ff8ab3;
  --pink-l: #ffb0cc;
  --pink-s: #ff8ab3;
  --pink-bg: #3a2a3a;
  --pink-accent: rgba(255,138,179,.18);
  --green: #7dd87d;
  --green-bg: rgba(125,216,125,.15);
  --warn: #ffb86c;
  --danger: #ff8ab3;
  --blue-bg: rgba(100,149,237,.15);
}
[data-theme="dark"] .sidebar { background: linear-gradient(180deg,#2a1e2a,#3a2a3a,#2a1e2a); }
[data-theme="dark"] .nav-icon-wrap { background: #3a2a3a; }
[data-theme="dark"] .main-header { background: var(--bg-card); }
[data-theme="dark"] .hello-card { background: var(--bg-card); }
[data-theme="dark"] .dish-card { background: var(--bg-card); }
[data-theme="dark"] .dish-emoji { background: var(--bg-soft); }
[data-theme="dark"] .pref-item { background: var(--bg-soft); }
[data-theme="dark"] .taste-stats { background: linear-gradient(135deg,#3a2a3a,#4a3a4a); }
[data-theme="dark"] .taste-divider { background: #4a3a4a; }
[data-theme="dark"] .fitness-status { background: linear-gradient(135deg,#3a2a3a,#4a3a4a); }
[data-theme="dark"] .macro-item { background: var(--bg-soft); }
[data-theme="dark"] .water-cup { background: var(--bg-soft); border-color: var(--border); }
[data-theme="dark"] .water-cup.filled { background: linear-gradient(135deg,rgba(100,149,237,.15),rgba(100,149,237,.25)); border-color: var(--pink-s); }
[data-theme="dark"] .fitness-fact-card { background: linear-gradient(135deg,#2a3a4a,#3a4a5a); }
[data-theme="dark"] .fitness-fact { color: #a0c0e0; }
[data-theme="dark"] .cal-result { background: linear-gradient(135deg,#2a4a2a,#3a5a3a); }
[data-theme="dark"] .meal-type-tab { background: var(--bg-soft); border-color: var(--border); color: var(--text-m); }
[data-theme="dark"] .meal-type-tab.active { background: var(--pink); color: #fff; border-color: var(--pink); }
[data-theme="dark"] .refresh-mini { background: var(--bg-soft); color: var(--pink); }
[data-theme="dark"] .local-tab { background: var(--bg-soft); color: var(--text-s); }
[data-theme="dark"] .local-tab.active { background: var(--pink); color: #fff; }
[data-theme="dark"] .self-care-tag { background: var(--bg-soft); color: var(--pink); }
[data-theme="dark"] .theme-toggle { background: var(--bg-soft); border-color: var(--border); }
[data-theme="dark"] .modal-content { background: var(--bg-card); }
[data-theme="dark"] .modal-mask { background: rgba(0,0,0,0.6); }
[data-theme="dark"] .tag-item { background: var(--bg-soft); color: var(--text); border-color: var(--border); }
[data-theme="dark"] .tag-item.active { background: var(--pink); color: #fff; }
[data-theme="dark"] .hello-input { background: var(--bg-soft); color: var(--text); border-color: var(--border); }
[data-theme="dark"] .hello-input::placeholder { color: var(--text-m); }
[data-theme="dark"] .hello-btn.secondary { background: var(--bg-soft); color: var(--text); border-color: var(--border); }
[data-theme="dark"] .stat-card { background: var(--bg-soft); }
[data-theme="dark"] .period-predict { background: linear-gradient(135deg,#3a2a3a,#4a3a4a); }
[data-theme="dark"] .symptom-item { background: var(--bg-soft); color: var(--text); }
[data-theme="dark"] .symptom-item.active { background: var(--pink); color: #fff; }
[data-theme="dark"] .spend-block { background: var(--bg-soft); }
[data-theme="dark"] .feature-item { background: var(--bg-soft); }
[data-theme="dark"] .feature-item.active { background: var(--pink); color: #fff; }
[data-theme="dark"] .bill-item { background: var(--bg-soft); }
[data-theme="dark"] .category-btn { background: var(--bg-soft); color: var(--text); }
[data-theme="dark"] .category-btn.active { background: var(--pink); color: #fff; }
[data-theme="dark"] .adventure-card { background: linear-gradient(135deg,#3a2a3a,#4a3a4a); }
[data-theme="dark"] .adventure-status { background: var(--bg-soft); }
[data-theme="dark"] .adventure-story { background: var(--bg-soft); }
[data-theme="dark"] .butler-intro { background: linear-gradient(135deg,#3a2a3a,#4a3a4a); }
[data-theme="dark"] .butler-status-item { background: var(--bg-soft); }
[data-theme="dark"] .chat-msg.butler-msg .chat-bubble { background: var(--bg-soft); color: var(--text); }
[data-theme="dark"] .chat-msg.user-msg .chat-bubble { background: var(--pink); color: #fff; }
[data-theme="dark"] .quick-tag { background: var(--bg-soft); color: var(--text); }
[data-theme="dark"] .daily-report-area { background: var(--bg-soft); }
[data-theme="dark"] .upload-area { background: var(--bg-soft); border-color: var(--border); }
[data-theme="dark"] .food-picker-grid { background: var(--bg-soft); }
[data-theme="dark"] .food-pick-btn { background: var(--bg-card); border-color: var(--border); color: var(--text); }
[data-theme="dark"] .food-pick-btn:hover { background: var(--pink); color: #fff; }
[data-theme="dark"] .exercise-item { background: var(--bg-soft); }
[data-theme="dark"] .weight-history-item { background: var(--bg-soft); }
[data-theme="dark"] .over-eat-info { background: var(--bg-soft); }
[data-theme="dark"] .empathy-response { background: var(--bg-soft); }
[data-theme="dark"] .confirm-actions { background: var(--bg-soft); }
[data-theme="dark"] .locating-status { background: var(--bg-soft); color: var(--text-s); }

* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html,body { height:100%; font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; background:var(--bg); color:var(--text); font-size:14px; line-height:1.5; overflow:hidden; }

.app { display:flex; flex-direction:column; height:100vh; height:100dvh; overflow:hidden; max-width:100%; margin:0 auto; position:relative; }

/* ===== 开屏页 ===== */
.splash-screen { position:fixed; inset:0; z-index:9999; background:linear-gradient(180deg,var(--bg) 0%,var(--pink-bg) 100%); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:calc(31px + var(--safe-top)) 35px calc(31px + var(--safe-bottom)); transition:opacity .45s ease,visibility .45s ease; overflow-y:auto; }
/* 柔光晕：淡粉 + 淡金，衬底不抢主视觉 */
.splash-screen::before { content:""; position:absolute; top:-10%; left:-20%; width:76vw; max-width:340px; height:76vw; max-height:340px; border-radius:50%; background:radial-gradient(circle,rgba(255,182,193,.40) 0%,rgba(255,182,193,0) 70%); pointer-events:none; z-index:0; }
.splash-screen::after { content:""; position:absolute; bottom:-12%; right:-18%; width:82vw; max-width:380px; height:82vw; max-height:380px; border-radius:50%; background:radial-gradient(circle,rgba(255,226,168,.34) 0%,rgba(255,226,168,0) 70%); pointer-events:none; z-index:0; }
/* 装饰小元素 */
.splash-deco { position:absolute; top:0; bottom:0; left:50%; transform:translateX(-50%); width:100%; max-width:480px; pointer-events:none; overflow:hidden; z-index:0; }
.splash-deco .sd { position:absolute; opacity:.55; line-height:1; filter:drop-shadow(0 2px 6px rgba(255,107,157,.18)); animation:sdFloat 6s ease-in-out infinite; will-change:transform; }
@keyframes sdFloat { 0%,100% { transform:translateY(0) rotate(0deg); } 50% { transform:translateY(-9px) rotate(7deg); } }
.splash-deco .sd-1  { top:7%;  left:9%;   font-size:26px; animation-duration:6.4s; animation-delay:-.2s; }
.splash-deco .sd-2  { top:13%; right:12%; font-size:18px; animation-duration:5.2s; animation-delay:-1.1s; opacity:.62; }
.splash-deco .sd-3  { top:25%; left:4%;   font-size:22px; animation-duration:7.1s; animation-delay:-2.4s; }
.splash-deco .sd-4  { top:31%; right:5%;  font-size:20px; animation-duration:6.8s; animation-delay:-.8s; }
.splash-deco .sd-5  { top:4%;  right:33%; font-size:14px; animation-duration:5.6s; animation-delay:-3.0s; opacity:.5; }
.splash-deco .sd-6  { bottom:15%; left:7%;   font-size:24px; animation-duration:6.2s; animation-delay:-1.6s; }
.splash-deco .sd-7  { bottom:8%;  right:11%; font-size:22px; animation-duration:7.4s; animation-delay:-.5s; }
.splash-deco .sd-8  { bottom:25%; right:4%;  font-size:16px; animation-duration:5.0s; animation-delay:-2.1s; opacity:.5; }
.splash-deco .sd-9  { bottom:4%;  left:29%;  font-size:18px; animation-duration:6.6s; animation-delay:-2.8s; opacity:.48; }
.splash-deco .sd-10 { top:45%; left:5%;   font-size:15px; animation-duration:5.8s; animation-delay:-1.3s; opacity:.48; }
.splash-deco .sd-11 { top:18%; left:16%;  font-size:14px; animation-duration:6.9s; animation-delay:-3.4s; opacity:.42; }
.splash-deco .sd-12 { bottom:33%; left:11%; font-size:13px; animation-duration:5.4s; animation-delay:-.9s; opacity:.45; }
@media (prefers-reduced-motion:reduce) { .splash-deco .sd { animation:none; } }
[data-theme="dark"] .splash-deco .sd { opacity:.4; }
[data-theme="dark"] .splash-screen::before { background:radial-gradient(circle,rgba(255,142,174,.22) 0%,rgba(255,142,174,0) 70%); }
[data-theme="dark"] .splash-screen::after { background:radial-gradient(circle,rgba(255,226,168,.16) 0%,rgba(255,226,168,0) 70%); }
@media (max-height:640px) {
  .splash-avatar-wrap { width:120px; height:120px; margin-bottom:20px; }
  .splash-greeting { font-size:23px; }
  .splash-quote { margin-bottom:30px; }
  .splash-content { padding:8px 0; }
}
.splash-screen.hidden { opacity:0; visibility:hidden; pointer-events:none; }
.splash-content { width:100%; max-width:360px; display:flex; flex-direction:column; align-items:center; text-align:center; padding:16px 0; position:relative; z-index:1; animation:splashIn .7s cubic-bezier(.2,.8,.2,1) both; }
@keyframes splashIn { from { opacity:0; transform:translateY(18px) scale(.96); } to { opacity:1; transform:none; } }
.splash-avatar-wrap { width:170px; height:170px; border-radius:50%; padding:5px; background:linear-gradient(135deg,var(--pink-l),var(--pink)); box-shadow:0 8px 28px rgba(255,107,157,.28); margin-bottom:28px; }
.splash-avatar { width:100%; height:100%; border-radius:50%; object-fit:cover; border:4px solid var(--bg-card); background:var(--bg-card); }
.splash-date { font-size:15px; color:var(--text-s); margin-bottom:13px; letter-spacing:.5px; }
.splash-greeting { font-size:28px; font-weight:800; color:var(--text); margin-bottom:16px; line-height:1.25; }
.splash-greeting small { display:block; font-size:14px; color:var(--text-s); font-weight:500; margin-top:6px; }
.splash-quote { font-size:15px; color:var(--pink); background:var(--bg-card); padding:16px 22px; border-radius:var(--r-sm); box-shadow:var(--shadow); margin-bottom:42px; max-width:320px; line-height:1.7; position:relative; text-wrap:balance; overflow-wrap:break-word; }
.splash-quote::before { content:'"'; margin-right:3px; font-size:15px; color:var(--pink-s); font-family:inherit; font-weight:700; }
.splash-quote::after { content:'"'; margin-left:3px; font-size:15px; color:var(--pink-s); font-family:inherit; font-weight:700; }
.splash-enter-btn { appearance:none; border:none; outline:none; width:min(100%,260px); padding:16px 30px; font-size:16px; font-weight:700; color:#fff; background:linear-gradient(135deg,var(--pink-l),var(--pink)); border-radius:28px; box-shadow:0 6px 20px rgba(255,107,157,.35); cursor:pointer; transition:transform .18s ease,box-shadow .18s ease; }
.splash-enter-btn:active { transform:scale(.97); box-shadow:0 3px 12px rgba(255,107,157,.28); }

/* ===== 侧边栏 ===== */
/* ===== 抽屉式侧边栏 ===== */
.drawer-mask { position:fixed; inset:0; background:rgba(90,58,74,.42); backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); opacity:0; visibility:hidden; transition:opacity .3s ease,visibility .3s ease; z-index:900; }
.drawer-mask.open { opacity:1; visibility:visible; }

.sidebar { position:fixed; left:0; top:0; bottom:0; width:var(--drawer-w); max-width:82vw; z-index:901; background:linear-gradient(180deg,var(--pink-bg),var(--pink-accent),var(--pink-bg)); border-right:1px solid var(--border); display:flex; flex-direction:column; padding:calc(14px + var(--safe-top)) 0 calc(14px + var(--safe-bottom)) 0; overflow-y:auto; transform:translateX(-100%); transition:transform .3s cubic-bezier(.4,0,.2,1); box-shadow:4px 0 22px rgba(255,107,157,.16); }
.sidebar.open { transform:translateX(0); }
.sidebar::-webkit-scrollbar { display:none; }
[data-theme="dark"] .sidebar { background:linear-gradient(180deg,#2a1e2a,#3a2a3a,#2a1e2a); }
.sidebar-inner { display:flex; flex-direction:column; gap:6px; width:100%; flex:1; }

.logo-area { display:flex; align-items:center; gap:10px; padding:4px 18px 16px; }
.hk-avatar { width:44px; height:44px; border-radius:50%; border:2px solid var(--pink); object-fit:cover; box-shadow:0 3px 10px rgba(255,107,157,0.2); flex-shrink:0; }
.logo-text { font-size:17px; color:var(--pink); font-weight:800; letter-spacing:.5px; }

.side-nav { display:flex; flex-direction:column; gap:4px; width:100%; padding:0 10px; flex:1; }
.nav-btn { display:flex; flex-direction:row; align-items:center; gap:12px; background:none; border:none; cursor:pointer; padding:9px 12px; border-radius:var(--r-sm); transition:all .2s; font-family:inherit; position:relative; width:100%; text-align:left; }
.nav-icon-wrap { width:42px; height:42px; border-radius:14px; display:flex; align-items:center; justify-content:center; background:#fff; box-shadow:var(--shadow); transition:all .2s; padding:5px; flex-shrink:0; }
.nav-icon-img { width:100%; height:100%; object-fit:contain; border-radius:11px; }
.nav-label { font-size:15px; color:var(--text-s); font-weight:600; white-space:nowrap; }
.nav-btn:hover { background:rgba(255,255,255,.5); }
.nav-btn:hover .nav-icon-wrap { transform:translateY(-1px) scale(1.03); }
.nav-btn.active { background:rgba(255,255,255,.72); }
[data-theme="dark"] .nav-btn.active, [data-theme="dark"] .nav-btn:hover { background:rgba(255,255,255,.08); }
.nav-btn.active .nav-icon-wrap { transform:scale(1.04); box-shadow:0 4px 14px rgba(255,107,157,0.35); }
.nav-btn.active .nav-label { color:var(--pink); font-weight:800; }
.nav-btn.active::before { content:''; position:absolute; left:0; top:50%; transform:translateY(-50%); width:3px; height:26px; background:var(--pink); border-radius:0 3px 3px 0; }
.side-foot { margin-top:auto; padding:10px 10px 0; border-top:1px solid rgba(255,107,157,.18); }
[data-theme="dark"] .side-foot { border-top-color:rgba(255,255,255,.10); }
.settings-btn { width:100%; }

/* 汉堡菜单按钮 */
.hamburger-btn { width:36px; height:36px; flex-shrink:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; background:var(--bg-soft); border:1px solid var(--border); border-radius:11px; cursor:pointer; margin-right:10px; padding:0; transition:transform .18s ease; }
.hamburger-btn:active { transform:scale(.93); }
.hamburger-btn span { display:block; width:17px; height:2px; border-radius:2px; background:var(--pink); transition:all .25s ease; }
.hamburger-btn.active span:nth-child(1) { transform:translateY(6px) rotate(45deg); }
.hamburger-btn.active span:nth-child(2) { opacity:0; }
.hamburger-btn.active span:nth-child(3) { transform:translateY(-6px) rotate(-45deg); }

/* 照片类图标（崽崽）：用 cover 裁切填满圆角方块，与其他插画图标视觉重量一致 */
.nav-icon-wrap img[src*="butler-icon"] { object-fit:cover; width:100%; height:100%; border-radius:11px; }
.hk-icon-sm[src*="butler-icon"] { object-fit:cover; border-radius:8px; }
.butler-avatar[src*="butler-icon"] { object-fit:cover; }

@media (min-width:768px) {
  :root { --drawer-w: 320px; }
  /* 宽屏自适应：桌面铺满屏幕，内容加宽居中（不再固定 480px 窄列） */
  .app { max-width:100%; }
  .content { max-width:100%; margin:0 auto; }
  .main-header { max-width:100%; margin:0 auto; width:100%; }
}

/* ===== 主区域 ===== */
.main { flex:1; display:flex; flex-direction:column; overflow:hidden; min-width:0; }
.main-header { height:calc(var(--header-h) + var(--safe-top)); background:var(--bg-card); border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; padding:var(--safe-top) 14px 0 14px; flex-shrink:0; }
.greeting { display:flex; align-items:center; gap:8px; cursor:pointer; padding:4px 6px; border-radius:18px; }
.hk-avatar-sm { width:36px; height:36px; border-radius:50%; border:2px solid var(--pink); object-fit:cover; }
.greeting-text { display:flex; flex-direction:column; }
.hi-text { font-size:15px; font-weight:700; margin:0; }
.hi-text span { color:var(--pink); }
.date-text { font-size:10px; color:var(--text-m); }
.theme-toggle { width:34px; height:34px; border:1px solid var(--border); background:var(--bg-soft); border-radius:50%; cursor:pointer; font-size:15px; display:flex; align-items:center; justify-content:center; }
.greeting { margin-right:auto; }
.cloud-badge { font-size:11px; line-height:1; padding:6px 10px; border-radius:14px; border:1px solid var(--border); background:var(--bg-soft); color:var(--text-m); cursor:pointer; white-space:nowrap; display:inline-flex; align-items:center; gap:3px; margin-right:8px; }
.cloud-badge.ok { background:#e7f7ec; color:#1f9d55; border-color:#bce8c9; }
.cloud-badge.busy { background:#fff7e0; color:#c98a00; border-color:#f3e0a8; }
.cloud-badge.bad { background:#fdecec; color:#d64545; border-color:#f5c2c2; }
.cloud-badge.off { background:var(--bg-soft); color:var(--text-m); }
.form-divider { display:flex; align-items:center; gap:8px; margin:16px 0 4px; font-size:13px; font-weight:700; color:var(--pink); }
.form-divider::before, .form-divider::after { content:''; flex:1; height:1px; background:var(--border); }
.settings-reset-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; padding-top:14px; border-top:1px dashed var(--border); }
.settings-reset-row .hello-btn { width:auto; flex:1 1 30%; min-width:0; margin:0; padding:10px 8px; font-size:12px; }

.content { flex:1; width:100%; overflow-y:auto; overflow-x:hidden; padding:12px 12px calc(20px + var(--safe-bottom)) 12px; -webkit-overflow-scrolling:touch; overscroll-behavior-y:contain; touch-action:pan-y; }
.content::-webkit-scrollbar { width:3px; }
.content::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }

/* ===== 面板 ===== */
.panel { display:none; animation:fadeIn .3s ease; width:100%; max-width:100%; overflow-x:hidden; }
.panel .hello-card, .panel .weight-block, .panel .macro-item, .panel .food-item { min-width:0; }
.panel .hello-card > *, .panel img { max-width:100%; }
/* 移动端兜底：面板内所有表单控件不超出容器 */
.panel input, .panel select, .panel textarea { max-width:100%; min-width:0; }
.panel.active { display:block; }
@keyframes fadeIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }

.page-title { display:flex; align-items:center; gap:8px; margin-bottom:12px; }
.page-title h2 { font-size:18px; font-weight:800; letter-spacing:-0.3px; }
.hk-icon-sm { width:28px; height:28px; flex-shrink:0; object-fit:contain; }
.self-care-tag { margin-left:auto; background:var(--pink-accent); color:var(--pink); padding:3px 10px; border-radius:10px; font-size:11px; font-weight:600; }

/* ===== 卡片 ===== */
.hello-card { background:var(--bg-card); border-radius:var(--r); padding:16px; margin-bottom:12px; box-shadow:var(--shadow); border:1px solid var(--border); }

/* ============ 待办事项 ============ */
.todo-add-card { padding:12px 14px; }
.todo-add-card h3 { margin-bottom:8px; }
.todo-add-row { display:flex; gap:8px; align-items:center; }
.todo-add-row .hello-input { flex:1; min-width:0; }
.todo-prio-select { flex:0 0 auto; height:38px; padding:0 8px; border:1px solid var(--border); border-radius:var(--r-sm); background:var(--bg-soft); color:var(--text); font-size:12px; font-family:inherit; cursor:pointer; outline:none; min-width:0; max-width:100%; -webkit-appearance:none; appearance:none; }
.todo-prio-select:focus { border-color:var(--pink); }
.todo-add-plus { flex:0 0 auto; width:38px; height:38px; border-radius:50%; border:none; background:linear-gradient(135deg,var(--pink),var(--pink-l)); color:#fff; font-size:22px; font-weight:300; line-height:1; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; box-shadow:0 2px 8px rgba(255,107,157,.25); transition:transform .15s,box-shadow .15s; }
.todo-add-plus:hover { transform:scale(1.08); box-shadow:0 3px 12px rgba(255,107,157,.35); }
.todo-add-plus:active { transform:scale(.92); }

/* 今日进度卡片 */
.todo-stat-card h3 { margin-bottom:8px; }
.todo-stat-row { display:flex; align-items:baseline; gap:8px; }
.todo-stat-num { font-size:28px; font-weight:800; color:var(--pink); font-variant-numeric:tabular-nums; }
.todo-stat-num small { font-size:16px; color:var(--text-m); margin:0 1px; }
.todo-stat-num span:last-child { color:var(--text-s); }
.todo-stat-pct { margin-left:auto; font-size:18px; font-weight:700; color:var(--text-s); }

/* 本周统计 */
.todo-week-row { display:flex; gap:8px; }
.todo-week-item { flex:1; text-align:center; padding:10px 6px; background:var(--bg-soft); border:1px solid var(--border); border-radius:var(--r-sm); }
.todo-week-num { font-size:20px; font-weight:800; color:var(--pink); font-variant-numeric:tabular-nums; }
.todo-week-label { font-size:10.5px; color:var(--text-m); margin-top:3px; }
[data-theme="dark"] .todo-week-item { background:var(--bg-soft); }

/* 优先级分组 */
.todo-prio-card { padding:12px 14px; }
.todo-prio-group { margin-top:8px; border-top:1px solid var(--border); padding-top:8px; }
.todo-prio-group:first-of-type { border-top:none; padding-top:0; }
.todo-prio-head { display:flex; align-items:center; gap:8px; }
.todo-prio-tag { font-size:11px; font-weight:700; border-radius:10px; padding:2px 9px; line-height:1.7; border:1px solid transparent; cursor:pointer; font-family:inherit; transition:all .15s; }
.todo-prio-tag.high { background:rgba(255,107,157,.12); color:var(--danger); border-color:var(--pink-s); }
.todo-prio-tag.medium { background:rgba(255,184,108,.14); color:var(--warn); border-color:rgba(255,184,108,.4); }
.todo-prio-tag.low { background:rgba(125,216,125,.14); color:var(--green); border-color:rgba(125,216,125,.4); }
[data-theme="dark"] .todo-prio-tag.high { background:rgba(255,107,157,.18); }
[data-theme="dark"] .todo-prio-tag.medium { background:rgba(255,184,108,.18); }
[data-theme="dark"] .todo-prio-tag.low { background:rgba(125,216,125,.18); }
.todo-prio-tag.active { box-shadow:0 0 0 2px var(--pink-s); }
.todo-prio-count { font-size:11px; font-weight:700; color:var(--text-m); }
.todo-prio-toggle { margin-left:auto; background:none; border:none; cursor:pointer; font-size:14px; color:var(--text-s); padding:2px 4px; font-family:inherit; }
.todo-prio-body { margin-top:6px; }

/* 待办项内的优先级标签 */
.todo-item-prio { font-size:10px; font-weight:700; border-radius:8px; padding:1px 7px; line-height:1.6; margin-right:6px; display:inline-block; vertical-align:middle; }
.todo-item-prio.high { background:rgba(255,107,157,.14); color:var(--danger); }
.todo-item-prio.medium { background:rgba(255,184,108,.16); color:var(--warn); }
.todo-item-prio.low { background:rgba(125,216,125,.16); color:var(--green); }
[data-theme="dark"] .todo-item-prio.high { background:rgba(255,107,157,.2); }
[data-theme="dark"] .todo-item-prio.medium { background:rgba(255,184,108,.2); }
[data-theme="dark"] .todo-item-prio.low { background:rgba(125,216,125,.2); }
.todo-main { display:flex; flex-wrap:wrap; align-items:center; flex:1; min-width:0; }
.todo-main .todo-title { flex:1; min-width:0; }

.todo-progress { margin-top:14px; }
.todo-progress-track { height:8px; border-radius:6px; background:var(--bg-soft); border:1px solid var(--border); overflow:hidden; }
.todo-progress-fill { height:100%; width:0; border-radius:6px; background:linear-gradient(90deg,var(--pink-l),var(--pink)); transition:width .45s cubic-bezier(.2,.8,.2,1); }
.todo-progress-text { font-size:12px; color:var(--text-s); margin-top:7px; text-align:center; }

.todo-group h3 { display:flex; align-items:center; gap:8px; }
.todo-group-count { font-size:11px; font-weight:700; color:var(--pink); background:var(--pink-bg); border:1px solid var(--pink-s); border-radius:10px; padding:1px 8px; line-height:1.6; }
[data-theme="dark"] .todo-group-count { background:rgba(255,107,157,.14); }
.todo-clear-btn { margin-left:auto; font-size:11px; color:var(--text-m); background:transparent; border:none; cursor:pointer; font-family:inherit; padding:2px 4px; transition:color .15s; }
.todo-clear-btn:hover { color:var(--pink); }

.todo-list { display:flex; flex-direction:column; gap:8px; }
.todo-empty { font-size:12.5px; color:var(--text-m); text-align:center; padding:14px 0; }

.todo-item { display:flex; align-items:center; gap:10px; padding:11px 12px; border-radius:var(--r-sm); background:var(--bg-soft); border:1px solid var(--border); transition:background .18s,border-color .18s,opacity .18s; }
.todo-item.doing { background:var(--pink-bg); border-color:var(--pink-s); }
[data-theme="dark"] .todo-item.doing { background:rgba(255,107,157,.12); }
.todo-item.done { opacity:.7; }
.todo-main { flex:1; min-width:0; }
.todo-title { font-size:13.5px; font-weight:600; color:var(--text); line-height:1.45; word-break:break-word; }
.todo-item.done .todo-title { text-decoration:line-through; color:var(--text-s); }
.todo-meta { display:flex; align-items:center; gap:5px; flex-wrap:wrap; font-size:11px; color:var(--text-m); margin-top:4px; }
.todo-dot { opacity:.6; }
.todo-time { font-weight:700; color:var(--pink); font-variant-numeric:tabular-nums; }
.todo-item.done .todo-time { color:var(--text-s); }

.todo-ops { display:flex; align-items:center; gap:6px; flex:0 0 auto; }
.todo-btn { width:30px; height:30px; padding:0; border-radius:50%; border:1px solid var(--border); background:var(--bg-card); color:var(--text-s); font-size:13px; line-height:1; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:border-color .15s,transform .15s,box-shadow .15s; }
.todo-btn:hover { border-color:var(--pink); }
.todo-btn:active { transform:scale(.9); }
.todo-btn.clock { border-color:var(--pink-s); }
.todo-btn.clock.running { background:linear-gradient(135deg,var(--pink),var(--pink-l)); border-color:transparent; animation:todoPulse 1.9s ease-in-out infinite; }
@keyframes todoPulse { 0%,100%{ box-shadow:0 2px 8px rgba(255,107,157,.28); } 50%{ box-shadow:0 2px 15px rgba(255,107,157,.58); } }

/* 计时操作弹窗 */
.todo-timer-name { font-size:13.5px; font-weight:700; color:var(--text); margin-top:6px; word-break:break-word; }
.todo-timer-elapsed { font-size:32px; font-weight:800; color:var(--pink); margin:10px 0 6px; font-variant-numeric:tabular-nums; letter-spacing:1px; line-height:1.1; }
.todo-timer-tip { font-size:12.5px; color:var(--text-s); line-height:1.6; }

/* 庆祝弹窗 */
.celebrate-mask { position:absolute; inset:0; background:rgba(74,58,74,.5); backdrop-filter:blur(3px); }
.celebrate-content { text-align:center; overflow:hidden; }
.celebrate-content .modal-body { padding:26px 20px 22px; position:relative; }
.celebrate-emoji { font-size:52px; line-height:1; margin-bottom:10px; animation:celebPop .55s cubic-bezier(.2,1.5,.4,1) both; }
.celebrate-title { font-size:18px; font-weight:800; color:var(--pink); margin-bottom:10px; }
.celebrate-text { font-size:13.5px; color:var(--text); line-height:1.8; margin-bottom:18px; }
@keyframes celebPop { 0%{ transform:scale(.3) rotate(-18deg); opacity:0; } 100%{ transform:none; opacity:1; } }

.celebrate-modal.grand .modal-content { max-width:392px; }
.celebrate-modal.grand .modal-body { padding:34px 24px 28px; }
.celebrate-modal.grand .celebrate-emoji { font-size:74px; margin-bottom:14px; }
.celebrate-modal.grand .celebrate-title { font-size:22px; margin-bottom:12px; }
.celebrate-modal.grand .celebrate-text { font-size:15px; line-height:1.9; margin-bottom:22px; }
.celebrate-modal.grand .celebrate-content { box-shadow:0 10px 42px rgba(255,107,157,.4); border:1px solid var(--pink-s); }

.celebrate-confetti { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
.celebrate-confetti span { position:absolute; top:-24px; animation-name:celebFall; animation-timing-function:linear; animation-iteration-count:1; animation-fill-mode:forwards; }
@keyframes celebFall { 0%{ transform:translateY(0) rotate(0); opacity:0; } 12%{ opacity:.95; } 100%{ transform:translateY(360px) rotate(300deg); opacity:0; } }

@media (prefers-reduced-motion:reduce){
  .todo-btn.clock.running { animation:none; }
  .celebrate-emoji { animation:none; }
  .celebrate-confetti { display:none; }
}
.hello-card h3 { font-size:14px; font-weight:700; margin-bottom:10px; }
.card-hint { font-size:11px; color:var(--text-m); margin-bottom:8px; }

/* ===== 偏好 ===== */
.pref-list { display:flex; flex-direction:column; gap:6px; margin-bottom:10px; }
.pref-item { display:flex; align-items:center; gap:6px; padding:7px 10px; background:var(--bg-soft); border-radius:var(--r-sm); font-size:12px; }
.pref-icon { font-size:14px; flex-shrink:0; }
.pref-label { color:var(--text-s); flex-shrink:0; min-width:60px; font-size:12px; }
.pref-val { color:var(--text); font-weight:600; flex:1; text-align:right; font-size:12px; }

/* ===== 本地特色 ===== */
.local-tabs { display:flex; gap:0; margin-bottom:12px; border-radius:var(--r-sm); overflow:hidden; border:1px solid var(--border); }
.local-tab { flex:1; padding:8px; border:none; background:var(--bg-soft); cursor:pointer; font-family:inherit; font-size:12px; font-weight:600; color:var(--text-s); transition:all .15s; }
.local-tab.active { background:var(--pink); color:#fff; }

/* ===== 餐次 ===== */
.meal-block { margin-bottom:12px; }
.meal-title { display:flex; align-items:center; gap:6px; padding:6px 2px; font-size:14px; font-weight:700; }
.meal-type-tabs { display:flex; gap:2px; margin-left:4px; }
.meal-type-tab { background:var(--bg-soft); border:1px solid var(--border); border-radius:10px; padding:2px 8px; font-size:10px; cursor:pointer; color:var(--text-m); transition:all .15s; }
.meal-type-tab.active { background:var(--pink); color:#fff; border-color:var(--pink); }
.refresh-mini { margin-left:auto; background:var(--pink-accent); color:var(--pink); border:none; width:26px; height:26px; border-radius:50%; cursor:pointer; font-size:12px; display:flex; align-items:center; justify-content:center; }
.dish-list { display:flex; flex-direction:column; gap:8px; }

.dish-card { background:var(--bg-card); border-radius:var(--r-sm); padding:12px; display:flex; align-items:flex-start; gap:10px; box-shadow:var(--shadow); border:1px solid var(--border); }
.dish-emoji { font-size:26px; width:42px; height:42px; background:var(--bg-soft); border-radius:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.dish-body { flex:1; min-width:0; }
.dish-name { font-weight:700; font-size:13px; margin-bottom:2px; }
.dish-meta { font-size:10px; color:var(--text-m); display:flex; gap:6px; flex-wrap:wrap; margin-bottom:2px; }
.dish-addr { font-size:10px; color:var(--pink); opacity:.85; line-height:1.4; margin-bottom:2px; word-break:break-all; }
.dish-src { font-size:10px; color:var(--text-m); opacity:.9; line-height:1.4; margin-bottom:2px; word-break:break-all; }
.pref-accuracy { font-size:11px; color:var(--text-m); line-height:1.5; margin:6px 0 2px; padding:6px 8px; background:var(--bg-card); border-radius:8px; word-break:break-all; }
.pref-accuracy:empty { display:none; }
.dish-desc { font-size:11px; color:var(--text-s); line-height:1.4; }
.dish-actions { display:flex; flex-direction:column; gap:4px; flex-shrink:0; }
.dish-btn { width:30px; height:28px; border:1px solid var(--border); background:var(--bg-card); border-radius:8px; cursor:pointer; font-size:13px; display:flex; align-items:center; justify-content:center; transition:all .15s; }
.dish-btn.like.active { background:var(--green); border-color:var(--green); color:#fff; }
.dish-btn.dislike.active { background:var(--danger); border-color:var(--danger); color:#fff; }
.diet-intro { font-size:12px; color:var(--text-m); line-height:1.6; margin:0 0 10px; }
.dish-meta .dish-cal { color:var(--pink); font-weight:700; }
.dish-meta .dish-protein { color:var(--green); font-weight:700; }
.dish-tags { display:flex; flex-wrap:wrap; gap:4px; margin:4px 0 2px; }
.dish-tag { font-size:10px; padding:1px 7px; border-radius:10px; background:var(--bg-soft); color:var(--text-m); border:1px solid var(--border); }
[data-theme="dark"] .diet-intro { color:var(--text-m); }
.rot-info { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 4px; }
.rot-pill { font-size:11px; padding:3px 9px; border-radius:12px; background:var(--bg-soft); color:var(--text-m); border:1px solid var(--border); white-space:nowrap; }

.dish-type-tag { display:inline-block; padding:1px 6px; border-radius:6px; font-size:9px; font-weight:600; margin-right:4px; }
.dish-type-tag.delivery { background:rgba(255,184,108,.12); color:var(--warn); }
.dish-type-tag.dinein { background:var(--blue-bg); color:var(--text-s); }
.dish-jump-btn { flex-shrink:0; align-self:center; border:none; border-radius:var(--r-sm); padding:6px 10px; font-size:11px; font-weight:700; cursor:pointer; transition:all .15s; }
.dish-jump-btn.delivery { background:linear-gradient(135deg,#ffb6c1,#ff6b9d); color:#fff; }
.dish-jump-btn.dinein { background:linear-gradient(135deg,#a8d8ff,#4a90d9); color:#fff; }
.dish-jump-btn:active { transform:scale(0.92); }
.local-dish-card { align-items:stretch; }
.dish-shop { font-size:10px; color:var(--text-m); margin-right:6px; }
.dish-distance { font-size:10px; color:var(--green); font-weight:600; }

/* ===== 口味统计 ===== */
.taste-stats { display:flex; align-items:center; gap:12px; padding:12px; background:linear-gradient(135deg,var(--pink-bg),var(--pink-accent)); border-radius:var(--r-sm); margin-bottom:8px; }
.taste-ops { display:flex; gap:8px; margin-top:10px; }
.taste-ops .hello-btn { flex:1; width:auto; min-width:0; padding:8px 10px; font-size:12px; }
.taste-stat { flex:1; text-align:center; }
.taste-num { font-size:24px; font-weight:800; color:var(--pink); line-height:1; }
.taste-label { font-size:10px; color:var(--text-s); margin-top:2px; }
.taste-divider { width:1px; height:24px; background:var(--pink-accent); }

/* ===== 减脂 ===== */
.fitness-status { background:linear-gradient(135deg,var(--pink-accent),var(--pink-bg)); }
.weight-row { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; gap:4px; }
.weight-block { flex:1; text-align:center; }
.weight-label { font-size:10px; color:var(--text-s); margin-bottom:2px; }
.weight-val { font-size:18px; font-weight:800; }
.weight-val span { font-size:11px; font-weight:500; color:var(--text-m); }
.weight-val.target { color:var(--pink); }
.weight-val.gap { color:var(--pink-l); }

.progress-wrap { margin-bottom:12px; }
.progress-bar { height:8px; background:rgba(255,107,157,0.1); border-radius:4px; overflow:hidden; margin-bottom:4px; }
.progress-fill { height:100%; background:linear-gradient(90deg,var(--pink),var(--pink-l)); border-radius:4px; width:0; transition:width .6s; }
.progress-info { display:flex; justify-content:space-between; font-size:11px; color:var(--text-s); }

.cal-row { display:flex; justify-content:space-between; padding:7px 0; border-bottom:1px dashed var(--border); font-size:13px; }
.cal-row:last-child { border-bottom:none; }
.cal-row.highlight { font-weight:700; color:var(--pink); font-size:15px; padding-top:10px; }
.cal-val { font-weight:700; }

.cal-result { background:linear-gradient(135deg,var(--green-bg),rgba(125,216,125,.1)); padding:12px 14px; border-radius:var(--r-sm); display:flex; align-items:center; gap:8px; font-size:13px; }
.cal-result strong { font-size:16px; font-weight:800; color:var(--green); }
.status-tag { margin-left:auto; background:var(--green); color:#fff; padding:3px 10px; border-radius:10px; font-size:10px; font-weight:600; }

.macro-row { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.macro-item { text-align:center; padding:10px 2px; background:var(--bg-soft); border-radius:var(--r-sm); }
.macro-label { font-size:10px; color:var(--text-s); margin-bottom:2px; }
.macro-val { font-size:14px; font-weight:800; color:var(--pink); }

/* ===== 饮水追踪 ===== */
.water-tracker { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:10px; }
.water-cup { width:100%; aspect-ratio:1; border-radius:50%; border:3px solid var(--border); background:var(--bg-soft); cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; transition:all .2s; }
.water-cup.filled { background:linear-gradient(135deg,var(--blue-bg),rgba(100,149,237,.12)); border-color:var(--pink-s); }
.water-cup .cup-emoji { font-size:20px; }
.water-cup .cup-num { font-size:10px; color:var(--text-s); font-weight:600; margin-top:2px; }
.water-cup.filled .cup-num { color:var(--pink); }
.water-summary { display:flex; align-items:center; gap:8px; font-size:13px; }
.water-summary strong { color:var(--pink); font-size:16px; }

/* ===== 减脂冷知识 ===== */
.fitness-fact-card { background:linear-gradient(135deg,var(--blue-bg),var(--pink-bg)); }
.fitness-fact { font-size:12px; color:var(--text-s); line-height:1.6; }

/* ===== 饮食记录 ===== */
.quick-add-row { display:flex; gap:6px; margin-bottom:10px; align-items:center; width:100%; min-width:0; }
.quick-add-row .hello-input { flex:1; min-width:0; }
.hello-input { flex:1; padding:10px 12px; border:1px solid var(--border); border-radius:var(--r-sm); background:var(--bg-soft); color:var(--text); font-size:13px; font-family:inherit; outline:none; min-width:0; max-width:100%; }
.hello-input.grams { flex:0 0 56px; }
.hello-input:focus { border-color:var(--pink); background:var(--bg-card); }
.food-add-btn { flex:0 0 34px; width:34px; height:34px; padding:0; border-radius:50%; font-size:18px; line-height:1; font-weight:700; min-width:0; }
textarea.hello-input { width:100%; resize:vertical; font-family:inherit; line-height:1.6; min-height:62px; padding:12px 14px; font-size:13px; }

.today-food-list { display:flex; flex-direction:column; gap:6px; }
.food-item { display:flex; align-items:center; gap:8px; padding:8px 10px; background:var(--bg-soft); border-radius:var(--r-sm); }
.food-item-info { flex:1; display:flex; flex-direction:column; }
.food-item-name { font-size:12px; font-weight:600; }
.food-item-meta { font-size:10px; color:var(--text-m); }
.food-item-cal { font-weight:800; color:var(--pink); font-size:13px; }
.food-del { width:22px; height:22px; border:none; background:none; color:var(--text-m); cursor:pointer; font-size:14px; border-radius:50%; }

/* ===== 上传区 ===== */
.upload-area { border:2px dashed var(--pink-s); border-radius:var(--r-sm); padding:22px; text-align:center; cursor:pointer; background:var(--bg-soft); }
.food-preview { max-width:100%; max-height:160px; border-radius:var(--r-sm); margin-top:10px; }
.upload-result { margin-top:12px; padding:12px; background:var(--bg-soft); border-radius:var(--r-sm); }
.ur-row { display:flex; justify-content:space-between; padding:3px 0; font-size:12px; }
.ur-row strong { color:var(--pink); }
.food-picker-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:8px; }
.food-pick-btn { background:linear-gradient(135deg,var(--pink-bg),var(--pink-accent)); border:1px solid var(--pink-s); border-radius:var(--r-sm); padding:8px 4px; font-size:12px; cursor:pointer; color:var(--text); transition:all .15s; }
.food-pick-btn:hover { background:var(--pink); color:#fff; border-color:var(--pink); }
.food-pick-btn:active { transform:scale(0.95); }

/* ===== 运动 ===== */
.exercise-list { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.exercise-item { background:linear-gradient(135deg,var(--pink-bg),var(--pink-accent)); border-radius:var(--r-sm); padding:10px; border:1px solid var(--border); cursor:pointer; }
.exercise-name { font-weight:700; font-size:12px; margin-bottom:2px; }
.exercise-meta { font-size:10px; color:var(--text-s); }

.chart-container { position:relative; width:100%; height:200px; margin-bottom:8px; }
#weightChart { width:100% !important; height:100% !important; }
.weight-history { margin-top:10px; max-height:160px; overflow-y:auto; }
#spendChart { width:100% !important; height:100% !important; }
.weight-record { display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px dashed var(--border); font-size:12px; }
.weight-record:last-child { border-bottom:none; }
.wr-val { font-weight:700; color:var(--pink); }

/* ===== 经期 ===== */
.period-predict { background:linear-gradient(135deg,#ffd4e8,#ffb8d9); color:#fff; }
.predict-main { display:flex; align-items:center; gap:12px; }
.predict-days { font-size:14px; font-weight:600; }
.predict-days strong { font-size:20px; margin:0 2px; }
.predict-date { font-size:12px; opacity:0.9; margin-top:2px; }

.period-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:12px; }
.stat-card { background:var(--bg-card); border-radius:var(--r-sm); padding:14px 8px; text-align:center; box-shadow:var(--shadow); border:1px solid var(--border); }
.stat-num { font-size:24px; font-weight:800; color:var(--pink); line-height:1; }
.stat-label { font-size:10px; color:var(--text-s); margin-top:2px; }

.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:10px; }

/* ===== 专项修复：经期开始/结束日期（直接打在日期选择器父容器 #periodDateRow 上） ===== */
#periodDateRow { display:flex; flex-wrap:wrap; gap:16px; width:100%; max-width:100%; min-width:0; margin-bottom:10px; padding:0; }
#periodDateRow > .form-field { flex:1 1 44%; min-width:0; margin-bottom:0; max-width:100%; }
#periodDateRow > .form-field input[type="date"] { display:block; width:100%; min-width:100%; max-width:100%; box-sizing:border-box; -webkit-appearance:none; appearance:none; padding:10px 12px; font-size:13px; font-family:inherit; line-height:normal; height:40px; }
@media (max-width:600px) {
  #periodDateRow > .form-field { flex:1 1 100%; }
  #periodDateRow { gap:12px; }
}

/* ===== 专项修复：记账提醒时间输入框（不依赖全局兜底） ===== */
#remindSection .form-field { width:100%; max-width:100%; min-width:0; }
#remindTime { display:block; width:100%; max-width:100%; box-sizing:border-box; min-width:0; -webkit-appearance:none; appearance:none; }
.form-field { margin-bottom:12px; }
.form-field label { display:block; font-size:11px; font-weight:600; color:var(--text-s); margin-bottom:4px; }
/* 统一设置弹窗内输入框：flex 行内占满剩余空间、不被按钮挤压 */
.form-field .hello-input { width:100%; flex:1; min-width:0; }
.form-field .hello-btn { width:auto; flex-shrink:0; }
/* 移动端：所有表单控件不超父容器（日期/时间/下拉/文本/数字） */
.form-field input[type="time"], .form-field input[type="date"], .form-field select,
.form-field input[type="text"], .form-field input[type="number"], .form-field textarea {
  width:100%; max-width:100%; min-width:0;
}

.symptom-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:5px; }
.symptom-btn { padding:7px 3px; border:1px solid var(--border); background:var(--bg-soft); border-radius:var(--r-sm); cursor:pointer; font-family:inherit; font-size:11px; color:var(--text-s); transition:all .15s; }
.symptom-btn.active { background:var(--pink); border-color:var(--pink); color:#fff; font-weight:600; }

.period-records { display:flex; flex-direction:column; }
.period-record { padding:10px 0; border-bottom:1px dashed var(--border); }
.period-record:last-child { border-bottom:none; }
.pr-date { font-weight:700; font-size:12px; }
.pr-meta { font-size:10px; color:var(--text-s); margin-top:3px; display:flex; gap:4px; flex-wrap:wrap; }
.flow-tag { padding:2px 7px; border-radius:8px; font-size:10px; font-weight:600; }
.flow-light { background:var(--blue-bg); color:var(--text-s); }
.flow-medium { background:var(--pink-accent); color:var(--pink); }
.flow-heavy { background:rgba(255,107,157,.1); color:var(--danger); }

/* ===== 经期健康知识 ===== */
.period-tip-card { background:linear-gradient(135deg,var(--pink-accent),var(--pink-s)); }
.period-tip { font-size:12px; color:var(--text); line-height:1.6; }

/* ===== 记账 ===== */
.spend-overview { background:linear-gradient(135deg,var(--pink-bg),var(--pink-accent)); }
.spend-row { display:flex; justify-content:space-between; margin-bottom:10px; gap:4px; }
.spend-block { flex:1; text-align:center; }
.spend-label { font-size:10px; color:var(--text-s); margin-bottom:2px; }
.spend-val { font-size:16px; font-weight:800; }

.category-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin-bottom:12px; }
.cat-btn { border:1px solid var(--border); background:var(--bg-soft); padding:8px 2px; border-radius:var(--r-sm); cursor:pointer; font-family:inherit; font-size:10px; color:var(--text-s); text-align:center; }
.cat-btn.active { background:var(--pink-accent); border-color:var(--pink); color:var(--pink); font-weight:600; }

.feature-list { display:flex; flex-direction:column; gap:6px; }
.feature-item { display:flex; align-items:center; justify-content:space-between; padding:10px; background:var(--bg-soft); border-radius:var(--r-sm); }
.feature-info { display:flex; align-items:center; gap:8px; }
.feature-name { font-size:12px; font-weight:600; }
.feature-desc { font-size:10px; color:var(--text-m); }

.toggle-switch { position:relative; width:40px; height:22px; background:var(--text-m); border-radius:11px; cursor:pointer; flex-shrink:0; border:none; }
.toggle-switch.on { background:var(--green); }
.toggle-switch::after { content:''; position:absolute; top:2px; left:2px; width:18px; height:18px; background:#fff; border-radius:50%; transition:transform .2s; }
.toggle-switch.on::after { transform:translateX(18px); }

.bill-list { display:flex; flex-direction:column; }
.bill-item { display:flex; align-items:center; justify-content:space-between; padding:10px 0; border-bottom:1px dashed var(--border); }
.bill-item:last-child { border-bottom:none; }
.bill-left { display:flex; align-items:center; gap:8px; }
.bill-info .bill-desc { font-weight:600; font-size:12px; }
.bill-info .bill-meta { font-size:10px; color:var(--text-m); }
.bill-remark { font-size:11px; color:var(--pink); margin-top:2px; background:var(--bg-soft); padding:2px 6px; border-radius:4px; display:inline-block; }
.bill-amount { font-weight:800; font-size:14px; color:var(--pink); }
.bill-right { display:flex; flex-direction:column; align-items:flex-end; gap:4px; }
.bill-actions { display:flex; gap:4px; }
.bill-edit-btn, .bill-del-btn { background:none; border:none; font-size:12px; cursor:pointer; padding:2px 4px; border-radius:4px; opacity:0.6; }
.bill-edit-btn:hover, .bill-del-btn:hover { opacity:1; background:var(--bg-soft); }

.advice-card { margin-top:10px; background:linear-gradient(135deg,rgba(255,184,108,.12),rgba(255,184,108,.05)); border-radius:var(--r-sm); padding:12px; border-left:3px solid var(--warn); }
.advice-title { font-weight:700; font-size:12px; margin-bottom:4px; color:var(--warn); }
.advice-text { font-size:11px; color:var(--text-s); line-height:1.5; }

/* ===== 分类统计 ===== */
.category-stats-list { display:flex; flex-direction:column; gap:6px; }
.cs-item { display:flex; align-items:center; gap:8px; padding:8px; background:var(--bg-soft); border-radius:var(--r-sm); }
.cs-icon { font-size:18px; width:32px; text-align:center; flex-shrink:0; }
.cs-name { font-size:12px; font-weight:600; flex:1; }
.cs-amount { font-size:13px; font-weight:800; color:var(--pink); }
.cs-bar-wrap { flex:1; height:6px; background:rgba(255,107,157,0.1); border-radius:3px; overflow:hidden; }
.cs-bar { height:100%; background:linear-gradient(90deg,var(--pink),var(--pink-l)); border-radius:3px; transition:width .4s; }

/* ===== 月度预算 ===== */
.month-budget { display:flex; flex-direction:column; gap:8px; }
.mb-row { display:flex; justify-content:space-between; align-items:center; font-size:13px; }
.mb-val { font-weight:800; }

/* ===== 记账大冒险 ===== */
.adventure-card { background:linear-gradient(135deg,var(--pink-accent),var(--pink-s)); }
.adventure-status { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding:10px; background:rgba(255,255,255,0.6); border-radius:var(--r-sm); }
.adventure-status .as-icon { font-size:32px; }
.adventure-status .as-info { flex:1; }
.adventure-status .as-title { font-weight:700; font-size:13px; }
.adventure-status .as-progress { font-size:11px; color:var(--text-s); margin-top:2px; }
.adventure-story { padding:12px; background:rgba(255,255,255,0.5); border-radius:var(--r-sm); font-size:12px; line-height:1.7; color:var(--text); }

/* ===== 按钮 ===== */
.hello-btn { display:inline-flex; align-items:center; justify-content:center; gap:4px; padding:11px 16px; border:none; border-radius:var(--r-sm); cursor:pointer; font-family:inherit; font-size:13px; font-weight:600; transition:all .15s; width:100%; }
.hello-btn.primary { background:linear-gradient(135deg,var(--pink),var(--pink-l)); color:#fff; box-shadow:0 3px 10px rgba(255,107,157,0.2); }
.hello-btn.secondary { background:var(--pink-accent); color:var(--pink); border:1px solid var(--pink); }
.hello-btn.danger { background:transparent; color:var(--danger); border:1px solid var(--danger); margin-top:8px; }
.hello-btn.small { padding:7px 14px; font-size:12px; }

/* ===== 弹窗 ===== */
.modal { position:fixed; inset:0; z-index:100; display:flex; align-items:flex-end; justify-content:center; animation:fadeIn .2s; padding-bottom:var(--safe-bottom); }
.modal[hidden] { display:none; }
.modal-mask { position:absolute; inset:0; background:rgba(74,58,74,0.5); backdrop-filter:blur(3px); }
.modal-content { position:relative; width:100%; max-width:480px; max-height:85vh; background:var(--bg-card); border-radius:20px 20px 0 0; display:flex; flex-direction:column; animation:slideUp .25s; overflow:hidden; }
.modal-content.small { max-width:340px; border-radius:20px; align-self:center; margin:auto; }
@keyframes slideUp { from { transform:translateY(100%); } to { transform:translateY(0); } }
.modal-header { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--border); flex-shrink:0; }
.modal-header h3 { font-size:15px; font-weight:700; }
.close-btn { width:30px; height:30px; border:1px solid var(--border); background:var(--bg-soft); border-radius:50%; font-size:18px; cursor:pointer; color:var(--text-s); display:flex; align-items:center; justify-content:center; }
.modal-body { padding:16px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.modal-actions { display:flex; gap:8px; margin-top:14px; }
.modal-actions .hello-btn { flex:1; }

.avatar-upload-area { text-align:center; margin-bottom:12px; }
.hk-avatar-lg { width:68px; height:68px; border-radius:50%; border:3px solid var(--pink); object-fit:cover; cursor:pointer; }
.avatar-hint { font-size:11px; color:var(--text-m); margin-top:4px; cursor:pointer; }

.tag-grid { display:flex; flex-wrap:wrap; gap:5px; }
.tag-item { padding:5px 10px; border:1px solid var(--border); background:var(--bg-soft); border-radius:14px; cursor:pointer; font-size:11px; color:var(--text-s); font-family:inherit; }
.tag-item.active { background:var(--pink); border-color:var(--pink); color:#fff; font-weight:600; }

.over-eat-info { text-align:center; padding:14px; background:linear-gradient(135deg,var(--pink-accent),var(--pink-bg)); border-radius:var(--r-sm); margin-bottom:14px; }
.over-eat-info p { font-size:12px; color:var(--text-s); }
.over-eat-num { font-size:15px; font-weight:700; color:var(--pink); margin-top:4px; }
.over-eat-num strong { font-size:20px; }
.empathy-response { margin-top:14px; padding:14px; background:linear-gradient(135deg,var(--pink-accent),var(--pink-bg)); border-radius:var(--r-sm); font-size:12px; line-height:1.6; }

/* ===== Toast ===== */
.toast { position:fixed; bottom:calc(30px + var(--safe-bottom)); left:50%; transform:translateX(-50%); background:rgba(74,58,74,0.9); color:#fff; padding:8px 18px; border-radius:16px; font-size:12px; z-index:200; white-space:nowrap; animation:toastIn .25s; max-width:90%; }
.toast[hidden] { display:none; }
@keyframes toastIn { from { opacity:0; transform:translate(-50%,16px); } to { opacity:1; transform:translate(-50%,0); } }

/* ===== 响应式 ===== */
@media (max-width:380px) {
  .exercise-list,.category-grid { grid-template-columns:1fr 1fr; }
  .symptom-grid { grid-template-columns:1fr 1fr; }
  .water-tracker { grid-template-columns:repeat(4,1fr); gap:6px; }
  /* 待办添加行：窄屏下拉收窄，避免挤压输入框 */
  .todo-prio-select { padding:0 5px; font-size:11px; max-width:66px; }
  /* 小屏：经期/表单双列改为单列，避免日期选择器挤在一起 */
  .form-grid { grid-template-columns:1fr; gap:10px; }
  /* 小屏开屏鼓励语：更均匀换行，避免孤立标点 */
  .splash-content { max-width:320px; }
  .splash-quote { font-size:14px; line-height:1.75; padding:14px 18px; max-width:300px; margin-bottom:34px; }
  .splash-greeting { font-size:25px; }
}

/* ===== 管家崽崽 ===== */
.butler-intro { background:linear-gradient(135deg,var(--blue-bg),var(--pink-bg)); display:flex; align-items:center; gap:14px; }
.butler-avatar-area { flex-shrink:0; }
.butler-avatar { width:64px; height:64px; border-radius:50%; border:3px solid var(--pink-s); object-fit:cover; }
.butler-info { flex:1; }
.butler-info h3 { font-size:16px; font-weight:800; color:var(--pink); margin-bottom:4px; }
.butler-desc { font-size:11px; color:var(--text-s); line-height:1.5; }

.butler-status-row { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.butler-status-item { display:flex; flex-direction:column; align-items:center; padding:12px 8px; background:var(--bg-soft); border-radius:var(--r-sm); text-align:center; }
.bs-icon { font-size:20px; margin-bottom:4px; }
.bs-label { font-size:10px; color:var(--text-s); margin-bottom:2px; }
.bs-val { font-size:13px; font-weight:700; color:var(--pink); }

.butler-chat-card { display:flex; flex-direction:column; }
.butler-chat-card h3 { display:flex; align-items:center; gap:8px; }
.chat-head-ops { margin-left:auto; display:flex; gap:6px; flex-shrink:0; }
.chat-clear-btn { font-size:11px; color:var(--text-m); background:transparent; border:1px solid var(--border); border-radius:12px; padding:3px 10px; cursor:pointer; font-family:inherit; transition:all .15s; white-space:nowrap; }
.chat-clear-btn:hover { color:var(--pink); border-color:var(--pink); background:var(--pink-bg); }
.chat-clear-btn.danger:hover { color:var(--danger); border-color:var(--danger); background:transparent; }
.chat-select-bar { display:flex; align-items:center; gap:8px; padding:8px 10px; margin-bottom:8px; background:var(--pink-bg); border:1px dashed var(--pink-s); border-radius:var(--r-sm); }
.chat-select-bar[hidden] { display:none; }
.chat-selected-count { font-size:12px; font-weight:700; color:var(--pink); flex:1; min-width:0; }
.chat-select-bar .hello-btn { width:auto; flex-shrink:0; padding:6px 12px; font-size:12px; }
.chat-check-wrap { display:flex; align-items:center; flex-shrink:0; }
.chat-check { width:17px; height:17px; accent-color:var(--pink); cursor:pointer; }
.chat-msg.selectable .chat-bubble { margin-right:0; }
.chat-messages { height:min(60vh,520px); min-height:300px; overflow-y:auto; padding:4px 0 8px; display:flex; flex-direction:column; gap:10px; -webkit-overflow-scrolling:touch; }
.chat-messages::-webkit-scrollbar { width:3px; }
.chat-messages::-webkit-scrollbar-thumb { background:#ffe0eb; border-radius:2px; }
.chat-msg { display:flex; gap:6px; max-width:85%; animation:fadeIn .3s; }
.chat-msg.butler-msg { align-self:flex-start; }
.chat-msg.user-msg { align-self:flex-end; flex-direction:row-reverse; }
.chat-avatar { font-size:24px; flex-shrink:0; width:32px; height:32px; display:flex; align-items:center; justify-content:center; }
.chat-bubble { padding:10px 14px; border-radius:16px; font-size:13px; line-height:1.5; }
.butler-msg .chat-bubble { background:#f0f4ff; color:#3a5a8a; border-top-left-radius:4px; }
.user-msg .chat-bubble { background:linear-gradient(135deg,var(--pink),var(--pink-l)); color:#fff; border-top-right-radius:4px; }
.user-msg .chat-avatar { display:none; }

.chat-input-row { display:flex; gap:6px; margin-top:10px; align-items:flex-end; width:100%; min-width:0; }
.chat-input-row .hello-input { flex:1; min-width:0; width:100%; }
.chat-input-row textarea.hello-input { min-height:52px; max-height:130px; resize:vertical; line-height:1.5; padding:10px 12px; overflow-y:auto; white-space:pre-wrap; overflow-wrap:break-word; }
.chat-input-row .hello-btn { flex-shrink:0; width:auto; padding:0 14px; height:52px; }

.chat-quick-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
.quick-tag { padding:5px 10px; background:var(--bg-soft); border:1px solid var(--border); border-radius:14px; font-size:11px; color:var(--text-s); cursor:pointer; font-family:inherit; transition:all .15s; }
.quick-tag:active { background:var(--pink); color:#fff; border-color:var(--pink); }

.locating-status { text-align:center; padding:10px; background:var(--blue-bg); border-radius:var(--r-sm); color:var(--text-s); font-size:12px; margin-bottom:10px; }

.daily-report-area { margin-bottom:10px; }
.daily-report-area:empty::before { content:'还没有汇报记录，点击下方按钮生成~'; display:block; text-align:center; padding:14px; color:var(--text-m); font-size:12px; }
.report-card { padding:12px; background:linear-gradient(135deg,var(--pink-bg),var(--blue-bg)); border-radius:var(--r-sm); font-size:12px; line-height:1.7; color:var(--text); }
.report-card .report-title { font-weight:800; font-size:14px; margin-bottom:6px; color:#2a5a9a; }
.report-card .report-section { margin:4px 0; }
.report-card .report-section strong { color:var(--pink); }

/* 历史数据板块 */
.butler-history-card .card-hint { margin-bottom:10px; }
.report-history-head { font-size:12.5px; font-weight:700; color:var(--text); margin:14px 0 8px; padding-bottom:6px; border-bottom:1px dashed var(--border); }
.report-history-list { max-height:420px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; -webkit-overflow-scrolling:touch; }
.report-history-list::-webkit-scrollbar { width:3px; }
.report-history-list::-webkit-scrollbar-thumb { background:#ffe0eb; border-radius:2px; }
.report-item { border:1px solid var(--border); border-radius:var(--r-sm); background:var(--bg-soft); overflow:hidden; }
.report-item.is-today { border-color:var(--pink-s); background:var(--pink-bg); }
.report-item-head { display:flex; align-items:center; gap:8px; padding:9px 12px; cursor:pointer; user-select:none; font-size:12.5px; font-weight:600; color:var(--text); }
.report-item-head:hover { background:rgba(255,107,157,.06); }
.report-item-date { flex:1; min-width:0; }
.report-today-tag { font-style:normal; font-size:10px; color:var(--pink); border:1px solid var(--pink-s); border-radius:8px; padding:0 6px; margin-left:4px; }
.report-item-toggle { font-size:11px; color:var(--text-m); }
.report-item-body { padding:4px 12px 12px; font-size:12px; line-height:1.7; color:var(--text); white-space:pre-wrap; }
.report-empty { text-align:center; padding:16px; color:var(--text-m); font-size:12px; }
[data-theme="dark"] .report-item { background:rgba(255,255,255,.04); }
[data-theme="dark"] .report-item.is-today { background:rgba(255,138,179,.10); }
[data-theme="dark"] .chat-clear-btn { color:var(--text-m); }
[data-theme="dark"] .report-history-list::-webkit-scrollbar-thumb { background:#5a3a4a; }

/* 互动冒险选项 */
.adv-event-story { padding:14px; background:linear-gradient(135deg,var(--pink-accent),var(--pink-s)); border-radius:var(--r-sm); font-size:13px; line-height:1.7; color:var(--text); margin-bottom:14px; }
.adv-event-options { display:flex; flex-direction:column; gap:8px; }
.adv-option-btn { padding:14px; background:var(--bg-soft); border:2px solid var(--border); border-radius:var(--r-sm); cursor:pointer; font-family:inherit; font-size:13px; color:var(--text); text-align:left; transition:all .15s; }
.adv-option-btn:active { border-color:var(--pink); background:var(--pink-accent); }
.adv-result { padding:14px; background:linear-gradient(135deg,var(--green-bg),rgba(125,216,125,.1)); border-radius:var(--r-sm); font-size:13px; color:var(--text); margin-top:14px; }
.adv-remind { padding:10px; background:#fff3cd; border-left:3px solid #ffc107; border-radius:var(--r-sm); font-size:12px; color:#856404; margin-top:8px; font-weight:600; }
.adv-event-tag { display:inline-block; padding:4px 10px; background:var(--pink); color:#fff; border-radius:999px; font-size:11px; font-weight:700; margin-bottom:10px; }
.adv-branch-card { margin-top:12px; padding:12px; background:linear-gradient(135deg,#fff0f6,#f3e8ff); border:1px solid var(--border); border-radius:var(--r-sm); }
.adv-branch-head { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:13px; font-weight:800; color:var(--text); }
.adv-branch-date { font-size:11px; font-weight:600; color:var(--text-m); }
.adv-branch-desc { margin-top:6px; font-size:12px; color:var(--text-m); line-height:1.6; }
.adv-branch-meta { margin-top:8px; font-size:11px; color:var(--pink); font-weight:700; line-height:1.6; }

/* 导出账单 */
.export-area { padding:12px; background:var(--bg-soft); border-radius:var(--r-sm); font-size:11px; line-height:1.6; max-height:200px; overflow-y:auto; white-space:pre-wrap; word-break:break-all; }

/* 周期账单 */
.recurring-item { display:flex; align-items:center; justify-content:space-between; padding:10px; background:var(--bg-soft); border-radius:var(--r-sm); margin-bottom:6px; }
.recurring-info { flex:1; }
.recurring-name { font-size:12px; font-weight:600; }
.recurring-meta { font-size:10px; color:var(--text-m); }
.recurring-amount { font-weight:800; color:var(--pink); font-size:14px; }
.recurring-del { width:24px; height:24px; border:none; background:none; color:var(--text-m); cursor:pointer; font-size:16px; }

/* 模块3：项目版本角标 */
.setting-version { font-size:13px; color:var(--text); margin:0 0 6px; padding:9px 12px; background:rgba(255,182,193,.14); border:1px solid rgba(255,182,193,.4); border-radius:10px; font-weight:600; text-align:center; }
.setting-version-hint { font-size:11px; color:var(--text-m); margin:0 0 4px; text-align:center; line-height:1.5; }

/* 模块2b：对话模型选择 + 自定义模型标签 */
.chat-model-row { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.chat-model-label { font-size:12px; color:var(--text-m); white-space:nowrap; }
#chatModelSelect { max-width:220px; padding:6px 8px; font-size:12px; }
.model-tag { display:inline-flex; align-items:center; gap:4px; padding:6px 10px; background:var(--bg-soft); border:1px solid var(--border); border-radius:999px; font-size:12px; color:var(--text); cursor:pointer; font-family:inherit; }
.model-tag:active { border-color:var(--pink); background:var(--pink-accent); }
.notice-body { margin:8px 0 14px; text-align:left; }
.notice-line { margin:0 0 7px; font-size:13px; line-height:1.6; color:var(--text); word-break:break-word; }
.notice-line:last-child { margin-bottom:0; }
.toast { white-space:normal; text-align:center; line-height:1.5; }

/* ===== 记账升级：总资产 / 我的账户 ===== */
.card-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.card-head h3 { margin:0; }
.asset-strip { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; margin-bottom:12px; background:linear-gradient(135deg,var(--pink-bg),#fff7fa); border:1px solid rgba(255,182,193,.5); border-radius:16px; box-shadow:0 2px 10px rgba(255,107,157,.08); }
.asset-label { font-size:13px; font-weight:700; color:var(--text-s); }
.asset-val { font-size:24px; font-weight:800; color:var(--pink); letter-spacing:.5px; }
.account-add-btn { width:auto !important; }
.account-list { display:flex; flex-direction:column; gap:8px; }
.account-item { display:flex; align-items:center; gap:10px; padding:10px 12px; background:var(--bg-soft); border:1px solid var(--border); border-radius:12px; }
.account-icon { font-size:22px; width:38px; height:38px; display:flex; align-items:center; justify-content:center; background:var(--bg-card); border-radius:10px; flex-shrink:0; }
.account-info { flex:1; min-width:0; }
.account-name { font-size:13px; font-weight:600; color:var(--text); }
.account-balance { font-size:16px; font-weight:800; color:var(--text); white-space:nowrap; }
.account-balance.neg { color:var(--danger); }
.account-ops { display:flex; gap:4px; }
.account-op { width:28px; height:28px; border:1px solid var(--border); background:var(--bg-card); border-radius:50%; font-size:12px; cursor:pointer; color:var(--text-s); display:flex; align-items:center; justify-content:center; transition:all .15s; }
.account-op:active { transform:scale(.92); border-color:var(--pink); color:var(--pink); }
.account-op.del:active { border-color:var(--danger); color:var(--danger); }
.account-empty { text-align:center; padding:18px 12px; color:var(--text-m); font-size:12px; }
.expense-account-row { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.expense-account-row label { font-size:12px; font-weight:600; color:var(--text-s); white-space:nowrap; }
.expense-account-row select { flex:1; }
.acct-icon-grid { display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.acct-icon-opt { width:42px; height:42px; border:2px solid var(--border); background:var(--bg-soft); border-radius:12px; font-size:20px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all .15s; }
.acct-icon-opt.active { border-color:var(--pink); background:rgba(255,107,157,.15); transform:scale(1.06); }
[data-theme="dark"] .asset-strip { background:linear-gradient(135deg,var(--bg-soft),var(--bg-card)); border-color:rgba(255,138,179,.3); }
[data-theme="dark"] .account-item { background:var(--bg-soft); }
[data-theme="dark"] .account-icon { background:var(--bg-card); }
[data-theme="dark"] .account-op { background:var(--bg-card); }
[data-theme="dark"] .acct-icon-opt { background:var(--bg-soft); }
[data-theme="dark"] .acct-icon-opt.active { background:rgba(255,138,179,.18); }
@media (prefers-reduced-motion:reduce) { .account-op:active,.acct-icon-opt.active { transform:none; } }

/* ===== 记账优化：记一笔分组表单 / 收支切换 ===== */
.expense-type-row { display:flex; gap:8px; margin-bottom:14px; background:var(--bg-soft); border:1px solid var(--border); border-radius:var(--r-sm); padding:4px; }
.expense-type-btn { flex:1; padding:9px 0; border:none; border-radius:9px; background:transparent; color:var(--text-s); font-size:13px; font-weight:600; font-family:inherit; cursor:pointer; transition:all .18s; }
.expense-type-btn.active { background:linear-gradient(135deg,var(--pink),var(--pink-l)); color:#fff; box-shadow:0 2px 8px rgba(255,107,157,.25); }
.expense-form { display:flex; flex-direction:column; gap:14px; }
.expense-field label { display:block; font-size:11px; font-weight:600; color:var(--text-s); margin-bottom:6px; }
.expense-field .hello-input { width:100%; }
.expense-field .category-grid { margin-top:2px; }
.expense-account-row { display:flex; align-items:center; gap:8px; }
.expense-account-row select { flex:1; width:100%; }

/* 账单：收入 / 转账 / 冒险明细 */
.bill-item.income { background:rgba(125,216,125,.08); }
.bill-amount.income { color:var(--green); }
.bill-remark.adv-remark { color:var(--pink); font-size:11px; }
[data-theme="dark"] .bill-item.income { background:rgba(125,216,125,.12); }

/* 记账大冒险：资金操作 */
.adventure-fund { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:10px 0 12px; padding:10px 12px; background:rgba(255,182,193,.14); border:1px dashed var(--pink-s); border-radius:var(--r-sm); flex-wrap:wrap; }
.adventure-fund-balance { font-size:12.5px; color:var(--text); font-weight:600; }
.adventure-fund-balance strong { color:var(--pink); font-size:15px; font-variant-numeric:tabular-nums; }
.adventure-fund-ops { display:flex; gap:8px; }
.adventure-fund-ops .hello-btn { flex:1; width:100%; min-width:0; }
.adv-insufficient { padding:10px; background:rgba(255,107,157,.08); border:1px dashed var(--danger); border-radius:var(--r-sm); font-size:12px; color:var(--danger); margin-top:10px; font-weight:600; }
[data-theme="dark"] .adventure-fund { background:rgba(255,138,179,.12); }

/* ===== 认证条 + 版权声明 ===== */
#authBar { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:10px; padding:8px 14px; font-size:12px; color:var(--text-m); background:var(--bg-soft); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:60; white-space:normal; word-break:break-word; }
#authBar[hidden] { display:none; }
#authBar .hello-btn { margin:0; width:auto; padding:6px 14px; }
#authUserInfo { white-space:normal; overflow-wrap:anywhere; min-width:0; text-align:center; }
.app-footer { padding:18px 16px calc(18px + var(--safe-bottom)); text-align:center; font-size:11px; color:var(--text-s); letter-spacing:.3px; }

/* ===== 认证页（登录/注册，风格与工作台一致） ===== */
.auth-page { min-height:100vh; background:linear-gradient(180deg,var(--bg) 0%,var(--pink-bg) 100%); display:flex; align-items:center; justify-content:center; padding:24px 18px; }
.auth-card { width:100%; max-width:360px; background:var(--bg-card); border-radius:24px; padding:28px 24px; box-shadow:var(--shadow); border:1px solid var(--border); text-align:center; }
.auth-card .auth-logo { font-size:44px; margin-bottom:6px; }
.auth-card h1 { font-size:20px; font-weight:800; color:var(--pink); margin-bottom:4px; }
.auth-card .auth-sub { font-size:12px; color:var(--text-m); margin-bottom:20px; }
.auth-card .form-field { text-align:left; }
.auth-card .hello-btn { width:100%; margin-top:6px; }
.auth-card .auth-switch { margin-top:14px; font-size:12px; color:var(--text-m); }
.auth-card .auth-switch a { color:var(--pink); font-weight:600; text-decoration:none; }
.auth-card .auth-msg { margin-top:10px; font-size:12px; color:var(--pink); min-height:16px; }
.auth-card .auth-tip { margin-top:12px; font-size:11px; color:var(--text-s); line-height:1.6; }
.auth-page input.hello-input { width:100%; }

/* ===== 手机端窄列强制修复 ===== */
@media (max-width: 767px) {
  .content {
    max-width: 100% !important;
    margin: 0 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
  .main {
    max-width: 100% !important;
  }
  .panel {
    max-width: 100% !important;
  }
}

@media (min-width: 768px) and (max-width: 1023px) {
  .content {
    max-width: 100% !important;
    margin: 0 auto !important;
  }
}

@media (min-width: 1024px) {
  .content {
    max-width: 100%;
    margin: 0 auto;
  }
}

/* ===== 首页板块（新增功能） ===== */
.home-welcome { display:flex; align-items:center; gap:12px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--r); padding:16px; margin-bottom:12px; box-shadow:var(--shadow); }
.home-avatar { width:48px; height:48px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.home-greet { flex:1; min-width:0; }
.home-greet .name { font-size:17px; font-weight:800; color:var(--text); }
.home-greet .date { font-size:11px; color:var(--text-s); margin-top:2px; }

/* 统计卡片 */
.home-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-bottom:12px; }
.home-stat { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--r); padding:14px 10px; text-align:center; box-shadow:var(--shadow); }
.hs-num { font-size:24px; font-weight:800; color:var(--pink); line-height:1.2; }
.hs-label { font-size:11px; color:var(--text-s); margin-top:4px; }
.hs-sub { font-size:10px; color:var(--text-s); opacity:.6; margin-top:2px; }

/* 内容预览卡片 */
.home-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:12px; }
.home-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--r); padding:14px; box-shadow:var(--shadow); display:flex; flex-direction:column; }
.hc-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.hc-title { font-size:14px; font-weight:800; color:var(--text); }
.hc-more { font-size:11px; color:var(--pink); cursor:pointer; }
.hc-body { font-size:12px; color:var(--text-s); line-height:1.5; }

/* 快捷按钮：记待办 / 看饮食 / 记体重 / 记一笔 */
.home-quicks { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.quick-btn { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; background:var(--bg-soft); border:1px solid var(--border); border-radius:var(--r-sm); padding:14px 6px; cursor:pointer; font-family:inherit; transition:transform .15s,box-shadow .15s; }
.quick-btn:active { transform:scale(.96); }
.quick-btn .qb-icon { font-size:24px; line-height:1; }
.quick-btn span:last-child { font-size:11px; color:var(--text-s); font-weight:600; }

/* 待办截止日期输入（新增功能） */
.todo-due-input { flex:0 0 auto; height:38px; padding:0 8px; border:1px solid var(--border); border-radius:var(--r-sm); background:var(--bg-soft); color:var(--text); font-size:12px; font-family:inherit; cursor:pointer; outline:none; min-width:0; max-width:100%; -webkit-appearance:none; appearance:none; }
.todo-due-input:focus { border-color:var(--pink); }

/* 桌面端：首页网格放宽，统计/预览四列，与小屏一致对齐方式 */
@media (min-width:768px) {
  .home-stats, .home-grid { grid-template-columns:repeat(4,1fr); }
  .home-quicks { grid-template-columns:repeat(4,1fr); }
}
[data-theme="dark"] .home-welcome,
[data-theme="dark"] .home-stat,
[data-theme="dark"] .home-card { background:var(--bg-card); }
