#workbench{position:fixed;top:0;right:0;height:100vh;width:70vw;max-width:1180px;min-width:560px;z-index:250;display:flex;flex-direction:column;background:var(--bg-panel);border-left:1px solid var(--border);color:var(--fg);font-family:var(--font-ui);font-size:.82rem;box-shadow:-12px 0 40px #00000073;backdrop-filter:blur(6px)}#workbench[hidden],#workbench [hidden]{display:none!important}#workbench *{box-sizing:border-box}#workbench button,#workbench input,#workbench select,#workbench textarea{font-family:inherit;font-size:inherit;color:inherit}#workbench h3,#workbench h4{margin:0;font-weight:600}#workbench h3{font-size:.95rem}#workbench h4{font-size:.78rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--sp-2)}#workbench p{margin:0 0 var(--sp-2)}#workbench a{color:var(--accent)}.wb-head{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.wb-spacer{flex:1}.wb-chip{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--bg-inset);border:1px solid var(--border);color:var(--fg-muted);font-size:.72rem;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wb-close{background:transparent;border:0;color:var(--fg-muted);font-size:1.4rem;line-height:1;cursor:pointer;padding:0 var(--sp-1)}.wb-close:hover{color:var(--fg)}.wb-tabs{display:flex;gap:2px;padding:0 var(--sp-3);border-bottom:1px solid var(--border);overflow-x:auto;flex:none}.wb-tab{background:transparent;border:0;border-bottom:2px solid transparent;padding:var(--sp-2) var(--sp-3);color:var(--fg-muted);cursor:pointer;white-space:nowrap}.wb-tab:hover{color:var(--fg)}.wb-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.wb-body{flex:1;min-height:0;overflow:hidden;display:flex}.wb-panel{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.wb-panel[hidden]{display:none}.wb-panel>*{flex-shrink:0}.wb-output>*{flex-shrink:0}.wb-foot{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--border);color:var(--fg-muted);font-size:.75rem;min-height:34px}.wb-status{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wb-spin{width:12px;height:12px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent);animation:wb-rot .8s linear infinite}.wb-spin[hidden]{display:none}@keyframes wb-rot{to{transform:rotate(360deg)}}.wb-sec{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);margin-top:var(--sp-2);padding-bottom:var(--sp-1);border-bottom:1px solid var(--border)}.wb-row{display:flex;align-items:center;gap:var(--sp-2)}.wb-wrap{flex-wrap:wrap}.wb-grow{flex:1;min-width:0}.wb-narrow{width:5.5em}.wb-chips{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.wb-chip-btn{background:var(--bg-raise);border:1px solid var(--border);border-radius:999px;padding:3px 10px;color:var(--fg-muted);cursor:pointer;font-size:.75rem}.wb-chip-btn:hover{color:var(--fg);background:var(--bg-raise-hover)}.wb-chip-btn.on{color:var(--accent-contrast);background:var(--accent);border-color:var(--accent)}.wb-params{display:flex;flex-direction:column;gap:var(--sp-2)}.wb-params label,.wb-fgrid label{color:var(--fg-muted);font-size:.75rem;white-space:nowrap}label.wb-num{display:inline-flex;align-items:center;gap:var(--sp-1)}label.wb-num .wb-input{width:7.5em}.wb-params .wb-input,.wb-fgrid .wb-input,input.wb-input[type=number]{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.wb-fgrid{display:grid;grid-template-columns:auto minmax(6em,12em) minmax(6em,12em);gap:var(--sp-1) var(--sp-2);align-items:center}.wb-input{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 6px;color:var(--fg);min-width:0;width:100%}.wb-row>select.wb-input,.wb-row>input.wb-input:not(.wb-grow){width:auto}a.wb-btn{text-decoration:none;display:inline-flex;align-items:center}.wb-input:focus{outline:none;border-color:var(--accent-border)}.wb-mono{font-family:var(--font-mono)}.wb-check{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--fg-muted);cursor:pointer;white-space:nowrap}.wb-check input{accent-color:var(--accent)}.wb-desc{color:var(--fg-muted);font-size:.75rem}.wb-note{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);background:var(--bg-inset);border:1px solid var(--border);color:var(--fg-muted);font-size:.75rem}.wb-note.wb-accent{background:var(--accent-bg);border-color:var(--accent-border);color:var(--fg)}.wb-note.wb-warn{border-color:var(--danger);color:var(--danger)}.wb-note[hidden]{display:none}.wb-btn{background:var(--bg-raise);border:1px solid var(--border);border-radius:var(--radius);padding:5px 12px;color:var(--fg-muted);cursor:pointer;white-space:nowrap}.wb-btn:hover:not(:disabled){color:var(--fg);background:var(--bg-raise-hover)}.wb-btn:disabled{opacity:.45;cursor:default}.wb-btn.active{color:var(--accent);border-color:var(--accent-border);background:var(--accent-bg)}.wb-btn-sm{padding:2px 8px;font-size:.72rem}.wb-primary{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent);font-weight:600}.wb-primary:hover:not(:disabled){color:var(--accent-contrast);background:var(--accent);filter:brightness(1.08)}.wb-link{background:transparent;border:0;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.wb-ov{display:grid;grid-template-columns:1fr;gap:var(--sp-2)}.wb-ov-head{display:grid;grid-template-columns:1fr auto auto;gap:var(--sp-3);color:var(--fg-muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;padding-bottom:var(--sp-1);border-bottom:1px solid var(--border)}.wb-ov-sub{display:grid;grid-template-columns:1fr auto auto;gap:var(--sp-3);font-size:.72rem}.wb-ov-sub span{max-width:24em;text-align:right}.wb-ov-row{display:grid;grid-template-columns:1fr auto auto;gap:var(--sp-3);align-items:baseline}.wb-ov-row .wb-val{min-width:9em;text-align:right}.wb-val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--fg)}.wb-muted{color:var(--fg-faint)}.wb-stat-grid{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:2px var(--sp-3);font-family:var(--font-mono);font-size:.75rem;font-variant-numeric:tabular-nums}.wb-stat-grid>span:nth-child(4n+1){font-family:var(--font-ui);color:var(--fg-muted)}.wb-empty{color:var(--fg-faint);padding:var(--sp-4);text-align:center}.wb-canvas{width:100%;height:360px;display:block;border-radius:var(--radius-sm);background:var(--bg-inset);touch-action:none}.wb-canvas-sm{height:220px}.wb-editor{width:100%;min-height:220px;resize:vertical;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2);color:var(--fg);font-family:var(--font-mono);font-size:.78rem;line-height:1.45;tab-size:4;white-space:pre;overflow:auto}.wb-editor:focus{outline:none;border-color:var(--accent-border)}.wb-output{display:flex;flex-direction:column;gap:var(--sp-2);min-height:80px}.wb-out-text{margin:0;font-family:var(--font-mono);font-size:.76rem;white-space:pre-wrap;word-break:break-word;color:var(--fg);background:var(--bg-inset);border-radius:var(--radius-sm);padding:var(--sp-2);max-height:320px;overflow:auto}.wb-out-text:empty{display:none}.wb-out-text.wb-err{color:var(--danger)}.wb-out-plot{display:flex;flex-direction:column;gap:var(--sp-2)}.wb-out-plot:empty,.wb-out-table:empty{display:none}.wb-api{font-size:.75rem;color:var(--fg-muted)}.wb-api summary{cursor:pointer;color:var(--fg)}.wb-code,.wb-snippet{display:block;margin:0;font-family:var(--font-mono);font-size:.74rem;white-space:pre-wrap;word-break:break-all;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2);color:var(--fg)}.wb-scroll{overflow-x:auto}.wb-ref{width:100%;border-collapse:collapse;font-size:.74rem}.wb-ref th,.wb-ref td{text-align:left;padding:3px var(--sp-2);border-bottom:1px solid var(--border);vertical-align:top}.wb-ref th{color:var(--fg-muted);font-weight:600}.wb-ref code{font-family:var(--font-mono);color:var(--accent)}.wb-table{display:flex;flex-direction:column;gap:var(--sp-2);min-height:0}.wb-table-bar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;position:relative}.wb-table-info{color:var(--fg-muted);font-size:.75rem}.wb-table-pager{display:flex;align-items:center;gap:var(--sp-1);margin-left:auto;font-family:var(--font-mono);font-size:.74rem}.wb-table-wrap{overflow:auto;max-height:60vh;border:1px solid var(--border);border-radius:var(--radius-sm)}.wb-table table{border-collapse:collapse;font-family:var(--font-mono);font-size:.74rem;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:100%}.wb-table th,.wb-table td{padding:3px var(--sp-2);border-bottom:1px solid var(--border);text-align:right}.wb-table th:first-child,.wb-table td:first-child{text-align:left}.wb-table th{position:sticky;top:0;background:var(--bg-panel);color:var(--fg-muted);font-family:var(--font-ui);font-weight:600;cursor:pointer;user-select:none}.wb-table th:hover{color:var(--fg)}.wb-table th.sorted{color:var(--accent)}.wb-table tbody tr{cursor:pointer}.wb-table tbody tr:hover{background:var(--bg-raise)}.wb-table tr.marked td{color:var(--accent)}.wb-table tr.sel td{background:var(--accent-bg)}.wb-colmenu{position:absolute;top:100%;left:0;z-index:5;display:flex;flex-direction:column;gap:2px;padding:var(--sp-2);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);max-height:50vh;overflow:auto}.wb-colmenu[hidden]{display:none}@media (max-width: 767px){#workbench{top:auto;bottom:0;width:100vw;min-width:0;max-width:none;height:85vh;border-left:0;border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:0 -12px 40px #00000073}.wb-params{grid-template-columns:auto 1fr}.wb-fgrid{grid-template-columns:auto 1fr 1fr}.wb-stat-grid{font-size:.7rem}.wb-table-wrap{max-height:45vh}.wb-canvas{height:260px}body.wb-open #tool-rail,body.wb-open .tool-panel,body.wb-open #controls{display:none}}.wb-panel[data-panel=table] .wb-table{flex:1 1 auto;min-height:0}.wb-panel[data-panel=table] .wb-table-wrap{flex:1;min-height:160px;max-height:none}
