/* Report builder (list, builder workspace, results).
   Cards reuse the template's .box surface; everything inside is scoped under .rb. */

.rb {
    --rb-surface: #ffffff;
    --rb-subtle: rgb(var(--default-background));
    --rb-hover: rgb(var(--list-hover-focus-bg));
    --rb-line: rgb(0 0 0 / 0.07);
    --rb-line-strong: rgb(0 0 0 / 0.12);
    --rb-text: rgb(var(--default-text-color));
    --rb-muted: rgb(var(--default-text-color) / 0.55);
    --rb-faint: rgb(var(--default-text-color) / 0.35);
    --rb-accent: rgb(var(--primary));
    --rb-accent-soft: rgb(var(--primary) / 0.1);
    --rb-accent-line: rgb(var(--primary) / 0.35);
    --rb-danger: rgb(var(--danger));
    --rb-danger-soft: rgb(var(--danger) / 0.1);
    --rb-warning: rgb(var(--warning));
    --rb-warning-soft: rgb(var(--warning) / 0.14);
    --rb-success: rgb(var(--success));
    --rb-success-soft: rgb(var(--success) / 0.12);
    --rb-radius: 8px;
    --rb-input-h: 34px;
    color: var(--rb-text);
}

.dark .rb {
    --rb-surface: rgb(var(--body-bg));
    --rb-subtle: rgb(255 255 255 / 0.03);
    --rb-hover: rgb(255 255 255 / 0.05);
    --rb-line: rgb(255 255 255 / 0.07);
    --rb-line-strong: rgb(255 255 255 / 0.14);
    --rb-text: rgb(255 255 255 / 0.85);
    --rb-muted: rgb(255 255 255 / 0.5);
    --rb-faint: rgb(255 255 255 / 0.3);
    --rb-accent-soft: rgb(var(--primary) / 0.18);
}

.rb .box { margin-bottom: 1.25rem; }

/* ---------- Shared bits ---------- */

.rb-muted { color: var(--rb-muted); }

.rb-section-title {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--rb-text);
    margin: 0;
}

.rb-section-sub {
    font-size: 0.75rem;
    color: var(--rb-muted);
    margin: 2px 0 0;
}

.rb-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--rb-muted);
    background: var(--rb-subtle);
    border: 1px solid var(--rb-line);
}

.rb-count.rb-count-active {
    color: var(--rb-accent);
    background: var(--rb-accent-soft);
    border-color: transparent;
}

.rb-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 1px 8px;
    border-radius: 999px;
    font-size: 0.68rem;
    font-weight: 600;
    line-height: 18px;
    white-space: nowrap;
}

.rb-badge-muted { color: var(--rb-muted); background: var(--rb-subtle); border: 1px solid var(--rb-line); }
.rb-badge-accent { color: var(--rb-accent); background: var(--rb-accent-soft); }
.rb-badge-warning { color: rgb(160 105 0); background: var(--rb-warning-soft); }
.rb-badge-danger { color: var(--rb-danger); background: var(--rb-danger-soft); }
.rb-badge-success { color: rgb(20 140 105); background: var(--rb-success-soft); }
.dark .rb-badge-warning { color: var(--rb-warning); }
.dark .rb-badge-success { color: var(--rb-success); }

/* Inputs: compact native controls so a filter row reads as a sentence.
   The template sets border colour, radius and font size on every input/select with !important,
   so those three need !important here too. */
.rb .rb-input,
.rb .rb-select {
    height: var(--rb-input-h);
    width: 100%;
    min-width: 0;
    padding: 0 10px;
    font-size: 0.8rem !important;
    line-height: normal;
    color: var(--rb-text);
    background-color: var(--rb-surface);
    border: 1px solid;
    border-color: var(--rb-line-strong) !important;
    border-radius: 6px !important;
    outline: none;
    box-shadow: none;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}

.rb-select {
    padding-right: 28px;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c9097' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 9px center;
    cursor: pointer;
}

