:root{--ink:#233c35;--muted:#7a867e;--green:#285d4c;--line:#e3e8e0;--paper:#f7f8f3;--amber:#a26935;--red:#a5483f}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font:14px/1.6 "Microsoft YaHei","PingFang SC",sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a.button{cursor:pointer}button{color:inherit}button:disabled{opacity:.45;cursor:wait}.sidebar{position:fixed;inset:0 auto 0 0;width:234px;background:#edf1e9;border-right:1px solid #dce3d8;padding:34px 20px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;font-weight:600;font-size:16px;letter-spacing:1px}.seal{width:41px;height:44px;background:var(--green);border-radius:12px 4px 12px 4px;color:#fff;display:grid;place-items:center;font:24px Georgia,serif}.brand small{display:block;font-size:8px;letter-spacing:1.4px;color:var(--muted);margin-top:3px}.workspace-label{font-size:11px;color:#7b887d;margin:30px 0 22px;letter-spacing:.7px}.online-dot{display:inline-block;height:6px;width:6px;background:#6d9274;border-radius:50%;margin:0 5px}nav{display:grid;gap:8px}.nav-item{padding:11px 14px;display:flex;align-items:center;gap:12px;border-radius:8px;color:#6a786c;font-size:13px}.nav-item:hover{background:#e2e9df}.nav-item.active{background:var(--green);color:#fff;box-shadow:0 5px 10px #285d4c15}.nav-icon{font-size:18px;width:20px;text-align:center;font-family:serif}.nav-tag{font-size:10px;border:1px solid currentColor;border-radius:3px;padding:0 4px;margin-left:auto;opacity:.7}.sidebar-bottom{margin-top:auto;border-top:1px solid #d5dfd2;padding-top:24px;display:flex;gap:11px;align-items:center;font-size:12px}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#d5dfc9;color:#58714f}.sidebar-bottom small{display:block;font-size:10px;color:var(--muted)}.lock{margin-left:auto;color:#929d8b}.main-shell{margin-left:234px}.topbar{height:67px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 42px;font-size:11px;background:#fff9}.breadcrumb{color:#929c92}.breadcrumb strong{font-weight:400;color:#55675b}.top-right{display:flex;gap:24px;align-items:center;color:#8a9387}.local-badge{border:1px solid #dce5d7;border-radius:20px;padding:2px 10px;color:#5d7d60}.local-badge i{display:inline-block;width:5px;height:5px;background:#7c9a76;border-radius:50%;margin-right:4px}main{max-width:1650px;padding:32px 42px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.eyebrow{font-size:9px;letter-spacing:2px;color:#98a28f;margin:0 0 5px}h1{font-size:28px;letter-spacing:2px;font-weight:600;margin:0}.subtitle{color:var(--muted);font-size:12px;margin:5px 0 0}.button,button.primary,button.secondary{display:inline-flex;align-items:center;justify-content:center;padding:9px 17px;border-radius:6px;border:1px solid #d8e2d6;gap:7px;background:#fff;line-height:1.4}.primary,a.primary{background:var(--green);border-color:var(--green);color:#fff}.secondary{background:#fff;color:var(--green)}button.danger{color:var(--red)}.year-strip{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;border-bottom:1px solid var(--line);padding-bottom:17px;gap:15px}.year-strip #years{display:flex;background:#e9eee5;border-radius:6px;padding:3px;gap:3px}.year-strip button{border:0;background:none;padding:5px 16px;font-size:12px;border-radius:4px;color:#84917d}.year-strip button.active{background:#fff;color:var(--green);box-shadow:0 1px 3px #0001}.year-strip>span{font-size:11px;color:#8a9785}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:23px;margin-bottom:20px}.card-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:17px}.card h2{font-size:15px;margin:0;font-weight:600}.card-head small,.muted{color:var(--muted);font-size:11px}.hero{background:linear-gradient(110deg,#e6eee2,#f0f3e9);border-color:#dce7d7;display:flex;gap:25px;align-items:center;justify-content:space-between;min-height:138px;position:relative;overflow:hidden}.hero h2{font:25px/1.6 "Microsoft YaHei",sans-serif;letter-spacing:2px;margin:0 0 8px}.hero p{font-size:12px;color:#71816c;margin:0}.hero-mark{font:72px Georgia,serif;letter-spacing:-6px;color:#d3decb;border-bottom:1px solid #cbd8c2;padding:0 20px;flex:none}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0}.stat{background:#fff;border:1px solid var(--line);border-radius:9px;padding:20px 22px;min-width:0}.stat-label{font-size:11px;color:#7c8978;display:flex;justify-content:space-between}.stat-value{font-size:30px;font-weight:500;line-height:1.5;letter-spacing:-.8px;font-variant-numeric:tabular-nums;margin-top:8px}.stat-value small{font-size:11px;color:#87937e;letter-spacing:0;margin-left:7px}.stat-note{font-size:10px;color:#a2ac9a;margin-top:4px}.columns{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.summary-row{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid #eef1ea;font-size:12px}.summary-row:last-child{border:0}.summary-row strong{font-size:15px;font-weight:500}.flag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10px;background:#edf3e9;color:#657d56;white-space:nowrap}.flag.amber{background:#fbf0e0;color:#a77c42}.flag.gray{background:#f0f2ed;color:#939b8a}.flag.red{background:#f9eeea;color:#a55f50}.source-note{font-size:11px;color:#8e977f;margin:14px 0 0;padding:10px 13px;background:#f5f6ef;border-radius:5px}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:18px}.filters input{min-width:250px;flex:1}.input,input,select,textarea{border:1px solid #dce3d6;border-radius:5px;background:#fff;color:var(--ink);padding:8px 11px;outline:none}input:focus,select:focus,textarea:focus{border-color:#7d9d77;box-shadow:0 0 0 3px #70996b12}textarea{width:100%;min-height:90px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{font-weight:400;color:#91a087;background:#f5f7f0;text-align:left;white-space:nowrap;padding:11px 13px;border-bottom:1px solid #e5ebdf}td{padding:13px;border-bottom:1px solid #eef1e9;vertical-align:top}tbody tr:hover{background:#fafbf7}.project-name{min-width:230px;max-width:410px;line-height:1.7;color:#3d5547;font-weight:500}.money{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.small{font-size:10px;color:#93a087;line-height:1.6}.link{border:0;background:none;color:#5f8358;cursor:pointer;padding:0}.pills{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0 18px}.pill{background:#fff;border:1px solid #dfe5d9;border-radius:5px;padding:5px 10px;font-size:11px}.pill.active{background:#e7efdf;border-color:#a5ba95;color:#527545}.reconcile-card{border:1px solid var(--line);border-radius:9px;background:#fff;margin-bottom:16px;overflow:hidden}.reconcile-head{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:#f5f7f0;border-bottom:1px solid var(--line)}.reconcile-body{display:grid;grid-template-columns:1fr 120px 1fr;gap:20px;padding:22px}.source-box{min-width:0}.source-box h3{font-size:13px;margin:5px 0 12px;line-height:1.7}.source-box dt{font-size:10px;color:#94a186;width:66px;flex:none}.source-box dd{margin:0;font-size:12px;word-break:break-all}.source-box dl{display:flex;gap:8px;margin:7px 0}.source-box .provenance{font-size:10px;background:#f8f9f5;padding:9px;margin-top:14px;color:#929e86;overflow-wrap:anywhere}.compare-center{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#96a486;font-size:11px;text-align:center}.compare-center b{font-size:24px;font-weight:300}.reconcile-actions{display:flex;gap:9px;flex-wrap:wrap;padding:15px 18px;border-top:1px solid var(--line);align-items:center}.reconcile-actions select{max-width:350px;min-width:170px}.reconcile-actions input{flex:1;min-width:200px}.reconcile-actions button{font-size:11px;padding:8px 11px}.diff-field{background:#fcf0d9;padding:1px 4px}.timeline-entry{border-left:1px solid #dce5d5;padding:0 0 18px 15px;margin-left:4px}.timeline-entry b{font-size:12px;font-weight:500}.timeline-entry p{margin:3px 0 0;color:#91a083;font-size:10px}.timeline-entry:before{content:'';position:absolute;margin:8px 0 0 -19px;width:7px;height:7px;border-radius:50%;background:#a2b591}.export-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.export-tile{padding:18px;border:1px solid #e0e7d9;border-radius:7px;display:flex;justify-content:space-between;align-items:center;gap:15px}.export-tile h3{font-size:12px;margin:0 0 5px}.export-tile p{font-size:10px;color:#95a088;margin:0}.empty{padding:45px;text-align:center;color:#8e9b83;font-size:12px}.loading{padding:50px;text-align:center;color:#91a385}.error-banner{background:#f9e8e3;border:1px solid #e2bcb2;padding:14px;margin-bottom:15px;border-radius:6px;color:#994b3a}footer{display:flex;justify-content:space-between;color:#adb5a4;font-size:9px;padding:20px 0;letter-spacing:.3px}dialog{border:1px solid #dbe4d3;border-radius:12px;width:850px;max-width:94vw;padding:26px;color:var(--ink);box-shadow:0 20px 90px #1f382c33}dialog::backdrop{background:#24362b55;backdrop-filter:blur(3px)}.dialog-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.dialog-title h2{font-size:18px;margin:0}.dialog-title button{border:0;background:none;font-size:24px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}.detail-grid label{font-size:11px;color:#829077}.detail-grid input,.detail-grid select{display:block;width:100%;margin-top:5px}.full{grid-column:1/-1}pre{overflow:auto;background:#f3f6ee;padding:15px;border-radius:5px;font:11px/1.7 Consolas,monospace;max-height:340px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:#244b3c;color:white;padding:12px 24px;border-radius:7px;box-shadow:0 5px 20px #0002;font-size:12px;z-index:10}.batch-name{max-width:340px;overflow-wrap:anywhere}.section-note{color:#829074;font-size:12px;margin:0 0 18px}.reconciliation-setup select{max-width:43%;font-size:11px}.upload-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:20px;border:1px dashed #b4c7a2;border-radius:8px;background:#f7faf3}.upload-row input{max-width:100%;font-size:12px}.stat-value.compact{font-size:25px}button:focus-visible,a:focus-visible{outline:3px solid #8ba37d;outline-offset:3px}@media(min-width:1500px){.stats .stat-value{font-size:35px}}@media(max-width:1100px){.sidebar{width:200px;padding:28px 15px}.main-shell{margin-left:200px}main{padding:26px 25px}.topbar{padding:0 25px}.stats{grid-template-columns:repeat(2,1fr)}.columns{grid-template-columns:1fr}.reconcile-body{grid-template-columns:1fr 70px 1fr;gap:12px}.hero-mark{font-size:55px}.export-grid{grid-template-columns:1fr}}@media(max-width:720px){.sidebar{position:static;width:100%;padding:15px;border-bottom:1px solid var(--line)}.brand{font-size:14px}.brand small,.workspace-label,.sidebar-bottom{display:none}nav{display:flex;gap:3px;margin-top:16px;overflow:auto}.nav-item{white-space:nowrap;padding:8px;font-size:11px;gap:5px}.nav-icon,.nav-tag{display:none}.main-shell{margin:0}.topbar{height:48px;padding:0 18px}.top-right{gap:10px}#clock{display:none}main{padding:23px 17px}.page-heading{align-items:center}h1{font-size:24px}.button{font-size:12px;padding:8px 10px}.year-strip{display:block}.year-strip #years{justify-content:space-between}.year-strip button{padding:5px 10px}.year-strip>span{display:block;margin-top:10px}.hero{padding:20px}.hero h2{font-size:20px}.hero-mark{display:none}.stats{gap:10px}.stat{padding:15px}.stat-value{font-size:24px}.card{padding:17px}.reconcile-body{grid-template-columns:1fr}.compare-center{display:none}.reconcile-actions{padding:12px}.detail-grid{grid-template-columns:1fr}.filters input{min-width:160px}footer{gap:15px}.reconciliation-setup select{max-width:100%;width:100%}.source-note{font-size:10px}}

/* Round 2: compact spreadsheet workspace; reuse navigation and forms. */
:root{--paper:#f5f5f5;--line:#d7d7d7;--ink:#222;--muted:#626262}body{font-size:13px}.sidebar{width:190px;padding:18px 12px;background:#f0f0f0}.main-shell{margin-left:190px}main{max-width:none;padding:16px 20px}.topbar{height:42px;padding:0 20px}.page-heading{margin-bottom:12px}h1{font-size:21px;letter-spacing:0}.eyebrow{letter-spacing:0}.year-strip{margin-bottom:12px;padding-bottom:10px}.card{padding:12px;border-radius:2px;margin-bottom:12px}.card-head{margin-bottom:9px}.filters{margin-bottom:10px}th{padding:7px 8px;font-size:12px;background:#eee;color:#333;position:sticky;top:0;z-index:1}td{padding:6px 8px;border:1px solid #ddd}.small{font-size:11px;color:#666}.project-name{min-width:200px;font-weight:400;line-height:1.5}button.primary,button.secondary,input,select{padding:5px 8px;border-radius:2px}.source-note{padding:6px 8px;margin:8px 0;color:#555}.export-tile{padding:10px;border-radius:2px}.export-actions{display:flex;flex-wrap:wrap;gap:6px}.hero,.stats{display:none}dialog::backdrop{backdrop-filter:none}.table-wrap{max-height:65vh}table{font-size:12px}.nav-item.active{box-shadow:none}.seal{border-radius:2px}.reconcile-body{padding:12px;gap:12px}.reconcile-card{border-radius:2px}.reconcile-actions{padding:8px}.flag{border-radius:2px}a,button{transition:none;animation:none}@media(max-width:720px){.sidebar{width:100%;padding:10px}.main-shell{margin-left:0}main{padding:12px}.table-wrap{max-height:65vh}.export-actions{flex-direction:column}.year-strip button{padding:4px 8px}}
button.primary{background:var(--green);color:#fff;border-color:var(--green)}

.payment-terms{margin:24px 0}.payment-terms h3{margin-bottom:8px}.payment-source{margin:16px 0}.payment-terms table{min-width:780px;table-layout:fixed}.payment-terms th:nth-child(1){width:95px}.payment-terms th:nth-child(2){width:80px}.payment-terms th:nth-child(3){width:110px}.payment-terms th:nth-child(5){width:95px}.payment-terms .payment-condition{white-space:pre-wrap;word-break:break-word;line-height:1.7}

.payment-warning{color:var(--amber);font-weight:500}

.payment-node{padding:14px 0;border-top:1px solid var(--line)}.payment-node-head{display:flex;gap:10px 24px;align-items:baseline;flex-wrap:wrap}.payment-node-head span{font-size:12px;color:var(--muted)}.payment-node .payment-condition{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;margin:9px 0}.payment-node .small{margin:5px 0}

tfoot th,tfoot td{border-top:2px solid var(--line);background:#f2f5ee;font-weight:600;padding:12px;text-align:left}tfoot td.money{text-align:right}

.receipt-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.receipt-summary-grid>div{border:1px solid var(--line);border-radius:7px;padding:12px}.receipt-summary-grid span,.receipt-summary-grid small{display:block;font-size:12px;color:var(--muted)}.receipt-summary-grid strong{display:block;font-size:21px;margin:5px 0;overflow-wrap:anywhere}.contract-receipt-summary{margin:18px 0 24px}.calculation-details,.contract-edit,.audit-history,.source-snapshots{margin:18px 0}summary{cursor:pointer;color:var(--green)}@media(max-width:480px){.receipt-summary-grid{grid-template-columns:1fr}}
