:root{--bg:#16181c;--panel:#1e2126;--panel-2:#252930;--border:#33383f;--text:#e6e6e6;--dim:#9aa0a6;--accent:#e8a33d;--accent-2:#4fc3ff;--err:#ff5a5a;--warn:#ffc048;--ok:#5ad19a;--info:#7fb2ff;--input-bg:#121417;--active-bg:#3a2f1c;--active-text:#ffd79a;--neg:#ff8a8a;--pos:#8fe0b0;--overlay:#101215d9;--shadow:0 4px 16px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}:root[data-theme=light]{--bg:#eef0f3;--panel:#fff;--panel-2:#f2f4f7;--border:#d3d8de;--text:#1d1f23;--dim:#5f6670;--accent:#c27712;--accent-2:#0a84d6;--err:#d62828;--warn:#b26b00;--ok:#1f8a4c;--info:#2f6fcf;--input-bg:#fff;--active-bg:#fdecd2;--active-text:#7a4a00;--neg:#c62828;--pos:#1f7a42;--overlay:#ffffffe6;--shadow:0 4px 16px #00000026;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root,.app-root{height:100%;margin:0;overflow:hidden}body{background:var(--bg)}a{color:var(--accent-2)}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);font:inherit;cursor:pointer;border-radius:4px;padding:4px 9px}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}button.primary{background:var(--accent);color:#1b1b1b;border-color:var(--accent)}button.danger:hover:not(:disabled){border-color:var(--err);color:#ffb3b3}button.small{padding:2px 7px;font-size:12px}.link-button{color:var(--accent-2);background:0 0;border:none;padding:0 4px}input,select,textarea{background:var(--input-bg);color:var(--text);border:1px solid var(--border);font:inherit;border-radius:4px;min-width:0;padding:3px 6px}input:focus,select:focus{outline:1px solid var(--accent)}input[type=color]{width:40px;height:22px;padding:0}kbd{color:var(--dim);border:1px solid var(--border);border-radius:3px;margin-left:5px;padding:0 3px;font-size:10px}code{color:var(--dim);font-size:11px}.dim{color:var(--dim)}.small-text{font-size:12px}.pad{padding:8px 12px}.neg{color:var(--neg)}.pos{color:var(--pos)}.spacer{flex:1}.boot{height:100%;color:var(--dim);place-items:center;display:grid}.workspace{flex-direction:column;height:100%;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:6px 10px;display:flex}.brand{color:var(--accent);background:0 0;border:none;font-weight:700}.project-name{width:200px;font-weight:600}.modes{gap:4px;margin-left:12px;display:flex}.modes small{color:var(--dim);font-size:10px}.save-status{color:var(--dim);text-align:right;min-width:150px;font-size:12px}.save-pending,.save-saving{color:var(--warn)}.save-error{color:var(--err)}.factory-tabs{background:var(--panel);border-bottom:1px solid var(--border);gap:4px;padding:4px 10px 0;display:flex}.factory-tabs>button:not(.small){border-bottom-width:3px;border-radius:4px 4px 0 0}.main{flex:1;min-height:0;display:flex}.panel{background:var(--panel);flex:none;width:280px;overflow-y:auto}.panel-left{border-right:1px solid var(--border)}.panel-right{border-left:1px solid var(--border);width:320px}.center{flex-direction:column;flex:1;min-width:0;display:flex}.editor{flex:1;min-height:0;position:relative}.editor-canvas{cursor:default;outline:none;width:100%;height:100%;display:block}.editor-canvas[data-tool=place],.editor-canvas[data-tool=area],.editor-canvas[data-tool=measure],.editor-canvas[data-tool=link],.editor-canvas[data-tool=paste],.editor-canvas[data-tool=group]{cursor:crosshair}.editor-status{color:var(--dim);background:var(--overlay);pointer-events:none;gap:16px;padding:3px 10px;font-size:11px;display:flex;position:absolute;bottom:0;left:0;right:0}.editor-hint{text-align:right;margin-left:auto}.section{border-bottom:1px solid var(--border)}.section-head{justify-content:space-between;align-items:center;padding:7px 12px 3px;display:flex}.section-head h3{text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:0;font-size:11px}.section-body{padding:4px 12px 10px}.row{grid-template-columns:110px 1fr;align-items:center;gap:6px;margin:3px 0;display:grid}.row-label{color:var(--dim);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.row-value{min-width:0}.row-value>input:not([type=checkbox]):not([type=color]),.row-value>select{width:100%}.number-field{align-items:center;gap:4px;display:flex}.number-field input{text-align:right;width:100%}.suffix{color:var(--dim);white-space:nowrap;font-size:11px}.button-row{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.tool-grid{grid-template-columns:1fr 1fr;gap:4px;margin-bottom:6px;display:grid}.tool-grid button{text-align:left;justify-content:space-between;align-items:center;display:flex}.search{width:100%;margin-bottom:6px}.catalog-group h4{color:var(--accent);margin:8px 0 2px;font-size:11px}.item-list,.floor-list{margin:0;padding:0;list-style:none}.item-list li,.floor-list li{cursor:pointer;border-radius:3px;justify-content:space-between;gap:8px;padding:3px 6px;display:flex}.item-list li:hover,.floor-list li:hover{background:var(--panel-2)}.item-list li.active,.floor-list li.active{background:var(--active-bg);color:var(--active-text)}.item-list li .dim,.floor-list li .dim{text-align:right;white-space:nowrap;font-size:11px}.badge{white-space:nowrap;border:1px solid;border-radius:8px;padding:0 5px;font-size:10px;line-height:15px;display:inline-block}.badge-ok{color:var(--ok)}.badge-warn{color:var(--warn)}.badge-err{color:var(--err)}.badge-info{color:var(--info)}.badge-muted{color:var(--dim)}.bottom{border-top:1px solid var(--border);background:var(--panel);flex-direction:column;display:flex}.bottom.open{height:260px}.bottom-tabs{border-bottom:1px solid var(--border);gap:4px;padding:4px 8px;display:flex}.bottom-body{flex:1;overflow:auto}.findings-filter{align-items:center;gap:12px;padding:6px 12px;display:flex}.finding-list{margin:0;padding:0;list-style:none}.finding{border-top:1px solid var(--border)}.finding-head{cursor:pointer;align-items:center;gap:8px;padding:4px 12px;display:flex}.finding-head:hover{background:var(--panel-2)}.finding-msg{flex:1}.finding-meta{align-items:center;gap:6px;display:flex}.finding-body{padding:2px 12px 10px 70px}.finding-body p{margin:4px 0}.finding.st-acknowledged .finding-msg{opacity:.7}.finding.st-ignored{opacity:.5}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;padding:3px 10px}.table th{color:var(--dim);background:var(--panel);font-size:12px;font-weight:500;position:sticky;top:0}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table .actions{text-align:right;white-space:nowrap}.table .actions button{margin-left:4px}.menu{position:relative}.menu-pop{z-index:20;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;flex-direction:column;gap:4px;min-width:220px;padding:8px 12px;display:flex;position:absolute;top:110%;right:0}.toasts{z-index:50;flex-direction:column;gap:6px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--panel-2);border:1px solid var(--border);border-left:4px solid var(--info);max-width:420px;box-shadow:var(--shadow);cursor:pointer;border-radius:4px;padding:8px 12px}.toast-error{border-left-color:var(--err)}.project-list{max-width:980px;height:calc(100% - 40px);margin:40px auto;padding:0 20px;overflow:auto}.project-list h1{color:var(--accent);margin-bottom:4px}.project-new{gap:8px;margin:20px 0;display:flex}.project-new input{width:260px}.empty{color:var(--dim)}.swatch{vertical-align:middle;border-radius:2px;width:10px;height:10px;display:inline-block}.inline{align-items:center;gap:4px;display:flex}.check-row{align-items:center;gap:6px;margin:2px 0;display:flex}.platforms{margin:6px 0}.platform-row{grid-template-columns:34px 1fr 1fr 26px;align-items:center;gap:4px;margin:2px 0;display:grid}.platform-row.head{color:var(--dim);font-size:11px}.consist{flex-wrap:wrap;gap:4px;margin:6px 0;display:flex}.vehicle{border:1px solid var(--border);border-radius:4px;align-items:center;gap:2px;padding:2px 4px;font-size:12px;display:inline-flex}.vehicle-locomotive{border-color:var(--accent)}.stop{border-top:1px solid var(--border);padding:6px 0}.stop-head{align-items:center;gap:4px;display:flex}.stop-head select{flex:1}.leg{margin:3px 0}h4.sub{color:var(--dim);text-transform:uppercase;margin:10px 0 4px;font-size:11px}.scroll{flex:1;min-height:0;overflow:auto}.production{padding:4px 8px 20px}.production-grid{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.production .row{grid-template-columns:180px 1fr}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:2px 12px;max-height:320px;margin-top:6px;display:grid;overflow:auto}.recipe-opt{align-items:center;gap:6px;font-size:12px;display:flex}.recipe-opt.used span:first-of-type{color:var(--active-text)}.result-banner{border-left:4px solid var(--ok);background:#5ad19a14;border-radius:4px;margin-bottom:8px;padding:8px 10px}.result-banner.bad{border-left-color:var(--err);background:#ff5a5a14}.bottlenecks{margin:0 0 8px;padding:0;list-style:none}.bottlenecks li{margin:3px 0}.assumptions{color:var(--dim);margin-top:10px;font-size:12px}.topbar-actions{align-items:center;gap:6px;display:flex}.mode-count{margin-left:4px}.menu-item{text-align:left;background:0 0;border:none;padding:4px 2px}.menu-item:hover{color:var(--accent)}.link-bar{background:var(--active-bg);color:var(--active-text);border-bottom:1px solid var(--accent);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:6px 12px;display:flex}.link-bar-label{font-weight:600}.link-bar input{width:min(420px,100%);font-family:ui-monospace,monospace}.link-bar .dim{flex:280px}.project-list section{margin-top:28px}.project-list h2{margin-bottom:6px;font-size:1.05em}.upload-offer{border:1px solid var(--accent);border-radius:6px;padding:4px 14px 10px}.segmented{border:1px solid var(--border);border-radius:4px;display:inline-flex;overflow:hidden}.segmented button{border:none;border-right:1px solid var(--border);border-radius:0;padding:2px 9px;font-size:12px}.segmented button:last-child{border-right:none}.editor-toolbar{background:var(--overlay);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:6px;align-items:center;gap:8px;padding:4px 6px;display:flex;position:absolute;top:8px;left:8px}.dialog-backdrop{z-index:60;background:#00000073;place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px;flex-direction:column;width:min(520px,100vw - 32px);max-height:calc(100vh - 64px);display:flex}.dialog.wide{width:min(860px,100vw - 32px)}.dialog-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.dialog-head h2{margin:0;font-size:15px}.dialog-body{padding:6px 4px 12px;overflow:auto}.dialog-tabs{padding:4px 12px 8px}.key-chip{color:var(--text);align-items:center;gap:2px;margin-right:4px;font-size:11px;display:inline-flex}.table.compact td,.table.compact th{padding:2px 6px;font-size:12px}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--panel-2)}.tour-layer{z-index:70;pointer-events:none;position:fixed;inset:0}.tour-dim{background:#00000073;position:fixed;inset:0}.tour-spot{border:2px solid var(--accent);border-radius:6px;transition:all .15s ease-out;position:fixed;box-shadow:0 0 0 9999px #00000073}.tour-pop{pointer-events:auto;background:var(--panel);border:1px solid var(--accent);width:360px;box-shadow:var(--shadow);border-radius:8px;padding:12px 14px;position:fixed}.tour-pop h3{color:var(--accent);margin:4px 0 6px;font-size:15px}.tour-pop p{margin:6px 0;line-height:1.45}.tour-progress{color:var(--dim);font-size:11px}.tour-task{border-left:3px solid var(--info);background:var(--panel-2);padding:4px 8px;font-size:12px}.tour-task.done{border-left-color:var(--ok);color:var(--ok)}.welcome-card{z-index:40;background:var(--panel);border:1px solid var(--accent);width:340px;box-shadow:var(--shadow);border-radius:8px;padding:12px 14px;position:fixed;top:64px;right:18px}.welcome-card h3{color:var(--accent);margin:0 0 6px}.flow-diagram{border:1px solid var(--border);background:var(--bg);border-radius:6px;margin:6px 0}.flow-scroll{cursor:grab;max-height:620px;overflow:auto}.flow-diagram svg{-webkit-user-select:none;user-select:none;display:block}.flow-toolbar{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:4px 8px;display:flex}.flow-diagram rect{stroke-width:1.5px}.fn-title{fill:var(--text);font-size:12px;font-weight:600}.fn-sub{fill:var(--dim);font-size:10.5px}.fn-edge-label{fill:var(--dim);pointer-events:none;font-size:9.5px}g.fn-recipe rect{fill:var(--panel-2);stroke:var(--info)}g.fn-supply rect{fill:var(--panel-2);stroke:var(--ok)}g.fn-target rect{fill:var(--panel-2);stroke:var(--accent)}g.fn-surplus rect{fill:var(--panel-2);stroke:var(--dim);stroke-dasharray:4 3}g.fn-shortfall rect{fill:var(--panel-2);stroke:var(--err)}.legend{gap:8px;font-size:11px;display:flex}.legend span{border:1.5px solid;border-radius:3px;padding:0 5px}.legend .fn-supply{border-color:var(--ok)}.legend .fn-recipe{border-color:var(--info)}.legend .fn-target{border-color:var(--accent)}.legend .fn-surplus{border-color:var(--dim);border-style:dashed}.legend .fn-shortfall{border-color:var(--err)}.signal-legend p{margin:4px 0}.sig-sample{color:#fff;border-radius:3px;padding:0 5px;font-weight:700;display:inline-block}.sig-block{background:#38c172}.sig-path{background:#a77bff}.sim-events{max-height:140px;margin:6px 0 0;padding:0;list-style:none;overflow:auto}.sim-events li{border-top:1px solid var(--border);padding:2px 0}
