/* Common frames; native fields, responsive card modes and domain columns are slots. */
body[data-fs-form-record-composition] :is(.fs-form-frame,.fs-form-fieldset-frame,.fs-form-action-row,.fs-record-filter-frame,.fs-record-viewport,.fs-record-detail-frame) { box-sizing: border-box; min-width: 0; max-width: 100%; }
body[data-fs-form-record-composition] .fs-form-frame :where(input,select,textarea,button) { font-family: inherit; }
body[data-fs-form-record-composition] .fs-form-action-row { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; }
body[data-fs-form-record-composition] .fs-form-action-row :where(button,a.button) { min-height: 44px; }
body[data-fs-form-record-composition] .fs-form-action-row[hidden],
body[data-fs-form-record-composition] .fs-record-filter-frame[hidden],
body[data-fs-form-record-composition] .fs-record-viewport[hidden] { display: none; }
body[data-fs-form-record-composition] .fs-record-viewport:not(.table-wrap--responsive-cards):not(.roster-table-wrap) { overflow-x: auto; }
body[data-fs-form-record-composition] .fs-record-table-frame { width: 100%; border-collapse: collapse; font-family: inherit; }
body[data-fs-form-record-composition] .fs-record-filter-frame { min-width: 0; }
body[data-fs-form-record-composition] .fs-record-detail-frame dd { overflow-wrap: anywhere; }
/* Dialog focus/dirty/pending rules remain in FlowStackForms/native legal or PIN adapters.
 * A frame never forces a hidden modal open or changes native responsive row display. */
body[data-fs-form-record-composition] .fs-form-dialog-frame { box-sizing: border-box; max-width: calc(100vw - 2rem); }
