:root{--gold:#aa9664;--gold-dark:#85743f;--gold-soft:#f1ebdc;--cream:#f8f5ee;--paper:#fff;--line:#e4dccb;--ink:#2b2925;--muted:#8a8478;--danger:#b3261e;--danger-soft:#fbeaea;--warn:#9a5b00;--warn-soft:#fff3dc;--radius:8px;--topbar-h:56px;color:var(--ink);background:var(--cream);-webkit-text-size-adjust:100%;font-family:Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;font-weight:400}*{box-sizing:border-box}body{background:var(--cream);margin:0}button,input,select,textarea{font:inherit;color:inherit}.muted{color:var(--muted)}.small{font-size:.875rem}.error{color:var(--danger)}.btn{border:1px solid var(--gold);border-radius:var(--radius);background:var(--gold);color:#fff;cursor:pointer;white-space:nowrap;min-height:44px;padding:0 18px}.btn:hover:not(:disabled){background:var(--gold-dark);border-color:var(--gold-dark)}.btn:disabled{opacity:.45;cursor:default}.btn-quiet{background:var(--paper);color:var(--ink);border-color:var(--line)}.btn-quiet:hover:not(:disabled){background:var(--gold-soft);border-color:var(--gold);color:var(--ink)}.btn-block{width:100%;margin-top:12px;display:block}.btn-small{min-height:34px;margin-left:12px;padding:0 12px}.btn-text{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 10px}.btn-text:hover{color:var(--ink)}.icon-btn{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;font-size:1.1rem}.icon-btn:hover{background:var(--gold-soft);color:var(--ink)}.center-page{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.center-card{background:var(--paper);border:1px solid var(--line);border-radius:12px;width:100%;max-width:420px;padding:32px 28px;line-height:1.7}.logo{border-bottom:1px solid var(--gold);color:var(--gold);letter-spacing:.08em;margin:0 0 20px;padding-bottom:12px;font-weight:300}.app{min-height:100vh}.topbar{z-index:20;height:var(--topbar-h);background:var(--paper);border-bottom:1px solid var(--line);align-items:center;gap:24px;padding:0 20px;display:flex;position:sticky;top:0}.brand{color:var(--gold);letter-spacing:.08em;white-space:nowrap;font-size:1.25rem;font-weight:300}.nav{gap:4px;display:flex}.nav-item{border-radius:var(--radius);min-height:40px;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 14px}.nav-item:hover{color:var(--ink);background:var(--cream)}.nav-item.active{color:var(--gold-dark);background:var(--gold-soft);font-weight:500}.topbar-right{align-items:center;gap:16px;margin-left:auto;font-size:.9rem;display:flex}.save-status{color:var(--muted);white-space:nowrap}.save-status.ok{color:#3d7a4a}.save-status.bad{color:var(--danger);cursor:help}.user{white-space:nowrap}.switch{cursor:pointer;white-space:nowrap;align-items:center;gap:8px;min-height:44px;display:flex}.switch input{opacity:0;pointer-events:none;position:absolute}.switch-track{background:var(--line);border-radius:10px;width:36px;height:20px;transition:background .15s;position:relative}.switch-track:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px}.switch.on .switch-track{background:var(--gold)}.switch.on .switch-track:after{transform:translate(16px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--gold-dark);outline-offset:2px}.banner{flex-wrap:wrap;align-items:center;gap:4px;padding:10px 20px;font-size:.9rem;display:flex}.banner-warn{background:var(--warn-soft);color:var(--warn)}.banner-info{background:var(--gold-soft);color:var(--gold-dark)}.banner-error{background:var(--danger-soft);color:var(--danger)}.banner-demo{color:#3d5a80;background:#e9eef6}.loading,.coming-soon{text-align:center;padding:48px 20px}.coming-soon h2{color:var(--gold);font-weight:300}.price-page{grid-template-columns:1fr;display:grid}.price-page.has-panel{grid-template-columns:minmax(0,1fr) 400px}.price-main{min-width:0;padding:20px}.filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.search{flex:240px;min-width:0}.filters select{flex:0 180px;min-width:0}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:100%;min-height:44px;padding:8px 12px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft);outline:none}input[type=checkbox],input[type=radio]{width:18px;height:18px;min-height:0;accent-color:var(--gold);flex:none;padding:0}.check{white-space:nowrap;cursor:pointer;align-items:center;gap:8px;min-height:44px;display:flex}.check.block{white-space:normal;margin-bottom:12px}.chips{scrollbar-width:thin;gap:8px;margin:14px 0 18px;padding-bottom:4px;display:flex;overflow-x:auto}.chip{border:1px solid var(--line);background:var(--paper);cursor:pointer;white-space:nowrap;border-radius:18px;flex:none;min-height:36px;padding:0 14px}.chip:hover{border-color:var(--gold)}.chip.active{background:var(--gold);border-color:var(--gold);color:#fff}.chip .count{opacity:.7;margin-left:4px;font-size:.8rem}.price-list{flex-direction:column;gap:16px;display:flex}.price-group{background:var(--paper);border:1px solid var(--line);border-radius:10px}.group-head{top:var(--topbar-h);z-index:1;background:var(--gold-soft);color:var(--gold-dark);border-radius:9px 9px 0 0;margin:0;padding:10px 16px;font-size:.95rem;font-weight:500;position:sticky}.group-head .count{opacity:.75;margin-left:6px;font-size:.8rem}.price-row{border:none;border-top:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) 150px 48px;align-items:center;column-gap:16px;width:100%;min-height:44px;padding:8px 16px;display:grid}.price-list.internal .price-row{grid-template-columns:minmax(0,1fr) 150px 110px 130px 48px}.group-head+.price-row{border-top:none}.price-row:last-child{border-radius:0 0 9px 9px}.price-row:hover{background:var(--cream)}.price-row.selected{background:var(--gold-soft);box-shadow:inset 3px 0 0 var(--gold)}.price-row.disabled{opacity:.55}.row-name{line-height:1.5}.row-name .tag{margin-right:6px;font-size:.75rem}.row-name .tag-off{margin:0 0 0 6px}.row-price{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.row-unit{color:var(--muted);font-size:.85rem}.row-cost{text-align:right;color:var(--warn);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.9rem}.row-vendor{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.row-date{color:var(--muted);text-align:right;font-size:.8rem}.row-break{display:none}.price-row.project-row{grid-template-columns:minmax(0,1.4fr) 110px minmax(0,1fr) 190px 48px;grid-template-areas:"name owner address price date"}.price-row.trash-row{cursor:default;grid-template-columns:minmax(0,1.4fr) 110px minmax(0,1fr) 120px 72px}.project-row .row-name{grid-area:name}.row-owner{grid-area:owner;font-size:.9rem}.row-address{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-area:address;font-size:.85rem;overflow:hidden}.project-row .row-price{grid-area:price}.project-row .row-date,.trash-row .btn{grid-area:date;justify-self:end}.trash-row .btn{margin:0}.back{margin-bottom:8px;padding-left:0}.project-head{background:var(--paper);border:1px solid var(--line);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px;padding:18px 20px;display:flex}.project-head h1{margin:0 0 4px;font-size:1.4rem;font-weight:500}.project-head p{margin:4px 0}.project-meta{line-height:1.6}.section-head{justify-content:space-between;align-items:center;margin:22px 0 10px;display:flex}.section-head h2{color:var(--gold-dark);margin:0;font-size:1.05rem;font-weight:500}.price-row.quote-row{cursor:default;flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.row-main{text-align:left;cursor:pointer;background:0 0;border:none;flex:320px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name price""address address";gap:2px 12px;min-width:0;padding:0;display:grid}.row-main .row-name{grid-area:name}.row-main .row-price{grid-area:price}.row-main .row-address{grid-area:address}.row-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.row-actions .btn-small{margin-left:0}.tag-contract{color:#2f6b3c;background:#e6f2e8;margin-left:6px;font-size:.75rem}.trash-block{margin-top:12px}.segmented button:disabled{color:var(--muted);cursor:not-allowed;opacity:.6}.tag-todo{color:#7a5d00;background:#fff3b0}.tag-alert{background:var(--danger-soft);color:var(--danger);margin-left:6px;font-size:.75rem}.price-main{container-type:inline-size}@container (width<=640px){.price-row,.price-list.internal .price-row{flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:10px 14px;display:flex}.row-name{flex:1 1 0;min-width:0}.row-break{flex-basis:100%;height:0;display:block}.row-cost,.row-vendor,.row-date{text-align:left;font-size:.8rem}.row-date{margin-left:auto}.project-row .row-name{order:1}.project-row .row-price{order:2}.project-row .row-break{order:3}.project-row .row-owner{order:4;font-size:.8rem}.project-row .row-address{flex:1 1 0;order:5;min-width:0;font-size:.8rem}.project-row .row-date,.trash-row .btn{order:6}}.tag{background:var(--gold-soft);color:var(--gold-dark);border-radius:10px;padding:1px 8px;display:inline-block}.tag-off{color:var(--muted);background:#eee}.lump{color:var(--gold-dark)}.empty{text-align:center;padding:48px 16px}.panel{top:var(--topbar-h);height:calc(100vh - var(--topbar-h));background:var(--paper);border-left:1px solid var(--line);flex-direction:column;display:flex;position:sticky}.panel-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 20px 10px;display:flex}.panel-head h2{margin:0;font-size:1.1rem;font-weight:500}.panel-head p{margin:4px 0 0}.panel-body{flex:1;padding:16px 20px;overflow-y:auto}.panel-actions{border-top:1px solid var(--line);align-items:center;gap:10px;padding:12px 20px;display:flex}.field{margin-bottom:14px;display:block}.field-label{color:var(--muted);margin-bottom:4px;font-size:.85rem;display:block}.field-hint,.field-error{color:var(--muted);margin-top:4px;font-size:.8rem;display:block}.field-error{color:var(--danger)}.field.has-error input,.field.has-error select{border-color:var(--danger)}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.hint-box,.warn-box,.error-box{border-radius:var(--radius);margin:0 0 14px;padding:10px 12px;font-size:.85rem;line-height:1.6}.hint-box{background:var(--cream);color:var(--muted)}.hint-box.error,.error-box{background:var(--danger-soft);color:var(--danger)}.warn-box{background:var(--warn-soft);color:var(--warn)}.sheet-backdrop{display:none}.modal-backdrop{z-index:40;background:#2b292559;place-items:center;padding:24px 16px;display:grid;position:fixed;inset:0}.modal{background:var(--paper);border-radius:12px;flex-direction:column;width:100%;max-width:720px;max-height:calc(100vh - 48px);display:flex;box-shadow:0 12px 32px #0000002e}.modal-body{flex:1;padding:16px 20px;overflow-y:auto}.import-summary{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.stat{background:var(--cream);border-radius:16px;padding:6px 12px;font-size:.9rem}.stat.add{color:#2f6b3c;background:#e6f2e8}.stat.change{background:var(--gold-soft);color:var(--gold-dark)}.stat.bad{background:var(--danger-soft);color:var(--danger)}.import-section{margin-bottom:18px}.import-section h3{margin:0 0 8px;font-size:.95rem;font-weight:500}.import-section.bad h3{color:var(--danger)}.import-section ul{border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:0;list-style:none}.import-section li{border-bottom:1px solid var(--line);padding:8px 12px;font-size:.9rem;line-height:1.6}.import-section li:last-child{border-bottom:none}.import-section.bad li{background:#fdf6f6}.reason{color:var(--danger);font-size:.85rem}.reason.warn{color:var(--warn)}.diff{color:var(--muted);font-size:.85rem}.diff s{color:var(--muted)}.diff b{color:var(--ink);font-weight:500}.segmented{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:8px;display:flex;overflow:hidden}.segmented button{border:none;border-right:1px solid var(--line);background:var(--paper);cursor:pointer;flex:1;min-height:40px}.segmented button:last-child{border-right:none}.segmented button.active{background:var(--gold);color:#fff}.percent-row{align-items:center;gap:8px;display:flex}.percent-row input{max-width:200px}.quick{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.import-section li.warn-row{background:var(--warn-soft)}.app-fixed{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.editor{flex-direction:column;flex:1;min-height:0;display:flex}.editor-head{background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 16px;display:flex}.editor-head .back{margin:0}.editor-title{flex:1;min-width:0}.editor-title .tag{margin-left:6px;font-size:.75rem}.editor-actions{flex-wrap:wrap;gap:8px;display:flex}.editor-body{flex:1;grid-template-columns:300px minmax(0,1fr) 360px;min-height:0;display:grid;position:relative}.editor-body.no-picker{grid-template-columns:minmax(0,1fr) 360px}.editor-picker,.editor-side{background:var(--paper);flex-direction:column;min-height:0;display:flex}.editor-picker{border-right:1px solid var(--line)}.editor-side{border-left:1px solid var(--line)}.editor-lines{min-height:0;padding:16px;overflow-y:auto;container-type:inline-size}.sheet-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;display:flex}.editor-picker .sheet-head,.sheet-close,.picker-toggle,.editor-backdrop,.side-toggle{display:none}.side-body{flex:1;padding:14px 16px;overflow-y:auto}.tabs{gap:4px;display:flex}.tab{border-radius:var(--radius);min-height:36px;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 14px}.tab.active{background:var(--gold-soft);color:var(--gold-dark);font-weight:500}.picker{flex-direction:column;flex:1;min-height:0;display:flex}.picker-filters{border-bottom:1px solid var(--line);flex-direction:column;gap:8px;padding:12px;display:flex}.picker-selects{flex-wrap:wrap;gap:6px;display:flex}.picker-selects select{flex:120px;min-width:0;min-height:38px;padding:6px 8px;font-size:.9rem}.picker-list{flex:1;overflow-y:auto}.picker-row{border:none;border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto 24px;align-items:center;gap:8px;width:100%;min-height:44px;padding:8px 12px;font-size:.9rem;display:grid}.picker-row:hover{background:var(--cream)}.picker-row:active{background:var(--gold-soft)}.picker-name .tag{font-size:.7rem}.picker-price{font-variant-numeric:tabular-nums;white-space:nowrap}.picker-add{color:var(--gold);text-align:center;font-size:1.1rem}.picker-empty{padding:16px}.quote-lines .group-head{top:-16px}.group-total{float:right;font-weight:400}.price-row.line-row{grid-template-columns:minmax(0,1fr) 200px 100px}.quote-lines.internal .price-row.line-row{grid-template-columns:minmax(0,1fr) 200px 100px 100px}.price-row.line-row.todo{background:#fffbe6}.price-row.line-row.todo.selected{background:var(--gold-soft)}.row-amount{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.cat-overview{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.cat-chip{border:1px solid var(--line);background:var(--paper);cursor:pointer;white-space:nowrap;border-radius:16px;min-height:32px;padding:0 10px;font-size:.82rem}.cat-chip.done{color:#2f6b3c;background:#eef7f0;border-color:#b9d8bf}.cat-chip.todo{color:#7a5d00;background:#fff8d6;border-color:#f0dc8a}.cat-chip.skipped{color:var(--muted);text-decoration:line-through}.cat-chip.pending{border-color:var(--danger);background:var(--danger-soft);color:var(--danger);font-weight:500}.cat-chip .count{opacity:.7}.collapse-btn{color:inherit;font:inherit;cursor:pointer;background:0 0;border:none;margin-right:6px;padding:0}.drag-handle{color:var(--muted);cursor:grab;margin-right:8px}.price-row.dragging{opacity:.4}.price-row.drop-before{box-shadow:inset 0 3px 0 var(--gold)}.price-row.drop-after{box-shadow:inset 0 -3px 0 var(--gold)}.group-actions{flex-wrap:wrap;gap:4px 12px;padding:2px 8px 6px;display:flex}.group-actions .btn-text{min-height:36px}.pending-block{margin-top:4px}.pending-title{color:var(--danger);margin:8px 2px;font-size:.9rem;font-weight:500}.pending-group{border-color:#f0c9c6}.pending-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;padding:6px 8px 6px 16px;display:flex}.pending-row .group-actions{padding:0}.skipped-block{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.skip-chip{border:1px dashed var(--line);color:var(--muted);border-radius:16px;align-items:center;gap:2px;padding-left:10px;font-size:.85rem;display:inline-flex}.skip-chip .btn-text{min-height:30px;color:var(--gold-dark);padding:0 8px}.status-jump{cursor:pointer;border:none;margin-right:8px}.line-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.line-form{border:none;min-width:0;margin:0;padding:0}.computed{font-variant-numeric:tabular-nums;align-items:center;min-height:44px;display:flex}.summary-tab p{margin:4px 0}.editor-status{background:var(--paper);border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.status-total strong{font-variant-numeric:tabular-nums;font-size:1.1rem}@media (width<=1199px){.editor-body{grid-template-columns:minmax(0,1fr) 340px}.editor-picker{z-index:26;width:min(360px,90vw);transition:transform .2s;position:absolute;top:0;bottom:0;left:0;transform:translate(-105%);box-shadow:8px 0 24px #0000001f}.sheet-picker .editor-picker{transform:none}.editor-picker .sheet-head,.picker-toggle{align-items:center;display:flex}.sheet-picker .editor-backdrop{z-index:25;background:#2b292540;display:block;position:absolute;inset:0}}@media (width<=767px){.editor-head{padding:8px 12px}.editor-actions .btn{min-height:40px;padding:0 12px}.editor-actions .future,.editor-title .muted{display:none}.editor-body,.editor-body.no-picker{grid-template-columns:1fr;overflow:hidden}.editor-lines{padding:12px}.editor-picker,.editor-side{z-index:26;visibility:hidden;border:none;border-radius:16px 16px 0 0;width:auto;height:85%;transition:transform .2s,visibility .2s;position:absolute;inset:auto 0 0;transform:translateY(105%);box-shadow:0 -8px 24px #00000026}.sheet-picker .editor-picker,.sheet-side .editor-side{visibility:visible;transform:none}.sheet-close,.side-toggle{justify-content:center;align-items:center;display:inline-flex}.sheet-side .editor-backdrop{z-index:25;background:#2b292540;display:block;position:absolute;inset:0}}.confirm-backdrop{z-index:50}.modal.confirm{max-width:420px}.modal.confirm p{margin:4px 0;line-height:1.7}.btn-danger{background:var(--danger);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:#8f1e18;border-color:#8f1e18}.done-box{border-radius:var(--radius);color:#2f6b3c;background:#e6f2e8;padding:14px}@media (width<=767px){.topbar{flex-wrap:wrap;gap:4px 12px;height:auto;padding:6px 16px}.nav{order:3;width:100%}.nav-item{white-space:nowrap;flex:1;padding:0 6px}.topbar-right{gap:10px}.user,.save-status:not(.bad):not(.ok){display:none}.price-main{padding:16px}.price-page.has-panel{grid-template-columns:1fr}.group-head{position:static}.filters select{flex:140px}.sheet-backdrop{z-index:30;background:#2b292559;display:block;position:fixed;inset:0}.modal-backdrop{place-items:end stretch;padding:0}.modal{border-radius:16px 16px 0 0;max-height:92vh}.panel{z-index:31;border-left:none;border-radius:16px 16px 0 0;height:88vh;position:fixed;inset:auto 0 0;box-shadow:0 -8px 24px #0000001f}}.picker-section{z-index:1;background:var(--gold-soft);color:var(--gold-dark);padding:6px 12px;font-size:.8rem;position:sticky;top:0}.save-to-price{border:1px dashed var(--gold);border-radius:var(--radius);flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:14px;padding:10px 12px;display:flex}.editor-title .sync-tag{white-space:nowrap;margin-left:8px;display:inline}button.sync-tag{cursor:pointer;font:inherit;border:none}.sheet-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin:12px 0;display:flex}.sheet-bar>.muted{flex:320px}.sheet-bar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}a.btn{align-items:center;text-decoration:none;display:inline-flex}.sheet-notice p{margin:0 0 6px}.sheet-notice ul{margin:0 0 8px;padding-left:1.2em}.sheet-notice summary{cursor:pointer}.problem-list .btn-text{padding:0;text-decoration:underline}.check-panel section{margin:0 0 16px}.check-panel h4{margin:0 0 4px;font-size:.9rem}.check-panel ul{margin:4px 0;padding-left:1.1em}.check-panel li{margin:2px 0}.check-row{flex-wrap:wrap;justify-content:space-between;gap:2px 10px;display:flex}.check-actions{gap:10px;display:inline-flex}.check-panel .btn-text{text-align:left;padding:0}.check-panel .remove-noqty{margin-top:6px}.settings-head{padding:16px 20px 0}.settings-head .tabs{max-width:360px}.kit-group{margin-bottom:28px}.kit-group-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;margin-bottom:10px;display:flex}.kit-group-head h3{margin:0;font-size:1rem;font-weight:500}.kit-group-head p{margin:4px 0 0}.price-row.kit-row{grid-template-columns:minmax(0,1fr) auto;row-gap:2px}.kit-row:first-child,.rule-row:first-child{border-top:none}.kit-count{color:var(--muted);font-size:.85rem}.kit-skipped{grid-column:1/-1}.chips.wrap{flex-wrap:wrap;margin:6px 0;overflow:visible}.chips.wrap .chip{min-height:30px;padding:0 10px;font-size:.85rem}.kit-items-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.kit-picker{border:1px solid var(--line);border-radius:var(--radius);max-height:340px;margin-bottom:10px;padding:8px;overflow-y:auto}.kit-items h4{color:var(--gold-dark);margin:12px 0 4px;font-size:.85rem}.kit-item{border-top:1px solid var(--line);align-items:center;gap:8px;padding:4px 0;font-size:.9rem;display:flex}.kit-item-name{flex:1;min-width:0}.kit-qty{flex:none;width:72px}.rule-row{border-top:1px solid var(--line);align-items:center;gap:10px;padding:8px 16px;display:flex}.rule-row.selected{background:var(--gold-soft)}.rule-row.disabled .rule-body{opacity:.55}.rule-body{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;gap:2px;padding:0;display:flex}.picker-kit{padding:8px 12px 0}.picker-kit .btn{width:100%}.kit-check-list{border:1px solid var(--line);border-radius:var(--radius);max-height:260px;padding:6px 10px;font-size:.88rem;overflow-y:auto}.kit-check-list .check{margin:4px 0}.form-section{border-top:1px solid var(--line);color:var(--gold-dark);margin:20px 0 10px;padding-top:14px;font-size:.9rem;font-weight:500}.panel-body>.form-section:first-child{border-top:none;margin-top:0;padding-top:0}.note-list{margin:8px 0 10px;padding-left:1.4em}.note-list li{margin-bottom:8px}.note-list textarea{font-size:.88rem}.note-actions{justify-content:flex-end;gap:2px;display:flex}.bank-card{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px;padding:10px 12px 6px}.bank-card .field{margin-bottom:8px}.company-note{margin-top:18px}.kit-skipped .tag{margin-left:6px}.sort-toggle{border:1px solid var(--gold);background:var(--paper);color:var(--gold-dark);cursor:pointer;border-radius:14px;margin-left:10px;padding:2px 10px;font-size:.8rem;font-weight:400;display:none}.sort-toggle.active{background:var(--gold);color:#fff}@media (width<=767px),(pointer:coarse){.sort-toggle{align-items:center;min-height:32px;display:inline-flex}}.sort-row{border-top:1px solid var(--line);align-items:center;gap:8px;min-height:52px;padding:6px 8px 6px 16px;transition:background .3s;display:flex}.sort-row.moved{background:var(--gold-soft);box-shadow:inset 3px 0 0 var(--gold)}.sort-label{flex:1;min-width:0;line-height:1.4}.sort-label .tag{margin-right:6px}.sort-btns{flex:none;gap:6px;display:flex}.sort-btn{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);cursor:pointer;width:44px;height:40px;font-size:1.1rem}.sort-btn:disabled{opacity:.3;cursor:default}@media (width<=767px),(pointer:coarse){input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px!important}}.kit-editor .panel-actions{flex-wrap:wrap}.btn-delete{color:var(--danger)}.summary-settings{border:none;margin:0 0 12px;padding:0}.summary-settings .field{margin-bottom:10px}.summary-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:8px 0 12px}.summary-table td{border-bottom:1px solid var(--line);padding:5px 2px}.summary-table td:last-child{text-align:right;white-space:nowrap}.summary-table .sum-row td{border-top:1px solid var(--gold);font-weight:500}.summary-table .total-row td{color:var(--gold-dark);font-size:1rem;font-weight:600}.summary-table .warn td{color:var(--warn)}.terms-box{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}.terms-box summary{cursor:pointer;margin-bottom:8px;font-weight:500}.profit-tab fieldset,.installment-tab fieldset{border:none;margin:0;padding:0}.profit-cats{margin:4px 0}.profit-cat{border-bottom:1px solid var(--line);padding:6px 0}.profit-cat-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.profit-markup{align-items:center;gap:4px;font-size:.85rem;display:inline-flex}.profit-markup input{width:70px;min-height:34px;padding:4px 8px}.profit-nums{margin-top:2px;line-height:1.5}.target-box{border:1px solid var(--line);border-radius:var(--radius);margin-top:16px;padding:10px 12px}.target-box h4{margin:0 0 8px}.target-option{border-top:1px solid var(--line);grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:8px 0;display:grid}.target-option .muted{grid-column:1}.target-option .btn{grid-area:1/2/span 2}.period-head,.period-row{grid-template-columns:minmax(0,1fr) 58px 80px 28px;align-items:end;gap:6px;display:grid}.period-head{margin:6px 0 2px;font-size:.8rem}.period-head span:nth-child(3){text-align:right}.period-name{flex-direction:column;min-width:0;display:flex}.period-no{color:var(--muted);font-size:.75rem}.period-row .period-amount{align-self:center}.period-row{margin-bottom:6px}.period-row input{min-height:38px;padding:4px 8px}.period-amount{text-align:right;font-variant-numeric:tabular-nums}.status-total{align-items:center;gap:12px;display:inline-flex}.status-sum,.status-margin{color:inherit;padding:0}.editor-side .sheet-head .tabs{scrollbar-width:none;flex:1;min-width:0;overflow-x:auto}.editor-side .tab{white-space:nowrap;flex:none;padding:0 10px}.row-margin{color:var(--muted);font-size:.8rem;display:block}.contract-overview{border:1px solid var(--line);background:var(--paper);font-variant-numeric:tabular-nums;border-radius:10px;margin:0 0 14px;padding:12px 16px}.ov-row{justify-content:space-between;gap:12px;padding:3px 0;display:flex}.ov-total{border-top:1px solid var(--gold);color:var(--gold-dark);margin-top:4px;padding-top:6px;font-weight:600}.ov-pending{color:var(--warn)}.tag-done{color:#2f6b3c;background:#e6f2e8}.deduct-head{color:#8f3b2c;background:#f6e9e6}.row-amount.minus{color:#8f3b2c}.status-select{width:auto;min-height:40px}.picker-note{margin:8px 12px 0}.deduct-group h4{color:var(--gold-dark);margin:12px 0 4px;font-size:.85rem}.qty-input{gap:6px;display:flex}.qty-input input{min-width:0}.calc-btn{flex:none;padding:0 10px}.calc-modal{max-width:560px}.calc-rows{margin:12px 0 8px}.calc-row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.calc-row select{flex:0 0 76px}.calc-no{width:18px;color:var(--muted);text-align:right;flex:none;font-size:.8rem}.calc-space{flex:90px;min-width:0}.calc-num{flex:70px;min-width:0}.calc-spaces{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.calc-total{align-items:end;margin-top:12px}.calc-result{flex-direction:column;align-items:flex-end;gap:2px;padding-bottom:14px;display:flex}.calc-result strong{color:var(--gold-dark);font-size:1.3rem}.settings-narrow{max-width:560px}.settings-actions{border-top:none;padding:12px 0}.editor-title strong{white-space:nowrap}.space-input{min-width:0;display:flex;position:relative}.space-input input{padding-right:34px}.space-toggle{width:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;position:absolute;top:0;bottom:0;right:0}.space-menu{z-index:60;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);min-width:140px;max-height:220px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 20px #0000001f}.space-menu button{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;min-height:38px;padding:6px 12px;display:block}.space-menu button:hover,.space-menu button.active{background:var(--gold-soft)}.calc-btn.btn-text{min-height:0;margin-top:4px;padding:2px 0;font-size:.85rem;display:inline-block}.space-input{width:100%}.cat-notes{border-top:1px dashed var(--line);padding:4px 16px 6px;font-size:.85rem}.cat-note,.cat-note-edit{align-items:flex-start;gap:8px;padding:3px 0;display:flex}.cat-note-text{color:#555;white-space:pre-wrap;flex:1;margin:0;line-height:1.5}.cat-note-edit textarea{flex:1;font-size:.88rem}.cat-note-actions{flex:none;gap:10px;display:inline-flex}.cat-note-actions .btn-text,.cat-note-bar .btn-text{padding:0;font-size:.82rem}.cat-note-bar{flex-wrap:wrap;gap:4px 14px;padding-top:2px;display:flex}.equipment-box{border:1px dashed var(--line);border-radius:var(--radius);margin:4px 0 10px;padding:8px 10px}.notes-cat+.notes-cat{border-top:1px solid var(--line)}.notes-cat-head{text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;width:100%;min-height:44px;padding:8px 16px;display:flex}.notes-cat-body{padding:0 16px 12px}.doc-choices{border:none;margin:0 0 12px;padding:0}.doc-choice{cursor:pointer;align-items:flex-start;gap:8px;padding:6px 0;display:flex}.doc-choice input{margin-top:4px}.doc-choice>span{flex-direction:column;display:flex}.doc-choice.disabled{color:var(--muted);cursor:not-allowed}.doc-choices .hint-box .btn{margin-left:6px}.project-head-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.doc-row{align-items:center}.doc-row .row-name{flex-direction:column;gap:2px;display:flex}.doc-merge{border-radius:var(--radius);background:var(--cream);flex-wrap:wrap;gap:0 18px;margin-top:6px;padding:4px 10px;display:flex}.cloud-files{margin:4px 0 0;padding-left:18px}@keyframes picker-flash-a{0%{box-shadow:inset 0 0 0 3px var(--gold)}to{box-shadow:inset 0 0 0 3px #0000}}@keyframes picker-flash-b{0%{box-shadow:inset 0 0 0 3px var(--gold)}to{box-shadow:inset 0 0 0 3px #0000}}.editor-picker.flash-1{animation:1.2s ease-out picker-flash-a}.editor-picker.flash-0{animation:1.2s ease-out picker-flash-b}
