:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#1c1914;--muted:#6e675c;--ivory:#f4efe4;--ivory-2:#ebe4d4;--line:#1c191424;--ember:#c4491d;--ember-deep:#8d3014;--moss:#2c6b3f;--moss-deep:#1d4a2b;--steel:#1f567f;--night:#12150f;--panel:#1a1e16;--danger:#9d2c2c;color:var(--ink);background:var(--night);font-family:Segoe UI,Helvetica Neue,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}body{background:radial-gradient(1200px 500px at 10% -10%, #c4491d29, transparent 50%), var(--night)}button,input,select,textarea{font:inherit;color:inherit}.app{flex-direction:column;gap:12px;height:100%;min-height:0;padding:14px;display:flex;overflow:hidden}.topbar{color:#f3ecdf;flex-shrink:0;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;display:grid}.topbar-left,.topbar-right{align-items:center;gap:8px;min-width:0;display:flex}.topbar-left{flex-wrap:wrap}.topbar-right{justify-content:flex-end}.brand{flex-direction:column;flex:none;min-width:0;display:flex}.brand strong{letter-spacing:-.03em;font-family:Palatino,Palatino Linotype,Iowan Old Style,serif;font-size:1.45rem;font-weight:600}.brand span{color:#b7ad9d;letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}.controls,.speed{flex-wrap:nowrap;flex:none;align-items:center;gap:6px;display:flex}.model-pick{color:#d9d0c2;flex:none;align-items:center;gap:6px;font-size:.85rem;display:flex}.model-pick span{white-space:nowrap;flex:none}.model{color:#f3ecdf;background:#262b20;border:1px solid #f3ecdf33;border-radius:8px;flex:none;width:7.4rem;min-width:7.4rem;padding:7px 8px}.open-model{color:#f3ecdf;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #f3ecdf59;border-radius:8px;flex:none;padding:7px 10px}.open-model:disabled{opacity:.45;cursor:not-allowed}.ticks{white-space:nowrap;font-variant-numeric:tabular-nums;color:#f3ecdf;background:#262b20;border-radius:999px;flex:none;align-items:baseline;gap:10px;padding:6px 10px;font-size:.85rem;display:flex}.ticks b{color:#f0c9a0;font-weight:650}.run-timer{white-space:nowrap;font-variant-numeric:tabular-nums;color:#f3ecdf;background:#262b20;border-radius:999px;flex:none;padding:6px 12px;font-size:.85rem}.run-timer b{color:#f0c9a0;font-weight:650}.frame-cap{color:var(--ink);align-items:center;gap:6px;font-size:.78rem;display:flex}.frame-cap input{box-sizing:border-box;border:1px solid var(--line);width:5.25rem;min-width:5.25rem;color:var(--ink);font-variant-numeric:tabular-nums;background:#fff;border-radius:4px;padding:2px 4px;font-size:.82rem}button.act{cursor:pointer;color:#fff;background:var(--steel);border:0;border-radius:8px;padding:6px 10px}button.act.go{background:var(--moss)}button.act.stop{background:var(--danger)}button.act.step{color:#f3ecdf;background:0 0;border:1px solid #f3ecdf59}button.act:disabled{opacity:.45;cursor:not-allowed}.speed{color:#d9d0c2;font-size:.85rem}.speed input{width:92px;accent-color:var(--ember)}.banner{color:#ffd7c8;background:#3a241c;border:1px solid #c4491d80;border-radius:8px;padding:8px 12px}.banner.reconnect{color:#ffe7b8;background:#2a2416;border-color:#d4a0178c}.compile-error{color:#ffd7c8;background:#3a241c;border:1px solid #c4491db3;border-radius:8px;flex-shrink:0;padding:8px 12px}.compile-error strong{letter-spacing:.02em;margin-bottom:4px;display:block}.compile-error pre{white-space:pre-wrap;margin:0;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;font-size:.85rem;line-height:1.45}.stage{flex-direction:column;flex:auto;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.v-split{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex}.v-split-lead,.h-split-lead,.h-split-trail,.v-split-trail{min-width:0;min-height:0}.v-split-lead{flex-direction:column;flex:auto;display:flex}.v-split-trail{flex-direction:column;flex:none;display:flex}.v-split-trail>.command{flex:auto;height:100%}.h-split{flex-direction:row;flex:auto;align-items:stretch;min-width:0;height:100%;min-height:0;display:flex}.h-split-lead,.h-split-trail{flex-direction:column;display:flex}.h-split-lead{flex:auto}.h-split-trail{flex:none}.h-split-lead>.view,.h-split-trail>.side{flex:auto;height:100%;min-height:0}.splitter{touch-action:none;z-index:2;background:0 0;flex:0 0 14px;position:relative}.splitter.vertical{cursor:col-resize}.splitter.horizontal{cursor:row-resize}.splitter:before,.splitter:after{content:"";border-radius:99px;position:absolute}.splitter.vertical:after{background:#e7c27a;width:4px;top:10px;bottom:10px;left:5px}.splitter.horizontal:after{background:#e7c27a;height:4px;top:5px;left:10px;right:10px}.splitter.vertical:before{background:#f3ecdf;width:12px;height:72px;top:50%;left:1px;transform:translateY(-50%);box-shadow:0 0 0 1px #1c191473,0 2px 8px #00000059}.splitter.horizontal:before{background:#f3ecdf;width:72px;height:12px;top:1px;left:50%;transform:translate(-50%);box-shadow:0 0 0 1px #1c191473,0 2px 8px #00000059}.splitter:hover:after,.splitter:focus-visible:after,.splitter.dragging:after,.splitter:hover:before,.splitter:focus-visible:before,.splitter.dragging:before{background:#e7c27a}.splitter:focus-visible{outline:none}body.pane-dragging{-webkit-user-select:none;user-select:none}body.pane-col,body.pane-col *{cursor:col-resize!important}body.pane-row,body.pane-row *{cursor:row-resize!important}.view,.side,.code-panel,.world-panel,.info-panel,.command{background:var(--ivory);border-radius:14px;box-shadow:0 12px 40px #00000047}.view{flex-direction:column;gap:8px;min-width:0;min-height:0;padding:12px;display:flex}.view-bar{border-bottom:1px solid var(--line);background:#faf6ee;border-radius:14px 14px 0 0;align-items:center;gap:12px;min-width:0;margin:-12px -12px 0;padding:8px 16px;display:flex}.model-title{text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.03em;min-width:0;color:var(--ink);margin:0 0 0 auto;font-family:Palatino,Palatino Linotype,Iowan Old Style,serif;font-size:1.25rem;font-weight:600;line-height:1.2;overflow:hidden}.tabs{flex:none;gap:6px;display:flex}.tabs button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:999px;padding:5px 12px}.tabs button.on{background:var(--ink);color:var(--ivory)}.canvas-wrap{background:#0c0e0a;border:1px solid #2a2e24;border-radius:10px;flex:1;min-height:0;position:relative;overflow:hidden}.view.drop{outline-offset:-8px;outline:2px dashed #e7c27a}.drop-hint{color:#f3ecdf;pointer-events:none;background:#12150fb8;justify-content:center;align-items:center;font-size:1.05rem;display:flex;position:absolute;inset:0}.view-meta{color:var(--muted);font-size:.8rem}.side{flex-direction:column;gap:10px;min-width:0;min-height:0;padding:12px;display:flex;overflow:hidden auto}.world-settings{flex-direction:column;align-items:flex-start;gap:6px;min-width:0;max-width:100%;display:flex}.world-settings .axes{grid-template-columns:auto 5.2ch 5.2ch;align-items:center;gap:3px 6px;display:grid}.world-settings .col,.world-settings .axis{color:var(--muted);font-size:.72rem}.world-settings .col{text-align:center}.world-settings input:not([type=checkbox]){box-sizing:border-box;border:1px solid var(--line);width:5.2ch;min-width:0;max-width:5.2ch;color:var(--ink);font-variant-numeric:tabular-nums;background:#fff;border-radius:4px;padding:2px 3px;font-size:.82rem}.world-settings .extras{flex-wrap:wrap;align-items:center;gap:6px 10px;max-width:100%;display:flex}.world-settings .seed{flex-wrap:wrap;align-items:center;gap:6px;font-size:.78rem;display:flex}.world-settings .seed input{width:12ch;max-width:12ch;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace}.world-settings input:disabled{opacity:.45;cursor:not-allowed}.world-settings .hint{max-width:36rem;color:var(--muted);margin:0;font-size:.75rem;line-height:1.35}.world-settings .dt-field{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.world-settings .dt-field input{width:8ch;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace}.world-settings .patch,.world-settings .check{color:var(--ink);flex-direction:row;align-items:center;gap:5px;font-size:.78rem;display:flex}.world-settings button.iface{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;padding:3px 10px;font-size:.82rem}.world-settings button.iface:disabled{opacity:.45;cursor:not-allowed}.world-settings .err{color:var(--danger);max-width:100%;margin:0;font-size:.75rem}canvas.world{width:100%;height:100%;display:block}.world3d{position:absolute;inset:0}.world3d-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.world3d-canvas:active{cursor:grabbing}.world3d-labels{pointer-events:none;z-index:1;position:absolute;top:0;left:0}.world3d-label{white-space:pre;text-shadow:0 1px 2px #000000d9;pointer-events:none;-webkit-user-select:none;user-select:none;font-family:ui-sans-serif,system-ui,sans-serif;line-height:1.15}.world3d-overlay{z-index:2;color:#e8e8e0;-webkit-user-select:none;user-select:none;background:#0000008c;border-radius:8px;align-items:center;gap:8px;padding:4px 8px;font-size:.78rem;display:flex;position:absolute;top:8px;left:8px}.world3d-overlay button{font:inherit;color:inherit;cursor:pointer;background:#23261e;border:1px solid #5a5f4f;border-radius:6px;padding:2px 8px}.world3d-overlay label{cursor:pointer;align-items:center;gap:4px;display:flex}.world3d-badge{color:#b8b8a8}.widget{flex-direction:column;gap:4px;min-width:0;max-width:100%;display:flex}.widget .label{color:var(--muted);font-size:.82rem}.widget .readout{font-variant-numeric:tabular-nums;font-family:Palatino,Palatino Linotype,serif;font-size:1.35rem}.widget button.iface{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;padding:8px 10px}.widget button.iface.forever{border-color:var(--moss)}.widget button.iface.live{background:var(--danger);color:#fff;border-color:var(--danger)}.widget button.iface:disabled{opacity:.45;cursor:not-allowed}.widget input[type=range]{width:100%;min-width:0;accent-color:var(--ember)}.widget .slider-val{font-variant-numeric:tabular-nums;font-size:.85rem}.switch{align-items:center;gap:8px;display:flex}.widget select,.widget input[type=text],.command input,.code-panel textarea{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 8px}.output-panel{flex-direction:column;gap:4px;min-width:0;max-width:100%;display:flex}.output-panel .label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.output-panel pre{white-space:pre;color:#f4efe4;background:#241f18;border-radius:8px;min-height:72px;margin:0;padding:8px;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;line-height:1.35;overflow:auto}.note{color:var(--muted);white-space:pre-wrap;font-size:.85rem}.plot-card{flex-direction:column;gap:4px;min-width:0;max-width:100%;display:flex}.plot-card .label{color:var(--ink);font-size:.82rem;font-weight:650}.plot-card .plot-axes{color:var(--muted);font-size:.72rem}.plot-card canvas{border:1px solid var(--line);background:#fffdf8;border-radius:8px;width:100%;height:150px}.plot-legend{color:var(--muted);flex-wrap:wrap;gap:8px 12px;font-size:.75rem;display:flex}.plot-legend span{align-items:center;gap:4px;display:inline-flex}.plot-legend i{border-radius:2px;width:12px;height:3px;display:inline-block}.code-panel,.info-panel{flex-direction:column;flex:auto;gap:8px;height:100%;min-height:0;padding:12px;display:flex}.info-doc{border:1px solid var(--line);background:#fff;border-radius:10px;flex:auto;min-height:0;padding:20px 28px 36px;line-height:1.55;overflow:auto}.info-doc h1,.info-doc h2,.info-doc h3,.info-doc h4{margin:1.15em 0 .4em;font-family:Palatino,Palatino Linotype,Iowan Old Style,serif;font-weight:600;line-height:1.25}.info-doc h1{font-size:1.55rem}.info-doc h2{font-size:1.22rem}.info-doc h3{font-size:1.05rem}.info-doc>:first-child{margin-top:0}.info-doc p{margin:.7em 0}.info-doc ul,.info-doc ol{margin:.6em 0;padding-left:1.4em}.info-doc li{margin:.2em 0}.info-doc a{color:var(--steel)}.info-doc img{max-width:100%;height:auto}.info-doc blockquote{border-left:3px solid var(--line);color:#4e483f;margin:.8em 0;padding-left:.9em}.info-doc :not(pre)>code{background:var(--ivory-2);border-radius:4px;padding:.05em .3em;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;font-size:.88em}.info-doc pre{color:#f4efe4;background:#241f18;border-radius:8px;margin:.8em 0;padding:10px 12px;overflow:auto}.info-doc pre code{background:0 0;padding:0;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;font-size:.84rem}.info-doc table{border-collapse:collapse;margin:.8em 0}.info-doc th,.info-doc td{border:1px solid var(--line);text-align:left;padding:4px 8px}.info-missing{color:var(--muted);font-style:italic}.world-panel{flex-direction:column;flex:auto;align-items:flex-start;gap:12px;height:100%;min-height:0;padding:12px;display:flex;overflow:auto}.modal-back{z-index:30;background:#12150f8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--ivory);width:min(320px,100% - 32px);color:var(--ink);border-radius:14px;padding:18px 18px 14px;box-shadow:0 18px 50px #00000059}.modal p{margin:0 0 16px;font-size:1rem}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-actions button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;padding:6px 14px}.modal-actions button.apply{background:var(--ink);color:var(--ivory);border-color:var(--ink)}.modal-actions button:disabled{opacity:.45;cursor:not-allowed}.library-modal{flex-direction:column;width:min(440px,100vw - 32px);max-width:calc(100vw - 32px);height:min(480px,100vh - 32px);max-height:calc(100vh - 32px);padding-bottom:18px;display:flex;position:relative;overflow:hidden}.library-modal p{margin-bottom:8px;font-weight:600}.library-path{color:var(--muted);word-break:break-word;margin-bottom:8px;font-size:.78rem}.library-error{color:var(--danger);margin-bottom:8px;font-size:.82rem}.library-list{border:1px solid var(--line);background:#fff;border-radius:8px;flex:auto;min-height:0;margin:0 0 12px;padding:0;list-style:none;overflow:auto}.library-list button{text-align:left;border:0;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;width:100%;padding:8px 10px}.library-list button:hover{background:var(--ivory-2)}.library-list button.selected{box-shadow:inset 3px 0 0 var(--ember);background:#f3e2c2}.library-list button.selected:hover{background:#ead4ac}.library-resize{z-index:2;touch-action:none;position:absolute}.library-resize.x{cursor:col-resize;width:10px;height:100%;top:0;right:0}.library-resize.y{cursor:row-resize;width:100%;height:10px;bottom:0;left:0}.library-resize.both{cursor:nwse-resize;background:linear-gradient(135deg,#0000 50%,#c4491db3 50%);width:18px;height:18px;bottom:0;right:0}.library-resize:focus-visible{outline:2px solid var(--ember);outline-offset:-2px}body.library-resizing,body.library-resizing *{cursor:nwse-resize!important}.library-empty{color:var(--muted);padding:16px 10px}.code-panel textarea{resize:none;flex:auto;height:100%;min-height:0;font-family:ui-monospace,Cascadia Code,Source Code Pro,monospace;font-size:.86rem;line-height:1.45}.code-actions{align-items:center;gap:8px;display:flex}.code-actions .err{color:var(--danger);font-size:.85rem}.dynamics-note{color:var(--muted);margin:0;font-size:.82rem}.dynamics-split{flex:auto;grid-template-rows:minmax(0,1.15fr) minmax(0,.85fr);gap:8px;min-height:0;display:grid}.dynamics-block{min-height:0;color:var(--muted);flex-direction:column;gap:4px;font-size:.78rem;display:flex}.dynamics-panel .dynamics-block textarea{resize:none;background:#fff;flex:auto;height:100%;min-height:0}.dynamics-panel .dynamics-block textarea[readonly]{background:#f7f4ee}.command{box-sizing:border-box;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 280px;gap:10px;min-height:0;padding:12px;display:grid;overflow:hidden}.command pre{white-space:pre-wrap;color:#f4efe4;background:#241f18;border-radius:8px;height:100%;min-height:0;max-height:none;margin:0;padding:8px 10px;font-family:ui-monospace,Cascadia Code,monospace;font-size:.82rem;overflow:auto}.command form{flex-direction:column;gap:8px;display:flex}.command .hint{color:var(--muted);font-size:.78rem}.command .err{color:var(--danger);font-size:.82rem}.empty,.loading{color:var(--muted);padding:28px 8px}@media (width<=860px){.topbar{flex-wrap:wrap;justify-content:center;row-gap:8px;display:flex}.topbar-left{flex-wrap:wrap;flex:100%}.topbar-right{flex:none}.command{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.canvas-wrap{min-height:180px}}