.rb-input::placeholder { color: var(--rb-faint); }

.rb .rb-input:hover,
.rb .rb-select:hover { border-color: rgb(var(--default-text-color) / 0.25) !important; }

.rb .rb-input:focus,
.rb .rb-select:focus {
    border-color: var(--rb-accent) !important;
    box-shadow: 0 0 0 3px rgb(var(--primary) / 0.15);
}

.rb-input:disabled,
.rb-select:disabled { opacity: 0.55; cursor: not-allowed; }

.rb .rb-input-search {
    padding-left: 32px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238c9097' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 10px center;
}

/* Buttons: built on the template's ti-btn so colours match; these just tune size and the spinner */
.rb .ti-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    margin: 0;
}

.rb .ti-btn:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }

.rb-btn-ghost {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 30px;
    padding: 0 10px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--rb-accent);
    background: transparent;
    border: 0;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.12s ease;
}

.rb-btn-ghost:hover { background: var(--rb-accent-soft); }
.rb-btn-ghost:disabled { opacity: 0.45; cursor: not-allowed; background: transparent; }

.rb-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    color: var(--rb-muted);
    background: transparent;
    border: 0;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}

.rb-icon-btn:hover { color: var(--rb-text); background: var(--rb-hover); }
.rb-icon-btn.rb-icon-btn-danger:hover { color: var(--rb-danger); background: var(--rb-danger-soft); }

.rb-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: rb-spin 0.7s linear infinite;
}

.rb-spinner-lg { width: 22px; height: 22px; border-width: 2.5px; color: var(--rb-accent); }

@keyframes rb-spin { to { transform: rotate(360deg); } }

/* Empty / info states */
.rb-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 40px 24px;
    color: var(--rb-muted);
}

.rb-empty-sm { padding: 18px 16px; }

.rb-empty-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    margin-bottom: 12px;
    border-radius: 12px;
    color: var(--rb-accent);
    background: var(--rb-accent-soft);
    font-size: 1.3rem;
}

.rb-empty-title {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--rb-text);
    margin: 0 0 4px;
}

.rb-empty-text {
    font-size: 0.78rem;
    max-width: 380px;
    margin: 0 auto;
    line-height: 1.5;
}

.rb-empty .ti-btn { margin-top: 16px; }

.rb-hint {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    font-size: 0.78rem;
    color: var(--rb-muted);
    background: var(--rb-subtle);
    border: 1px dashed var(--rb-line-strong);
    border-radius: var(--rb-radius);
}

.rb-alert {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    font-size: 0.8rem;
    line-height: 1.45;
    border-radius: var(--rb-radius);
}

.rb-alert-danger { color: var(--rb-danger); background: var(--rb-danger-soft); }
.rb-alert-warning { color: rgb(140 92 0); background: var(--rb-warning-soft); }
.dark .rb-alert-warning { color: var(--rb-warning); }
.rb-alert .ti { margin-top: 2px; }

/* ---------- Report list ---------- */

.rb-list-toolbar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 14px 18px;
    border-bottom: 1px solid var(--rb-line);
}

.rb-list-toolbar .rb-list-heading { flex: 1 1 auto; min-width: 180px; }
.rb .rb-list-toolbar .rb-input-search { width: 240px; }

.rb-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.8rem;
}

.rb-table th {
    position: sticky;
    top: 0;
    z-index: 1;
    padding: 9px 14px;
    text-align: left;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--rb-muted);
    white-space: nowrap;
    background: var(--rb-subtle);
    border-bottom: 1px solid var(--rb-line-strong);
}

.dark .rb-table th { background: rgb(var(--body-bg)); }

.rb-table td {
    padding: 10px 14px;
    vertical-align: middle;
    border-bottom: 1px solid var(--rb-line);
}

.rb-table tbody tr:last-child td { border-bottom: 0; }
.rb-table tbody tr { transition: background 0.1s ease; }
.rb-table tbody tr:hover td { background: var(--rb-hover); }

