/* ══════════════════════════════════════════════════════════════
   style.css — 暖纸视觉语言
   四张视觉稿合并：整体页 / 详情页 / 户型页 / 表单
   核心：暖纸底、宋体+楷体、标本墙、照片主角、时间重头戏。不是记账软件。
   ══════════════════════════════════════════════════════════════ */

*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
:root{
  --paper:#F7F1E7; --card:#FFFDF8; --card2:#FBF5EA;
  --ink:#3B3530; --ink2:#6B615A; --soft:#A99E92; --line:#EBE2D4;
  --clay:#B87A52; --moss:#6E8A73; --red:#C4574B;
}
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue',sans-serif;background:#e8e2d6;color:var(--ink);font-size:16px}
.book{font-family:"Songti SC","STSong","SimSun",serif}
.hand{font-family:"Kaiti SC","STKaiti","KaiTi","楷体",serif}

.app{max-width:430px;margin:0 auto;min-height:100vh;background:var(--paper);position:relative;overflow:hidden;box-shadow:0 0 30px rgba(0,0,0,.15)}
@media (min-width:600px){
  html,body{background:radial-gradient(1200px 800px at 50% -10%,#efe8da,#e2dac9 60%,#d8cfbb)}
  body{display:flex;align-items:center;justify-content:center;padding:24px 0}
  .app{width:440px;max-width:440px;height:calc(100vh - 48px);min-height:0;max-height:940px;border-radius:32px;box-shadow:0 20px 60px rgba(60,50,35,.22),0 4px 14px rgba(0,0,0,.1)}
  .view{border-radius:32px}
}
/* ══ 桌面端：整体一个统一宽画幅，切换视图框子不跳（流程顺滑）══
   原则：框统一 → 清单标本墙多列铺开；起居画布铺大；详情/表单内容在同一框里居中到舒适宽度。 */
@media (min-width:1000px){
  body{padding:32px 0}
  .app{width:min(1040px,96vw);max-width:1040px;height:calc(100vh - 64px);max-height:1000px;border-radius:28px}
  .view{border-radius:28px}
  /* 顶栏留白更从容 */
  .head{padding:26px 40px 6px}
  /* 清单：标本墙自动多列，填满宽框 */
  .wall{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;padding:16px 40px 52px}
  .cell{min-height:130px}
  .hero{padding-top:34px}
  .count-row{margin:22px 40px 0}
  .cats{padding:22px 40px 4px}
  .sec-label{padding-left:40px;padding-right:40px}
  .lens-banner{margin-left:40px;margin-right:40px}
  /* 起居：左画布铺大 + 右信息栏；点房间右栏出物品，画布不被推走 */
  .intro{padding-top:26px}
  .home-stage{display:flex;gap:24px;align-items:flex-start;padding:0 40px}
  .home-canvas{flex:1 1 auto;min-width:0}
  .home-rail{width:320px;flex:0 0 320px;position:sticky;top:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:8px 6px 14px;box-shadow:0 3px 14px rgba(80,60,35,.05);min-height:200px}
  .plan{margin:6px 0 0;max-width:none}
  .decor-palette{margin:12px 0 0}
  .home-rail .sec-label{padding:12px 12px 4px}
  .home-rail .wall{padding:6px 10px 8px;gap:12px;grid-template-columns:repeat(2,1fr)}
  .home-rail .cell{min-height:96px}
  .rail-hint{display:block;padding:40px 18px}
  /* 详情/表单：读与写的内容居中到一页书的宽度，框仍统一 → 不割裂 */
  .d-hero{border-radius:0}
  .d-stage{max-width:640px;margin:0 auto}
  .section{max-width:720px;margin-left:auto;margin-right:auto}
  .btn-save,.btn-delete{max-width:720px;margin-left:auto;margin-right:auto}
  .empty-card{max-width:520px;margin-left:auto;margin-right:auto}
}
.view{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column}
.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
.scroll::-webkit-scrollbar{display:none}

/* ── 顶部：清单/户型 切换（无粗重导航条）── */
.head{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 4px;flex-shrink:0}
.head-title{font-size:15px;letter-spacing:4px;color:var(--soft)}
.toggle{display:inline-flex;background:#EDE4D3;border-radius:20px;padding:3px}
.toggle span{padding:5px 14px;border-radius:16px;font-size:13px;color:var(--ink2);cursor:pointer;user-select:none}
.toggle span.on{background:var(--card);color:var(--moss);box-shadow:0 1px 4px rgba(0,0,0,.08);font-weight:600}

/* ══ 整体页 ══ */
.hero{padding:22px 26px 6px;text-align:center}
.hero-num{font-size:78px;font-weight:300;color:var(--ink);line-height:.95;letter-spacing:1px}
.hero-num small{font-size:22px;color:var(--ink2);margin-left:6px;letter-spacing:0}
.hero-cap{font-size:15px;color:var(--ink2);margin-top:12px;letter-spacing:1px}
.hero-sum{margin-top:18px;font-size:15px;color:var(--ink2);letter-spacing:1px;line-height:1.6}
.hero-sum b{color:var(--clay);font-weight:600;font-size:21px}
.hero-hint{font-size:11px;color:var(--soft);opacity:.7;margin-top:12px;letter-spacing:1px}

.count-row{display:flex;margin:20px 24px 0;background:var(--card);border-radius:16px;padding:16px 0;box-shadow:0 3px 14px rgba(80,60,35,.06)}
.count-cell{flex:1;text-align:center;position:relative;cursor:pointer}
.count-cell+.count-cell::before{content:'';position:absolute;left:0;top:6px;bottom:6px;width:1px;background:var(--line)}
.count-n{font-size:24px;font-weight:600;color:var(--ink)}
.count-n.moss{color:var(--moss)} .count-n.clay{color:var(--clay)} .count-n.soft{color:var(--soft)}
.count-l{font-size:12px;color:var(--soft);margin-top:4px;letter-spacing:1px}

.cats{display:flex;gap:8px;padding:20px 24px 4px;overflow-x:auto}
.cats::-webkit-scrollbar{display:none}
.cat{flex-shrink:0;font-size:13px;padding:7px 15px;border-radius:18px;background:var(--card);border:1px solid var(--line);color:var(--ink2);white-space:nowrap;cursor:pointer;user-select:none}
.cat.on{background:var(--moss);border-color:var(--moss);color:#fff}
.cat.lens{color:var(--clay);border-color:#E7D3C2}
.cat.lens.on{background:var(--clay);border-color:var(--clay);color:#fff}

.sec-label{padding:20px 26px 2px;font-size:12px;letter-spacing:3px;color:var(--soft)}

/* 曾拥有 banner */
.lens-banner{margin:14px 22px 0;background:linear-gradient(135deg,#FBF3E9,#F6E9DA);border:1px solid #EAD9C5;border-radius:14px;padding:15px 17px}
.lens-title{font-size:14px;font-weight:700;color:var(--clay);margin-bottom:6px}
.lens-sub{font-size:13px;color:#8A7863;line-height:1.75}

/* ── 标本墙 ── */
.wall{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:12px 20px 40px}
.cell{background:var(--tint,#EDE4D3);border-radius:16px;min-height:110px;padding:14px 8px 12px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  box-shadow:0 2px 8px rgba(80,60,35,.06);cursor:pointer;transition:transform .12s}
.cell:active{transform:scale(.96)}
.cell-cat{font-size:10px;letter-spacing:2px;color:var(--soft);margin-bottom:8px}
.cell-word{color:var(--ink);line-height:1.25;font-weight:500;padding:0 2px}
.cell-word.s{font-size:20px} .cell-word.m{font-size:16px} .cell-word.l{font-size:13px}
.cell-sub{font-size:10.5px;color:var(--ink2);opacity:.7;margin-top:9px;letter-spacing:.3px}
.cell-sub.done{color:var(--clay);opacity:1}
/* 有照片：照片铺满，名字压在底部渐变上 */
.cell.photo{padding:0;overflow:hidden;position:relative}
.cell.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cell.photo .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.5));color:#fff;font-size:12px;padding:16px 6px 8px;z-index:1}
.cell.done .cell-word{opacity:.85}
/* 整理模式：格子右上角一个删除标，点格子即删 */
.cell.tidy{position:relative}
.cell.tidy::after{content:"";position:absolute;inset:0;border-radius:16px;box-shadow:inset 0 0 0 1.5px var(--clay);opacity:.5;pointer-events:none}
.tidy-x{position:absolute;top:6px;right:7px;width:22px;height:22px;line-height:21px;text-align:center;
  border-radius:50%;background:var(--clay);color:#fff;font-size:15px;z-index:2;box-shadow:0 1px 4px rgba(0,0,0,.18)}

.wall-empty{text-align:center;color:var(--soft);font-size:14px;padding:50px 30px;line-height:1.8}

/* 数据：从记账导入 / 导出备份 / 导入备份 —— 并排，同一处 */
.data-row{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin:28px 24px 0}
.data-act{font-size:13px;color:var(--ink2);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:7px 15px;cursor:pointer;user-select:none;letter-spacing:.5px}
.data-act:active{transform:scale(.96)}
.data-tip{text-align:center;font-size:11.5px;color:var(--soft);line-height:1.7;margin:10px 34px 4px}

/* ══ 详情页 ══ */
.mini-nav{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;padding:14px 16px}
.mini-back{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.72);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.1);cursor:pointer}
.d-hero{width:100%;height:290px;position:relative;background:linear-gradient(150deg,#E9DCC6,#D9C3A4 70%,#CBB48F);display:flex;align-items:center;justify-content:center}
.d-hero img{width:100%;height:100%;object-fit:cover}
.d-hero .big-emoji{font-size:92px;filter:drop-shadow(0 8px 20px rgba(0,0,0,.18))}
.d-hero.emoji::after{content:'';position:absolute;left:0;right:0;bottom:0;height:110px;background:linear-gradient(transparent,var(--paper))}
.d-stage{padding:6px 26px 44px}
.d-from{text-align:center;font-size:13px;letter-spacing:3px;color:var(--clay);margin-top:2px;min-height:18px}
.d-name{text-align:center;font-size:26px;font-weight:600;color:var(--ink);margin-top:8px;line-height:1.35}
.d-tags{display:flex;justify-content:center;gap:10px;margin-top:13px}
.d-tag{font-size:12px;color:var(--ink2);background:var(--card2);border:1px solid var(--line);padding:4px 13px;border-radius:20px;letter-spacing:.5px}
.d-tag.done{color:var(--clay);border-color:#E7D3C2;background:#FBF3E9}

/* 时间重头戏 */
.d-time{margin-top:30px;text-align:center}
.d-time-big{font-size:58px;font-weight:300;color:var(--moss);line-height:1;letter-spacing:1px}
.d-time-big small{font-size:19px;font-weight:400;color:var(--ink2);margin-left:4px;letter-spacing:0}
.d-time-cap{font-size:14px;color:var(--ink2);margin-top:13px;letter-spacing:1px}
.d-timeline{display:flex;align-items:center;gap:10px;margin:20px 12px 0}
.tl-dot{width:9px;height:9px;border-radius:50%;background:var(--moss);flex-shrink:0}
.tl-dot.now{background:var(--clay)}
.tl-bar{flex:1;height:2px;background:linear-gradient(90deg,var(--moss),var(--clay))}
.tl-row{display:flex;justify-content:space-between;margin:8px 2px 0;font-size:12px;color:var(--soft);letter-spacing:1px}

/* 你写下的字：短=题词，长=便签 */
.d-note{margin-top:34px;background:var(--card);border-top:3px solid var(--clay);border-radius:4px 4px 16px 16px;padding:22px 22px 24px;box-shadow:0 5px 18px rgba(80,60,35,.07);text-align:center}
.d-note-eyebrow{font-size:11px;letter-spacing:4px;color:var(--soft);margin-bottom:14px}
.d-note-body{color:#4A423B}
.d-note.one .d-note-body{font-size:22px;line-height:1.7}
.d-note.one .d-note-body::before{content:'「';color:var(--clay);opacity:.55}
.d-note.one .d-note-body::after{content:'」';color:var(--clay);opacity:.55}
.d-note.few .d-note-body{font-size:18px;line-height:2.05;white-space:pre-wrap}

/* 每次成本等次要记录：小灰字一行 */
.d-extra{margin-top:26px;text-align:center;font-size:12.5px;color:var(--soft);letter-spacing:.5px;line-height:1.9}
.d-tags-row{margin-top:24px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.d-tags-row .chip-tag{font-size:12px;color:var(--ink2);background:var(--card2);border:1px solid var(--line);padding:4px 12px;border-radius:14px}

.d-edit{margin:38px 4px 0;text-align:center;font-size:15px;color:var(--moss);letter-spacing:2px;cursor:pointer}
.d-edit span{border-bottom:1px solid var(--line);padding-bottom:3px}

/* ══ 户型页 ══ */
.intro{padding:18px 26px 4px;text-align:center}
.intro-cap{font-size:14px;color:var(--ink2);letter-spacing:1px;line-height:1.7}
.intro-cap b{color:var(--clay)}
.edit-plan{display:inline-block;margin-top:12px;font-size:12px;color:var(--moss);border:1px solid var(--line);background:var(--card);padding:6px 15px;border-radius:16px;letter-spacing:1px;cursor:pointer;user-select:none}
.edit-plan.on{background:var(--moss);color:#fff;border-color:var(--moss)}

.plan{position:relative;margin:16px 18px 0;min-height:400px;height:400px;border-radius:14px;touch-action:none;
  background:linear-gradient(rgba(140,120,90,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(140,120,90,.06) 1px,transparent 1px);
  background-size:20px 20px}
.room{position:absolute;border-radius:12px;border:2px solid rgba(110,138,115,.35);background:var(--rc,#EDE4D3);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.4),0 3px 10px rgba(80,60,35,.08);padding:10px;cursor:pointer;overflow:hidden}
.room.sel{border-color:var(--moss);box-shadow:0 5px 16px rgba(110,138,115,.3)}
.room.editing{cursor:grab;border-style:dashed}
.room.dragging{cursor:grabbing;z-index:20;opacity:.92}
.r-name{position:relative;z-index:2;font-size:14px;font-weight:600;color:var(--ink);letter-spacing:1px}
.r-count{position:relative;z-index:2;font-size:11px;color:var(--ink2);opacity:.7;margin-top:2px}
.r-count.empty{opacity:.45}
.dots{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;align-content:flex-start}

/* 房间里的物品：名字小卡（封顶 +N）；整理模式下可拖动换房 */
.r-items{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:4px;margin-top:7px;align-content:flex-start;pointer-events:none}
.r-item{font-size:11px;color:var(--ink2);background:rgba(255,255,255,.7);border:1px solid rgba(140,120,90,.14);border-radius:9px;padding:2px 7px;line-height:1.35;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.r-item.more{color:var(--soft);background:transparent;border:none}
.r-item.drag{pointer-events:auto;cursor:grab;touch-action:none;background:var(--card);box-shadow:0 1px 4px rgba(80,60,35,.14)}
.r-items:has(.drag){pointer-events:auto}

/* 整理归位：底部托盘 */
.assign-tray{margin:12px 18px 0;background:var(--card);border:1px dashed #D8CDBB;border-radius:14px;padding:12px 14px;box-shadow:0 3px 14px rgba(80,60,35,.05)}
.assign-tray-tip{font-size:12px;color:var(--soft);letter-spacing:1px;margin-bottom:10px;text-align:center}
.assign-tray-row{display:flex;flex-wrap:wrap;gap:8px}
.assign-chip{font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:6px 13px;letter-spacing:.5px}
.assign-chip.drag{cursor:grab;touch-action:none;box-shadow:0 1px 4px rgba(80,60,35,.12)}
.assign-chip.drag:active{cursor:grabbing}
.assign-empty{font-size:12.5px;color:var(--soft)}
/* 拖动时跟手的浮标 */
.assign-ghost{position:fixed;z-index:9999;transform:translate(-50%,-140%);pointer-events:none;
  font-size:13px;color:var(--ink);background:var(--card);border:1px solid var(--moss);border-radius:14px;padding:6px 13px;
  box-shadow:0 6px 20px rgba(60,50,35,.28);white-space:nowrap}

/* 起居：画布 + 右侧信息栏（桌面）/ 上下堆叠（手机）*/
.home-stage{display:block}
.home-rail{display:block}
.rail-hint{display:none;text-align:center;font-size:12px;color:var(--soft);letter-spacing:1px;padding:18px 20px;line-height:1.7}

/* ── 家具（摆设）：暖块+宋体名字，垫在房间最底层，占地=生活痕迹 ── */
.decor{position:absolute;z-index:0;border-radius:8px;background:var(--dc,#EDE4D3);
  border:1px solid rgba(110,138,115,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45);
  display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:default}
.decor-name{font-size:12px;color:var(--ink2);letter-spacing:1px;line-height:1.1;text-align:center;padding:0 2px;opacity:.82;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
/* 细高家具：名字竖排（贴合它在现实里"窄而高"的样子）*/
.decor.tall .decor-name{writing-mode:vertical-rl;text-orientation:upright;white-space:nowrap;letter-spacing:2px;max-width:none;max-height:100%}
.decor.editing{cursor:grab;border-style:dashed;border-color:rgba(184,122,82,.5);z-index:6}
.decor.dragging{cursor:grabbing;z-index:21;opacity:.92}
.decor-handle{position:absolute;right:1px;bottom:1px;width:14px;height:14px;cursor:nwse-resize;
  border-right:3px solid rgba(184,122,82,.6);border-bottom:3px solid rgba(184,122,82,.6);border-radius:0 0 7px 0}
.decor-x{position:absolute;top:-1px;right:-1px;width:18px;height:18px;line-height:17px;text-align:center;
  border-radius:50%;background:var(--clay);color:#fff;font-size:13px;z-index:22;box-shadow:0 1px 4px rgba(0,0,0,.18);cursor:pointer}
.dot{width:16px;height:16px;border-radius:50%;background:rgba(255,255,255,.72);display:flex;align-items:center;justify-content:center;font-size:10px;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.r-handle{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;
  border-right:3px solid rgba(110,138,115,.6);border-bottom:3px solid rgba(110,138,115,.6);border-radius:0 0 8px 0}
.room.unassigned{border-style:dashed;border-color:rgba(184,122,82,.5);background:#F3ECDD}
.room.unassigned .r-name{color:var(--clay);font-size:12px}
.room.add-room{border-style:dashed;border-color:#D8CDBB;background:#F4EFE4;display:flex;align-items:center;justify-content:center}
.room.add-room .r-name{color:var(--soft)}
.plan-hint{text-align:center;font-size:11px;color:var(--soft);margin-top:10px;letter-spacing:1px}

/* 布局模式：房间改名/换色/删除工具条 */
.plan-edit-bar{margin:12px 18px 0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:0 3px 14px rgba(80,60,35,.06)}
.peb-name{font-size:14px;color:var(--ink);margin-bottom:12px;letter-spacing:.5px}
.peb-acts{display:flex;gap:10px;margin-bottom:14px}
.peb-btn{font-size:13px;color:var(--ink2);background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:6px 14px;cursor:pointer;user-select:none;letter-spacing:.5px}
.peb-btn:active{transform:scale(.96)}
.peb-btn.del{color:var(--red);border-color:#E7CFC9}
.peb-colors-l{font-size:12px;color:var(--soft);margin-bottom:8px;letter-spacing:1px}
.peb-colors{display:flex;gap:10px;flex-wrap:wrap}
.rc-sw{width:30px;height:30px;border-radius:50%;cursor:pointer;border:1.5px solid rgba(90,70,50,.3);box-shadow:0 1px 3px rgba(80,60,35,.12)}
.rc-sw.on{border-color:var(--moss);box-shadow:0 0 0 2px var(--moss)}

/* 户型页两个开关并排（调整户型 / 摆家具） */
.plan-tools{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.plan-tools .edit-plan{margin-top:0}

/* 家具盘：摆家具模式下从底部弹出 */
.decor-palette{margin:12px 18px 0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:0 3px 14px rgba(80,60,35,.06)}
.decor-pal-tip{font-size:12px;color:var(--soft);letter-spacing:1px;margin-bottom:10px;text-align:center}
.decor-pal-row{display:flex;flex-wrap:wrap;gap:8px}
.decor-chip{font-size:13px;color:var(--ink2);background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:6px 14px;cursor:pointer;user-select:none;letter-spacing:1px}
.decor-chip:active{transform:scale(.95)}
.decor-chip.custom{color:var(--clay);border-style:dashed;border-color:#E7D3C2}

/* ══ 表单（reskin，结构沿用原件）══ */
.nav-bar{background:var(--card);padding:14px 16px 12px;display:flex;align-items:center;border-bottom:1px solid var(--line);flex-shrink:0;min-height:52px}
.nav-title{font-size:17px;font-weight:700;color:var(--ink);flex:1;text-align:center}
.nav-back{font-size:28px;color:var(--ink2);cursor:pointer;padding-right:8px;line-height:1;margin-top:-3px}
.section{background:var(--card);margin:12px 14px 0;border-radius:14px;padding:16px}
.group-head{font-size:15px;font-weight:800;color:var(--ink);margin:-2px 0 16px;display:flex;align-items:center;gap:7px}
.optional{font-weight:400;color:var(--soft);font-size:12px;margin-left:4px}
.field{margin-bottom:18px}
.field:last-child{margin-bottom:2px}
.field-label{font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:9px}
.field-hint{font-size:12px;color:var(--soft);margin:-4px 0 9px;line-height:1.5}
.required{color:var(--clay)}
.text-input,.textarea,.select-input{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;background:var(--paper);color:var(--ink);outline:none;font-family:inherit}
.text-input:focus,.textarea:focus,.select-input:focus{border-color:var(--moss)}
.textarea{min-height:72px;resize:none;font-size:14px}
.feel-input{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;min-height:64px;background:var(--paper);color:var(--ink);resize:none;outline:none;line-height:1.7}
.feel-input:focus{border-color:var(--clay)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:7px 14px;border:1.5px solid var(--line);border-radius:20px;font-size:13px;color:var(--ink2);background:var(--paper);cursor:pointer;user-select:none}
.chip.active{background:var(--moss);color:#fff;border-color:var(--moss)}
.price-mode-row{display:flex;gap:8px;margin-bottom:12px}
.price-mode-btn{flex:1;text-align:center;padding:8px 0;border:1.5px solid var(--line);border-radius:8px;font-size:13px;color:var(--ink2);background:var(--paper);cursor:pointer;user-select:none}
.price-mode-btn.active{border-color:var(--moss);color:var(--moss);background:#EBF1EC;font-weight:600}
.price-input-row{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--paper)}
.price-symbol{font-size:16px;color:var(--clay);font-weight:700;margin-right:6px}
.price-input{flex:1;font-size:20px;font-weight:700;color:var(--clay);border:none;background:transparent;outline:none;width:100%;font-family:inherit}
.ym-row{display:flex;align-items:center;gap:8px}
.ym-year{width:90px;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;background:var(--paper);flex-shrink:0;outline:none;color:var(--ink);font-family:inherit}
.ym-month{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px;color:var(--ink);background:var(--paper);outline:none;font-family:inherit}
.ym-sep{font-size:14px;color:var(--soft)}
.usage-input-row{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:8px;padding:10px 14px;background:var(--paper)}
.usage-input{flex:1;font-size:22px;font-weight:700;color:var(--moss);border:none;background:transparent;outline:none;width:100%;font-family:inherit}
.usage-unit{font-size:14px;color:var(--soft)}
.usage-preview{margin-top:8px;font-size:13px;color:var(--clay);font-weight:600}
.status-hint{font-size:12px;color:var(--soft);margin-top:10px;line-height:1.5}
.tag-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.custom-tag{background:#EBF1EC;color:var(--moss);padding:5px 10px;border-radius:14px;font-size:13px;display:flex;align-items:center}
.tag-remove{color:var(--moss);margin-left:2px;font-size:14px;cursor:pointer;padding:0 2px}
.tag-input-row{display:flex;gap:8px;margin-bottom:10px}
.tag-input{flex:1;border:1.5px solid var(--line);border-radius:8px;padding:8px 12px;font-size:14px;background:var(--paper);outline:none;color:var(--ink);font-family:inherit}
.tag-add-btn{padding:8px 16px;background:var(--moss);color:#fff;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.sug-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.sug-label{font-size:12px;color:var(--soft)}
.sug-tag{font-size:12px;color:var(--ink2);border:1px solid var(--line);border-radius:12px;padding:3px 10px;background:var(--paper);cursor:pointer;user-select:none}
/* 照片选择 */
.photo-pick{display:flex;gap:12px;align-items:center}
.photo-box{width:80px;height:80px;border-radius:12px;border:1.5px dashed #C9BBA6;background:var(--card2);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;cursor:pointer;position:relative}
.photo-box img{width:100%;height:100%;object-fit:cover}
.photo-box .cam-icon{font-size:26px;color:var(--clay)}
.photo-side{flex:1;font-size:12px;color:var(--soft);line-height:1.6}
.photo-remove{display:inline-block;margin-top:6px;color:var(--red);font-size:12px;cursor:pointer}
.who-field{margin-top:14px}
.btn-save{margin:20px 14px 0;background:var(--moss);color:#fff;border-radius:14px;padding:16px;text-align:center;font-size:17px;font-weight:700;box-shadow:0 4px 16px rgba(110,138,115,.3);cursor:pointer;user-select:none}
.btn-save.dim{opacity:.4;pointer-events:none}
.btn-delete{margin:14px 14px 0;border:1.5px solid var(--red);color:var(--red);border-radius:14px;padding:14px;text-align:center;font-size:15px;cursor:pointer}

/* FAB / Toast */
.fab{position:absolute;right:24px;bottom:28px;width:54px;height:54px;background:var(--clay);color:#fff;border-radius:50%;font-size:30px;line-height:54px;text-align:center;box-shadow:0 4px 18px rgba(184,122,82,.45);cursor:pointer;z-index:100;user-select:none}
.toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:rgba(59,53,48,.9);color:#fff;padding:10px 20px;border-radius:20px;font-size:14px;z-index:999;white-space:nowrap;pointer-events:none;display:none}
.toast-undo{pointer-events:auto;text-decoration:underline;cursor:pointer;margin-left:10px;color:#fff}

.empty-card{margin:40px 22px;background:var(--card);border-radius:16px;padding:44px 24px;text-align:center;box-shadow:0 2px 10px rgba(80,60,35,.06)}
.empty-icon{font-size:46px;margin-bottom:14px}
.empty-title{font-size:17px;font-weight:700;color:var(--ink);margin-bottom:6px}
.empty-sub{font-size:13px;color:var(--soft);margin-bottom:22px;line-height:1.6}
.btn-import{display:inline-block;background:var(--moss);color:#fff;padding:12px 28px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer}
