/* One viewport contract for the six working directories. Detail forms retain their own scroll. */
.viewport-directory.directory-workspace,.viewport-directory.companies-workspace{height:var(--directory-viewport-height);min-height:0!important;overflow:hidden}
.viewport-directory>.directory-sidebar,.viewport-directory>.companies-list{min-height:0;overflow:auto;overscroll-behavior:contain}
.viewport-directory>.directory-sidebar{display:flex;flex-direction:column}
.viewport-directory .directory-sidebar-content{min-height:0;overflow:auto;flex:1}
.viewport-directory .directory-sidebar-content nav{max-height:none}
.viewport-directory>.company-detail{min-height:0;overflow:auto;overscroll-behavior:contain}
.viewport-directory>.directory-results{min-height:0;overflow:auto;overscroll-behavior:contain}
.viewport-directory:not(.has-detail) .directory-results:has(.table-responsive),.viewport-directory:not(.has-detail) .directory-results:has(.company-contact-table-scroll){display:flex;flex-direction:column;overflow:hidden}
.viewport-directory .company-product-catalog,.viewport-directory .contacts-directory{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}
.viewport-directory .table-responsive,.viewport-directory .company-contact-table-scroll{min-height:0;max-height:none!important;overflow:auto;flex:1;overscroll-behavior:contain;scrollbar-gutter:stable}
.viewport-directory .company-records{min-height:0;max-height:none!important;overflow:auto;flex:1;overscroll-behavior:contain}
.viewport-directory .companies-list{display:flex;flex-direction:column;overflow:hidden}
.viewport-directory .company-table th,.viewport-directory .record-table th,.viewport-directory .company-contact-table th{position:sticky;top:0;z-index:3;background:var(--bs-tertiary-bg);background-clip:padding-box}
.viewport-directory table td{overflow-wrap:anywhere}
.table-sizing-anchor{display:none}
.column-resize-handle{position:absolute;right:-4px;top:0;bottom:0;width:10px;cursor:col-resize;touch-action:none;z-index:5}
.column-resize-handle:hover,.column-resize-handle:focus-visible{background:rgba(var(--csiflex-secondary-rgb),.25);outline:2px solid var(--csiflex-secondary);outline-offset:-3px}
.list-column-option{flex-wrap:wrap}
@media(max-width:767px){.viewport-directory.directory-workspace:not(.list-first):not(.has-detail){grid-template-rows:minmax(100px,35%) minmax(0,1fr)}.viewport-directory.directory-workspace.has-detail{grid-template-rows:minmax(0,1fr)}}

.viewport-directory .directory-results:has(>.company-records){display:flex;flex-direction:column;min-height:0;overflow:hidden}
.viewport-directory table:has(.column-resize-handle) th{overflow:visible}

