:root{
  --jade-900:#04342C; --jade-800:#085041; --jade-600:#0F6E56; --jade-400:#1D9E75;
  --jade-100:#9FE1CB; --jade-50:#E1F5EE;
  --gold-700:#854F0B; --gold-100:#FAC775; --gold-50:#FAEEDA;
  --red-600:#C0392B; --red-50:#FDECEA;
  --blue-600:#185FA5; --blue-50:#E6F1FB;
  --ink-900:#1F2421; --ink-700:#414844; --ink-500:#6B7370; --ink-300:#A8AFAB;
  --line:#E7EBE9; --bg:#F4F6F5; --card:#FFFFFF;
  --r:12px; --r-sm:8px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--ink-900); font-size:15px; line-height:1.6;
  -webkit-font-smoothing:antialiased; padding-bottom:env(safe-area-inset-bottom);
}
a{color:inherit;text-decoration:none;}
.hide{display:none !important;}

/* 顶部栏 */
.nav{
  position:sticky;top:0;z-index:50;background:var(--jade-800);color:#fff;
  padding:calc(10px + env(safe-area-inset-top)) 16px 12px;
  display:flex;align-items:center;gap:10px;min-height:52px;
}
.nav .back{width:26px;font-size:20px;line-height:1;opacity:.9;flex:none;}
.nav .title{font-size:17px;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nav .act{font-size:14px;opacity:.92;flex:none;}

/* 布局 */
.wrap{padding:14px 14px 90px;max-width:720px;margin:0 auto;}
.card{background:var(--card);border-radius:var(--r);padding:16px;margin-bottom:12px;border:1px solid var(--line);}
.card.tight{padding:13px 15px;}
.card h3{margin:0 0 12px;font-size:15px;font-weight:500;display:flex;align-items:center;gap:8px;}
.card h3 .more{margin-left:auto;font-size:14px;color:var(--jade-600);font-weight:400;}
.muted{color:var(--ink-500);font-size:13px;}
.tiny{font-size:12px;color:var(--ink-500);}
.row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:9px 0;}
.row + .row{border-top:1px solid var(--line);}
.row .k{color:var(--ink-500);font-size:14px;flex:none;}
.row .v{font-weight:500;text-align:right;min-width:0;word-break:break-all;}
.center{text-align:center;}
.mt{margin-top:14px;} .mb{margin-bottom:14px;} .mt-s{margin-top:8px;}

