/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.contents{display:contents}.grid{display:grid}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--ink:#17201d;--paper:#e8e5dd;--card:#f8f7f3;--line:#c6c1b6;--orange:#f35b35;--teal:#148f8b;--yellow:#e5a823;--purple:#8157a8}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);margin:0;font-family:Arial,Helvetica,sans-serif;overflow:hidden}.app-shell{max-width:1800px;height:100vh;margin:auto;padding:14px 20px}.topbar{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:end;height:54px;padding:0 2px 10px;display:flex}.eyebrow{font:700 9px/1.15 var(--font-geist-mono),monospace;letter-spacing:.16em;color:#68706d;margin:0 0 4px}h1{letter-spacing:-.045em;margin:0;font-size:clamp(24px,2.3vw,35px);line-height:1}h2{letter-spacing:-.025em;margin:0;font-size:17px}.status{font:700 9px var(--font-geist-mono),monospace;letter-spacing:.12em;margin:0}.status i{background:var(--teal);border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.workspace{grid-template-columns:225px minmax(0,1fr) 280px;gap:12px;height:calc(100vh - 94px);margin-top:12px;display:grid}.config-drawer,.canvas-card,.side-panel{background:var(--card);border:1px solid var(--line);min-height:0;box-shadow:0 7px 22px #39423c0d}.config-drawer{padding:13px;overflow:hidden}.optimize{border:1px solid var(--ink);width:100%;font:700 9px var(--font-geist-mono),monospace;letter-spacing:.07em;color:var(--ink);background:0 0;margin:12px 0;padding:9px 7px}.optimize:hover{background:var(--ink);color:#fff}.optimize:disabled{opacity:.5}.controls{gap:6px;display:grid}.range-control{background:#efeee8;border:1px solid #d6d1c7;grid-template-columns:1fr auto;padding:7px 8px;display:grid}.range-control span,.metric-grid span,.transport span{font:700 8px var(--font-geist-mono),monospace;letter-spacing:.08em;color:#6c746f}.range-control output{font:700 9px var(--font-geist-mono),monospace}.range-control input{width:100%;accent-color:var(--orange);grid-column:1/-1;height:12px;margin:5px 0 0}.info-modal{border-top:1px solid var(--line);color:#545d58;margin-top:10px;padding-top:9px;font-size:10px;line-height:1.35}.info-modal summary{cursor:pointer;font:700 9px var(--font-geist-mono),monospace;letter-spacing:.06em;color:var(--ink)}.info-modal p{margin:7px 0}.info-modal b{font-size:9px;display:block}.info-modal code{font-size:9px}.canvas-card{grid-template-rows:33px minmax(0,1fr) 28px;display:grid;overflow:hidden}.canvas-head{border-bottom:1px solid var(--line);font:700 8px var(--font-geist-mono),monospace;letter-spacing:.12em;color:#626964;justify-content:space-between;align-items:center;padding:0 11px;display:flex}.canvas-card svg{width:100%;height:100%;display:block}.step{fill:#d7d2c7;stroke:var(--ink);stroke-width:2px}.floor-line{stroke:var(--ink);stroke-width:2px}.fixed-rail{stroke:var(--ink);stroke-width:10px}.bezier-reference{fill:none;stroke:var(--ink);stroke-width:2px;stroke-dasharray:7 7;opacity:.45}.moving-track-shadow{stroke:var(--ink);stroke-width:17px;stroke-linecap:round;opacity:.22}.moving-track{stroke:var(--teal);stroke-width:10px;stroke-linecap:round}.track-overhang{stroke:#67aaa6;stroke-width:5px;stroke-dasharray:11 7}.standoff-line{stroke:var(--orange);stroke-width:3px;stroke-dasharray:7 6}.projection-line{stroke:var(--purple);stroke-width:3px;stroke-dasharray:5 5}.head-datum{stroke:var(--purple);stroke-width:2px;stroke-dasharray:4 6}.head-datum-point{fill:var(--purple);stroke:var(--card);stroke-width:2px}.target-point{fill:var(--card);stroke:var(--orange);stroke-width:3px}.offset-linkage line{stroke:var(--ink);stroke-width:5px;stroke-linecap:round}.offset-linkage .linkage-base{stroke:var(--yellow);stroke-width:8px}.offset-linkage circle{fill:var(--yellow);stroke:var(--ink);stroke-width:3px}.scanner-body{fill:var(--card);stroke:var(--ink);stroke-width:3px}.slider-block rect{fill:var(--card);stroke:var(--teal);stroke-width:4px}.slider-block circle{fill:var(--teal)}.hinge-block circle:first-child{fill:var(--yellow);stroke:var(--ink);stroke-width:4px}.hinge-block circle:last-child{fill:var(--ink)}.control-point{fill:var(--card);stroke:var(--ink);stroke-width:4px}.control-point.corner{fill:var(--yellow)}.bezier-carriage{fill:var(--purple);stroke:var(--ink);stroke-width:3px}.point-labels{font:700 10px var(--font-geist-mono),monospace;fill:var(--ink);paint-order:stroke;stroke:#f3f1ec;stroke-width:4px;stroke-linejoin:round}.legend{border-top:1px solid var(--line);font:700 8px var(--font-geist-mono),monospace;letter-spacing:.03em;align-items:center;gap:12px;padding:0 11px;display:flex}.legend i{vertical-align:middle;width:18px;height:3px;margin-right:3px;display:inline-block}.legend-safe{background:#b42318}.legend-good{background:var(--teal)}.legend-watch{background:var(--yellow)}.legend-bad{background:var(--orange)}.side-panel{flex-direction:column;display:flex;overflow:hidden}.side-panel section{border-bottom:1px solid var(--line);min-width:0;padding:11px 12px}.target-block{background:#efeee8}.target-row{justify-content:space-between;align-items:end;gap:8px;display:flex}.target-row strong{letter-spacing:-.06em;white-space:nowrap;font-size:28px}.target-row strong span{font:700 10px var(--font-geist-mono),monospace;letter-spacing:0}.target-row b{overflow-wrap:anywhere;text-align:right;min-width:0;font:700 9px var(--font-geist-mono),monospace}.safe-text{color:var(--teal)}.unsafe-text{color:#b42318}.transport label{font:700 10px var(--font-geist-mono),monospace;justify-content:space-between;display:flex}.transport-row{align-items:center;gap:7px;margin-top:5px;display:flex}.transport-row input{accent-color:var(--orange);flex:1}.transport-row button{background:var(--ink);color:#fff;border:0;width:31px;height:27px;font-weight:700}.side-panel section.metric-grid{padding:5px 7px}.metric-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 8px;display:grid}.metric-grid div{background:0 0;border:0;border-bottom:1px solid #d6d1c7;justify-content:space-between;align-items:baseline;gap:5px;min-width:0;padding:4px 1px;display:flex}.metric-grid span{letter-spacing:.05em;flex:auto;font-size:6px}.metric-grid strong{text-align:right;font:700 9px/1.2 var(--font-geist-mono),monospace;flex:0 auto;margin:0}.verification{background:var(--ink);color:#fff!important}.verification p{font:8px var(--font-geist-mono),monospace;color:#d8dedb;justify-content:space-between;gap:8px;margin:5px 0;display:flex}.verification b{overflow-wrap:anywhere;text-align:right;color:#fff;min-width:0}.verification i{background:#69c7ae;border-radius:50%;width:6px;height:6px;margin-right:5px;display:inline-block}.panel-bottom-note{margin-top:auto}@media (width<=1050px){body{overflow:auto}.app-shell{height:auto}.workspace{grid-template-columns:210px minmax(560px,1fr);height:auto}.side-panel{grid-column:1/-1;grid-template-columns:repeat(3,1fr);display:grid}.side-panel .verification{margin:0}.canvas-card{height:700px}}@media (width<=720px){.app-shell{padding:10px}.workspace{grid-template-columns:1fr}.config-drawer{max-height:none}.canvas-card{height:620px}.side-panel{display:block}.status{display:none}}.peak-height-line{stroke:#8157a8;stroke-width:2px;stroke-dasharray:7 6;opacity:.76}.peak-marker{fill:#8157a8;stroke:var(--card);stroke-width:3px}.range-control em{font:600 7px var(--font-geist-mono),monospace;letter-spacing:.04em;color:#7a827d;grid-column:1/-1;margin-top:1px;font-style:normal}.mode-control{font:700 8px var(--font-geist-mono),monospace;letter-spacing:.08em;color:#6c746f;background:#efeee8;border:1px solid #d6d1c7;grid-template-columns:1fr;gap:4px;padding:7px 8px;display:grid}.mode-control select{background:var(--card);width:100%;color:var(--ink);font:700 9px var(--font-geist-mono),monospace;border:1px solid #c9c4b9;padding:6px 4px}.mode-control em{font:600 7px var(--font-geist-mono),monospace;letter-spacing:.04em;color:#7a827d;font-style:normal}.range-control input:disabled{opacity:.35;accent-color:#8d918d}.subject-control{color:#6c746f;background:#efeee8;border:1px solid #d6d1c7;gap:6px;margin:0;padding:7px 8px;display:grid}.subject-control legend{font:700 8px var(--font-geist-mono),monospace;letter-spacing:.08em;padding:0}.subject-control select{background:var(--card);width:100%;color:var(--ink);font:700 9px var(--font-geist-mono),monospace;border:1px solid #c9c4b9;padding:6px 4px}.subject-side{grid-template-columns:auto 1fr 1fr;align-items:center;gap:6px;display:grid}.subject-side>span{font:700 8px var(--font-geist-mono),monospace;letter-spacing:.08em}.subject-side label{font:700 9px var(--font-geist-mono),monospace;color:var(--ink);align-items:center;gap:4px;display:flex}.subject-side input{accent-color:var(--orange);margin:0}.config-drawer{scrollbar-gutter:stable;flex-direction:column;display:flex;overflow-y:auto}.config-heading{background:var(--card);z-index:3;margin-top:-13px;padding:13px 0 8px;position:sticky;top:-13px}.controls{padding-bottom:14px}.side-panel{scrollbar-gutter:stable;overflow-y:auto}.toggle-control{font:700 8px var(--font-geist-mono),monospace;letter-spacing:.06em;color:#5f6762;background:#efeee8;border:1px solid #d6d1c7;justify-content:space-between;align-items:center;padding:9px 8px;display:flex}.toggle-control input{accent-color:var(--orange)}.method-note{font:9px/1.45 var(--font-geist-mono),monospace;color:#555e59}.method-note p{margin:6px 0}.method-note code{border-left:3px solid var(--orange);background:#efeee8;margin-top:7px;padding:7px;display:block}.trajectory-status{background:#efeee8}.trajectory-status .eyebrow{letter-spacing:.08em;white-space:nowrap;margin-bottom:5px;font-size:7px}.trajectory-status strong{overflow-wrap:anywhere;font:700 10px/1.3 var(--font-geist-mono),monospace;display:block}.joint-readout .eyebrow{letter-spacing:.08em;white-space:nowrap;font-size:7px}.joint-readout table{border-collapse:collapse;table-layout:fixed;width:100%;font:9px var(--font-geist-mono),monospace}.joint-readout th,.joint-readout td{border-bottom:1px solid #d6d1c7;padding:3px 0}.joint-readout tr:last-child th,.joint-readout tr:last-child td{border-bottom:0}.joint-readout th{text-align:left;color:#68706d;width:12%;font-weight:400}.joint-readout td{text-align:right;width:38%;font-weight:700}.joint-readout td:nth-child(2){border-right:1px solid #c6c1b6;padding-right:10px}.joint-readout th:nth-child(3){padding-left:10px}.metric-grid span,.metric-grid strong{white-space:normal;overflow-wrap:anywhere}.reach-envelope{fill:none;stroke:#5f6762;stroke-width:2px;stroke-dasharray:10 8;opacity:.28}.pedestal{fill:#454c49;stroke:var(--ink);stroke-width:3px}.robot-base{fill:#b8e2df;stroke:var(--ink);stroke-width:3px}.robot-arm line{stroke:#1d8d89;stroke-width:20px;stroke-linecap:round;paint-order:stroke;filter:drop-shadow(0 2px 1px #17201d30)}.robot-arm circle{fill:#e2bd4b;stroke:var(--ink);stroke-width:4px}.robot-arm.invalid line{stroke:#b7796a}.robot-path-valid{stroke:var(--teal);stroke-width:5px}.robot-path-invalid{stroke:#b42318;stroke-width:5px;stroke-dasharray:6 5}.desired-standoff{stroke:#ee8b22;stroke-width:3px;stroke-dasharray:7 5}.surface-normal{stroke:var(--orange);stroke-width:2px}.desired-tcp{fill:#fff;stroke:#ee8b22;stroke-width:4px}.actual-tcp{fill:var(--teal);stroke:#fff;stroke-width:2px}.actual-tcp.invalid{fill:#b42318}.fr10-scanner{fill:#202825;stroke:#f8f7f3;stroke-width:2px}.fr10-scanner+line{stroke:#17201d;stroke-width:7px}.ik-warning{font:700 11px var(--font-geist-mono),monospace;fill:#b42318;paint-order:stroke;stroke:#f3f1ec;stroke-width:4px}.legend-target{background:#ee8b22}.robot-column{stroke:#59635f;stroke-width:24px;stroke-linecap:round}.joint-label{font:700 9px var(--font-geist-mono),monospace;letter-spacing:.03em;fill:#17201d;paint-order:stroke;stroke:#f3f1ec;stroke-width:4px;stroke-linejoin:round}.warning-text{color:#a66f00}.robot-path-minor{stroke:var(--yellow);stroke-width:5px}.robot-arm.warning line{stroke:#d49a18}.actual-tcp.minor{fill:var(--yellow)}.actual-tcp.major{fill:#b42318}.ik-warning.minor{fill:#a66f00}.issue-panel{font:9px/1.35 var(--font-geist-mono),monospace;border-left:4px solid var(--teal)}.issue-panel.minor{border-left-color:var(--yellow);background:#fff8df}.issue-panel.major{background:#fff0ec;border-left-color:#b42318}.issue-panel p:not(.eyebrow){gap:6px;margin:5px 0;display:flex}.issue-panel i{background:currentColor;border-radius:50%;flex:none;width:6px;height:6px;margin-top:3px}.actual-standoff{stroke:#ee8b22;stroke-width:3px;stroke-dasharray:7 5}.ik-overlay text{font:700 9px var(--font-geist-mono),monospace;fill:#17201d}.ik-overlay text:first-of-type{fill:#148f8b;letter-spacing:.05em}.ik-overlay.minor text:first-of-type{fill:#a66f00}.ik-overlay.major text:first-of-type{fill:#b42318}.verification table{border-collapse:collapse;table-layout:fixed;width:100%;font:8px var(--font-geist-mono),monospace;color:#d8dedb}.verification th,.verification td{border-bottom:1px solid #ffffff1f;padding:4px 0}.verification tr:last-child th,.verification tr:last-child td{border-bottom:0}.verification th{text-align:left;width:58%;font-weight:400}.verification td{text-align:right;color:#fff;white-space:nowrap;font-weight:700}.metric-grid{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);column-gap:4px}.metric-grid strong{white-space:nowrap}.robot-arm.clear line{stroke:var(--teal)}.robot-arm.near-collision line{stroke:var(--yellow)}.robot-arm.collision line{stroke:#b42318}.robot-arm circle.joint-free{fill:#45a878}.robot-arm circle.joint-near{fill:var(--yellow)}.robot-arm circle.joint-locked{fill:#c43d2b}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}
