/* Purchasing worksheets and purchasing-only dialogs share one input rhythm. */
.purchase-sheet-page{max-width:1480px;margin:0 auto}
.purchase-sheet-page .pagehead{margin:14px 0 22px;align-items:center}
.purchase-sheet-page .pagehead p{font-size:13px;line-height:1.6;color:var(--muted);margin-top:5px}
.purchase-sheet-page .back-link{font-size:13px}
.purchase-sheet-page .surfacebody{padding:20px}
.purchase-sheet-page form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:16px;max-width:none}
.purchase-sheet-page form>:is(p,fieldset,section,details,.purchase-doc-list,.purchase-lookup,.purchase-line-add,[data-cycle-lines],[data-direct-lines]){grid-column:1/-1;min-width:0}
.purchase-sheet-page form>.field:has(textarea){grid-column:span 2}
.purchase-sheet-page form>button{justify-self:start;align-self:end}
.purchase-sheet-page form>.field:has([name=reference]){grid-column:1/-1}
.purchase-sheet-page fieldset,.purchase-sheet-page .sheet-line-details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:14px 12px;min-width:0}
.purchase-sheet-page fieldset{border:1px solid var(--line,#dce2e9);border-radius:6px;padding:16px;margin:0}
.purchase-sheet-page legend{max-width:100%;font-size:14px;font-weight:650;padding:0 7px;overflow-wrap:anywhere}
.purchase-sheet-page fieldset>:is(p,section,details,.cycle-line-actions){grid-column:1/-1;min-width:0}
.purchase-sheet-page fieldset>.field:has(textarea){grid-column:span 2}
.purchase-sheet-page .sheet-line-details{padding-top:14px}
.purchase-sheet-page .sheet-line-details .field:has(textarea){grid-column:1/-1}
.purchase-sheet-page .sheet-line-details .field:has(:is([name=model_name],[name=manufacturer])){grid-column:span 2}
.purchase-sheet-page .purchase-basic-group{background:#f8faf6}
.purchase-sheet-page .purchase-basic-group .field:has([name=title]){grid-column:span 2}
.purchase-sheet-page .purchase-basic-group .field:has(:is([name=purpose],[name=terms])){grid-column:1/-1}
.purchase-sheet-page #procurement-order-form .purchase-basic-group .field{grid-column:span 2}
.purchase-sheet-page #procurement-order-form .purchase-basic-group .field:has(:is([name=supplier_id],[name=due_at])){grid-column:auto}
.purchase-sheet-page [data-cycle-line]>.field:has(:is([name=item_id],[name=request_id],[name=name])){grid-column:span 2}
.purchase-sheet-page [data-direct-line]>.field:has([name=item_id]){grid-column:span 2}
.purchase-sheet-page :is([data-cycle-lines],[data-direct-lines]){display:grid;gap:18px}
.purchase-sheet-page .cycle-line-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:10px}
.purchase-sheet-page [data-direct-line] .cycle-line-actions{align-items:center;justify-content:space-between}
.purchase-sheet-page [data-direct-spec]{flex:1;min-width:0;color:var(--muted)}
.purchase-sheet-page .purchase-lookup{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;padding:2px 0}
.purchase-sheet-page .purchase-lookup .field{flex:1 1 280px;max-width:560px}
.purchase-sheet-page .purchase-lookup .button{flex:none;min-height:42px}
.purchase-sheet-page .purchase-line-add{display:flex;justify-content:flex-start}
.purchase-sheet-page form>label:has(>input:is([type=checkbox],[type=radio])),.purchase-sheet-page fieldset>label:has(>input:is([type=checkbox],[type=radio])){grid-column:1/-1}
.purchase-sheet-actions{position:sticky;bottom:0;padding:14px 18px;background:#fff;border:1px solid var(--line,#dce2e9);border-radius:0 0 6px 6px;box-shadow:0 -3px 12px #15233c0a;display:flex;align-items:center;gap:10px;flex-wrap:wrap;z-index:5}
.purchase-sheet-actions [data-sheet-saved]{margin-left:auto;color:#637187;font-size:12px;line-height:1.5}
.purchase-doc-list{overflow:auto;border:1px solid var(--line,#dce2e9);border-radius:8px;margin:12px 0;min-width:0}
.purchase-doc-list table{border-collapse:collapse;width:100%;min-width:760px}
.purchase-doc-list th,.purchase-doc-list td{padding:12px;text-align:left;border-bottom:1px solid var(--line,#dce2e9);vertical-align:top}
.purchase-doc-list th{background:#f5f7fa;font-size:12px}
.purchase-doc-list td{font-size:13px}
.purchase-doc-list .badge{white-space:normal}
.purchase-entry-routes{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.purchase-entry-routes .surfacebody{padding:20px;display:grid;gap:16px;align-content:start}
.purchase-sheet-page .procurement-completion-form{max-width:none}
.purchase-sheet-page #incoming-quality-form>.field:has([name=criteria_reference]){grid-column:span 3}
.purchase-sheet-page #incoming-quality-form>.field:has([name=sample_count]){grid-column:span 2}
.purchase-sheet-page #incoming-quality-form>.field:has([name=result]){grid-column:1/-1}
.purchase-sheet-page #inventory-receiving-form fieldset>.field:has(:is(input[name^=location_],input[name^=lot_])){grid-column:span 2}
.purchase-sheet-page #inventory-receiving-form fieldset>.field:has(:is(select[name^=replacement_],select[name^=arrival_])){grid-column:1/-1}

/* Dialog scope is set only while an input form is open on /procurement. */
body #dialog[data-purchase-inputs]{width:min(640px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:hidden}
body #dialog[data-purchase-inputs=wide]{width:min(840px,calc(100vw - 32px))}
body #dialog[data-purchase-inputs][open]{display:flex;flex-direction:column}
body #dialog[data-purchase-inputs]>.dialoghead,body #dialog[data-purchase-inputs]>.dialogfoot{flex:none}
body #dialog[data-purchase-inputs]>.dialogbody{overflow:auto;min-height:0;padding:20px}
body #dialog[data-purchase-inputs]>.dialoghead{padding:18px 20px;gap:12px}
body #dialog[data-purchase-inputs]>.dialoghead h2{min-width:0;overflow-wrap:anywhere}
body #dialog[data-purchase-inputs]>.dialogfoot{padding:14px 20px;flex-wrap:wrap}
body #dialog[data-purchase-inputs] form,body #dialog[data-purchase-inputs] form fieldset{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px;align-items:start;min-width:0}
body #dialog[data-purchase-inputs] form> :is(p,div,section,details,fieldset),body #dialog[data-purchase-inputs] fieldset> :is(p,div,section,details){grid-column:1/-1;min-width:0}
body #dialog[data-purchase-inputs] .field:has(textarea),body #dialog[data-purchase-inputs] form>label:has(>input:is([type=checkbox],[type=radio])){grid-column:1/-1}
body #dialog[data-purchase-inputs] .field:has(:is(input[name=description],input[name=reference],input[name=pricing_basis],input[name=zero_reason],select[name=fee_key],input:is([type=checkbox],[type=radio]))){grid-column:1/-1}
body #dialog[data-purchase-inputs] fieldset{border:1px solid var(--line);border-radius:6px;padding:14px;margin:0}
body #dialog[data-purchase-inputs] legend{max-width:100%;font-size:13px;font-weight:650;padding:0 6px;overflow-wrap:anywhere}
body #dialog[data-purchase-inputs] form>button,body #dialog[data-purchase-inputs] fieldset>button{justify-self:start;max-width:100%}
body #dialog[data-purchase-inputs] fieldset>label:has(>input:is([type=checkbox],[type=radio])){grid-column:1/-1}

body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) :is(input,select,textarea){width:100%;max-width:100%;box-sizing:border-box;font-size:14px;line-height:1.5;padding:9px 11px;min-height:42px}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) textarea{min-height:74px;resize:vertical}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .fieldlabel{font-size:13px;line-height:1.45;margin-bottom:6px;overflow-wrap:anywhere}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .field:has(:required):not(:has(.required))>.fieldlabel:after{content:' *';color:#43685b}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) :is(p,summary){font-size:13px;line-height:1.65;overflow-wrap:anywhere}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) label:has(>input:is([type=checkbox],[type=radio])){display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.6;min-width:0;padding:4px 0}
body[data-workspace-design=precision] #dialog[data-purchase-inputs] .field>span:has(>input:is([type=checkbox],[type=radio])){display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.6}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) input:is([type=checkbox],[type=radio]){width:18px;height:18px;min-width:18px;min-height:18px;padding:0;flex:0 0 18px;margin:2px 0 0}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .field:has(>.dropdown-edit-button){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 6px;align-content:start}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .field:has(>.dropdown-edit-button)>.fieldlabel,body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .field:has(>.dropdown-edit-button)>.fieldhelp{grid-column:1/-1}
body[data-workspace-design=precision] :is(.purchase-sheet-page,#dialog[data-purchase-inputs]) .field>.dropdown-edit-button{margin:0;min-height:42px;padding:7px 9px;align-self:start;font-size:12px;white-space:nowrap}

@media(max-width:1200px){
  .purchase-sheet-page form,.purchase-sheet-page fieldset,.purchase-sheet-page .sheet-line-details{grid-template-columns:repeat(2,minmax(0,1fr))}
  .purchase-sheet-page .purchase-basic-group .field:has([name=title]),.purchase-sheet-page #procurement-order-form .purchase-basic-group .field,.purchase-sheet-page .sheet-line-details .field:has(:is([name=model_name],[name=manufacturer])){grid-column:auto}
  .purchase-sheet-page [data-cycle-line]>.field:has(:is([name=item_id],[name=request_id],[name=name])),.purchase-sheet-page [data-direct-line]>.field:has([name=item_id]){grid-column:1/-1}
  .purchase-sheet-page #incoming-quality-form>.field:has(:is([name=criteria_reference],[name=inspection_method],[name=sample_count])),.purchase-sheet-page #inventory-receiving-form fieldset>.field:has(:is(input[name^=location_],input[name^=lot_])){grid-column:1/-1}
}
@media(max-width:640px){
  .purchase-sheet-page form,.purchase-sheet-page fieldset,.purchase-sheet-page .sheet-line-details,.purchase-entry-routes{grid-template-columns:minmax(0,1fr)}
  .purchase-sheet-page form>.field:has(textarea),.purchase-sheet-page fieldset>.field:has(textarea),.purchase-sheet-page [data-cycle-line]>.field:has(:is([name=item_id],[name=request_id],[name=name])),.purchase-sheet-page [data-direct-line]>.field:has([name=item_id]){grid-column:1/-1}
  .purchase-sheet-page .surfacebody{padding:14px}.purchase-sheet-page fieldset{padding:12px}
  .purchase-sheet-actions{position:static;padding:12px;gap:8px}.purchase-sheet-actions [data-sheet-saved]{width:100%;margin:0}
  body #dialog[data-purchase-inputs] form,body #dialog[data-purchase-inputs] form fieldset{grid-template-columns:minmax(0,1fr)}
  body #dialog[data-purchase-inputs]>.dialogbody{padding:16px}
  body #dialog[data-purchase-inputs]>.dialogfoot>.button{white-space:normal}
}

/* Exact source and recovery messages must span the existing worksheet grid. */
.purchase-sheet-page #purchase-accounting-form>:is(#purchase-accounting-source,#purchase-accounting-recovery,#purchase-accounting-payables){grid-column:1/-1;min-width:0;overflow-wrap:anywhere}
