:root{--bg:#fafafa;--surface:#fff;--border:#e2e8f0;--border-strong:#cbd5e1;--text:#1e293b;--text-muted:#64748b;--text-dim:#94a3b8;--accent:#7c3aed;--accent-soft:#ede9fe;--accent-hover:#6d28d9;--danger:#dc2626;--danger-soft:#fef2f2;--success:#15803d;--ref-highlight:#7c3aed14;--sidebar-w:240px;--radius:6px;--font-mono:"SF Mono", "Cascadia Code", "Fira Code", "Consolas", monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--shadow-md:0 4px 12px #00000014}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px}.app{height:100vh;display:flex}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);flex-direction:column;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid var(--border);padding:20px 16px 12px}.sidebar-header h1{letter-spacing:-.01em;color:var(--text);font-size:15px;font-weight:700}.sidebar-header p{color:var(--text-dim);margin-top:2px;font-size:11px}.sidebar-section{flex:1;padding:12px 0;overflow-y:auto}.sidebar-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);padding:0 16px 8px;font-size:10px;font-weight:600}.table-item{cursor:pointer;color:var(--text-muted);align-items:center;gap:8px;padding:7px 16px;font-size:13px;transition:all .1s;display:flex}.table-item:hover{background:var(--accent-soft);color:var(--text)}.table-item.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.table-icon{opacity:.6;justify-content:center;align-items:center;width:16px;height:16px;font-size:11px;display:flex}.table-item.active .table-icon{opacity:1}.add-table-btn{color:var(--text-dim);cursor:pointer;text-align:left;width:100%;font-size:12px;font-family:var(--font-sans);background:0 0;border:none;align-items:center;gap:6px;padding:7px 16px;transition:all .1s;display:flex}.add-table-btn:hover{color:var(--accent)}.ref-browser{border-top:1px solid var(--border);max-height:40%;padding:12px 0;overflow-y:auto}.ref-browser-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);padding:0 16px 8px;font-size:10px;font-weight:600}.ref-table-name{color:var(--text);padding:4px 16px 2px;font-size:12px;font-weight:600}.ref-col-item{cursor:pointer;color:var(--text-muted);justify-content:space-between;align-items:center;padding:3px 16px 3px 28px;font-size:12px;transition:all .1s;display:flex}.ref-col-item:hover{background:var(--accent-soft);color:var(--accent)}.ref-col-type{color:var(--text-dim);font-size:10px;font-family:var(--font-mono)}.main{outline:none;flex-direction:column;flex:1;display:flex;overflow:hidden}.toolbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;min-height:44px;padding:8px 16px;display:flex}.table-name-display{color:var(--text);letter-spacing:-.01em;font-size:16px;font-weight:700}.toolbar-actions{gap:8px;margin-left:auto;display:flex}.btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-muted);cursor:pointer;font-size:12px;font-weight:500;font-family:var(--font-sans);padding:5px 12px;transition:all .15s}.btn:hover{border-color:var(--border-strong);color:var(--text)}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover{background:var(--accent-hover)}.btn-danger{color:var(--danger)}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger)}.formula-bar{background:var(--surface);border-bottom:1px solid var(--border);align-items:stretch;min-height:40px;display:flex}.formula-bar-label{color:var(--text-dim);background:var(--bg);border-right:1px solid var(--border);min-width:48px;font-size:11px;font-weight:600;font-family:var(--font-mono);justify-content:center;align-items:center;padding:0 12px;display:flex}.formula-bar-editor{flex:50%;position:relative}.formula-bar-editor .cm-editor{font-size:13px;font-family:var(--font-mono)}.formula-bar-editor .cm-editor .cm-content{min-height:24px;padding:8px 12px}.formula-bar-editor .cm-editor.cm-focused{outline:none}.formula-bar-editor .cm-editor .cm-line{line-height:1.5}.formula-bar-editor .cm-editor .cm-scroller{overflow-x:hidden}.formula-bar-placeholder{color:var(--text-dim);cursor:text;flex:1;align-items:center;padding:0 12px;font-size:12px;font-style:italic;display:flex}.formula-bar-placeholder:hover{background:var(--bg)}.formula-preview{color:var(--success);font-size:12px;font-family:var(--font-mono);border-left:1px solid var(--border);white-space:pre-wrap;word-break:break-word;background:#f0fdf4;flex:50%;align-items:flex-start;padding:8px 12px;display:flex;overflow:hidden}.formula-preview.error{color:var(--danger);background:var(--danger-soft)}.grid-wrapper{flex:1;overflow:auto}.grid{border-collapse:collapse;table-layout:fixed}.grid th{background:var(--bg);text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);text-align:left;border-bottom:2px solid var(--border);z-index:1;-webkit-user-select:none;user-select:none;padding:10px 12px;font-size:11px;font-weight:600;position:sticky;top:0}.col-resize-handle{cursor:col-resize;z-index:2;width:5px;position:absolute;top:0;bottom:0;right:0}.col-resize-handle:hover,.col-resize-handle:active{background:var(--accent);opacity:.4}.grid th.row-num{text-align:center;width:48px;color:var(--text-dim)}.grid td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);height:36px;padding:0;position:relative}.grid td.row-num-cell{text-align:center;color:var(--text-dim);background:var(--bg);font-size:11px;font-family:var(--font-mono);-webkit-user-select:none;user-select:none;cursor:default;padding:0 4px}.cell{cursor:cell;text-overflow:ellipsis;white-space:nowrap;align-items:center;width:100%;height:100%;padding:6px 12px;font-size:13px;line-height:1;display:flex;overflow:hidden}.cell.formula-cell{font-family:var(--font-mono);color:var(--accent)}.cell.selected{outline:2px solid var(--accent);outline-offset:-2px;background:var(--accent-soft)}.cell.editing{outline:2px solid var(--accent);outline-offset:-2px;color:var(--text-dim);background:#fff;font-style:italic}.cell.highlighted{background:var(--ref-highlight)}.cell.error-cell{color:var(--danger);font-style:italic}.cell.remote-cursor{box-shadow:inset 0 0 0 2px var(--remote-color);position:relative}.remote-cursor-label{color:#fff;white-space:nowrap;pointer-events:none;z-index:10;border-radius:2px 2px 2px 0;padding:0 4px;font-size:9px;line-height:14px;position:absolute;top:-16px;left:-1px}.collaborator-list{flex-wrap:wrap;align-items:center;gap:4px;margin-top:8px;display:flex}.connection-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.connection-dot.connected{background:#4caf50}.connection-dot.connecting{background:#ff9800}.connection-dot.disconnected{background:#999}.collaborator-avatar{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:10px;font-weight:600;display:inline-flex}.grid th[draggable]{cursor:grab}.grid th[draggable]:active{cursor:grabbing}.grid th.dragging{opacity:.4}.grid th.drag-over-col{box-shadow:inset 2px 0 0 var(--accent)}.grid td.row-num-cell[draggable]{cursor:grab}.grid td.row-num-cell[draggable]:active{cursor:grabbing}.grid tr.drag-over-row>td{box-shadow:inset 0 2px 0 var(--accent)}.add-row-area{border-top:1px solid var(--border);background:var(--surface);justify-content:center;align-items:center;padding:8px;display:flex}.add-row-btn{color:var(--text-dim);border:1px dashed var(--border);border-radius:var(--radius);cursor:pointer;font-size:12px;font-family:var(--font-sans);background:0 0;padding:4px 16px;transition:all .15s}.add-row-btn:hover{border-color:var(--accent);color:var(--accent)}.rename-input{font-size:inherit;font-weight:inherit;border:none;border-bottom:2px solid var(--accent);color:inherit;background:0 0;outline:none;padding:0;font-family:inherit}.debug-panel{color:#e2e8f0;font-family:var(--font-mono);border-bottom:1px solid var(--border);background:#1e293b;max-height:100px;padding:6px 12px;font-size:12px;overflow-y:auto}.debug-line{white-space:pre-wrap;padding:1px 0}.debug-line:before{content:"> ";color:#94a3b8}.col-header-name{cursor:pointer;align-items:center;gap:4px;display:inline-flex}.col-letter{color:var(--text-dim);background:var(--bg);border-radius:3px;flex-shrink:0;padding:0 3px;font-size:9px;font-weight:600;line-height:16px}.col-rename-input{text-transform:uppercase;letter-spacing:.03em;border:none;border-bottom:2px solid var(--accent);color:var(--text);font-size:11px;font-weight:600;font-family:var(--font-sans);background:0 0;outline:none;width:100%;padding:0}.debug-btn{color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-size:11px;font-family:var(--font-mono);background:0 0;margin-left:4px;padding:2px 8px;transition:all .15s}.debug-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.dbg-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dbg-panel{background:var(--surface);border-radius:12px;flex-direction:column;width:min(1100px,92vw);height:min(700px,85vh);display:flex;overflow:hidden;box-shadow:0 24px 64px #0003}.dbg-header{color:#e2e8f0;background:#1e293b;border-bottom:1px solid #334155;align-items:center;gap:12px;padding:12px 16px;display:flex}.dbg-title{font-size:14px;font-weight:700;font-family:var(--font-mono);letter-spacing:-.01em}.dbg-controls{gap:4px;margin-left:auto;display:flex}.dbg-btn{color:#e2e8f0;cursor:pointer;font-size:12px;font-weight:500;font-family:var(--font-sans);background:#334155;border:1px solid #475569;border-radius:5px;align-items:center;gap:4px;padding:4px 10px;transition:all .1s;display:inline-flex}.dbg-btn:hover:not(:disabled){background:#475569;border-color:#64748b}.dbg-btn:disabled{opacity:.4;cursor:not-allowed}.dbg-btn-start{background:var(--accent);border-color:var(--accent);color:#fff}.dbg-btn-start:hover{background:var(--accent-hover)}.dbg-btn-stop{color:#fca5a5;border-color:#ef4444}.dbg-btn-stop:hover:not(:disabled){background:#7f1d1d}.dbg-icon{font-size:10px;line-height:1}.dbg-close{color:#94a3b8;cursor:pointer;background:0 0;border:none;margin-left:8px;padding:0 4px;font-size:20px;line-height:1}.dbg-close:hover{color:#e2e8f0}.dbg-status{font-size:12px;font-family:var(--font-mono);border-bottom:1px solid var(--border);padding:6px 16px}.dbg-status-paused{color:#92400e;background:#fef3c7}.dbg-status-running{color:#1e40af;background:#dbeafe}.dbg-status-finished{color:#166534;background:#dcfce7}.dbg-status-error{color:#991b1b;background:#fef2f2}.dbg-body{flex:1;display:flex;overflow:hidden}.dbg-editor-section{border-right:1px solid var(--border);flex-direction:column;flex:1;display:flex;overflow:hidden}.dbg-section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);flex-shrink:0;padding:8px 12px 4px;font-size:10px;font-weight:600}.dbg-editor{flex:1;overflow:auto}.dbg-editor .cm-editor{height:100%}.dbg-sidebar{background:var(--bg);flex-direction:column;width:300px;min-width:240px;display:flex;overflow:hidden}.dbg-vars-section{border-bottom:1px solid var(--border);flex-direction:column;flex:1;display:flex;overflow:hidden}.dbg-vars-list{flex:1;padding:0 4px 4px;overflow-y:auto}.dbg-var-item{font-size:12px;font-family:var(--font-mono);border-bottom:1px solid var(--border);align-items:baseline;gap:8px;padding:3px 8px;display:flex}.dbg-var-name{color:var(--accent);flex-shrink:0;font-weight:600}.dbg-var-value{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dbg-var-type{color:var(--text-dim);flex-shrink:0;font-size:10px}.dbg-bps-section{border-bottom:1px solid var(--border);flex-direction:column;max-height:120px;display:flex}.dbg-bps-list{padding:0 4px 4px;overflow-y:auto}.dbg-bp-item{color:var(--text-muted);font-size:12px;font-family:var(--font-mono);align-items:center;gap:6px;padding:3px 8px;display:flex}.dbg-bp-dot-sm{background:#ef4444;border-radius:50%;flex-shrink:0;width:8px;height:8px}.dbg-output-section{flex-direction:column;flex:1;min-height:80px;display:flex;overflow:hidden}.dbg-output{color:#e2e8f0;font-family:var(--font-mono);background:#1e293b;flex:1;padding:4px 8px;font-size:12px;overflow-y:auto}.dbg-output-line{white-space:pre-wrap;padding:1px 0}.dbg-output-line:before{content:"> ";color:#94a3b8}.dbg-empty{color:var(--text-dim);padding:8px 12px;font-size:11px;font-style:italic}.dbg-exec-gutter{width:18px}.dbg-exec-gutter .cm-gutterElement{justify-content:center;align-items:center;padding:0;display:flex}.dbg-bp-gutter{width:20px}.dbg-bp-gutter .cm-gutterElement{cursor:pointer;justify-content:center;align-items:center;display:flex}.dbg-bp-dot{background:#ef4444;border-radius:50%;width:10px;height:10px;box-shadow:0 0 4px #ef444480}.cm-line.dbg-current-line{background:#facc1533!important}.dbg-current-line-gutter{color:#eab308;font-size:10px;line-height:1}
