
:root{--ink:#17231d;--muted:#66736b;--paper:#f2f5ef;--panel:#fbfcf8;--line:#d7ddd5;--green:#1f6b4f;--green2:#80ad91;--red:#b34b3f;--amber:#b5802b;--blue:#3e6480}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans SC","Microsoft YaHei",sans-serif;font-variant-numeric:tabular-nums}
button,input,select{font:inherit}.shell{min-height:100vh;display:grid;grid-template-columns:240px 1fr}.side{background:#193a2e;color:#edf4ef;padding:28px 22px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand{font-family:"Noto Serif SC","Songti SC",serif;font-size:25px;letter-spacing:.08em}.brand small{display:block;font:11px/1.5 monospace;letter-spacing:.14em;color:#9fc1ad;margin-top:8px}.nav{margin-top:48px;display:grid;gap:8px}.nav button{border:0;background:transparent;color:#bcd0c3;text-align:left;padding:11px 12px;border-radius:4px;cursor:pointer}.nav button.active,.nav button:hover{background:#285141;color:white}.filebox{margin-top:auto;border-top:1px solid #416455;padding-top:18px}.filebox label{display:block;border:1px solid #688677;padding:10px 12px;text-align:center;cursor:pointer;border-radius:4px;font-size:13px}.filebox input{display:none}.file-note{font-size:11px;line-height:1.6;color:#9fc1ad;margin-top:10px;word-break:break-all}
main{padding:32px 38px 64px;min-width:0}.topline{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:22px}.eyebrow{font:11px/1.4 monospace;letter-spacing:.16em;color:var(--green);text-transform:uppercase}.topline h1{font-family:"Noto Serif SC","Songti SC",serif;font-size:34px;font-weight:600;margin:7px 0 5px}.subtitle{font-size:13px;color:var(--muted)}.status{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);padding-top:8px}.dot{width:8px;height:8px;border-radius:50%;background:var(--amber)}.dot.ok{background:var(--green2)}
.view{display:none}.view.active{display:block}.kpis{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);margin-top:24px;background:var(--panel)}.kpi{padding:20px 22px;border-right:1px solid var(--line)}.kpi:last-child{border-right:0}.kpi label{display:block;color:var(--muted);font-size:12px;margin-bottom:8px}.kpi strong{font:600 25px/1.15 "Noto Serif SC","Songti SC",serif}.kpi .sub{font-size:11px;color:var(--muted);margin-top:7px}.positive{color:var(--green)}.negative{color:var(--red)}
.grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,.8fr);gap:18px;margin-top:18px}.panel{background:var(--panel);border:1px solid var(--line);padding:20px}.panel h2{font-size:15px;margin:0}.panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.panel-head span{font-size:11px;color:var(--muted)}.chart{height:330px;min-height:300px}.insights{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}.insight{background:var(--panel);padding:17px}.insight b{display:block;font:600 20px/1.3 "Noto Serif SC","Songti SC",serif;margin:5px 0}.insight span{font-size:12px;color:var(--muted)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0 12px}.toolbar input,.toolbar select{border:1px solid var(--line);background:var(--panel);padding:9px 10px;border-radius:3px;min-width:145px}.toolbar input{flex:1;min-width:220px}.table-wrap{border:1px solid var(--line);background:var(--panel);overflow:auto;max-height:68vh}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap}th{position:sticky;top:0;background:#e8eee8;text-align:left;color:#405048;font-weight:600;padding:10px 11px;border-bottom:1px solid var(--line);z-index:1}td{padding:9px 11px;border-bottom:1px solid #e6e9e4;max-width:310px;overflow:hidden;text-overflow:ellipsis}tr:hover td{background:#f1f5ef}.amount{text-align:right}.tag{display:inline-block;padding:2px 7px;border-radius:10px;background:#e3ece6;color:#285a43}.tag.pending{background:#f2e7d0;color:#855e1f}.count{font-size:12px;color:var(--muted);margin-left:auto;align-self:center}
.lock{min-height:100vh;display:grid;place-items:center;background:#193a2e;padding:24px}.lock-card{width:min(430px,100%);background:#f8faf5;padding:38px;border:1px solid #668273}.lock-mark{width:42px;height:42px;border:2px solid #1f6b4f;border-radius:50% 50% 5px 5px;margin-bottom:25px;position:relative}.lock-mark:after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:#1f6b4f;left:15px;top:17px}.lock h1{font:600 28px/1.3 "Noto Serif SC","Songti SC",serif;margin:0 0 8px}.lock p{font-size:13px;color:var(--muted);line-height:1.7;margin:0 0 22px}.unlock-row{display:grid;grid-template-columns:1fr auto;gap:8px}.unlock-row input{min-width:0;padding:12px;border:1px solid var(--line);background:white;outline:none}.unlock-row input:focus{border-color:var(--green)}.unlock-row button{border:0;background:var(--green);color:white;padding:0 18px;cursor:pointer}.lock-error{color:var(--red);font-size:12px;min-height:20px;margin-top:10px}.empty{padding:70px 20px;text-align:center;color:var(--muted)}.empty b{display:block;color:var(--ink);font:600 22px/1.4 "Noto Serif SC","Songti SC",serif;margin-bottom:8px}
@media(max-width:900px){.shell{grid-template-columns:1fr}.side{height:auto;position:static;padding:18px 20px}.brand small,.file-note{display:none}.nav{margin-top:16px;display:flex;overflow:auto}.filebox{margin:14px 0 0;padding-top:12px}.filebox label{width:max-content}.topline{display:block}main{padding:24px 18px}.kpis{grid-template-columns:1fr 1fr}.kpi:nth-child(2){border-right:0}.kpi:nth-child(-n+2){border-bottom:1px solid var(--line)}.grid{grid-template-columns:1fr}.chart{height:300px}}
button{border:1px solid var(--line);padding:8px 12px;border-radius:5px;background:var(--panel);color:var(--ink);cursor:pointer}button:hover{filter:brightness(.96)}button:disabled{opacity:.45;cursor:default}.primary{background:var(--green);color:white;border-color:var(--green)}.topline>.primary{margin-left:auto;align-self:center;white-space:nowrap}.filebox button{display:block;width:100%;margin:8px 0;background:transparent;color:#e6f1ea;border-color:#688677}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:16px 0;font-size:12px}dialog{border:1px solid var(--line);border-radius:12px;padding:26px;width:min(640px,94vw);max-height:90vh;overflow:auto;color:var(--ink);background:var(--panel)}dialog::backdrop{background:#10271e99;backdrop-filter:blur(3px)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid label{display:grid;gap:7px;font-size:12px;color:var(--muted)}.form-grid input,.form-grid select,.form-grid textarea{width:100%;min-width:0;padding:11px;border:1px solid var(--line);border-radius:5px;background:white;color:var(--ink);font:inherit;font-size:14px}.form-grid .wide{grid-column:1/-1}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);padding:13px 22px;z-index:20;background:#193a2e;color:white;border-radius:7px;max-width:90vw;box-shadow:0 5px 20px #0003}td button{padding:4px 7px;font-size:11px;margin-right:5px}.danger{color:var(--red)}.kpis{border-radius:8px;overflow:hidden}.panel{border-radius:8px}.table-wrap{border-radius:6px}.status{white-space:nowrap}.empty-row{text-align:center;padding:40px;color:var(--muted)}@media(max-width:600px){.form-grid{grid-template-columns:1fr}.topline>.primary{margin-top:16px}.kpi{padding:16px 12px}.kpi strong{font-size:21px}.toolbar input,.toolbar select{min-width:0;width:100%}.topline h1{font-size:29px}}
.login-label{display:grid;gap:8px;margin:16px 0;color:var(--muted);font-size:13px}.login-label input{width:100%;padding:12px;border:1px solid var(--line);border-radius:5px;background:white;color:var(--ink);outline:none}.login-label input:focus{border-color:var(--green);box-shadow:0 0 0 2px #1f6b4f15}.login-submit{width:100%;margin-top:8px;padding:12px}.lock-card{border-radius:12px;box-shadow:0 20px 60px #0002}#passwordDialog{width:min(480px,94vw)}
