@media screen {
  .boq-resizable-table thead th,.boq-resizable-heading {padding-right:20px!important;}
  .boq-resizable-heading {position:relative;}
  .boq-resizable-table td {overflow:hidden;overflow-wrap:anywhere;}
  .boq-column-handle {position:absolute;right:0;top:0;bottom:0;width:14px;min-height:0;padding:0!important;border:0;border-radius:0;background:transparent;color:var(--muted);cursor:col-resize;touch-action:none;opacity:.55;box-shadow:none;}
  .boq-column-handle:hover,.boq-column-handle:focus-visible {opacity:1;background:var(--table-head);outline:1px solid var(--teal);outline-offset:-1px;}
  .boq-resizing,.boq-resizing * {cursor:col-resize!important;user-select:none!important;}
  .boq-resizable-table {max-width:none!important;}
  .boq-layout-table thead th {padding-left:21px!important;}
  .boq-layout-table [hidden] {display:none!important;}
  .boq-column-drag {position:absolute;left:0;top:3px;width:18px;min-height:26px;padding:0!important;border:0;border-radius:4px;background:transparent;color:var(--muted);cursor:grab;touch-action:none;opacity:.6;}
  .boq-column-drag:hover,.boq-column-drag:focus-visible {color:var(--teal);opacity:1;background:var(--field);outline:1px solid var(--teal);outline-offset:-1px;}
  .boq-column-source {opacity:.5;}
  .boq-column-target {box-shadow:inset 3px 0 var(--teal)!important;}
  .boq-columns-dragging,.boq-columns-dragging * {cursor:grabbing!important;user-select:none!important;}
  .boq-column-ghost {position:fixed;z-index:10020;pointer-events:none;max-width:240px;padding:9px 14px;border:1px solid var(--teal);border-radius:8px;background:var(--white);color:var(--ink);box-shadow:var(--shadow);font-family:inherit;font-size:12px;font-weight:600;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .boq-table-columns {position:relative;display:inline-block;margin:4px 0;flex:none;color:var(--ink);}
  .boq-table-columns>summary {cursor:pointer;list-style:none;display:flex;align-items:center;min-height:32px;padding:7px 11px;border:1px solid var(--line);border-radius:var(--control-radius,8px);background:var(--white);font-size:12px;font-weight:600;}
  .boq-table-columns>summary::-webkit-details-marker {display:none;}
  .boq-table-columns>summary:focus-visible {outline:2px solid var(--teal);outline-offset:2px;}
  .boq-column-choices {position:absolute;z-index:40;top:calc(100% + 5px);left:0;display:grid;gap:7px;min-width:190px;max-width:320px;max-height:45vh;overflow:auto;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--white);box-shadow:var(--shadow);}
  .boq-table-columns:not([open])>.boq-column-choices {display:none;}
  .boq-column-choices label {display:flex;align-items:flex-start;gap:8px;font-size:12px;line-height:1.4;cursor:pointer;overflow-wrap:anywhere;}
  .boq-column-choices input {width:auto!important;min-width:0!important;padding:0!important;flex:none;accent-color:var(--teal);}
  .boq-header-stack {vertical-align:top;white-space:normal;}
  .boq-header-stack:not(th) {display:flex;flex-direction:column;gap:6px;min-width:0;}
  th.boq-header-stack>:is(input,select) {margin-top:6px;}
  .boq-header-stack>:is(input,select) {box-sizing:border-box;display:block;width:100%;min-width:0;min-height:32px;height:32px;padding:5px 7px;border:1px solid var(--line);border-radius:6px;background:var(--field);color:var(--ink);font:inherit;font-size:11px;}
  .boq-header-stack>button:not(.boq-column-handle):not(.boq-column-drag) {box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;min-height:32px;padding:0;border:0;border-radius:4px;background:transparent;box-shadow:none;white-space:normal;text-align:left;font-size:11px;font-weight:600;line-height:1.35;}
  .boq-header-stack>button:not(.boq-column-handle):not(.boq-column-drag):hover {color:var(--teal);background:var(--field);}
  .boq-header-stack>button:not(.boq-column-handle):not(.boq-column-drag):focus-visible {outline:2px solid var(--teal);outline-offset:2px;}
  /* A single sticky header group owns both title/sort and filter rows. It can
     grow with translated/wrapped labels without overlapping the next row. */
  .boq-table-head-split {position:sticky;top:var(--boq-table-sticky-top,0);z-index:4;background:var(--table-head);}
  .boq-table-head-split>tr>th {position:relative!important;top:auto!important;}
  .boq-table-head-split>tr:first-child>th {vertical-align:middle;}
  .boq-table-head-split>.boq-table-filter-row>th {padding:6px 8px!important;vertical-align:top;}
  .boq-table-filter-cell>:is(input,select) {box-sizing:border-box;display:block;width:100%;min-width:0;max-width:100%;height:32px;min-height:32px;padding:5px 7px;border:1px solid var(--line);border-radius:0;background:var(--field);color:var(--ink);font:inherit;font-size:12px;line-height:20px;margin:0;}
  .boq-table-filter-cell>:is(input,select)+:is(input,select) {margin-top:6px;}
}
@media print {.boq-column-handle,.boq-column-drag,.boq-table-columns,.boq-column-ghost {display:none!important;}}
