:root{--bg:#f4f5f7;--panel:#fff;--panel-2:#fafbfc;--border:#dfe2e6;--border-strong:#c5cad1;--text:#1d2126;--muted:#69717c;--accent:#2f6fdb;--accent-soft:#e6eefc;--sel:#dbe7fd;--danger:#c4312b;--excluded:#2a5bd7;--radius:6px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font:13px / 1.4 var(--font);color:var(--text);background:var(--bg)}button{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;white-space:nowrap;padding:4px 10px}button:hover:not(:disabled){background:var(--panel-2);border-color:#a9b0b9}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#265fc0}button.danger{color:var(--danger);border-color:#e3b3b0}button.link{color:var(--accent);background:0 0;border:none;padding:0}input,select{font:inherit;color:var(--text);border:1px solid var(--border-strong);background:#fff;border-radius:4px;padding:3px 6px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}.muted{color:var(--muted)}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:8px 12px;display:flex}.toolbar .group{gap:6px;display:flex}.toolbar .title{color:var(--muted);margin-left:auto;font-weight:500}.toolbar .dirty{color:var(--accent)}.workspace{flex:1;min-height:0;display:flex}.main{background:var(--panel);flex-direction:column;flex:1;min-width:0;display:flex}.empty{text-align:center;max-width:380px;color:var(--muted);margin:auto}.empty h2{color:var(--text);font-size:18px}.view-toolbar{border-bottom:1px solid var(--border);background:var(--panel-2);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.view-toolbar .sep{background:var(--border);width:1px;height:18px;margin:0 4px}.view-toolbar .hint{color:var(--muted);margin-left:auto;font-size:12px}.view-toolbar .hint.selection-hint{white-space:nowrap;text-overflow:ellipsis;text-align:right;flex:1 1 0;min-width:0;overflow:hidden}.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.inline{align-items:center;gap:6px;display:inline-flex}.navigator{background:var(--panel-2);border-right:1px solid var(--border);flex-shrink:0;width:220px;padding:8px 0;overflow-y:auto}.nav-section h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:10px 14px 4px;font-size:11px;font-weight:600}.nav-item{cursor:pointer;border-left:3px solid #0000;align-items:center;gap:8px;padding:4px 8px 4px 14px;display:flex}.nav-item:hover{background:#eef0f3}.nav-item.on{background:var(--accent-soft);border-left-color:var(--accent)}.nav-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.nav-item input{flex:1;min-width:0}.nav-delete{visibility:hidden;color:var(--muted);background:0 0;border:none;padding:0 4px;font-size:15px;line-height:1}.nav-item:hover .nav-delete{visibility:visible}.icon{border-radius:2px;flex-shrink:0;width:12px;height:12px}.icon-table{background:linear-gradient(#8a94a3 0 0) 0 33%/100% 1px no-repeat,linear-gradient(#8a94a3 0 0) 0 66%/100% 1px no-repeat,linear-gradient(90deg,#8a94a3 0 0) 50% 0/1px 100% no-repeat;border:1px solid #8a94a3}.icon-analysis{background:#7a5bd6;border-radius:50%}.icon-analysis.icon-result-table{background:linear-gradient(#fff 0 0) 0 33%/100% 1px no-repeat,linear-gradient(#fff 0 0) 0 66%/100% 1px no-repeat,linear-gradient(90deg,#fff 0 0) 50% 0/1px 100% no-repeat,#7a5bd6;border-radius:2px}.icon-graph{background:linear-gradient(#0072b2 0 0) 15% 100%/22% 60% no-repeat,linear-gradient(#d55e00 0 0) 50% 100%/22% 100% no-repeat,linear-gradient(#009e73 0 0) 85% 100%/22% 40% no-repeat}.badge{border-radius:50%;place-items:center;width:16px;height:16px;font-size:11px;font-weight:700;display:grid}.badge.error{background:var(--danger);color:#fff}.badge.pending{background:var(--accent);width:8px;height:8px;animation:1s infinite alternate pulse}@keyframes pulse{to{opacity:.3}}.table-view{flex-direction:column;height:100%;min-height:0;display:flex}.table-notes{border-bottom:1px solid var(--border);background:var(--panel-2);flex:none;padding:4px 10px;font-size:12px}.table-notes summary{cursor:pointer;color:var(--muted)}.table-notes pre{white-space:pre-wrap;max-height:40vh;font-family:var(--font);margin:4px 0 2px;overflow:auto}.grid-scroller{flex:1;min-height:0;overflow:auto}.grid{outline:none;min-width:100%;display:inline-block}.grid table{border-collapse:separate;border-spacing:0;font-family:var(--font);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.grid th,.grid td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);white-space:nowrap;height:24px;padding:0 6px}.grid thead th{z-index:2;text-align:center;background:#eef0f3;font-weight:600;position:sticky;top:0}.grid thead tr:nth-child(2) th{color:var(--muted);font-size:12px;font-weight:500;top:24px}.grid thead th.sub-title.untitled{font-style:italic;font-weight:400}.grid thead th.sub-title .title-input{width:86px;font-size:12px;font-weight:500}.grid th.corner{z-index:3;width:44px;left:0}.grid th.col-title{cursor:default;min-width:96px}.grid .title-input{text-align:center;width:100%;font-weight:600}.grid th.row-num{z-index:1;color:var(--muted);text-align:right;background:#f6f7f9;width:44px;font-size:11px;font-weight:400;position:sticky;left:0}.grid td{text-overflow:ellipsis;background:#fff;min-width:96px;max-width:160px;overflow:hidden}.grid td.num{text-align:right}.grid td.row-title{background:#fbfbfc;min-width:140px}.grid td.group-start{border-left:1px solid var(--border-strong)}.grid tr.beyond td{background:#fcfcfd}.grid td.sel{background:var(--sel)}.grid td.focus{box-shadow:inset 0 0 0 2px var(--accent)}.grid td.excluded{color:var(--excluded);font-style:italic}.excl-mark{margin-left:1px}.grid .cell-input{text-align:right;background:#fff;border:none;outline:none;width:100%;height:22px;padding:0}.results-view{flex-direction:column;height:100%;min-height:0;display:flex}.results-view .sheet{flex:1;padding:16px 20px;transition:opacity .15s;overflow:auto}.results-view .sheet.stale{opacity:.55}.tabs{border-bottom:1px solid var(--border);gap:2px;padding:6px 10px 0;display:flex}.tabs button{border-radius:var(--radius) var(--radius) 0 0;color:var(--muted);background:0 0;border:1px solid #0000;border-bottom:none}.tabs button.on{border-color:var(--border);background:var(--panel);color:var(--text);margin-bottom:-1px}table.results{border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:440px;margin:0 0 18px}table.results th{text-align:left;border-bottom:1px solid var(--border);background:#f1f3f5;padding:6px 8px;font-weight:600}table.results td{border-bottom:1px solid #eef0f2;padding:4px 8px}table.results td.num{text-align:right;font-family:var(--mono);font-size:12px}table.results td.txt{text-align:right}table.results.kv td:first-child{color:#3a4048}.results-view .result-table{flex-direction:column;flex:1;min-height:0;display:flex}.results-view .result-table.stale{opacity:.55}.results-view .result-table .table-view{flex:1;min-height:0}.banner.info{border-radius:var(--radius);color:#1f4a73;background:#eef4fb;border:1px solid #c9dcf0;margin:12px 20px 0;padding:8px 12px}.banner.error{border-radius:var(--radius);color:#8c2420;background:#fdeceb;border:1px solid #f3c2bf;margin:12px 20px 0;padding:8px 12px}.diagnostics{margin:10px 20px 0;padding:0;list-style:none}.diagnostics li{color:var(--muted);border-left:3px solid #c9ced6;margin-bottom:4px;padding:4px 10px}.diagnostics li.warning{color:#6b5100;border-left-color:#e0a100}.diagnostics li.error{border-left-color:var(--danger);color:#8c2420}.graph-view{height:100%;min-height:0;display:flex}.graph-main{flex-direction:column;flex:1;min-width:0;display:flex}.canvas{background:#e9ebee;flex-direction:column;flex:1;align-items:flex-start;gap:12px;padding:32px;display:flex;overflow:auto}.canvas>*{margin-inline:auto}svg.scene{cursor:default;flex-shrink:0;box-shadow:0 1px 3px #141e2826,0 4px 16px #141e2814}.warnings{border-radius:var(--radius);color:#6b5100;background:#fff7e0;border:1px solid #efd88a;margin:0;padding:6px 12px;list-style:none}.inspector{border-left:1px solid var(--border);background:var(--panel-2);flex-shrink:0;width:280px;padding:12px 14px 24px;overflow-y:auto}.inspector-header{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.inspector-header h2{margin:0;font-size:14px}.inspector-section{border-top:1px solid var(--border);padding:10px 0 4px}.inspector-section h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:600}.inspector button{text-align:left;white-space:normal;width:100%;margin:0 0 6px;display:block}.inspector button.link{width:auto;display:inline}.field{flex-direction:column;gap:3px;margin-bottom:10px;display:flex}.field>label{color:#454c55;font-size:12px}.field.check{flex-direction:row}.field input[type=number],.field input[type=text],.field select{width:100%}.field .help{color:var(--muted);font-size:11px}.field .help.error{color:var(--danger)}fieldset.field{border:none;gap:5px;margin:0 0 12px;padding:0}fieldset.field legend{color:#454c55;margin-bottom:4px;padding:0;font-size:12px}.color-field{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.inspector .color-field .swatch,.swatch{border:1px solid #0003;border-radius:4px;width:20px;height:20px;margin:0;padding:0;display:inline-block}.swatch.on{outline:2px solid var(--accent);outline-offset:1px}.swatch.mixed{background:conic-gradient(#0072b2 0 25%, #d55e00 0 50%, #009e73 0 75%, #cc79a7 0)}.color-field input[type=color]{background:0 0;border:none;width:28px;height:22px;padding:0}dialog.dialog{width:440px;max-width:calc(100vw - 32px);color:var(--text);border:none;border-radius:10px;padding:0;box-shadow:0 12px 40px #00000040}dialog.dialog.wide{width:720px}dialog.dialog::backdrop{background:#14181e59}dialog.dialog header{padding:14px 18px 0}dialog.dialog h2{margin:0;font-size:15px}.dialog-body{max-height:70vh;padding:14px 18px;overflow-y:auto}dialog.dialog footer{border-top:1px solid var(--border);background:var(--panel-2);justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.analyze{gap:18px;min-height:320px;display:flex}.analyze-list{border-right:1px solid var(--border);flex-shrink:0;width:220px;padding-right:12px}.analyze-list h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-size:11px}.list-item{text-align:left;white-space:normal;background:0 0;border:none;border-radius:4px;width:100%;padding:5px 8px;display:block}.list-item.on{background:var(--accent-soft);color:#1b4fa8;font-weight:500}.analyze-detail{flex:1;min-width:0}.analyze-detail>p{margin-top:0}.toast{color:#fff;border-radius:var(--radius);z-index:100;background:#2b2f36;align-items:flex-start;gap:10px;max-width:420px;padding:10px 12px;display:flex;position:fixed;bottom:16px;right:16px;box-shadow:0 6px 24px #00000040}.toast button{color:#c9ced6;background:0 0;border:none;padding:0 2px}.equation-text{width:100%;font-family:var(--mono);box-sizing:border-box;font-size:12px}.formula{background:var(--panel-2);border:1px solid var(--border);font-family:var(--mono);color:#3a4048;white-space:normal;border-radius:4px;margin-top:4px;padding:6px 8px;font-size:11.5px}fieldset.constraints{border:none;margin:0;padding:0}fieldset.constraints legend{color:#454c55;margin-bottom:4px;padding:0;font-size:12px}fieldset.constraints table{border-collapse:collapse;width:100%}fieldset.constraints td{vertical-align:top;border-bottom:1px solid #eef0f2;padding:4px 6px 4px 0}fieldset.constraints td:first-child{width:45%}fieldset.constraints input[type=number]{width:90px}.results-view .note{color:#3a4048;margin:0 0 12px}.scene.page{box-shadow:0 1px 4px #00000040}.layout-hit{cursor:move}.layout-handle{cursor:nwse-resize}.icon-layout{background:linear-gradient(#0072b2 0 0) 20% 25%/30% 30% no-repeat,linear-gradient(#d55e00 0 0) 80% 25%/30% 30% no-repeat,linear-gradient(#009e73 0 0) 50% 80%/60% 25% no-repeat;border:1px solid #8a94a3}.import-preview{border:1px solid var(--border,#d0d4da);border-radius:4px;max-height:220px;margin-bottom:12px;overflow:auto}.import-preview table{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:12px}.import-preview td{white-space:nowrap;text-overflow:ellipsis;border:1px solid #e3e6ea;max-width:140px;padding:2px 6px;overflow:hidden}.import-preview td.num{text-align:right}.import-preview tr.head td{background:#f3f5f8;font-weight:600}.import-preview td.left-out{color:var(--danger);background:#fdecea;text-decoration:line-through}.import-preview td.row-title{font-weight:600}.import-preview.result{max-height:180px}.import-result-label{margin-bottom:4px;font-weight:600}.import-account.warn{color:var(--danger);font-size:12px}.import-preview .muted{padding:4px 6px}.error-text{color:var(--danger);margin-top:8px}.inspector-section h3 .section-toggle{all:unset;cursor:pointer;align-items:center;gap:4px;width:100%;display:flex}.inspector-section h3 .chevron{width:10px;color:var(--muted);font-size:10px}.inspector .field-row{align-items:flex-end;gap:6px;display:flex}.inspector .field-row>*{flex:1;min-width:0}.inspector .hint-syntax{color:var(--muted);margin-top:2px;font-size:11px}.palette-preview{gap:2px;margin:4px 0 8px;display:flex}.palette-preview span{border:1px solid #0000001a;border-radius:2px;flex:1;height:12px}.dataset-list{margin:0;padding:0;list-style:none}.dataset-list li{justify-content:space-between;align-items:center;gap:6px;display:flex}.dataset-list .order{gap:2px;display:flex}.inspector .dataset-list .order button{width:auto;margin:0;padding:0 6px}.inspector .field-row button{margin-bottom:0}.layer-list{margin:0 0 8px;padding-left:20px}.layer-list li{align-items:center;gap:4px;margin:2px 0;display:flex}.layer-list li span{flex:1}.inspector .layer-list button{width:auto;margin:0;padding:0 6px}.swatch.series{background:repeating-linear-gradient(45deg,#ccc 0 3px,#fff 3px 6px);font-size:10px;line-height:1}.inline-edit{z-index:5;font:inherit;border:1px solid var(--accent);background:#fff;border-radius:3px;padding:1px 4px;position:absolute;box-shadow:0 2px 6px #00000026}.scene .draggable{cursor:move}.scene-wrap{position:relative}svg.scene{-webkit-user-select:none;user-select:none}.new-graph{grid-template-columns:1fr 1fr;gap:16px;display:grid}.new-graph fieldset{border:none;margin:0 0 10px;padding:0}.new-graph legend{margin-bottom:4px;font-weight:600}.new-graph .row-picks{max-height:220px;overflow:auto}.new-graph fieldset label.check{align-items:center;gap:6px;margin:2px 0;display:flex}.align-bar{align-items:center;gap:4px;display:inline-flex}.align-bar button{white-space:nowrap}.canvas:focus{outline:none}.canvas:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.graph-view.formatting .canvas svg.scene{filter:grayscale();opacity:.45}dialog.format-dialog{resize:both;width:min(1000px,100vw - 32px);min-width:min(560px,100vw - 32px);max-width:calc(100vw - 16px);height:min(680px,100vh - 32px);min-height:380px;max-height:calc(100vh - 16px);overflow:hidden;container-type:inline-size}dialog.format-dialog[open]{flex-direction:column;display:flex}.format-header{cursor:move;-webkit-user-select:none;user-select:none;align-items:baseline;gap:10px;padding:12px 18px 8px;display:flex}.format-header .muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.format-tabs{border-bottom:1px solid var(--border);flex-shrink:0;gap:2px;padding:0 14px;display:flex;overflow-x:auto}.format-tabs [role=tab]{border-radius:var(--radius) var(--radius) 0 0;color:var(--muted);background:0 0;border:1px solid #0000;border-bottom:none;margin-bottom:-1px;padding:6px 12px}.format-tabs [role=tab][aria-selected=true]{border-color:var(--border);background:var(--panel);color:var(--text);font-weight:500}.format-tabs [role=tab]:hover:not([aria-selected=true]){color:var(--text);background:var(--panel-2)}.format-body{flex:1;min-height:0;display:flex}.format-options.inspector{border-left:none;border-right:1px solid var(--border);background:var(--panel);flex-shrink:0;width:340px;padding:4px 16px 16px}.format-options.inspector>.inspector-section:first-child,.format-options .series-picker+.inspector-section{border-top:none}.series-picker{z-index:1;background:var(--panel-2);border-bottom:1px solid var(--border);margin:0 -16px 4px;padding:10px 16px 2px;position:sticky;top:-4px}.point-banner{border-radius:var(--radius);background:var(--accent-soft);border:1px solid #c9dafa;justify-content:space-between;align-items:flex-start;gap:8px;margin:8px 0 4px;padding:8px 10px;display:flex}.format-options.inspector .point-banner button.link{white-space:nowrap;width:auto;margin:0;display:inline}.format-preview{background:#e9ebee;flex-direction:column;flex:1;min-width:0;display:flex}.format-preview-head{align-items:baseline;gap:10px;padding:8px 14px;font-size:12px;display:flex}.format-preview-canvas{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow:hidden}.format-footer{align-items:center}.format-footer>span{flex:1;font-size:12px}.format-error{color:var(--danger)}@container (width<=640px){.format-body{flex-direction:column-reverse}.format-options.inspector{border-right:none;border-top:1px solid var(--border);flex:1;width:auto;min-height:0}.format-preview{flex:0 0 38%}}.menu{z-index:50;background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--radius);flex-direction:column;min-width:180px;padding:4px;display:flex;position:fixed;box-shadow:0 6px 24px #0000002e}.menu [role=menuitem]{text-align:left;background:0 0;border:none;border-radius:4px;padding:5px 10px}.menu [role=menuitem]:hover:not(:disabled),.menu [role=menuitem]:focus-visible{background:var(--accent-soft);outline:none}.menu [role=menuitem].danger{color:var(--danger)}.menu [role=menuitem].separated{margin-top:5px;position:relative}.menu [role=menuitem].separated:before{content:"";border-top:1px solid var(--border);position:absolute;top:-3px;left:4px;right:4px}.examples-section h3{margin:8px 0 4px}.examples-list{margin:0 0 8px;padding:0;list-style:none}.examples-list li{margin:6px 0}.examples-list li button{font-weight:600}.examples-list li .muted{margin:2px 0 0 2px}
