:root{--brand:#165d4a;--brand2:#0f4638;--accent:#d49a39;--bg:#f3f5f3;--line:#d9dfdc;--text:#24312d;--muted:#6b7773;--danger:#b42318;--ok:#18794e;--shadow:0 10px 30px rgba(25,55,44,.10)}
*{box-sizing:border-box} [hidden]{display:none!important}
html,body{margin:0;min-height:100%;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:var(--text);background:var(--bg)}
button,input,select,textarea{font:inherit} button{cursor:pointer}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#0e3c31,#1d6b55 55%,#d5b06f)}
.login-card{width:min(430px,100%);padding:42px;background:#fff;border-radius:22px;box-shadow:0 25px 70px rgba(0,0,0,.24)}
.brand-mark{width:54px;height:54px;display:grid;place-items:center;background:var(--brand);color:#fff;font-size:24px;font-weight:800;border-radius:14px;margin-bottom:22px}
h1,h2,h3,p{margin-top:0}.login-card h1{font-size:25px;margin-bottom:8px}.sub{color:var(--muted);line-height:1.7}.field{display:grid;gap:7px;margin:14px 0}.field label{font-size:14px;font-weight:700;color:#45524e}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid #cbd3d0;border-radius:8px;background:#fff;color:var(--text);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(22,93,74,.12)}
.btn{border:0;border-radius:8px;padding:10px 16px;background:var(--brand);color:#fff;font-weight:700}.btn:hover{background:var(--brand2)}.btn.secondary{background:#e8eeeb;color:#25463b}.btn.ghost{background:transparent;color:var(--brand);border:1px solid #b9c9c3}.btn.danger{background:var(--danger)}.btn.small{padding:7px 11px;font-size:13px}.btn.full{width:100%;margin-top:9px}.error{color:var(--danger);font-size:14px}.demo{margin:18px 0 0;padding:12px;background:#f4f7f5;border-radius:9px;color:#5b6864;font-size:13px;line-height:1.8}
.app{min-height:100vh}.topbar{height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 24px;position:sticky;top:0;z-index:20}.topbrand{font-weight:800;font-size:18px;color:var(--brand)}.topbrand small{font-weight:400;color:var(--muted);margin-left:8px}.topright{margin-left:auto;display:flex;align-items:center;gap:12px}.role-pill,.status{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700}.role-pill{background:#edf5f1;color:var(--brand)}
.layout{display:grid;grid-template-columns:210px 1fr;min-height:calc(100vh - 66px)}.sidebar{background:#123c31;padding:24px 14px}.nav-btn{width:100%;text-align:left;border:0;background:transparent;color:#cfe0da;border-radius:8px;padding:11px 14px;margin:3px 0}.nav-btn:hover,.nav-btn.active{background:#fff;color:var(--brand);font-weight:700}.content{padding:28px;min-width:0}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.page-head h2{margin:0 0 5px;font-size:23px}.page-head p{margin:0;color:var(--muted)}
.card{background:#fff;border:1px solid #e0e5e2;border-radius:12px;padding:18px;box-shadow:0 2px 10px rgba(20,50,40,.03);margin-bottom:16px}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:end}.toolbar .field{margin:0;min-width:150px;flex:1}.toolbar .field.compact{flex:0 1 170px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{padding:11px 10px;border-bottom:1px solid #e7ebe9;text-align:left;white-space:nowrap}.table th{background:#f7f9f8;color:#5f6b67;font-size:13px}.table tr:hover td{background:#fafcfb}.num{text-align:right!important;font-variant-numeric:tabular-nums}.status.unsigned{background:#fff3d6;color:#8d5e00}.status.signed{background:#e5f6ed;color:#16734a}.status.void{background:#f5e9e7;color:#a02f26}.empty{text-align:center!important;color:var(--muted);padding:34px!important}
.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.form-grid .field{margin:0}.span2{grid-column:span 2}.span4{grid-column:1/-1}.items-table input,.items-table select{min-width:80px;padding:8px}.items-table .product{min-width:150px}.spec-wrap{display:flex;align-items:center;gap:6px}.diameter{width:auto}.remove-row{border:0;background:#f7e8e6;color:var(--danger);width:32px;height:32px;border-radius:7px}.form-total{text-align:right;padding:16px 4px 2px;font-size:18px}.form-total strong{font-size:24px;color:var(--brand);margin-left:12px}.upper{color:var(--muted);font-size:13px;margin-top:5px}
.dialog{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(15,34,28,.52);padding:20px}.dialog-panel{width:min(760px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:14px;padding:24px;box-shadow:var(--shadow)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.dialog-head h3{margin:0}.close{border:0;background:#eef2f0;width:34px;height:34px;border-radius:50%;font-size:20px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}.detail-cell{padding:10px;background:#f7f9f8;border-radius:8px}.detail-cell small{display:block;color:var(--muted);margin-bottom:4px}.sign-box{display:grid;grid-template-columns:140px 1fr;gap:18px;align-items:center;padding:15px;background:#f7f9f8;border-radius:10px}.qr{width:140px;height:140px;background:#fff}.linkline{display:flex;gap:8px}.linkline input{font-size:12px}.signature-img{max-width:220px;max-height:100px;border:1px solid var(--line);background:#fff}
.address-row{display:flex;gap:8px;margin:8px 0}.address-row input{flex:1}.hint{font-size:13px;color:var(--muted)}.toast{position:fixed;right:24px;bottom:24px;z-index:100;padding:12px 18px;border-radius:9px;background:#183c31;color:#fff;box-shadow:var(--shadow)}
@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{display:flex;overflow:auto;padding:8px;position:sticky;top:66px;z-index:15}.nav-btn{white-space:nowrap;width:auto}.content{padding:18px}.form-grid{grid-template-columns:repeat(2,1fr)}.span4{grid-column:1/-1}}
@media(max-width:600px){.topbar{padding:0 14px}.topbrand small{display:none}.content{padding:12px}.page-head{align-items:stretch;flex-direction:column}.form-grid{grid-template-columns:1fr}.span2,.span4{grid-column:1}.detail-grid{grid-template-columns:1fr 1fr}.sign-box{grid-template-columns:1fr}.qr{margin:auto}.dialog{padding:8px}.dialog-panel{padding:16px}.topright #currentName{display:none}}

