:root{--ink:#20352f;--green:#17674f;--muted:#7b8782;--line:#e3e9e5;--bg:#f5f7f4}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:white;border-radius:7px;padding:10px 16px;color:var(--ink)}button:hover{background:#edf4ef}button.primary{background:var(--green);color:white;border-color:var(--green)}button.danger{color:#b34c44}button:disabled{opacity:.45;cursor:default}input,select,textarea{border:1px solid #d9e2dc;border-radius:6px;padding:11px;background:white;color:var(--ink);max-width:100%}input:focus,textarea:focus,select:focus{outline:2px solid #9cc8ae;outline-offset:1px}textarea{resize:vertical;min-height:90px}h1,h2,h3,p{margin-top:0}h1{font-size:28px;letter-spacing:-1px}h2{font-size:21px}small,.muted{color:var(--muted)}.layout{display:flex;min-height:100vh}.sidebar{width:225px;flex-shrink:0;background:#173c31;color:#ccddd5;padding:35px 22px;position:fixed;height:100vh;display:flex;flex-direction:column}.brand{color:white;font-weight:800;font-size:27px;letter-spacing:3px;margin-bottom:44px}.brand span{font-weight:400;color:#88bba4}.side-label{font-size:10px;letter-spacing:2px;color:#81a492;margin:18px 12px}.nav{background:none;color:#c6d9ce;text-align:left;border:0;margin-bottom:8px;padding:14px}.nav.active{background:#305747;color:white}.sidebar footer{margin-top:auto;border-top:1px solid #345749;padding:20px 8px 0;font-size:12px;line-height:2}.main{margin-left:225px;width:calc(100% - 225px)}.topbar{height:80px;padding:20px 40px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid var(--line)}.tag{background:#e8f1eb;border-radius:5px;padding:7px 12px;color:var(--green);font-size:12px}.content{padding:36px 40px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px}.heading p{color:var(--muted);margin-bottom:0}.eyebrow{font-size:11px;color:var(--green);letter-spacing:2px;margin-bottom:10px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:30px}.card{background:white;border:1px solid var(--line);border-radius:10px;padding:23px}.card .value{font-size:28px;font-weight:650;margin:16px 0 9px;font-variant-numeric:tabular-nums}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}.panel-top{padding:22px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.panel-top h3{margin:0;font-size:16px}.filters{display:flex;flex-wrap:wrap;gap:10px;padding:18px 24px}.filters input[type=search]{flex:1;min-width:210px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{background:#f8faf8;color:#7a8880;font-size:12px;font-weight:500;text-align:left;padding:14px 18px}td{padding:19px 18px;border-bottom:1px solid #edf0ed;font-size:13px}.reason{max-width:290px;overflow:hidden;text-overflow:ellipsis}.amount{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.status{padding:5px 9px;font-size:12px;border-radius:5px;background:#edf0ed;color:#708078;white-space:nowrap}.status.已通过{color:#267456;background:#e9f4ec}.status.已驳回{color:#b05c50;background:#fcf0ec}.status.审批中{color:#a07927;background:#fbf3df}.link{color:var(--green);border:0;padding:5px;background:none}.pager{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;color:var(--muted)}.notice{background:#f0f4ef;border:1px solid #dfe7da;padding:13px 16px;font-size:12px;line-height:1.8;border-radius:6px;margin-bottom:20px}.overlay{position:fixed;inset:0;background:#102b2455;z-index:5;display:flex;justify-content:flex-end}.drawer{background:var(--bg);width:820px;max-width:100%;height:100%;overflow:auto;box-shadow:-10px 0 40px #173b3122}.drawer-head{background:white;padding:24px 30px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:1;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0}.drawer-body{padding:25px 30px}.section{background:white;border:1px solid var(--line);border-radius:8px;padding:24px;margin-bottom:18px}.section h3{font-size:15px;margin-bottom:22px}.details{display:grid;grid-template-columns:1fr 1fr;gap:22px}.field label{font-size:12px;color:var(--muted);display:block;margin-bottom:8px}.field div{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.field.full{grid-column:1/-1}.form .field input,.form .field select,.form .field textarea{width:100%}.timeline{border-left:2px solid #d8e8dd;margin-left:8px;padding-left:26px}.event{position:relative;margin:0 0 25px;line-height:1.8}.event:before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;background:#4d9678;left:-32px;top:6px;box-shadow:0 0 0 4px #eef5ef}.event p{margin:3px 0;color:var(--muted);font-size:12px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}.login{display:grid;grid-template-columns:1.15fr 1fr;min-height:100vh}.login-art{background:#173c31;color:#fff;padding:70px;display:flex;flex-direction:column;justify-content:center}.login-art .brand{position:absolute;top:55px}.login-art h1{font-size:50px;line-height:1.5;font-weight:500;letter-spacing:2px}.login-art p{color:#a3c0b0;line-height:2}.art-grid{display:flex;gap:16px;margin:35px 0}.art-grid div{padding:22px;border:1px solid #416350;border-radius:9px;color:#bcd1c3}.login-form{display:flex;align-items:center;justify-content:center;padding:35px}.login-box{width:360px}.login-box h2{font-size:28px}.login-box label{display:block;margin:25px 0 9px;color:#596c60}.login-box input,.login-box button{width:100%}.login-box button{margin-top:30px;padding:14px}.error{color:#b34c44;margin-top:15px;font-size:13px}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:#203b30;color:white;padding:14px 24px;border-radius:8px;z-index:20;display:none}.empty{text-align:center;padding:60px;color:var(--muted)}@media(max-width:1000px){.cards{grid-template-columns:1fr 1fr}.sidebar{width:175px;padding:30px 14px}.main{margin-left:175px;width:calc(100% - 175px)}.content{padding:25px 20px}.topbar{padding:20px}.login-art{padding:40px}.login-art h1{font-size:36px}}@media(max-width:650px){.sidebar{position:static;width:100%;height:auto;padding:15px;display:block}.sidebar .brand{margin:0 0 15px}.sidebar footer,.side-label{display:none}.nav{display:inline-block;margin:0}.layout{display:block}.main{width:100%;margin:0}.cards{gap:10px}.card{padding:15px}.card .value{font-size:22px}.topbar{height:auto;gap:10px;flex-wrap:wrap}.heading{align-items:start;gap:15px}.heading h1{font-size:23px}.details{grid-template-columns:1fr}.login{grid-template-columns:1fr}.login-art{display:none}.drawer-body{padding:15px}.filters{padding:15px}.field.full{grid-column:auto}}

.attachment-list{display:grid;gap:10px;margin:18px 0}.attachment-item{display:flex;align-items:center;gap:13px;width:100%;padding:14px;background:#fafbf9;border:1px solid var(--line);border-radius:8px;text-align:left}.file-icon{flex:0 0 46px;min-height:40px;display:grid;place-items:center;border-radius:6px;background:#edf0eb;color:#69776c;font-size:11px;font-weight:700}.image-icon{background:#e6f1ea;color:var(--green)}.file-name{overflow-wrap:anywhere;white-space:normal;line-height:1.7;flex:1;min-width:0}.preview-label{color:var(--green);font-size:12px;white-space:nowrap}.image-overlay{position:fixed;inset:0;background:#10241fe8;display:flex;justify-content:center;align-items:center;z-index:30;padding:24px}.image-dialog{width:1100px;max-width:100%;max-height:100%;background:white;border-radius:10px;overflow:hidden;display:flex;flex-direction:column}.image-dialog header{display:flex;justify-content:space-between;align-items:center;padding:15px 22px;gap:15px}.image-dialog header span{overflow-wrap:anywhere;min-width:0}.image-stage{background:#f0f2ef;padding:20px;overflow:auto;text-align:center;min-height:120px}.image-stage img{max-width:100%;max-height:78vh;object-fit:contain}.image-stage img[hidden]{display:none}@media(max-width:650px){.image-overlay{padding:10px}.attachment-item{gap:9px}.preview-label{font-size:10px}}
