:root{--bg:#fff;--surface:#f6f7f9;--border:#e3e5e8;--text:#1f2328;--muted:#5b6170;--accent:#2563eb;--accent-soft:#dde6fb;--danger:#c62828;--font:Inter, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#16181d;--surface:#1d2027;--border:#2b2f37;--text:#e6e8eb;--muted:#9aa1ad;--accent:#6b93ff;--accent-soft:#26324d;--danger:#ff8a80}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px var(--font)}.app{flex-direction:column;height:100%;display:flex}.main{flex:1;min-height:0;display:flex;position:relative}.drop-overlay{z-index:10;border:2px dashed var(--accent);background:color-mix(in srgb, var(--accent-soft) 80%, transparent);color:var(--accent);pointer-events:none;border-radius:10px;justify-content:center;align-items:center;font-size:15px;font-weight:600;display:flex;position:absolute;inset:8px}.sheet-area{flex-direction:column;flex:1;min-width:0;display:flex}.toolbar{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:6px;padding:6px 10px;display:flex}.toolbar .logo{width:24px;height:24px;margin-right:6px}.toolbar .spacer{flex:1}button{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:3px 10px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}select,input[type=text]{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:3px 6px}.formula-bar{border-bottom:1px solid var(--border);align-items:stretch;height:28px;display:flex}.formula-bar input.name-box{border:0;border-right:1px solid var(--border);text-align:center;width:90px;font-family:var(--mono);border-radius:0;flex:none}.formula-bar .fx{color:var(--muted);border-right:1px solid var(--border);align-items:center;padding:0 8px;font-style:italic;display:flex}.formula-bar input{font-family:var(--mono);border:0;border-radius:0;outline:none;flex:1;padding:0 8px}.formula-input{background:var(--bg);flex:1;min-width:0;display:flex;position:relative}.formula-input input{z-index:1;min-width:0;font:13px var(--mono);background:0 0;position:relative}.formula-input input.highlighted{color:#0000;caret-color:var(--text)}.formula-highlight{white-space:pre;pointer-events:none;font:13px var(--mono);color:var(--text);align-items:center;padding:0 8px;display:flex;position:absolute;inset:0;overflow:hidden}.grid-host{flex:1;min-height:0;position:relative}.adder-grid{position:absolute;inset:0}.adder-grid-scroller{outline:none;position:absolute;inset:0;overflow:auto}.adder-grid-canvas{z-index:1;display:block;position:sticky;top:0;left:0}.adder-grid-spacer{pointer-events:none;position:absolute;top:0;left:0}.adder-grid-overlay{pointer-events:none;z-index:2;position:absolute;top:24px;left:64px;overflow:hidden}.adder-chart{pointer-events:auto;background:var(--bg);border:1px solid var(--border);cursor:move;border-radius:4px;outline:none;position:absolute;top:0;left:0;box-shadow:0 1px 4px #0000001f}.adder-chart:focus,.adder-chart.editing{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 2px 10px #0000002e}.adder-chart-canvas{position:absolute;inset:0}.adder-chart-handle{background:var(--accent);border:2px solid var(--bg);cursor:nwse-resize;border-radius:2px;width:10px;height:10px;display:none;position:absolute;bottom:-5px;right:-5px}.adder-chart:focus .adder-chart-handle{display:block}.adder-chart-part{border:1px solid var(--accent);pointer-events:none;position:absolute}.adder-part-handle{background:var(--bg);border:1px solid var(--accent);pointer-events:auto;border-radius:50%;width:7px;height:7px;margin:-4px 0 0 -4px;display:none;position:absolute}.adder-chart-part.resizable .adder-part-handle{display:block}.adder-part-handle[data-dir=nw]{cursor:nwse-resize;top:0;left:0}.adder-part-handle[data-dir=n]{cursor:ns-resize;top:0;left:50%}.adder-part-handle[data-dir=ne]{cursor:nesw-resize;top:0;left:100%}.adder-part-handle[data-dir=e]{cursor:ew-resize;top:50%;left:100%}.adder-part-handle[data-dir=se]{cursor:nwse-resize;top:100%;left:100%}.adder-part-handle[data-dir=s]{cursor:ns-resize;top:100%;left:50%}.adder-part-handle[data-dir=sw]{cursor:nesw-resize;top:100%;left:0}.adder-part-handle[data-dir=w]{cursor:ew-resize;top:50%;left:0}.adder-menu{z-index:100;background:var(--bg);border:1px solid var(--border);border-radius:6px;flex-direction:column;min-width:180px;padding:4px;display:flex;position:fixed;box-shadow:0 6px 18px #0000002e}.adder-menu button{text-align:left;background:0 0;border:0;border-radius:4px;padding:5px 10px}.adder-menu button:hover,.adder-menu button:focus{background:var(--accent-soft);outline:none}.adder-menu button.danger{color:var(--danger)}.adder-menu-sep{background:var(--border);height:1px;margin:4px 2px}.chart-panel{border-left:1px solid var(--border);background:var(--bg);flex-direction:column;flex:none;width:280px;display:flex}.chart-panel-head{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.chart-panel-body{flex:1;overflow:auto}.chart-panel details{border-bottom:1px solid var(--border)}.chart-panel summary{cursor:pointer;-webkit-user-select:none;user-select:none;padding:8px 12px;font-weight:600}.chart-panel-section{flex-direction:column;gap:8px;padding:2px 12px 12px;display:flex}.chart-panel .field{color:var(--muted);grid-template-columns:92px 1fr;align-items:center;gap:8px;display:grid}.chart-panel .field>:last-child{min-width:0;color:var(--text)}.chart-panel .field.check{grid-template-columns:auto 1fr;justify-content:start}.chart-panel input[type=number]{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:6px;width:100%;padding:3px 6px}.chart-panel .colour{align-items:center;gap:8px;display:flex}.chart-panel input[type=color]{border:1px solid var(--border);background:var(--bg);border-radius:4px;width:40px;height:24px;padding:0 2px}.chart-panel .toggles{gap:4px;display:flex}.chart-panel .toggles button{width:30px;padding:3px 0}.chart-panel .buttons{gap:8px;display:flex}.chart-panel .subhead{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-top:4px;font-size:11px;font-weight:600}.chart-panel button.danger{color:var(--danger)}.adder-grid-editor.highlighted{color:#0000;caret-color:var(--text)}.adder-grid-editor-highlight{z-index:2;pointer-events:none;white-space:pre;color:var(--text);border:2px solid #0000;margin:0;padding:3px 4px;position:absolute;overflow:hidden}.adder-grid-editor{z-index:2;resize:none;white-space:pre;border:2px solid var(--accent);background:var(--bg);color:var(--text);outline:none;margin:0;padding:3px 4px;position:absolute;overflow:hidden;box-shadow:0 2px 8px #00000026}.tabs{border-top:1px solid var(--border);background:var(--surface);align-items:stretch;gap:2px;height:32px;padding:0 6px;display:flex;overflow-x:auto}.tabs .tab{white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;padding:0 14px}.tabs .tab.active{background:var(--bg);border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.tabs .add{background:0 0;border:0;padding:0 10px;font-size:16px}.tabs input{align-self:center;width:120px}.toolbar .wb-name{width:180px;font-weight:500}.toolbar .sep{background:var(--border);align-self:stretch;width:1px;margin:0 4px}.toolbar .save-state{color:var(--muted);font-size:12px}.tabs .tab-error{color:var(--danger);align-self:center;margin-left:8px;font-size:12px}.toolbar-error{color:var(--danger);font-size:12px}.script-panel{border-left:1px solid var(--border);background:var(--bg);flex-direction:column;width:min(46vw,640px);min-width:320px;display:flex}.script-toolbar{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:8px;padding:6px 10px;display:flex}.script-toolbar .spacer{flex:1}.py-status{color:var(--muted);font-size:12px}.py-status.running,.py-status.loading{color:var(--accent)}.script-editor{flex:1;min-height:120px}.console{border-top:1px solid var(--border);flex-direction:column;height:38%;min-height:100px;display:flex}.console-head{color:var(--muted);background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:4px 10px;font-size:12px;display:flex}.console-body{font:12px/1.45 var(--mono);flex:1;padding:6px 10px;overflow:auto}.console .entry{white-space:pre-wrap;word-break:break-word;margin:0}.console .entry.stderr,.console .entry.error{color:var(--danger)}.console .entry.info{color:var(--muted)}.console .entry.run{color:var(--accent);margin-top:6px}.console .entry.ok{color:var(--muted)}button.link{color:var(--accent);background:0 0;border:0;padding:0;font-size:12px}button.active{border-color:var(--accent);color:var(--accent)}.notice{background:color-mix(in srgb, var(--danger) 12%, var(--bg));color:var(--danger);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:6px 12px;display:flex}.adder-keytips{z-index:5;background:var(--bg);border:1px solid var(--border);border-radius:6px;align-items:center;gap:12px;padding:5px 10px;font-size:12px;display:flex;position:absolute;bottom:10px;left:72px;box-shadow:0 4px 14px #00000026}.adder-keytips[hidden]{display:none}.adder-keytips .path{color:var(--muted);font-family:var(--mono)}.adder-keytips kbd{font:11px var(--mono);border:1px solid var(--border);background:var(--surface);color:var(--accent);border-radius:4px;padding:1px 5px;font-weight:600}.adder-completion{z-index:4;background:var(--bg);border:1px solid var(--border);min-width:200px;max-width:320px;font:12px var(--mono);border-radius:6px;position:absolute;overflow:hidden;box-shadow:0 6px 18px #0000002e}.adder-completion ul{max-height:216px;margin:0;padding:4px 0;list-style:none;overflow-y:auto}.adder-completion li{cursor:pointer;white-space:nowrap;padding:3px 10px}.adder-completion li:hover{background:var(--surface)}.adder-completion li.active{background:var(--accent-soft);color:var(--accent)}.adder-completion-hint{border-top:1px solid var(--border);color:var(--muted);font:11px var(--font);background:var(--surface);padding:4px 10px}
