:root{color-scheme:light;font-family:Inter,Segoe UI,system-ui,sans-serif;font-size:13px;--sheet: hsl(48 100% 95%);--sheet-deep: hsl(48 100% 92%);--panel: hsl(48 100% 98%);--panel-strong: #ffffff;--line: hsl(48 60% 88%);--line-strong: hsl(48 50% 80%);--ink: #3a3320;--muted: #8a7b4f;--accent: #a16207;--accent-strong: #854d0e;--accent-soft: hsl(45 100% 92%);--green: #15803d;--green-soft: hsl(145 60% 94%);--danger: #b91c1c;--danger-soft: hsl(0 80% 96%);--mono: "JetBrains Mono", "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body,#app{margin:0;height:100%}body{background:var(--sheet);color:var(--ink);overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--panel-strong);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;white-space:nowrap;transition:border-color .11s ease,background .11s ease}button:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}button:disabled{color:#bfae86;cursor:default}button.primary{background:var(--accent);border-color:var(--accent-strong);color:#fffdf7}button.primary:hover:not(:disabled){background:var(--accent-strong)}button.ghost{background:transparent;border-color:transparent;color:var(--muted)}button.ghost:hover:not(:disabled){background:var(--accent-soft);color:var(--ink)}button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;position:relative;z-index:1}button.primary:focus-visible{outline-color:#fffdf7}input,select{background:var(--panel-strong);border:1px solid var(--line);border-radius:6px;padding:4px 7px;width:100%}input:focus,select:focus{outline:none;border-color:var(--accent)}input.num{cursor:ew-resize;font-variant-numeric:tabular-nums}input.num:focus{cursor:text}body.scrubbing{user-select:none}body.scrubbing input.num{cursor:ew-resize}.mono{font-family:var(--mono);font-size:11px}.muted{color:var(--muted)}.app-shell{--inspector-w: 268px;--nodes-h: 280px;--split: 6px;display:grid;grid-template-columns:214px minmax(0,1fr) var(--split) var(--inspector-w);grid-template-rows:auto minmax(120px,1fr) var(--split) var(--nodes-h) auto;grid-template-areas:"toolbar toolbar toolbar toolbar" "outliner viewport . inspector" "outliner . . inspector" "outliner nodes nodes inspector" "status status status status";height:100vh;overflow:hidden}.app-shell.nodes-popped{grid-template-columns:214px minmax(0,1fr) 0 0;grid-template-rows:auto minmax(0,1fr) 0 0 auto}.app-shell.nodes-popped .viewport{grid-column:2 / 5}.app-shell.nodes-popped .inspector,.app-shell.nodes-popped .splitter{display:none}.splitter{background:var(--sheet-deep);position:relative;touch-action:none}.splitter:after{content:"";position:absolute;inset:0;background:var(--line);opacity:0;transition:opacity .12s}.splitter:hover:after,.splitter.dragging:after{opacity:1;background:var(--accent)}.splitter-x{grid-column:2;grid-row:3;cursor:ns-resize}.splitter-y{grid-column:3;grid-row:2 / 5;cursor:ew-resize}.toolbar{grid-area:toolbar;display:flex;align-items:center;gap:14px;padding:7px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px}.brand-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:var(--accent);color:#fffdf7;font-weight:700}.brand strong{display:block;line-height:1.1}.brand small{color:var(--muted);font-size:11px}.file-name{display:flex;align-items:center;gap:8px;flex:0 1 260px}.file-name input{background:transparent;border-color:transparent;font-weight:600;padding:3px 6px}.file-name input:hover{border-color:var(--line);background:var(--panel-strong)}.dot{width:7px;height:7px;border-radius:50%;background:transparent}.dot.dirty{background:var(--accent)}.actions{display:flex;align-items:center;gap:6px;margin-left:auto}.actions .sep{width:1px;height:20px;background:var(--line)}.split{position:relative;display:inline-flex;align-items:stretch}.split>button{background-clip:padding-box}.split>button:first-child:not(:only-child){border-top-right-radius:0;border-bottom-right-radius:0}.split>button.caret{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px;padding:5px 6px;font-size:10px;line-height:1}.split>button.caret.primary{background:var(--accent);border-color:var(--accent-strong);color:#fffdf7}.split>button:hover:not(:disabled),.split>button:focus-visible{border-color:var(--accent);position:relative;z-index:1}.split>button.primary:hover:not(:disabled){border-color:var(--accent-strong)}.outliner{grid-area:outliner;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.add-menu-host{position:relative;display:flex}.add-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:20;min-width:190px;display:flex;flex-direction:column;padding:4px;gap:2px;border:1px solid var(--line-strong, #d8c98a);border-radius:7px;background:var(--panel, #fffdf7);box-shadow:0 8px 22px #3a332029}.add-menu button{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:6px 8px;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;font-size:12px;letter-spacing:0;text-transform:none;text-align:left;cursor:pointer}.add-menu button:hover{background:var(--accent-soft, #fdf0c4)}.add-menu small{color:var(--muted, #8a7b4f);font-size:10px}.object-list{list-style:none;margin:0;padding:6px;overflow:auto;flex:1}.object-list li{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:6px;cursor:pointer}.object-list li:hover{background:var(--accent-soft)}.object-list li.active{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--line-strong)}.object-list .eye{border:none;background:none;padding:0 2px;color:var(--muted);cursor:pointer}.object-list .eye.off{opacity:.35}.object-list .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.object-list .stats{font-family:var(--mono);font-size:10px;color:var(--muted)}.object-list .play{border:1px solid var(--line);background:var(--panel-strong);color:var(--accent);font-size:9px;line-height:1;padding:2px 4px;border-radius:3px;cursor:pointer}.object-list .play.on{background:var(--accent-soft);border-color:var(--accent)}.readout{font-size:10px;color:var(--accent-strong);background:var(--accent-soft);border-radius:4px;padding:3px 6px}.viewport{grid-area:viewport;position:relative;min-height:0;background:var(--sheet-deep)}.viewport canvas{width:100%;height:100%;display:block;outline:none;touch-action:none}.viewport-hint{position:absolute;left:10px;bottom:10px;font-size:11px;color:var(--muted);background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--line);border-radius:6px;padding:4px 8px;pointer-events:none}.viewport-modes{position:absolute;right:10px;top:10px;display:flex;gap:2px;padding:2px;background:color-mix(in srgb,var(--panel) 88%,transparent);border:1px solid var(--line);border-radius:7px}.viewport-modes button{display:grid;place-items:center;width:26px;height:22px;padding:0;border:0;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}.viewport-modes button:hover{color:var(--ink);background:var(--accent-soft)}.viewport-modes button.on{background:var(--accent);color:#fff}.shading-icon{width:14px;height:14px;display:block}.draw-tool{position:absolute;left:10px;top:10px;display:flex;align-items:center;gap:6px;padding:4px 6px;font-size:11px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--line);border-radius:7px}.draw-tool-title{font-weight:600;color:var(--ink)}.draw-tool .mono{font-size:10px}.draw-tool select{font-size:11px;padding:1px 3px}.draw-tool button{font-size:11px;padding:2px 8px}.fatal{position:absolute;inset:0;display:grid;place-content:center;gap:8px;padding:24px;text-align:center;background:var(--sheet)}.fatal h2{margin:0;color:var(--danger)}.fatal p{margin:0;max-width:52ch;color:var(--muted)}.inspector{grid-area:inspector;background:var(--panel);border-left:1px solid var(--line);overflow:auto;min-height:0}.section{padding:10px;border-bottom:1px solid var(--line)}.section h3{margin:0 0 8px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}.field{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin-bottom:6px}.field label{color:var(--muted)}.field input.num{text-align:right}.field select{text-align:left}.field>span{color:var(--muted)}.scrub-row{display:grid;grid-template-columns:96px auto;align-items:center;gap:8px}.scrub-row input[type=range]{width:96px;accent-color:var(--accent);cursor:pointer}.field.toggle{display:flex;align-items:center;justify-content:flex-start;gap:7px;cursor:pointer}.field.toggle input[type=checkbox]{width:13px;height:13px;margin:0;accent-color:var(--accent);cursor:pointer}.field.toggle>span{color:var(--ink)}.num-wrap{position:relative;width:96px;min-width:0}.num-wrap input.num{width:100%;min-width:0;padding-right:16px}.num-wrap .spinner{position:absolute;top:1px;right:1px;bottom:1px;width:13px;display:grid;grid-template-rows:1fr 1fr;border-left:1px solid var(--line);border-radius:0 3px 3px 0;overflow:hidden}.num-wrap .spinner button{display:grid;place-items:center;padding:0;height:auto;border:0;border-radius:0;background:transparent;color:var(--muted);cursor:pointer}.num-wrap .spinner button:hover{background:var(--line);color:var(--ink)}.num-wrap .spinner svg{width:7px;height:4px;display:block}.row3 .num-wrap{width:100%}.pick-row{display:flex;align-items:center;gap:6px;margin-bottom:8px}.pick-row button{display:grid;place-items:center;width:26px;height:24px;padding:0}.pick-row.words button{width:auto;padding:0 9px;font-size:11px}.pick-row .icon{width:14px;height:14px;display:block}.pick-row .mono{margin-left:auto}.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.row3 .field{grid-template-columns:1fr;gap:3px;margin:0}.row3 .field label{font-size:10px}.row3 .field input{text-align:center}.node-editor{grid-area:nodes;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;background:var(--sheet);border-top:1px solid var(--line)}.node-canvas{position:relative;min-width:0;min-height:0;overflow:hidden}.node-editor canvas{width:100%;height:100%;display:block;touch-action:none}.node-editor-head{display:flex;align-items:center;gap:10px;padding:4px 10px;font-size:11px;color:var(--muted);background:var(--panel);border-bottom:1px solid var(--line)}.node-hint{margin-left:4px}.node-tools{display:flex;gap:4px;margin-left:auto}.node-tools button{font-size:11px;padding:2px 7px}.node-tools button:disabled{opacity:.45}.node-tools .icon-button{display:grid;place-items:center;padding:2px 5px}.node-tools .icon{width:13px;height:13px;display:block}.frame-name{position:absolute;height:19px;padding:1px 5px;font-size:11px;font-weight:600;z-index:4}.popout-restore{position:absolute;top:8px;left:10px;font-size:11px;z-index:3}.popout-body{margin:0;height:100vh;overflow:hidden;background:var(--sheet)}.popout-host{height:100vh}.popout-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;height:100vh;overflow:hidden}.popout-layout .node-editor{grid-column:1;grid-row:1;border-top:0}.popout-layout .inspector{grid-column:2;grid-row:1}.node-empty{position:absolute;inset:0;display:grid;place-content:center;gap:6px;text-align:center;color:var(--muted);pointer-events:none}.status{grid-area:status;display:flex;align-items:center;gap:12px;padding:5px 12px;font-size:11px;color:var(--muted);background:var(--panel);border-top:1px solid var(--line)}.status .kernel{display:flex;align-items:center;gap:6px}.status .kernel .led{width:7px;height:7px;border-radius:50%;background:var(--muted)}.status .kernel.ready .led{background:var(--green)}.status .kernel.error .led{background:var(--danger)}.status .message{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status .counts{font-family:var(--mono)}.menu-anchor{position:relative;display:flex;gap:6px}.menu{position:absolute;top:calc(100% + 6px);right:0;min-width:210px;background:var(--panel-strong);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px #3a332024;padding:6px;z-index:30}.menu button{display:flex;flex-direction:column;align-items:flex-start;width:100%;border:none;background:none;text-align:left;padding:6px 8px;border-radius:5px}.menu button:hover{background:var(--accent-soft)}.menu small{color:var(--muted);font-size:10px}.menu .label{padding:4px 8px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.menu.storage{min-width:288px}.menu label.option{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:5px;cursor:pointer}.menu label.option:hover{background:var(--accent-soft)}.menu label.option.muted{cursor:default}.menu label.option.muted:hover{background:none}.menu label.option input{margin:2px 0 0}.menu label.option input[type=radio]{width:auto;flex:0 0 auto;margin:2px 0 0;padding:0;accent-color:var(--accent)}.menu label.option span{display:flex;flex-direction:column}.menu label.option strong{font-size:12px;font-weight:600}.dialog-backdrop{position:fixed;inset:0;background:#3a332038;display:grid;place-items:center;padding:6vh 16px;z-index:40}.dialog{width:min(680px,94vw);max-height:82vh;display:flex;flex-direction:column;background:var(--panel-strong);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 24px 60px #3a332040;overflow:hidden}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--line)}.dialog-head h2{margin:0;font-size:14px}.dialog-body{overflow:auto;padding:2px 14px 14px;display:flex;flex-direction:column;gap:12px}.dialog-note{margin:0;padding:8px 14px;border-top:1px solid var(--line);color:var(--danger);font-size:12px}.dialog.notice{width:min(430px,92vw)}.dialog.name-dialog{width:min(420px,92vw)}.name-field{display:flex;flex-direction:column;gap:6px;padding:8px 2px}.notice-text{margin:0;padding:6px 0 2px;line-height:1.45}.dialog-foot{display:flex;justify-content:flex-end;gap:6px;padding:10px 14px;border-top:1px solid var(--line)}.open-source{display:flex;align-items:center;gap:8px;padding:8px 2px}.open-source label{display:flex;align-items:center;gap:8px;flex:1}.open-source select{width:auto;min-width:170px}.open-source .mono{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.open-source button{padding:3px 8px;font-size:12px}.open-source .badge{padding:1px 7px;border-radius:999px;background:var(--accent-soft);color:var(--muted);font-size:10px;letter-spacing:.04em;text-transform:uppercase}.dialog .empty{margin:0;padding:10px 12px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:12px}.dialog label.option{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer}.dialog label.option:hover{background:var(--accent-soft)}.dialog label.option.muted{cursor:default}.dialog label.option.muted:hover{background:none}.dialog label.option input[type=radio]{width:auto;flex:0 0 auto;margin:2px 0 0;padding:0;accent-color:var(--accent)}.dialog label.option span{display:flex;flex-direction:column}.dialog label.option strong{font-size:12px;font-weight:600}.dialog label.option small{color:var(--muted);font-size:10px}.dialog label.option .forget-dir{margin-left:auto;flex:none;border:none;background:none;padding:0 4px;font-size:13px;line-height:1;color:var(--muted);border-radius:4px}.dialog label.option .forget-dir:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.dialog .label{padding:4px 2px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.dialog.export-dialog{width:min(460px,94vw)}.project-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.project-list li{display:flex;align-items:center;gap:8px;padding:3px 4px;border-radius:7px}.project-list li:hover{background:var(--accent-soft)}.project-name{flex:1;display:flex;align-items:baseline;gap:10px;min-width:0;border:none;background:none;text-align:left;padding:5px 6px}.project-name:hover:not(:disabled){background:none}.project-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name small{flex:none;color:var(--muted);font-size:10px}.project-list .rename{flex:1;min-width:0}.row-actions{display:flex;flex:none;align-items:center;gap:4px}.row-actions button{padding:3px 7px;font-size:11px}.row-menu-wrap{position:relative;flex:none}.row-menu-trigger{border:none;background:none;padding:2px 7px;font-size:16px;line-height:1;border-radius:5px;color:var(--muted)}.row-menu-trigger:hover:not(:disabled){background:var(--accent-soft);color:var(--ink)}.row-menu{position:fixed;top:0;right:0;z-index:50;min-width:190px;display:flex;flex-direction:column;padding:4px;background:var(--panel-strong);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px #3a332029}.row-menu button{border:none;background:none;padding:6px 8px;border-radius:5px;text-align:left;font-size:12px}.row-menu button:hover:not(:disabled){background:var(--accent-soft)}.row-menu button.danger,button.danger{color:var(--danger)}button.danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-soft)}.palette-backdrop{position:fixed;inset:0;background:#3a33202e;display:grid;place-items:start center;padding-top:12vh;z-index:40}.palette{width:min(560px,92vw);max-height:62vh;display:flex;flex-direction:column;background:var(--panel-strong);border:1px solid var(--line-strong);border-radius:10px;box-shadow:0 20px 50px #3a332038;overflow:hidden}.palette-search{padding:10px;border-bottom:1px solid var(--line)}.palette-list{overflow:auto;padding:6px}.palette-group{margin-bottom:6px}.palette-group h4{margin:6px 8px 4px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.palette-item{display:flex;justify-content:space-between;gap:10px;width:100%;border:none;background:none;text-align:left;padding:6px 8px;border-radius:5px}.palette-item:hover,.palette-item.active{background:var(--accent-soft)}.palette-item small{color:var(--muted)}.toast{position:fixed;bottom:34px;left:50%;transform:translate(-50%);background:var(--panel-strong);border:1px solid var(--line-strong);border-radius:8px;padding:8px 14px;box-shadow:0 10px 24px #3a332029;z-index:50}
