:root{font-family:Inter,"Microsoft YaHei",sans-serif;color:#253b36;background:#f5f6f2;--green:#123f38;--accent:#28725c;--muted:#7b8982;--line:#e1e7df;--cream:#e8f0da}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;background:white;color:#3a5149;border:1px solid var(--line);border-radius:7px;padding:9px 14px;font-size:13px}button:hover{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.5;cursor:wait}button.primary,.login-link{background:var(--green);border-color:var(--green);color:white}button.danger{color:#b05a43}button.small{padding:5px 10px;font-size:12px}button.text{border:0;background:transparent;color:var(--accent);padding:4px 0;text-align:left}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a0c9a4;outline-offset:2px}a{color:var(--accent);text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:27px;font-weight:600;letter-spacing:.4px;margin-bottom:9px}h2{font-size:16px;font-weight:600;margin-bottom:0}h3{font-size:14px;font-weight:600}p{line-height:1.7}.muted{color:var(--muted);font-size:12px;line-height:1.7}.eyebrow{font-size:10px;letter-spacing:2px;color:#7a9977;font-weight:600;margin-bottom:9px}.shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:218px;background:var(--green);color:#a9c2b6;padding:28px 17px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:0 10px;margin-bottom:36px}.brand img{width:38px;height:38px;border:1px solid #5a8066;border-radius:10px}.brand strong{color:#fff;font-size:18px;letter-spacing:2px;display:block}.brand small{font-size:9px;letter-spacing:2px;color:#b1c997;display:block;margin-top:6px}.nav-title{font-size:10px;letter-spacing:2px;margin:5px 13px 15px;color:#7ca393}.nav{display:grid;gap:6px}.nav button{display:flex;gap:14px;align-items:center;background:none;border:0;border-radius:7px;color:#b4c9bc;text-align:left;padding:13px 15px;font-size:13px}.nav button.active{background:#2c5848;color:#f0f6de}.nav-mark{font-size:11px;color:#8ba88f}.nav button.active .nav-mark{color:#c7e49f}.side-bottom{margin-top:auto;padding:25px 12px 0;font-size:10px;line-height:2;color:#7ca393}.side-bottom a{color:#b3ccb7}.workspace{margin-left:218px}header{height:74px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 32px;background:#fdfefb}.breadcrumb{font-size:12px;color:#88988c}.identity{display:flex;gap:12px;align-items:center;font-size:12px}.avatar{width:31px;height:31px;background:var(--cream);border-radius:50%;display:grid;place-items:center;color:var(--green);font-weight:600}main{padding:29px 32px 40px;max-width:1760px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.page-head .muted{margin:0}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{background:white;border:1px solid var(--line);border-radius:10px;padding:21px}.stat.highlight{background:var(--green);color:#eef5e8;border-color:var(--green)}.stat .label{font-size:12px;color:#849287}.stat.highlight .label,.stat.highlight small{color:#bad0ba}.stat strong{display:block;font-size:29px;font-weight:500;margin:16px 0 10px;letter-spacing:-.5px}.stat small{font-size:10px;color:#8b978f}.grid2{display:grid;grid-template-columns:1.45fr 1fr;gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-bottom:22px}.panel-head{padding:19px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.panel-body{padding:22px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px;white-space:nowrap;text-align:left}th{padding:13px 18px;background:#fafbf8;color:#8b998e;font-weight:400;font-size:11px;border-bottom:1px solid var(--line)}td{padding:17px 18px;border-bottom:1px solid #edf0e9}tr:last-child td{border-bottom:0}td small{display:block;color:#8c998f;margin-top:6px;font-size:10px}.name{font-size:13px;font-weight:600}.tag{display:inline-block;border-radius:4px;padding:4px 8px;background:#eef1ec;color:#7d8a7d;font-size:10px;white-space:nowrap}.tag.good{background:#e8f2de;color:#628045}.tag.wait{background:#fff3da;color:#a88338}.tag.bad{background:#faeee9;color:#b4705c}.tag.blue{background:#edf2f5;color:#5b8194}.empty{padding:45px 18px;text-align:center;color:#9aa49a;font-size:12px}.notice{background:#ecf2e6;color:#5c795e;padding:13px 16px;border-radius:7px;line-height:1.7;font-size:12px;margin-bottom:20px}.notice.warning{background:#fff5e4;color:#9b7a3d}.search{border:1px solid var(--line);border-radius:7px;padding:9px 12px;min-width:210px;background:#fbfcf9;color:#38513f;font-size:12px}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:20px}.filters select{padding:9px 12px;border:1px solid var(--line);background:white;border-radius:7px;font-size:12px;color:#59705e}.filters .selected{background:#e8f0df;border-color:#ccdbc1;color:#4a6c41}.board{display:grid;grid-template-columns:repeat(7,minmax(215px,1fr));gap:14px;overflow-x:auto;padding-bottom:16px}.lane{background:#eef1e9;border:1px solid #e4e9de;border-radius:8px;min-height:300px;padding:12px}.lane-head{display:flex;justify-content:space-between;align-items:center;padding:3px 2px 13px;font-size:12px}.lane-head b{font-weight:500}.lane-head span{color:#869780;font-size:10px}.op-card{background:white;border:1px solid #e2e7da;border-radius:7px;padding:16px;margin-bottom:10px;box-shadow:0 2px 2px #25482d03}.op-card .name{border:0;padding:0;line-height:1.6;background:none;color:#294b38}.op-card p{font-size:10px;color:#879582;margin:6px 0 13px}.op-card .amount{font-size:18px;font-weight:500;margin-bottom:17px}.card-foot{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#879582}.card-note{font-size:10px;color:#a28651;margin-top:12px;line-height:1.6}.pipeline-row{display:grid;grid-template-columns:85px 1fr 55px;gap:12px;align-items:center;font-size:11px;margin:20px 0}.bar{height:13px;background:#f2f5ed;border-radius:3px;overflow:hidden}.bar span{display:block;height:100%;background:#7c9e73;border-radius:3px}.pipeline-row:nth-child(even) .bar span{background:#b6c79c}.row-item{display:flex;justify-content:space-between;gap:14px;padding:15px 0;border-bottom:1px solid var(--line);align-items:center}.row-item:last-child{border:0}.row-item b{font-size:12px;font-weight:500}.row-item p{margin:5px 0 0;color:#91a08e;font-size:11px}.count{font-size:10px;color:#80916e;background:#eff4e7;padding:4px 8px;border-radius:4px}.section-title{margin:24px 0 14px;font-size:14px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}.detail-grid dt{font-size:11px;color:#8c9b8c;margin-bottom:8px}.detail-grid dd{margin:0;font-size:12px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.timeline{border-left:2px solid #dce6d1;padding:0 0 18px 16px;font-size:12px;margin-left:5px}.timeline small{display:block;color:#8b9b89;font-size:10px;margin-top:8px}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-story{background:var(--green);color:#f2f7e9;padding:10vh 12%;display:flex;flex-direction:column;justify-content:space-between}.login-story .brand{padding:0;margin-bottom:65px}.login-story h1{font-size:42px;line-height:1.5;letter-spacing:2px}.login-story p{color:#adc5b1;font-size:13px;line-height:2}.login-story .login-flow{display:flex;gap:9px;flex-wrap:wrap;margin-top:40px}.login-flow span{font-size:10px;border:1px solid #52745d;border-radius:5px;padding:9px 12px;color:#c5d7b3}.login-form{padding:13%;display:flex;flex-direction:column;justify-content:center;max-width:650px}.login-form h2{font-size:26px;margin-bottom:14px}.login-link{display:block;padding:15px;text-align:center;border-radius:7px;margin:23px 0}.demo-grid{display:grid;gap:8px}.demo-grid button{font-size:12px}.loading{padding:15vh 20px;text-align:center;color:#7b9479}dialog{width:min(850px,calc(100% - 28px));max-height:92vh;border:0;border-radius:12px;padding:0;color:#304637;box-shadow:0 25px 90px #18392255}dialog::backdrop{background:#163a2c70;backdrop-filter:blur(2px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:20px 25px;border-bottom:1px solid var(--line)}.dialog-body{padding:24px 25px}.dialog-foot{padding:16px 25px;border-top:1px solid var(--line);display:flex;gap:9px;justify-content:flex-end}.error{font-size:12px;color:#b56b55;background:#fff0e9;padding:12px;line-height:1.6;margin-bottom:15px;border-radius:5px}.error:empty{display:none}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:flex;flex-direction:column;gap:7px;font-size:12px}.field.wide{grid-column:1/-1}.field input,.field textarea,.field select{border:1px solid #d8e2d3;border-radius:6px;padding:10px;min-width:0;width:100%;font-size:12px;background:white;color:#344b37}.field textarea{min-height:90px;resize:vertical}.field small{font-size:10px;color:#8a9d84}.checks{display:flex;flex-wrap:wrap;gap:12px;padding:10px 0}.checks label{display:flex;gap:6px;align-items:center;font-size:12px}.checks input{width:auto}.quote-lines{width:100%;min-width:610px}.quote-lines td,.quote-lines th{padding:8px}.quote-lines input{width:100%;min-width:45px;padding:8px;border:1px solid var(--line);border-radius:5px;font-size:12px}.quote-lines .item-name{min-width:140px}.quote-total{text-align:right;font-size:20px;margin:18px 0;color:var(--green)}.quote-sheet h2{font-size:23px;margin-bottom:12px}.quote-sheet .sheet-head{border-bottom:2px solid var(--green);padding-bottom:18px;margin-bottom:22px;display:flex;justify-content:space-between;gap:16px}.quote-sheet .sheet-head small{font-size:10px;color:#7d9279}.quote-sheet p{font-size:12px;white-space:pre-wrap}.quote-sheet .sheet-terms{padding-top:20px}.audit-json{white-space:pre-wrap;word-break:break-word;font-size:11px;max-height:380px;overflow:auto;background:#f6f8f2;padding:16px;line-height:1.7}.file-row{display:flex;justify-content:space-between;gap:10px;padding:12px;border:1px solid var(--line);border-radius:5px;margin:10px 0;font-size:12px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:9;background:var(--green);color:#eff6df;box-shadow:0 4px 15px #123f3822;padding:13px 22px;border-radius:7px;font-size:12px;display:none;max-width:90%}@media(max-width:1100px){.sidebar{width:185px}.workspace{margin-left:185px}header{padding:0 22px}main{padding:24px 22px}.grid2{grid-template-columns:1fr}.stats{gap:12px}.stat{padding:18px}}@media(max-width:700px){.sidebar{position:static;width:100%;padding:16px}.brand{margin:0 0 16px;padding:0}.brand img{width:32px;height:32px}.brand strong{font-size:16px}.nav-title,.side-bottom{display:none}.nav{display:flex;overflow:auto;scrollbar-width:none;gap:4px}.nav button{white-space:nowrap;padding:9px 12px;font-size:12px}.nav-mark{display:none}.workspace{margin:0}header{height:56px;padding:0 16px}.breadcrumb{font-size:10px}.identity{gap:7px;font-size:11px}.avatar{display:none}main{padding:23px 16px}.page-head{align-items:flex-start;flex-wrap:wrap}.page-head h1{font-size:24px}.stats{grid-template-columns:1fr 1fr;gap:11px}.stat{padding:17px}.stat strong{font-size:23px;margin:13px 0}.panel-head{padding:17px;flex-wrap:wrap}.panel-body{padding:17px}td,th{padding:14px}.form-grid{grid-template-columns:1fr}.field.wide{grid-column:auto}.detail-grid{gap:18px}.search{min-width:160px;flex:1}.login{display:block}.login-story{padding:30px 25px}.login-story .brand{margin-bottom:30px}.login-story h1{font-size:30px}.login-story .login-flow{margin:22px 0}.login-form{padding:30px 25px}.dialog-body{padding:20px}.dialog-head{padding:18px 20px}.board{grid-template-columns:repeat(7,225px)}.quote-sheet .sheet-head{display:block}.quote-sheet .sheet-head .tag{margin-top:15px}}@media print{body{background:white}body>*{display:none!important}dialog[open]{display:block!important;position:static!important;width:100%;max-height:none;box-shadow:none;border:0;padding:0}.dialog-head,.dialog-foot,.error,.no-print{display:none!important}.dialog-body{padding:0}.quote-sheet{font-size:12px}.quote-sheet table{white-space:normal}.quote-sheet th,.quote-sheet td{padding:9px;border-bottom:1px solid #ddd}.quote-sheet .sheet-terms{break-inside:avoid}}
