:root{
  --bg:#F6F7FB; --surface:#FFFFFF; --ink:#1F2937; --ink2:#4B5563; --muted:#8A94A6; --line:#E5E7EB;
  --slate:#E2E8F0; --emerald:#A7F3D0; --apricot:#FED7AA; --sky:#BAE6FD; --lilac:#DDD6FE; --neutral:#E5E7EB;
  --pass-bg:#DEF7EC; --pass-fg:#047857; --diff-bg:#FFEDD5; --diff-fg:#B45309; --unk-bg:#EDE9FE; --unk-fg:#6D28D9;
  --gold:#FEF9C3; --accent:#2563EB; --radius:14px;
  --font:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--font);}
a{color:var(--accent);text-decoration:none}
.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.mono{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:.86em;word-break:break-all}
.muted{color:var(--muted)} .small{font-size:12.5px} .strong{font-weight:700}
.wrap{max-width:1180px;margin:0 auto;padding:18px 16px 60px}

/* 顶栏 */
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:18px;padding:10px 20px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.5px}
.brand.big{font-size:22px;justify-content:center}
.logo{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--emerald),var(--sky));color:#065F46;font-weight:800}
.brand.big .logo{width:40px;height:40px;font-size:20px}
.tabs{display:flex;gap:4px;flex:1;overflow-x:auto}
.tabs a{padding:7px 12px;border-radius:9px;color:var(--ink2);white-space:nowrap}
.tabs a.on{background:var(--slate);color:var(--ink);font-weight:600}
.who{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);white-space:nowrap}
button.link{border:0;background:none;color:var(--accent);cursor:pointer;font:inherit;padding:4px}

.head-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;margin:6px 0 10px}
.h1{font-size:22px;margin:0}
.meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.chip{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12.5px;font-weight:600}
.chip.ok{background:var(--pass-bg);color:var(--pass-fg)} .chip.warn{background:var(--diff-bg);color:var(--diff-fg)} .chip.lilac{background:var(--unk-bg);color:var(--unk-fg)}

.months{display:flex;gap:6px;overflow-x:auto;padding:4px 0 12px;scrollbar-width:none}
.months a{flex:none;padding:6px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink2)}
.months a.on{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:600}

