/* Scrolls horizontally within its own box on a narrow viewport instead of forcing the whole page to overflow — see Table.tsx's comment. */ .ui-table-scroll { overflow-x: auto; } .ui-table { width: 100%; border-collapse: collapse; } .ui-table th { text-align: left; font-weight: 600; color: var(--muted); padding: 0.5em 0.75em; border-bottom: 1px solid var(--border); } .ui-table td { padding: 0.5em 0.75em; border-bottom: 1px solid var(--border); } .ui-table tr:last-child td { border-bottom: none; } .ui-table-empty { color: var(--muted); text-align: center; padding: 1.25em 0.75em; } /* A cell holding free-form prose (an operator- or agent-provided string, not a short discrete label) rather than open-ended growth that drags the whole table wider — caps the column and wraps within it instead. */ .ui-table-prose { max-width: 32em; white-space: normal; word-break: break-word; } /* Sortable header — the whole header cell is the click target, not a separate icon-only button next to it, same "control lives on the thing it affects" reasoning as `Badge`'s own click-to-toggle shape. */ .ui-table-sort-button { display: inline-flex; align-items: center; gap: 0.35em; background: none; border: none; padding: 0; margin: 0; font: inherit; font-weight: 600; color: inherit; cursor: pointer; } .ui-table-sort-button:hover { color: var(--fg); } .ui-table-sort-glyph { opacity: 0.6; font-size: 0.85em; } .ui-table-sort-button:hover .ui-table-sort-glyph { opacity: 1; } /* The per-column filter inputs' row — same cell padding as a header row, no bottom border of its own (the header row above already has one). */ .ui-table-filter-row th { padding-top: 0; padding-bottom: 0.5em; font-weight: 400; } .ui-table-filter-input { width: 100%; box-sizing: border-box; background: var(--bg); color: var(--fg); border: 1px solid var(--border); border-radius: 4px; padding: 0.25em 0.5em; font: inherit; font-size: 0.9em; }