/* =============================================================================
   Step 3 — ERP Page Design System (unifying layer)
   Presentation only. Extends existing UI-1.* sheets; does not replace them.
   Load AFTER os-buttons-theme.css.
   ============================================================================= */

:root {
  --os-erp-density-row: var(--os-grid-row-height, 30px);
  --os-erp-density-header-row: var(--os-grid-header-row-height, 28px);
  --os-erp-density-control: 32px;
  --os-erp-density-gap: 0.5rem;
  --os-erp-density-pad: 0.75rem 1rem;
  --os-erp-popup-width-sm: 28rem;
  --os-erp-popup-width-md: 40rem;
  --os-erp-popup-width-lg: 56rem;
  --os-erp-popup-max-height: 85vh;
  --os-erp-badge-radius: 999px;
  --os-erp-card-radius: var(--os-erp-radius, 0.5rem);
  --os-erp-panel-border: var(--os-erp-chrome-border, var(--os-color-border, #c8c8c8));
  --os-form-row-height: 28px;
  --os-form-label-width: 8.75rem;
  --os-section-title-height: 1.65rem;
}

body.os-erp-page-system.os-module-shell .os-app-main {
  --os-content-gap: var(--os-erp-density-gap);
}

/* ---------- Page root ---------- */
body.os-erp-page-system main .os-erp-page,
body.os-erp-page-system main [data-os-erp-page="true"] {
  display: flex;
  flex-direction: column;
  gap: var(--os-erp-density-gap);
  min-width: 0;
}

/* Compact section titles — LocalInvoice/Edit bar */
body.os-erp-page-system .os-desktop-section-title,
body.os-erp-page-system .aps-site-section-title,
body.os-erp-page-system .ags-farms-section-title,
body.os-erp-page-system .os-section__header,
body.os-erp-page-system .os-erp-page .card-header,
body.os-erp-page-system .ags-harvest-panel__title,
body.os-erp-page-system .ags-harvest-section__title,
body.os-erp-page-system .ags-protection-panel__title,
body.os-erp-page-system .ags-protection-section__title,
body.os-erp-page-system .ags-plantation-panel__title,
body.os-erp-page-system .ags-plantation-section__title,
body.os-erp-page-system .ags-fertigation-panel__title,
body.os-erp-page-system .ags-operations-panel__title,
body.os-erp-page-system .ags-operations-section__title,
body.os-erp-page-system .ags-compost-production-panel__title,
body.os-erp-page-system .ags-product-drying-panel__title {
  box-sizing: border-box;
  height: var(--os-section-title-height, 1.65rem);
  min-height: var(--os-section-title-height, 1.65rem);
  display: flex;
  align-items: center;
  margin: 0;
  padding: 0 0.65rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  border-radius: 0;
  background: var(--os-color-section-title-bg, #eef1f4);
  color: var(--os-color-section-title-text, var(--os-color-text));
}

body.os-erp-page-system .os-desktop-section-title.os-section-title--with-actions {
  height: auto;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem 0.65rem;
}

/* ---------- Panels / cards ---------- */
body.os-erp-page-system .os-erp-panel,
body.os-erp-page-system .os-erp-card,
body.os-erp-page-system .prs-content-panel,
body.os-erp-page-system .module-main-dashboard,
body.os-erp-page-system .os-erp-page > .card,
body.os-erp-page-system .os-erp-page .card:not(.text-bg-primary):not(.text-bg-success):not(.text-bg-danger),
body.os-erp-page-system .os-erp-page .os-section,
body.os-erp-page-system .ags-harvest-panel,
body.os-erp-page-system .ags-harvest-diary-panel,
body.os-erp-page-system .ags-protection-panel,
body.os-erp-page-system .ags-plantation-panel,
body.os-erp-page-system .ags-fertigation-panel,
body.os-erp-page-system .ags-operations-panel,
body.os-erp-page-system .ags-compost-production-panel,
body.os-erp-page-system .ags-transportation-panel,
body.os-erp-page-system .ags-transportation-order-card,
body.os-erp-page-system .ags-product-drying-panel,
body.os-erp-page-system .ags-protection-details-panel,
body.os-erp-page-system .ags-fertigation-details-panel,
body.os-erp-page-system .ags-product-drying-op-card,
body.os-erp-page-system .os-erp-data-table-host,
body.os-erp-page-system .os-page-table-view:not(.os-grid-container) {
  border: 1px solid var(--os-erp-panel-border);
  border-radius: var(--os-erp-card-radius);
  background: var(--os-color-surface, var(--os-erp-shell-panel, #fff));
}

body.os-erp-page-system .os-erp-card {
  padding: var(--os-erp-density-pad);
}

body.os-erp-page-system .prs-content-panel {
  padding: 0.5rem;
}

/* ---------- Badges ---------- */
.os-erp-badge,
body.os-erp-page-system .badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  min-height: 1.25rem;
  padding: 0.1rem 0.45rem;
  border-radius: var(--os-erp-badge-radius);
  font-size: 0.7rem;
  font-weight: 700;
  line-height: 1.2;
  border: 1px solid transparent;
}

.os-erp-badge--success,
body.os-erp-page-system .badge.text-bg-success {
  background: color-mix(in srgb, var(--os-success, #198754) 14%, transparent);
  color: var(--os-success, #198754);
  border-color: color-mix(in srgb, var(--os-success, #198754) 35%, transparent);
}

.os-erp-badge--warning,
body.os-erp-page-system .badge.text-bg-warning {
  background: color-mix(in srgb, var(--os-warning, #b78103) 14%, transparent);
  color: var(--os-warning, #b78103);
  border-color: color-mix(in srgb, var(--os-warning, #b78103) 35%, transparent);
}

.os-erp-badge--danger,
body.os-erp-page-system .badge.text-bg-danger {
  background: color-mix(in srgb, var(--os-danger, #c0392b) 12%, transparent);
  color: var(--os-danger, #c0392b);
  border-color: color-mix(in srgb, var(--os-danger, #c0392b) 35%, transparent);
}

.os-erp-badge--info,
body.os-erp-page-system .badge.text-bg-info,
body.os-erp-page-system .badge.text-bg-primary {
  background: color-mix(in srgb, var(--os-info, #0d6efd) 12%, transparent);
  color: var(--os-info, #0d6efd);
  border-color: color-mix(in srgb, var(--os-info, #0d6efd) 35%, transparent);
}

.os-erp-badge--muted {
  background: var(--os-color-surface-muted, #f1f3f5);
  color: var(--os-color-text-muted);
  border-color: var(--os-erp-panel-border);
}

/* ---------- Tabs ---------- */
body.os-erp-page-system .os-erp-tabs,
body.os-erp-page-system .nav-tabs {
  gap: 0.15rem;
  border-bottom-color: var(--os-erp-panel-border);
}

body.os-erp-page-system .os-erp-tabs .nav-link,
body.os-erp-page-system .nav-tabs .nav-link {
  min-height: var(--os-erp-density-control);
  padding: 0.35rem 0.75rem;
  font-size: 0.8125rem;
  font-weight: 650;
  border-radius: 0.4rem 0.4rem 0 0;
}

body.os-erp-page-system .nav-tabs .nav-link.active {
  border-color: var(--os-erp-panel-border);
  border-bottom-color: var(--os-color-surface, #fff);
  color: var(--os-color-primary);
}

/* ---------- Buttons: primary vs secondary clarity ---------- */
body.os-erp-page-system .os-page-toolbar .btn-primary,
body.os-erp-page-system [data-os-toolbar="new"].btn,
body.os-erp-page-system [data-os-toolbar="save"].btn-success,
body.os-erp-page-system .os-erp-btn--primary {
  font-weight: 700;
}

body.os-erp-page-system .os-page-toolbar .btn-outline-secondary,
body.os-erp-page-system .os-page-toolbar .btn-outline-primary,
body.os-erp-page-system .os-erp-btn--secondary {
  font-weight: 600;
}

/* ---------- Grids: compact density reinforcement ---------- */
body.os-erp-page-system .os-dx-grid .dx-datagrid-rowsview .dx-row > td,
body.os-erp-page-system .os-dx-grid .dx-datagrid-headers .dx-header-row > td {
  min-height: var(--os-erp-density-row);
}

body.os-erp-page-system .os-dx-grid .dx-datagrid-pager {
  min-height: var(--os-erp-density-control);
  padding-block: 0.2rem;
}

body.os-erp-page-system .os-erp-pagination,
body.os-erp-page-system .pagination {
  --bs-pagination-padding-y: 0.25rem;
  --bs-pagination-padding-x: 0.55rem;
  --bs-pagination-font-size: 0.8125rem;
  gap: 0.15rem;
}

/* ---------- Filters / search ---------- */
body.os-erp-page-system .os-module-toolbar,
body.os-erp-page-system .os-filter-bar {
  gap: var(--os-erp-density-gap);
}

body.os-erp-page-system .os-app-header-search input,
body.os-erp-page-system .os-page-grid-search input {
  min-height: var(--os-erp-density-control);
}

/* ---------- Popups: consistent sizes ---------- */
body.os-erp-page-system .modal-dialog.modal-sm,
body.os-erp-page-system .os-erp-dialog--sm {
  max-width: var(--os-erp-popup-width-sm);
}

body.os-erp-page-system .modal-dialog,
body.os-erp-page-system .os-erp-dialog--md {
  max-width: var(--os-erp-popup-width-md);
}

body.os-erp-page-system .modal-dialog.modal-lg,
body.os-erp-page-system .os-erp-dialog--lg {
  max-width: var(--os-erp-popup-width-lg);
}

body.os-erp-page-system .modal-content,
body.os-erp-page-system .os-confirm-dialog,
body.os-erp-page-system .dx-overlay-wrapper.dx-popup-wrapper:not(.dx-dropdowneditor-overlay) > .dx-overlay-content.dx-popup-normal {
  max-height: var(--os-erp-popup-max-height);
}

/* ---------- States ---------- */
.os-erp-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 1.5rem 1rem;
  text-align: center;
  border: 1px dashed var(--os-erp-panel-border);
  border-radius: var(--os-erp-card-radius);
  background: color-mix(in srgb, var(--os-color-surface) 92%, transparent);
  color: var(--os-color-text-muted);
}

.os-erp-state__icon {
  font-size: 1.5rem;
  opacity: 0.85;
}

.os-erp-state__title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 750;
  color: var(--os-color-text);
}

.os-erp-state__text {
  margin: 0;
  max-width: 36rem;
  font-size: 0.84rem;
}

.os-erp-state--loading {
  border-style: solid;
}

.os-erp-state--error {
  border-color: color-mix(in srgb, var(--os-danger, #c0392b) 45%, var(--os-erp-panel-border));
  background: color-mix(in srgb, var(--os-danger, #c0392b) 6%, var(--os-color-surface));
}

.os-erp-state--forbidden {
  border-color: color-mix(in srgb, var(--os-warning, #b78103) 45%, var(--os-erp-panel-border));
  background: color-mix(in srgb, var(--os-warning, #b78103) 8%, var(--os-color-surface));
}

/* Progressive: muted empty copy → empty state look */
body.os-erp-page-system [data-os-erp-empty="true"],
body.os-erp-page-system p.text-muted.mb-0:only-child {
  /* keep simple paragraphs readable; enhancer adds class for stronger chrome */
}

body.os-erp-page-system .os-erp-state.os-erp-state--empty {
  min-height: 8rem;
}

/* Loading grids */
body.os-erp-page-system .os-dx-grid[aria-busy="true"] {
  position: relative;
  min-height: 8rem;
}

body.os-erp-page-system .os-dx-grid[aria-busy="true"]::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in srgb, var(--os-color-primary) 6%, transparent),
    transparent
  );
  background-size: 200% 100%;
  animation: os-erp-page-shimmer 1.2s linear infinite;
  opacity: 0.55;
}

@keyframes os-erp-page-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}

/* ---------- Forms density ---------- */
body.os-erp-page-system .os-erp-page .form-control:not(textarea),
body.os-erp-page-system .os-erp-page .form-select {
  min-height: var(--os-form-row-height, 28px);
}

body.os-erp-page-system .os-filter-bar .form-control:not(textarea),
body.os-erp-page-system .os-page-grid-search .form-control:not(textarea),
body.os-erp-page-system .os-module-toolbar .form-control:not(textarea),
body.os-erp-page-system .os-filter-bar .form-select,
body.os-erp-page-system .os-page-grid-search .form-select,
body.os-erp-page-system .os-module-toolbar .form-select {
  min-height: var(--os-erp-density-control);
}

/* ---------- Validation ---------- */
body.os-erp-page-system .field-validation-error,
body.os-erp-page-system .text-danger.field-validation-error {
  font-size: 0.75rem;
  font-weight: 600;
}

body.os-erp-page-system .input-validation-error,
body.os-erp-page-system .form-control.is-invalid {
  border-color: var(--os-danger, #c0392b) !important;
}

/* ---------- RTL ---------- */
html[dir="rtl"] body.os-erp-page-system .os-erp-state,
html[dir="rtl"] body.os-erp-page-system .nav-tabs .nav-link {
  text-align: right;
}

/* ---------- Responsive ---------- */
@media (max-width: 991.98px) {
  body.os-erp-page-system main .os-erp-page,
  body.os-erp-page-system main [data-os-erp-page="true"] {
    gap: 0.65rem;
  }

  body.os-erp-page-system .os-erp-card {
    padding: 0.65rem 0.75rem;
  }
}

/* Permission-aware: server may omit actions; client never invents access */
body.os-erp-page-system [data-os-permission-denied="true"] {
  display: none !important;
}

/* ---------- Relation trails (Step 4) ---------- */
.os-erp-relation-trail {
  padding: 0.55rem 0.75rem;
}

.os-erp-relation-trail__title {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--os-color-text-muted);
  margin-bottom: 0.35rem;
}

.os-erp-relation-trail__steps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.35rem;
  list-style: none;
  margin: 0;
  padding: 0;
  align-items: center;
}

.os-erp-relation-trail__step {
  display: inline-flex;
  align-items: center;
  font-size: 0.8rem;
}

.os-erp-relation-trail__step:not(:last-child)::after {
  content: "›";
  margin-inline-start: 0.35rem;
  color: var(--os-color-text-muted);
  opacity: 0.75;
}

html[dir="rtl"] .os-erp-relation-trail__step:not(:last-child)::after {
  content: "‹";
}

.os-erp-relation-trail__link {
  color: var(--os-color-link, var(--os-color-primary));
  text-decoration: none;
}

.os-erp-relation-trail__link:hover,
.os-erp-relation-trail__link:focus-visible {
  text-decoration: underline;
}

.os-erp-relation-trail__step.is-active .os-erp-relation-trail__label {
  font-weight: 750;
  color: var(--os-color-text);
}

@media (max-width: 991.98px) {
  .os-erp-relation-trail__steps {
    gap: 0.2rem 0.25rem;
  }
}

/* Step 8 — print-friendly report/document surfaces */
@media print {
  body.os-erp-page-system .os-erp-no-print,
  body.os-erp-page-system .os-module-toolbar,
  body.os-erp-page-system .navbar,
  body.os-erp-page-system footer {
    display: none !important;
  }

  body.os-erp-page-system .os-erp-print-surface {
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  body.os-erp-page-system .os-erp-panel,
  body.os-erp-page-system .os-erp-card {
    break-inside: avoid;
    box-shadow: none !important;
    border-color: #ccc !important;
  }

  body.os-erp-page-system a[href]::after {
    content: none !important;
  }
}

/* Native HTML tables/grids: host owns X (and Y when rows exceed). Page never does. */
:root {
  --os-table-scroll-max-height: calc(100dvh - var(--os-sticky-topbar, 0px) - var(--os-sticky-filter, 0px) - var(--os-page-title-bar-height-px, 0px) - 2.5rem);
  --os-table-col-min-width: 5.5rem;
  --os-table-col-max-width: 16rem;
}

html main .os-erp-panel:has(.os-erp-data-table-host, .os-native-table-scroll, .table-responsive, table.os-erp-data-table),
html main .os-erp-card:has(.os-erp-data-table-host, .os-native-table-scroll, .table-responsive, table.os-erp-data-table),
html main .prs-content-panel:has(.os-erp-data-table-host, .os-native-table-scroll, .table-responsive, table.os-erp-data-table),
html main .os-erp-page-shell:has(.os-erp-data-table-host, .os-native-table-scroll, .table-responsive, table.os-erp-data-table) {
  min-width: 0;
  max-width: 100%;
}

html main .os-erp-data-table-host,
html main .os-native-table-scroll,
html main .os-page-table-view.os-page-grid-view,
html:not([data-os-grid-scroll="internal"]) main .os-page-table-view:not(.os-grid-container):not([data-os-grid-internal-scroll="1"]),
html main .table-responsive:not(:has(.dx-datagrid)):not(:has(.os-dx-grid)):not(:has(.os-desktop-form-table)):not(:has(.aps-site-table)) {
  display: block;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: auto !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  max-height: var(--os-table-scroll-max-height);
}

html main .os-erp-data-table-host table.table:not(.os-desktop-form-table):not(.aps-site-table),
html main .os-native-table-scroll table.table:not(.os-desktop-form-table):not(.aps-site-table),
html main .os-page-table-view table.table:not(.os-desktop-form-table):not(.aps-site-table),
html main .table-responsive:not(:has(.dx-datagrid)):not(:has(.os-dx-grid)):not(:has(.os-desktop-form-table)):not(:has(.aps-site-table)) table.table:not(.os-desktop-form-table):not(.aps-site-table),
html main table.os-erp-data-table {
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
  table-layout: auto !important;
}

html main .os-erp-data-table-host table.table:not(.os-desktop-form-table):not(.aps-site-table) > :not(caption) > tr > *:not(.os-row-actions-col):not(.os-row-actions-cell):not([colspan]),
html main .os-native-table-scroll table.table:not(.os-desktop-form-table):not(.aps-site-table) > :not(caption) > tr > *:not(.os-row-actions-col):not(.os-row-actions-cell):not([colspan]),
html main .os-page-table-view table.table:not(.os-desktop-form-table):not(.aps-site-table) > :not(caption) > tr > *:not(.os-row-actions-col):not(.os-row-actions-cell):not([colspan]),
html main .table-responsive:not(:has(.dx-datagrid)):not(:has(.os-dx-grid)):not(:has(.os-desktop-form-table)) table.table:not(.os-desktop-form-table):not(.aps-site-table) > :not(caption) > tr > *:not(.os-row-actions-col):not(.os-row-actions-cell):not([colspan]),
html main table.os-erp-data-table > :not(caption) > tr > *:not(.os-row-actions-col):not(.os-row-actions-cell):not([colspan]) {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.35;
  height: auto;
  min-width: var(--os-table-col-min-width);
  max-width: var(--os-table-col-max-width);
  overflow: visible;
}

html main table.os-erp-data-table > thead > tr > th.os-row-actions-col,
html main table.os-erp-data-table > tbody > tr > td.os-row-actions-cell,
html main .os-erp-data-table-host th.os-row-actions-col,
html main .os-erp-data-table-host td.os-row-actions-cell,
html main .os-native-table-scroll th.os-row-actions-col,
html main .os-native-table-scroll td.os-row-actions-cell,
html main .table-responsive th.os-row-actions-col,
html main .table-responsive td.os-row-actions-cell {
  white-space: nowrap;
  overflow: visible;
}

main .os-erp-data-table-host table.os-erp-data-table > thead > tr > th,
main .os-page-table-view > table > thead > tr > th,
main .os-native-table-scroll > table > thead > tr > th,
main .table-responsive:not(:has(.dx-datagrid)) > table > thead > tr > th,
main table.os-erp-data-table > thead > tr > th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--os-table-header-bg, var(--os-color-grid-header, #f3f6f9));
  box-shadow: inset 0 -1px 0 var(--os-table-border, var(--os-color-border, #dee2e6));
}

main .table-responsive .table-responsive,
main .os-page-table-view .table-responsive,
main .os-native-table-scroll .table-responsive,
.ags-harvest-drying-block .table-responsive,
.dropdown-menu .table-responsive,
.modal .table-responsive {
  flex: 0 1 auto;
  max-height: min(16rem, 40vh);
}

[data-os-table-scroll="off"] {
  max-height: none !important;
  overflow-y: visible !important;
  overflow-x: auto !important;
}

/* =============================================================================
   LocalInvoice/Edit visual contract — shared aliases (presentation only)
   Do not copy .prs-li-* page grid here.
   ============================================================================= */

/* Page header actions: compact gap like the master desk */
body.os-erp-page-system .os-erp-page-header__row,
body.os-erp-page-system .os-erp-page-header .os-title-actions-row {
  gap: 0.35rem 0.75rem;
}

body.os-erp-page-system .os-erp-page-header .btn.os-erp-page-control + .btn.os-erp-page-control {
  margin-inline-start: 0;
}

/* Bootstrap stacked fields → label | value hairline row (no HTML conversion) */
body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label):has(> .form-control, > .form-select, > .input-group):not(:has(> .row)):not(:has(table)),
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label):has(> .form-control, > .form-select, > .input-group):not(:has(> .row)):not(:has(table)),
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label):has(> .form-control, > .form-select, > .input-group):not(:has(table)),
body.os-erp-page-system .ags-harvest-field:has(> .form-label),
body.os-erp-page-system .ags-plantation-field:has(> .form-label),
body.os-erp-page-system .ags-operations-field:has(> .form-label),
body.os-erp-page-system .ags-protection-field:has(> .form-label),
body.os-erp-page-system .ags-fertigation-field:has(> .form-label) {
  display: grid;
  grid-template-columns: var(--os-form-label-width, 8.75rem) minmax(0, 1fr);
  align-items: stretch;
  column-gap: 0;
  margin-bottom: 0;
  min-height: var(--os-form-row-height, 28px);
  border: 1px solid var(--os-color-form-border, #c8c8c8);
  background: var(--os-color-form-control-bg, #fff);
}

body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .form-label,
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label) > .form-label,
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label) > .form-label,
body.os-erp-page-system .ags-harvest-field > .form-label,
body.os-erp-page-system .ags-plantation-field > .form-label,
body.os-erp-page-system .ags-operations-field > .form-label,
body.os-erp-page-system .ags-protection-field > .form-label,
body.os-erp-page-system .ags-fertigation-field > .form-label {
  grid-column: 1;
  display: flex;
  align-items: center;
  margin: 0;
  padding: 0 0.35rem;
  min-height: var(--os-form-row-height, 28px);
  background: var(--os-color-form-label, #e8e8e8);
  color: var(--os-color-form-label-text, #334155);
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.2;
  border-right: 1px solid var(--os-color-form-border, #c8c8c8);
}

body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .form-control,
body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .form-select,
body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .input-group,
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label) > .form-control,
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label) > .form-select,
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label) > .form-control,
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label) > .form-select,
body.os-erp-page-system .ags-harvest-field > .form-control,
body.os-erp-page-system .ags-harvest-field > .form-select,
body.os-erp-page-system .ags-plantation-field > .form-control,
body.os-erp-page-system .ags-plantation-field > .form-select,
body.os-erp-page-system .ags-operations-field > .form-control,
body.os-erp-page-system .ags-operations-field > .form-select,
body.os-erp-page-system .ags-protection-field > .form-control,
body.os-erp-page-system .ags-protection-field > .form-select,
body.os-erp-page-system .ags-fertigation-field > .form-control,
body.os-erp-page-system .ags-fertigation-field > .form-select {
  grid-column: 2;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  min-height: var(--os-form-row-height, 28px);
  height: var(--os-form-row-height, 28px);
  padding: 0 0.35rem;
  font-size: 0.82rem;
  background: var(--os-color-form-control-bg, #fff);
  color: var(--os-color-form-label-text, #334155);
}

body.os-erp-page-system .os-desktop-form textarea.form-control,
body.os-erp-page-system form.os-erp-form textarea.form-control,
body.os-erp-page-system .ags-harvest-field > textarea.form-control {
  height: auto;
  min-height: 3.2rem;
  line-height: 1.35;
  padding: 0.25rem 0.35rem;
}

body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .form-control:focus,
body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label) > .form-select:focus,
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label) > .form-control:focus,
body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label) > .form-select:focus,
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label) > .form-control:focus,
body.os-erp-page-system form.os-erp-form .mb-3:has(> .form-label) > .form-select:focus {
  box-shadow: inset 0 0 0 1px var(--os-color-form-border, #c8c8c8) !important;
  outline: none;
}

body.os-erp-page-system .os-desktop-form .row {
  --bs-gutter-x: 0;
  --bs-gutter-y: 0;
}

body.os-erp-page-system .os-desktop-form .row > [class*="col-"] + [class*="col-"] {
  margin-inline-start: -1px;
}

body.os-erp-page-system .os-desktop-form .row + .row {
  margin-top: -1px;
}

/* Checkboxes / radios — compact, aligned to form-row density */
body.os-erp-page-system .os-erp-page .form-check {
  min-height: var(--os-form-row-height, 28px);
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding-left: 0;
  margin-bottom: 0;
}

body.os-erp-page-system .os-erp-page .form-check-input {
  width: 0.95rem;
  height: 0.95rem;
  margin-top: 0;
  border-color: var(--os-color-form-border, #c8c8c8);
  border-radius: 0.15rem;
}

body.os-erp-page-system .os-erp-page .form-check-input[type="radio"] {
  border-radius: 50%;
}

body.os-erp-page-system .os-erp-page .form-check-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--os-color-form-label-text, #334155);
}

/* Data tables — same chrome as LocalInvoice balance / details grids */
body.os-erp-page-system .os-erp-page table.table:not(.os-desktop-form-table):not(.aps-site-table) {
  border: 1px solid var(--os-color-form-border, #c8c8c8);
  background: var(--os-color-surface, #fff);
  font-size: 0.8125rem;
}

body.os-erp-page-system .os-erp-page table.table:not(.os-desktop-form-table):not(.aps-site-table) > :not(caption) > * > * {
  padding: 0.15rem 0.2rem;
  vertical-align: middle;
  border-color: var(--os-color-form-border, #c8c8c8);
}

body.os-erp-page-system .os-erp-page table.table:not(.os-desktop-form-table):not(.aps-site-table) thead th {
  height: var(--os-grid-header-row-height, 28px);
  min-height: var(--os-grid-header-row-height, 28px);
  background: var(--os-color-grid-header, #e8e8e8) !important;
  color: var(--os-color-grid-header-text, #334155);
  font-size: 0.75rem;
  font-weight: 600;
}

body.os-erp-page-system .os-erp-page table.table:not(.os-desktop-form-table):not(.aps-site-table) tbody td {
  height: var(--os-grid-row-height, 30px);
  min-height: var(--os-grid-row-height, 30px);
  font-size: var(--os-table-cell-font-size, 11px);
}

body.os-erp-page-system .os-erp-page table.table-hover tbody tr:hover > * {
  background: var(--os-color-grid-hover);
}

body.os-erp-page-system .os-erp-page table.table tbody tr:empty td,
body.os-erp-page-system .os-erp-page table.table .prs-li-empty-row td,
body.os-erp-page-system .os-erp-page table.table td[colspan]:only-child {
  color: var(--os-color-text-muted);
  text-align: center;
  font-size: 0.78rem;
  height: 3rem;
}

body.os-erp-page-system .os-erp-page table.table .btn.btn-sm.os-row-action,
body.os-erp-page-system .os-erp-page table.table .btn.btn-sm.li-remove-row,
body.os-erp-page-system .os-erp-page table.table td .btn.btn-sm {
  min-height: 1.65rem;
  padding: 0.1rem 0.4rem;
  border-radius: var(--os-btn-radius, 0.4rem);
}

/* In-form controls stay 28px even when chrome maps btn-sm to 32px */
body.os-erp-page-system .os-desktop-form-table .form-control:not(textarea),
body.os-erp-page-system .os-desktop-form-table .form-select,
body.os-erp-page-system .aps-site-table .form-control:not(textarea),
body.os-erp-page-system .aps-site-table .form-select,
body.os-erp-page-system .os-desktop-form .form-control:not(textarea),
body.os-erp-page-system .os-desktop-form .form-select {
  min-height: var(--os-form-row-height, 28px);
}

/* Numeric fields */
body.os-erp-page-system .os-erp-page input[type="number"].form-control {
  text-align: end;
}

/* Modal / dialog surface */
body.os-erp-page-system .modal-content,
body.os-erp-page-system .os-confirm-dialog,
body.os-erp-page-system .os-dialog .modal-content {
  border: 1px solid var(--os-erp-panel-border);
  border-radius: var(--os-erp-card-radius);
  background: var(--os-color-surface, #fff);
}

body.os-erp-page-system .modal-header,
body.os-erp-page-system .os-dialog .modal-header {
  min-height: var(--os-section-title-height, 1.65rem);
  padding: 0.35rem 0.75rem;
  background: var(--os-color-section-title-bg, #eef1f4);
  border-bottom: 1px solid var(--os-erp-panel-border);
}

body.os-erp-page-system .modal-title {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

body.os-erp-page-system .modal-footer {
  gap: 0.35rem;
  padding: 0.5rem 0.75rem;
}

body.os-erp-page-system .modal-body .form-control:not(textarea),
body.os-erp-page-system .modal-body .form-select {
  min-height: var(--os-form-row-height, 28px);
}

/* Empty copy inside list panels */
body.os-erp-page-system .os-erp-panel > p.text-muted:only-child,
body.os-erp-page-system .prs-content-panel > p.text-muted:only-child {
  margin: 0.75rem;
  text-align: center;
}

@media (max-width: 767.98px) {
  body.os-erp-page-system .os-desktop-form .row > [class*="col-"]:has(> .form-label):has(> .form-control, > .form-select, > .input-group),
  body.os-erp-page-system .os-desktop-form .mb-3:has(> .form-label):has(> .form-control, > .form-select, > .input-group),
  body.os-erp-page-system .ags-harvest-field:has(> .form-label) {
    grid-template-columns: 6.5rem minmax(0, 1fr);
  }

  body.os-erp-page-system .os-desktop-form .row > [class*="col-"] + [class*="col-"] {
    margin-inline-start: 0;
    margin-top: -1px;
  }
}

/* =============================================================================
   Shared Create/Edit/Details form-table contract (Training and similar pages)
   Presentation only. Page Y stays on main.os-app-main (overflow-y: auto).
   ============================================================================= */

/* Content-sized edit shells — do not stretch/compress fields to fill the viewport. */
body.os-erp-page-system [class*="-edit-page"]:has(.os-desktop-form-table),
body.os-erp-page-system [class*="-create-page"]:has(.os-desktop-form-table),
body.os-erp-page-system [class*="-details-page"]:has(.os-desktop-form-table) {
  flex: 0 0 auto !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0;
  overflow: visible !important;
}

body.os-erp-page-system [class*="-edit-page"]:has(.os-desktop-form-table) > .os-page-scroll,
body.os-erp-page-system [class*="-create-page"]:has(.os-desktop-form-table) > .os-page-scroll,
body.os-erp-page-system [class*="-details-page"]:has(.os-desktop-form-table) > .os-page-scroll {
  display: block !important;
  flex: none !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow: visible !important;
  overflow-x: clip !important;
  overflow-y: visible !important;
}

body.os-erp-page-system.os-app-shell .os-app-main:has([class*="-edit-page"] .os-desktop-form-table),
body.os-erp-page-system.os-app-shell .os-app-main:has([class*="-create-page"] .os-desktop-form-table),
body.os-erp-page-system.os-app-shell .os-app-main:has([class*="-details-page"] .os-desktop-form-table) {
  overflow-y: auto !important;
}

body.os-erp-page-system .os-desktop-form:has(.os-desktop-form-table),
body.os-erp-page-system .os-desktop-form-table,
body.os-erp-page-system .aps-site-table {
  height: auto !important;
  max-height: none;
  flex: 0 0 auto;
}

/* Split-pane commercial forms (Export Order) keep their own fill/scroll hosts. */
body.os-erp-page-system .os-desktop-form.prs-export-order-form {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  max-height: none;
}

/* ORDER detail pane: never collapse to a 0-height strip (split-view min-height:0 +
   former form-scroll height:0). Must load after os-split-view.css. */
body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-layout {
  min-height: min(62vh, 640px) !important;
  height: min(62vh, 640px) !important;
  max-height: min(68vh, 720px) !important;
}

body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-layout.os-split-view[data-os-split-mode="stack"] {
  min-height: 0 !important;
  height: auto !important;
  max-height: none !important;
  overflow: visible !important;
}

body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-layout.os-split-view[data-os-split-mode="side"] > .prs-export-order-form-col {
  min-width: min(22rem, 100%) !important;
}

body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-form-scroll {
  flex: 1 1 auto !important;
  min-height: 18rem !important;
  height: auto !important;
  max-height: 100%;
  overflow-x: hidden !important;
  overflow-y: auto !important;
}

@media (max-width: 991.98px) {
  body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-layout {
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }

  body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-form-col {
    min-width: 0 !important;
    height: auto !important;
    overflow: visible !important;
  }

  body.os-erp-page-system .prs-export-order-edit-page .prs-export-order-form-scroll {
    flex: 0 0 auto !important;
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
  }
}

/* Stable two- and three-column form grids */
.os-desktop-form-table--cols-2,
.os-desktop-form-table[class*="-table--cols-2"],
.aps-site-table[class*="-table--cols-2"] {
  table-layout: fixed;
  width: 100%;
}

.os-desktop-form-table--cols-2 > colgroup > col:nth-child(odd),
.os-desktop-form-table[class*="-table--cols-2"] > colgroup > col:nth-child(odd),
.aps-site-table[class*="-table--cols-2"] > colgroup > col:nth-child(odd) {
  width: 14%;
}

.os-desktop-form-table--cols-2 > colgroup > col:nth-child(even),
.os-desktop-form-table[class*="-table--cols-2"] > colgroup > col:nth-child(even),
.aps-site-table[class*="-table--cols-2"] > colgroup > col:nth-child(even) {
  width: 36%;
}

.os-desktop-form-table--cols-3,
.os-desktop-form-table[class*="-table--cols-3"],
.aps-site-table[class*="-table--cols-3"] {
  table-layout: fixed;
  width: 100%;
}

.os-desktop-form-table--cols-3 > colgroup > col:nth-child(odd),
.os-desktop-form-table[class*="-table--cols-3"] > colgroup > col:nth-child(odd),
.aps-site-table[class*="-table--cols-3"] > colgroup > col:nth-child(odd) {
  width: 10%;
}

.os-desktop-form-table--cols-3 > colgroup > col:nth-child(even),
.os-desktop-form-table[class*="-table--cols-3"] > colgroup > col:nth-child(even),
.aps-site-table[class*="-table--cols-3"] > colgroup > col:nth-child(even) {
  width: 23.3333%;
}

/* Labels fill the cell (hairline column), wrap Arabic, never sit as detached chips. */
body.os-erp-page-system .os-desktop-form-table th,
body.os-erp-page-system .aps-site-table th {
  display: table-cell !important;
  width: auto;
  height: auto !important;
  min-height: var(--os-form-row-height, 28px);
  padding: 0.3rem 0.45rem !important;
  vertical-align: middle;
  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.25;
  font-size: 0.78rem;
  font-weight: 600;
  text-align: start;
  background: var(--os-color-form-label, #e8e8e8);
  color: var(--os-color-form-label-text, #334155);
}

body.os-erp-page-system .os-desktop-form-table td,
body.os-erp-page-system .aps-site-table td {
  padding: 0 !important;
  vertical-align: middle;
  min-width: 0;
}

body.os-erp-page-system .os-desktop-form-table th:has(+ td textarea),
body.os-erp-page-system .os-desktop-form-table td:has(textarea),
body.os-erp-page-system .os-desktop-form-table th:has(+ td .os-form-file-row),
body.os-erp-page-system .os-desktop-form-table td:has(.os-form-file-row),
body.os-erp-page-system .aps-site-table th:has(+ td textarea),
body.os-erp-page-system .aps-site-table td:has(textarea) {
  vertical-align: top !important;
}

body.os-erp-page-system [class*="-edit-page"] .os-desktop-form-table .form-control:not(textarea):not([type="file"]),
body.os-erp-page-system [class*="-edit-page"] .os-desktop-form-table .form-select,
body.os-erp-page-system [class*="-create-page"] .os-desktop-form-table .form-control:not(textarea):not([type="file"]),
body.os-erp-page-system [class*="-create-page"] .os-desktop-form-table .form-select,
body.os-erp-page-system [class*="-details-page"] .os-desktop-form-table .form-control:not(textarea):not([type="file"]),
body.os-erp-page-system [class*="-details-page"] .os-desktop-form-table .form-select,
body.os-erp-page-system [class*="-edit-page"] .aps-site-table .form-control:not(textarea):not([type="file"]),
body.os-erp-page-system [class*="-edit-page"] .aps-site-table .form-select {
  height: var(--os-form-row-height, 28px) !important;
  min-height: var(--os-form-row-height, 28px) !important;
  max-height: none !important;
  padding: 0 0.35rem !important;
  font-size: 0.82rem !important;
  line-height: var(--os-form-row-height, 28px);
  display: block;
  align-items: unset;
  unicode-bidi: plaintext;
  text-align: start;
}

body.os-erp-page-system .os-desktop-form-table textarea.form-control,
body.os-erp-page-system .aps-site-table textarea.form-control,
body.os-erp-page-system [class*="-edit-page"] .os-desktop-form-table textarea.form-control,
body.os-erp-page-system [class*="-edit-page"] .aps-site-table textarea.form-control {
  height: auto !important;
  min-height: 3.5rem !important;
  max-height: none !important;
  padding: 0.3rem 0.4rem !important;
  line-height: 1.35 !important;
  white-space: pre-wrap !important;
  overflow-wrap: anywhere;
  word-break: break-word;
  resize: vertical;
  display: block;
  align-items: unset;
  unicode-bidi: plaintext;
  text-align: start;
}

body.os-erp-page-system .os-form-file-row,
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.35rem;
  min-width: 0;
  width: 100%;
  padding: 0.3rem 0.4rem;
  box-sizing: border-box;
}

body.os-erp-page-system .os-form-file-row .form-control,
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] .form-control,
body.os-erp-page-system .os-form-file-row input[type="file"],
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] input[type="file"] {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  height: var(--os-form-row-height, 28px) !important;
  min-height: var(--os-form-row-height, 28px) !important;
}

body.os-erp-page-system .os-form-file-row .d-flex,
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] .d-flex {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  min-width: 0;
}

body.os-erp-page-system .os-form-file-row input[type="file"],
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] input[type="file"] {
  flex: 1 1 12rem;
}

body.os-erp-page-system .os-form-file-row .btn:not(.os-inline-action-icon-btn),
body.os-erp-page-system .os-desktop-form-table [class*="-scientific-material"] .btn:not(.os-inline-action-icon-btn),
body.os-erp-page-system .os-inline-add-form .btn {
  min-height: var(--os-form-row-height, 28px);
  height: var(--os-form-row-height, 28px);
  padding: 0 0.65rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

body.os-erp-page-system .os-inline-add-form {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto;
  align-items: stretch;
  gap: 0;
  margin: 0;
  min-width: 0;
  border-top: 1px solid var(--os-color-form-border, #c8c8c8);
  background: var(--os-color-form-control-bg, #fff);
}

body.os-erp-page-system .os-inline-add-form > [class*="col-"] {
  display: grid;
  grid-template-columns: var(--os-form-label-width, 8.75rem) minmax(0, 1fr);
  align-items: stretch;
  margin: 0;
  padding: 0 !important;
  min-width: 0;
  border-inline-end: 1px solid var(--os-color-form-border, #c8c8c8);
}

body.os-erp-page-system .os-inline-add-form > [class*="col-"]:last-child {
  border-inline-end: none;
  display: flex;
  align-items: center;
  padding: 0.2rem 0.35rem !important;
}

body.os-erp-page-system .os-inline-add-form > [class*="col-"] > .form-label {
  display: flex;
  align-items: center;
  margin: 0;
  padding: 0.3rem 0.45rem;
  min-height: var(--os-form-row-height, 28px);
  background: var(--os-color-form-label, #e8e8e8);
  color: var(--os-color-form-label-text, #334155);
  border-inline-end: 1px solid var(--os-color-form-border, #c8c8c8);
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.25;
  white-space: normal;
  overflow-wrap: anywhere;
}

body.os-erp-page-system .os-inline-add-form > [class*="col-"] > .form-control,
body.os-erp-page-system .os-inline-add-form > [class*="col-"] > .form-select {
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  height: var(--os-form-row-height, 28px) !important;
  min-height: var(--os-form-row-height, 28px) !important;
  padding: 0 0.35rem !important;
}

@media (max-width: 991.98px) {
  body.os-erp-page-system .os-inline-add-form {
    grid-template-columns: 1fr;
  }

  body.os-erp-page-system .os-inline-add-form > [class*="col-"] {
    border-inline-end: none;
    border-bottom: 1px solid var(--os-color-form-border, #c8c8c8);
  }

  .os-desktop-form-table--cols-2,
  .os-desktop-form-table[class*="-table--cols-2"],
  .aps-site-table[class*="-table--cols-2"],
  .os-desktop-form-table--cols-2 tbody,
  .os-desktop-form-table[class*="-table--cols-2"] tbody,
  .os-desktop-form-table--cols-2 tr,
  .os-desktop-form-table[class*="-table--cols-2"] tr,
  .os-desktop-form-table--cols-2 th,
  .os-desktop-form-table[class*="-table--cols-2"] th,
  .os-desktop-form-table--cols-2 td,
  .os-desktop-form-table[class*="-table--cols-2"] td {
    display: block;
    width: 100% !important;
  }

  .os-desktop-form-table--cols-2 colgroup,
  .os-desktop-form-table[class*="-table--cols-2"] colgroup {
    display: none;
  }

  .os-desktop-form-table--cols-2 th,
  .os-desktop-form-table[class*="-table--cols-2"] th {
    border-bottom: none;
  }

  .os-desktop-form-table--cols-2 td:empty,
  .os-desktop-form-table--cols-2 th:empty,
  .os-desktop-form-table[class*="-table--cols-2"] td:empty,
  .os-desktop-form-table[class*="-table--cols-2"] th:empty {
    display: none;
  }
}

body.os-erp-page-system .os-section-stack > .table-responsive,
body.os-erp-page-system .os-section-stack > .os-erp-data-table-host {
  border: none;
  border-radius: 0;
  box-shadow: none;
}

html[dir="rtl"] body.os-erp-page-system .os-desktop-form-table th,
html[dir="rtl"] body.os-erp-page-system .aps-site-table th,
html[dir="rtl"] body.os-erp-page-system .os-inline-add-form > [class*="col-"] > .form-label {
  text-align: start;
}

html[dir="rtl"] body.os-erp-page-system .os-desktop-form-table .form-select,
html[dir="rtl"] body.os-erp-page-system .aps-site-table .form-select {
  background-position: left 0.35rem center;
  padding-left: 1.4rem;
  padding-right: 0.35rem;
}