/* 卡片 */
.cards{display:grid;gap:10px;margin-bottom:10px}
.cards-3{grid-template-columns:repeat(3,1fr)} .cards-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--surface);border-radius:var(--radius);padding:12px 14px;border:1px solid var(--line);border-top:4px solid var(--neutral)}
.card .k{font-size:12.5px;color:var(--ink2)} .card .v{font-size:24px;font-weight:700;margin-top:2px;text-align:left}
.card .v.sm{font-size:18px}
.c-pass{border-top-color:#6EE7B7}.c-pass .v{color:var(--pass-fg)}
.c-diff{border-top-color:#FDBA74}.c-diff .v{color:var(--diff-fg)}
.c-unk{border-top-color:#C4B5FD}.c-unk .v{color:var(--unk-fg)}
.c-green{border-top-color:var(--emerald)} .c-sky{border-top-color:var(--sky)} .c-gray{border-top-color:var(--slate)}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:14px 0}
.panel h2{font-size:17px;margin:0} .panel h3{font-size:15px;margin:0 0 8px}
.panel-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;cursor:default}
.alert-panel{background:#FFF7ED;border-color:#FED7AA}
.legend{font-size:12.5px;color:var(--ink2);display:flex;align-items:center;gap:6px}
.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-left:6px}
.dot.pass{background:var(--pass-bg);border:1px solid #6EE7B7}.dot.diff{background:var(--diff-bg);border:1px solid #FDBA74}.dot.unk{background:var(--unk-bg);border:1px solid #C4B5FD}

/* 日历 */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-h{text-align:center;font-size:12px;color:var(--muted);padding-bottom:2px}
.cal-c{min-height:72px;border-radius:10px;border:1px solid var(--line);background:#FAFAFB;padding:6px 7px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;font:inherit;color:inherit;text-align:left}
.cal-c.empty{background:none;border:0}
.cal-c.none{color:var(--muted)}
button.cal-c{cursor:pointer;transition:transform .08s, box-shadow .12s}
button.cal-c:hover{box-shadow:0 2px 10px rgba(0,0,0,.08)}
button.cal-c.sel{outline:2px solid var(--ink);outline-offset:1px}
.cal-c .dn{font-weight:700;font-size:14px}
.cal-c .amt{font-size:12px;color:var(--ink2);font-variant-numeric:tabular-nums}
.cal-c .tag{font-size:11px;font-weight:700;margin-top:auto;font-variant-numeric:tabular-nums;white-space:nowrap}
.s-pass{background:var(--pass-bg);border-color:#A7F3D0}
.s-diff{background:var(--diff-bg);border-color:#FDBA74}.s-diff .tag{color:var(--diff-fg)}
.s-unknown{background:var(--unk-bg);border-color:#C4B5FD}.s-unknown .tag{color:var(--unk-fg)}
.hint{margin:8px 0 0}

/* 当天明细 */
.day{margin-top:14px;border-top:1px dashed var(--line);padding-top:14px}
.day-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
.day-head h3{margin:0;font-size:17px}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12.5px;font-weight:700;text-align:center}
.b-pass{background:var(--pass-bg);color:var(--pass-fg)} .b-diff{background:var(--diff-bg);color:var(--diff-fg)} .b-unknown{background:var(--unk-bg);color:var(--unk-fg)}
.b-sub{background:#E0F2FE;color:#0369A1}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.blk{margin:0;border-radius:12px;padding:10px 12px;border:1px solid var(--line);border-left:5px solid var(--neutral);background:#fff}
.blk dt{font-weight:700;font-size:13px;margin-bottom:4px}
.blk>div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-size:13.5px}
.blk>div span{color:var(--ink2)}
.blk>div.tot{border-top:1px solid var(--line);margin-top:3px;padding-top:6px}
.blk>div.tot span{color:var(--ink);font-weight:700}
.blk>div.muted span,.blk>div.muted b{color:var(--muted);font-weight:400}
.b-green{border-left-color:var(--emerald)} .b-apricot{border-left-color:var(--apricot)} .b-gray{border-left-color:var(--slate)} .b-sky{border-left-color:var(--sky)}
.note{margin-top:10px;background:#F8FAFC;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.note .k{font-size:12.5px;color:var(--muted)} .note p{margin:4px 0 0;font-size:13.5px;word-break:break-word}

/* 待核 */
.group-nav{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.gchip{padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink);font-size:13.5px}
.gchip b{margin-left:4px}
.gbar{display:inline-block;width:6px;height:18px;border-radius:3px;vertical-align:-3px;margin-right:8px;background:var(--neutral)}
.g-finance{border-left:5px solid var(--apricot)} .gbar.g-finance{background:#FDBA74;border:0}
.g-user_confirm{border-left:5px solid var(--sky)} .gbar.g-user_confirm{background:#7DD3FC;border:0}
.g-unknown_source{border-left:5px solid var(--slate)} .gbar.g-unknown_source{background:#94A3B8;border:0}
.g-overpaid{border-left:5px solid var(--emerald)} .gbar.g-overpaid{background:#6EE7B7;border:0}
.g-hold{border-left:5px solid var(--lilac)} .gbar.g-hold{background:#C4B5FD;border:0}
.g-closed{border-left:5px solid #FDE68A} .gbar.g-closed{background:#FDE68A;border:0}
.item{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;background:#fff}
.item:target{box-shadow:0 0 0 2px var(--sky)}
.item-top{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.item-top .date{font-weight:700;background:var(--slate);padding:1px 8px;border-radius:6px;font-size:13px}
.item-top .ttl{flex:1;font-weight:600;min-width:10em}
.item-top .amt{font-weight:700;font-size:17px}
.amt.neg{color:#B91C1C}
.kv{margin:8px 0 0;display:grid;gap:4px}
.kv>div{display:grid;grid-template-columns:7.5em 1fr;gap:10px;font-size:13.5px}
.kv dt{color:var(--muted)} .kv dd{margin:0;word-break:break-word}
.subs{list-style:none;margin:10px 0 0;padding:0}
.subs li{background:#F0F9FF;border-radius:10px;padding:8px 10px;margin-top:6px}
.subs p{margin:2px 0 0;font-size:13.5px;white-space:pre-wrap}
.act{margin-top:10px}
.act summary{cursor:pointer;color:var(--accent);font-size:14px;font-weight:600}
.act textarea{width:100%;margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;resize:vertical}
.btns{display:flex;gap:8px;margin-top:8px}
.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer;color:var(--ink)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.wide{width:100%}
details>summary{list-style:none} details>summary::-webkit-details-marker{display:none}
#g-closed summary{cursor:pointer}

.tbl-scroll{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{background:#F8FAFC;color:var(--ink2);font-weight:600;text-align:center;padding:8px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:8px;border-bottom:1px solid var(--line);text-align:center}
.tbl td.r,.tbl th.r{text-align:right}
.plain{margin:6px 0;padding-left:18px}

.alert{background:#FFF7ED;color:#9A3412;border:1px solid #FED7AA;border-radius:10px;padding:8px 12px;margin:10px 0}
.alert.ok{background:var(--pass-bg);color:var(--pass-fg);border-color:#A7F3D0}

/* 登录 */
.login-card{max-width:380px;margin:12vh auto 0;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:28px 24px;text-align:center;box-shadow:0 10px 30px rgba(15,23,42,.06)}
.login-card form{text-align:left;margin-top:14px}
.login-card label{display:block;font-size:13px;color:var(--ink2);margin-bottom:12px}
.login-card input{display:block;width:100%;margin-top:5px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:16px}
.login-card input:focus,.act textarea:focus{outline:2px solid var(--sky);border-color:#7DD3FC}

@media (max-width:760px){
  body{font-size:14.5px}
  .topbar{flex-wrap:wrap;gap:6px 12px;padding:8px 16px}
  .tabs{order:3;flex-basis:100%}
  .who{margin-left:auto}
  .cards-3{grid-template-columns:repeat(3,1fr);gap:8px}
  .cards-4{grid-template-columns:repeat(2,1fr);gap:8px}
  .card{padding:10px}
  .card .v{font-size:19px} .card .v.sm{font-size:15px}
  .cards-3 .card .v.num{font-size:14.5px}
  .cal{gap:4px}
  .cal-c{min-height:58px;padding:4px;border-radius:8px}
  .cal-c .dn{font-size:13px} .cal-c .amt{font-size:10.5px} .cal-c .tag{font-size:9.5px;letter-spacing:-.2px}
  .grid2{grid-template-columns:1fr}
  .kv>div{grid-template-columns:6.5em 1fr}
  .panel{padding:14px 12px}
}

/* 第二批页面 */
.h2{font-size:18px;margin:6px 0 10px}
.c-apricot{border-top-color:var(--apricot)}
.who a.me{color:var(--ink2)}
.seg{display:inline-flex;background:var(--slate);border-radius:10px;padding:3px;margin:6px 0 10px}
.seg a{padding:6px 14px;border-radius:8px;color:var(--ink2);font-size:14px}
.seg a.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.06)}
details.team{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin:10px 0;overflow:hidden}
details.team>summary{display:grid;grid-template-columns:4.5em 1fr 3em repeat(3,minmax(7.5em,auto));gap:10px;align-items:center;padding:12px 16px;cursor:pointer}
details.team[open]>summary{border-bottom:1px solid var(--line);background:#FAFBFD}
details.team .rank{font-size:12.5px;color:var(--muted)}
details.team .tname{font-weight:700;font-size:16px}
details.team .ratio{font-size:12.5px;color:var(--ink2)}
.tval{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.tval small{display:block;font-weight:400;font-size:11.5px;color:var(--muted)}
.warn{color:var(--diff-fg)}
.tbl.compact td,.tbl.compact th{padding:7px 8px;font-size:13px}
.tbl td.l{text-align:left}
.tbl td.strong{font-weight:700}
.tbl .neg,.neg{color:#B91C1C}
.fineprint{margin:14px 0;font-size:12.5px;color:var(--muted)}
.fineprint summary{cursor:pointer;color:var(--ink2)}
.picker select,.search input,.form input,.form select{font:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.search{display:flex;gap:8px;margin:4px 0 8px}
.search input{flex:1;min-width:0}
.bills{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:10px}
.bill{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.bill.debt{border-left:5px solid var(--apricot)}
.bill-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.bill-top .room{font-weight:700}
.bill-top .tag{font-size:12px;background:var(--slate);border-radius:6px;padding:1px 7px}
.bill-top .num{margin-left:auto}
.bill-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 14px;font-size:13px}
.bill-grid>div{display:flex;justify-content:space-between;gap:6px}
.bill-grid span{color:var(--muted)}
.bill-note{margin:6px 0 0;font-size:12.5px;color:var(--ink2);background:#F8FAFC;border-radius:8px;padding:6px 8px;word-break:break-word}
.dayblock .panel-head{margin-bottom:8px}
.narrow{max-width:460px}
.form{display:grid;gap:10px}
.form label{display:grid;gap:4px;font-size:13px;color:var(--ink2)}
.form.inline{grid-template-columns:1fr auto;align-items:end}
.grid-form{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-items:end}
.ulist{display:grid;gap:8px}
.urow{border:1px solid var(--line);border-radius:12px;background:#fff}
.urow>summary{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;cursor:pointer}
.urow.off{opacity:.6}
.urow .uname{font-weight:600;flex:1}
.uforms{display:grid;gap:14px;padding:4px 12px 14px;border-top:1px solid var(--line)}
.uforms .form{padding-top:10px}
.role-admin{background:#FEF3C7;color:#92400E}.role-finance{background:#E0F2FE;color:#0369A1}
.role-team_lead{background:var(--unk-bg);color:var(--unk-fg)}.role-manager{background:var(--pass-bg);color:var(--pass-fg)}
.btn.danger{color:#B91C1C;border-color:#FECACA}
[hidden]{display:none!important}
@media (max-width:760px){
  details.team>summary{grid-template-columns:1fr auto;gap:4px 10px}
  details.team .rank,details.team .ratio{display:none}
  details.team .tname{grid-column:1/3}
  .tval{text-align:left}
  .bills{grid-template-columns:1fr}
  .cards-3 .card .v.sm{font-size:13.5px}
  .form.inline{grid-template-columns:1fr}
}
.tbl td.mono{white-space:nowrap;word-break:normal}
.tbl td.l{white-space:nowrap}
/* 每日明细 */
.daynav{display:flex;align-items:center;gap:8px;margin:4px 0 12px;flex-wrap:wrap}
.daynav .btn.dis{opacity:.4;cursor:default}
.datepick input{font:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.filters{margin:10px 0 4px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.fchip{padding:5px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--ink2);font-size:13.5px}
.fchip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.frow{display:flex;gap:8px;flex-wrap:wrap}
.frow input,.frow select{font:inherit;font-size:15px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.frow input{flex:1;min-width:10em}
.note-cell{text-align:left;font-size:12px;color:var(--ink2);min-width:14em;max-width:26em;white-space:normal}
.bill-cards{display:none}
.daylink{display:inline-block;margin-top:10px;font-weight:600}
@media (max-width:760px){.bill-table{display:none}.bill-cards{display:grid}}
.bill-table td,.bill-table th{white-space:nowrap}.bill-table td.note-cell{white-space:normal}
/* 开发票 */
.plans{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.plan{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;margin-top:12px}
.plans .plan{margin-top:0}
.p-exact{border-color:#6EE7B7;background:#F0FDF7}.p-under{border-top:4px solid var(--emerald)}.p-over{border-top:4px solid var(--apricot)}
.plan-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.plan-head .k{font-size:13px;color:var(--ink2)}.plan-head .v{font-size:24px;font-weight:700;text-align:left}
.plan-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.plan-list{margin:10px 0}.plan-list summary{cursor:pointer;color:var(--accent);font-size:14px}
.issue-form{margin-top:8px}
.inv{border:1px solid var(--line);border-radius:12px;margin:8px 0;background:#fff}
.inv>summary{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:10px 12px;cursor:pointer}
.inv.voided{opacity:.65}
.inv-body{padding:4px 12px 12px;border-top:1px solid var(--line)}
.inv-body .btns{flex-wrap:wrap;align-items:center}
@media (max-width:760px){.plans{grid-template-columns:1fr}}
/* 公户订单 */
.porders{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:10px;margin-top:8px}
.po{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;border-left:5px solid var(--sky)}
.po-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:2px}
.po-head .amt{font-size:18px}
.po-order{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.po-otitle{margin-bottom:6px}
.po-otitle .tag{font-size:12px;background:var(--slate);border-radius:6px;padding:1px 7px}
.po-more{margin-top:8px}.po-more summary{cursor:pointer;color:var(--accent);font-size:13.5px}
.allf{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 14px;font-size:12.5px;margin:8px 0}
.allf>div{display:flex;justify-content:space-between;gap:6px;border-bottom:1px solid #F1F5F9;padding:2px 0}
.allf dt{color:var(--muted)}.allf dd{margin:0;text-align:right;word-break:break-all}
.allf.repay{background:#F8FAFC;border-radius:8px;padding:6px}
@media (max-width:760px){.porders{grid-template-columns:1fr}}
.po-plain{border-left-color:var(--slate)}
.blk>div.sub span{color:var(--muted);font-size:12.5px}.blk>div.sub b{font-weight:500;font-size:12.5px}