.rb-table .rb-num { text-align: right; font-variant-numeric: tabular-nums; }
.rb-table .rb-actions { width: 1%; white-space: nowrap; text-align: right; }

.rb-list-row { cursor: pointer; }

.rb-report-cell {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.rb-report-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 9px;
    color: var(--rb-accent);
    background: var(--rb-accent-soft);
    font-size: 1.05rem;
}

.rb-report-name {
    font-weight: 600;
    color: var(--rb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rb-report-desc {
    font-size: 0.74rem;
    color: var(--rb-muted);
    max-width: 520px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rb-list-row:hover .rb-report-name { color: var(--rb-accent); }

/* New report modal */
.rb-field { display: block; margin-bottom: 14px; }

.rb-label {
    display: block;
    margin-bottom: 5px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--rb-text);
}

.rb-label .rb-optional { font-weight: 400; color: var(--rb-muted); }
.rb-field-error { margin-top: 5px; font-size: 0.72rem; color: var(--rb-danger); }
.rb .rb-input.rb-invalid { border-color: var(--rb-danger) !important; }

.rb-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 20px;
}

/* ---------- Builder header ---------- */

.rb-header {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 14px 18px;
}

.rb-header-main { flex: 1 1 auto; min-width: 0; }

.rb .rb-title-input,
.rb .rb-desc-input {
    display: block;
    width: 100%;
    padding: 2px 6px;
    margin-left: -6px;
    line-height: 1.4;
    background: transparent;
    border: 1px solid;
    border-color: transparent !important;
    border-radius: 6px !important;
    outline: none;
    box-shadow: none;
    color: var(--rb-text);
    transition: border-color 0.12s ease, background 0.12s ease;
}

.rb .rb-title-input { font-size: 1.05rem !important; font-weight: 600; }
.rb .rb-desc-input { font-size: 0.78rem !important; color: var(--rb-muted); margin-top: 1px; }
.rb-title-input::placeholder,
.rb-desc-input::placeholder { color: var(--rb-faint); }

.rb .rb-title-input:hover,
.rb .rb-desc-input:hover { background: var(--rb-hover); }

.rb .rb-title-input:focus,
.rb .rb-desc-input:focus {
    background: var(--rb-surface);
    border-color: var(--rb-accent) !important;
    box-shadow: 0 0 0 3px rgb(var(--primary) / 0.15);
}

.rb-header-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-shrink: 0;
}

.rb-save-state {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.74rem;
    color: var(--rb-muted);
    white-space: nowrap;
}

.rb-save-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rb-success);
}

.rb-save-state.rb-dirty .rb-save-dot { background: var(--rb-warning); }

/* ---------- Workspace ---------- */

.rb-workspace {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 991.98px) {
    .rb-workspace { grid-template-columns: minmax(0, 1fr); }
    .rb-header { flex-wrap: wrap; }
    .rb-header-actions { width: 100%; justify-content: flex-end; }
}

/* ---------- Data panel ---------- */

.rb-data-panel {
    position: sticky;
    top: 80px;
    display: flex;
    flex-direction: column;
    max-height: calc(100vh - 100px);
    overflow: hidden;
}

@media (max-width: 991.98px) {
    .rb-data-panel { position: static; max-height: 420px; }
}

.rb-panel-head {
    padding: 14px 16px 12px;
    border-bottom: 1px solid var(--rb-line);
}

.rb-panel-head .rb-input { margin-top: 10px; }

.rb-entity-list {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 6px;
}

.rb-entity + .rb-entity { margin-top: 2px; }

.rb-entity-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 10px;
    text-align: left;
    background: transparent;
    border: 0;
    border-radius: 7px;
    cursor: pointer;
    color: var(--rb-text);
    transition: background 0.12s ease;
}

.rb-entity-toggle:hover { background: var(--rb-hover); }

