/* ===========================================================================
   Report table design system
   ---------------------------------------------------------------------------
   Loaded after table.css, so it wins the cascade for report tables only.
   Everything here is scoped to `.table-container` (the report table shell)
   except the font-stack repair, which is deliberately global - see below.

   Two skins are supported on the same markup:
     [data-report-skin="light"] - neutral premium data-tool chrome
     [data-report-skin="brand"] - keeps the dark themed header bar
   The skin is set by the report controller; the mechanics below are shared.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   0. Font stack repair (global, intentional)
   app.css declares `html body { font-family: Roboto }` with NO fallback, and
   Roboto is fetched from fonts.gstatic.com. When that request is blocked,
   slow, or the deployment is offline, the whole app drops to the browser
   default serif. Restore a real stack; Roboto is kept first so themed
   installs that do load it are unchanged.
   --------------------------------------------------------------------------- */
html body {
    font-family: Roboto, "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
        "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
        "Segoe UI Emoji";
}

/* ---------------------------------------------------------------------------
   1. Design tokens
   --------------------------------------------------------------------------- */
.table-container {
    /* geometry - overridden by [data-density] */
    --rt-row-h: 42px;
    --rt-head-h: 44px;
    --rt-pad-x: 16px;
    --rt-font: 13px;

    /* neutral ramp */
    --rt-border: #e4e7ec;
    --rt-border-soft: #f2f4f7;
    --rt-surface: #ffffff;
    --rt-surface-alt: #fcfcfd;
    --rt-text: #101828;
    --rt-text-muted: #667085;
    --rt-head-bg: #f9fafb;
    --rt-head-text: #475467;
    --rt-hover: #f4f8ff;

    /* brand - published from the company theme by the report controller */
    --rt-brand: #101828;
    --rt-brand-text: #ffffff;
    --rt-accent: #008855;
}

.table-container[data-density="compact"] {
    --rt-row-h: 32px;
    --rt-head-h: 38px;
    --rt-pad-x: 12px;
    --rt-font: 12.5px;
}

/* ---------------------------------------------------------------------------
   2. Shell
   table.css pins .table-container to `height:100%` and .table-body to a hard
   460px, so long reports render rows outside the rounded container. Let the
   shell own the scroll and the body size to its content instead.
   --------------------------------------------------------------------------- */
.table-container {
    height: auto !important;
    max-height: var(--rt-max-h, calc(100vh - 290px));
    overflow: auto !important;
    border: 1px solid var(--rt-border) !important;
    border-radius: 12px;
    background: var(--rt-surface);
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
    scrollbar-width: thin;
    scrollbar-gutter: stable;
}

