:root{--green:#22c670;--deep:#087442;--ink:#122033;--mint:#f4fbf7;--line:#d4e9dd;--muted:#60766c;--stage:clamp(420px,calc(100svh - 390px),650px)}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--mint);color:var(--ink);font:14px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid transparent;background:none}button:disabled{cursor:default;opacity:.4}input,select{accent-color:var(--deep)}button:hover:not(:disabled){filter:brightness(.96)}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--deep);outline-offset:3px}canvas:focus-visible{outline:3px solid var(--green);outline-offset:-3px}input[type=number],input[type=text],select{border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:white;font-size:12px;min-width:0}input:disabled,select:disabled{background:#f2f6f3;color:#83958b}button svg{width:18px;height:18px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip{position:absolute;top:-100px;padding:10px;background:white;z-index:20}.skip:focus{top:0}#lab{max-width:1850px;margin:auto;padding:0 24px}.topbar{height:76px;display:flex;justify-content:space-between;align-items:center;gap:18px}.brand{display:flex;gap:9px;align-items:center;text-decoration:none;color:var(--ink);min-width:165px}.brand img{width:36px;height:39px;object-fit:contain}.brand b{font-size:20px;letter-spacing:-.8px;font-weight:850}.brand b span{color:var(--deep)}.brand small{display:block;font-size:8px;letter-spacing:1.8px;color:var(--muted);margin-top:-3px;font-weight:700}.modes{display:flex;gap:4px;padding:4px;background:#e9f2ed;border:1px solid #dce9e2;border-radius:13px}.modes button{padding:10px 23px;font-size:12px;font-weight:700;border-radius:9px;color:var(--muted)}.modes small{font-size:9px;opacity:.65;margin-right:8px}.modes button[aria-pressed=true]{background:white;color:var(--deep);box-shadow:0 2px 6px #123a2512;border-color:#dce9e2}.help{width:32px;height:32px;border:1px solid var(--line);border-radius:50%;background:white;font-weight:700}.workshop{border:1px solid var(--line);border-radius:19px;background:white;box-shadow:0 10px 36px #123f2610;overflow:hidden}.workshop-heading{display:flex;justify-content:space-between;align-items:center;padding:21px 24px;gap:12px}.eyebrow{display:block;font-size:8px;font-weight:800;letter-spacing:1.5px;color:var(--muted)}.workshop-heading .eyebrow{color:var(--deep)}h1{font-size:30px;letter-spacing:-1.2px;line-height:1.15;margin:6px 0 0;font-weight:850}h1 span{color:var(--green)}.transport{display:flex;gap:6px;align-items:center}.primary,.quiet{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:9px;font-size:12px;font-weight:700}.primary{background:var(--green);border-color:#1cbb66;color:#061914;box-shadow:0 3px 7px #22c67020;min-width:86px}.quiet{background:white;border-color:var(--line)}.quiet[aria-pressed=true]{background:#e8f8ee;color:var(--deep);border-color:#a7dac0}.contextbar{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:11px 24px;border-top:1px solid #edf3ef;border-bottom:1px solid var(--line);background:#fcfefd}.context-copy{display:flex;gap:12px;align-items:center;min-width:0}.context-copy p{font-size:11px;color:var(--muted);margin:0}#state-tag{font-size:8px;font-weight:850;letter-spacing:1px;color:var(--deep);background:#e7f4ec;border-radius:5px;padding:3px 7px}.preset-label{display:flex;gap:9px;align-items:center;font-size:10px;color:var(--muted);white-space:nowrap}.preset-label select{max-width:235px;font-size:11px}.workspace-layout{display:grid;grid-template-columns:85px minmax(0,1fr) 246px;position:relative}.workspace-layout.closed{grid-template-columns:85px minmax(0,1fr)}.parts{border-right:1px solid var(--line);background:#f7fbf8;display:flex;flex-direction:column;align-items:stretch;padding:15px 8px;height:var(--stage);overflow:auto;gap:3px}.parts>.eyebrow{font-size:6px;text-align:center;margin:0 0 8px;letter-spacing:1px}.parts button{border-radius:8px;display:flex;flex-direction:column;align-items:center;font-size:9px;color:var(--muted);padding:6px 1px;gap:3px;min-height:57px}.parts button svg{width:42px;height:31px}.parts button:hover,.parts button.active{background:white;border-color:#b0d7c0;box-shadow:0 2px 5px #123f2610}.parts i{margin:7px;border-top:1px solid var(--line)}.parts p{text-align:center;font-size:8px;line-height:1.7;color:var(--muted);margin:9px 0}.stage{position:relative;height:var(--stage);min-width:0;overflow:hidden;background:#fdfffe}.stage canvas{width:100%;height:100%;display:block;touch-action:none}.stage-top{position:absolute;left:22px;right:18px;top:20px;display:flex;justify-content:space-between;gap:8px;pointer-events:none}.stage-top button{pointer-events:auto}.stage-top .eyebrow{font-size:7px;letter-spacing:1.2px}#selection-note{display:block;color:#82988a;font-size:10px;margin-top:5px}.small{background:white;border:1px solid var(--line);border-radius:7px;padding:6px 10px;font-size:10px;color:var(--muted);white-space:nowrap}.clock{position:absolute;top:68px;left:22px;background:#fffffff2;border:1px solid #dfebe3;border-radius:8px;display:flex;gap:6px;align-items:center;padding:5px 8px;font-variant-numeric:tabular-nums}.clock output{font-size:16px;font-weight:650;min-width:53px;text-align:right;letter-spacing:-.3px}.clock small{font-size:10px;color:var(--muted)}.clock select{font-size:9px;padding:3px 5px;margin-left:5px;border:0;background:#f0f7f2}.record-dot{width:5px;height:5px;border-radius:50%;background:#bfd7c9}.running .record-dot{background:var(--green);box-shadow:0 0 0 3px #22c67018}.stage-hint{position:absolute;bottom:24px;left:23px;font-size:9px;color:var(--muted);max-width:calc(100% - 260px);pointer-events:none}.stage-hint:before{content:'';display:inline-block;width:5px;height:5px;background:var(--green);border-radius:50%;margin-right:7px}.view-tools{display:flex;align-items:center;position:absolute;bottom:16px;right:17px;border:1px solid var(--line);border-radius:9px;background:white;padding:3px;box-shadow:0 2px 8px #123f2608}.view-tools button{width:28px;height:29px;border-radius:5px;font-size:18px;padding:0}.view-tools button[aria-pressed=true]{background:#e5f6ec;color:var(--deep)}.view-tools span{font-size:9px;color:var(--muted);min-width:34px;text-align:center}.view-tools i{height:17px;border-left:1px solid var(--line);margin:0 4px}#placement{position:absolute;bottom:66px;left:50%;transform:translateX(-50%);padding:7px 14px;border-radius:20px;border:1px solid #a1d8b7;background:#edfcf2;font-size:11px;white-space:nowrap;pointer-events:none}.inspector{padding:16px;background:#fcfefd;border-left:1px solid var(--line);height:var(--stage);overflow:auto}.inspector-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.inspector-heading button{padding:0;font-size:20px;color:var(--muted)}#object-select{width:100%;font-size:14px;font-weight:700;padding:8px 7px}.field{display:block;margin:12px 0;font-size:10px;color:var(--muted);font-weight:600}.field>span{display:flex;justify-content:space-between;gap:5px;margin-bottom:4px}.field>input,.field>select{width:100%;font-variant-numeric:tabular-nums}.field small{display:block;font-size:9px;font-weight:400;margin-top:4px;line-height:1.5}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-row .field{margin:8px 0}.object-actions{display:flex;gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}.danger{color:#b34853}.inspector details{margin-top:16px}.inspector summary{font-size:11px;cursor:pointer;font-weight:700;color:var(--deep)}.model-help{font-size:9px;line-height:1.7;color:var(--muted)}.bottom-toolbar{display:flex;align-items:center;gap:17px;padding:10px 18px;border-top:1px solid var(--line)}.history{display:flex;gap:4px;border-right:1px solid var(--line);padding-right:14px}.history button{width:28px;height:28px;border:1px solid var(--line);border-radius:6px;font-size:17px;padding:0}.overlays{display:flex;gap:15px;flex-wrap:wrap;flex:1}.overlays label,.advanced{font-size:10px;color:var(--muted);display:flex;gap:5px;align-items:center;white-space:nowrap}.overlays input,.advanced input{margin:0;width:13px;height:13px}.measurements{display:grid;grid-template-columns:1.4fr repeat(4,1fr);border-top:1px solid var(--line);background:#f8fdf9;padding:17px 24px;gap:20px}.measurements>div{border-left:1px solid var(--line);padding-left:20px;display:flex;flex-direction:column;justify-content:center}.measurements>div:first-child{border:0;padding:0}.measurements span{font-size:10px;color:var(--muted)}.measurements strong{font-size:24px;letter-spacing:-.7px;font-variant-numeric:tabular-nums;font-weight:750}.measurements strong small{font-size:11px;letter-spacing:0;color:var(--muted);font-weight:500}.measurement-name strong{font-size:14px;letter-spacing:-.3px;margin:3px 0}.measurement-name .eyebrow{font-size:7px}.measurement-name small{font-size:9px;color:var(--muted)}.evidence{border-top:1px solid var(--line)}.evidence-heading{display:flex;justify-content:space-between;align-items:center;padding:11px 22px;border-bottom:1px solid #e5efe8;gap:12px}.evidence-tabs{display:flex;gap:3px}.evidence-tabs button{font-size:11px;padding:7px 12px;border-radius:7px;font-weight:650;color:var(--muted)}.evidence-tabs button[aria-selected=true]{background:#e9f6ed;color:var(--deep)}.evidence-tabs span{background:#edf3ef;border-radius:4px;font-size:8px;padding:1px 4px;margin-left:3px}.record-actions{display:flex;gap:7px}.panel{padding:17px 24px;min-height:185px}.panel p{font-size:11px;color:var(--muted);margin:0 0 12px}.graph-controls{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:10px;color:var(--muted)}.graph-controls label{display:flex;align-items:center;gap:7px}.graph-controls select{font-size:11px;padding:5px 8px}.graph-controls>span{font-size:9px}#kept-runs{margin-left:auto;display:flex;gap:7px}#kept-runs button{border:1px solid var(--line);border-radius:5px;padding:4px 6px;background:white;font-size:9px}#graph{display:block;width:100%;height:185px;touch-action:none;margin-top:7px}.panel p.graph-caption{font-size:9px;color:#799082;margin:4px 0 0}.timeline{display:flex;align-items:center;gap:13px;padding:10px 24px;border-top:1px solid #e8f0eb;background:#fcfefd}.timeline input{flex:1;min-width:0;height:16px}.timeline>span{font-size:10px;font-variant-numeric:tabular-nums;min-width:65px;text-align:right}.table-scroll{overflow:auto;max-height:310px}table{width:100%;border-collapse:collapse;font-size:11px;text-align:left;font-variant-numeric:tabular-nums}th{font-weight:600;font-size:10px;color:var(--muted);background:#f6fbf8;position:sticky;top:0}th,td{padding:9px 11px;border-bottom:1px solid #e3ede6;white-space:nowrap}.collision-controls{display:flex;gap:9px;align-items:center;margin-bottom:15px;font-size:10px}.collision-controls label{display:flex;align-items:center;gap:7px}.collision-controls select{max-width:260px;font-size:11px}.collision-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:13px 0}.collision-summary>div{padding:12px 15px;border:1px solid var(--line);background:#f8fcf9;border-radius:9px;font-size:10px;color:var(--muted)}.collision-summary strong{display:block;font-size:19px;letter-spacing:-.5px;color:var(--deep);margin-top:3px}.collision-summary small{display:block;font-size:9px;margin-top:4px}.challenge{display:flex;align-items:center;gap:16px;background:#fffbee;padding:18px 24px;border-top:1px solid #e9dfbe}.challenge-number{display:grid;place-items:center;width:38px;height:38px;background:#f2e7b8;color:#937627;border-radius:10px;font-weight:750;font-size:20px}.challenge>div{flex:1}.challenge strong{display:block;font-size:15px;margin:3px 0}.challenge p{margin:0;font-size:11px;color:var(--muted)}footer{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:9px;color:#73897d;padding:17px 3px}footer b{color:var(--deep)}footer>div{display:flex;gap:12px}footer button{padding:0;font-size:10px;color:var(--muted)}footer>span:last-child{max-width:350px;text-align:right}dialog{border:1px solid var(--line);border-radius:18px;padding:32px;max-width:590px;width:calc(100% - 30px);color:var(--ink);box-shadow:0 20px 100px #06191430}dialog::backdrop{background:#06191460;backdrop-filter:blur(3px)}dialog h2{font-size:28px;line-height:1.2;letter-spacing:-1px}dialog li{font-size:12px;margin:13px 0}dialog p{font-size:11px;color:var(--muted)}dialog ol{padding-left:20px}.dialog-close{position:absolute;right:12px;top:7px;font-size:25px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:40;background:#103c2b;color:white;padding:12px 20px;border-radius:10px;max-width:min(90vw,600px);font-size:12px;box-shadow:0 6px 24px #06191424}#lab:fullscreen{max-width:none;overflow:auto;background:var(--mint)}.empty-state{padding:32px;text-align:center;color:var(--muted);font-size:12px}
@media(min-width:1500px){:root{--stage:clamp(480px,calc(100svh - 430px),750px)}#lab{padding:0 32px}.workspace-layout{grid-template-columns:94px minmax(0,1fr) 270px}.workspace-layout.closed{grid-template-columns:94px minmax(0,1fr)}.parts button{padding:9px 0}}
@media(max-width:1050px){#lab{padding:0 12px}.workspace-layout,.workspace-layout.closed{grid-template-columns:78px minmax(0,1fr)}.inspector{position:absolute;right:0;top:0;width:245px;z-index:5;box-shadow:-7px 0 20px #123f2610}.modes button{padding:10px 15px}.contextbar{gap:12px}.context-copy p{font-size:10px}.measurements{gap:12px;padding:16px 20px}.measurements>div{padding-left:12px}.measurements strong{font-size:21px}.measurement-name strong{font-size:14px}.evidence-heading{padding:10px 17px}.overlays{gap:11px}.panel{padding:15px 20px}footer{flex-wrap:wrap}footer>span:last-child{max-width:none}}
@media(max-width:680px){:root{--stage:420px}#lab{padding:0 8px}.topbar{height:auto;min-height:98px;display:grid;grid-template-columns:1fr auto;padding:12px 4px 9px;gap:8px}.brand img{width:29px;height:31px}.brand b{font-size:18px}.brand small{font-size:7px}.modes{grid-column:1/-1;grid-row:2}.modes button{flex:1;font-size:10px;padding:8px 5px}.modes small{font-size:8px;margin-right:4px}.help{grid-column:2;grid-row:1}.workshop{border-radius:13px}.workshop-heading{padding:15px 12px}.workshop-heading .eyebrow{font-size:6px;letter-spacing:.9px}h1{font-size:25px}.transport{gap:4px}.transport button{padding:9px 10px;font-size:12px;min-width:0}.transport button span{display:none}#run span{display:inline}#step{display:none}.contextbar{padding:10px 12px;flex-wrap:wrap;gap:9px}.context-copy{gap:8px}.context-copy p{font-size:10px}.preset-label{width:100%;justify-content:space-between}.preset-label select{max-width:none;flex:1}.workspace-layout,.workspace-layout.closed{grid-template-columns:62px minmax(0,1fr)}.parts{padding:12px 3px;gap:1px}.parts>.eyebrow{font-size:5px;letter-spacing:.6px}.parts button{font-size:8px;min-height:52px}.parts button svg{width:35px;height:27px}.parts p{display:none}.stage-top{left:12px;right:10px;top:15px}.stage-top .eyebrow{font-size:5px;letter-spacing:.7px;max-width:115px}#selection-note{font-size:8px;max-width:120px}.stage-top button{padding:5px;font-size:8px;height:30px}.clock{left:12px;top:65px}.clock output{font-size:14px}.view-tools{bottom:13px;right:10px}.view-tools button{width:26px;height:28px}.stage-hint{left:13px;bottom:61px;right:10px;max-width:none;font-size:8px}#placement{white-space:normal;max-width:95%;text-align:center;font-size:10px;bottom:89px}.bottom-toolbar{padding:10px;gap:10px;flex-wrap:wrap}.history{padding-right:10px}.overlays{order:3;flex-basis:100%;gap:11px 13px}.overlays label,.advanced{font-size:9px}.advanced{margin-left:auto}.measurements{grid-template-columns:repeat(2,1fr);gap:10px;padding:13px 15px}.measurements .measurement-name{grid-column:1/-1;display:block;padding-bottom:9px;border-bottom:1px solid var(--line)}.measurement-name strong{margin-right:10px}.measurement-name .eyebrow{margin-bottom:4px}.measurements>div:nth-child(2),.measurements>div:nth-child(4){border:0;padding:0}.measurements strong{font-size:22px}.measurement-name strong{font-size:14px}.measurements span{font-size:9px}.evidence-heading{padding:9px 10px;flex-wrap:wrap;gap:10px}.evidence-tabs{width:100%;justify-content:space-between}.evidence-tabs button{font-size:10px;padding:7px 9px}.record-actions{margin-left:auto}.panel{padding:13px 12px}.graph-controls{gap:9px}.graph-controls>span{font-size:8px}#graph{height:180px}.timeline{padding:10px 12px;gap:8px}.collision-summary{grid-template-columns:1fr}.collision-controls{flex-wrap:wrap}.collision-controls label{flex-basis:100%}.collision-controls select{flex:1}.challenge{padding:15px 12px;flex-wrap:wrap;gap:11px}.challenge>div{min-width:190px}.challenge>button{margin-left:auto}footer{font-size:8px;padding:14px 4px;gap:10px}footer>div{gap:15px;order:3;width:100%;justify-content:center}footer>span:last-child{max-width:55%;font-size:7px}.inspector{width:min(250px,calc(100% - 62px))}.field{margin:11px 0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