.rb-entity.rb-open > .rb-entity-toggle { background: var(--rb-subtle); }

.rb-entity-chevron {
    flex-shrink: 0;
    color: var(--rb-faint);
    transition: transform 0.15s ease;
}

.rb-entity.rb-open .rb-entity-chevron { transform: rotate(90deg); color: var(--rb-muted); }

.rb-entity-name {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.8rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rb-entity-meta { font-size: 0.7rem; color: var(--rb-faint); white-space: nowrap; }

.rb-field-list { padding: 4px 0 8px 22px; }
.rb-field-list.rb-root-fields { padding-left: 0; }

/* Related data: nested relationship nodes */
.rb-tree-children {
    margin-left: 14px;
    padding-left: 6px;
    border-left: 1px solid var(--rb-line-strong);
}

.rb-tree-group {
    margin: 10px 8px 2px;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--rb-muted);
}

.rb-many {
    flex-shrink: 0;
    padding: 0 6px;
    border-radius: 999px;
    font-size: 0.62rem;
    font-weight: 600;
    line-height: 16px;
    color: var(--rb-accent);
    background: var(--rb-accent-soft);
}

.rb .rb-select.rb-root-select { font-weight: 600; margin-bottom: 4px; }

.rb-field-item {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 6px 8px;
    border-radius: 6px;
    font-size: 0.78rem;
    cursor: pointer;
    user-select: none;
    transition: background 0.1s ease;
}

.rb-field-item:hover { background: var(--rb-hover); }

.rb-field-item input[type="checkbox"] {
    flex-shrink: 0;
    width: 15px;
    height: 15px;
    margin: 0;
    border-radius: 4px;
    accent-color: rgb(var(--primary));
    cursor: pointer;
}

.rb-field-item.rb-checked .rb-field-name { color: var(--rb-text); font-weight: 600; }

.rb-field-name {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--rb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.rb-type-icon {
    flex-shrink: 0;
    width: 16px;
    color: var(--rb-faint);
    font-size: 0.85rem;
    text-align: center;
}

.rb-pii {
    flex-shrink: 0;
    padding: 0 5px;
    border-radius: 4px;
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    line-height: 15px;
    color: rgb(150 100 0);
    background: var(--rb-warning-soft);
}

.dark .rb-pii { color: var(--rb-warning); }

.rb-field-skeleton {
    height: 12px;
    margin: 10px 8px;
    border-radius: 4px;
    background: linear-gradient(90deg, var(--rb-subtle) 0%, var(--rb-line-strong) 50%, var(--rb-subtle) 100%);
    background-size: 200% 100%;
    animation: rb-shimmer 1.2s ease-in-out infinite;
}

@keyframes rb-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

.rb-field-actions {
    display: flex;
    gap: 4px;
    padding: 2px 8px 4px;
}

.rb-link-btn {
    padding: 0;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--rb-accent);
    background: none;
    border: 0;
    cursor: pointer;
}

.rb-link-btn:hover { text-decoration: underline; }
.rb-link-btn + .rb-link-btn::before { content: "·"; margin: 0 6px; color: var(--rb-faint); }

/* ---------- Query card (columns, filters, sort) ---------- */

.rb-query-section { padding: 16px 18px; }
.rb-query-section + .rb-query-section { border-top: 1px solid var(--rb-line); }

.rb-query-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.rb-query-head .rb-section-title { flex: 1 1 auto; display: flex; align-items: center; gap: 8px; }

/* Column chips */
.rb-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.rb-chip {
    display: inline-flex;
    align-items: stretch;
    max-width: 100%;
    background: var(--rb-surface);
    border: 1px solid var(--rb-line-strong);
    border-radius: 7px;
    font-size: 0.78rem;
    transition: border-color 0.12s ease, box-shadow 0.12s ease, opacity 0.12s ease;
}

