/* ============================================================================
   称一称 · 样式
   ----------------------------------------------------------------------------
   尺度是这一款自己定的，全应用只用这一套：
     字号 12 / 14 / 17 / 23 / 31   间距 3 / 8 / 13 / 21
     圆角只有两处：底部抽屉上沿 16px、品类色带 2px —— 其余一律直角
     分隔一律 1px 虚线；克重读数用衬线（秤的账本感），数字 tabular-nums
   八个颜色角色：canvas 底 / harbor 主 / tag 超重警示 / moss 达成 / brass 读数
                 dusk 电子色带 / stamp fail-loud 红 / hairline 灰虚
   零外部图片、零外部字体（图标是内联 SVG，符号用字符）。
   ========================================================================== */
:root{
  --canvas:#eef1f1; --ink:#1d2a33; --harbor:#0f6d78; --tag:#c96a1e;
  --moss:#3f6d33; --brass:#8b6f33; --dusk:#6a5f82; --stamp:#a8302a;
  --hairline:#c8d0d0; --steel:#5f7078;
  --f1:12px; --f2:14px; --f3:17px; --f4:23px; --f5:31px;
  --s1:3px; --s2:8px; --s3:13px; --s4:21px;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --serif:Georgia,"Times New Roman","Songti SC",serif;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{height:100%;margin:0}
body{
  background:var(--canvas); color:var(--ink); font:var(--f2)/1.55 var(--sans);
  -webkit-text-size-adjust:100%; -webkit-tap-highlight-color:transparent; overflow:hidden;
}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation}
button:active{filter:brightness(.93)}
input{font:inherit}

/* ---------- 启动过程 ---------- */
.boot{
  position:fixed;inset:0;z-index:50;background:var(--canvas);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);
  transition:opacity .3s ease;
}
.boot.off{opacity:0;pointer-events:none}
.bootIcon{width:44px;height:44px;color:var(--harbor)}
.bootName{font-size:var(--f4);letter-spacing:.1em}
.bootBar{width:150px;height:3px;background:var(--hairline)}
.bootBar i{display:block;height:100%;width:0;background:var(--harbor);transition:width .12s linear}
.bootSay{font-size:var(--f1);color:var(--steel)}