.viewport-directory>.company-search-results{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.viewport-directory>.company-search-results>.directory-results{display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:1}
.viewport-directory.has-detail .companies-list{overflow:auto}
.viewport-directory:not(.has-detail) .companies-list{flex-shrink:0}

.viewport-directory .sortable-record-table th{position:sticky;top:0;z-index:3;background:var(--bs-tertiary-bg);background-clip:padding-box}
.viewport-directory .directory-results:has(>.pm-family-content>.table-responsive){display:flex;flex-direction:column;overflow:hidden}
.viewport-directory .directory-results:has(.catalog-product-cards){display:flex;flex-direction:column;overflow:hidden}

/* Shared divider between a record heading and its properties. */
.catalog-product-card > h3,
.catalog-product-details > .catalog-product-heading,
.company-card > h2,
.contact-card:not(.is-editing) > header,
.pm-unit-card > strong,
.company-family-card > h3,
.company-family-card > header,
.family-record-cards .family-configuration-fields > strong,
.family-hardware > strong {
    border-bottom: var(--record-card-divider-width, 1px) solid var(--record-card-divider-color, var(--bs-border-color));
    padding-block-end: var(--record-card-divider-spacing, .6rem);
}
.pm-unit-card > strong,
.family-hardware > strong {
    display: block;
    align-self: stretch;
}

.viewport-directory>.record-detail-panel{min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain}
.directory-shell{min-width:0}

/* Card mode presents the same authorized rows and column choices without extra data reads. */
.directory-workspace.cards-mode:not(.has-detail) .directory-results table{display:block;width:100%;min-width:0!important;border-collapse:separate}
.directory-workspace.cards-mode:not(.has-detail) .directory-results thead{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.directory-workspace.cards-mode:not(.has-detail) .directory-results tbody{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem;padding:.5rem}
.directory-workspace.cards-mode:not(.has-detail) .directory-results tbody tr{display:flex;flex-direction:column;min-width:0;border:1px solid var(--bs-border-color);border-radius:6px;padding:1rem}
.directory-workspace.cards-mode:not(.has-detail) .directory-results tbody td{display:block;width:auto!important;min-width:0;padding:.35rem 0;border:0;white-space:normal;overflow-wrap:anywhere}
.directory-workspace.cards-mode:not(.has-detail) .directory-results tbody td[data-column-label]:not([data-column-label=""])::before{content:attr(data-column-label);display:block;font-size:.75rem;color:var(--bs-secondary-color);margin-bottom:.2rem}

.directory-workspace.cards-mode:not(.has-detail) .directory-results table{width:100%!important}
.directory-workspace.cards-mode:not(.has-detail) .directory-results colgroup,.directory-workspace.cards-mode:not(.has-detail) .column-resize-handle{display:none}
.directory-workspace.cards-mode:not(.has-detail) .directory-results thead{display:block;position:static!important;width:auto;height:auto;clip-path:none;overflow:visible}
.directory-workspace.cards-mode:not(.has-detail) .directory-results thead tr{display:flex;justify-content:flex-end}
.directory-workspace.cards-mode:not(.has-detail) .directory-results thead th{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0;border:0}
.directory-workspace.cards-mode:not(.has-detail) .directory-results thead th:has([aria-haspopup="dialog"]){position:static!important;width:auto;height:auto;overflow:visible;clip-path:none;padding:.4rem}

/* Companies is the shared visual reference for configurable directory headings. */

/* Paint every cell, including sticky action cells, with the same row state. */
body .app-content :is(.table,.cockpit-renewal-table,.company-table,.record-table,.company-contact-table,.sortable-record-table,table:has(th [aria-haspopup="dialog"])) > tbody > tr:is(:hover,:focus-visible,.selected) > td {
    background:var(--app-hover-bg);--bs-table-bg-state:var(--app-hover-bg);
}
body .app-content :is(.table,.cockpit-renewal-table,.company-table,.record-table,.company-contact-table,.sortable-record-table,table:has(th [aria-haspopup="dialog"])) > tbody > tr:is(:hover,:focus-visible,.selected) .action-ribbon > summary {background:transparent}
/* Sticky action-column separators belong only to table mode. */
body .directory-workspace.cards-mode:not(.has-detail) .directory-results :is(th,td):is(.contact-action-cell,.list-column-settings,.company-row-actions,.company-row-actions-column) {
    position:static;box-shadow:none;border-inline:0;background:transparent;
}
body .directory-workspace.cards-mode:not(.has-detail) .directory-results tbody tr:is(:hover,:focus-visible,.selected){background:var(--app-hover-bg)}
body .directory-workspace.cards-mode:not(.has-detail) .directory-results tbody tr:is(:hover,:focus-visible,.selected)>td{background:transparent;--bs-table-bg-state:transparent}

/* One viewport limit for every column-settings implementation. */
:root{--app-column-dialog-max-height:80vh}
@supports(height:1dvh){:root{--app-column-dialog-max-height:80dvh}}

/* A fixed modal opened from a sticky table header must escape that header's stacking context. */
body .app-content th:has(.app-modal) { position:static!important; z-index:auto!important; }
