/* TABLE-WORKSPACE-001 filter panel: source width 490, full viewport overlay.
   Shared Portal tokens and existing sw-drawer controls own the visual language. */
body dialog.portal-filter-workspace { width:min(490px,100vw); border-radius:0; max-height:100dvh; box-shadow:-10px 0 28px rgb(24 50 78 / 15%); }
body dialog.portal-filter-workspace::backdrop { background:transparent; }
.portal-filter-workspace .sw-drawer-heading { padding:16px 18px 14px; align-items:flex-start; min-height:70px; }
.portal-filter-workspace .sw-drawer-heading h2 { font-size:17px; font-weight:650; line-height:1.35; }
.portal-filter-workspace .sw-drawer-heading p { margin:5px 0 0; color:var(--portal-muted); font-size:12px; }
body dialog.portal-filter-workspace .dialog-close { background:transparent; flex:none; width:32px; height:32px; min-height:32px; line-height:1; margin-left:auto; border:1px solid transparent; border-radius:var(--portal-radius-control,6px); color:var(--portal-muted); padding:0; font-size:21px; }
.portal-filter-workspace .dialog-close:hover { background:var(--portal-soft); border-color:var(--portal-line); }
.portal-filter-workspace .sw-drawer-body { padding:18px; }
.portal-filter-workspace .button { font-size:12px; min-height:36px; line-height:1.3; padding:8px 12px; }
.portal-filter-workspace label:not(.portal-filter-choice) > span { display:block; font-size:12px; font-weight:600; margin:0 0 7px; }
.portal-filter-workspace .portal-filter-footer { flex:none; display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center; gap:8px; padding:12px 18px; min-height:60px; border-top:1px solid var(--portal-line); background:var(--portal-surface); }
.portal-filter-workspace .portal-filter-footer .button { min-height:36px; border-radius:var(--portal-radius-control,6px); }
.portal-filter-workspace .portal-filter-footer [data-filter-reset-all] { margin-right:auto; }
.portal-filter-workspace .portal-filter-section { margin:0 0 18px; padding:0 0 18px; border-bottom:1px solid var(--portal-line); }
.portal-filter-workspace .portal-filter-section h3 { font-size:13px; font-weight:650; margin:0 0 10px; }
.portal-filter-workspace .portal-filter-note { margin:6px 0 0; font-size:11px; color:var(--portal-muted); line-height:1.5; }
.portal-filter-workspace .portal-filter-choice { display:flex; align-items:center; gap:8px; padding:8px; margin:0; font-size:13px; cursor:pointer; min-height:36px; }
.portal-filter-workspace .portal-filter-choice input { margin:0; flex:none; width:15px; height:15px; accent-color:var(--portal-accent); }
.portal-filter-workspace .portal-filter-choice span { flex:1; overflow-wrap:anywhere; }
.portal-filter-workspace .portal-filter-choice small { flex:none; font-variant-numeric:tabular-nums; }
.portal-filter-workspace :is(input:not([type=checkbox]),select) { min-height:36px; border-radius:var(--portal-radius-control,6px); font-size:13px; padding:7px 10px; }
.portal-filter-workspace :is(button,input,select,summary):focus-visible { outline:2px solid var(--portal-accent); outline-offset:2px; }
.portal-filter-workspace details.portal-filter-card { margin:10px 0; border:1px solid var(--portal-line); border-radius:var(--portal-radius-surface,8px); overflow:hidden; }
.portal-filter-workspace .portal-filter-card > summary { display:flex; align-items:center; gap:8px; min-height:44px; padding:10px 12px; margin:0; cursor:pointer; background:var(--portal-soft); }
.portal-filter-workspace .portal-filter-card summary strong { font-size:13px; font-weight:650; }
.portal-filter-workspace .portal-filter-card summary small { display:block; margin-top:3px; font-size:11px; }
.portal-filter-workspace .portal-filter-card-body { padding:12px; }
.portal-filter-workspace .portal-filter-values { max-height:200px; overflow:auto; overscroll-behavior:contain; border:1px solid var(--portal-line); border-radius:var(--portal-radius-control,6px); margin:8px 0; }
.portal-filter-workspace .portal-filter-value-tools { display:flex; gap:8px; align-items:center; }
.portal-filter-workspace .portal-filter-value-tools button { margin-left:auto; }
.portal-filter-workspace .portal-filter-link { color:var(--portal-accent); background:transparent; border:0; padding:5px 0; font:inherit; font-size:12px; cursor:pointer; }
.portal-filter-workspace .portal-filter-link:hover { text-decoration:underline; }
.portal-filter-workspace .portal-filter-conditions { border-top:1px solid var(--portal-line); margin:12px 0 0; padding:12px 0 0; }
.portal-filter-workspace .portal-filter-condition { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; margin:8px 0; }
.portal-filter-workspace .portal-filter-condition input[data-filter-bound=to] { grid-column:2; }
.portal-filter-workspace .portal-filter-add { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px; align-items:end; }
.portal-filter-workspace .portal-filter-add label { margin:0; }
.portal-filter-workspace .portal-filter-group { margin:12px 0; padding:12px; min-width:0; border:1px solid var(--portal-line); border-radius:var(--portal-radius-surface,8px); }
.portal-filter-workspace .portal-filter-group legend { padding:0 5px; font-size:13px; font-weight:650; }
.portal-filter-workspace .portal-filter-group-head { display:flex; gap:8px; align-items:center; }
.portal-filter-workspace .portal-filter-group-head select { flex:1; }
.portal-filter-workspace .portal-filter-card-actions { display:flex; justify-content:space-between; gap:8px; margin-top:10px; }
.portal-filter-workspace .portal-filter-feedback { flex:none; color:var(--portal-muted); font-size:12px; margin:0; padding:8px 18px; }
.portal-filter-workspace .portal-filter-feedback:empty { display:none; }
.portal-filter-workspace .portal-filter-feedback[role=alert] { color:var(--portal-warning); }
.portal-filter-workspace .portal-filter-empty { padding:12px; color:var(--portal-muted); font-size:12px; }
.portal-filter-workspace .portal-filter-scope-group { margin:6px 0; padding-top:6px; border-top:1px solid var(--portal-line); }
.portal-filter-workspace .portal-filter-scope-group h4 { font-size:12px; margin:6px 8px; }
@media(max-width:520px) {
  .portal-filter-workspace .sw-drawer-heading,.portal-filter-workspace .sw-drawer-body { padding:14px; }
  .portal-filter-workspace .portal-filter-footer { padding:12px 14px; }
  .portal-filter-workspace .portal-filter-condition { grid-template-columns:minmax(0,1fr); }
  .portal-filter-workspace .portal-filter-condition input[data-filter-bound=to] { grid-column:1; }
  .portal-filter-workspace :is(input:not([type=checkbox]),select) { font-size:16px; }
}