/* ---------- 骨架 ---------- */
.app{display:flex;flex-direction:column;height:100vh;max-width:620px;margin:0 auto}
.top{
  display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);
  border-bottom:1px solid var(--hairline);flex:0 0 auto;
}
.mark{width:21px;height:21px;color:var(--harbor);flex:0 0 auto}
.appName{font-size:var(--f3);letter-spacing:.05em}
.top .lnk{margin-left:auto}
.lnk{
  color:var(--harbor);text-decoration:underline;text-underline-offset:3px;
  font-size:var(--f1);padding:2px 0;
}
.scroll{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.bottom{
  display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);
  border-top:1px solid var(--hairline);flex:0 0 auto;
}
.bump{flex:1 1 auto;font-size:var(--f1);color:var(--steel);font-family:var(--serif);font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.foot{flex:0 0 auto;text-align:center;font-size:var(--f1);color:var(--steel);padding-bottom:calc(var(--s2) + env(safe-area-inset-bottom))}
.foot.bad{color:var(--stamp);text-decoration:underline}
.primary{
  background:var(--harbor);color:#fff;border-radius:999px;padding:10px 18px;
  font-size:var(--f2);font-weight:600;flex:0 0 auto;
}
.primary.sm{padding:6px 13px;font-size:var(--f1)}
.ghost{
  display:block;width:100%;text-align:center;color:var(--harbor);
  text-decoration:underline;text-underline-offset:3px;font-size:var(--f2);padding:9px 0;
}
.ghost.sm{display:inline-block;width:auto;font-size:var(--f1);padding:2px 0;flex:0 0 auto}
.ghost.wide{margin-top:var(--s1)}
.tiny{font-size:var(--f1);color:var(--steel);margin:var(--s1) 0 0;line-height:1.6}
.say.p{font-size:var(--f2);margin:0 0 var(--s2)}

/* ---------- 首启设置条（做紧凑：让首屏的广告位落在不用滚就能看见的位置） ---------- */
.strip{padding:var(--s2) var(--s3) var(--s3);background:#e6ecec;border-bottom:1px solid var(--hairline);flex:0 0 auto}
.stripTop{display:flex;align-items:center;gap:var(--s2);margin-bottom:var(--s1)}
.stripHead{font-size:var(--f2);flex:1 1 auto;white-space:nowrap}
.stripTop .primary{flex:0 0 auto}
.ck{display:flex;gap:var(--s2);align-items:flex-start;padding:2px 0;font-size:var(--f1);line-height:1.5;color:var(--steel)}
.ck input{width:18px;height:18px;flex:0 0 auto;margin:1px 0 0;accent-color:var(--harbor)}
.ck b{font-weight:600;color:var(--ink)}
.ck .lnk{font-size:var(--f1)}
.strip .primary{display:block;width:100%;margin-top:var(--s2)}

/* ---------- 「广告位」页（规则 8 / 10 的确认区） ---------- */
.adsLink{font-size:var(--f1);text-decoration:underline}
.rvHead .adsLink{margin-left:auto;letter-spacing:0}
.adCard{border:1px solid var(--hairline);border-left:3px solid var(--tag);padding:var(--s2) var(--s3);margin-bottom:var(--s3)}
.adWhere{font-size:var(--f1);color:var(--steel)}
.adLabel{font-size:var(--f3);font-weight:600;color:var(--tag);margin:var(--s1) 0 var(--s2);overflow-wrap:anywhere}

/* ---------- 出行摘要 ---------- */
.tripRow{display:flex;align-items:flex-start;gap:var(--s2);padding:var(--s3);border-bottom:1px dashed var(--hairline)}
.tw{flex:1 1 auto;min-width:0}
.tName{font-size:var(--f3);font-weight:600;overflow-wrap:anywhere}
.tMeta{font-size:var(--f1);color:var(--steel);margin-top:2px}
.tActs{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto}
.empty{padding:var(--s4) var(--s3)}
.eSay{font-size:var(--f3);line-height:1.5}
.eSub{font-size:var(--f2);color:var(--steel);margin-top:var(--s2)}
.empty.sm{padding:var(--s3)}

/* ---------- 两条克重预算 ---------- */
.budget{padding:var(--s3)}
.bar{margin-bottom:var(--s2)}
.bTop{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2)}
.bName{font-size:var(--f1);color:var(--steel);letter-spacing:.2em}
.bVal{font-family:var(--serif);font-size:var(--f3);font-variant-numeric:tabular-nums}
.bVal i{font-style:normal;font-size:var(--f1);color:var(--steel)}
.bTrack{height:3px;background:var(--hairline);margin-top:var(--s1)}
.bTrack i{display:block;height:100%;background:var(--harbor)}
.bar.checked .bTrack i{background:var(--dusk)}
.bar.exceed .bTrack i{background:var(--tag)}
.bar.exceed .bVal{color:var(--tag)}
/* 空的区块不留影：空的时候既不要留白，也不要那条分隔线 */
.budget:empty,.review:empty,.trip:empty,.list:empty{padding:0;margin:0;border:0}
.over{
  margin-top:var(--s2);padding:var(--s2) var(--s3);font-size:var(--f2);
  background:#f7ece1;border-left:3px solid var(--tag);
}
.over.bad{border-left-color:var(--stamp);background:#f7e8e6}
.steps{margin:var(--s1) 0 var(--s1) 0;padding-left:var(--s3)}
.steps li{font-size:var(--f1);line-height:1.75}

/* ---------- 清单 ---------- */
.grp{margin-bottom:var(--s1)}
.grpHead{
  display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3) var(--s1);
  font-size:var(--f1);color:var(--steel);letter-spacing:.16em;border-bottom:1px dashed var(--hairline);
}
.grpN{margin-left:auto;letter-spacing:0;font-family:var(--serif);font-variant-numeric:tabular-nums}
.band{width:3px;height:12px;border-radius:2px;flex:0 0 auto}
.b-tag{background:var(--tag)} .b-harbor{background:var(--harbor)} .b-dusk{background:var(--dusk)}
.b-brass{background:var(--brass)} .b-moss{background:var(--moss)} .b-stamp{background:var(--stamp)}
.b-hairline{background:var(--hairline)}
.row{
  display:flex;align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);
  border-bottom:1px dashed var(--hairline);transition:transform .16s ease;
}
.row:active{background:#e7ecec}
.row.packed{transform:translateX(8px)}
.row.packed .nm{text-decoration:line-through;color:var(--steel)}
.row.hid{opacity:.5}
.tick{
  width:22px;height:22px;flex:0 0 22px;border:1px solid var(--steel);color:var(--harbor);
  font-size:var(--f1);line-height:1;display:flex;align-items:center;justify-content:center;
}
.row.packed .tick{background:var(--moss);border-color:var(--moss);color:#fff}
.mid{flex:1 1 auto;min-width:0}
.nm{font-size:var(--f2);overflow-wrap:anywhere}
.bdg{display:flex;flex-wrap:wrap;gap:var(--s1);margin-top:2px}
.bdg i{font-style:normal;font-size:var(--f1);color:var(--steel);border:1px solid var(--hairline);padding:0 4px;line-height:1.5}
.qty{display:flex;align-items:center;gap:var(--s1);flex:0 0 auto}
.qty button{width:22px;height:22px;border:1px solid var(--hairline);line-height:1}
.qty span{min-width:15px;text-align:center;font-family:var(--serif);font-variant-numeric:tabular-nums}
.gw{font-family:var(--serif);font-size:var(--f1);color:var(--steel);font-variant-numeric:tabular-nums;min-width:46px;text-align:right;flex:0 0 auto}
.more{width:20px;height:22px;color:var(--steel);font-size:var(--f3);line-height:1;flex:0 0 auto}
.row.ro{padding-left:var(--s3)}
.sk{border-bottom-color:transparent}
.skl{display:block;height:12px;background:#e2e8e8;margin:6px 0;width:70%}
.skl.sm{width:46px;margin-left:auto}
.skb{display:block;width:3px;height:12px;background:var(--hairline)}

/* ---------- 复核行：两个广告位都在这一块里（首屏可见，规则 10） ---------- */
.review{padding:var(--s2) var(--s3) var(--s3);border-bottom:1px dashed var(--hairline)}
.rvHead{
  display:flex;align-items:center;gap:var(--s2);font-size:var(--f1);color:var(--steel);
  letter-spacing:.18em;margin:0 0 var(--s2);
}
.rvHead .lnk{margin-left:auto}
.rvSay{font-size:var(--f2);margin:0 0 var(--s1)}
.adRow{
  display:block;width:100%;text-align:center;background:var(--tag);color:#fff;
  padding:11px;font-size:var(--f2);font-weight:600;margin-top:var(--s1);position:relative;
}
.adRow::before{
  content:"广告";position:absolute;top:-9px;left:50%;transform:translateX(-50%);
  background:var(--canvas);color:var(--tag);border:1px solid var(--tag);
  font-size:var(--f1);font-weight:400;padding:0 5px;line-height:1.5;
}
.rvOut{margin-top:var(--s3);border-top:1px dashed var(--hairline);padding-top:var(--s2)}
.rvOutHead{font-size:var(--f2);font-weight:600;margin-bottom:var(--s1)}

/* ---------- 抽屉 ---------- */
.backdrop{position:fixed;inset:0;background:rgba(29,42,51,.4);z-index:30}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:31;max-height:88vh;
  display:flex;flex-direction:column;background:var(--canvas);
  border-radius:16px 16px 0 0;box-shadow:0 -1px 0 var(--hairline);
  transform:translateY(102%);transition:transform .22s ease;
}
.sheet.on{transform:translateY(0)}
.grip{width:34px;height:3px;border-radius:2px;background:var(--hairline);margin:var(--s2) auto var(--s1);flex:0 0 auto}
.sheetHead{
  display:flex;align-items:center;justify-content:space-between;gap:var(--s2);
  padding:0 var(--s3) var(--s2);border-bottom:1px dashed var(--hairline);
  font-size:var(--f3);flex:0 0 auto;
}
.sheetBody{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--s3) var(--s3) calc(var(--s4) + env(safe-area-inset-bottom))}

/* ---------- 表单 ---------- */
.fld{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s2) 0;border-bottom:1px dashed var(--hairline)}
.fld > span{font-size:var(--f1);color:var(--steel);flex:0 0 auto}
.fld input{flex:1 1 auto;min-width:0;background:none;border:0;border-bottom:1px dashed var(--steel);color:var(--ink);padding:4px 2px;text-align:right}
.fld input.num{max-width:72px;text-align:center;font-family:var(--serif)}
.chips{display:flex;flex-wrap:wrap;gap:var(--s1);justify-content:flex-end}
.chip{color:var(--steel);font-size:var(--f1);border-bottom:1px dashed var(--steel);padding:3px 2px}
.chip.on{color:var(--harbor);border-bottom:2px solid var(--harbor);font-weight:600}
.chip i{font-style:normal;opacity:.65;margin-left:3px}
.step{display:flex;align-items:center;gap:var(--s2)}
.step button{width:26px;height:26px;border:1px solid var(--steel);line-height:1}
.step b{font-family:var(--serif);font-size:var(--f3);min-width:22px;text-align:center;font-variant-numeric:tabular-nums}
.sw{width:42px;height:22px;border:1px solid var(--steel);background:#dde3e3;position:relative;flex:0 0 auto}
.sw i{position:absolute;top:3px;left:3px;width:14px;height:14px;background:var(--steel);transition:left .16s ease}
.sw.on{border-color:var(--harbor);background:#d2e4e6}
.sw.on i{left:23px;background:var(--harbor)}
.search{width:100%;background:none;border:0;border-bottom:1px dashed var(--steel);font-size:var(--f2);padding:6px 2px;margin-bottom:var(--s2)}

/* ---------- 信息表 / 记录 ---------- */
.kv{border-top:1px dashed var(--hairline)}
.kvRow{display:flex;justify-content:space-between;gap:var(--s3);padding:6px 0;border-bottom:1px dashed var(--hairline);font-size:var(--f1)}
.kvRow span{color:var(--steel);flex:0 0 auto}
.kvRow b{font-weight:600;text-align:right;overflow-wrap:anywhere}
.kvRow b.bad{color:var(--stamp)}
.ld{max-height:210px;overflow-y:auto;border-top:1px dashed var(--hairline)}
.ldRow{display:flex;gap:var(--s1);font-size:var(--f1);padding:4px 0;border-bottom:1px dashed var(--hairline);font-family:var(--serif);font-variant-numeric:tabular-nums}
.ldI{color:var(--steel);min-width:24px}
.ldT{min-width:84px}
.ldR{min-width:52px}
.ldG{flex:1 1 auto}
.ldC{color:var(--brass)}

/* ---------- 档案卡片 ---------- */
.tripCard{border-bottom:1px dashed var(--hairline);padding:var(--s2) 0}
.tripCard.cur{background:#e8eeee;padding-left:var(--s1)}
.tcTop{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2)}
.tcTop b{font-size:var(--f2)}
.tcActs{display:flex;gap:var(--s3);flex-wrap:wrap;margin-top:var(--s1)}

/* ---------- 提示条 ---------- */
.toast{
  position:fixed;left:50%;bottom:78px;z-index:40;transform:translateX(-50%) translateY(10px);
  background:var(--ink);color:#fff;font-size:var(--f1);padding:8px 14px;max-width:86vw;text-align:center;
  opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;
}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.bad{background:var(--stamp)}
.hideta{position:fixed;left:-9999px;top:0;opacity:0}