.rb-chip:hover { border-color: var(--rb-accent-line); }
.rb-chip.rb-dragging { opacity: 0.4; }
.rb-chip.rb-drop-target { border-color: var(--rb-accent); box-shadow: -3px 0 0 0 var(--rb-accent); }

.rb-chip-body {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    padding: 5px 4px 5px 8px;
    cursor: grab;
}

.rb-chip-body:active { cursor: grabbing; }
.rb-chip-grip { color: var(--rb-faint); font-size: 0.8rem; }
.rb-chip-entity { color: var(--rb-muted); white-space: nowrap; }
.rb-chip-name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.rb-chip-remove {
    display: inline-flex;
    align-items: center;
    padding: 0 7px;
    color: var(--rb-faint);
    background: none;
    border: 0;
    border-left: 1px solid var(--rb-line);
    border-radius: 0 7px 7px 0;
    cursor: pointer;
}

.rb-chip-remove:hover { color: var(--rb-danger); background: var(--rb-danger-soft); }

.rb-chip.rb-chip-invalid { border-style: dashed; border-color: var(--rb-danger); }

/* Conditions on a total ("only count bookings where...") */
.rb-chip-remove.rb-chip-condition { border-radius: 0; }
.rb-chip-remove.rb-chip-condition.rb-on { color: var(--rb-accent); background: var(--rb-accent-soft); }
.rb-chip-remove.rb-chip-condition.rb-open,
.rb-chip-remove.rb-chip-condition:hover { color: var(--rb-accent); background: var(--rb-accent-soft); }

.rb-column-conditions { margin-top: 12px; }
.rb-column-conditions > .rb-section-sub { margin: 0 0 8px; }
.rb-column-conditions > .rb-section-sub strong { color: var(--rb-text); font-weight: 600; }

/* Total picker inside a chip, e.g. "Latest ▾ Shifts worked · Start" */
.rb .rb-chip-aggregate {
    height: 22px;
    padding: 0 22px 0 7px;
    font-size: 0.72rem !important;
    font-weight: 600;
    color: var(--rb-accent);
    background-color: var(--rb-accent-soft);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%233686ea' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 5px center;
    border: 0;
    border-color: transparent !important;
    border-radius: 5px !important;
    appearance: none;
    cursor: pointer;
}

/* Filter + sort rows */
.rb-rows { display: flex; flex-direction: column; gap: 8px; }

.rb-row {
    display: grid;
    align-items: center;
    gap: 8px;
}

.rb-filter-row { grid-template-columns: minmax(170px, 1.4fr) minmax(130px, 1fr) minmax(150px, 1.4fr) 30px; }
.rb-sort-row { grid-template-columns: 74px minmax(150px, 2fr) minmax(130px, 1fr) 30px; }

.rb-row-lead {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--rb-muted);
    padding-left: 2px;
}

.rb-row .rb-select.rb-logic { font-weight: 600; color: var(--rb-accent); }

.rb-value-pair {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.rb-value-pair .rb-and { font-size: 0.72rem; color: var(--rb-muted); flex-shrink: 0; }

.rb-value-none {
    font-size: 0.75rem;
    color: var(--rb-faint);
    padding-left: 2px;
}

.rb-enum-options {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    min-width: 0;
}

.rb-enum-option {
    padding: 3px 9px;
    font-size: 0.72rem;
    font-weight: 500;
    color: var(--rb-muted);
    background: var(--rb-surface);
    border: 1px solid var(--rb-line-strong);
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.12s ease;
}

.rb-enum-option:hover { border-color: var(--rb-accent-line); color: var(--rb-text); }
.rb-enum-option.rb-on { color: var(--rb-accent); background: var(--rb-accent-soft); border-color: var(--rb-accent-line); font-weight: 600; }

@media (max-width: 767.98px) {
    .rb-filter-row,
    .rb-sort-row { grid-template-columns: 1fr 1fr 30px; }
    .rb-filter-row > :first-child,
    .rb-sort-row .rb-row-lead { grid-column: 1 / -1; }
}

/* Filter groups */
.rb-group-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
}