.table-container::-webkit-scrollbar { width: 10px; height: 10px; }
.table-container::-webkit-scrollbar-thumb {
    background: #d0d5dd; border-radius: 999px; border: 2px solid var(--rt-surface);
}
.table-container::-webkit-scrollbar-thumb:hover { background: #b6bcc7; }
.table-container::-webkit-scrollbar-track { background: transparent; }

.table-container .table-body,
.table-container .report-table-body {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    min-height: 0 !important;
}

/* ---------------------------------------------------------------------------
   3. Header row - sticky across vertical scroll
   --------------------------------------------------------------------------- */
.table-container .report-table-track {
    position: sticky;
    top: 0;
    z-index: 40;
}

.table-container .header-row {
    height: var(--rt-head-h) !important;
    min-height: var(--rt-head-h) !important;
    background: var(--rt-head-bg) !important;
    border-bottom: 1px solid var(--rt-border);
}

.table-container .header-cell {
    display: flex;
    text-align: left;
    align-items: center;
    height: var(--rt-head-h) !important;
    padding: 0 var(--rt-pad-x) !important;
    background: var(--rt-head-bg);
    color: var(--rt-head-text) !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border-bottom: none !important;
    border-right: 1px solid transparent !important;
    white-space: nowrap;
}

.table-container .header-cell > div,
.table-container .header-cell .truncate {
    font-size: inherit !important;
    letter-spacing: inherit;
    text-transform: inherit;
    font-weight: inherit;
}

/* figure columns label on the right, over their right-aligned numbers */
.table-container .header-cell.is-figure > div { justify-content: flex-end; }
.table-container .header-cell.is-figure { text-align: right; }

/* ---------------------------------------------------------------------------
   4. Body rows
   --------------------------------------------------------------------------- */
.table-container .report-table-row {
    height: var(--rt-row-h) !important;
    min-height: var(--rt-row-h) !important;
    animation: none !important;
}

.table-container .report-table-body .report-table-row:nth-child(even) {
    background: var(--rt-surface-alt);
}

.table-container .report-table-body .report-table-row:hover {
    background: var(--rt-hover) !important;
    transition: background 90ms linear !important;
}

.table-container .report-table-cell {
    display: flex;
    align-items: center;
    text-align: left;
    height: var(--rt-row-h) !important;
    padding: 0 var(--rt-pad-x) !important;
    font-size: var(--rt-font) !important;
    line-height: 1.45;
    color: var(--rt-text);
    border-right: 1px solid var(--rt-border-soft) !important;
    border-bottom: 1px solid var(--rt-border-soft) !important;
    background-clip: padding-box;
}

.table-container .report-table-row > .report-table-cell:last-child {
    border-right: none !important;
}

/* serial column */
.table-container .report-table-cell:first-child {
    color: var(--rt-text-muted);
    font-size: 11.5px !important;
    font-weight: 500 !important;
    justify-content: center;
}

/* ---------------------------------------------------------------------------
   5. Truncation
   The row builder wraps cell text in `.truncate` on a `w-[max-content]` box.
   `text-overflow: ellipsis` can never fire on a max-content box, so text was
   hard-clipped with no ellipsis. Constrain the box to the cell.
   --------------------------------------------------------------------------- */
.table-container .report-table-cell > div {
    width: 100%;
    min-width: 0;
}

.table-container .report-table-cell .truncate {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* opt-in: wrap long text over two lines instead of ellipsis */
.table-container[data-wrap="on"] { --rt-row-h: auto; }
.table-container[data-wrap="on"] .report-table-row,
.table-container[data-wrap="on"] .report-table-cell {
    height: auto !important;
    min-height: 42px !important;
    align-items: stretch;
}
.table-container[data-wrap="on"] .report-table-cell > div { align-items: center; }
.table-container[data-wrap="on"] .report-table-cell .truncate {
    white-space: normal;
    overflow: hidden;
    text-overflow: clip;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    padding: 6px 0;
}

/* ---------------------------------------------------------------------------
   6. Figures - tabular numerals so digits line up down a money column
   --------------------------------------------------------------------------- */
.table-container .report-table-cell.figure,
.table-container .report-table-cell.figure * {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}

.table-container .report-table-cell.figure {
    font-weight: 500;
    justify-content: flex-end;
}

.table-container .report-table-cell.figure,
.table-container .report-table-cell.figure .truncate,
.table-container .header-cell.is-figure,
.table-container .header-cell.is-figure .truncate { text-align: right; }

/* negatives read as negative without needing colour alone */
.table-container .report-table-cell.figure.is-negative { color: #b42318; }

/* ---------------------------------------------------------------------------
   7. Frozen columns
   Offsets are published per-report by the layout engine as --rt-freeze-<n>.
   --------------------------------------------------------------------------- */
.table-container .report-table-row > .rt-frozen {
    position: sticky;
    z-index: 12;
    background: var(--rt-surface);
}

.table-container .report-table-body .report-table-row:nth-child(even) > .rt-frozen {
    background: var(--rt-surface-alt);
}

.table-container .report-table-body .report-table-row:hover > .rt-frozen {
    background: var(--rt-hover);
}

.table-container .header-row > .rt-frozen {
    background: var(--rt-head-bg);
    z-index: 42;
}

/* the last frozen column carries the depth cue, only once scrolled */
.table-container.is-scrolled-x .rt-frozen-last::after {
    content: "";
    position: absolute;
    top: 0;
    right: -1px;
    width: 10px;
    height: 100%;
    pointer-events: none;
    background: linear-gradient(to right, rgba(16, 24, 40, 0.10), rgba(16, 24, 40, 0));
}

.table-container .rt-frozen-last {
    position: sticky;
    border-right: 1px solid var(--rt-border) !important;
}

/* ---------------------------------------------------------------------------
   8. Group / opening / closing / total rows
   --------------------------------------------------------------------------- */
.table-container .report-table-cell.is-group-cell {
    font-weight: 650;
    font-size: 13px !important;
    color: var(--rt-text);
}

.table-container .report-table-row.is-group-row {
    background: #f8fafc;
}

.table-container .report-table-row.is-total-row,
.table-container .report-table-row.is-final-total {
    background: #f6f9fc !important;
    border-top: 1px solid var(--rt-border);
    border-bottom: 1px solid var(--rt-border);
    font-weight: 700;
}

.table-container .report-table-row.is-final-total .report-table-cell {
    font-weight: 700;
    font-size: 13.5px !important;
    color: var(--rt-text);
}

/* the old look drew double/underline borders inside the cell text box */
.table-container .report-table-cell .truncate {
    border: none !important;
}

/* ---------------------------------------------------------------------------
   9. Links and drill-through cells
   --------------------------------------------------------------------------- */
.table-container .tbl-link-cell,
.table-container .tbl-report-cell {
    color: var(--rt-accent) !important;
    text-decoration: none !important;
    cursor: pointer;
}

.table-container .tbl-link-cell .truncate,
.table-container .tbl-report-cell .truncate {
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.table-container .tbl-link-cell:hover .truncate,
.table-container .tbl-report-cell:hover .truncate {
    border-bottom-color: currentColor;
}

/* the drill-through affordance was a 20px filled icon on every row */
.table-container .tbl-report-cell .material-symbols-outlined {
    font-size: 15px !important;
    opacity: 0;
    transition: opacity 90ms linear;
    background: none !important;
    padding: 0 !important;
    margin-right: 4px !important;
}

.table-container .report-table-row:hover .tbl-report-cell .material-symbols-outlined {
    opacity: 0.75;
}

/* ---------------------------------------------------------------------------
   10. Sortable headers
   --------------------------------------------------------------------------- */
.table-container .header-cell.sortable { cursor: pointer; user-select: none; }
.table-container .header-cell.sortable:hover { background: #f2f4f7; color: var(--rt-text) !important; }
.table-container .header-cell .sort-icon {
    font-size: 15px !important;
    margin-left: 4px;
    opacity: 0.35;
    flex: 0 0 auto;
}
.table-container .header-cell.sorted-asc .sort-icon,
.table-container .header-cell.sorted-desc .sort-icon { opacity: 1; color: var(--rt-accent); }

/* ---------------------------------------------------------------------------
   11. Column resize handle
   --------------------------------------------------------------------------- */
.table-container .header-cell { position: relative; }

.table-container .header-cell .rt-resizer {
    position: absolute;
    top: 0;
    right: -3px;
    width: 7px;
    height: 100%;
    cursor: col-resize;
    z-index: 3;
}

.table-container .header-cell .rt-resizer::after {
    content: "";
    position: absolute;
    top: 25%;
    left: 3px;
    width: 1px;
    height: 50%;
    background: var(--rt-border);
}

.table-container .header-cell .rt-resizer:hover::after,
.table-container.is-resizing .header-cell .rt-resizer.is-active::after {
    background: var(--rt-accent);
    top: 0;
    height: 100%;
    width: 2px;
}

.table-container.is-resizing { user-select: none; cursor: col-resize; }

/* ---------------------------------------------------------------------------
   12. Empty filler row left by the generator
   --------------------------------------------------------------------------- */
.table-container .report-table-row .empty-row,
.table-container .table-row.w-full.border-none { display: none !important; }

/* ---------------------------------------------------------------------------
   13. Report box
   The box around the table reserved a flat 520px, which left a dead band
   under short reports now that the table sizes itself to the viewport.
   --------------------------------------------------------------------------- */
.report-wrapper .box {
    min-height: 0 !important;
}

/* ===========================================================================
   SKIN: brand - keeps the themed dark header bar
   =========================================================================== */
.table-container[data-report-skin="brand"] .header-row,
.table-container[data-report-skin="brand"] .header-cell,
.table-container[data-report-skin="brand"] .header-row > .rt-frozen {
    background: var(--rt-brand) !important;
    color: var(--rt-brand-text) !important;
    border-bottom: none !important;
}

.table-container[data-report-skin="brand"] .header-cell {
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em;
    text-transform: none;
}

.table-container[data-report-skin="brand"] .header-cell.sortable:hover {
    background: rgba(255, 255, 255, 0.08) !important;
    color: var(--rt-brand-text) !important;
}

.table-container[data-report-skin="brand"] .header-cell .rt-resizer::after {
    background: rgba(255, 255, 255, 0.25);
}

.table-container[data-report-skin="brand"] .header-cell .sort-icon { color: var(--rt-brand-text); }

/* ===========================================================================
   Print
   =========================================================================== */
@media print {
    .table-container {
        max-height: none !important;
        overflow: visible !important;
        border: none !important;
        box-shadow: none !important;
    }
    .table-container .report-table-track { position: static; }
    .table-container .rt-frozen { position: static !important; box-shadow: none !important; }
    .table-container .report-table-cell { border-color: #d0d5dd !important; }
}

/* ===========================================================================
   Report toolbar
   The controls above the table: filters, view settings, column chooser,
   scrollers and refresh. Sized as one row of peers rather than the previous
   mix of a 170px pill, two 60px arrows and a 130px button.
   =========================================================================== */
.table-controllers {
    gap: 12px;
    padding-bottom: 4px;
}

.rt-toolbar-btn {
    height: 30px;
    padding: 0 10px;
    border: 1px solid #e4e7ec;
    border-radius: 8px;
    background: #ffffff;
    color: #344054;
    font-size: 11.5px;
    white-space: nowrap;
    transition: background 90ms linear, border-color 90ms linear;
}

.rt-toolbar-btn:hover {
    background: #f9fafb;
    border-color: #d0d5dd;
}

/* a legacy `.text` rule paints white, which disappeared the Filters label on
   the white toolbar button */
.rt-toolbar-btn span,
.rt-toolbar-btn .text {
    color: inherit !important;
}

.rt-toolbar-btn .material-symbols-outlined { font-size: 15px !important; }

.rt-icon-btn { padding: 0 6px; }

.rt-toolbar-btn-primary {
    background: var(--rt-toolbar-accent, #101828);
    border-color: transparent;
    color: #ffffff;
}

.rt-toolbar-btn-primary:hover {
    background: var(--rt-toolbar-accent, #101828);
    filter: brightness(1.12);
}

.rt-menu-label {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #667085;
    margin-bottom: 6px;
    padding: 0 4px;
}

.rt-segmented {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
    gap: 4px;
    padding: 3px;
    background: #f2f4f7;
    border-radius: 8px;
}

.rt-segment {
    height: 28px;
    border-radius: 6px;
    font-size: 11.5px;
    font-weight: 500;
    color: #475467;
    background: transparent;
    transition: background 90ms linear;
}

.rt-segment:hover { background: rgba(255, 255, 255, 0.7); }

.rt-segment.is-active {
    background: #ffffff;
    color: #101828;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
}

.rt-link-btn {
    color: var(--rt-accent, #008855);
    font-weight: 600;
}

.rt-link-btn:hover { text-decoration: underline; }

.rt-column-option {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 6px 8px;
    border-radius: 6px;
    font-size: 12px;
    color: #344054;
    cursor: pointer;
}

.rt-column-option:hover { background: #f9fafb; }

.rt-column-option input { accent-color: var(--rt-accent, #008855); }

.rt-column-option span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* a column the user has hidden */
.table-container .report-table-cell.is-hidden-column,
.table-container .header-cell.is-hidden-column { display: none !important; }

/* ===========================================================================
   REPORT SHELL
   ---------------------------------------------------------------------------
   The page around the table, rebuilt.

   It used to stack three separate strips - a dark title bar, a full-width wall
   of filter fields, and a toolbar - inside four levels of nested boxes, each
   with its own margin, padding and border. On a 950px screen that put the
   first row of data at y=367: 39% of the viewport spent before any content.

   This flattens the nesting (`display:contents` on the intermediate grid
   wrappers, which the per-report templates own and we do not want to edit),
   merges the strips into one command bar, and gives every remaining pixel to
   the data.
   =========================================================================== */

.report-wrapper {
    margin-top: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    height: calc(100vh - 56px) !important;
    padding: 16px 24px 12px !important;
    display: flex;
    flex-direction: column;
    gap: 0;
    overflow: hidden;
}

/* The templates wrap the content in a 4-column grid and a col-span-4 div.
   Neither carries meaning - collapse them out of the box model entirely. */
.report-wrapper > div,
.report-wrapper > div > div,
.report-wrapper .main-content-wrapper,
.report-wrapper .main-content-wrapper > div {
    display: contents !important;
}

/* --- the one command bar (was the dark title strip) --- */
.report-wrapper .rt-command-bar {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex: 0 0 auto;
    height: auto !important;
    min-height: 38px;
    margin: 0 0 12px !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    color: inherit !important;
}

.report-wrapper .rt-command-bar > * { min-width: 0; }

/* the breadcrumb / back-next cluster the templates put in the dark bar */
.report-wrapper .rt-command-bar .title-content-wrapper,
.report-wrapper .rt-command-bar .title-content-wrapper * {
    color: #101828 !important;
}

.report-wrapper .rt-command-bar .info-view-wrapper { color: #667085 !important; }

.rt-command-left {
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
}

.rt-command-right {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
}

/* the toolbar is moved into the command bar, so it is no longer a strip */
.report-wrapper .rt-command-bar .table-controllers {
    display: flex !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: 8px;
}

/* The toolbar's own title block duplicates the report name, but it also
   holds the filters toggle - keep the button, drop the title. */
.report-wrapper .rt-command-bar .table-controllers > div:first-child {
    gap: 0;
}

.report-wrapper .rt-command-bar .table-controllers .report-title,
.report-wrapper .rt-command-bar .table-controllers > div:first-child > span:first-child {
    display: none !important;
}

/* The breadcrumb strip repeats the name a third time; the identity block is
   the one that stays. Back/Next remain - they are navigation, not a label. */
.report-wrapper .rt-command-bar .info-view-wrapper { display: none !important; }

.report-wrapper .rt-command-bar .back-forth-btns {
    width: auto !important;
    gap: 2px;
}

.report-wrapper .rt-command-bar .back-forth-btns button {
    width: auto !important;
    padding: 0 8px;
    margin-right: 0 !important;
    border-radius: 8px;
    color: #667085;
    font-size: 12px;
}

.report-wrapper .rt-command-bar .back-forth-btns button:hover { background: #f2f4f7; color: #101828; }
.report-wrapper .rt-command-bar .back-forth-btns .material-symbols-outlined { font-size: 18px !important; }

/* a divider between navigation and the report name */
.report-wrapper .rt-command-bar .rt-report-identity {
    padding-left: 12px;
    border-left: 1px solid #e4e7ec;
}

/* --- filters: a row, not a wall --- */
.report-wrapper .report-filters-wrapper {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px !important;
    flex: 0 0 auto;
    margin: 0 0 12px !important;
    padding: 10px 12px !important;
    background: #ffffff;
    border: 1px solid #e4e7ec !important;
    border-radius: 10px;
    grid-template-columns: none !important;
}

.report-wrapper .report-filters-wrapper.hidden { display: none !important; }

/* Each filter was a stacked label + 45px control in a 6-column grid, which is
   what made the block 189px tall. The placeholder already carries the label. */
.report-wrapper .report-filters-wrapper .field-wrapper {
    width: auto !important;
    min-width: 150px;
    max-width: 210px;
    flex: 0 1 auto;
    grid-column: auto !important;
    margin: 0 !important;
}

.report-wrapper .report-filters-wrapper .form-label { display: none !important; }
.report-wrapper .report-filters-wrapper .field-description { display: none !important; }
.report-wrapper .report-filters-wrapper .field-error-wrapper { display: none !important; }

.report-wrapper .report-filters-wrapper .lite-field,
.report-wrapper .report-filters-wrapper .form-control,
.report-wrapper .report-filters-wrapper .lite-selector {
    min-height: 34px !important;
    height: 34px !important;
    font-size: 12px !important;
    border-radius: 8px !important;
}

/* --- the data surface owns everything left --- */
.report-wrapper .report-box-2,
.report-wrapper .skeleton.w-full {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    margin: 0 !important;
}

.report-wrapper .box {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
}

.report-wrapper .table-container {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none !important;
    margin: 0 !important;
}

/* summary strip, when a report publishes one */
.report-wrapper .report-summary-wrapper {
    flex: 0 0 auto;
    margin: 0 0 12px !important;
}

.report-wrapper .report-pagination {
    flex: 0 0 auto;
    margin-top: 8px;
}

/* --- report identity in the command bar --- */
.rt-report-identity {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
}

.rt-report-name {
    font-size: 16px;
    font-weight: 650;
    color: #101828;
    line-height: 1.2;
    letter-spacing: -0.01em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rt-report-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 1px;
    font-size: 11px;
    color: #667085;
    white-space: nowrap;
}

.rt-report-meta .dot { color: #d0d5dd; }

/* active filters, surfaced so a closed filter panel is never a mystery */
.rt-filter-chips {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.rt-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 24px;
    padding: 0 8px;
    border-radius: 999px;
    background: #eef2f6;
    color: #344054;
    font-size: 11px;
    white-space: nowrap;
    max-width: 230px;
}

.rt-filter-chip b { font-weight: 600; color: #101828; }

.rt-filter-chip span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* a report whose result set is larger than what is drawn says so */
.rt-row-cap-notice {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    margin-top: 8px;
    padding: 8px 12px;
    border: 1px solid #fde3a7;
    border-radius: 8px;
    background: #fffaf0;
    color: #7a5b16;
    font-size: 12px;
}

.rt-row-cap-notice .material-symbols-outlined { font-size: 16px !important; }
.rt-row-cap-notice b { font-weight: 600; }


/* ---------------------------------------------------------------------------
   Export control + menus
   --------------------------------------------------------------------------- */
.rt-toolbar-btn .rt-caret {
    font-size: 15px !important;
    margin-left: 2px;
    margin-right: -2px !important;
    opacity: 0.8;
}

.rt-menu-item {
    display: flex !important;
    align-items: center;
    gap: 9px;
    height: 32px;
    padding: 0 10px;
    border-radius: 7px;
    font-size: 12px;
    color: #344054;
    cursor: pointer;
}

.rt-menu-item:hover { background: #f2f4f7; color: #101828; }
.rt-menu-item .material-symbols-outlined { font-size: 16px !important; color: #667085; }
.rt-menu-item:hover .material-symbols-outlined { color: var(--rt-accent, #008855); }

/* The horizontal scroll arrows predate frozen columns and a scrollable
   surface; they are two more buttons for something the table already does.
   Hide the arrows themselves - the Refresh button is appended into the same
   container, so hiding the container would take Refresh with it. */
.report-wrapper .rt-command-bar .rt-scroll-btn { display: none !important; }

/* filter fields, matched to the smaller control scale */
.report-wrapper .report-filters-wrapper {
    padding: 8px 10px !important;
}

.report-wrapper .report-filters-wrapper .lite-field,
.report-wrapper .report-filters-wrapper .form-control,
.report-wrapper .report-filters-wrapper .lite-selector {
    min-height: 32px !important;
    height: 32px !important;
    font-size: 11.5px !important;
}

.report-wrapper .report-filters-wrapper .field-wrapper {
    min-width: 140px;
    max-width: 190px;
}

.rt-filter-chip { height: 22px; font-size: 10.5px; }

/* ---------------------------------------------------------------------------
   Loading / empty / error states
   These were sized `h-[40vh] w-[90vw]`, so while a report was fetching the
   table body was forced wider than the shell around it and the page visibly
   re-laid-out once the rows arrived. They fill their container instead.
   --------------------------------------------------------------------------- */
.rt-report-state {
    width: 100% !important;
    min-width: 0 !important;
    min-height: 280px;
    height: 100%;
    padding: 24px;
    text-align: center;
}

.table-container .rt-report-state { position: sticky; left: 0; }
