:root{--bg:#f2f7fb;--paper:#fff;--ink:#203246;--muted:#718096;--line:#dbe7f0;--brand:#3b82c4;--brand-dark:#2569a7;--brand-soft:#e8f3fc;--green:#3d7a68;--sidebar:#153450;--shadow:0 8px 30px rgba(31,82,124,.08)}
*{box-sizing:border-box}html{min-width:1080px;background:var(--bg)}body{margin:0;color:var(--ink);background:var(--bg);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{color:inherit}
.app-shell{min-height:100vh;display:grid;grid-template-columns:232px minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:232px;display:flex;flex-direction:column;color:#e8f2fa;background:var(--sidebar);border-right:1px solid #274b69;z-index:10}.brand{height:86px;display:flex;align-items:center;gap:12px;padding:0 18px;color:inherit;text-decoration:none;border-bottom:1px solid #274b69}.brand-logo{width:43px;height:43px;object-fit:cover;border-radius:10px;border:1px solid rgba(255,255,255,.25)}.brand strong,.brand small{display:block}.brand strong{font-family:Georgia,"Songti SC",serif;font-size:18px;letter-spacing:2px}.brand small{margin-top:3px;color:#8fb0c9;font-size:10px;letter-spacing:1px}
.primary-nav{padding:22px 12px 12px}.nav-item{width:100%;height:44px;display:flex;align-items:center;gap:12px;padding:0 13px;margin-bottom:5px;color:#aeb1aa;background:transparent;border:0;border-radius:7px;cursor:pointer;text-align:left;font-size:14px}.nav-item:hover{color:#f4f3ee;background:#292e2a}.nav-item.active{color:#fff;background:#353a35;box-shadow:inset 3px 0 var(--brand)}.nav-icon{width:22px;color:#bfc2ba;font-size:19px;text-align:center}.nav-count{margin-left:auto;min-width:22px;padding:2px 6px;color:#d6d6cf;background:#494e49;border-radius:10px;font-size:11px;text-align:center}
.sidebar-section{margin-top:14px;padding:0 12px;min-height:0;overflow:auto}.section-label{display:flex;align-items:center;justify-content:space-between;padding:0 12px 10px;color:#777d75;font-size:11px;letter-spacing:1.5px}.section-label button{color:#969b94;background:none;border:0;cursor:pointer;font-size:19px}.contract-list{display:grid;gap:4px}.contract-link{width:100%;display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:9px;padding:9px 10px;color:#aeb1aa;background:none;border:0;border-radius:7px;cursor:pointer;text-align:left}.contract-link:hover,.contract-link.active{color:#f4f3ee;background:#292e2a}.client-avatar{width:29px;height:29px;display:grid;place-items:center;background:#3b413b;border-radius:50%;font-size:12px}.contract-link.active .client-avatar{color:#f5cbc1;background:#5c3930}.contract-link div{min-width:0}.contract-link strong,.contract-link small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contract-link strong{font-size:13px;font-weight:500}.contract-link small{margin-top:2px;color:#777d75;font-size:10px}.contract-link i{width:7px;height:7px;background:#879087;border-radius:50%}.contract-link i.building{background:#d28965}.sidebar-footer{margin-top:auto;height:73px;display:flex;align-items:center;gap:10px;padding:0 18px;border-top:1px solid #343934}.avatar{width:34px;height:34px;display:grid;place-items:center;background:#eee8db;color:#403d36;border-radius:50%;font-family:Georgia,serif}.sidebar-footer strong,.sidebar-footer small{display:block}.sidebar-footer strong{font-size:12px}.sidebar-footer small{margin-top:3px;color:#7f857d;font-size:10px}.more-button{margin-left:auto;color:#8a8e87;background:none;border:0}
.main-content{grid-column:2;min-width:0}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:rgba(255,254,250,.9);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.breadcrumbs{display:flex;gap:9px;align-items:center;font-size:13px}.breadcrumbs span,.breadcrumbs b{color:#a09d96;font-weight:400}.topbar-actions,.heading-actions,.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:9px}.search-box{width:230px;height:36px;display:flex;align-items:center;gap:7px;padding:0 9px;color:#8f8d86;background:#f6f4ef;border:1px solid var(--line);border-radius:7px}.search-box input{min-width:0;flex:1;background:none;border:0;outline:0;font-size:12px}kbd{padding:2px 5px;color:#99968f;background:#fff;border:1px solid #ddd9d0;border-radius:4px;font-family:inherit;font-size:9px}.icon-button{position:relative;width:36px;height:36px;background:#fff;border:1px solid var(--line);border-radius:7px}.dot{position:absolute;top:7px;right:7px;width:5px;height:5px;background:var(--brand);border-radius:50%}
.button{height:38px;padding:0 15px;border:1px solid transparent;border-radius:7px;cursor:pointer;font-size:12px;font-weight:600;transition:.18s ease}.button:hover{transform:translateY(-1px)}.button.primary{color:#fff;background:var(--brand);box-shadow:0 3px 10px rgba(197,82,57,.17)}.button.primary:hover{background:var(--brand-dark)}.button.secondary{background:#fff;border-color:#dcd8ce}.button.ghost{background:transparent;border-color:var(--line)}.button.compact{height:34px;padding:0 12px}
.page{max-width:1500px;margin:0 auto;padding:30px 34px 55px}.contract-heading{display:flex;justify-content:space-between;gap:30px}.eyebrow{display:flex;align-items:center;gap:9px;color:#99968f;font-size:11px;letter-spacing:.5px}.status-pill{padding:4px 8px;color:var(--green);background:#eaf0e9;border-radius:4px;font-weight:700}.title-line{display:flex;align-items:center;gap:10px;margin-top:8px}h1{margin:0;font-family:Georgia,"Songti SC",serif;font-size:28px;font-weight:600}.star-button{padding:0;color:#c6c2b8;background:none;border:0;cursor:pointer;font-size:18px}.star-button.active{color:#d5a543}.subtitle{margin:8px 0 0;color:#8c8982;font-size:12px}.heading-actions{align-self:center}.tabs{display:flex;gap:28px;margin-top:27px;border-bottom:1px solid var(--line)}.tab{position:relative;padding:0 2px 13px;color:#89867e;background:none;border:0;cursor:pointer;font-size:13px}.tab.active{color:var(--ink);font-weight:700}.tab.active:after{content:"";position:absolute;height:2px;inset:auto 0 -1px;background:var(--brand)}.tab span{display:inline-grid;min-width:18px;height:18px;margin-left:4px;place-items:center;background:#e8e5de;border-radius:9px;font-size:9px}.tab-panel{display:none}.tab-panel.active{display:block}
.summary-grid{display:grid;grid-template-columns:1.05fr .83fr .85fr 1.15fr;gap:11px;margin:20px 0 14px}.summary-card{min-height:104px;display:flex;align-items:center;gap:13px;padding:20px;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:0 4px 16px rgba(54,44,33,.025)}.summary-card.total-card{border-top:2px solid var(--brand)}.summary-icon{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;color:var(--green);background:#edf1ec;border-radius:8px;font-family:Georgia,serif}.summary-icon.red{color:var(--brand);background:var(--brand-soft)}.summary-icon.amber{color:#b27a34;background:#f6efe4}.summary-card span,.summary-card strong,.summary-card small{display:block}.summary-card span{color:#77746d;font-size:11px}.summary-card strong{margin-top:5px;font-family:Georgia,"Songti SC",serif;font-size:22px;font-weight:600}.summary-card strong em{color:#6e6b64;font-family:inherit;font-size:11px;font-style:normal}.summary-card small{margin-top:6px;color:#9b9890;font-size:9px}.summary-card small i{padding:1px 4px;color:#b66d5d;background:#f7ebe6;border-radius:3px;font-style:normal}.progress-card{display:block;padding-top:18px}.progress-top{display:flex;justify-content:space-between;align-items:center}.progress-top strong{margin:0;color:var(--brand);font-size:17px}.progress-track{height:5px;margin-top:15px;overflow:hidden;background:#ece9e1;border-radius:3px}.progress-fill{width:0;height:100%;background:var(--brand);border-radius:3px;transition:width .3s}
.sheet-card,.info-card{overflow:hidden;background:var(--paper);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.sheet-toolbar{min-height:59px;display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line)}.divider{width:1px;height:22px;background:var(--line);margin:0 3px}.view-switch{display:flex;overflow:hidden;border:1px solid var(--line);border-radius:5px}.view-switch button{width:31px;height:30px;color:#96938c;background:#fff;border:0}.view-switch button.active{color:var(--ink);background:#eeeae3}.table-search{width:158px;height:33px;display:flex;align-items:center;gap:6px;padding:0 9px;color:#99968f;background:#faf9f6;border:1px solid var(--line);border-radius:6px}.table-search input{width:100%;background:none;border:0;outline:0;font-size:11px}.table-wrap{min-height:380px;overflow-x:auto}.materials-table{width:100%;min-width:1000px;border-collapse:collapse;table-layout:fixed}.drag-col{width:34px}.name-col{width:13%}.qty-col{width:7%}.unit-col{width:6%}.price-col{width:8%}.amount-col{width:9%}.desc-col{width:auto}.action-col{width:58px}th{height:39px;padding:0 8px;color:#929087;background:#f8f6f1;border-bottom:1px solid var(--line);text-align:left;font-size:10px;font-weight:500;letter-spacing:.4px}td{padding:10px 8px;border-bottom:1px solid #ece8e0;color:#494741;font-size:11px;vertical-align:middle}tr.item-row:hover td{background:#fcfaf6}.category-row td{height:40px;padding-top:0;padding-bottom:0;color:#33332f;background:#f1eee7;font-weight:700}.category-toggle{color:#827f77;background:none;border:0}.category-name{font-family:Georgia,"Songti SC",serif;font-size:14px}.category-summary{float:right;color:#96928a;font-family:Inter,sans-serif;font-size:10px;font-weight:400}.drag-handle{color:#c3c0b8;cursor:grab;font-size:13px}.item-name{display:flex;align-items:center;gap:8px}.item-index{width:20px;height:20px;display:grid;flex:0 0 20px;place-items:center;color:#807d75;background:#f1eee8;border-radius:4px;font-size:9px}.cell-input{width:100%;padding:6px 5px;color:inherit;background:transparent;border:1px solid transparent;border-radius:4px;outline:0;font-size:11px}.cell-input:hover{border-color:#e5e1d8}.cell-input:focus{background:#fff;border-color:#ce8c7d;box-shadow:0 0 0 2px #f7e8e2}.description-input{color:#77736c}.amount-cell{color:#292824;font-weight:700;font-variant-numeric:tabular-nums}.row-delete{opacity:0;color:#a59f96;background:none;border:0;cursor:pointer;font-size:16px}tr:hover .row-delete{opacity:1}.confirm-check{appearance:none;width:14px;height:14px;margin:0;border:1px solid #bcb8ae;border-radius:3px;cursor:pointer;vertical-align:middle}.confirm-check:checked{background:var(--green);border-color:var(--green);box-shadow:inset 0 0 0 3px #fff}.sheet-footer{height:57px;display:flex;justify-content:space-between;align-items:center;padding:0 20px;color:#96938c;background:#faf8f4;font-size:10px}.sheet-footer div{display:flex;align-items:center;gap:20px}.sheet-footer div span{color:#615e57;font-size:12px}.sheet-footer strong{color:var(--brand);font-family:Georgia,serif;font-size:20px}.empty-state{padding:70px;display:grid;justify-items:center;color:#9b9890}.empty-state div{font-size:30px}.empty-state strong{margin-top:10px;color:#55534d}.empty-state span{margin-top:5px;font-size:11px}
.info-card{margin-top:20px;padding:26px}.panel-heading{display:flex;justify-content:space-between;padding-bottom:20px;border-bottom:1px solid var(--line)}.panel-heading h2{margin:0;font-family:Georgia,"Songti SC",serif;font-size:20px}.panel-heading p{margin:6px 0 0;color:var(--muted);font-size:11px}.panel-heading>span{color:#9c9991;font-size:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}.form-grid label,.modal label{display:grid;gap:7px;color:#69665f;font-size:11px}.form-grid label.wide{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea,.modal input,.modal select{width:100%;padding:10px 11px;color:var(--ink);background:#fbfaf7;border:1px solid var(--line);border-radius:6px;outline:0;font-size:12px}.form-grid textarea{resize:vertical;line-height:1.6}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.modal input:focus,.modal select:focus{border-color:#ce8c7d;box-shadow:0 0 0 3px var(--brand-soft)}.placeholder-card{display:grid;min-height:350px;place-items:center;align-content:center;text-align:center}.placeholder-card h2{margin:12px 0 0;font-family:Georgia,"Songti SC",serif}.placeholder-card p{color:var(--muted);font-size:12px}.placeholder-icon{width:50px;height:50px;display:grid;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:50%;font-family:Georgia,serif;font-size:22px}
.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:rgba(24,27,24,.55);backdrop-filter:blur(4px);z-index:100}.modal-backdrop[hidden]{display:none}.modal{position:relative;width:520px;padding:30px;background:#fffefa;border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.24)}.modal-close{position:absolute;top:14px;right:16px;width:30px;height:30px;color:#8d8a82;background:none;border:0;cursor:pointer;font-size:22px}.modal-icon{width:42px;height:42px;display:grid;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:9px;font-size:20px}.modal h2{margin:16px 0 5px;font-family:Georgia,"Songti SC",serif}.modal>p{margin:0 0 22px;color:var(--muted);font-size:12px}.modal form{display:grid;gap:16px}.modal-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:7px}.toast{position:fixed;right:28px;bottom:28px;display:flex;align-items:center;gap:12px;min-width:240px;padding:13px 16px;color:#f7f6f1;background:#292e2a;border-radius:8px;box-shadow:0 12px 35px rgba(0,0,0,.2);opacity:0;transform:translateY(15px);pointer-events:none;transition:.25s;z-index:200}.toast.visible{opacity:1;transform:translateY(0)}.toast>span{width:25px;height:25px;display:grid;place-items:center;color:#fff;background:var(--green);border-radius:50%}.toast strong,.toast small{display:block}.toast strong{font-size:12px}.toast small{margin-top:3px;color:#9fa49d;font-size:10px}
@media(max-width:1250px){.summary-grid{grid-template-columns:1fr 1fr}.topbar,.page{padding-left:24px;padding-right:24px}}@media print{html{min-width:0}body{background:#fff}.sidebar,.topbar,.heading-actions,.tabs,.sheet-toolbar,.row-delete,.drag-handle,.star-button{display:none!important}.app-shell{display:block}.main-content{display:block}.page{max-width:none;padding:20px}.sheet-card,.summary-card{box-shadow:none}.summary-grid{grid-template-columns:repeat(4,1fr)}.materials-table{min-width:0}.table-wrap{overflow:visible}.cell-input{padding:2px;border:0}@page{size:A4 landscape;margin:12mm}}

/* 物料库与品牌主题 */
[hidden]{display:none!important}.nav-item:hover{background:#1e4260}.nav-item.active{background:#2a5272;box-shadow:inset 3px 0 #76baf0}.nav-count{background:#356383}.contract-link:hover,.contract-link.active{background:#1e4260}.contract-link.active .client-avatar{color:#d9efff;background:#3273a6}.contract-link i.building{background:#6eb6e8}.sidebar-footer{border-top-color:#274b69}.topbar{background:rgba(255,255,255,.9)}.button.primary{box-shadow:0 3px 10px rgba(59,130,196,.2)}.status-pill{color:#236992;background:#e1f1fb}.summary-icon.red{color:var(--brand);background:var(--brand-soft)}.summary-card.total-card{border-top-color:var(--brand)}.summary-card small i{color:#3477aa;background:#e5f2fb}.category-row td{background:#edf5fa}.cell-input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.modal input:focus,.modal select:focus{border-color:#6faee0;box-shadow:0 0 0 3px var(--brand-soft)}
.library-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px}.library-heading h1{margin-top:7px}.library-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.library-stats article{padding:18px 20px;background:var(--paper);border:1px solid var(--line);border-radius:8px}.library-stats span,.library-stats strong{display:block}.library-stats span{color:var(--muted);font-size:11px}.library-stats strong{margin-top:7px;color:#285f8d;font-family:Georgia,serif;font-size:25px}.filter-select{height:34px;min-width:130px;padding:0 28px 0 10px;color:#526477;background:#f8fbfd;border:1px solid var(--line);border-radius:6px;font-size:11px}.library-search{width:260px;height:34px;display:flex;align-items:center;gap:7px;padding:0 10px;color:#8aa0b2;background:#f8fbfd;border:1px solid var(--line);border-radius:6px}.library-search input{width:100%;background:none;border:0;outline:0;font-size:11px}.library-table{min-width:1200px}.library-table th:nth-child(1){width:13%}.library-table th:nth-child(2){width:8%}.library-table th:nth-child(3){width:9%}.library-table th:nth-child(4){width:5%}.library-table th:nth-child(5){width:8%}.library-table th:nth-child(6){width:13%}.library-table th:nth-child(7){width:auto}.library-table th:nth-child(8){width:6%}.library-table th:nth-child(9){width:66px}.library-name{font-weight:700;color:#2c4155}.library-description{max-width:360px;overflow:hidden;color:#6c7d8d;white-space:nowrap;text-overflow:ellipsis}.tag{display:inline-block;padding:3px 7px;color:#3574a4;background:#e8f3fb;border-radius:4px;font-size:9px}.tag.muted{color:#7f8b96;background:#edf1f4}.table-actions{display:flex;gap:4px}.table-action{width:26px;height:26px;color:#6c8193;background:#f5f9fc;border:1px solid var(--line);border-radius:5px;cursor:pointer}.table-action.danger:hover{color:#b84b4b;background:#fdf0f0}.material-modal{width:650px}.material-modal textarea{width:100%;padding:10px 11px;color:var(--ink);background:#fbfdff;border:1px solid var(--line);border-radius:6px;resize:vertical;outline:0}.switch-label{display:flex!important;grid-template-columns:18px 1fr;align-items:center}.switch-label input{width:16px!important}.picker-modal{width:620px}.picker-section{display:grid;gap:7px;margin-bottom:12px;color:#607286;font-size:11px}.picker-section select{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:#fff}.picker-search{width:100%;margin-bottom:12px}.picker-list{max-height:430px;overflow:auto;border:1px solid var(--line);border-radius:7px}.picker-item{width:100%;display:grid;grid-template-columns:1fr 90px 30px;align-items:center;gap:12px;padding:12px 14px;background:#fff;border:0;border-bottom:1px solid var(--line);cursor:pointer;text-align:left}.picker-item:last-child{border-bottom:0}.picker-item:hover{background:#f1f8fd}.picker-item strong,.picker-item small{display:block}.picker-item small{margin-top:4px;color:var(--muted);font-size:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.picker-price{color:#276c9f;font-weight:700;font-size:12px}.picker-add{width:25px;height:25px;display:grid;place-items:center;color:#fff;background:var(--brand);border-radius:50%}.loading-state{padding:70px;text-align:center;color:var(--muted)}

/* Claude 风格：暖米白底色、克制的陶土色强调、低对比度表格 */
:root{--bg:#f7f6f2;--paper:#fffefa;--ink:#2d2b28;--muted:#77736c;--line:#e6e2db;--brand:#d97757;--brand-dark:#c76445;--brand-soft:#f7ebe6;--green:#58705e;--sidebar:#f0eee9;--shadow:0 8px 28px rgba(63,54,45,.055)}
body{background:var(--bg);color:var(--ink)}.sidebar{color:#403d39;background:var(--sidebar);border-right-color:#dedad2}.brand{border-bottom-color:#dedad2}.brand-logo{border-color:#d7d2ca;box-shadow:0 2px 8px rgba(45,42,38,.08)}.brand strong{color:#2f2c28}.brand small{color:#8a857d}.nav-item{color:#706c65}.nav-item .nav-icon{color:#8b867e}.nav-item:hover{color:#35322e;background:#e8e5df}.nav-item.active{color:#2f2c28;background:#e4e0d9;box-shadow:inset 3px 0 var(--brand)}.nav-count{color:#746e66;background:#dad6ce}.sidebar-section{scrollbar-color:#ccc6bd transparent}.section-label{color:#918c84}.section-label button{color:#8e8981}.contract-link{color:#65615b}.contract-link:hover,.contract-link.active{color:#302e2a;background:#e7e3dc}.client-avatar{color:#716c65;background:#dedad2}.contract-link.active .client-avatar{color:#9e4d36;background:#f4ddd5}.contract-link small{color:#928d85}.contract-link i{background:#aaa69e}.contract-link i.building{background:#d88968}.sidebar-footer{border-top-color:#dedad2}.sidebar-footer strong{color:#3e3a35}.sidebar-footer small,.more-button{color:#8c877f}.avatar{color:#fff;background:#5d5953}
.topbar{background:rgba(255,254,250,.88);border-bottom-color:var(--line)}.search-box,.table-search,.library-search{color:#918b82;background:#f5f3ee;border-color:#e2ded6}.button.primary{background:var(--brand);box-shadow:0 3px 10px rgba(182,94,67,.16)}.button.primary:hover{background:var(--brand-dark)}.button.secondary{background:#fffefa;border-color:#ddd8cf}.button.ghost{border-color:#dfdbd3}.status-pill{color:#536a59;background:#e7ede6}.tabs{border-bottom-color:var(--line)}.tab.active:after{background:var(--brand)}
.summary-card,.sheet-card,.info-card,.library-stats article{background:var(--paper);border-color:var(--line)}.summary-card.total-card{border-top-color:var(--brand)}.summary-icon.red{color:var(--brand);background:var(--brand-soft)}.summary-icon{color:#667565;background:#edf0e9}.summary-icon.amber{color:#9b733d;background:#f5eee3}.summary-card small i{color:#a85a42;background:#f8ebe6}.progress-top strong,.sheet-footer strong{color:var(--brand)}.progress-fill{background:var(--brand)}.progress-track{background:#ebe7df}.sheet-toolbar,.panel-heading{border-color:var(--line)}th{color:#817d76;background:#f5f3ee;border-color:var(--line)}td{color:#4b4843;border-color:#ebe7e0}tr.item-row:hover td{background:#faf8f4}.category-row td{color:#393632;background:#eeeae3}.item-index{color:#756f68;background:#ede9e2}.cell-input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.modal input:focus,.modal select:focus{border-color:#d4937d;box-shadow:0 0 0 3px var(--brand-soft)}.sheet-footer{color:#908b83;background:#f8f6f1}.confirm-check:checked{background:var(--green);border-color:var(--green)}
.library-stats strong{color:#4a4640}.filter-select{color:#625e57;background:#f7f5f0;border-color:var(--line)}.library-name{color:#393632}.library-description{color:#77726b}.tag{color:#8e503e;background:#f6e6e0}.tag.muted{color:#7d7871;background:#eeece7}.table-action{color:#716c65;background:#f7f5f0;border-color:var(--line)}.material-modal textarea,.form-grid input,.form-grid select,.form-grid textarea,.modal input,.modal select{background:#fbfaf7}.picker-section{color:#6e6962}.picker-item{background:#fffefa;border-color:var(--line)}.picker-item:hover{background:#f8f3ed}.picker-price{color:#a7563e}.modal{background:#fffefa}.modal-icon,.placeholder-icon{color:var(--brand);background:var(--brand-soft)}.toast{background:#34312d}

/* 统一系统标准字体，避免中英文混排时出现字形和基线跳动 */
html,body,button,input,select,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif}
.brand strong,h1,.category-name,.summary-card strong,.sheet-footer strong,.library-stats strong,.panel-heading h2,.placeholder-card h2,.modal h2,.summary-icon,.placeholder-icon{font-family:inherit}
.brand strong{font-weight:650;letter-spacing:.5px}.brand small{letter-spacing:.5px}h1{font-weight:650;letter-spacing:-.2px}.category-name{font-weight:650}.summary-card strong,.sheet-footer strong,.library-stats strong{font-weight:650;font-variant-numeric:tabular-nums}.amount-cell,.picker-price{font-variant-numeric:tabular-nums}

/* 修正物料选择弹窗：搜索框不继承普通表单尺寸，长说明不能挤走价格列 */
.picker-modal{display:flex;max-height:calc(100vh - 56px);flex-direction:column;overflow:hidden}.picker-section{flex:0 0 auto}.modal label.picker-search{display:flex;align-items:center;gap:8px;width:100%;height:40px;min-height:40px;flex:0 0 40px;margin:0 0 12px;padding:0 12px}.modal label.picker-search>span{width:16px;flex:0 0 16px;display:grid;place-items:center;color:#918b82;font-size:15px;line-height:1}.modal label.picker-search input{height:38px;min-width:0;flex:1 1 auto;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none;outline:0;line-height:normal}.modal label.picker-search input:focus{border:0;box-shadow:none}.picker-list{min-height:0;max-height:none;flex:1 1 auto;overflow-x:hidden;overflow-y:auto}.picker-item{grid-template-columns:minmax(0,1fr) 120px 30px;min-height:66px}.picker-item>span:first-child{min-width:0;overflow:hidden}.picker-item strong,.picker-item small{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.picker-price{white-space:nowrap;text-align:right}.picker-add{flex:none}.picker-modal>h2,.picker-modal>p,.picker-modal>.modal-icon{flex:0 0 auto}

/* 选择物料弹窗固定尺寸，只有列表区域滚动 */
.picker-modal{width:620px;height:760px;max-height:calc(100vh - 56px)}.picker-list{overscroll-behavior:contain;scrollbar-gutter:stable}.picker-list>.loading-state{height:100%;display:grid;place-items:center;padding:0}.picker-list::-webkit-scrollbar{width:8px}.picker-list::-webkit-scrollbar-track{background:transparent}.picker-list::-webkit-scrollbar-thumb{background:#d4cfc7;border:2px solid #fffefa;border-radius:8px}.picker-list::-webkit-scrollbar-thumb:hover{background:#bdb7ae}

/* 舒适优先的清晰文字：常规字重、适度对比度、略大的正文 */
:root{--ink:#2c2925;--muted:#706b64}
body,button,input,select,textarea{font-weight:400}body{color:var(--ink);line-height:1.45}input::placeholder,textarea::placeholder{color:#918c84;opacity:1}.brand strong,h1,.panel-heading h2,.placeholder-card h2,.modal h2{color:#292622;font-weight:600}.nav-item,.contract-link,.breadcrumbs,.tab,.subtitle,.eyebrow,.section-label{font-weight:400}.nav-item.active,.contract-link strong,.tab.active{font-weight:600}.sidebar-footer strong,.library-name,.category-name,.item-name,.picker-item strong{color:#36322e;font-weight:600}.summary-card span,.summary-card small,.panel-heading p,.picker-item small,.library-description,.description-input,.sheet-footer,.form-grid label,.modal label{color:#746f68;font-weight:400}.summary-card strong,.sheet-footer strong,.library-stats strong,.amount-cell,.picker-price{font-weight:600}th{color:#746f68;font-size:11px;font-weight:500}td{color:#49453f;font-size:12px;font-weight:400}.cell-input{color:#45413c;font-size:12px;font-weight:400;line-height:1.45}.description-input,.picker-item small,.library-description{line-height:1.55}.summary-card span{font-size:12px}.summary-card small{font-size:10px}.status-pill,.tag{font-weight:500}

/* 经营总览 */
.dashboard-stats{display:grid;grid-template-columns:1.35fr repeat(3,1fr);gap:12px;margin:0 0 14px}.dashboard-stat{min-height:116px;display:flex;align-items:center;gap:14px;padding:20px;background:var(--paper);border:1px solid var(--line);border-radius:9px;box-shadow:0 4px 16px rgba(63,54,45,.03)}.dashboard-stat.featured{border-top:2px solid var(--brand)}.stat-icon{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;color:var(--brand);background:var(--brand-soft);border-radius:9px;font-size:18px}.stat-icon.neutral{color:#6f6961;background:#eeece7}.stat-icon.green{color:#58705e;background:#e8eee7}.dashboard-stat span,.dashboard-stat strong,.dashboard-stat small{display:block}.dashboard-stat span{color:#736e66;font-size:12px}.dashboard-stat strong{margin-top:4px;color:#292622;font-size:25px;font-weight:600;font-variant-numeric:tabular-nums}.dashboard-stat small{margin-top:5px;color:#928d85;font-size:10px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr);gap:14px}.dashboard-card{min-height:390px;padding:0 22px 18px;background:var(--paper);border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow)}.dashboard-card-head{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.dashboard-card-head h2{margin:0;color:#312e2a;font-size:16px;font-weight:600}.dashboard-card-head p{margin:4px 0 0;color:#8a857e;font-size:10px}.text-button{color:#a4563e;background:none;border:0;cursor:pointer;font-size:11px}.dashboard-contract-list{display:grid}.dashboard-contract-row{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) 100px 120px 20px;align-items:center;gap:12px;min-height:70px;padding:10px 0;background:none;border:0;border-bottom:1px solid #ece8e1;cursor:pointer;text-align:left}.dashboard-contract-row:last-child{border-bottom:0}.dashboard-contract-row:hover{background:#faf8f4}.dashboard-client-icon{width:34px;height:34px;display:grid;place-items:center;color:#9e5038;background:#f5e5df;border-radius:50%;font-size:12px}.dashboard-contract-row strong,.dashboard-contract-row small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dashboard-contract-row strong{color:#393631;font-size:12px;font-weight:600}.dashboard-contract-row small{margin-top:3px;color:#89847c;font-size:10px}.dashboard-row-status{justify-self:start;padding:4px 7px;color:#566a59;background:#e9eee8;border-radius:4px;font-size:9px}.dashboard-row-amount{color:#49453f;font-size:12px;font-weight:600;text-align:right}.dashboard-arrow{color:#aaa49c}.distribution-list{display:grid;gap:17px;padding-top:22px}.distribution-item{display:grid;gap:7px}.distribution-label{display:flex;justify-content:space-between;color:#625d56;font-size:11px}.distribution-label strong{color:#393631;font-weight:500}.distribution-track{height:7px;overflow:hidden;background:#eeeae3;border-radius:5px}.distribution-fill{height:100%;background:#d48669;border-radius:5px}.dashboard-empty{padding:70px 15px;color:#8c877f;text-align:center;font-size:12px}@media(max-width:1250px){.dashboard-stats{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}}

/* 收款记录 */
.payment-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}.payment-summary article{min-height:96px;padding:18px 20px;background:var(--paper);border:1px solid var(--line);border-radius:8px}.payment-summary span,.payment-summary strong{display:block}.payment-summary span{color:#777169;font-size:11px}.payment-summary strong{margin-top:7px;color:#302d29;font-size:21px;font-weight:600;font-variant-numeric:tabular-nums}.payment-summary article.paid strong{color:#55705d}.mini-progress{height:4px;margin-top:10px;overflow:hidden;background:#ebe7df;border-radius:3px}.mini-progress i{display:block;width:0;height:100%;background:#6f8b73;border-radius:3px}.records-card,.photos-card{padding:0 24px 24px}.records-head{min-height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.records-head h2{margin:0;font-size:17px;font-weight:600}.records-head p{margin:5px 0 0;color:#817c74;font-size:11px}.payment-list{display:grid}.payment-row{display:grid;grid-template-columns:42px minmax(0,1fr) 120px 110px 34px;align-items:center;gap:14px;min-height:72px;border-bottom:1px solid #ece8e1}.payment-row:last-child{border-bottom:0}.payment-method-icon{width:36px;height:36px;display:grid;place-items:center;color:#a65a42;background:#f7e9e4;border-radius:8px}.payment-row strong,.payment-row small{display:block}.payment-row strong{font-size:12px;font-weight:600}.payment-row small{margin-top:4px;color:#88827a;font-size:10px}.payment-date{color:#68635c;font-size:11px}.payment-amount{color:#4c684f;font-size:14px;font-weight:600;text-align:right}.empty-records{padding:60px 20px;color:#8b867e;text-align:center}.payment-modal textarea{width:100%;padding:10px 11px;background:#fbfaf7;border:1px solid var(--line);border-radius:6px;resize:vertical;outline:0}

/* 现场实拍 */
.photo-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding-top:20px}.photo-card{position:relative;overflow:hidden;background:#f4f1eb;border:1px solid var(--line);border-radius:8px}.photo-open{width:100%;display:block;padding:0;background:none;border:0;cursor:zoom-in;text-align:left}.photo-card img{width:100%;height:190px;display:block;object-fit:cover}.photo-meta{padding:11px 12px}.photo-meta strong,.photo-meta small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.photo-meta strong{font-size:11px;font-weight:500}.photo-meta small{margin-top:4px;color:#89837b;font-size:9px}.photo-delete{position:absolute;top:8px;right:8px;width:28px;height:28px;color:#fff;background:rgba(35,32,29,.7);border:0;border-radius:50%;cursor:pointer}.photo-uploading{padding:55px 20px;color:#777169;background:#faf8f4;border:1px dashed #cec8bf;border-radius:8px;text-align:center}.photo-lightbox{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:50px;background:rgba(24,22,20,.92);z-index:300}.photo-lightbox[hidden]{display:none}.photo-lightbox img{max-width:92vw;max-height:82vh;object-fit:contain}.photo-lightbox>div{margin-top:12px;color:#eeeae4;font-size:12px}.lightbox-close{position:absolute;top:22px;right:28px;color:#fff;background:none;border:0;cursor:pointer;font-size:32px}

.print-header,.print-signatures{display:none}
@media print{
  body{color:#191919;background:#fff;font-size:9pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}.page{padding:0}.contract-heading,.summary-grid,.tabs,.sheet-toolbar,.sheet-footer,.toast,.modal-backdrop,.photo-lightbox{display:none!important}.print-header{display:block;margin-bottom:8mm}.print-brand{display:flex;align-items:center;gap:4mm;padding-bottom:4mm;border-bottom:2px solid #333}.print-brand img{width:16mm;height:16mm;object-fit:cover;border-radius:2mm}.print-brand strong,.print-brand span{display:block}.print-brand strong{font-size:19pt;letter-spacing:2px}.print-brand span{margin-top:1mm;color:#555;font-size:9pt}.print-document-no{float:right;margin-top:-12mm;font-size:9pt}.print-info{display:grid;grid-template-columns:1fr 1fr;gap:2.5mm 8mm;margin-top:5mm;padding:4mm;background:#f5f5f3;border:1px solid #ddd}.print-info div{display:flex;gap:4mm}.print-info span{color:#666}.print-info b{font-weight:600}.tab-panel{display:none!important}#detailPanel{display:block!important}.sheet-card{overflow:visible;border:0;border-radius:0;box-shadow:none}.table-wrap{min-height:0;overflow:visible}.materials-table{width:100%;min-width:0;table-layout:fixed;border:1px solid #555}.materials-table th{height:8mm;color:#222;background:#e9e9e6;border:1px solid #777;font-size:8pt;font-weight:600}.materials-table td{padding:2mm 1.5mm;color:#222;border:1px solid #999;font-size:8pt}.materials-table .drag-col,.materials-table .action-col{width:0}.materials-table th:first-child,.materials-table th:last-child,.materials-table td:first-child,.materials-table td:last-child{display:none}.materials-table .name-col{width:16%}.materials-table .qty-col{width:8%}.materials-table .unit-col{width:7%}.materials-table .price-col{width:10%}.materials-table .amount-col{width:11%}.category-row td{height:8mm;background:#dededb!important}.category-summary{color:#333}.item-index{display:none}.cell-input{padding:0;color:#111;background:none;border:0;font-size:8pt}.description-input{line-height:1.35}.print-signatures{display:flex;justify-content:space-between;margin-top:12mm;padding-top:5mm;border-top:1px solid #555;font-size:9pt}.print-signatures span{display:inline-block;width:35mm;border-bottom:1px solid #777}@page{size:A4 landscape;margin:10mm}}

/* 独立打印表格：不复用网页输入控件 */
.print-sheet{display:none}
@media print{
  #detailPanel>.sheet-card{display:none!important}.print-sheet{display:block!important;width:100%}.print-table{width:100%!important;border-collapse:collapse;table-layout:fixed;border:1px solid #555}.print-table .print-seq{width:5%}.print-table .print-name{width:14%}.print-table .print-qty{width:7%}.print-table .print-unit{width:6%}.print-table .print-price{width:9%}.print-table .print-subtotal{width:10%}.print-table .print-desc{width:49%}.print-table thead{display:table-header-group}.print-table tfoot{display:table-footer-group}.print-table th{height:auto;padding:2.5mm 1.5mm;color:#222;background:#e8e7e3!important;border:1px solid #666;font-size:8.5pt;font-weight:600;text-align:center;white-space:nowrap}.print-table td{padding:2mm 1.5mm;color:#222;background:#fff;border:1px solid #999;font-size:8pt;line-height:1.4;vertical-align:middle;overflow-wrap:anywhere}.print-table tr{break-inside:avoid;page-break-inside:avoid}.print-table .print-section-row{break-after:avoid;page-break-after:avoid}.print-table .print-section-row td{padding:2.2mm;background:#deddd9!important;font-size:9pt}.print-section-row span{float:right;color:#444;font-size:8pt;font-weight:400}.print-number,.print-money{text-align:right;font-variant-numeric:tabular-nums}.print-table tfoot td{padding:3mm;background:#f0efeb!important;font-size:10pt;font-weight:600;text-align:right}.print-header{break-after:avoid;page-break-after:avoid}.print-signatures{break-inside:avoid;page-break-inside:avoid}
}

/* 合同摘要压缩到标题区，给物料表释放纵向空间 */
.contract-kpis{display:flex;align-items:stretch;gap:0;margin-top:15px;overflow:hidden;background:#eeebe5;border:1px solid #e2ded6;border-radius:7px}.compact-kpi{min-width:135px;display:grid;grid-template-columns:auto auto;align-items:center;gap:2px 9px;padding:8px 14px;border-right:1px solid #ddd8d0}.compact-kpi:last-child{border-right:0}.compact-kpi>span{color:#7c776f;font-size:10px}.compact-kpi>strong{color:#36322e;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.compact-kpi>strong em{font-size:9px;font-style:normal;font-weight:400}.compact-kpi>small{grid-column:1/-1;color:#918b83;font-size:9px;white-space:nowrap}.compact-kpi.primary>strong{color:#a9543c;font-size:16px}.compact-progress{width:190px;display:grid;grid-template-columns:1fr auto}.compact-progress>span{grid-column:1/-1}.compact-progress>span b{float:right;color:#a9543c;font-weight:600}.compact-progress .progress-track{grid-column:1/-1;height:4px;margin:2px 0 0;background:#ddd9d1}.compact-progress>small{grid-column:1/-1}#detailPanel>.sheet-card{margin-top:18px}@media(max-width:1250px){.contract-kpis{flex-wrap:wrap}.compact-kpi{flex:1 1 145px}.compact-progress{width:auto}}

/* 宽屏时摘要使用标题右侧空白，不再增加标题区高度 */
.contract-heading{align-items:center}.contract-heading-side{display:flex;align-items:center;justify-content:flex-end;gap:14px;min-width:0}.contract-heading-side .contract-kpis{margin-top:0}.contract-heading-side .heading-actions{flex:0 0 auto}.tabs{margin-top:20px}@media(max-width:1450px){.contract-heading{align-items:flex-start;flex-direction:column}.contract-heading-side{width:100%;justify-content:space-between}.contract-heading-side .contract-kpis{flex:1}.contract-heading-side .compact-kpi{flex:1 1 130px}}

.section-count{display:inline-grid;min-width:20px;height:18px;margin-left:5px;place-items:center;color:#716b63;background:#dedad2;border-radius:9px;font-size:9px;font-weight:500}.danger-button{color:#9d4b3f;background:transparent;border-color:#e2c9c2}.danger-button:hover{color:#873b31;background:#faeeea;border-color:#d9afa4}

/* 登录与账号管理 */
.login-screen{min-height:100vh;display:grid;place-items:center;padding:30px;background:#eeeae4}.login-screen[hidden]{display:none}.login-card{width:420px;padding:36px;background:#fffefa;border:1px solid #dfdad2;border-radius:14px;box-shadow:0 22px 60px rgba(55,48,41,.12)}.login-card>img{width:64px;height:64px;display:block;margin:0 auto;object-fit:cover;border-radius:13px;box-shadow:0 5px 16px rgba(34,42,52,.15)}.login-brand{text-align:center}.login-brand h1{margin-top:17px;font-size:25px}.login-brand p{margin:5px 0 25px;color:#817b73;font-size:12px}.login-card form{display:grid;gap:16px}.login-card label{display:grid;gap:7px;color:#655f58;font-size:11px}.login-card input{height:42px;padding:0 12px;background:#faf8f4;border:1px solid #ded9d1;border-radius:7px;outline:0}.login-card input:focus{border-color:#d4937d;box-shadow:0 0 0 3px #f7ebe6}.login-card form .button{width:100%;height:43px;margin-top:3px}.login-card>small{display:block;margin-top:20px;color:#918b83;font-size:10px;text-align:center}.login-error{min-height:16px;color:#a84337;font-size:11px}.account-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:14px}.account-profile{display:flex;align-items:center;gap:18px;margin-top:0}.account-avatar{width:62px;height:62px;display:grid;place-items:center;color:#fff;background:#756d64;border-radius:50%;font-size:22px}.account-profile span{color:#8a847c;font-size:10px}.account-profile h2{margin:4px 0;color:#322f2b;font-size:19px}.account-profile p{margin:0;color:#6f6962;font-size:11px}.account-profile em{display:inline-block;margin-top:9px;padding:3px 7px;color:#92513e;background:#f5e5df;border-radius:4px;font-size:9px;font-style:normal}.password-card{margin-top:0}.password-card form{display:grid;grid-template-columns:1fr 1fr 1fr auto;align-items:end;gap:10px;margin-top:18px}.password-card label{display:grid;gap:6px;color:#706a63;font-size:10px}.password-card input{height:36px;padding:0 10px;background:#faf8f4;border:1px solid var(--line);border-radius:6px}.users-card{padding:0 24px 24px}.users-table-wrap{overflow:auto}.users-table{width:100%;border-collapse:collapse}.users-table th,.users-table td{height:52px;padding:0 10px;border-bottom:1px solid var(--line)}.role-badge{padding:4px 7px;border-radius:4px;font-size:9px}.role-badge.super_admin{color:#8d4d39;background:#f5e3dc}.role-badge.admin{color:#4e6554;background:#e7ede6}.role-badge.customer{color:#69645e;background:#eeece7}.password-warning{color:#9a5a42}.more-button{font-size:10px;cursor:pointer}

/* 更大方的无框标题摘要 */
.contract-kpis{gap:0;margin:0;background:transparent;border:0;border-radius:0;overflow:visible}.compact-kpi{min-width:122px;padding:5px 16px;background:transparent;border-right:1px solid #ddd8d0}.compact-kpi:first-child{padding-left:0}.compact-kpi>span{color:#89837b}.compact-kpi>strong{font-size:15px}.compact-kpi.primary>strong{font-size:17px}.compact-progress{width:175px;padding-right:0}.compact-progress .progress-track{background:#e4e0d9}.contract-heading-side{gap:22px}

/* 管理员可直接修改合同状态 */
.status-select{height:25px;padding:0 22px 0 9px;border:0;outline:0;cursor:pointer;appearance:auto}.status-select:disabled{cursor:default;opacity:1}

/* 总览中的合同执行进展 */
.distribution-list{gap:0;padding-top:8px}.contract-progress-item{width:100%;display:grid;gap:8px;padding:14px 0;background:none;border:0;border-bottom:1px solid #ece8e1;cursor:pointer;text-align:left}.contract-progress-item:last-child{border-bottom:0}.contract-progress-item:hover{background:#faf8f4}.contract-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.contract-progress-head>span{min-width:0}.contract-progress-head strong,.contract-progress-head small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contract-progress-head strong{color:#393631;font-size:12px;font-weight:600}.contract-progress-head small{margin-top:2px;color:#969087;font-size:9px}.contract-progress-head em{flex:0 0 auto;color:#a45d47;font-size:11px;font-style:normal;font-weight:600}.contract-progress-head em.done{padding:3px 7px;color:#4e6c56;background:#e8efe8;border-radius:4px;font-size:9px}.contract-progress-item .distribution-track{display:block;height:6px}.contract-progress-item .distribution-fill{display:block;min-width:0;background:#d48669}.contract-progress-item .distribution-fill.done{background:#6d8b72}.contract-progress-meta{display:flex;justify-content:space-between;color:#8a847b;font-size:9px}.contract-progress-meta b{color:#6f6962;font-weight:500}

@media print{
  .print-terms{margin-top:6mm;border:1px solid #777;font-size:8.5pt;line-height:1.65}.print-terms h3{margin:0;padding:2.5mm 3mm;background:#e8e7e3!important;border-bottom:1px solid #999;font-size:10pt}.print-terms p{margin:0;padding:3mm;border-bottom:1px solid #aaa}.print-terms p:last-child{border-bottom:0}.print-terms ol{margin:0;padding:3mm 3mm 3mm 10mm}.print-terms li{margin:0 0 1.5mm;break-inside:avoid;page-break-inside:avoid}
}

/* 合同搜索贴近左侧合同列表 */
.sidebar-contract-tools{position:sticky;top:0;z-index:2;padding-bottom:8px;background:var(--sidebar)}.sidebar-search{height:34px;display:flex;align-items:center;gap:6px;margin:0 5px;padding:0 8px;color:#918b82;background:#f8f6f1;border:1px solid #ddd9d1;border-radius:7px}.sidebar-search>span{flex:0 0 auto}.sidebar-search input{min-width:0;flex:1;background:none;border:0;outline:0;color:#4d4943;font-size:11px}.sidebar-search input::placeholder{color:#9b968e}

/* 物料行左侧仅保留确认勾选，删除改用右键 */
.confirm-col{width:52px}.confirm-cell{text-align:center}.confirm-cell .confirm-check{display:inline-block;margin:0}.item-row,.category-row{user-select:none}.item-row .cell-input{user-select:text}

/* PDF 页边：去掉四角浏览器信息，仅保留底部居中页码 */
@media print{
  @page{
    size:A4 landscape;
    margin:10mm 10mm 14mm;
    @top-left{content:""}
    @top-center{content:""}
    @top-right{content:""}
    @bottom-left{content:""}
    @bottom-center{content:"第 " counter(page) " 页";color:#666;font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:8pt}
    @bottom-right{content:""}
  }
}
