.permissions-stage { color:var(--ink); max-width:1100px; margin:0 auto; padding:24px; display:flex; flex-direction:column; gap:24px; }
.permissions-stage h1 { font-size:22px; margin:0 0 6px; }
.permissions-stage h2 { font-size:17px; margin:0 0 12px; }
.permissions-stage p { line-height:1.5; margin:0; }
.permissions-toolbar { display:flex; gap:16px; justify-content:space-between; align-items:center; flex-wrap:wrap; }
.permissions-actions { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.permissions-stage button,.permissions-stage input { font:inherit; color:var(--ink); border:1px solid var(--line); border-radius:6px; background:var(--control); padding:9px 12px; }
.permissions-stage button { cursor:pointer; }
.permissions-stage select { font:inherit; color:var(--ink); border:1px solid var(--line); border-radius:6px; background:var(--control); padding:9px 12px; max-width:100%; }
[data-shell-nav="administrar-acceso"][hidden] { display:none !important; }
.permissions-stage button:hover:not(:disabled) { background:var(--control-hover); border-color:var(--line-strong); }
.permissions-stage button:disabled { opacity:.5; cursor:default; }
.permissions-stage :focus-visible { outline:2px solid var(--focus-ring); outline-offset:2px; }
.permissions-stage label { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.permissions-notice { background:var(--surface-active); padding:16px; border-radius:6px; }
.permissions-table-scroll { overflow:auto; margin:16px 0; border:1px solid var(--line); border-radius:6px; }
.permissions-stage table:not(.data-table) { width:100%; border-collapse:collapse; background:var(--surface); text-align:left; }
.permissions-stage table:not(.data-table) th,.permissions-stage table:not(.data-table) td { padding:14px 16px; border-bottom:1px solid var(--line); vertical-align:top; }
.permissions-stage table:not(.data-table) th { background:var(--surface-muted); font-weight:500; }
.permissions-stage table:not(.data-table) tr:last-child td { border-bottom:0; }
.permissions-stage table:not(.data-table) tbody tr:hover { background:var(--surface-muted); }
.permissions-meta { color:var(--muted); font-size:12px; }
.permissions-stage caption { padding:12px; color:var(--muted); text-align:left; }
[data-shell-nav="permisos"][hidden] { display:none !important; }
.permissions-editor { color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:24px; width:min(520px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto; }
.permissions-editor::backdrop { background:rgb(15 23 42 / 45%); }
.permissions-editor form { display:flex; flex-direction:column; gap:20px; }
.permissions-editor fieldset { border:0; padding:0; margin:0; display:flex; flex-direction:column; gap:12px; min-width:0; }
.permissions-editor fieldset fieldset { margin-top:12px; }
.permissions-editor legend { padding:0 0 12px; font-weight:500; }
.permissions-editor .permissions-option { justify-content:flex-start; }
.permissions-editor .permissions-option input { width:18px; height:18px; accent-color:var(--blue-solid); }
.permissions-options { display:flex; flex-direction:column; gap:8px; max-height:300px; overflow:auto; padding:4px; }
.permissions-editor .permissions-option { flex-wrap:nowrap; align-items:flex-start; padding:8px; border-radius:6px; }
.permissions-editor .permissions-option:hover { background:var(--surface-muted); }
.permissions-editor .permissions-option input { flex:none; }
.permissions-editor .permissions-option span { min-width:0; overflow-wrap:anywhere; }
.permissions-search input { flex:1; min-width:0; }
.permissions-editor footer { justify-content:flex-end; }
.permissions-stage .permissions-primary { background:var(--blue-solid); color:#fff; border-color:var(--blue-solid); }
.permissions-stage .permissions-primary:hover:not(:disabled) { background:var(--blue-hover); border-color:var(--blue-hover); }
@media(max-width:650px) { .permissions-stage { padding:16px; } .permissions-stage input { max-width:100%; min-width:0; } }

/* Permissions owns its composition; @factor/data-table owns table mechanics. */
.workspace-scroll:has(> .permissions-admin) { padding:0; overflow:hidden; display:flex; min-height:0; }
.permissions-admin { max-width:none; width:100%; height:100%; min-height:0; margin:0; padding:0; gap:0; background:var(--surface); overflow:hidden; }
.permissions-admin > p:not(.permissions-notice) { flex:none; padding:8px 16px; }
.permissions-workspace { display:grid; grid-template-columns:min(var(--permissions-selector-width), 30%) 5px minmax(0,1fr); flex:1; min-height:0; min-width:0; }
.permissions-sections { min-width:0; overflow:auto; padding:8px 0; }
.permissions-sections button { display:block; text-align:left; width:100%; min-height:44px; padding:12px 16px; border:0; border-radius:0; background:transparent; overflow-wrap:anywhere; }
.permissions-sections button[aria-current="page"] { background:var(--surface-active); color:var(--blue); font-weight:500; }
.permissions-separator { cursor:col-resize; touch-action:none; border-left:1px solid var(--line); background:var(--surface); }
.permissions-separator:hover { background:var(--surface-active); }
.permissions-working-plane { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
.permissions-section { flex:1; min-width:0; min-height:0; display:flex; flex-direction:column; overflow:auto; }
.permissions-section[hidden] { display:none; }
.permissions-section > section { flex:1; min-width:0; min-height:0; display:flex; flex-direction:column; gap:12px; overflow:auto; }
.permissions-section > section > :not(.factor-data-table) { margin-left:16px; margin-right:16px; flex:none; }
.permissions-section > section > :first-child { margin-top:16px; }
.permissions-section > section > :last-child:not(.factor-data-table) { margin-bottom:12px; }
.permissions-section h2 { font-size:16px; margin:0; }
.permissions-section > details { padding:16px; }
.permissions-section > section > p { color:var(--muted); font-size:12px; }
.permissions-admin .factor-data-table { flex:1; min-height:160px; --factor-table-surface:var(--paper); --factor-table-divider:var(--line-strong); --factor-table-font:var(--font-family); }
.permissions-admin .factor-data-table .permissions-actions { flex-wrap:nowrap; gap:8px; }
.permissions-admin .factor-data-table td .permissions-actions button { white-space:nowrap; padding:6px 8px; font-size:12px; }
.permissions-admin .factor-data-table thead button:not(.table-column-resizer) { padding:0; border:0; border-radius:0; background:transparent; color:inherit; }
.permissions-admin .factor-data-table .table-column-resizer { padding:0; border:0; border-radius:0; }
.permissions-admin .factor-data-table td p { margin:4px 0 0; }
.permissions-admin .permissions-mobile-section { display:none; }
.permissions-admin ::selection { background:var(--surface-active); color:var(--ink); }
.permissions-admin input { caret-color:var(--blue); }
.permissions-admin .permissions-section { scrollbar-color:var(--line-strong) var(--surface); scrollbar-width:thin; }
@media(max-width:800px) {
  .permissions-workspace { display:flex; flex-direction:column; }
  .permissions-admin .permissions-sections,.permissions-admin .permissions-separator { display:none; }
  .permissions-admin .permissions-mobile-section { display:flex; flex:none; padding:8px 16px; border-bottom:1px solid var(--line); }
  .permissions-mobile-section select { flex:1; min-width:0; }
  .permissions-working-plane { flex:1; }
  .permissions-admin .permissions-toolbar label { min-width:0; }
  .permissions-admin input { max-width:100%; min-width:0; }
}

.permissions-sections { font-size:14px; }
.permissions-empty { padding:24px 16px; color:var(--muted); }

/* Estados command geometry, hosted in the existing shared breadcrumb action slot. */
.permissions-context-actions { display:flex; align-items:center; gap:8px; }
.permissions-context-actions button { display:inline-flex; align-items:center; justify-content:center; flex:none; gap:6px; min-height:34px; border:1px solid transparent; border-radius:8px; padding:0 10px; font:700 10px/1 var(--font-family); cursor:pointer; white-space:nowrap; }
.permissions-context-actions .permissions-context-refresh { width:34px; height:34px; padding:0; color:var(--blue); background:transparent; }
.permissions-context-actions .permissions-context-refresh:hover:not(:disabled) { background:var(--control-hover); }
.permissions-context-actions .permissions-context-primary { background:var(--blue-solid); color:#fff; border-color:var(--blue-solid); }
.permissions-context-actions .permissions-context-primary:hover:not(:disabled) { background:color-mix(in srgb,var(--blue-solid),black 12%); border-color:color-mix(in srgb,var(--blue-solid),black 12%); }
.permissions-context-actions button:disabled { opacity:.48; cursor:progress; }
.permissions-context-actions button:focus-visible { outline:2px solid var(--focus-ring); outline-offset:2px; }
.permissions-context-divider { width:1px; height:22px; background:var(--line); }
.permissions-context-refresh[aria-busy="true"] svg { animation:permissions-refresh 700ms linear infinite; }
.permissions-admin .permissions-sections button { display:flex; align-items:center; gap:12px; }
.permissions-sections button svg { flex:none; color:var(--muted); }
.permissions-sections button[aria-current="page"] svg { color:currentColor; }
.permissions-sections button span { min-width:0; }
@keyframes permissions-refresh { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .permissions-context-refresh[aria-busy="true"] svg { animation:none; } }
@media (pointer:coarse) { .permissions-context-actions button { min-height:44px; } .permissions-context-actions .permissions-context-refresh { width:44px; height:44px; } }

.permissions-admin .factor-data-table .permission-count { display:inline; padding:0; border:0; border-radius:0; background:transparent; color:var(--blue); text-decoration:underline; text-underline-offset:3px; font:inherit; font-variant-numeric:tabular-nums; }
.permissions-admin .workspace-sidebar__compact select { flex:1; min-width:0; }
.permissions-admin .permissions-section > section > .factor-data-table:first-child { margin-top:0; }
.permissions-admin .permissions-section > section > .factor-data-table:first-child { --factor-table-top-edge:0px; }
.permissions-admin .permissions-section > section > .sr-only + .factor-data-table { --factor-table-top-edge:0px; margin-top:0; }
.permissions-admin .sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
.permissions-editor { position:fixed; inset:0; margin:auto; }
.permissions-assignment-dialog { width:min(820px,calc(100vw - 32px)); overflow:hidden; }
.permissions-assignment-dialog form { max-height:calc(100dvh - 80px); min-height:0; overflow-y:auto; }
.permissions-assignment-picker { min-height:0; }
.permissions-assignment-picker > .permissions-assignment-search { position:sticky; top:0; z-index:2; display:block; width:100%; min-width:0; padding:2px 2px 8px; box-sizing:border-box; background:var(--surface); }
.permissions-assignment-search-control { position:relative; display:block; width:100%; }
.permissions-assignment-search-control > svg { position:absolute; top:50%; left:12px; transform:translateY(-50%); color:var(--muted); pointer-events:none; }
.permissions-assignment-picker .permissions-assignment-search-control > input { display:block; box-sizing:border-box; width:100%; min-width:0; padding-left:39px; }
.permissions-assignment-picker .factor-data-table > .table-shell { max-height:min(420px,45dvh); overflow:auto; overscroll-behavior:contain; }
.permissions-assignment-selected { min-width:0; font-size:13px; }
.permissions-assignment-selected ul { margin:8px 0 0; padding:0; max-height:112px; overflow:auto; list-style:none; }
.permissions-assignment-selected li { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:40px; border-bottom:1px solid var(--line); }
.permissions-assignment-selected-label { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.permissions-assignment-selected-label small { display:block; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.permissions-editor .permissions-assignment-remove { flex:none; display:grid; place-items:center; width:32px; height:32px; padding:0; color:var(--blue-solid); background:transparent; border:0; }
.permissions-drawer { inset:0 0 0 auto; margin:0; width:min(560px,100vw); height:100dvh; max-height:100dvh; max-width:100vw; border-radius:0; box-sizing:border-box; padding:0; overflow:hidden; }
.permissions-drawer:not([open]) { display:none; }
.permissions-drawer form { height:100%; min-height:0; gap:0; }
.permissions-drawer-header { flex:none; padding:20px 24px; border-bottom:1px solid var(--line); overflow-wrap:anywhere; }
.permissions-drawer-body { flex:1; min-height:0; overflow:auto; padding:24px; display:flex; flex-direction:column; gap:20px; }
.permissions-drawer .permissions-options { max-height:none; overflow:visible; }
.permissions-drawer footer { flex:none; margin:0; padding:16px 24px; border-top:1px solid var(--line); }
.permissions-drawer-error { flex:none; padding:12px 24px; color:var(--ink); }
.permissions-drawer .permissions-delegation-choices { gap:8px; }
.permissions-drawer .permissions-delegation-choices legend { padding-bottom:4px; font-size:14px; }
.permissions-drawer .permissions-delegation-search { display:flex; align-items:stretch; flex-direction:column; gap:6px; font-size:12px; color:var(--muted); }
.permissions-drawer .permissions-delegation-search input { width:100%; min-height:38px; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:8px; }
.permissions-drawer .permissions-delegation-choices .permissions-options { gap:2px; padding:0; }
.permissions-drawer .permissions-delegation-choices .permissions-option { min-height:40px; box-sizing:border-box; margin:0; padding:8px; align-items:center; border-radius:8px; cursor:pointer; }
.permissions-drawer .permissions-delegation-choices .permissions-option:has(input:checked) { background:var(--surface-active); color:var(--blue); }
.permissions-drawer .permissions-delegation-choices .permissions-option input { margin:0; padding:0; accent-color:var(--blue-solid); }
.permissions-drawer .permissions-delegation-remove { margin-right:auto; color:var(--danger, #b42318); background:transparent; border-color:transparent; }
.permissions-drawer .permissions-delegation-remove:hover:not(:disabled) { background:var(--control-hover); border-color:transparent; }
.permissions-load-more { min-height:1px; flex:none; }
.permissions-workspace-skeleton { flex:1; width:100%; min-width:0; min-height:0; }
.permissions-workspace-skeleton > .loading-region__visual { display:grid; grid-template-columns:min(var(--permissions-selector-width,260px),30%) 5px minmax(0,1fr); min-width:0; }
.permissions-sidebar-skeleton { padding:20px 16px; border-right:1px solid var(--line); display:grid; align-content:start; gap:24px; }
.permissions-sidebar-skeleton-row { display:flex; align-items:center; gap:12px; }
.permissions-sidebar-skeleton-row .loading-skeleton:last-child { flex:1; }
.permissions-skeleton-divider { border-left:1px solid var(--line); }
.permissions-table-skeleton { min-width:0; width:100%; flex:1; overflow:hidden; }
.permissions-skeleton-header,.permissions-skeleton-row { box-sizing:border-box; height:44px; display:grid; grid-auto-columns:minmax(0,1fr); grid-auto-flow:column; align-items:center; gap:20px; padding:0 16px; border-bottom:1px solid var(--line); }
.permissions-skeleton-header { height:40px; border-top:1px solid var(--line); }
@media(max-width:800px) { .permissions-workspace-skeleton > .loading-region__visual { grid-template-columns:minmax(0,1fr); } .permissions-sidebar-skeleton,.permissions-skeleton-divider { display:none; } }
@media(max-width:520px) { .permissions-drawer footer { gap:8px; } .permissions-drawer footer button { padding:9px 8px; } }
