:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#263b35;background:#f4f5f1;font-size:16px;font-synthesis:none;--green:#234e40;--ink:#1a3129;--muted:#737e75;--line:#e2e6dd;--lime:#dceab0;--white:#fff;--danger:#a33b36}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #9bb770;outline-offset:3px}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}button{border:0;background:none;color:inherit}svg{width:21px;height:21px;vertical-align:middle;flex-shrink:0}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-1px;line-height:1.3}h2{font-size:19px;font-weight:650}h3{font-size:16px;font-weight:650}small{font-size:13px}.muted{color:var(--muted)}.mono{font-family:Consolas,"SFMono-Regular",monospace;font-variant-numeric:tabular-nums}.app-shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:#193c32;color:#d7e1d8;padding:35px 21px 22px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;color:#fff;padding:0 13px 30px}.brand-mark{display:grid;place-items:center;background:var(--lime);color:#183e36;width:37px;height:43px;border-radius:9px;font-size:25px;font-weight:800}.brand strong{font-size:25px;letter-spacing:3px}.brand small{display:block;color:#a6bcac;margin-top:3px;font-size:12px;letter-spacing:1px}.nav-caption{text-transform:uppercase;font-size:12px;letter-spacing:2px;color:#90aa99;padding:17px 14px 11px}.nav{display:flex;flex-direction:column;gap:5px}.nav button{display:flex;align-items:center;gap:12px;border-radius:8px;text-align:left;padding:13px 14px;font-size:14px;color:#bdcec1}.nav button:hover{background:#2b4d40;color:#fff}.nav button.active{background:#dceab0;color:#203b2d;font-weight:650}.nav button .nav-count{margin-left:auto;background:#2c5343;color:white;border-radius:5px;min-width:23px;padding:2px 5px;font-size:12px;text-align:center}.sidebar-bottom{margin-top:auto;padding:28px 12px 0}.connection{font-size:13px;color:#bed0bc;display:flex;align-items:center;gap:8px}.connection i{width:6px;height:6px;background:#b9d48b;border-radius:50%}.sidebar-bottom p{font-size:12px;line-height:1.8;color:#91ab99;margin-top:10px}.main{grid-column:2;min-width:0}.topbar{height:82px;background:#fbfcf9;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 40px;gap:12px}.breadcrumb{font-size:14px;color:#7e887e}.breadcrumb span{margin:0 12px;color:#b7bdb4}.account{display:flex;align-items:center;gap:12px}.avatar{width:35px;height:35px;border-radius:50%;background:#e7eadf;color:#33573b;display:grid;place-items:center;font-weight:650}.account-name{font-size:14px}.role-label{display:block;font-size:12px;color:var(--muted);margin-top:3px}.icon-button{padding:8px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center}.icon-button:hover{background:#e9ede2}.content{padding:35px 40px 45px;max-width:1700px;margin:0 auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:28px}.eyebrow{font-size:12px;letter-spacing:2px;color:#77856b;margin-bottom:9px;font-weight:650}.page-heading p{font-size:14px;color:var(--muted);margin-top:9px;line-height:1.7}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;border-radius:7px;font-size:14px;font-weight:600;white-space:nowrap;min-height:42px;background:#fff;border:1px solid #d7decf}.btn:hover{background:#f0f3e9}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.primary:hover{background:#34644e}.btn.danger{color:var(--danger);border-color:#ead4d0}.btn.small{padding:7px 12px;min-height:34px;font-size:13px}.buttons{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.date-label{display:flex;align-items:center;gap:8px;font-size:14px;color:#71806e}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:26px}.stat{background:#fff;border:1px solid var(--line);border-radius:11px;padding:21px 22px;position:relative;min-height:136px}.stat.highlight{background:#e8eddb;border-color:#e0e6d2}.stat-top{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:#6b7968;gap:8px}.stat-top svg{color:#789365}.stat-number{font-size:34px;line-height:1.3;margin-top:12px;font-weight:600;color:#263d2b;letter-spacing:-1px;font-variant-numeric:tabular-nums}.stat-foot{font-size:12px;color:#89917f;margin-top:3px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:24px;align-items:start}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;overflow:hidden;margin-bottom:24px}.panel-head{padding:22px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid #edf0e8}.panel-head h2{display:flex;align-items:center;gap:9px}.text-link{font-size:13px;color:#647b54;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.text-link:hover{text-decoration:underline}.panel-body{padding:23px}.empty{padding:46px 25px;text-align:center;color:#839079}.empty-icon{display:inline-flex;width:52px;height:52px;align-items:center;justify-content:center;background:#f0f3e8;color:#89a078;border-radius:15px;margin-bottom:14px}.empty p{margin:9px auto 18px;font-size:14px;line-height:1.8;max-width:390px}.empty h3{color:#53624e}.task-card{padding:20px 24px;border-bottom:1px solid #edf0e8}.task-card:last-child{border-bottom:0}.task-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.task-title{font-size:16px;line-height:1.6;font-weight:600;text-align:left;padding:0}.task-title:hover{color:#5a823e}.task-card p{font-size:14px;color:#808974;line-height:1.7;margin:8px 0 14px;white-space:pre-wrap;overflow-wrap:anywhere}.task-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#8b9482;font-size:13px}.badge{display:inline-block;white-space:nowrap;font-size:12px;font-weight:500;padding:5px 9px;border-radius:5px;background:#edf0e7;color:#697963}.badge.amber{background:#faf0db;color:#9b7433}.badge.green{background:#e4efdf;color:#4e7b44}.badge.blue{background:#e7eff3;color:#56748b}.badge.gray{background:#eceeed;color:#7d857f}.badge.red{background:#f8e8e4;color:#a05346}.subsystem-card{padding:21px 24px;display:flex;align-items:center;gap:15px;border-bottom:1px solid #edf0e8;width:100%;text-align:left}.subsystem-card:last-child{border:0}.subsystem-card:hover{background:#f7f9f3}.subsystem-icon{display:grid;place-items:center;width:47px;height:47px;border-radius:10px;background:#eef2e5;color:#6f8855}.subsystem-card p{font-size:13px;color:#8b9382;margin-top:7px}.subsystem-card .arrow{margin-left:auto;color:#8b9a7c}.money-list{padding:5px 24px}.money-row{padding:17px 0;border-bottom:1px solid #edf0e8;display:flex;justify-content:space-between;align-items:center;gap:12px}.money-row:last-child{border:0}.money-row span{font-size:14px;color:#7a866f}.money-row strong{font-size:18px;font-weight:600;letter-spacing:-.4px}.panel-note{padding:0 24px 18px;font-size:12px;color:#909984;line-height:1.6}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:19px 22px;border-bottom:1px solid var(--line);flex-wrap:wrap}.search{position:relative;min-width:230px;max-width:380px;flex:1}.search svg{position:absolute;left:12px;top:12px;width:18px;color:#99a28d}.search input{padding-left:39px;width:100%;background:#f8f9f5}.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.filters select{max-width:230px;font-size:14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{font-weight:500;font-size:12px;color:#87917f;background:#fbfcf8;padding:15px 22px;white-space:nowrap;border-bottom:1px solid var(--line)}td{padding:18px 22px;border-bottom:1px solid #edf0e8;line-height:1.6;vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fbfcf8}.cell-title{display:block;text-align:left;font-weight:600;padding:0;color:#344d32;max-width:360px;overflow-wrap:anywhere}.cell-title:hover{text-decoration:underline}.cell-sub{font-size:12px;color:#909986;margin-top:4px}.nowrap{white-space:nowrap}.table-footer{font-size:12px;color:#87927d;padding:15px 22px;border-top:1px solid var(--line)}.info-bar{border:1px solid #e0e7d5;background:#eef3e7;color:#738162;padding:13px 17px;border-radius:7px;font-size:14px;line-height:1.7;margin-bottom:21px}.payment-summary{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:22px}.payment-summary>div{background:#fff;border:1px solid var(--line);border-radius:9px;padding:16px 20px;min-width:180px}.payment-summary small{display:block;color:#8c947e;margin-bottom:7px}.payment-summary strong{font-size:20px;font-weight:600}.tabs{display:flex;gap:20px;padding:0 22px;border-bottom:1px solid var(--line);overflow-x:auto}.tabs button{font-size:14px;white-space:nowrap;padding:17px 2px;border-bottom:2px solid transparent;color:#87917d}.tabs button.active{color:#365733;border-color:#365733;font-weight:600}.task-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.task-list .task-card{border:1px solid var(--line);border-radius:10px;background:#fff}.task-list .task-card p{min-height:45px}.task-list .task-card-top{align-items:flex-start}.task-list .task-meta{flex-wrap:wrap}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.setting-value{font-size:28px;margin:15px 0}.setting-desc{font-size:14px;color:#7e8a73;line-height:1.9}.setting-desc code{background:#f1f4ea;padding:2px 5px;color:#5b734d}.boot{padding:15vh 30px;text-align:center;color:#78886b}.login-layout{min-height:100vh;display:grid;grid-template-columns:46% 54%;background:#fafbf7}.login-art{position:relative;overflow:hidden;background:#1b4034;color:#e7edce;padding:54px 65px;display:flex;flex-direction:column;justify-content:space-between}.login-art .brand{padding:0}.login-art h1{font-size:44px;line-height:1.5;letter-spacing:0;font-weight:500}.login-art p{color:#a8bda0;font-size:15px;line-height:2;margin-top:22px;max-width:340px}.login-art .art-footer{font-size:12px;letter-spacing:2px;color:#859f86}.tower-art{width:330px;height:300px;align-self:center;color:#93ac79;opacity:.5;margin:20px 0}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:50px 40px}.login-form{width:100%;max-width:400px}.login-form h2{font-size:28px;margin-bottom:10px}.login-form .intro{font-size:14px;color:#8a9680;line-height:1.8;margin-bottom:30px}.login-form .btn{width:100%;margin-top:8px}.login-foot{font-size:12px;color:#9aa18f;line-height:1.8;margin-top:30px}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:19px;min-width:0}.field>span,.field>label{font-size:14px;font-weight:500;color:#63725b}.field .hint{font-size:12px;line-height:1.7;color:#8f9b82;font-weight:400}.field input,.field select,.field textarea,input,select,textarea{border:1px solid #dce2d4;border-radius:6px;padding:11px 12px;background:white;color:#34452d;min-width:0;max-width:100%}textarea{resize:vertical;min-height:95px;line-height:1.7}input[type=file]{font-size:14px;padding:12px;background:#f8faf3;width:100%}input[type=file]::file-selector-button{border:0;background:#e5ecd8;color:#5d7549;padding:7px 10px;margin-right:12px;border-radius:4px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.form-grid .full{grid-column:1/-1}.error{color:#ac5343;background:#f9ede7;border-radius:6px;padding:11px 13px;font-size:14px;line-height:1.7;margin:12px 0;overflow-wrap:anywhere}.error:empty{display:none}.success{color:#4c7740;background:#eef5e5;padding:12px;border-radius:6px;font-size:14px}.form-note{font-size:13px;color:#8b927e;line-height:1.8;margin-bottom:15px}.check-list{display:grid;grid-template-columns:1fr 1fr;gap:9px;background:#f7f9f2;padding:13px;border:1px solid var(--line);border-radius:7px;max-height:200px;overflow:auto}.check-list label{font-size:14px;display:flex;gap:8px;align-items:center}.check-list input{accent-color:var(--green)}dialog{border:1px solid #e0e5d8;border-radius:13px;padding:0;width:min(730px,calc(100% - 36px));max-height:90vh;color:var(--ink);box-shadow:0 24px 100px #122a2440}dialog::backdrop{background:#162e2860;backdrop-filter:blur(3px)}.modal-header{position:sticky;top:0;background:#fff;z-index:2;padding:23px 27px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:15px}.modal-header h2{line-height:1.5;overflow-wrap:anywhere}.modal-body{padding:26px 27px}.modal-footer{padding-top:16px;display:flex;justify-content:flex-end;gap:9px;border-top:1px solid var(--line);margin-top:10px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:21px;margin-bottom:24px}.detail-grid dt{font-size:12px;color:#88977a;margin-bottom:8px}.detail-grid dd{margin:0;font-size:15px;line-height:1.7;overflow-wrap:anywhere}.detail-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.9;background:#f7f9f2;padding:16px;border-radius:7px;margin:16px 0 23px;color:#6d7d5e}.section-title{display:flex;align-items:center;gap:8px;font-size:15px;margin:23px 0 15px}.file-list{display:flex;flex-direction:column}.file-row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);padding:14px 15px;border-radius:7px;margin-bottom:9px;min-width:0}.file-row svg{color:#8ea077}.file-row a{font-size:14px;display:block;overflow-wrap:anywhere}.file-row small{font-size:12px;color:#8c987d;display:block;margin-top:5px}.file-row .download-icon{margin-left:auto}.file-row .file-info{min-width:0;flex:1}.empty-inline{font-size:14px;color:#91a080;padding:12px 0}.reply{border-left:2px solid #dfe8cf;padding:4px 0 4px 15px;margin:17px 0}.reply-head{font-size:13px;display:flex;justify-content:space-between;color:#849176;gap:10px}.reply p{font-size:14px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.history-row{font-size:13px;line-height:1.8;border-bottom:1px solid var(--line);padding:12px 0;color:#7c8c6e}.history-row p{color:#526446;margin-bottom:5px}.history-detail{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:6px}.recipient-tags{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:18px}.recipient-tags span{font-size:12px;border-radius:5px;padding:7px 10px;background:#f0f4e9;color:#839071}.recipient-tags span.done{color:#50713e;background:#e8f0df}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:13px 22px;background:#234b3d;color:#fff;border-radius:8px;box-shadow:0 5px 20px #18372825;font-size:14px;z-index:100;max-width:90vw;display:none}#toast.visible{display:block}.mobile-menu{display:none}.mobile-close{display:none}.offline{padding:35px;color:#805944;line-height:1.9}.count-label{color:#8b987d;font-size:12px;font-weight:400}.storage-icon{width:42px;height:42px;color:#7e965f;margin-bottom:10px}@media(min-width:1600px){.content{padding-top:42px}.stat{padding:25px}}@media(max-width:1180px){.app-shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{width:205px;padding:30px 14px}.content{padding:27px 25px}.topbar{padding:0 25px}.dashboard-grid{grid-template-columns:minmax(0,1.35fr) minmax(270px,1fr);gap:18px}.stats{gap:12px}.stat{padding:18px 15px}.stat-top{font-size:13px}.page-heading .date-label{display:none}td,th{padding-left:17px;padding-right:17px}}@media(max-width:900px){.dashboard-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.task-list{grid-template-columns:1fr}.settings-grid{grid-template-columns:1fr}.login-art{padding:40px 32px}.login-art h1{font-size:32px}.tower-art{width:220px}.login-form-wrap{padding:35px 28px}}@media(max-width:680px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:transform .2s;width:240px;box-shadow:10px 0 40px #152e3420}.sidebar.open{transform:translateX(0)}.mobile-close{display:block;position:absolute;right:12px;top:10px}.mobile-menu{display:inline-flex}.topbar{height:69px;padding:0 16px}.breadcrumb{font-size:12px}.breadcrumb span{margin:0 5px}.account{gap:6px}.account-name{display:none}.content{padding:26px 17px}.page-heading{align-items:flex-start;gap:10px;margin-bottom:22px}h1{font-size:25px}.page-heading p{font-size:13px}.page-heading .btn{padding:10px 12px}.eyebrow{font-size:11px;letter-spacing:1.5px}.stats{gap:10px;margin-bottom:20px}.stat{padding:15px;min-height:126px}.stat-number{font-size:29px}.panel-head{padding:18px}.panel-head h2{font-size:17px}.task-card{padding:18px}.task-meta{flex-wrap:wrap}.subsystem-card{padding:19px}.toolbar{padding:15px}.search{max-width:none;flex-basis:100%}.filters{width:100%}.filters select{flex:1;max-width:100%;min-width:0}.form-grid,.detail-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.modal-body{padding:20px}.modal-header{padding:18px 20px}.login-layout{display:block}.login-art{padding:27px 28px}.login-art .brand{padding:0}.login-art .login-tagline,.tower-art,.art-footer{display:none}.login-form-wrap{padding:40px 25px}.login-form{max-width:450px}.check-list{grid-template-columns:1fr}.task-card-top{align-items:flex-start}.settings-grid{gap:0}.payment-summary>div{flex:1;min-width:140px}.payment-summary strong{font-size:17px}.panel-body{padding:19px}dialog{width:calc(100% - 20px);max-height:94vh}.buttons{gap:7px}.btn{white-space:normal}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.folder-path{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:-6px 0 20px;font-size:14px}.folder-path button{padding:5px 7px;border-radius:5px;overflow-wrap:anywhere;text-align:left}.folder-path button:hover{background:#e6eddd}.folder-path span{color:#9ba58e}.folder-up{padding:12px 22px;border-bottom:1px solid var(--line)}

