/* R4.3.0.10 — shared action layout. Business state and permissions are unchanged. */
:root {
  --ui-control-height: 44px;
  --ui-gap: 10px;
  --ui-padding: 18px;
  --ui-soft: #fbf5ef;
  --ui-line: #e5d7cd;
}
/* A common touch target, without turning document links or status badges into buttons. */
button.primary, button.secondary, button.danger-btn, a.button-link,
button.mini, button.admin-delete-mini, summary.button-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
  min-height: var(--ui-control-height) !important;
  padding: 10px 14px !important;
  border-radius: 12px !important;
  font-family: inherit;
  font-size: 13px !important;
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
  text-decoration: none !important;
  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  max-width: 100%;
  cursor: pointer;
}
button.secondary, a.button-link.secondary, summary.button-link.secondary {
  background: #f4e9df;
  color: #694c41;
  border: 1px solid #e2cfc1;
  box-shadow: none;
}
button.mini:not(.primary):not(.danger-btn) { background: #fffaf6; border: 1px solid var(--ui-line); color: #694c41; }
button.admin-delete-mini, button.danger-btn {
  border: 1px solid #e7caca;
  background: #fff5f4;
  color: #9b4947;
  box-shadow: none;
}
button:disabled { cursor: not-allowed; }
:is(button, a.button-link, summary, input, select, textarea):focus-visible { outline: 3px solid #b58666; outline-offset: 3px; }
.icon-button.dark { flex: 0 0 40px; width: 40px; height: 40px; padding: 0; border-radius: 50%; background: #f6efea; }
.action-group, .action-cluster, .split-actions, .movement-toolbar, .transfer-work-actions {
  display: flex; align-items: center; gap: var(--ui-gap); flex-wrap: wrap;
}
.action-cluster:empty, .section-toolbar:empty, .stock-card-actions:empty { display: none; }
.panel-head { gap: 16px; padding: var(--ui-padding); }
.panel-head > div:first-child { flex: 1 1 340px; min-width: 0; }
.panel-head > .action-group { flex: 0 1 auto; justify-content: flex-end; }
.panel-head > button { flex-shrink: 0; }
.panel-head h2 { line-height: 1.3; }
.panel-head p { line-height: 1.45; max-width: 85ch; }
.section-toolbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-gap);
  padding: 14px var(--ui-padding); border-bottom: 1px solid var(--ui-line); background: var(--ui-soft);
}
.section-toolbar > :is(button, a) { flex: 0 1 auto; }
.section-toolbar > a:last-child { margin-left: auto; }
.request-create-actions {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
}
.request-create-actions > button { width: 100%; min-height: 52px !important; }
.table-actions { min-width: 200px; }
.table-actions > .danger-btn { margin-left: 8px; }
/* The approved stock command panel. Closed transfer tiles share the row. */
.stock-command-panel { padding: var(--ui-padding); background: #fffcf9; }
.command-heading { font-size: 14px; margin: 0 0 12px; color: #806356; font-weight: 750; }
.utility-heading { margin-top: 18px; }
.stock-command-panel:not(:has(.stock-transfer-grid)) .utility-heading { margin-top: 0; }
.stock-command-panel:not(:has(.stock-utility-actions > *)) .utility-heading,
.stock-command-panel:not(:has(.stock-utility-actions > *)) .stock-utility-actions { display: none; }
.stock-command-panel:not(:has(.stock-transfer-grid, .stock-utility-actions > *)) { display: none; }
.stock-transfer-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 12px; }
.stock-transfer-grid > .transfer-workbench {
  width: 100%; min-width: 0; margin: 0; box-shadow: none; background: #fcf5ee; border-radius: 14px;
}
.stock-transfer-grid > .transfer-workbench:only-child,
.stock-transfer-grid > .transfer-workbench[open] { grid-column: 1 / -1; }
.stock-transfer-grid > .transfer-workbench > .workflow-summary { min-height: 66px; padding: 12px 14px; }
.stock-transfer-grid > .transfer-workbench:not([open]) > .workflow-summary p { display: none; }
.stock-transfer-grid > .transfer-workbench > .workflow-summary h2 { font-size: 15px; }
.stock-transfer-grid .workflow-summary > div:first-child { flex: 1; }
.stock-utility-actions {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0;
}
.stock-utility-actions > button { width: 100%; min-height: 52px !important; }
.stock-utility-actions:has(> :only-child) { grid-template-columns: 1fr; }
.stock-utility-actions:has(> :nth-child(2):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.transfer-work-card { gap: 14px; }
.transfer-work-actions { max-width: 390px; }
.transfer-work-actions > button { flex: 1 1 140px; }
/* Search stays wide. Filters and actions align on the same baseline. */
.toolbar { gap: 12px; padding: 14px var(--ui-padding); }
.toolbar > label { margin: 0; min-width: 0; }
.toolbar .grow { flex: 1 1 320px; }
.toolbar .grow > input, .supplier-toolbar input { width: 100%; max-width: none; }
.toolbar :is(input:not([type=checkbox]), select),
.stock-filter-grid :is(input:not([type=hidden]), select) {
  min-height: var(--ui-control-height); width: 100%; padding: 10px 12px;
  border: 1px solid var(--ui-line); border-radius: 10px; background: #fffdfb; font: inherit; color: #4c3d36;
}
.stock-filter-grid { column-gap: 12px; row-gap: 14px; padding: var(--ui-padding); }
.stock-filter-actions { display: flex; flex-wrap: nowrap; gap: 10px; align-self: end; }
.stock-filter-actions > * { flex: 0 0 auto; }
@media (min-width: 901px) {
  .stock-name-filter { grid-column: 1 / 4; }
  .stock-filter-actions { grid-column: 4 / 6; }
}
.receipt-search label { flex: 1 1 320px; }
.receipt-search-count { min-width: 0; padding-bottom: 12px; }
.audit-filter { display: grid; grid-template-columns: minmax(260px, 2fr) repeat(3, minmax(125px, 1fr)) auto auto; }
.audit-filter .grow { min-width: 0; }
/* Material / quantity / next action: one stable rhythm in both queues. */
.need-card, .receive-card { grid-template-columns: minmax(0, 1fr) minmax(105px, 150px) minmax(145px, 180px); gap: 18px; align-items: center; }
.need-card > div:first-child, .receive-card > div:first-child { min-width: 0; overflow-wrap: anywhere; }
.need-card > button, .receive-card > button { width: 100%; justify-self: stretch; }
.receive-card:has(.receipt-actions) { grid-template-columns: minmax(0, 1fr) minmax(105px, 150px); }
.receipt-actions { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); width: 100%; padding-top: 12px; border-top: 1px solid var(--ui-line); }
.receipt-actions > button { width: 100%; }
.supply-attachments, .detail-attachments { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.detail-attachments > h4 { flex-basis: 100%; margin-bottom: 0; }
.workflow-summary { gap: 16px; }
.workflow-summary > .workflow-summary-actions { margin-left: auto; flex-shrink: 0; }
.workflow-summary h2 { overflow-wrap: anywhere; }
/* Kits: issue/print, composition, and destructive operations remain separate. */
.demand-launcher { grid-template-columns: repeat(auto-fit, minmax(min(270px, 100%), 1fr)); gap: 12px; }
.demand-launch-card { min-height: 94px; padding: 16px; gap: 14px; }
.demand-kit-actions { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px; padding: 14px var(--ui-padding); }
.kit-selection-actions { border-left: 1px solid var(--ui-line); padding-left: 16px; }
.cluster-label { flex-basis: 100%; color: #7d6b64; font-size: 11px; font-weight: 700; }
.destructive-actions { border-left: 1px solid var(--ui-line); padding-left: 16px; }
.demand-task-summary { flex-wrap: wrap; gap: 10px; }
.demand-task-title { flex: 1 1 240px; min-width: 0; }
.mass-line-actions { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 0; }
.mass-line-actions > button { width: 100%; }
.not-issue-choice, .optional-choice { min-height: 40px; padding: 6px 8px; border-radius: 8px; }
/* Forms use labelled sections; actions are reachable in long dialogs. */
.modal { overflow-y: auto; overscroll-behavior: contain; }
.modal > form { padding: 20px; }
.modal > .modal-head { margin: 0; padding: 18px 20px; border-bottom: 1px solid var(--ui-line); }
.modal > #entityDetailBody { padding: 18px 20px; }
.modal > form > .modal-actions, #stockItemAddressEditor > .modal-actions {
  position: sticky; bottom: -20px; z-index: 5; margin: 20px -20px -20px;
  padding: 14px 20px; background: #fffaf6; border-top: 1px solid var(--ui-line);
}
.modal > .modal-actions { position: sticky; bottom: 0; z-index: 5; background: #fffaf6; padding: 14px 20px; margin: 0; }
.modal-actions { flex-wrap: wrap; gap: 10px; }
.modal-actions > :is(button, a) { min-width: 110px; }
.modal label, .form-section label { min-width: 0; }
.modal :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select) { min-height: var(--ui-control-height); }
.form-section { min-width: 0; margin: 16px 0; padding: 12px 16px 16px; border: 1px solid var(--ui-line); border-radius: 12px; background: #fffdfb; }
.form-section legend { padding: 0 7px; font-size: 13px; font-weight: 750; color: #795747; }
.form-section > label:last-child { margin-bottom: 0; }
.form-section-actions { display: flex; justify-content: flex-end; padding-top: 8px; }
.settlement-form > summary { cursor: pointer; min-height: 44px; padding: 10px; color: #694c41; font-weight: 750; }
.settlement-form > form { padding: 12px; }
.request-line, .request-line-labels { grid-template-columns: minmax(110px, 1fr) minmax(180px, 2fr) minmax(80px, .7fr) minmax(65px, .5fr) minmax(125px, 1fr) 44px; gap: 10px; }
.request-line { padding: 12px; border: 1px solid var(--ui-line); border-radius: 12px; background: #fffdfb; margin-bottom: 12px; }
.request-line-labels { padding: 0 12px; }
.request-line .autocomplete { grid-column: auto; }
.request-line .remove-line { width: 44px; height: 44px; grid-column: auto; }
.section-help { font-size: 12px; line-height: 1.4; color: #7d6b64; margin: 6px 0 14px; }
.stock-card-actions { padding: 14px; margin: 16px 0; border: 1px solid var(--ui-line); border-radius: 12px; background: var(--ui-soft); }
.stock-card-actions > button { flex: 1 1 200px; }
.storage-location-row .split-actions { margin: 0; flex-wrap: wrap; }
.storage-location-row .danger-btn { margin-left: 6px; }
.stock-count-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.storage-location-head { flex-wrap: wrap; gap: 10px; }
.storage-location-section > h4 { margin-bottom: 4px; }
/* Employee editing is distinct from account access actions. No hidden permissions. */
td.actions-cell { display: table-cell; min-width: 245px; }
.user-edit-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 8px; gap: 8px; }
.inline-more { width: 100%; }
.inline-more > summary { width: 100%; list-style: none; }
.inline-more > summary::-webkit-details-marker { display: none; }
.inline-more[open] > summary { margin-bottom: 8px; }
.user-access-actions { display: grid; grid-template-columns: 1fr; padding: 8px; background: #fbf5ef; border: 1px solid var(--ui-line); border-radius: 10px; }
/* Print controls are on screen only; the warehouse statement itself is unchanged. */
body .print-toolbar { flex-wrap: wrap; gap: 12px; align-items: flex-end; padding: 14px; border: 1px solid #e5d7cd; border-radius: 14px; background: #fffcf9; }
body .print-toolbar label { flex: 1 1 320px; margin: 0; }
body .print-toolbar select { width: 100%; min-width: 0; min-height: 44px; border-radius: 10px; font-size: 13px; }
body .print-toolbar button { min-height: 44px; padding: 10px 18px; border-radius: 12px; font-size: 13px; }
@media (max-width: 1150px) {
  .panel-head { flex-wrap: wrap; }
  .audit-filter { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .audit-filter > .grow { grid-column: 1 / -1; }
  .kit-selection-actions { flex: 1 1 100%; border-left: 0; border-top: 1px solid var(--ui-line); padding: 12px 0 0; }
}
@media (max-width: 900px) {
  .stock-utility-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stock-transfer-grid { grid-template-columns: 1fr; }
  .request-line { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .request-line-labels { display: none; }
  .request-line .autocomplete { grid-column: 1 / -1; }
  .request-line .remove-line { justify-self: end; }
  .need-card, .receive-card { grid-template-columns: minmax(0, 1fr) minmax(105px, 150px); }
  .need-card > button, .receive-card > button { grid-column: 1 / -1; width: auto; justify-self: end; min-width: 160px; }
  .receipt-actions { grid-template-columns: 1fr; }
  .stock-filter-actions { grid-column: 1 / -1; justify-content: flex-end; }
}
@media (max-width: 620px) {
  :root { --ui-padding: 14px; }
  .panel-head > div:first-child { flex-basis: auto; }
  .panel-head > button, .panel-head > .action-group { width: 100%; }
  .workflow-summary { flex-direction: row; align-items: center; }
  .workflow-summary > div:first-child { flex: 1; }
  .stock-utility-actions, .stock-utility-actions:has(> :nth-child(2):last-child) { grid-template-columns: 1fr; }
  .section-toolbar > :is(button, a) { flex: 1 1 180px; margin-left: 0; }
  .kit-primary-actions, .kit-selection-actions, .destructive-actions { width: 100%; }
  .kit-primary-actions > button, .kit-selection-actions > button { flex: 1 1 160px; }
  .destructive-actions { border-left: 0; padding-left: 0; }
  .modal > form { padding: 16px; }
  .modal > form > .modal-actions, #stockItemAddressEditor > .modal-actions { bottom: -16px; margin: 16px -16px -16px; padding: 12px 16px; }
  .modal-actions > :is(button, a) { flex: 1 1 120px; min-width: 0; }
  .audit-filter { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .audit-filter > * { min-width: 0; }
  .need-card, .receive-card, .receive-card:has(.receipt-actions) { grid-template-columns: 1fr; }
  .need-card > button, .receive-card > button { width: 100%; }
  .storage-location-row .split-actions { width: 100%; }
  .storage-location-row .split-actions > button { flex: 1 1 110px; }
  .stock-filter-grid { grid-template-columns: 1fr; }
  .stock-filter-actions > * { flex: 1; }
}
@media print {
  body .print-toolbar { display: none !important; }
  .modal-actions { position: static !important; }
}
/* Native hidden state wins over form layout, including modal labels. */
[hidden] { display: none !important; }

/* R4.3.0.12: unresolved source rows remain visible without issue actions. */
.auto-demand-line.selection-review{background:#fff7e8;border-left:4px solid #b87b28}.demand-review-notice{border-left:4px solid #b87b28}.source-quantity{overflow-wrap:anywhere}

/* Quantity entry uses the same readable layout on tablet and desktop. */
.issue-quantity-modal{width:min(640px,calc(100vw - 32px));}
.issue-quantity-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0;}
.issue-quantity-summary>div{border:1px solid var(--line,#ded5ce);border-radius:14px;padding:14px;display:grid;gap:8px;}
.issue-quantity-summary span{font-size:14px;color:var(--muted,#70665e);}
.issue-quantity-summary b{font-size:20px;overflow-wrap:anywhere;}
.issue-quantity-modal label{display:grid;gap:8px;font-weight:600;}
.issue-progress{align-self:flex-start;margin-top:8px;white-space:normal;}
.issue-excess{font-weight:700;color:#895026;}
@media(max-width:560px){.issue-quantity-summary{grid-template-columns:1fr;gap:8px;}.issue-quantity-summary>div{grid-template-columns:1fr auto;padding:10px;align-items:center;}.issue-quantity-summary b{font-size:18px;}}

/* .24: reserve space for the complete action group, never squeeze captions into letters. */
#supplyNeedList .need-card {
  grid-template-columns: minmax(0, 1fr) minmax(110px, 160px) minmax(420px, 440px);
  gap: 12px 18px;
}
#supplyNeedList .need-qty { min-width: 0; white-space: normal; }
#supplyNeedList .need-actions {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;
  gap: 8px; min-width: 0; width: 100%;
}
#supplyNeedList .need-actions > button {
  flex: 0 0 auto; min-width: 104px; max-width: 100%;
  white-space: nowrap; overflow-wrap: normal; word-break: normal;
}
#supplyNeedList .need-actions > button:only-of-type { min-width: 152px; }
#supplyNeedList .need-actions > .need-select22 {
  flex: 0 0 20px; width: 20px; height: 20px; margin: 0;
}
@media (max-width: 1150px) {
  #supplyNeedList .need-card { grid-template-columns: minmax(0, 1fr) minmax(110px, 160px); }
  #supplyNeedList .need-actions { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
  #supplyNeedList .need-card { grid-template-columns: minmax(0, 1fr); gap: 10px; }
  #supplyNeedList .need-actions { justify-content: flex-start; }
}
