.b4-virtual { --b4-vheight:26px; min-width:0; position:relative; }
.b4-vtoolbar { display:flex; flex-wrap:wrap; align-items:center; gap:5px; padding:4px; background:var(--panel,#f5f7fa); }
.b4-vtoolbar input[type=search] { width:180px; min-width:100px; }
.b4-vtoolbar label { display:flex; align-items:center; gap:4px; margin:0; }
.b4-vtoolbar .button,.b4-vtoolbar select,.b4-vtoolbar input { min-height:26px; padding:2px 6px; font-size:12px; }
.b4-virtual [data-vstatus] { font-size:12px; min-height:20px; padding:2px 5px; }
.b4-virtual .b4-vscroll { height:clamp(220px,55vh,520px); max-height:520px; overflow:auto; overflow-anchor:none; }
.b4-virtual table { table-layout:fixed; border-collapse:separate; border-spacing:0; min-width:100%; }
.b4-virtual thead { position:sticky; top:0; z-index:3; background:#eaf0f5; }
.b4-virtual thead th { position:relative; height:28px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.b4-virtual tbody tr:not([data-vspacer]) { height:var(--b4-vheight); }
.b4-virtual .b4-vscroll tbody td,.b4-virtual .b4-vscroll tbody th { box-sizing:border-box; height:var(--b4-vheight); padding:0 5px; max-height:var(--b4-vheight); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:calc(var(--b4-vheight) - 2px); }
.b4-virtual .b4-vscroll input[type=checkbox],.b4-virtual .b4-vscroll input[type=radio] { box-sizing:border-box; width:16px; min-width:16px; height:16px; min-height:16px; padding:0; margin:0; vertical-align:middle; }
.b4-virtual tbody td > button,.b4-virtual tbody th > button { box-sizing:border-box; min-height:0; height:calc(var(--b4-vheight) - 4px); max-height:calc(var(--b4-vheight) - 4px); padding:0 3px; line-height:normal; vertical-align:middle; }
.b4-virtual tbody td > select { box-sizing:border-box; width:100%; min-height:0; height:calc(var(--b4-vheight) - 2px); padding:0 3px; font-size:inherit; vertical-align:middle; }
.b4-virtual [data-vspacer] td { padding:0!important; border:0!important; line-height:0!important; }
.b4-virtual tfoot { position:sticky; bottom:0; z-index:2; background:#eaf0f5; }
.b4-virtual tr[aria-selected=true] td { background:#dbeafe; }
.b4-vresize { position:absolute; right:0; top:0; height:100%; width:7px; cursor:col-resize; touch-action:none; }
.b4-virtual :focus-visible { outline:2px solid #1465c0; outline-offset:-2px; }
@media(max-width:600px) { .b4-vtoolbar strong { flex-basis:100%; } .b4-vtoolbar input[type=search] { flex:1; } }