.finance-scope{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:0 0 16px}.finance-scope label{display:flex;align-items:center;gap:10px;font-size:14px;color:#738162}.finance-scope select{min-width:100px;padding:8px 12px}.payment-metric{text-align:left;min-width:0}.payment-metric:is(button):hover{border-color:#8ba274;box-shadow:0 3px 12px #233e3010}.metric-amount{font-size:25px;font-weight:650;line-height:1.5;margin-top:12px;overflow-wrap:anywhere;letter-spacing:-.6px}.metric-note{font-size:12px;color:#77846b;line-height:1.6;margin-top:9px}.pending-total{color:#8a957e;font-family:inherit;font-size:25px}.finance-caption{font-size:13px;color:#7c876f;line-height:1.8;margin:-10px 0 22px}.payment-progress .stat-foot{line-height:1.7}.payment-progress{gap:14px}@media(max-width:680px){.metric-amount{font-size:20px}.payment-progress{gap:10px}.metric-note{font-size:12px}.finance-scope h2{font-size:17px}.payment-progress .stat{padding:14px}}

[data-metric="contract"] .metric-amount.mono{font-size:20px;white-space:nowrap}@media(max-width:680px){[data-metric="contract"]{grid-column:1/-1}}

.permission-fields{border:1px solid var(--line);border-radius:8px;padding:15px}.permission-fields legend{font-size:14px;padding:0 7px}.permission-fields .hint{font-size:13px;line-height:1.8;color:var(--muted);margin-top:10px}

.permission-fields .check-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px}.permission-fields select{padding:7px;border:1px solid var(--line);border-radius:6px;background:white;max-width:110px}

.material-panel{margin-top:24px}.material-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px}.material-tile{display:flex;flex-direction:column;align-items:flex-start;gap:8px;background:#f4f7ee;border:1px solid var(--line);border-radius:8px;padding:14px}.material-tile>span{font-size:22px}.material-tile strong{font-size:22px}.material-tile small{color:var(--muted)}.material-track{display:flex;flex-wrap:wrap;gap:8px}.material-track span{padding:8px;background:#f4f5f1;border-radius:6px;color:var(--muted);font-size:12px}.material-track .current{background:var(--green);color:white}.sidebar{overflow-y:auto}

.contact-group{border-left:1px solid #567765;margin:0 0 8px 12px;padding-left:5px}.contact-group-title{color:#a6bcac;font-size:12px;padding:8px 14px}.contact-group .nav button{font-size:13px;padding:10px}

.file-row .download-icon{gap:5px;white-space:nowrap;font-size:13px}.file-list{margin-top:12px}

.drawing-entries{display:flex;flex-wrap:wrap;gap:10px}

.correspondence-tabs{margin-bottom:22px}.incoming-star{font-size:24px;color:var(--muted);padding:6px}.incoming-star.urgent{color:#a76c00}
