@charset "utf-8";

:root { --tbs-border-color: #dee2e6; --tbs-border-radius-sm: 3px; --tbs-border-radius: 6px; --tbs-panel-bg: #fafafa; --tbs-panel-padding: 1rem; --tbs-selection-bg: #eef6ff; --tbs-text-sm: 0.85rem; --tbs-text-xs: 0.82rem; --tbs-text-xxs: 0.72rem; --tbs-text-muted: #777; --tbs-text-subtle: #888; --tbs-text-placeholder: #999; --tbs-danger-text: #c00; --tbs-badge-bg: #e8f4fd; --tbs-badge-color: #1a6fa8; --tbs-badge-border: #aad4f0; --tbs-chip-off-bg: #e9ecef; --tbs-chip-off-color: #333; --tbs-chip-on-bg: #1a6fa8; --tbs-chip-on-color: #fff; --tbs-icon-sm: 1rem; --tbs-icon-md: 1.2rem; --tbs-icon-lg: 1.4rem; --tbs-gap-xs: 0.25rem; --tbs-gap-sm: 0.4rem; --tbs-gap: 0.5rem; --tbs-gap-md: 0.75rem; --tbs-gap-lg: 1rem; --tbs-gap-xl: 1.5rem; --tbs-gap-2xl: 2rem; }

.tbs-panel { border: 1px solid var(--tbs-border-color); border-radius: var(--tbs-border-radius); padding: var(--tbs-panel-padding); background: var(--tbs-panel-bg); }

.tbs-panel--sticky { position: sticky; top: 1rem; }

.tbs-panel--sidebar { width: 380px; flex-shrink: 0; }

.tbs-two-col { display: flex; gap: var(--tbs-gap-xl); align-items: flex-start; }

.tbs-col-main { flex: 1 1 0%; min-width: 0px; }

.tbs-col-sidebar { width: 380px; flex-shrink: 0; }

.tbs-action-row { display: flex; gap: 0.3rem; flex-wrap: wrap; align-items: center; }

.tbs-action-row--end { justify-content: flex-end; }

.tbs-divider { border-right: 0px; border-bottom: 0px; border-left: 0px; border-image: none; border-top: 1px solid var(--tbs-border-color); margin: 0.75rem 0px; }

.tbs-page-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; }

.tbs-page-title { margin: 0px; }

.tbs-page-header-actions { display: flex; gap: var(--tbs-gap); }

.tbs-section-header { display: flex; justify-content: space-between; align-items: center; font-weight: 600; font-size: var(--tbs-text-sm); margin-bottom: 0.5rem; }

.tbs-section-header-actions { display: flex; gap: var(--tbs-gap-sm); align-items: center; }

.tbs-icon-btn { aspect-ratio: 1 / 1; display: inline-flex; align-items: center; justify-content: center; padding-left: 0.35rem !important; padding-right: 0.35rem !important; line-height: 1 !important; }

.tbs-icon-text-btn { display: inline-flex; align-items: center; gap: 0.4rem; }

.tbs-icon-sm { font-size: var(--tbs-icon-sm); }

.tbs-icon-md { font-size: var(--tbs-icon-md); }

.tbs-icon-lg { font-size: var(--tbs-icon-lg); }

.tbs-table-sm { font-size: var(--tbs-text-xs); }

.tbs-cell-id { font-size: var(--tbs-text-xxs); color: var(--tbs-text-subtle); word-break: break-all; font-family: monospace; }

.tbs-cell-muted { color: var(--tbs-text-muted); }

tr.tbs-row--selected > td { background: var(--tbs-selection-bg) !important; }

.tbs-tree-row { display: flex; align-items: center; gap: 4px; border-radius: var(--tbs-border-radius-sm); cursor: pointer; padding: 1px 4px; line-height: 1.8; user-select: none; }

.tbs-tree-row:hover { background: rgb(240, 246, 255); }

.tbs-tree-row--selected { background: var(--tbs-selection-bg); }

.tbs-tree-toggle { user-select: none; width: 16px; font-size: 0.65rem; flex-shrink: 0; text-align: center; }

.tbs-acl-badge { display: inline-block; background: var(--tbs-badge-bg); color: var(--tbs-badge-color); border: 1px solid var(--tbs-badge-border); border-radius: var(--tbs-border-radius-sm); padding: 0px 3px; margin-right: 2px; font-size: 0.7rem; }

.tbs-perm-chip { display: inline-block; font-size: 0.78rem; cursor: pointer; user-select: none; background: var(--tbs-chip-off-bg); color: var(--tbs-chip-off-color); border-radius: var(--tbs-border-radius-sm); padding: 2px 7px; margin: 0px; transition: background 0.12s, color 0.12s; }

.tbs-perm-chip--active { background: var(--tbs-chip-on-bg); color: var(--tbs-chip-on-color); }

.tbs-perm-chip:hover:not(.tbs-perm-chip--active) { background: rgb(211, 216, 222); }

.tbs-confirm-label { font-size: var(--tbs-text-xs); color: var(--tbs-danger-text); }

.tbs-feedback { font-size: 0.8rem; padding: 0.25rem 0.5rem; margin: 0px; }

.tbs-empty-cell { text-align: center; vertical-align: middle; color: var(--tbs-text-placeholder); font-style: italic; padding: 2.5rem 1rem !important; }

.tbs-empty-block { text-align: center; padding: 2.5rem 1rem; color: var(--tbs-text-placeholder); font-style: italic; }

.tbs-loading { color: var(--tbs-text-muted); font-style: italic; font-size: var(--tbs-text-sm); margin: 0px; }

.tbs-text-sm { font-size: var(--tbs-text-sm); }

.tbs-text-xs { font-size: var(--tbs-text-xs); }

.tbs-text-xxs { font-size: var(--tbs-text-xxs); }

.tbs-text-muted { color: var(--tbs-text-muted); }

.tbs-text-subtle { color: var(--tbs-text-subtle); }

.tbs-font-mono { font-family: monospace; }

.tbs-bold { font-weight: 600; }

.tbs-form-label { font-size: 0.8rem; margin-bottom: 0.25rem; display: block; }