:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f4f5f7;--surface:#fff;--surface-2:#eceff1;--text:#1f2328;--muted:#5f6b76;--border:#d0d7de;--accent:#2f6f9f;--accent-text:#fff;--accent-soft:#dbe9f4;--error:#b42318;--error-soft:#fde8e6;--ok:#1a7f37;--warn:#9a6700;--kw:#0550ae;--comment:#6a737d;--label:#8250df;--number:#0a7b5a;--operator:#953800;--mono:ui-monospace, "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;--radius:6px;--sidebar-width:220px}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=dark]{--bg:#0f1419;--surface:#161b22;--surface-2:#1f262e;--text:#e6edf3;--muted:#9aa4ae;--border:#30363d;--accent:#5b9bd5;--accent-text:#0f1419;--accent-soft:#1d3a52;--error:#ff7b72;--error-soft:#3b1a18;--ok:#3fb950;--warn:#d29922;--kw:#79c0ff;--comment:#8b949e;--label:#d2a8ff;--number:#56d364;--operator:#ffa657}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.45}a{color:var(--accent)}button,select,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);padding:6px 12px}button:disabled{cursor:not-allowed;opacity:.6}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.secondary:hover:not(:disabled),button.tab:hover:not(:disabled){background:var(--surface-2)}select{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius);max-width:220px;padding:6px 8px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background:var(--surface);z-index:10;padding:8px;position:absolute;top:8px;left:-999px}.skip-link:focus{left:8px}.app{grid-template-columns:var(--sidebar-width) 1fr;height:100%;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:8px;padding:12px 10px;display:flex;overflow-y:auto}.brand{border-bottom:1px solid var(--border);flex-direction:column;padding:4px 8px 10px;display:flex}.brand-name{font-size:18px;font-weight:700}.brand-sub{color:var(--muted);font-size:12px}.module-list{flex-direction:column;flex:1;gap:2px;margin:0;padding:0;list-style:none;display:flex}.module-link{text-align:left;border-radius:var(--radius);background:0 0;border:none;justify-content:space-between;align-items:center;gap:6px;width:100%;padding:7px 8px;display:flex}.module-link:hover:not(:disabled){background:var(--surface-2)}.module-link.active{background:var(--accent-soft);font-weight:600}.badge{color:var(--muted);border:1px solid var(--border);border-radius:10px;padding:0 6px;font-size:10px}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;gap:2px;padding-top:8px;display:flex}.main{min-width:0;padding:12px;overflow:auto}.workspace{grid-template-columns:minmax(320px,1fr) minmax(360px,1.3fr);gap:12px;height:100%;min-height:0;display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.panel-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.panel-header h2{margin:0;font-size:16px}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.editor-wrapper{flex-direction:column;flex:1;min-height:240px;display:flex}.editor{min-height:200px;font-family:var(--mono);flex:1;grid-template-columns:auto 1fr;font-size:14px;line-height:1.5;display:grid;position:relative}.editor-gutter{text-align:right;color:var(--muted);background:var(--surface-2);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;padding:10px 0;overflow:hidden}.gutter-line{min-width:2.5ch;padding:0 8px}.gutter-line.error{color:var(--error);font-weight:700}.editor-body{min-width:0;position:relative}.editor-highlight,.editor-input{font:inherit;line-height:inherit;white-space:pre;tab-size:4;margin:0;padding:10px 12px;overflow:auto}.editor-highlight{pointer-events:none;color:var(--text);position:absolute;inset:0;overflow:hidden}.editor-input{resize:none;color:#0000;width:100%;height:100%;caret-color:var(--text);background:0 0;border:none;outline:none;position:absolute;inset:0}.editor-input::placeholder{color:var(--muted)}.editor-input:focus{box-shadow:inset 0 0 0 2px var(--accent-soft)}.code-line.error{background:var(--error-soft)}.tok-keyword{color:var(--kw);font-weight:700}.tok-comment{color:var(--comment);font-style:italic}.tok-label{color:var(--label)}.tok-number{color:var(--number)}.tok-operator{color:var(--operator)}.editor-error{color:var(--error);background:var(--error-soft);border-top:1px solid var(--border);margin:0;padding:8px 12px;font-size:14px}.notice{color:var(--warn);margin:0;padding:8px 12px}.results-panel .tabs{flex-direction:column;flex:1;min-height:0;display:flex}.tabs-list{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:2px;padding:6px 8px 0;display:flex}.tab{border-radius:var(--radius) var(--radius) 0 0;color:var(--muted);background:0 0;border:1px solid #0000;border-bottom:none;padding:6px 12px}.tab.active{color:var(--text);background:var(--surface);border-color:var(--border);margin-bottom:-1px;font-weight:600}.tabs-panel{flex:1;min-height:0;padding:12px;overflow:auto}.empty{color:var(--muted);padding:16px 12px}.report{font-family:var(--mono);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);margin:0;padding:10px 12px;font-size:13px;line-height:1.4;overflow:auto}.report-header{justify-content:space-between;align-items:center;gap:8px;margin:12px 0 6px;display:flex}.report-header h3{margin:0;font-size:15px}.summary{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.summary dt{color:var(--muted)}.summary dd{margin:0}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th,.data-table td{border:1px solid var(--border);text-align:left;padding:5px 8px}.data-table th{background:var(--surface-2)}.about{max-width:760px;padding:8px 12px}.about h1{margin-top:0;font-size:22px}@media (max-width:860px){.app{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border);flex-flow:wrap;align-items:center;padding:8px}.brand{border-bottom:none;padding:0 8px}.module-list{flex-flow:wrap}.module-link{width:auto}.module-list .module-link:disabled{display:none}.sidebar-footer{border-top:none;flex-direction:row;padding-top:0}.workspace{grid-template-columns:1fr;height:auto}.editor-wrapper{min-height:220px}.editor{min-height:180px}}.options{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 16px;padding:8px 12px;display:flex}.options label{color:var(--muted);align-items:center;gap:6px;font-size:14px;display:flex}.switch{align-items:center;gap:6px;font-size:14px;display:inline-flex}.status{border-radius:var(--radius);background:var(--surface-2);border-left:4px solid var(--muted);margin:0 0 10px;padding:8px 12px;font-weight:600}.status-optimal{border-left-color:var(--ok)}.status-unbounded,.status-infeasible{border-left-color:var(--error)}.messages{margin:0 0 10px;font-size:14px}.messages ul{margin:6px 0 0;padding-left:20px}.segmented{border:1px solid var(--border);border-radius:var(--radius);display:inline-flex;overflow:hidden}.segmented button{background:var(--surface);border:none;border-radius:0}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--accent-soft);font-weight:600}.hint{color:var(--muted);font-size:13px}.note{background:var(--surface-2);border-radius:var(--radius);margin:8px 0;padding:8px 12px;font-size:14px}.note-warning{border-left:4px solid var(--warn)}.note-error{border-left:4px solid var(--error);color:var(--error)}.table-scroll{overflow-x:auto}.data-table.numeric td{text-align:right;font-family:var(--mono);white-space:nowrap;font-size:13px}.data-table.numeric td.text{text-align:left;font-family:var(--sans)}.tableau-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.position{color:var(--muted);padding:0 6px;font-size:14px}.tableau .objective-row{background:var(--surface-2);font-weight:600}.tableau .col-entering{background:color-mix(in srgb, var(--accent) 14%, transparent)}.tableau .row-leaving{background:color-mix(in srgb, var(--warn) 14%, transparent)}.tableau td.pivot{background:var(--accent);color:var(--accent-text);outline:2px solid var(--accent);font-weight:700}.tableau .ratio-min{color:var(--warn);font-weight:700}.guided-history{color:var(--muted);padding-left:20px;font-size:13px}.graph-tab{flex-direction:column;gap:12px;display:flex}.graph-side{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;gap:12px 20px;display:grid}.graph-toolbar{flex-wrap:wrap;grid-column:1/-1;justify-content:space-between;gap:8px;display:flex}.graph{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;width:100%;height:auto}.graph-side{font-size:14px}.z-control label{margin-bottom:4px;font-weight:600;display:block}.z-control input[type=range]{flex:1;min-width:80px}.graph-status{margin:0;padding-left:18px}.legend ul{margin:4px 0;padding:0;list-style:none}.legend li{font-family:var(--mono);align-items:center;gap:6px;font-size:12px;display:flex}.swatch{border-radius:3px;flex:none;width:14px;height:14px;display:inline-block}.overrides{border:1px solid var(--warn);border-radius:var(--radius);padding:8px}.editor-grid input.cell,.editor-grid select{width:4.5em;font-family:var(--mono);border:1px solid var(--border);background:var(--surface);border-radius:4px;padding:3px 5px;font-size:13px}.editor-grid input.cell.name{width:6.5em;font-family:var(--sans)}.editor-grid select{width:auto;min-width:4.5em;font-family:var(--sans)}.editor-grid input.cell.invalid,.editor-grid select.invalid{border-color:var(--error);background:var(--error-soft)}.editor-grid tr.invalid-row th{color:var(--error)}.editor-grid th,.editor-grid td{padding:3px 4px}button.icon{color:var(--muted);background:0 0;border:none;margin-left:4px;padding:0 6px;font-size:14px}button.icon:hover{color:var(--error)}.editor-error.inline{background:0 0;border:none;padding:4px 8px}.table-editor,.editor-area{flex:1;padding:10px 12px;overflow:auto}input.short{border:1px solid var(--border);background:var(--surface);width:6em;font-family:var(--mono);border-radius:4px;padding:4px 6px}.chart{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;max-width:720px;height:auto}.tree-scroll{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:10px;overflow:auto}.tree-node{cursor:pointer}.tree-node rect{fill:var(--surface-2);stroke:var(--border);stroke-width:1.5px}.tree-node text{fill:var(--text)}.tree-node.node-best rect{fill:color-mix(in srgb, var(--ok) 25%, var(--surface));stroke:var(--ok)}.tree-node.node-integer rect{fill:color-mix(in srgb, var(--ok) 10%, var(--surface))}.tree-node.node-infeasible rect{fill:color-mix(in srgb, var(--error) 12%, var(--surface));stroke:var(--error)}.tree-node.node-bound rect{fill:color-mix(in srgb, var(--warn) 12%, var(--surface));stroke:var(--warn)}.tree-node.selected rect{stroke:var(--accent);stroke-width:3px}.node-details{margin:10px 0}.transport-tableau td.tcell{vertical-align:top;min-width:64px;height:46px;font-family:var(--mono);font-size:13px;position:relative}.transport-tableau .tcost{color:var(--muted);font-size:11px;position:absolute;top:2px;right:4px}.transport-tableau .talloc{font-weight:700;position:absolute;bottom:4px;left:6px}.transport-tableau .treduced{color:var(--muted);font-style:italic;position:absolute;bottom:4px;left:6px}.transport-tableau .tsign{font-weight:700;position:absolute;top:2px;left:4px}.transport-tableau td.basic{background:color-mix(in srgb, var(--accent) 10%, transparent)}.transport-tableau td.cycle-plus{outline:2px solid var(--ok);outline-offset:-2px}.transport-tableau td.cycle-minus{outline:2px solid var(--warn);outline-offset:-2px}.transport-tableau td.entering{background:color-mix(in srgb, var(--ok) 22%, transparent)}.transport-tableau td.leaving{background:color-mix(in srgb, var(--warn) 22%, transparent)}.transport-tableau td.total,.transport-tableau th .potential{color:var(--muted);font-size:12px;font-weight:400}.step-list{padding-left:20px;font-size:13px}.messages-list{margin:0 0 8px;padding-left:20px;font-size:14px}.hungarian th.covered,.hungarian tr.covered th,.hungarian tr.covered td,.hungarian td.covered{background:color-mix(in srgb, var(--warn) 18%, transparent)}.hungarian td.zero{font-weight:700}.hungarian td.assigned{outline:2px solid var(--ok);outline-offset:-2px}.graph-scroll{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:10px;overflow:auto}.network .net-arc path{stroke:var(--muted);stroke-width:1.6px}.network .net-arc.solution path{stroke:var(--ok);stroke-width:3.5px}.network .net-arc.flow path{stroke:var(--accent);stroke-width:2.4px}.network .net-arc.solution.flow path{stroke:var(--ok)}.network .net-arc.current path{stroke:var(--warn)}.network .net-arc.rejected path{stroke:var(--error);stroke-dasharray:6 4;stroke-width:2.4px}.network .net-arc.cut path{stroke:var(--error);stroke-dasharray:8 4;stroke-width:2.6px}.network .net-arc-label{fill:var(--text);paint-order:stroke;stroke:var(--surface);stroke-width:3px}.network .net-node circle{fill:var(--surface-2);stroke:var(--text);stroke-width:1.5px}.network .net-node text{fill:var(--text)}.network .net-node.permanent circle{fill:color-mix(in srgb, var(--ok) 25%, var(--surface))}.network .net-node.temporary circle{fill:color-mix(in srgb, var(--warn) 25%, var(--surface))}.network .net-node.settled circle{stroke:var(--accent);stroke-width:3.5px}.network .net-node.source-side circle{fill:color-mix(in srgb, var(--accent) 25%, var(--surface))}.network .net-node.sink-side circle{fill:color-mix(in srgb, var(--error) 20%, var(--surface))}.network .net-node-label{fill:var(--accent);font-weight:600}.aon .aon-node rect{fill:var(--surface-2);stroke:var(--border);stroke-width:1.5px}.aon .aon-node line{stroke:var(--border)}.aon .aon-node text{fill:var(--text)}.aon .aon-node text.muted{fill:var(--muted)}.aon .aon-node.critical rect{stroke:var(--error);stroke-width:2.5px;fill:color-mix(in srgb, var(--error) 10%, var(--surface))}.aon .aon-edge{stroke:var(--muted);stroke-width:1.6px}.aon .aon-edge.critical{stroke:var(--error);stroke-width:3px}.gantt .gantt-grid{stroke:var(--border)}.gantt .muted{fill:var(--muted)}.gantt text{fill:var(--text)}.gantt .gantt-bar{fill:var(--accent)}.gantt .gantt-bar.critical{fill:var(--error)}.gantt .gantt-slack{fill:var(--muted);opacity:.35}.gantt .gantt-text{fill:var(--accent-text)}tr.critical-row th,tr.critical-row td{color:var(--error);font-weight:600}.form-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));align-items:end;gap:8px 16px;display:grid}.form-grid label{color:var(--muted);flex-direction:column;gap:4px;font-size:14px;display:flex}.form-grid label input,.form-grid label select{width:100%;color:var(--text)}.form-grid h3{grid-column:1/-1;margin:8px 0 0;font-size:15px}.form-grid .switch{color:var(--text);flex-direction:row;align-items:center}.form-grid .switch input{width:auto}.form-grid .table-scroll{grid-column:1/-1}input.short.invalid{border-color:var(--error);background:var(--error-soft)}svg.decision-tree .tree-decision rect,svg.decision-tree .tree-chance circle{fill:var(--surface-2);stroke:var(--text);stroke-width:1.5px}svg.decision-tree .tree-terminal text{fill:var(--muted)}svg.decision-tree .tree-branch{stroke:var(--muted);stroke-width:1.6px;fill:none}svg.decision-tree .tree-branch.chosen{stroke:var(--ok);stroke-width:3px}svg.decision-tree .tree-branch.rejected{stroke:var(--muted);stroke-dasharray:2 4}svg.decision-tree text{fill:var(--text)}svg.game-chart .game-line{stroke:var(--muted);stroke-width:1.6px;fill:none}svg.game-chart .game-envelope{stroke:var(--accent);stroke-width:3px;fill:none}svg.game-chart .game-optimum{fill:var(--warn);stroke:var(--text)}svg.game-chart text{fill:var(--text)}
