/*
 * Permission grant picker — grid inside requirement-tracking-card shell on workspace pages.
 */

.permission-grant-picker__details > summary {
  cursor: pointer;
  list-style: none;
}

.permission-grant-picker__details > summary::-webkit-details-marker {
  display: none;
}

.permission-grant-picker__details > summary::before {
  content: "▸";
  display: inline-block;
  margin-right: 0.35rem;
  transition: transform 0.15s ease;
}

.permission-grant-picker__details[open] > summary::before {
  transform: rotate(90deg);
}

.permission-grant-picker {
  /* Sticky row-label rail: keep it narrow enough that action checkboxes stay reachable. */
  --permission-picker-resource-col: 8.5rem;
  --permission-picker-action-col: 3.75rem;
}

.permission-grant-picker__card.requirement-tracking-card {
  /* Permission matrix sizes its own sticky label rail; ignore RT plastun-col defaults. */
  --rt-first-col: var(--permission-picker-resource-col);
  /* Clip sticky paints that escape the inner horizontal scroller. */
  overflow: hidden;
}

/*
 * Two layers: outer frame owns border + radius + overflow:hidden (clips sticky),
 * inner scroll owns overflow-x. A single overflow-x:auto + border-radius node
 * does not reliably clip position:sticky table cells in WebKit/Blink.
 */
.permission-grant-picker__frame {
  --permission-picker-frame-radius: var(--table-frame-radius, var(--radius-lg));
  border: 1px solid var(--border-primary);
  border-radius: var(--permission-picker-frame-radius);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}

.permission-grant-picker__frame--inset {
  border: none;
  box-shadow: none;
  background: transparent;
  /* Match the RT card curve and clip sticky fills into it. */
  border-radius: inherit;
  overflow: hidden;
}

