:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151c;--surface:#1a1e28;--border:#2c3240;--text:#e6e9f0;--muted:#98a1b3;--accent:#6ea8fe;--danger:#ff8a80;--danger-border:#7a3b38;--calm:#8fd19e;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.4}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--text);margin:0}.app{grid-template-rows:auto auto 1fr;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px 24px;padding:24px;display:grid}.panel-header,.transport,.boxes{grid-column:2}.stage{grid-area:1/1/span 3}.stat-list{font-variant-numeric:tabular-nums;gap:4px;margin:0 0 8px;display:grid}.stat-list div{justify-content:space-between;gap:12px;display:flex}.stat-list dt{color:var(--muted)}.stat-list dd{margin:0;font-weight:600}.lane-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}.lane-table th,.lane-table td{border-bottom:1px solid var(--border);text-align:right;padding:4px 6px 4px 0;font-weight:400}.lane-table th:first-child,.lane-table td:first-child{text-align:left}.lane-table thead th{color:var(--muted);font-size:.8rem}.stage{flex-direction:column;align-items:center;gap:12px;height:calc(100vh - 48px);min-height:420px;display:flex;position:sticky;top:24px}.stage-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px 24px;width:100%;display:flex}.view-controls{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.zoom{gap:4px;display:flex}.zoom button{min-width:36px;padding:7px 10px}.road{flex:1;width:100%;min-height:0;position:relative}.road canvas{width:100%;height:100%;display:block}.readout{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:4px 32px;margin:0;display:flex}.readout dt{color:var(--muted);font-size:.8rem}.readout dd{min-width:5.5em;margin:0;font-size:1.05rem;font-weight:600}.legend-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 20px;width:100%;font-size:.85rem;display:flex}.multi{position:relative}.multi summary{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:4px 8px}.multi summary:hover{border-color:var(--muted)}.multi-menu{z-index:3;border:1px solid var(--border);background:var(--surface);white-space:nowrap;border-radius:8px;gap:8px;padding:10px 12px;display:grid;position:absolute;bottom:calc(100% + 6px);right:0}.multi-menu label{color:var(--text);cursor:pointer;align-items:center;gap:6px;display:flex}.multi-menu input{accent-color:var(--accent)}.vector-swatch{border-radius:1px;width:14px;height:3px}.legend-row select{padding:4px 6px;font-size:.85rem}.legend{width:min(100%,420px);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;flex:0 380px;align-items:center;gap:10px;font-size:.85rem;display:flex}.legend-bar{border-radius:5px;flex:1;height:10px}.status{min-height:1.4em;color:var(--muted);text-align:center;margin:0}.status.fault{color:var(--danger)}.boxes{flex-direction:column;gap:16px;display:flex}.title-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.title-actions{gap:6px;display:flex}.title-row h1{margin:0 4px 0 0;font-size:1.4rem}.title-row .icon-button{min-width:32px;color:var(--muted);padding:5px 7px}.title-row .icon-button:hover{color:var(--text)}.panel-header p{color:var(--muted);margin:2px 0 0}.panel-header .hint{margin-top:6px;font-size:.85rem}.ride-along{width:100%}.ride-along canvas{border:1px solid var(--border);cursor:pointer;border-radius:10px;width:100%;height:130px;display:block}.ride-along-foot{color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-top:8px;font-size:.9rem;display:flex}.ride-along-readout{flex-wrap:wrap;gap:4px 18px;display:flex}#ride-along-car{color:var(--text)}.ride-along-actions{gap:8px;display:flex}.ride-along-actions button,.ride-along-foot button{padding:5px 12px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.transport{flex-wrap:wrap;align-items:center;gap:8px 4px;display:flex}.transport>button,.skips button{min-width:32px;padding-left:6px;padding-right:6px}.skips{gap:4px;display:inline-flex}.skips button.in-progress{--progress:0%;border-color:var(--accent);background:linear-gradient(to right, var(--accent) var(--progress), var(--surface) var(--progress));color:var(--text);opacity:1;cursor:wait}.icon-caption{letter-spacing:-.02em;margin-left:2px;font-size:.8rem;font-weight:600}.rate{flex:100%;min-width:0;margin-top:2px}.slider-ticks{height:1.1em;color:var(--muted);font-variant-numeric:tabular-nums;font-size:.7rem;position:relative}.slider-ticks span{white-space:nowrap;position:absolute;transform:translate(-50%)}button,select{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:7px 14px}select{padding:7px 8px}.field{color:var(--muted);align-items:center;gap:8px;display:flex}.choice{margin-bottom:14px}.choice .note{margin-top:10px}.choice-options{flex-wrap:wrap;gap:8px 20px;display:flex}.choice-options label{cursor:pointer;align-items:center;gap:6px;display:flex}.choice-options input{accent-color:var(--accent)}button:hover,select:hover{border-color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}.icon-button{justify-content:center;align-items:center;min-width:34px;padding:8px 7px;display:inline-flex}.help{width:26px;height:26px;color:var(--muted);border-radius:50%;padding:0;font-weight:600;line-height:1}.model{justify-content:space-between;margin-bottom:14px}.model label{align-items:center;gap:8px;display:flex}select:disabled{color:var(--muted);cursor:not-allowed;opacity:.8}.dialog-body h3{margin:18px 0 8px;font-size:1rem}.formula{background:var(--bg);border-radius:8px;padding:10px 14px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.9rem;line-height:1.7}button.running{border-color:var(--accent);background:var(--accent);color:var(--text)}.derived{gap:6px;margin:14px 0 0;display:grid}.derived div{justify-content:space-between;gap:12px;display:flex}.derived dt{color:var(--muted)}.derived dd{font-variant-numeric:tabular-nums;margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}fieldset{border:1px solid var(--border);background:var(--surface);border-radius:10px;margin:0;padding:12px 16px 16px}.box{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:10px 16px 16px}.box.collapsed{padding-bottom:10px}.box.collapsed .box-body{display:none}.box-head{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;display:flex}.box-head h2{margin:0;font-size:1rem}.box-actions{gap:4px;display:flex}.box-actions .icon-button{min-width:28px;color:var(--muted);padding:4px 5px}.box-actions .icon-button:hover{color:var(--text)}.box-body{margin-top:12px}.box-body h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px;font-size:.8rem}.box-body .stat-list+h3,.box-body .note+h3{margin-top:14px}legend{padding:0 6px;font-weight:600}.sliders{gap:12px;display:grid}.sliders+button{margin-top:14px}.slider{gap:4px;display:grid}.slider-head{justify-content:space-between;gap:12px;display:flex}.slider output{color:var(--muted);font-variant-numeric:tabular-nums}.slider input{width:100%;accent-color:var(--accent);margin:0}.note{color:var(--muted);margin:12px 0 0;font-size:.85rem}.error{color:var(--danger);margin:10px 0 0;font-size:.9rem}dialog{border:1px solid var(--border);background:var(--surface);width:min(640px,100vw - 32px);max-height:calc(100vh - 48px);color:var(--text);border-radius:12px;padding:0}dialog::backdrop{background:#05070cb3}.dialog-body{padding:20px 24px 24px}.dialog-body p{margin:0 0 14px}.dialog-body .note{margin:14px 0 0}.dialog-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.dialog-head h2{margin:0;font-size:1.2rem}.dialog-close{background:0 0;padding:4px 10px}.table-scroll{overflow-x:auto}.presets{border-collapse:collapse;font-variant-numeric:tabular-nums;white-space:nowrap;width:100%}.presets th,.presets td{border-bottom:1px solid var(--border);text-align:left;padding:6px 12px 6px 0;font-weight:400}.presets thead th{color:var(--muted);font-size:.85rem}.presets tbody th{font-weight:600}.outcome{text-align:left;width:100%;padding:5px 10px}.outcome.absorbed{color:var(--calm)}.outcome.jam{border-color:var(--danger-border);color:var(--danger)}.info{margin:0}.info dt{margin-top:14px;font-weight:600}.info dt:first-child{margin-top:0}.info dd{color:var(--muted);margin:2px 0 0}.info+p{margin-top:16px}.param .slider-head{align-items:baseline}.param-name{flex:auto}.param output{white-space:nowrap}.family-chip{color:var(--muted);border-radius:999px;flex:none;padding:0 7px;font-size:.75rem;line-height:1.5}.family-chip:hover{color:var(--text)}.distribution-controls{gap:6px;display:grid}.sub-slider{align-items:center;gap:8px;display:flex}.sub-slider input,.sub-slider .interval{flex:auto;min-width:0}.sub-slider input{width:100%;accent-color:var(--accent);margin:0}.sub-label{width:2.6em;color:var(--muted);flex:none;font-size:.8rem}.sub-slider output{min-width:5.5em;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;flex:none}.points-summary{color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:.85rem}.interval{height:20px;position:relative}.interval:before,.interval-fill{content:"";border-radius:2px;height:4px;position:absolute;top:8px}.interval:before{background:var(--border);left:0;right:0}.interval-fill{background:var(--accent)}.interval input{appearance:none;pointer-events:none;background:0 0;width:100%;height:20px;margin:0;position:absolute;inset:0}.interval input::-webkit-slider-runnable-track{background:0 0;height:20px}.interval input::-moz-range-track{background:0 0;height:20px}.interval input::-webkit-slider-thumb{appearance:none;cursor:ew-resize;pointer-events:auto;background-color:#0000;background-repeat:no-repeat;border:0;border-radius:0;width:16px;height:20px}.interval input::-moz-range-thumb{cursor:ew-resize;pointer-events:auto;background-color:#0000;background-repeat:no-repeat;border:0;border-radius:0;width:16px;height:20px}.interval-low::-webkit-slider-thumb{background-image:linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text));background-position:50%,100% 0,100% 100%;background-size:3px 100%,9px 3px,9px 3px}.interval-low::-moz-range-thumb{background-image:linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text));background-position:50%,100% 0,100% 100%;background-size:3px 100%,9px 3px,9px 3px}.interval-high::-webkit-slider-thumb{background-image:linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text));background-position:50%,0 0,0 100%;background-size:3px 100%,9px 3px,9px 3px}.interval-high::-moz-range-thumb{background-image:linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text)), linear-gradient(var(--text), var(--text));background-position:50%,0 0,0 100%;background-size:3px 100%,9px 3px,9px 3px}.interval input:focus-visible{outline:none}.interval input:focus-visible::-webkit-slider-thumb{outline:2px solid var(--accent)}.interval input:focus-visible::-moz-range-thumb{outline:2px solid var(--accent)}.distribution-dialog{width:min(520px,100vw - 32px)}.editor-hint{margin:0 0 12px}.distribution-plot{--followed:#ffd866;border:1px solid var(--border);background:var(--bg);border-radius:8px;width:100%;height:150px;margin-top:14px;display:block}.plot-caption{margin:6px 0 14px}.point-row{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.point-row .sub-slider output{min-width:3em}.point-row .sub-slider:first-child output{min-width:4.5em}.point-remove{padding:2px 8px}.distribution-dialog .distribution-controls>button{justify-self:start;margin-top:4px}.seed-row{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:8px;display:flex}.seed-row input{border:1px solid var(--border);background:var(--bg);width:11em;color:var(--text);font:inherit;font-variant-numeric:tabular-nums;border-radius:6px;padding:6px 8px}.seed-row output{color:var(--text);font-variant-numeric:tabular-nums}.ride-along-scale{margin-top:10px}.editor-actions{gap:8px;margin-top:18px;display:flex}.editor-actions button:first-child{margin-right:auto}button.primary{border-color:var(--accent);background:var(--accent);color:var(--text)}.driver-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.driver-table th,.driver-table td{border-bottom:1px solid var(--border);text-align:left;padding:5px 12px 5px 0;font-weight:400}.driver-table thead th{color:var(--muted);font-size:.85rem}.driver-table .varies td{color:var(--accent)}#ride-along-driver:empty{display:none}@media (width<=860px){.app{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px}.panel-header,.transport,.boxes,.stage{grid-area:auto/1}.panel-header{order:0}.stage{order:1}.transport{z-index:2;border-top:1px solid var(--border);background:var(--bg);order:2;margin:0 -16px -16px;padding:10px 16px 14px;position:sticky;bottom:0}.transport button{min-width:36px;padding-left:8px;padding-right:8px;font-size:.9rem}.boxes{order:3}.ride-along canvas{height:100px}.stage{height:auto;min-height:0;position:static}.road{flex:none;height:min(100vw - 32px,45vh)}}@media (width<=600px){.dialog-body{padding:16px}.presets{white-space:normal;font-size:.85rem}.presets th,.presets td{padding-right:8px}.outcome{padding:4px 6px}}
