.tr-shell{display:grid;gap:16px;color:var(--txt)}.tr-head{display:flex;align-items:center;justify-content:space-between;gap:18px}.tr-head h2{font-size:25px;margin:5px 0}.tr-head p,.tr-note{font-size:12px;color:var(--dim);line-height:1.7}.tr-head>div:last-child{display:flex;gap:8px}.tr-eyebrow{font-size:10px;letter-spacing:.17em;color:var(--acc);font-weight:800}.tr-head h2:before{content:'▦';color:var(--acc);margin-inline-end:12px}.tr-shell button{font:inherit;font-size:12px;border:1px solid var(--line);border-radius:9px;padding:8px 12px;background:var(--panel);color:var(--txt);cursor:pointer;box-shadow:none}.tr-shell button:hover{border-color:var(--acc);color:var(--acc)}.tr-shell button:disabled{opacity:.5;cursor:wait}.tr-shell button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}.tr-shell .tr-primary{background:var(--acc);border-color:var(--acc);color:#fff}.tr-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.tr-kpis article{padding:16px 20px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.tr-kpis span{display:block;font-size:12px;color:var(--dim)}.tr-kpis b{display:block;margin-top:8px;font-size:25px}.tr-layout{display:grid;grid-template-columns:190px minmax(0,1fr);align-items:start;gap:16px}.tr-layout nav{position:sticky;top:80px;padding:13px;background:var(--panel);border:1px solid var(--line);border-radius:14px}.tr-layout nav summary{padding:8px 4px 12px;font-size:13px;font-weight:750;cursor:pointer}.tr-layout nav button{width:100%;display:flex;justify-content:space-between;text-align:start;margin-bottom:4px;border-color:transparent;padding:11px 12px}.tr-layout nav button[aria-current=page]{background:var(--active);color:var(--acc);font-weight:750}.tr-layout nav p{font-size:11px;line-height:1.8;color:var(--dim);border-top:1px solid var(--line);padding-top:12px}.tr-main{display:grid;gap:14px;min-width:0}.tr-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.tr-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 20px;border-bottom:1px solid var(--line)}.tr-card-head h3{font-size:15px;margin:0 0 4px}.tr-card-head small,.tr-table-wrap small{display:block;font-size:11px;color:var(--dim);margin-top:5px}.tr-table-wrap{overflow:auto}.tr-table-wrap table{width:100%;border-collapse:collapse;font-size:12px;min-width:650px}.tr-table-wrap th{font-size:11px;text-align:start;white-space:nowrap;padding:12px 18px;background:var(--surface0);color:var(--dim);font-weight:650}.tr-table-wrap td{padding:15px 18px;border-top:1px solid var(--line);vertical-align:middle}.tr-table-wrap td strong{display:block;margin-top:8px;white-space:nowrap}.tr-row-actions{display:flex;gap:6px;flex-wrap:wrap}.tr-status{display:inline-block;padding:5px 9px;font-size:11px;border-radius:7px;background:var(--surface0);color:var(--dim);white-space:nowrap}.tr-approved,.tr-received,.tr-confirmed{background:color-mix(in srgb,#149d80 12%,var(--panel));color:#149d80}.tr-pending,.tr-part_received{background:color-mix(in srgb,#bc8c22 12%,var(--panel));color:#bc8c22}.tr-empty{padding:55px 25px;text-align:center;color:var(--dim);font-size:13px;line-height:2}.tr-empty button{margin-inline-start:12px}.tr-alert,.tr-notice{padding:12px 16px;border:1px solid var(--line);border-radius:10px;line-height:1.7;font-size:12px}.tr-alert{color:#dc5265;background:color-mix(in srgb,#dc5265 7%,var(--panel))}.tr-alert button{margin-inline-start:12px}.tr-notice{color:#149d80;background:color-mix(in srgb,#149d80 7%,var(--panel))}.tr-preview{padding:14px 20px;font-size:12px;line-height:1.8}.tr-line-list>div{display:grid;grid-template-columns:minmax(150px,1fr) auto auto auto;gap:15px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px}.tr-line-list small{display:block;color:var(--dim);font-size:10px;margin-top:4px}.tr-dialog{width:min(760px,calc(100vw - 40px));max-height:85vh;overflow:auto;padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--txt);box-shadow:0 25px 80px #0004}.tr-dialog::backdrop{background:#08193288;backdrop-filter:blur(3px)}.tr-dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.tr-dialog h3{margin:0;font-size:18px}.tr-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.tr-form-grid label{display:grid;gap:7px;font-size:12px;font-weight:600}.tr-form-grid input,.tr-form-grid select,.tr-form-grid textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface1);color:var(--txt);font:inherit;font-size:13px;box-sizing:border-box}.tr-form-grid textarea{height:74px;resize:vertical}.tr-form-lines,.tr-form-grid>.tr-note{grid-column:1/-1}.tr-form-line{display:grid;grid-template-columns:minmax(160px,2fr) minmax(75px,1fr) minmax(85px,1fr) minmax(85px,1fr);gap:9px;margin-bottom:9px;align-items:center}.tr-form-line:not(:has([name=unit_price])){grid-template-columns:minmax(160px,2fr) minmax(90px,1fr)}.tr-form-line-label{font-size:11px;color:var(--dim)}.tr-form-line b{font-size:12px}.tr-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.tr-dialog [data-tr-form-error]{color:#dc5265;font-size:12px;line-height:1.7}@media(max-width:1000px){.tr-layout{grid-template-columns:150px minmax(0,1fr)}.tr-kpis{gap:8px}.tr-kpis article{padding:13px}.tr-head{align-items:flex-start;flex-wrap:wrap}}@media(max-width:700px){.tr-layout{grid-template-columns:1fr}.tr-layout nav{position:static}.tr-layout nav details>button{display:inline-flex;width:auto;margin-inline-end:4px}.tr-layout nav p{display:none}.tr-kpis{grid-template-columns:repeat(2,1fr)}.tr-form-grid{grid-template-columns:1fr}.tr-form-line{grid-template-columns:1fr 1fr}.tr-form-line:not(:has([name=unit_price])){grid-template-columns:minmax(100px,2fr) minmax(65px,1fr)}}
.tr-notice.tr-alert{color:#dc5265;background:color-mix(in srgb,#dc5265 7%,var(--panel))}
.tr-form-lines .tr-form-line:not(:has([name=unit_price])){grid-template-columns:minmax(160px,2fr) minmax(90px,1fr) 56px}
.tr-form-lines:has([name=unit_price]) .tr-form-line{grid-template-columns:minmax(160px,2fr) minmax(75px,1fr) minmax(85px,1fr) minmax(85px,1fr)}
@media(max-width:700px){.tr-form-lines .tr-form-line:not(:has([name=unit_price])){grid-template-columns:minmax(90px,2fr) minmax(65px,1fr) 50px}.tr-form-lines:has([name=unit_price]) .tr-form-line{grid-template-columns:1fr 1fr}}
.tr-status.tr-open,.tr-status.tr-delivered,.tr-status.tr-invoiced,.tr-status.tr-paid,.tr-status.tr-posted,.tr-status.tr-issued,.tr-status.tr-ordered,.tr-status.tr-active,.tr-status.tr-replaced,.tr-status.tr-credited,.tr-status.tr-debited,.tr-status.tr-returned,.tr-status.tr-applied{background:color-mix(in srgb,#149d80 12%,var(--panel));color:#149d80}
.tr-status.tr-draft,.tr-status.tr-dispatched,.tr-status.tr-part_paid,.tr-status.tr-awaiting_replacement,.tr-status.tr-awaiting_credit,.tr-status.tr-awaiting_debit{background:color-mix(in srgb,#bc8c22 12%,var(--panel));color:#bc8c22}
.tr-status.tr-disputed,.tr-status.tr-rejected,.tr-status.tr-cancelled,.tr-status.tr-closed_short{background:color-mix(in srgb,#dc5265 10%,var(--panel));color:#dc5265}
.tr-num{text-align:end;white-space:nowrap;font-variant-numeric:tabular-nums}.tr-table-wrap th.tr-num{text-align:end}.tr-loss{color:#dc5265}
.tr-progress{display:grid;gap:3px;font-size:11px;color:var(--dim)}.tr-progress b{color:var(--txt);font-weight:650}
.tr-form-grid label.tr-check{display:flex;align-items:center;gap:8px}.tr-form-grid label.tr-check input{width:auto}
.tr-warning{padding:12px 20px;font-size:12px;line-height:1.7;color:#bc8c22;background:color-mix(in srgb,#bc8c22 8%,var(--panel));border-top:1px solid var(--line)}
.tr-form-lines .tr-form-line.tr-cols,.tr-form-lines:has([name=unit_price]) .tr-form-line.tr-cols{grid-template-columns:var(--tr-cols)}
.tr-form-grid input[type=checkbox]{width:auto}
@media(max-width:700px){.tr-form-lines .tr-form-line.tr-cols,.tr-form-lines:has([name=unit_price]) .tr-form-line.tr-cols{grid-template-columns:1fr 1fr}}
.tr-match{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:650;white-space:nowrap}
.tr-match-ok{background:color-mix(in srgb,#149d80 12%,var(--panel));color:#149d80}.tr-match-warn{background:color-mix(in srgb,#bc8c22 12%,var(--panel));color:#bc8c22}.tr-match-bad{background:color-mix(in srgb,#dc5265 10%,var(--panel));color:#dc5265}
.tr-enquiry td select,.tr-enquiry td input:not([type=checkbox]){display:block;width:100%;min-width:150px;margin:2px 0;font:inherit;font-size:12px;padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--txt)}
.tr-enquiry td input[type=number]{min-width:90px;max-width:120px}.tr-enquiry td input[type=checkbox]{margin-inline-end:6px;vertical-align:middle}
.tr-quote-bar{display:flex;flex-wrap:wrap;align-items:end;gap:14px;padding:14px 20px;border-top:1px solid var(--line)}.tr-quote-bar label{display:grid;gap:4px;font-size:12px;color:var(--dim)}
.tr-quote-bar label.tr-check{display:flex;align-items:center;gap:6px}.tr-quote-bar input{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--txt)}
.tr-form-grid textarea[name=paste]{min-height:150px;font-family:ui-monospace,monospace;font-size:12px}

.tr-steps{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 4px;padding:0;list-style:none;font-size:11px}.tr-steps li{white-space:nowrap;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--dim)}.tr-steps li.done{border-color:var(--acc);color:var(--acc)}.tr-steps li.done:before{content:'✓ '}.tr-next{display:block;font-size:12px;color:var(--dim)}.tr-next b{color:var(--txt)}.tr-more summary{cursor:pointer;font-size:11px;color:var(--dim);margin-top:4px}
/* A job (业务单): breadcrumb, title and next step, a chain across the top, tabs on the left and its money and documents on the right. */
.tr-job .tr-card-head small{display:block;font-size:12px;color:var(--dim)}.tr-job h3{font-size:17px;margin:2px 0 4px}.tr-job .tr-card-head small b{color:var(--txt)}
.tr-crumbs{display:flex;align-items:center;gap:6px;padding:12px 20px 0;font-size:12px;color:var(--dim)}.tr-shell .tr-crumbs button{border:0;padding:0;background:none;box-shadow:none;color:var(--acc);font-size:12px}
.tr-chain{display:flex;margin:0;padding:0 20px 16px;list-style:none;overflow-x:auto}.tr-chain li{flex:1 1 0;min-width:84px}.tr-shell .tr-chain button{width:100%;height:34px;padding:0 14px 0 20px;border:0;border-radius:0;font-size:12px;white-space:nowrap;background:color-mix(in srgb,var(--line) 55%,transparent);color:var(--dim);box-shadow:none;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}
.tr-chain li:first-child button{clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%);border-radius:8px 0 0 8px}.tr-chain li:last-child button{clip-path:polygon(0 0,100% 0,100% 100%,0 100%,10px 50%);border-radius:0 8px 8px 0}
.tr-shell .tr-chain .tr-chain-done button{background:color-mix(in srgb,var(--acc) 22%,transparent);color:var(--acc)}.tr-shell .tr-chain .tr-chain-now button{background:var(--acc);color:#fff;font-weight:600;box-shadow:0 0 14px color-mix(in srgb,var(--acc) 60%,transparent)}
.tr-shell .tr-chain button[aria-current="step"]{text-decoration:underline;text-underline-offset:3px}
.tr-chain-mini{display:inline-flex;gap:3px;vertical-align:middle;margin-right:6px}.tr-chain-mini i{width:10px;height:6px;border-radius:2px;background:var(--line)}.tr-chain-mini i.done{background:color-mix(in srgb,var(--acc) 45%,transparent)}.tr-chain-mini i.now{background:var(--acc);box-shadow:0 0 6px var(--acc)}
.tr-job-open{border-color:var(--acc);color:var(--acc)}.tr-job-done{color:#2f9e6e;border-color:#2f9e6e}.tr-job-closed{color:var(--dim)}
.tr-job-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}.tr-job-main{display:grid;gap:0;min-width:0}
.tr-job-tabs{display:flex;flex-wrap:wrap;gap:2px;padding:0 6px}.tr-shell .tr-job-tabs button{border:0;border-bottom:2px solid transparent;border-radius:8px 8px 0 0;background:none;box-shadow:none;padding:9px 11px;font-size:13px;color:var(--dim);white-space:nowrap}.tr-shell .tr-job-tabs button[aria-selected="true"]{color:var(--acc);border-bottom-color:var(--acc);background:var(--panel)}
.tr-flow-none{margin:0;color:var(--dim)}
.tr-job-body .tr-card-head{flex-wrap:wrap}
.tr-job-body{display:grid;gap:4px;padding:6px 0 10px}.tr-job-body>.tr-enquiry .tr-card{box-shadow:none;border:0}.tr-job-part{display:grid;gap:8px;padding:10px 20px;font-size:12px}.tr-job-part h4{margin:0;font-size:14px}.tr-job-part .tr-card-head{padding:0}.tr-job-facts{grid-template-columns:110px 1fr}.tr-card-facts{padding:14px 20px 18px}
.tr-job-side{display:grid;gap:12px;align-content:start}.tr-job-side section{padding:14px 16px;border-radius:14px;background:var(--panel);box-shadow:var(--shadow);font-size:12px}.tr-job-side h4{margin:0 0 8px;font-size:13px}.tr-job-side h4 small{color:var(--dim);font-weight:400}.tr-shell .tr-job-side .dl-links button{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:6px 8px;text-align:start}.tr-job-side .dl-links .tr-status{flex:none}.tr-job-side .dl-links span{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;color:var(--dim)}
.tr-job-bar{height:8px;margin:10px 0 4px;border-radius:999px;background:var(--line);overflow:hidden}.tr-job-bar i{display:block;height:100%;background:var(--acc)}.tr-job-side>section>small{color:var(--dim)}
@media (max-width:1100px){.tr-job-grid{grid-template-columns:1fr}}
.tr-flow-doc{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--line);border-radius:10px}.tr-flow-doc>span:first-child,.tr-shell .tr-flow-doc>button{display:grid;gap:2px;text-align:start;border:0;padding:0;background:none;box-shadow:none}.tr-shell .tr-flow-doc>button:hover b{color:var(--acc)}.tr-flow-doc small{font-size:12px;color:var(--dim)}.tr-flow-doc .tr-row-actions:empty{display:none}
@media (max-width:700px){.tr-flow-doc{grid-template-columns:minmax(0,1fr) auto}}
/* Money overview: what is owed both ways, then what falls due next. */
.tr-money-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.tr-shell .tr-money-kpis button{display:grid;gap:8px;text-align:start;padding:14px 16px;border-radius:14px;background:var(--panel);box-shadow:var(--shadow)}.tr-money-kpis span{font-size:12px;color:var(--dim)}.tr-money-kpis b{font-size:19px}.tr-shell .tr-money-kpis .tr-warn b{color:#dc5265}
.tr-money-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px}

/* A job's own details and status updates. */
.tr-job-subtabs{display:flex;gap:4px;padding:10px 20px 0}.tr-shell .tr-job-subtabs button{border:0;border-radius:999px;padding:5px 12px;background:none;color:var(--dim)}.tr-shell .tr-job-subtabs button[aria-selected="true"]{background:color-mix(in srgb,var(--acc) 18%,transparent);color:var(--acc)}
.tr-job-form{display:grid;gap:10px;padding:10px 20px 14px}.tr-job-form .tr-row-actions{justify-content:flex-end}.tr-job-value{display:block;padding:8px 0;font-size:13px;color:var(--txt)}
.tr-job-updates{list-style:none;margin:6px 0 0;padding:0 0 0 14px;border-left:2px solid color-mix(in srgb,var(--acc) 45%,transparent);display:grid;gap:12px}.tr-job-updates li{display:grid;gap:2px;position:relative}.tr-job-updates li:before{content:'';position:absolute;left:-20px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc)}.tr-job-updates time,.tr-job-updates small{font-size:12px;color:var(--dim)}
.tr-job-credit .tr-warning{margin:8px 0 0;font-size:12px}.tr-job-credit .tr-row-actions{margin-top:8px}
.tr-ledger td{padding-top:7px;padding-bottom:7px}.tr-ledger td.tr-num{white-space:nowrap}.tr-ledger tr.tr-ledger-more td{border-top:0}
.tr-stage-sum{display:flex;flex-wrap:wrap;gap:6px;padding:12px 0 4px}.tr-stage-sum .tr-match b{margin-inline-start:4px}.tr-offer{display:block;font-size:12px;line-height:1.7;white-space:nowrap}.tr-table-wrap tr.tr-total td{font-weight:700;background:var(--surface0)}
.tr-nowrap{white-space:nowrap}.tr-job-body .tr-table-wrap th,.tr-job-body .tr-table-wrap td{padding:10px}
.tr-job-body .tr-table-wrap table{min-width:0}
/* Wide tabs (quote, lines, buy): the table takes the whole width and the side panel sits below it as a row. */
.tr-job-wide{grid-template-columns:1fr}.tr-job-wide .tr-job-side{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.tr-enquiry .tr-card{overflow:visible}.tr-quote-bar{position:sticky;bottom:0;z-index:4;background:var(--panel);box-shadow:0 -6px 16px #0001}
.tr-enquiry .tr-table-wrap td{padding:8px 12px}.tr-enquiry .tr-table-wrap th{padding:10px 12px}
.tr-enq-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 20px;border-bottom:1px solid var(--line)}
.tr-enq-filter{display:flex;flex-wrap:wrap;gap:6px;flex:1}.tr-shell .tr-enq-filter button{padding:5px 10px;border-radius:999px;font-size:12px}.tr-shell .tr-enq-filter button[aria-pressed=true]{background:var(--active);border-color:var(--acc);color:var(--acc);font-weight:700}
.tr-file-lines{grid-column:1/-1;max-height:52vh;overflow:auto}.tr-file-lines table{min-width:0}.tr-file-lines td{padding:8px 10px}.tr-file-lines select{min-width:170px}
.tr-status.tr-unbilled{background:color-mix(in srgb,#dc5265 10%,var(--panel));color:#dc5265}
[data-tr-cost] .tr-row-actions{flex-wrap:nowrap}[data-tr-cost] button{white-space:nowrap}
/* Job overview: what the customer wants, what is stuck, the dates that matter (2026-10-21). */
.tr-job-lead{margin:0 0 8px;font-size:15px}.tr-job-part h5{margin:14px 0 6px;font-size:13px;color:var(--dim)}
.tr-job-todo{list-style:none;margin:0;padding:0;display:grid;gap:6px}.tr-job-todo li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--acc) 25%,transparent);border-radius:10px}
.tr-job-todo li.tr-loss{border-color:color-mix(in srgb,var(--bad,#f87171) 55%,transparent)}
.tr-quick-notes{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}.tr-quick-notes button{font-size:12px;padding:4px 10px;border-radius:999px}
.tr-job-updates li.tr-auto:before{background:var(--dim);box-shadow:none}
/* Going live (期初导入, 2026-10-22). */
.tr-opening-steps{margin:0;padding:4px 20px 14px 38px;display:grid;gap:6px}
.tr-opening-detail summary{cursor:pointer;color:var(--acc);font-size:12px;margin-top:4px}.tr-opening-detail b{display:block;margin:10px 0 4px}
.tr-nowrap{white-space:nowrap}.tr-opening-more td{padding-top:0}.tr-opening-more .tr-table-wrap{margin-bottom:6px}

/* Supplier reply typed or read in, a row per enquiry line */
.tr-rfq-lines { grid-column: 1 / -1; max-height: 50vh; overflow: auto; }
.tr-rfq-lines input { width: 100%; min-width: 0; text-align: right; }
.tr-rfq-lines .tr-rfq-price { min-width: 96px; }
.tr-rfq-lines .tr-rfq-small { min-width: 56px; max-width: 72px; }
.tr-rfq-lines small { display: block; }
.tr-progress-fold { margin-top: 10px; }
.tr-progress-fold summary { cursor: pointer; color: var(--dim, inherit); font-size: 13px; }
/* Supplier prices typed on the enquiry lines */
.tr-cost-bar { display: flex; flex-wrap: wrap; align-items: end; gap: 10px 14px; padding: 12px 0; }
.tr-cost-bar label { display: grid; gap: 6px; font-size: 12px; }
.tr-cost-bar small { flex-basis: 100%; color: var(--dim, inherit); }
.tr-enquiry input[name^="cost_"], .tr-enquiry input[name^="price_"] { min-width: 96px; }
/* The enquiry as a price sheet: a compact spreadsheet with grouped supplier columns, sticky heads and first columns. */
.tr-sheet-bar { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin: 12px 20px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--acc) 5%, var(--panel)); }
.tr-sheet-bar label { display: grid; gap: 4px; font-size: 12px; color: var(--dim); }
.tr-sheet-bar input:not([type=file]) { font: inherit; font-size: 12px; height: 34px; padding: 0 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); color: var(--txt); min-width: 230px; box-sizing: border-box; }
.tr-sheet-bar input[type=date] { min-width: 0; }
.tr-sheet-bar input:focus { outline: none; border-color: var(--acc); box-shadow: 0 0 0 3px color-mix(in srgb, var(--acc) 22%, transparent); }
.tr-shell .tr-sheet-bar button, .tr-shell .tr-file-button { height: 34px; }
.tr-shell .tr-sheet-bar [data-tr-action="sheet-export"] { margin-inline-start: auto; }
.tr-sheet-bar small { flex-basis: 100%; font-size: 12px; color: var(--dim); }
.tr-shell .tr-file-button { display: inline-flex; align-items: center; font-size: 12px; color: var(--txt); border: 1px solid var(--line); border-radius: 9px; padding: 0 12px; background: var(--panel); cursor: pointer; box-sizing: border-box; }
.tr-file-button:hover { border-color: var(--acc); color: var(--acc); }
.tr-file-button input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.tr-sheet-wrap { max-height: 72vh; margin: 0 20px 4px; border: 1px solid var(--line); border-radius: 12px; }
.tr-enquiry .tr-sheet { border-collapse: separate; border-spacing: 0; font-size: 12px; }
.tr-enquiry .tr-sheet th { position: sticky; top: 0; z-index: 3; height: 32px; padding: 0 10px; font-size: 12px; background: var(--surface0); border-bottom: 1px solid var(--line); border-inline-end: 1px solid color-mix(in srgb, var(--line) 60%, transparent); box-sizing: border-box; }
.tr-enquiry .tr-sheet thead tr + tr th { top: 32px; height: 26px; font-weight: 500; }
.tr-enquiry .tr-sheet th.tr-sheet-sup { text-align: center; color: var(--txt); border-top: 2px solid var(--acc); }
.tr-enquiry .tr-sheet th.tr-sheet-sup span { font-weight: 700; }
.tr-enquiry .tr-sheet th.tr-sheet-sup em { margin-inline-start: 6px; padding: 1px 6px; font-style: normal; font-size: 12px; border-radius: 6px; color: #bc8c22; background: color-mix(in srgb, #bc8c22 15%, transparent); }
.tr-enquiry .tr-sheet .tr-band { background: color-mix(in srgb, var(--acc) 5%, var(--panel)); }
.tr-enquiry .tr-sheet th.tr-band { background: color-mix(in srgb, var(--acc) 9%, var(--surface0)); }
.tr-enquiry .tr-sheet td { height: 44px; padding: 4px 10px; border-top: 0; border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent); border-inline-end: 1px solid color-mix(in srgb, var(--line) 45%, transparent); background: var(--panel); }
.tr-enquiry .tr-sheet tbody tr:hover td { background: color-mix(in srgb, var(--acc) 7%, var(--panel)); }
.tr-enquiry .tr-sheet tbody tr:has(:focus) td { background: color-mix(in srgb, var(--acc) 10%, var(--panel)); }
.tr-enquiry .tr-sheet thead tr:first-child th:nth-child(1), .tr-enquiry .tr-sheet td:nth-child(1) { position: sticky; left: 0; z-index: 2; width: 52px; white-space: nowrap; color: var(--dim); }
.tr-enquiry .tr-sheet thead tr:first-child th:nth-child(2), .tr-enquiry .tr-sheet td:nth-child(2) { position: sticky; left: 52px; z-index: 2; min-width: 220px; max-width: 260px; box-shadow: 4px 0 8px -6px #0006; }
.tr-enquiry .tr-sheet thead tr:first-child th:nth-child(1), .tr-enquiry .tr-sheet thead tr:first-child th:nth-child(2) { z-index: 4; }
.tr-enquiry .tr-sheet td:nth-child(2) b { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-enquiry .tr-sheet td:nth-child(2) small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tr-enquiry .tr-sheet td small { margin-top: 2px; }
.tr-enquiry .tr-sheet .tr-match { padding: 2px 7px; font-size: 12px; white-space: nowrap; }
.tr-enquiry .tr-sheet td.tr-sheet-cell { padding: 0; min-width: 92px; }
.tr-enquiry .tr-sheet td.tr-sheet-lead { min-width: 58px; }
.tr-enquiry .tr-sheet td input[data-tr-cell]:not([type=checkbox]), .tr-enquiry .tr-sheet td select { min-width: 0; margin: 0; border: 1px solid transparent; border-radius: 6px; background: transparent; color: var(--txt); font-size: 12px; box-sizing: border-box; }
.tr-enquiry .tr-sheet td.tr-sheet-cell input { width: 100%; max-width: none; height: 43px; border-radius: 0; text-align: end; padding: 0 10px; font-variant-numeric: tabular-nums; }
.tr-enquiry .tr-sheet td input[data-tr-cell][name^="find_"] { min-width: 180px; padding: 6px 8px; border-bottom: 1px dashed var(--line); border-radius: 0; }
.tr-enquiry .tr-sheet td input[name^="find_"]::placeholder { color: var(--dim); }
.tr-enquiry .tr-sheet td input[data-tr-cell][name^="price_"] { width: 110px; min-width: 0; padding: 6px 8px; border-color: var(--line); background: var(--surface0); text-align: end; font-weight: 650; }
.tr-enquiry .tr-sheet td select { width: 100%; min-width: 180px; padding: 5px 6px; border-color: var(--line); background: var(--panel); }
.tr-enquiry .tr-sheet td input[data-tr-cell]:hover { border-color: var(--line); }
.tr-enquiry .tr-sheet td input[data-tr-cell]:focus { outline: 2px solid var(--acc); outline-offset: -2px; background: var(--panel); }
.tr-enquiry .tr-sheet td.tr-sheet-cell input[readonly] { color: var(--dim); }
.tr-enquiry .tr-sheet td.tr-best { background: color-mix(in srgb, #149d80 16%, var(--panel)); }
.tr-enquiry .tr-sheet td.tr-best input { color: #149d80; font-weight: 700; }
.tr-enquiry .tr-sheet input.tr-changed { background: color-mix(in srgb, #bc8c22 18%, transparent) !important; box-shadow: inset 3px 0 #bc8c22; }
.tr-enquiry .tr-sheet td.tr-sheet-margin { min-width: 64px; font-weight: 700; white-space: nowrap; color: #149d80; }
.tr-enquiry .tr-sheet td.tr-sheet-margin.tr-loss { color: #dc5265; }
.tr-sheet-advice { margin-top: 3px; font-size: 12px; color: var(--dim); white-space: nowrap; }
.tr-sheet-advice b { font-size: 12px; font-weight: 600; color: var(--txt); }
.tr-sheet-advice b + small { display: inline; margin-inline-start: 6px; }
.tr-enquiry, .tr-enquiry .tr-card { min-width: 0; max-width: 100%; }
.tr-enquiry .tr-card-head { flex-wrap: wrap; }
.tr-enquiry .tr-table-wrap table.tr-sheet { width: max-content; min-width: 100%; }
.tr-enquiry .tr-sheet td.tr-sheet-price { width: 96px; }
.tr-enquiry .tr-sheet td.tr-sheet-lead { width: 60px; }
.tr-enquiry .tr-sheet td.tr-band { background: color-mix(in srgb, var(--acc) 12%, var(--panel)); }
.tr-enquiry .tr-sheet tbody tr:hover td.tr-band { background: color-mix(in srgb, var(--acc) 16%, var(--panel)); }
.tr-enquiry .tr-sheet td input[name^="find_"], .tr-enquiry .tr-sheet td select { max-width: 240px; }
/* 录入客户询价: the two analysis buttons and their summary (自动分析 by the system rules, AI 识别 by Cici). */
.tr-assist{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;border:1px dashed color-mix(in srgb,var(--acc) 45%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--acc) 5%,var(--panel))}
.tr-assist span{font-size:12px;color:var(--dim)}
.tr-analysis{grid-column:1/-1;display:grid;gap:8px;padding:14px 16px;border:1px solid var(--line);border-inline-start:3px solid var(--acc);border-radius:10px;background:var(--surface0);font-size:12px;line-height:1.7}
.tr-analysis p{margin:0}.tr-analysis .tr-bad{color:#dc5265}
.tr-dialog .tr-analysis header{display:flex;align-items:baseline;justify-content:space-between;margin:0}.tr-analysis header small{color:var(--dim);font-size:12px}
.tr-analysis-facts{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.tr-analysis-facts li{display:flex;align-items:baseline;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--dim)}
.tr-analysis-facts b{font-size:16px;color:var(--txt)}.tr-analysis-facts .tr-warn b{color:#bc8c22}
.tr-analysis-checks{margin:0;padding-inline-start:18px;color:#bc8c22}
.tr-shell .tr-print-all{width:100%;margin:2px 0 10px;padding:10px 12px;font-weight:700}
/* Terms templates and the letterhead logo (company details). */
.tr-form-grid>.tr-wide{grid-column:1/-1}.tr-form-grid .tr-wide textarea{height:auto;min-height:120px}
.tr-terms-general{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;font-size:12px;color:var(--dim);border-bottom:1px solid var(--line)}
.tr-terms-general span{padding:3px 9px;border:1px solid var(--line);border-radius:7px;color:var(--txt)}.tr-terms-general em{font-style:normal;color:#bc8c22}
.tr-terms-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:420px;white-space:pre-wrap;color:var(--dim)}
.tr-logo-pick{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tr-logo-pick img{height:44px;max-width:220px;object-fit:contain;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}
.tr-form-grid .tr-logo-pick input{width:auto;flex:1}