/* 主数字 */
.hero{background:var(--jade-50);border-radius:var(--r);padding:18px;margin-bottom:12px;border:1px solid #CFE9DF;}
.hero .lab{font-size:13px;color:var(--jade-800);}
.hero .num{font-size:34px;font-weight:500;color:var(--jade-900);line-height:1.25;letter-spacing:-1px;word-break:break-all;}
.hero .num small{font-size:19px;font-weight:400;margin-right:2px;}
.hero .split{font-size:12.5px;color:var(--ink-700);margin-top:6px;}
.hero.warn{background:var(--red-50);border-color:#F5C6C0;}
.hero.warn .lab,.hero.warn .num{color:var(--red-600);}

/* 指标格 */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.cell{background:var(--bg);border-radius:var(--r-sm);padding:11px 12px;}
.cell .k{font-size:12px;color:var(--ink-500);margin-bottom:2px;}
.cell .v{font-size:19px;font-weight:500;line-height:1.3;word-break:break-all;}
.cell .v.hot{color:var(--red-600);}
.cell .v.warn{color:var(--gold-700);}

/* 徽章 */
.badge{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:20px;line-height:1.7;white-space:nowrap;font-weight:500;}
.b-pending{background:var(--gold-50);color:var(--gold-700);}
.b-confirmed{background:var(--jade-50);color:var(--jade-800);}
.b-partial{background:var(--blue-50);color:var(--blue-600);}
.b-overdue{background:var(--red-50);color:var(--red-600);}
.b-settled{background:#EEF0EF;color:var(--ink-500);}
.b-disputed{background:#FBE7E4;color:#A93226;}
.b-voided{background:#EEF0EF;color:var(--ink-300);}
.b-cert{background:var(--jade-600);color:#fff;}
.b-backfill{background:#F0EDE6;color:#7A6A4F;}

/* 列表项 */
.item{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 15px;margin-bottom:10px;display:block;}
.item .top{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.item .who{font-size:15px;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.item .amt{font-size:16px;font-weight:500;color:var(--jade-800);}
.item .sub{font-size:12.5px;color:var(--ink-500);display:flex;gap:12px;flex-wrap:wrap;}

/* 按钮 */
.btn{
  display:block;width:100%;padding:13px;border-radius:10px;border:none;
  background:var(--jade-600);color:#fff;font-size:16px;font-weight:500;font-family:inherit;
  text-align:center;cursor:pointer;margin-top:10px;
}
.btn:active{opacity:.85;}
.btn.ghost{background:#fff;color:var(--jade-700,#0F6E56);border:1px solid var(--jade-100);color:var(--jade-800);}
.btn.gray{background:#EDEFEE;color:var(--ink-700);}
.btn.danger{background:var(--red-600);}
.btn.sm{padding:9px;font-size:14px;border-radius:8px;}
.btn-row{display:flex;gap:10px;}
.btn-row .btn{margin-top:10px;}

/* 表单 */
label.f{display:block;margin:14px 0 6px;font-size:14px;color:var(--ink-700);font-weight:500;}
label.f .req{color:var(--red-600);}
input,select,textarea{
  width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;
  font-size:15px;font-family:inherit;background:#fff;color:var(--ink-900);
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--jade-400);}
textarea{resize:vertical;min-height:70px;}
.hint{font-size:12px;color:var(--ink-500);margin-top:5px;line-height:1.5;}

/* 明细行（货品） */
.goods{border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;margin-bottom:10px;background:#FCFDFD;}
.goods .gh{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.goods .gh .t{font-size:13px;font-weight:500;color:var(--jade-800);}
.goods .gh .del{margin-left:auto;color:var(--red-600);font-size:13px;}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px;}

/* 照片 */
.photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;}
.photos .ph{width:74px;height:74px;border-radius:8px;object-fit:cover;border:1px solid var(--line);background:#F2F4F3;}
.photos .add{
  width:74px;height:74px;border-radius:8px;border:1px dashed var(--ink-300);
  display:flex;align-items:center;justify-content:center;color:var(--ink-500);font-size:22px;background:#fff;
}
.photos .wrap-ph{position:relative;}
.photos .wrap-ph .x{position:absolute;top:-6px;right:-6px;width:19px;height:19px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;}

/* 时间线 */
.tl{position:relative;padding-left:16px;}
.tl::before{content:'';position:absolute;left:4px;top:6px;bottom:6px;width:1px;background:var(--line);}
.tl .ev{position:relative;padding:0 0 16px;}
.tl .ev::before{content:'';position:absolute;left:-16px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--jade-400);border:2px solid #fff;}
.tl .ev .h{font-size:14px;font-weight:500;}
.tl .ev .d{font-size:12.5px;color:var(--ink-500);}

/* 底部 tabbar */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fff;border-top:1px solid var(--line);
  display:flex;padding-bottom:env(safe-area-inset-bottom);
}
.tabbar a{flex:1;text-align:center;padding:8px 0 7px;font-size:11.5px;color:var(--ink-500);position:relative;}
.tabbar a.on{color:var(--jade-600);font-weight:500;}
.tabbar a .ic{display:block;font-size:19px;line-height:1.3;}
.tabbar a .dot{position:absolute;top:5px;right:50%;margin-right:-18px;background:var(--red-600);color:#fff;font-size:10px;border-radius:9px;padding:0 4px;min-width:15px;line-height:15px;}

/* toast / modal */
#toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:rgba(28,36,33,.92);color:#fff;padding:10px 18px;border-radius:22px;font-size:14px;z-index:200;opacity:0;pointer-events:none;transition:opacity .2s;max-width:80%;text-align:center;}
#toast.show{opacity:1;}
.mask{position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:150;display:flex;align-items:flex-end;justify-content:center;}
.sheet{background:#fff;width:100%;max-width:720px;border-radius:16px 16px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:86vh;overflow:auto;}
.sheet h3{margin:0 0 12px;font-size:16px;font-weight:500;}

/* 空态 */
.empty{text-align:center;padding:52px 20px;color:var(--ink-500);}
.empty .ic{font-size:38px;opacity:.28;margin-bottom:10px;}

/* 提示条 */
.note{background:var(--gold-50);border:1px solid #F2DFB4;color:var(--gold-700);border-radius:var(--r-sm);padding:11px 13px;font-size:13px;line-height:1.6;}
.note.info{background:var(--blue-50);border-color:#CBE0F5;color:var(--blue-600);}
.note.jade{background:var(--jade-50);border-color:#CFE9DF;color:var(--jade-800);}
.note.red{background:var(--red-50);border-color:#F5C6C0;color:var(--red-600);}

/* 查重结果 */
.dup{border:1px solid #F2DFB4;background:#FFFBF2;border-radius:var(--r-sm);padding:12px;margin-bottom:10px;}
.dup .dh{font-size:13.5px;font-weight:500;color:var(--gold-700);margin-bottom:6px;}
.dup .row{padding:6px 0;font-size:13px;}

.seg{display:flex;background:#EDEFEE;border-radius:9px;padding:3px;margin-bottom:12px;}
.seg button{flex:1;border:none;background:transparent;padding:8px;border-radius:7px;font-size:14px;color:var(--ink-700);font-family:inherit;font-weight:500;}
.seg button.on{background:#fff;color:var(--jade-800);box-shadow:0 1px 2px rgba(0,0,0,.06);}

.tabs{display:flex;gap:16px;border-bottom:1px solid var(--line);margin-bottom:12px;overflow-x:auto;}
.tabs a{padding:9px 0;font-size:14px;color:var(--ink-500);border-bottom:2px solid transparent;white-space:nowrap;}
.tabs a.on{color:var(--jade-600);border-bottom-color:var(--jade-600);font-weight:500;}