.permission-grant-picker__scroll {
  overflow-x: auto;
  overflow-y: clip;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.permission-grant-picker__matrix {
  /* Resource + up to 7 action columns (PERMISSION_ACTION_ORDER). */
  --permission-picker-matrix-min: calc(
    var(--permission-picker-resource-col) + (7 * var(--permission-picker-action-col))
  );
  font-size: var(--font-base, 0.875rem);
  /*
   * Fixed layout + explicit column widths keeps the sticky rail from spanning “content
   * width” and painting over the first Read/Write checkboxes on narrow modals.
   * Wide matrices scroll horizontally inside .permission-grant-picker__scroll.
   */
  table-layout: fixed;
  width: max(100%, var(--permission-picker-matrix-min));
  min-width: max(100%, var(--permission-picker-matrix-min));
  border-collapse: separate;
  border-spacing: 0;
  margin-bottom: 0;
  background-color: transparent;
  box-shadow: none;
}

/* Beat RT card grid width:100%!important so framed pickers still scroll, not squeeze. */
.permission-grant-picker__card .permission-grant-picker__matrix.requirement-tracking-grid {
  width: max(100%, var(--permission-picker-matrix-min)) !important;
  min-width: max(100%, var(--permission-picker-matrix-min)) !important;
}

.permission-grant-picker__matrix th {
  font-weight: 500;
  color: var(--text-secondary, var(--bs-secondary));
}

.permission-grant-picker__matrix.requirement-tracking-grid th,
.permission-grant-picker__matrix.requirement-tracking-grid td {
  border-color: var(--border-primary);
}

.permission-grant-picker__matrix td,
.permission-grant-picker__matrix th {
  vertical-align: middle;
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
}

/* Corner + resource: fixed-width sticky rail — clip so labels never cover checkboxes. */
.permission-grant-picker__corner,
.permission-grant-picker__resource {
  position: sticky;
  left: 0;
  width: var(--permission-picker-resource-col);
  min-width: var(--permission-picker-resource-col);
  max-width: var(--permission-picker-resource-col);
  box-sizing: border-box;
  overflow: hidden;
  vertical-align: middle;
  background: var(--bg-surface, var(--bs-body-bg, #fff));
  box-shadow: 1px 0 0 var(--border-primary);
}

.permission-grant-picker__corner {
  z-index: 3;
  /* Match themed thead fill so Read/Write labels tuck under this rail while swiping. */
  background: var(--bg-elevated, var(--bg-surface));
}

.permission-grant-picker__resource {
  z-index: 2;
  color: var(--text-primary);
  font-weight: 500;
  padding-inline: 0.35rem 0.5rem;
  background-clip: padding-box;
}

.permission-grant-picker__matrix tbody tr:hover > .permission-grant-picker__resource {
  background: var(--list-row-hover-bg, var(--bg-elevated));
}

.permission-grant-picker__resource-label {
  display: flex;
  align-items: center;
  gap: 0.2rem;
  flex-wrap: wrap;
  line-height: 1.25;
  font-size: 0.8125rem;
  overflow-wrap: anywhere;
  word-break: break-word;
  max-width: 100%;
}

.permission-grant-picker__cell {
  width: var(--permission-picker-action-col);
  min-width: var(--permission-picker-action-col);
  max-width: var(--permission-picker-action-col);
  position: relative;
  z-index: 0;
  text-align: center;
}

.permission-grant-picker__matrix thead .permission-grant-picker__cell {
  white-space: nowrap;
  font-size: 0.75rem;
}

/* Narrow phones / review modals: tighter rail; matrix scrolls sideways for actions. */
@media (max-width: 575.98px) {
  .permission-grant-picker {
    --permission-picker-resource-col: 6.75rem;
    --permission-picker-action-col: 3.25rem;
  }
}

.permission-grant-picker__cell .form-check {
  display: inline-flex;
  justify-content: center;
  min-height: 1.25rem;
  padding-left: 0;
  margin-bottom: 0;
}

.permission-grant-picker__cell .form-check-input {
  float: none;
  margin-left: 0;
}

.permission-grant-picker__cell--empty {
  color: var(--text-tertiary, var(--bs-secondary));
}

.tabir-roster-detail-panel .permission-grant-picker {
  margin-top: 0;
}

/* Review modals: keep the matrix width usable once the phone leaves fullscreen. */
@media (min-width: 576px) {
  .org-access-request-review-modal .permission-grant-picker__frame,
  .permission-request-review-modal .permission-grant-picker__frame {
    margin-inline: calc(-0.25 * var(--bs-modal-padding, 1rem));
  }
}

.org-access-request-details--compact {
  margin-bottom: var(--space-3, 0.75rem);
}

.org-access-request-details__primary {
  display: grid;
  gap: var(--space-2, 0.5rem);
}

.org-access-request-details__name {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2, 0.5rem);
}

.org-access-request-details__meta,
.org-access-request-details__facts,
.permission-request-details__facts,
.org-unit-request-details__facts,
.tabir-recognition-details__facts,
.invite-details__facts {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.25rem;
}

.org-access-request-details__notes,
.review-request-fact {
  line-height: 1.4;
}

.permission-request-details--compact,
.org-unit-request-details--compact,
.tabir-recognition-details--compact,
.invite-details--compact {
  margin-bottom: var(--space-3, 0.75rem);
}

.org-access-request-approval {
  min-width: 0;
}

.org-access-request-approval__actions {
  background: var(--bg-surface);
}

.org-access-request-approval__actions > form {
  display: inline-flex;
  margin: 0;
}

/* Keep Approve / Close intrinsic width — global mobile .btn { width:100% } must not stretch them. */
.org-access-request-approval__actions .btn {
  width: auto;
  flex: 0 0 auto;
}

.permission-request-approval {
  min-width: 0;
}

.permission-request-approval__actions {
  background: var(--bg-surface);
}

.permission-request-approval__actions > form {
  display: inline-flex;
  margin: 0;
}

.permission-request-approval__actions .btn {
  width: auto;
  flex: 0 0 auto;
}

.org-unit-request-approval__actions > form {
  display: inline-flex;
  margin: 0;
}

.org-unit-request-approval__actions .btn {
  width: auto;
  flex: 0 0 auto;
}

.tabir-permissions-edit {
  min-width: 0;
}

.tabir-permissions-heading-wrap {
  min-width: 0;
}

.tabir-permissions-heading__name {
  font-size: var(--font-ui-heading, 1rem);
  font-weight: 600;
  line-height: 1.3;
}

.tabir-permissions-heading__email {
  font-size: var(--font-ui-label, 0.875rem);
  line-height: 1.35;
  margin-top: 0.125rem;
}

.tabir-permissions-person-picker {
  margin: 0;
  min-width: 12rem;
  max-width: 18rem;
}

.tabir-permissions-person-picker .form-select {
  width: 100%;
}

@media (max-width: 768px) {
  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) {
    flex-direction: column;
    align-items: stretch;
  }

  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) .tabir-workspace-toolbar__actions {
    order: -1;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    width: 100%;
  }

  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) .tabir-workspace-toolbar__primary {
    width: 100%;
  }

  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) .tabir-permissions-person-picker {
    min-width: 0;
    max-width: none;
    width: 100%;
  }

  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) .tabir-permissions-person-picker.ms-2 {
    margin-left: 0;
  }

  .tabir-workspace-toolbar:has(.tabir-permissions-person-picker) .tabir-workspace-toolbar__actions > .d-flex:has(.tabir-permissions-person-picker) {
    flex-direction: column;
    align-items: stretch;
    width: 100%;
  }
}
