:root{--bg:#eceff3;--surface:#fff;--surface-alt:#f6f7f9;--border:#d3d7de;--border-strong:#b9bfc9;--text:#1d2126;--text-dim:#6a7280;--accent:#2f6fd0;--accent-soft:#2f6fd01f;--on-accent:#fff;--danger:#c83232;--on-danger:#fff;--warn-text:#573a00;--warn-text-dim:#6b4a00;--warn-bg-1:#fff6ad;--warn-bg-2:#ffd12e;--warn-border:#c99700;--warn-glow:#c9970073;--warn-btn:#9c6800;--on-warn:#fff;--shadow:0 6px 18px #141a2624;--shadow-active:0 10px 28px #141a263d;--state-amber:#d99a1f;--state-green:#2e9e57;--row-height:22px;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--bg:#1e2127;--surface:#262a31;--surface-alt:#2c3138;--border:#3a4048;--border-strong:#4a515b;--text:#e6e9ee;--text-dim:#9aa3b0;--accent:#5c9ae8;--accent-soft:#5c9ae82e;--on-accent:#10151c;--danger:#ff7b72;--on-danger:#2a0f0c;--warn-text:#fff3c4;--warn-text-dim:#ffe9a0;--warn-bg-1:#5d4405;--warn-bg-2:#8a6608;--warn-border:#d9a41b;--warn-glow:#ffcd5066;--warn-btn:#ffd166;--on-warn:#241a00;--shadow:0 6px 18px #0006;--shadow-active:0 10px 28px #0000008c}}*{box-sizing:border-box}:where(button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:1px}html,body,#root{height:100%;margin:0}body{color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px;overflow:hidden}.app{flex-direction:column;height:100%;min-height:0;display:flex}.menubar{background:var(--surface);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:4px;padding:4px 10px;display:flex}.menubar__brand{letter-spacing:.02em;color:var(--text-dim);margin-right:14px;font-weight:600}.menubar__menu{position:relative}.menubar__trigger,.menubar__item{font:inherit;color:var(--text);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:5px;padding:5px 11px}.menubar__trigger:hover,.menubar__trigger--open,.menubar__item:hover:not(:disabled){background:var(--accent-soft)}.menubar__item:disabled{color:var(--text-dim);cursor:default;opacity:.55}.menubar__item--checked:before{content:"✓ ";color:var(--accent)}.menubar__dropdown{background:var(--surface);border:1px solid var(--border);min-width:220px;box-shadow:var(--shadow);z-index:5000;border-radius:8px;flex-direction:column;padding:5px;display:flex;position:absolute;top:calc(100% + 4px);left:0}.menubar__separator{background:var(--border);height:1px;margin:4px 6px}.canvas{background:var(--bg);background-image:radial-gradient(var(--border) 1px, transparent 1px);flex:auto;min-height:0;position:relative;overflow:hidden}.canvas--pan-ready{cursor:grab}.canvas--panning{cursor:grabbing}.canvas--dragging{outline:2px dashed var(--accent);outline-offset:-6px}.canvas__world{transform-origin:0 0;pointer-events:none;z-index:2;position:absolute;top:0;left:0}.canvas__cards{pointer-events:none;position:absolute;inset:0}.canvas__cards>*{pointer-events:auto}.canvas__drop-hint{z-index:3;background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);color:var(--text-dim);pointer-events:none;border-radius:20px;padding:8px 16px;position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.connection-layer{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.canvas__cards{z-index:auto}.connection__wire{fill:none;stroke-linecap:round}.connection__wire--flow{animation-name:connection-dash-flow;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes connection-dash-flow{to{stroke-dashoffset:var(--connection-dash-cycle,0px)}}@media (prefers-reduced-motion:reduce){.connection__wire--flow{animation:none}}.connection__arrow{stroke:none}.connection__label{font-family:var(--mono);letter-spacing:.02em;pointer-events:none;-webkit-user-select:none;user-select:none}.connection--bg{opacity:.75}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;flex-direction:column;overflow:visible;display:flex!important}.card--active{border-color:var(--accent);box-shadow:var(--shadow-active), 0 0 0 1px var(--accent-soft)}.card__titlebar{background:var(--surface-alt);border-bottom:1px solid var(--border);cursor:move;-webkit-user-select:none;user-select:none;border-start-start-radius:7px;border-start-end-radius:7px;flex:none;align-items:center;gap:8px;height:30px;padding:0 6px 0 10px;display:flex;overflow:hidden}.card--active .card__titlebar{background:var(--accent-soft)}.card__title{text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:12px;font-weight:600;overflow:hidden}.card__badge{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:40%;color:var(--text-dim);font-size:11px;font-family:var(--mono);flex:0 auto;overflow:hidden}.card__close{width:22px;height:22px;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;place-items:center;font-size:16px;line-height:1;display:grid}.card__close:hover{background:var(--danger);color:var(--on-danger)}.card__close--blocked{color:var(--danger)}.card__body{border-end-end-radius:7px;border-end-start-radius:7px;flex-direction:column;flex:auto;min-height:0;display:flex;position:relative;overflow:hidden}.matrix-card{flex-direction:column;flex:auto;gap:3px;min-height:0;padding:3px;display:flex}.matrix-card__bar{flex:none;align-items:center;gap:4px;display:flex}.matrix-card__bar .matrix-card__selector,.matrix-card__bar .matrix-card__single-file{flex:auto;min-width:0}.matrix-card__selector,.matrix-card__single-file{font:inherit;color:var(--text);background:var(--surface-alt);border:1px solid var(--border);border-radius:5px;flex:none;padding:3px 6px;font-size:12px}.matrix-card__replace{width:26px;height:24px;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:5px;flex:none;place-items:center;line-height:1;display:grid}.matrix-card__replace:hover{border-color:var(--border-strong);color:var(--text)}.card--drop-target{outline:2px dashed var(--accent);outline-offset:-3px;box-shadow:0 0 0 4px var(--accent-soft), var(--shadow-active)}.matrix-card__lock{width:26px;height:24px;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:5px;flex:none;place-items:center;line-height:1;display:grid}.matrix-card__lock:hover{border-color:var(--border-strong)}.matrix-card__lock--open{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}.matrix-card__single-file{text-overflow:ellipsis;white-space:nowrap;color:var(--text-dim);font-family:var(--mono);overflow:hidden}.matrix-card__empty{color:var(--text-dim);text-align:center;padding:20px}.vtable{border:1px solid var(--border);background:var(--surface);min-height:0;font-family:var(--mono);border-radius:5px;flex-direction:column;flex:auto;font-size:12px;display:flex;overflow:hidden}.vtable__header{background:var(--surface-alt);border-bottom:1px solid var(--border-strong);flex:none;overflow:hidden}.vtable__header-inner{will-change:transform;height:100%;display:grid}.vtable__colhead{border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:0 6px;display:flex;position:relative;overflow:hidden}.vtable__colresize{cursor:col-resize;z-index:2;width:6px;height:100%;position:absolute;top:0;right:-3px}.vtable__colresize:hover{background:var(--accent-soft)}.vtable__colhead-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vtable__colhead{cursor:context-menu;font-size:11px;font-weight:600}.vtable__colhead:hover{background:var(--accent-soft)}.vtable__colhead--source{background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent), inset 0 2px 0 var(--accent)}.vtable__colhead--source .vtable__colhead-label{color:var(--accent);font-weight:700}.vtable__colhead--highlight{background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}.vtable__viewport{flex:auto;min-height:0;overflow:auto}.vtable__canvas{position:relative}.vtable__row{will-change:transform;align-items:center;display:grid;position:absolute;left:0}.vtable__row--odd{background:color-mix(in srgb, var(--surface-alt) 70%, transparent)}.vtable__rowhead{height:100%;color:var(--text-dim);background:var(--surface-alt);border-right:1px solid var(--border);z-index:1;justify-content:flex-end;align-items:center;padding-right:6px;display:flex;position:sticky;left:0}.vtable__cell,.vtable__input{border-right:1px solid color-mix(in srgb, var(--border) 55%, transparent);white-space:nowrap;justify-content:flex-end;align-items:center;height:100%;padding:0 6px;display:flex;overflow:hidden}.vtable__input{font:inherit;color:var(--text);background:var(--surface);border:0;border-right:1px solid var(--border);outline:2px solid var(--accent);text-align:right}.chart-card{flex-direction:row;flex:auto;align-items:stretch;min-height:0;display:flex}.chart-card__main{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.chart-card__plot{flex:auto;height:100%;min-height:48px}.chart-card__empty{text-align:center;color:var(--text-dim);flex:auto;place-items:center;padding:18px;display:grid}.chart-card__toolbar{background:var(--surface-alt);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.chart-card__tp{flex:none;position:relative}.chart-card__tbutton{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:5px;padding:3px 9px;font-size:12px}.chart-card__tbutton:hover,.chart-card__tbutton.is-open{border-color:var(--accent);background:var(--accent-soft)}.chart-card__spacer{flex:auto}.chart-card__hint{text-overflow:ellipsis;white-space:nowrap;color:var(--text-dim);flex:0 auto;font-size:11px;overflow:hidden}.chart-card__popup{z-index:3000;background:var(--surface);border:1px solid var(--border-strong);min-width:150px;max-width:min(320px,100vw - 24px);max-height:min(320px,100vh - 24px);box-shadow:var(--shadow);border-radius:7px;flex-direction:column;padding:5px;display:flex;position:fixed;overflow-y:auto}.chart-card__popup--wide{gap:4px;min-width:220px}.chart-card__popup--export{min-width:210px;left:auto;right:0}.chart-card__popup-item{font:inherit;color:var(--text);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:5px;justify-content:space-between;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:flex}.chart-card__popup-item:hover{background:var(--accent-soft)}.chart-card__popup-item.is-active{background:var(--accent-soft);font-weight:600}.chart-card__vec{color:var(--on-accent);background:var(--accent);border-radius:8px;padding:1px 5px;font-size:10px;font-style:normal}.chart-card__field select,.chart-card__field input{min-width:0;max-width:100%}.chart-card__field{color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;padding:3px 8px;font-size:12px;display:flex}.chart-card__note{color:var(--text-dim);white-space:normal;margin:2px 0 4px;font-size:11px;line-height:1.35}.chart-card__warn{color:var(--danger);white-space:normal;margin:2px 0 4px;font-size:11px;line-height:1.35}.chart-card__field--tight{border-top:1px solid var(--border);margin-top:3px;padding:3px 8px 1px}.chart-card__field input[type=range]{width:84px;accent-color:var(--accent)}.chart-card__field em{font-style:normal;font-family:var(--mono)}.chart-card__footer{background:var(--surface-alt);border-top:1px solid var(--border);flex-direction:column;flex:none;display:flex}.chart-card__columns{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:5px;padding:5px 8px;display:flex}.chart-card__label{color:var(--text-dim);font-size:11px}.chart-card__chip-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.chart-card__chip{max-width:200px;font-size:11px;font-family:var(--mono);color:var(--text);background:var(--surface);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;align-items:center;gap:3px;padding:1px 4px 1px 8px;display:inline-flex;overflow:hidden}.chart-card__chip-x{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:50%;padding:0 4px;line-height:1}.chart-card__chip-x:hover{color:var(--on-danger);background:var(--danger)}.chart-card__dock{border-right:1px solid var(--border);background:var(--surface-alt);flex-direction:column;flex:none;width:22px;transition:width .14s;display:flex;overflow:hidden}.chart-card__dock--open{width:200px}.chart-card__dock-toggle{font:inherit;letter-spacing:2px;color:var(--text-dim);cursor:pointer;writing-mode:vertical-rl;text-orientation:mixed;background:0 0;border:0;flex:auto;padding:8px 0;font-size:11px}.chart-card__dock-toggle:hover{color:var(--text);background:var(--accent-soft)}.chart-card__dock-head{border-bottom:1px solid var(--border);color:var(--text-dim);flex:none;justify-content:space-between;align-items:center;gap:4px;padding:4px 6px;font-size:11px;display:flex}.chart-card__dock-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-card__dock-collapse{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;line-height:1}.chart-card__dock-collapse:hover{color:var(--text);background:var(--accent-soft)}.chart-card__dock-list{flex:auto;min-height:0;padding:4px 6px;overflow-y:auto}.chart-card__dock-group+.chart-card__dock-group{margin-top:6px}.chart-card__dock-group-title{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;padding:2px 0;font-size:11px;overflow:hidden}.chart-card__dock-item{color:var(--text);cursor:pointer;align-items:center;gap:5px;padding:1px 0;font-size:12px;display:flex}.chart-card__dock-item input[type=checkbox]{accent-color:var(--accent);flex:none;margin:0}.chart-card__dock-item-label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.chart-card__dock-badge{color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:6px;flex:none;padding:1px 4px;font-size:10px;line-height:1}.chart-card__dock-order{border-top:1px solid var(--border);color:var(--text-dim);flex:none;margin:0;padding:4px 6px;font-size:10px}.chart-card__dock-empty{color:var(--text-dim);flex:auto;padding:10px 6px;font-size:11px}.chart-card__controls{flex-wrap:wrap;flex:none;align-items:center;gap:10px;padding:5px 8px;display:flex}.chart-card__control{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:flex}.chart-card__control select,.chart-card__number{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:2px 4px;font-size:12px}.chart-card__control input[type=range]{width:120px;accent-color:var(--accent)}.chart-card__control em{font-style:normal;font-family:var(--mono);text-align:right;min-width:34px}.chart-card__number{width:56px}.context-menu{z-index:6000;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);cursor:pointer;white-space:nowrap;border-radius:6px;padding:6px 12px;font-size:12px;position:fixed}.context-menu:hover{background:var(--accent-soft)}.context-menu--list{flex-direction:column;gap:1px;min-width:170px;max-height:340px;padding:5px;display:flex;overflow-y:auto}.context-menu--list:hover{background:var(--surface)}.context-menu__title{color:var(--text-dim);border-bottom:1px solid var(--border);white-space:nowrap;margin-bottom:3px;padding:3px 8px 5px;font-size:11px}.context-menu__item{font:inherit;color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:5px;padding:4px 8px;font-size:12px}.context-menu__item:hover:not(:disabled){background:var(--accent-soft)}.context-menu__item:disabled{color:var(--text-dim);opacity:.5;cursor:default}.context-menu__separator{background:var(--border);height:1px;margin:3px 6px}.context-menu__hint{max-width:240px;color:var(--text-dim);white-space:normal;padding:0 8px 5px;font-size:10.5px;line-height:1.35}.formula-card{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.formula-card__zones{flex:auto;grid-template-columns:minmax(104px,30%) minmax(0,1fr);min-height:0;display:grid}.formula-card__inputs{background:var(--surface-alt);border-right:1px solid var(--border);flex-direction:column;gap:4px;min-width:0;padding:5px 6px;display:flex;overflow-y:auto}.formula-card__zone-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);justify-content:space-between;align-items:center;gap:6px;font-size:10px;font-weight:600;display:flex}.formula-card__zone-title .node-light{margin:0}.formula-card__zone-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.formula-card__help-wrap{flex:none;display:inline-flex}.formula-card__help{width:16px;height:16px;font:inherit;text-align:center;color:var(--text-dim);border:1px solid var(--border);cursor:help;background:0 0;border-radius:50%;padding:0;font-size:11px;font-weight:700;line-height:14px}.formula-card__help:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.formula-card__no-params{color:var(--text-dim);margin:0;font-size:11px;line-height:1.5}.formula-card__signature-note{flex-direction:column;gap:6px;min-width:0;display:flex}.formula-card__stat-note{color:var(--text);margin:0;font-size:11px;line-height:1.6}.formula-card__stat-note--dim{color:var(--text-dim)}.formula-card__zone-empty{color:var(--text-dim);margin:0;font-size:11px;line-height:1.45}.formula-card__port-list,.formula-card__output-list{flex-direction:column;gap:3px;min-width:0;margin:0;padding:0;list-style:none;display:flex}.formula-card__port{border:1px solid var(--border);background:var(--surface);border-radius:5px;flex-wrap:wrap;align-items:baseline;gap:3px 5px;min-width:0;padding:3px 5px;display:flex}.formula-card__port-id{font-family:var(--mono);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.formula-card__mode{color:var(--text-dim);background:var(--surface-alt);border:1px solid var(--border);border-radius:3px;flex:none;padding:0 4px;font-size:9px;line-height:13px}.formula-card__mode--matrix{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}.formula-card__port-src{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:100%;font-size:11px;overflow:hidden}.formula-card__port-src--missing{color:var(--danger)}.formula-card__port-column{min-width:0;height:22px;font-family:var(--mono);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;border-radius:4px;flex:100%;padding:0 4px;font-size:11px}.formula-card__port-column:hover{border-color:var(--accent)}.formula-card__port-column:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.formula-card__port-shape{font-family:var(--mono);color:var(--text-dim);flex:none;font-size:10px}.formula-card__cols{font-family:var(--mono);color:var(--text-dim);flex-wrap:wrap;gap:3px;margin:2px 0 0;font-size:10px;display:flex}.formula-card__col-chip{min-width:0;max-width:100%;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:9px;align-items:baseline;padding:1px 5px;font-family:inherit;font-size:10px;display:inline-flex;overflow:hidden}.formula-card__col-chip:hover:not(:disabled){color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.formula-card__col-chip:disabled{cursor:default;opacity:.6}.formula-card__col-chip-pos{font-family:var(--mono);color:var(--accent);margin-right:4px}.formula-card__col-chip-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.formula-card__main{flex-direction:column;min-width:0;min-height:0;display:flex}.formula-card__formulas{border-bottom:1px solid var(--border);flex-direction:column;flex:none;gap:3px;min-height:58px;max-height:45%;padding:5px 6px;display:flex;overflow-y:auto}.formula-card__row{flex-wrap:wrap;align-items:center;gap:4px;min-width:0;display:flex}.formula-card__row--error .formula-card__expr{border-color:var(--danger)}.formula-card__name{border:1px solid var(--border);background:var(--surface);width:76px;color:var(--text);border-radius:4px;flex:none;padding:2px 6px;font-size:12px}.formula-card__eq{font-family:var(--mono);color:var(--text-dim);font-size:13px}.formula-card__expr{min-width:70px;font-size:12px;font-family:var(--mono);border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;flex:90px;padding:2px 6px}.formula-card__expr:focus{border-color:var(--accent);outline:none}.formula-card__remove{color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:3px;flex:none;padding:0 4px;font-size:14px}.formula-card__remove:hover{color:var(--on-danger);background:var(--danger)}.formula-card__add{color:var(--accent);border:1px dashed var(--border-strong);cursor:pointer;background:0 0;border-radius:4px;align-self:flex-start;margin-top:2px;padding:2px 8px;font-size:11px}.formula-card__add:hover{background:var(--accent-soft)}.formula-card__error{color:var(--danger);margin:2px 0 0;font-size:11px;line-height:1.45}.formula-card__error-hint{color:var(--text-dim);margin:1px 0 0;font-size:10.5px;line-height:1.45}.formula-card__stale{color:var(--text-dim);margin:2px 0 0;font-size:11px;line-height:1.45}.formula-card__outputs{flex-direction:column;flex:1 1 0;gap:3px;min-height:0;padding:5px 6px 0;display:flex}.formula-card__zone-tools{align-items:center;gap:6px;display:flex}.formula-card__rename{color:var(--text-dim);background:var(--surface);border:1px solid var(--border);cursor:pointer;text-transform:none;letter-spacing:0;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:500}.formula-card__rename:hover,.formula-card__rename.is-open{color:var(--accent);border-color:var(--accent)}.formula-card__rename-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.formula-card__rename-item{align-items:center;gap:4px;min-width:0;display:flex}.formula-card__rename-index{width:12px;font-family:var(--mono);color:var(--text-dim);text-align:right;flex:none;font-size:10px}.formula-card__rename-input{min-width:0;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:4px;flex:auto;padding:1px 5px;font-size:11px}.formula-card__rename-input:focus{border-color:var(--accent);outline:none}.formula-card__hintbar{color:var(--text-dim);background:var(--surface-alt);border-top:1px solid var(--border);flex-wrap:wrap;flex:none;align-items:center;gap:4px 8px;padding:3px 6px;font-size:10px;line-height:1.4;display:flex}.formula-card__hintbar--violation{color:var(--danger);border-top-color:var(--danger);background:#c8323214}.formula-card__hintbar-text{flex:auto;min-width:0}.formula-card__hintbar button{color:var(--text);background:var(--surface);border:1px solid var(--border-strong);cursor:pointer;border-radius:4px;padding:1px 6px;font-size:10px}.formula-card__hintbar button:hover{border-color:var(--accent)}.formula-card__output-shape{font-family:var(--mono);text-transform:none;letter-spacing:0;color:var(--text-dim);font-size:10px;font-weight:400}.formula-card__repoint{border:1px solid var(--warn-border);background-image:linear-gradient(100deg, var(--warn-bg-1) 0%, var(--warn-bg-2) 50%, var(--warn-bg-1) 100%);box-shadow:0 0 0 0 var(--warn-glow);background-position:0%;background-size:220% 100%;border-radius:6px;flex-direction:column;gap:4px;padding:6px 8px;animation:1.8s ease-in-out infinite repoint-flash;display:flex}.formula-card__repoint-title{color:var(--warn-text);align-items:baseline;gap:4px;margin:0;font-size:11px;font-weight:600;line-height:1.4;display:flex}.formula-card__repoint-title:before{content:"⚠";font-size:12px;line-height:1}.formula-card__repoint-diff{font-family:var(--mono);color:var(--warn-text-dim);word-break:break-word;margin:0;font-size:10px;line-height:1.4}.formula-card__repoint-actions{flex-wrap:wrap;gap:4px;display:flex}.formula-card__repoint-actions button{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--warn-border);cursor:pointer;border-radius:4px;padding:2px 8px;font-size:11px}.formula-card__repoint-actions button:hover{border-color:var(--accent)}.formula-card__repoint-primary{color:var(--on-warn);background:var(--warn-btn);border-color:var(--warn-btn);font-weight:600}.formula-card__repoint-primary:hover{filter:brightness(1.08)}@keyframes repoint-flash{0%,to{box-shadow:0 0 0 0 var(--warn-glow);background-position:0%}50%{box-shadow:0 0 0 3px var(--warn-glow);background-position:100%}}@media (prefers-reduced-motion:reduce){.formula-card__repoint{box-shadow:0 0 0 2px var(--warn-glow);animation:none}}.formula-card__output-item{border:1px solid var(--border);background:var(--surface-alt);border-radius:5px;justify-content:space-between;align-items:baseline;gap:6px;min-width:0;padding:2px 5px;display:flex}.formula-card__output-id{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.formula-card__output-cols{font-family:var(--mono);color:var(--text-dim);flex:none;font-size:10px}.formula-card__grid{flex-direction:column;flex:auto;min-height:0;margin:0 -6px;display:flex}.formula-card__grid>.vtable{flex:auto;min-height:0}.formula-card__result-more{border-top:1px solid var(--border);color:var(--text-dim);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:4px 6px 2px;font-size:11px;display:flex}.formula-card__show-more{flex:none}.formula-card__result-truncated{color:var(--warn,#d08a2a);flex:none;margin:2px 6px 0;font-size:11px}.formula-card__empty{color:var(--text-dim);text-align:center;flex:auto;place-items:center;padding:12px;font-size:12px;display:grid}.formula-card__empty>.card__control{color:var(--text);margin-top:8px}.node-light{vertical-align:middle;background:var(--text-dim);border-radius:50%;flex:none;width:9px;height:9px;margin-right:6px;display:inline-block}.node-light--idle{background:var(--border-strong)}.node-light--dirty{background:var(--text-dim)}.node-light--computing{background:var(--state-amber);animation:1s ease-in-out infinite node-pulse}.node-light--done{background:var(--state-green)}.node-light--error{background:var(--danger)}.node-light--stale{border:1px solid var(--border-strong);background:0 0}@keyframes node-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.node-light--computing{animation:none}}.summary-panel__lamp{background:var(--text-dim);border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.summary-panel__lamp--notRequested{background:var(--text-dim)}.summary-panel__lamp--computing{background:var(--state-amber);animation:1s ease-in-out infinite node-pulse}.summary-panel__lamp--done{background:var(--state-green)}.summary-panel__lamp--stale{border:1px solid var(--border-strong);background:0 0}.summary-panel__lamp--error{background:var(--danger)}@media (prefers-reduced-motion:reduce){.summary-panel__lamp--computing{animation:none}}.summary-panel{border:1px solid var(--border);background:var(--surface);border-radius:5px;flex-direction:column;flex:none;font-size:11px;display:flex;overflow:hidden}.summary-panel--collapsed{border-color:var(--border-strong);background:var(--surface-alt)}.summary-panel__toggle{font:inherit;letter-spacing:1px;color:var(--text-dim);cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:6px;padding:3px 8px;font-size:11px;display:flex}.summary-panel__toggle:hover{color:var(--text);background:var(--accent-soft)}.summary-panel__label{flex:none;font-weight:600}.summary-panel__bar{min-height:24px;color:var(--text);border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:3px 8px;display:flex}.summary-panel__bar--notRequested{background:#6a72801f}.summary-panel__bar--computing,.summary-panel__bar--stale{background:#d99a1f29}.summary-panel__bar--done{background:#2e9e5724}.summary-panel__bar--error{background:#c8323224}.summary-panel__status{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-dim);flex:auto;overflow:hidden}.summary-panel__actions{flex:none;align-items:center;gap:4px;display:flex}.summary-panel__actions .card__control{padding:1px 7px;font-size:11px}.summary-panel__collapse{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;line-height:1}.summary-panel__collapse:hover{color:var(--text);background:var(--accent-soft)}.summary-panel__body{flex-direction:column;gap:4px;max-height:220px;padding:4px 6px;display:flex;overflow:hidden}.summary-panel__table-wrap{border:1px solid var(--border);border-radius:4px;min-height:0;overflow:auto}.summary-panel__table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:11px}.summary-panel__table thead th{z-index:1;background:var(--surface-alt);border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;color:var(--text-dim);padding:2px 6px;font-weight:600;position:sticky;top:0}.summary-panel__table .summary-panel__corner{text-align:left}.summary-panel__table tbody th{background:var(--surface-alt);border-right:1px solid var(--border);text-align:left;color:var(--text);white-space:nowrap;padding:1px 6px;font-weight:600;position:sticky;left:0}.summary-panel__table td{text-align:right;white-space:nowrap;color:var(--text);padding:1px 6px}.summary-panel__row:hover td,.summary-panel__row:hover th{background:var(--accent-soft)}.summary-panel__stats{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:2px 0;display:flex}.summary-panel__stats-title{color:var(--text-dim)}.summary-panel__stat-option{font-family:var(--mono);color:var(--text);cursor:pointer;align-items:center;gap:3px;display:inline-flex}.summary-panel__stat-option input[type=checkbox]{accent-color:var(--accent);margin:0}.summary-panel__banner,.summary-panel__empty,.summary-panel__error{color:var(--text-dim);margin:0;padding:2px 0}.summary-panel__error{color:var(--danger)}.empty-state{z-index:3;color:var(--text-dim);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.empty-state--drop{background:var(--accent-soft)}.empty-state__badge{opacity:.5;font-size:42px;line-height:1}.empty-state__title{color:var(--text);margin:0;font-size:16px}.empty-state__hint{text-align:center;max-width:460px;margin:0;line-height:1.6}.empty-state__button{pointer-events:auto;font:inherit;color:var(--on-accent);background:var(--accent);cursor:pointer;border:0;border-radius:6px;padding:7px 18px}.empty-state__button:hover{filter:brightness(1.08)}.statusbar{height:26px;color:var(--text-dim);background:var(--surface);border-top:1px solid var(--border);flex:none;align-items:center;gap:12px;padding:0 12px;font-size:12px;display:flex}.statusbar__message{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.statusbar__meta,.statusbar__hint{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--mono);flex:0 auto;overflow:hidden}@media (max-width:720px){.statusbar__hint{display:none}}.statusbar__hint{color:var(--text-dim)}.statusbar__error{color:var(--danger);font-weight:700}.backend-banner{background:var(--danger-soft,#c832321f);color:var(--danger,#c83232);border-bottom:1px solid var(--danger,#c83232);justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;font-size:13px;line-height:1.4;display:flex}.backend-banner button{flex-shrink:0}.hover-help{z-index:6500;max-width:260px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);pointer-events:none;border-radius:6px;padding:5px 8px;font-size:11px;line-height:1.45;position:fixed}.help-dialog__backdrop{z-index:7000;background:#10151c6b;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.help-dialog{width:min(760px,100%);max-height:min(84vh,720px);color:var(--text);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-active);border-radius:10px;flex-direction:column;display:flex;overflow:hidden}.help-dialog__head{background:var(--surface-alt);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.help-dialog__title{margin:0;font-size:14px;font-weight:600}.help-dialog__close{color:var(--text-dim);cursor:pointer;background:0 0;border:0;border-radius:5px;padding:2px 8px;font-size:16px;line-height:1}.help-dialog__close:hover{color:var(--on-danger);background:var(--danger)}.help-dialog__body{min-height:0;padding:12px 16px 16px;overflow-y:auto}.help-dialog__section+.help-dialog__section{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.help-dialog__section--target{background:var(--accent-soft);border-radius:6px}.help-dialog__heading{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin:0 0 8px;font-size:12px;font-weight:600}.help-dialog__table{border-collapse:collapse;width:100%;font-size:12px}.help-dialog__table th{text-align:left;color:var(--text-dim);border-bottom:1px solid var(--border);padding:4px 8px;font-size:11px;font-weight:600}.help-dialog__table td{vertical-align:top;border-bottom:1px solid var(--border);padding:5px 8px;line-height:1.5}.help-dialog__table td:first-child{width:42%}.help-dialog__table code,.help-dialog__fn code,.help-dialog__example code{font-family:var(--mono);color:var(--accent);background:var(--accent-soft);border-radius:3px;padding:1px 4px;font-size:11px}.help-dialog__note{color:var(--text-dim);margin:0 0 8px;font-size:11px;line-height:1.5}.help-dialog__group+.help-dialog__group{margin-top:10px}.help-dialog__group-title{margin:0 0 4px;font-size:12px;font-weight:600}.help-dialog__fn-list{flex-direction:column;gap:3px;margin:0;display:flex}.help-dialog__fn{grid-template-columns:minmax(150px,34%) minmax(0,1fr);align-items:baseline;gap:8px;font-size:12px;display:grid}.help-dialog__fn dt{min-width:0;margin:0}.help-dialog__fn dd{color:var(--text-dim);margin:0;line-height:1.5}.help-dialog__examples{flex-direction:column;gap:5px;margin:0;padding:0;list-style:none;display:flex}.help-dialog__example{flex-wrap:wrap;align-items:baseline;gap:8px;font-size:12px;display:flex}.help-dialog__example-note{color:var(--text-dim)}
