:root{--base: #1e1e2e;--mantle: #181825;--crust: #11111b;--surface0: #313244;--surface1: #45475a;--surface2: #585b70;--overlay0: #6c7086;--text: #cdd6f4;--subtext1: #bac2de;--subtext0: #a6adc8;--blue: #89b4fa;--lavender: #b4befe;--mauve: #cba6f7;--green: #a6e3a1;--red: #f38ba8;--peach: #fab387;--yellow: #f9e2af;--teal: #94e2d5;--sky: #89dceb;--pink: #f5c2e7;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--base);color:var(--text);font-family:var(--font-sans);font-size:14px;-webkit-font-smoothing:antialiased}button{font-family:inherit;font-size:inherit;background:var(--surface0);color:var(--text);border:1px solid var(--surface1);border-radius:6px;padding:4px 10px;cursor:pointer}button:hover{background:var(--surface1)}button.primary{background:var(--blue);color:var(--crust);border-color:var(--blue)}button.primary:hover{background:var(--lavender);border-color:var(--lavender)}.app{display:grid;grid-template-rows:auto 1fr;height:100%}.topbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--mantle);border-bottom:1px solid var(--crust)}.topbar h1{margin:0;font-size:14px;font-weight:600;letter-spacing:.02em;color:var(--lavender)}.topbar .spacer{flex:1}.topbar .status{font-family:var(--font-mono);font-size:12px;color:var(--subtext0)}.topbar .status.error{color:var(--red)}.topbar .status.warn{color:var(--yellow)}.panels{display:grid;grid-template-columns:var(--col-left, 1fr) 4px var(--col-mid, 1.4fr) 4px var(--col-right, 1fr);overflow:hidden}.panels.two-col{grid-template-columns:var(--col-left, 360px) 4px 1fr}.left-col{display:flex;flex-direction:column;overflow:hidden}.left-stack{flex:1;display:grid;grid-template-rows:1fr 1fr;overflow:hidden;gap:4px;background:var(--crust)}.panel.sub{border-top:none;overflow:hidden}.right-col{display:grid;grid-template-rows:auto auto auto 1fr;overflow:hidden}.expr-strip{height:96px;min-height:60px;max-height:220px;overflow:hidden;border-bottom:1px solid var(--crust);background:var(--base);resize:vertical}.builder-body{position:relative;overflow:hidden}.panel{display:flex;flex-direction:column;overflow:hidden;background:var(--base);border-top:1px solid var(--crust)}.panel-header{padding:6px 10px;background:var(--mantle);color:var(--subtext1);font-size:12px;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--crust);display:flex;align-items:center;gap:8px}.panel-header .spacer{flex:1}.panel-body{flex:1;overflow:hidden;position:relative}.panel-body.stacked{display:grid;grid-template-rows:1fr 4px 1fr}.gutter{background:var(--crust);cursor:col-resize}.gutter.horizontal{cursor:row-resize}.gutter:hover{background:var(--surface1)}.cm-editor{height:100%}.cm-editor .cm-scroller{font-family:var(--font-mono)}.cm-editor.cm-focused{outline:none}.error-line{background:var(--surface0);color:var(--red);padding:6px 10px;border-top:1px solid var(--surface1);font-family:var(--font-mono);font-size:12px}.warn-line{background:var(--surface0);color:var(--yellow);padding:6px 10px;border-top:1px solid var(--surface1);font-family:var(--font-mono);font-size:12px}.result.stale{opacity:.5}.jt-root{height:100%;overflow:auto;padding:6px 8px;font-family:var(--font-mono);font-size:12px;background:var(--base);color:var(--text)}.jt-empty{padding:12px;color:var(--overlay0);font-family:var(--font-mono);font-size:12px}.jt-node{line-height:1.5}.jt-row{display:flex;align-items:center;gap:4px;padding:1px 4px;border-radius:4px;cursor:grab;user-select:none;white-space:nowrap}.jt-row:hover{background:var(--surface0)}.jt-row:active{cursor:grabbing;background:var(--surface1)}.jt-toggle{width:12px;color:var(--overlay0);cursor:pointer;text-align:center}.jt-label-root{color:var(--lavender)}.jt-label-key{color:var(--blue)}.jt-label-index{color:var(--peach)}.jt-colon{color:var(--overlay0);margin-right:4px}.jt-preview{color:var(--subtext0)}.jt-t-string{color:var(--green)}.jt-t-number{color:var(--peach)}.jt-t-boolean{color:var(--yellow)}.jt-t-null{color:var(--overlay0)}.jt-t-array,.jt-t-object{color:var(--mauve);font-style:italic}.jt-children{padding-left:16px;border-left:1px solid var(--surface0);margin-left:6px}.drop-target-active{outline:2px dashed var(--lavender);outline-offset:-2px;background:var(--surface0)}.modal-backdrop{position:fixed;inset:0;background:#11111bb3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--mantle);color:var(--text);border:1px solid var(--surface1);border-radius:8px;width:min(720px,92vw);max-height:86vh;display:flex;flex-direction:column;box-shadow:0 12px 40px #00000080}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--crust);font-weight:600;color:var(--lavender)}.modal-body{padding:12px 14px;overflow:auto}.modal-hint{margin:0 0 8px;color:var(--subtext0);font-size:12px}.modal-hint code{background:var(--surface0);border-radius:3px;padding:0 4px;font-family:var(--font-mono);font-size:11px}.modal-textarea{width:100%;min-height:260px;background:var(--base);color:var(--text);border:1px solid var(--surface1);border-radius:6px;padding:8px 10px;font-family:var(--font-mono);font-size:12px;resize:vertical}.modal-textarea:focus{outline:1px solid var(--lavender)}.modal-error{margin-top:8px;color:var(--red);font-family:var(--font-mono);font-size:12px}.modal-warn{margin-top:8px;color:var(--yellow);font-family:var(--font-mono);font-size:12px;max-height:120px;overflow:auto;border-top:1px solid var(--surface1);padding-top:6px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--crust)}.tabs{display:inline-flex;gap:2px}.tabs button{padding:2px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;background:transparent;color:var(--subtext0);border:1px solid transparent}.tabs button.active{background:var(--surface0);color:var(--text);border-color:var(--surface1)}#blockly-root{position:absolute;inset:0}.blocklyToolboxDiv{background:var(--mantle)!important;color:var(--text)!important;border-right:1px solid var(--crust)}.blocklyTreeRow{padding:2px 8px}.blocklyTreeLabel{color:var(--text)!important;font-family:var(--font-sans)!important}.blocklyFlyoutBackground{fill:var(--mantle)!important}.blocklyMainBackground{stroke:none!important;fill:var(--base)!important}.blocklyText{font-family:var(--font-mono)!important}
