.ws-split.fullscreen{position:fixed;inset:0;width:100vw;height:100vh;background:var(--c-bg);z-index:9999}.ws-split.fullscreen .ws-pane.editor{min-width:360px}.ws-iconbtn-svg{padding:0 6px;display:inline-flex;align-items:center;justify-content:center}.ws-split{display:flex;flex:1;min-height:0}@media (max-width: 720px){.ws-split{flex-direction:column}}.ws-pane{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--c-surface)}.ws-pane.editor{flex:0 0 35%;border-right:1px solid var(--c-border);min-width:280px}.ws-pane.viz{flex:1 1 65%}@media (max-width: 720px){.ws-pane.editor{border-right:none;border-bottom:1px solid var(--c-border)}}.ws-pane-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);padding:var(--s-sm) var(--s-md);background:var(--c-surface-elev);border-bottom:1px solid var(--c-border);font-size:.8125rem;color:var(--c-muted);text-transform:uppercase;letter-spacing:.05em;min-height:40px}.ws-toolbar{display:flex;gap:4px;flex-wrap:wrap}.ws-iconbtn{display:inline-flex;align-items:center;justify-content:center;height:28px;min-width:28px;padding:0 8px;border-radius:var(--r-sm);color:var(--c-muted);background:transparent;font-size:.75rem;letter-spacing:.03em;text-transform:none;transition:background .15s var(--ease-std),color .15s var(--ease-std)}.ws-iconbtn:hover{background:var(--c-surface-press);color:var(--c-text)}.ws-iconbtn.active{background:var(--c-surface-press);color:var(--c-primary)}.ws-editor-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ws-editor-wrap>div{flex:1;min-height:0}.cm-editor{height:100%;font-family:var(--f-mono)!important;font-size:.9375rem!important}.cm-editor .cm-scroller{font-family:var(--f-mono)!important}.ws-statusbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s-sm);padding:6px var(--s-md);background:var(--c-surface-elev);border-top:1px solid var(--c-border);font-family:var(--f-mono);font-size:.75rem;color:var(--c-muted);min-height:28px}.ws-statusbar.error{color:var(--c-error)}.ws-statusbar.ok{color:var(--c-success)}.ws-viz-canvas{flex:1;min-height:0;position:relative;background:radial-gradient(circle at 1px 1px,var(--c-surface-elev) 1px,transparent 0) 0 0 / 24px 24px,var(--c-bg)}.ws-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--s-lg);color:var(--c-muted)}.ws-empty h4{color:var(--c-text);margin-bottom:var(--s-sm)}.ws-empty p{max-width:360px;font-size:.9375rem}.json-node{background:var(--c-surface-elev);border:1px solid var(--c-border);border-radius:var(--r-md);min-width:180px;max-width:320px;font-family:var(--f-mono);font-size:.8125rem;color:var(--c-text);overflow:hidden}.json-node.selected{box-shadow:0 0 0 4px #6ee7b726;border-color:var(--c-primary)}.json-node-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:#0b0f14;font-weight:600}.json-node.type-object .json-node-header{background:var(--c-secondary)}.json-node.type-array .json-node-header{background:var(--c-primary)}.json-node.type-prim .json-node-header{background:var(--c-muted);color:#0b0f14}.json-node-toggle{background:#0003;color:inherit;border-radius:3px;padding:0 6px;font-size:.75rem;line-height:16px}.json-node-body{padding:6px 10px;display:grid;gap:4px}.json-row{display:flex;gap:6px;word-break:break-word}.json-key{color:var(--c-syn-key);flex-shrink:0}.json-key.editable{cursor:text;border-radius:3px;padding:0 2px}.json-key.editable:hover{background:#7dd3fc1f;outline:1px dashed rgba(125,211,252,.45)}.json-key-input{flex:0 1 auto;width:8em;color:var(--c-syn-key);border-color:var(--c-syn-key)}.json-val.string{color:var(--c-syn-string)}.json-val.number{color:var(--c-syn-number)}.json-val.boolean{color:var(--c-syn-bool)}.json-val.null{color:var(--c-syn-bool);font-style:italic}.json-val.muted{color:var(--c-muted)}.json-val.editable{cursor:text;border-radius:3px;padding:0 2px}.json-val.editable:hover{background:#6ee7b71a;outline:1px dashed rgba(110,231,183,.45)}.json-row-add-btn{display:block;margin-top:4px;width:100%;height:20px;font-size:14px;line-height:1;color:var(--c-muted);background:transparent;border:1px dashed var(--c-border);border-radius:3px;cursor:pointer;padding:0}.json-node.type-array .json-row-add-btn:hover{color:var(--c-syn-string);border-color:var(--c-syn-string);background:#6ee7b71a}.json-node.type-object .json-row-add-btn:hover{color:var(--c-syn-key);border-color:var(--c-syn-key);background:#7dd3fc1f}.json-row-add{margin-top:4px;flex-direction:column;gap:4px}.json-row-add .json-val-input,.json-row-add .json-key-input{width:100%;min-width:0;flex:0 0 auto}.json-row-del{order:99;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--c-muted);background:transparent;border:none;border-radius:3px;cursor:pointer;opacity:0;flex-shrink:0;padding:0}.json-row:hover .json-row-del{opacity:1}.json-row-del:hover{color:#fff;background:#f87171d9}.json-val-input{flex:1;min-width:0;font:inherit;font-family:var(--f-mono, monospace);color:inherit;background:#00000059;border:1px solid var(--c-accent, #6EE7B7);border-radius:3px;padding:0 4px;outline:none}.toast-host{position:fixed;top:16px;right:16px;display:flex;flex-direction:column;gap:8px;z-index:100;pointer-events:none}.toast{pointer-events:auto;width:320px;max-width:calc(100vw - 32px);background:var(--c-surface-elev);border:1px solid var(--c-border);border-radius:var(--r-md);padding:10px 12px;font-size:.875rem;display:flex;gap:8px;align-items:flex-start;animation:toast-in .2s var(--ease-in)}.toast.success{border-left:3px solid var(--c-success)}.toast.error{border-left:3px solid var(--c-error)}.toast-title{font-weight:600;margin-bottom:2px}.toast-msg{color:var(--c-muted);font-family:var(--f-mono);font-size:.8125rem}.toast-close{margin-left:auto;color:var(--c-muted);background:none;font-size:1rem;line-height:1}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.react-flow__edge-path{stroke:#3a4757;stroke-width:1.5}.react-flow__attribution{background:transparent!important;color:var(--c-muted)!important}.react-flow__controls{background:var(--c-surface-elev)!important;border:1px solid var(--c-border)!important;border-radius:var(--r-md)!important;overflow:hidden}.react-flow__controls button{background:var(--c-surface-elev)!important;color:var(--c-text)!important;border-bottom:1px solid var(--c-border)!important}.react-flow__controls button:hover{background:var(--c-surface-press)!important}
