.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--bg: #f6f4ef;--surface: #ffffff;--surface-2: #efece4;--text: #1c1917;--muted: #57534e;--border: #d6d3cb;--accent: #c2410c;--accent-text: #ffffff;--focus: #1d4ed8;--ok: #166534;--warn: #92400e;--bad: #b91c1c;--ok-bg: #dcfce7;--warn-bg: #fef3c7;--bad-bg: #fee2e2;--part: #e7e5e4;--part-stroke: #44403c;--radius: 8px;--gutter: 16px;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #14120f;--surface: #1e1b17;--surface-2: #2a2620;--text: #f5f5f4;--muted: #b8b2a7;--border: #413c33;--accent: #fb923c;--accent-text: #1c1917;--focus: #93c5fd;--ok: #86efac;--warn: #fcd34d;--bad: #fca5a5;--ok-bg: #14301c;--warn-bg: #3a2c0e;--bad-bg: #3b1515;--part: #3a352d;--part-stroke: #d6d3cb}}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1,h2,h3{line-height:1.2;margin:0 0 .5rem}h1{font-size:1.35rem}h2{font-size:1.1rem}h3{font-size:1rem;margin-top:1rem}p{margin:.4rem 0}code{font-family:ui-monospace,Cascadia Code,Menlo,monospace;font-size:.85em;background:var(--surface-2);padding:0 .25em;border-radius:4px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:var(--gutter);top:-4rem;background:var(--accent);color:var(--accent-text);padding:.5rem .75rem;border-radius:var(--radius);z-index:10}.skip-link:focus{top:var(--gutter)}.app-header{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;padding:.75rem var(--gutter);background:var(--surface);border-bottom:1px solid var(--border)}.app-header h1{margin:0}.app-header nav{display:flex;gap:.25rem;flex:1}.app-header nav button[aria-current=page]{background:var(--surface-2);font-weight:600;border-color:var(--accent)}.units{display:flex;gap:.75rem;border:0;padding:0;margin:0}.units label{display:inline-flex;align-items:center;gap:.3rem;min-height:44px}main{padding:var(--gutter);max-width:1500px;margin:0 auto}main:focus{outline:none}.layout{display:grid;gap:var(--gutter);grid-template-columns:minmax(0,1fr);align-items:start}.col{display:grid;gap:var(--gutter);min-width:0}.panel--wide{grid-column:1 / -1}@media (min-width: 760px){.layout{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.col--sim{grid-column:1 / -1}}@media (min-width: 1180px){.layout{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr) minmax(0,1fr)}.col--sim{grid-column:auto}}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--gutter);min-width:0}.muted{color:var(--muted)}.small{font-size:.85rem}button,input,select{font:inherit;color:inherit}button{min-height:44px;padding:.35rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer}button:hover:not(:disabled){background:var(--surface-2)}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}button.danger{color:var(--bad);border-color:var(--bad)}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;margin:.75rem 0}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:.75rem 0;padding:.5rem .75rem .75rem}legend{padding:0 .4rem;font-weight:600}.field{display:grid;gap:.2rem;margin:.55rem 0}.field>*{min-width:0}.field label{font-size:.9rem;overflow-wrap:anywhere;font-weight:500}.field input[type=text],.field input[type=number],.field select{min-height:44px;padding:.35rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;min-width:0}.field input[type=file]{padding:.35rem 0;max-width:100%;width:100%}.field--check{grid-template-columns:auto 1fr;align-items:center;column-gap:.5rem}.field--check input{width:22px;height:22px}.field--check .field__hint{grid-column:2}.field__hint{font-size:.8rem;color:var(--muted)}.field__error{font-size:.85rem;color:var(--bad)}.field--invalid input,.field--invalid select{border-color:var(--bad);border-width:2px}.component-list{list-style:none;margin:0;padding:0;display:grid;gap:.25rem}.component-list__child{margin-left:1.25rem}.component-list__item{display:flex;align-items:center;gap:.5rem;width:100%;text-align:left}.component-list__item.is-active{border-color:var(--accent);border-width:2px;background:var(--surface-2)}.component-list__kind{font-size:.8rem;color:var(--muted);min-width:7.5em}.component-list__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{display:inline-block;min-width:1.5em;padding:0 .4em;border-radius:999px;text-align:center;font-size:.8rem;font-weight:700}.badge--error{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad)}.add-bar{margin-top:1rem}.add-bar__buttons{display:flex;flex-wrap:wrap;gap:.4rem}.rocket-view{margin:0}.rocket-view svg{width:100%;height:auto;max-height:340px;background:var(--surface-2);border-radius:var(--radius)}.rocket-view figcaption{font-size:.8rem;color:var(--muted);margin-top:.4rem}.rocket-view .part{fill:var(--part);stroke:var(--part-stroke);stroke-width:1;vector-effect:non-scaling-stroke}.rocket-view .part polygon{fill:var(--part);stroke:var(--part-stroke);stroke-width:1;vector-effect:non-scaling-stroke}.rocket-view .part--mount{fill:none;stroke-dasharray:4 3}.rocket-view .part--chute{fill:var(--warn-bg)}.rocket-view .part--fin,.rocket-view .part--fin polygon{fill:var(--surface)}.rocket-view .is-selected,.rocket-view .is-selected polygon{stroke:var(--accent);stroke-width:3}.rocket-view .axis{stroke:var(--border);stroke-dasharray:6 4;stroke-width:1;vector-effect:non-scaling-stroke}.rocket-view .marker line{stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:3 3}.rocket-view .marker--cg line,.rocket-view .marker--cg circle{stroke:#1d4ed8}.rocket-view .marker--cg circle{fill:var(--surface);stroke-width:2}.rocket-view .marker--cp line,.rocket-view .marker--cp circle{stroke:var(--accent)}.rocket-view .marker--cp circle{fill:var(--accent)}.rocket-view .marker text{font-size:11px;font-weight:700;fill:var(--text)}.stats,.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem;margin:0}.stats>div,.cards>div{background:var(--surface-2);border-radius:var(--radius);padding:.5rem .65rem}.stats dt,.cards dt{font-size:.8rem;color:var(--muted)}.stats dd,.cards dd{margin:0;font-size:1.05rem;font-weight:650;font-variant-numeric:tabular-nums}.stats__margin--ok{background:var(--ok-bg)!important}.stats__margin--warn{background:var(--warn-bg)!important}.stats__margin--bad{background:var(--bad-bg)!important}.issue-list{margin:.5rem 0;padding-left:1.2rem;font-size:.9rem}.issue-list--error{color:var(--bad)}.issue-list--warning{color:var(--warn)}.issue-box{border:1px solid var(--bad);background:var(--bad-bg);border-radius:var(--radius);padding:.5rem .75rem;margin:.75rem 0}.notices{padding:0 var(--gutter)}.notice{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:.5rem 0;padding:.5rem .75rem;border-radius:var(--radius);border:1px solid var(--border)}.notice button{min-height:32px;min-width:32px;padding:0 .5rem}.notice--info{background:var(--surface-2)}.notice--warning{background:var(--warn-bg);border-color:var(--warn)}.notice--error{background:var(--bad-bg);border-color:var(--bad)}.progress{display:flex;align-items:center;gap:.75rem;min-height:1.5rem}progress{width:8rem}.import-report{border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;margin-top:.75rem;background:var(--surface-2)}.motor-list{padding-left:1.2rem;margin:.5rem 0}.status{font-weight:600;padding:.35rem .6rem;border-radius:var(--radius)}.status--ok{background:var(--ok-bg);color:var(--ok)}.status--warn{background:var(--warn-bg);color:var(--warn)}table{border-collapse:collapse;width:100%;font-size:.9rem;font-variant-numeric:tabular-nums}th,td{text-align:left;padding:.3rem .5rem;border-bottom:1px solid var(--border)}.events{max-width:640px}.charts{display:grid;gap:var(--gutter);grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.chart{margin:0;min-width:0}.chart figcaption{font-size:.9rem;margin-bottom:.4rem}.chart__plot{min-height:250px;width:100%;overflow:hidden}.chart .u-legend{font-size:.8rem;color:var(--text)}.chart .uplot .u-label,.chart .uplot .u-title{color:var(--text)}.chart details{margin-top:.4rem;overflow-x:auto}.about ul{padding-left:1.2rem}.about{max-width:820px}.app-footer{padding:1rem var(--gutter);text-align:center;color:var(--muted);font-size:.85rem}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