.rb-group-text { font-size: 0.78rem; color: var(--rb-muted); }

.rb .rb-select.rb-select-inline { width: auto; min-width: 70px; height: 30px; }

.rb-group-nested {
    padding: 12px 12px 6px;
    background: var(--rb-subtle);
    border: 1px solid var(--rb-line);
    border-left: 3px solid var(--rb-accent-line);
    border-radius: var(--rb-radius);
}

.rb-group-nested .rb-group-head { margin-bottom: 8px; }
.rb-group-nested .rb-group-head .rb-spacer { flex: 1 1 auto; }

.rb-group-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 2px;
    margin: 8px 0 0 -10px;
}

.rb-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.78rem;
    color: var(--rb-text);
    cursor: pointer;
}

.rb-check input {
    width: 15px;
    height: 15px;
    margin: 0;
    accent-color: rgb(var(--primary));
}

.rb-query-foot {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 12px 18px;
    background: var(--rb-subtle);
    border-top: 1px solid var(--rb-line);
    border-radius: 0 0 0.5rem 0.5rem;
}

.rb-limit {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.78rem;
    color: var(--rb-muted);
}

.rb .rb-limit .rb-select { width: auto; min-width: 92px; }
.rb-query-foot .rb-spacer { flex: 1 1 auto; }
.rb-kbd-hint { font-size: 0.7rem; color: var(--rb-faint); }

/* ---------- Results ---------- */

.rb-results-head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 14px 18px;
    border-bottom: 1px solid var(--rb-line);
}

.rb-results-head .rb-section-title { margin-right: 4px; }
.rb-results-head .rb-spacer { flex: 1 1 auto; }

.rb-results-meta {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    color: var(--rb-muted);
}

.rb-results-body { position: relative; }

.rb-results-scroll {
    max-height: 62vh;
    overflow: auto;
}

.rb-results-body.rb-busy .rb-results-scroll { opacity: 0.35; pointer-events: none; }

.rb-results-overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    font-size: 0.78rem;
    color: var(--rb-muted);
}

.rb-results-body .rb-alert { margin: 14px 18px; }

.rb-results-table td { white-space: nowrap; max-width: 320px; overflow: hidden; text-overflow: ellipsis; }
.rb-results-table th:first-child,
.rb-results-table td:first-child { padding-left: 18px; }
.rb-results-table .rb-null { color: var(--rb-faint); }
.rb-results-table .rb-row-index { width: 1%; color: var(--rb-faint); font-variant-numeric: tabular-nums; text-align: right; }

.rb-th-inner { display: inline-flex; align-items: center; gap: 5px; }
.rb-th-inner .rb-type-icon { width: auto; font-size: 0.78rem; }

.rb-pager {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 18px;
    font-size: 0.75rem;
    color: var(--rb-muted);
    border-top: 1px solid var(--rb-line);
}

.rb-pager-buttons { display: inline-flex; align-items: center; gap: 4px; }
.rb-pager-buttons .rb-icon-btn:disabled { opacity: 0.35; cursor: not-allowed; background: transparent; }

.rb-spinner.rb-spinner-xs { width: 10px; height: 10px; border-width: 1.5px; }

.rb-run-note { margin-top: 4px; font-size: 0.72rem; color: var(--rb-muted); white-space: normal; max-width: 420px; }

.rb-table tbody tr.rb-row-highlight td { background: var(--rb-accent-soft); }

.rb-skeleton-row td { padding: 12px 14px; }
.rb-skeleton-bar {
    height: 10px;
    border-radius: 4px;
    background: linear-gradient(90deg, var(--rb-subtle) 0%, var(--rb-line-strong) 50%, var(--rb-subtle) 100%);
    background-size: 200% 100%;
    animation: rb-shimmer 1.2s ease-in-out infinite;
}
