:root{font-family:Arial,"Microsoft YaHei",sans-serif;color:#29362e;background:#f3f5f1;font-size:15px;--green:#304f3e;--muted:#718075}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid #cdd7ce;background:white;color:#304f3e;border-radius:9px;padding:11px 15px}button:hover{background:#e8eee7}button.primary{background:var(--green);color:white;border-color:var(--green)}button:disabled{opacity:.45;cursor:wait}input,select,textarea{width:100%;padding:11px;border:1px solid #cdd7ce;border-radius:8px;background:white;color:#29362e}label{display:grid;gap:7px;margin:12px 0;font-size:13px;color:#57665b}textarea{min-height:80px}h1{font-size:28px;letter-spacing:-1px}h2{font-size:20px}h3{font-size:16px}p{line-height:1.7}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:#233c2e;color:white;padding:30px 18px;position:sticky;top:0;height:100vh}.brand{font-family:Georgia,serif;font-size:28px;margin-bottom:6px}.sub{font-size:11px;letter-spacing:2px;color:#a6b8a5}.nav{display:grid;gap:7px;margin-top:34px}.nav button{text-align:left;background:transparent;border:0;color:#d7e1d4}.nav button.active{background:#425c47;color:white}.main{padding:25px 36px;max-width:1600px;width:100%}.top{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #dce3da;padding-bottom:20px}.top select{width:190px}.top-actions,.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.muted{color:var(--muted);font-size:13px}.banner{background:#fff2d7;color:#785524;padding:12px 16px;border-radius:8px;margin:16px 0}.hero{display:flex;justify-content:space-between;align-items:end;margin:25px 0}.hero p{margin:0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat{padding:22px;background:white;border:1px solid #e1e7dc;border-radius:12px}.stat b{display:block;font-size:30px;margin-top:12px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px;margin-top:18px}.card{background:#fff;border:1px solid #e0e6dc;border-radius:12px;padding:22px;min-width:0}.card h3{margin:10px 0}.card button{margin-top:12px}.badge{display:inline-block;font-size:12px;padding:5px 9px;border-radius:20px;background:#e9eee5;color:#4b634e}.badge.warn{background:#fff0d7;color:#99671c}.badge.bad{background:#fbe5df;color:#a3432b}.filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:10px;margin:18px 0}.table-wrap{overflow:auto;background:white;border:1px solid #dfe6db;border-radius:12px}table{border-collapse:collapse;width:100%;white-space:nowrap;font-size:13px}th,td{text-align:left;padding:14px;border-bottom:1px solid #edf0e9}th{color:#6f7b6b;background:#f8faf6;font-weight:500}td.num{text-align:right}tr:last-child td{border-bottom:0}.empty{padding:45px;text-align:center;color:var(--muted)}.login{max-width:440px;margin:8vh auto;padding:35px;background:white;border:1px solid #dde5d8;border-radius:18px}.login .brand{color:var(--green)}dialog{max-width:900px;width:94%;max-height:90vh;border:0;border-radius:16px;padding:26px;box-shadow:0 20px 90px #11271933}dialog::backdrop{background:#16281c80}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.line{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;margin:10px 0;padding:12px;background:#f4f7f0;border-radius:8px}.line.receive{grid-template-columns:2fr repeat(3,1fr)}.inline-label{display:flex;align-items:center;gap:8px}.inline-label input{width:auto}.error{color:#a53226;background:#fff1ed;padding:12px;border-radius:8px;margin:12px 0}.success{background:#e1f0df;padding:15px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#233c2e;color:white;border-radius:10px;padding:15px 22px;z-index:100;display:none}.detail dl{display:grid;grid-template-columns:140px 1fr;gap:12px;font-size:14px}.detail dd{margin:0;overflow-wrap:anywhere}.qr{display:flex;align-items:center;gap:18px;padding:15px;background:#f7f9f3}.qr svg{width:140px;height:140px}.audit{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;max-width:550px}.foot{margin-top:28px;color:#7b897a;font-size:12px}.filelink{display:block;margin:8px 0;color:var(--green)}@media(max-width:760px){.shell{display:block}.sidebar{position:relative;height:auto;padding:18px}.brand{font-size:24px}.nav{display:flex;overflow:auto;margin-top:14px;gap:5px}.nav button{white-space:nowrap;padding:10px}.main{padding:16px}.top{align-items:start}.top-actions{justify-content:end}.top select{width:150px}.top .muted{display:none}.hero{margin:18px 0}h1{font-size:24px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:15px}.stat b{font-size:25px}.filters{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.line,.line.receive{grid-template-columns:1fr 1fr}.line>strong{grid-column:1/-1}.detail dl{grid-template-columns:90px 1fr}.card{padding:18px}dialog{padding:18px}.qr{flex-wrap:wrap}}

@media(max-width:760px){.top>div:first-child{min-width:70px;flex-shrink:0}.top-actions{gap:6px}.hero{flex-wrap:wrap;gap:10px}}

.photo-actions{display:flex;gap:12px;flex-wrap:wrap}.photo-button{position:relative;display:inline-flex;align-items:center;min-height:48px;padding:12px 20px;background:#204d40;color:white;border-radius:10px;cursor:pointer}.photo-button input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}progress{width:100%;height:18px}.install-app{position:fixed;right:16px;bottom:16px;z-index:5;background:#204d40;color:#fff;min-height:44px}.foot{padding-bottom:60px}
