:root{color:var(--text-primary);background:var(--bg-app);font-synthesis:none;text-rendering:optimizelegibility;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--bg-app);min-width:20rem;min-height:100vh;color:var(--text-primary);margin:0}#root{height:100dvh}button,input,select{font:inherit}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-app:#f4f7f8;--bg-panel:#fff;--bg-elevated:#eaf1f3;--bg-workspace:#eef3f4;--border:#ccd9dd;--border-strong:#9db1b8;--text-primary:#15313a;--text-secondary:#5a7078;--text-disabled:#8b9ca2;--accent-primary:#087f7a;--accent-primary-hover:#056b67;--accent-secondary:#c71d97;--danger:#b83a45;--danger-hover:#982f39;--warning:#a56710;--input-bg:#fff;--hover-bg:#e3f3f2;--selected-bg:#dff4f1;--editing-bg:#fff2c9;--focus-ring:#19cec5;--text-on-accent:#062f2d;--text-on-image:#fff;--overlay-badge-bg:#0f232b8c;--overlay-control-bg:#ffffffd1;--magnifier-shadow:#0f232b59;--dialog-backdrop:#0f232b73;--marker-x:#1878c5;--marker-y:#ad6900;--selection-ring:#087f7a;--marquee-fill:#19cec529;--marquee-stroke:#087f7a}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-app:#233946;--bg-panel:#1d313c;--bg-elevated:#294652;--bg-workspace:#172a33;--border:#45606b;--border-strong:#66808a;--text-primary:#f4f9fa;--text-secondary:#bfd0d5;--text-disabled:#78919a;--accent-primary:#19cec5;--accent-primary-hover:#5de0d8;--accent-secondary:#ff28c6;--danger:#ff7b7b;--danger-hover:#ff9b9b;--warning:#ffc46b;--input-bg:#203844;--hover-bg:#2c4b56;--selected-bg:#1f575c;--editing-bg:#5d4b24;--focus-ring:#19cec5;--text-on-accent:#052f2e;--text-on-image:#fff;--overlay-badge-bg:#0513198c;--overlay-control-bg:#1d313cd1;--magnifier-shadow:#0513198c;--dialog-backdrop:#051319a6;--marker-x:#55b8ff;--marker-y:#ffc46b;--selection-ring:#19cec5;--marquee-fill:#19cec533;--marquee-stroke:#19cec5}.app-shell{width:100%;max-width:none;margin:0;padding:clamp(1rem,2vw,2rem)}.app-header{justify-content:space-between;align-items:start;gap:1rem;margin-bottom:2rem;display:flex}.app-header h1,.app-header p{margin:0}.app-header p,.workspace-panel p{color:var(--text-secondary)}.app-header p{margin-top:.5rem}.workspace-grid{grid-template-columns:minmax(0,2fr) minmax(16rem,1fr);gap:1rem;display:grid}.workspace-panel{border:1px solid var(--border);background:var(--bg-panel);border-radius:.5rem;padding:1rem}.workspace-panel h2{margin-top:0;font-size:1rem}.workspace-sidebar{gap:1rem;display:grid}.header-actions{align-items:start;gap:.75rem;display:flex}.theme-control{color:var(--text-secondary);gap:.25rem;font-size:.875rem;display:grid}.image-upload{gap:.75rem;margin-bottom:1rem;display:grid}.upload-dropzone{border:1px dashed var(--border-strong);background:var(--bg-elevated);border-radius:.375rem;align-items:center;gap:.75rem;padding:.75rem;display:flex}.upload-dropzone.is-dragging{border-color:var(--accent-primary);background:var(--hover-bg)}.upload-dropzone input{opacity:0;width:1px;height:1px;position:absolute}.upload-dropzone p{color:var(--text-secondary);margin:0}button{border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;border-radius:.25rem;padding:.35rem .6rem}button:hover:not(:disabled){border-color:var(--accent-primary);background:var(--hover-bg)}button:disabled{color:var(--text-disabled);cursor:not-allowed;opacity:.7}.button-primary{border-color:var(--accent-primary);background:var(--accent-primary);color:var(--text-on-accent);font-weight:600}.button-primary:hover:not(:disabled){border-color:var(--accent-primary-hover);background:var(--accent-primary-hover)}.button-primary:disabled{border-color:var(--border);background:var(--bg-elevated);color:var(--text-disabled)}.button-danger{border-color:var(--danger);background:var(--danger);color:var(--text-on-image);font-weight:600}.button-danger:hover:not(:disabled){border-color:var(--danger-hover);background:var(--danger-hover)}.button-danger-subtle{border-color:color-mix(in srgb, var(--danger) 65%, var(--border));color:var(--danger);background:0 0;font-weight:600}.button-danger-subtle:hover:not(:disabled){border-color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent)}.button-quiet{color:var(--text-secondary);background:0 0;border-color:#0000}.button-quiet:hover:not(:disabled){border-color:var(--border);background:var(--hover-bg);color:var(--text-primary)}.text-button{color:var(--accent-primary);cursor:pointer;background:0 0;border:0;justify-self:start;padding:0;text-decoration:underline}.text-button:hover:not(:disabled){color:var(--accent-primary-hover);background:0 0}.danger-button{color:var(--danger)}.danger-button:hover:not(:disabled){color:var(--danger-hover)}.upload-error{color:var(--danger);margin:0}.image-display-controls{flex-wrap:wrap;gap:.75rem;margin:-.25rem 0 .75rem;display:flex}.image-invert-control{color:var(--text-secondary);align-items:center;gap:.4rem;font-size:.875rem;display:flex}.magnifier-zoom-control{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.875rem;display:flex}.magnifier-zoom-control input[type=range]{width:6rem;accent-color:var(--accent-primary)}.magnifier-zoom-control output{font-variant-numeric:tabular-nums;min-width:3.25rem}.graph-canvas-section{gap:.5rem;display:grid}.graph-canvas{border:1px solid var(--border);background:var(--bg-workspace);touch-action:none;-webkit-user-select:none;user-select:none;place-items:center;min-height:31rem;display:grid;position:relative;overflow:hidden}.graph-canvas.has-image,.graph-canvas.has-image *{cursor:grab}.graph-canvas.has-image:active,.graph-canvas.has-image:active *{cursor:grabbing}.graph-canvas.is-calibrating,.graph-canvas.is-calibrating *,.graph-canvas.is-calibrating:active,.graph-canvas.is-calibrating:active *,.graph-canvas.is-digitising,.graph-canvas.is-digitising *,.graph-canvas.is-digitising:active,.graph-canvas.is-digitising:active *,.graph-canvas.is-editing-point,.graph-canvas.is-editing-point *,.graph-canvas.is-editing-point:active,.graph-canvas.is-editing-point:active *{cursor:crosshair}.graph-canvas>p{color:var(--text-secondary)}.graph-image{transform-origin:0 0;-webkit-user-select:none;user-select:none;max-width:none;max-height:none;position:absolute;top:0;left:0}.graph-image.is-inverted{filter:invert()}.calibration-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.selection-marquee-overlay{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.selection-marquee-overlay rect{fill:var(--marquee-fill);stroke:var(--marquee-stroke);stroke-width:1.5px;stroke-dasharray:4 3}.graph-mode-badge{z-index:2;background:var(--overlay-badge-bg);color:var(--text-on-image);letter-spacing:.04em;pointer-events:none;border-radius:.25rem;padding:.25rem .5rem;font:700 .7rem/1 ui-sans-serif,system-ui,sans-serif;position:absolute;top:.75rem;left:.75rem}.precision-magnifier{z-index:3;border:2px solid var(--focus-ring);background:var(--bg-workspace);width:8.75rem;height:8.75rem;box-shadow:0 .35rem 1rem var(--magnifier-shadow);pointer-events:none;border-radius:50%;position:absolute;overflow:hidden}.precision-magnifier-image{-webkit-user-select:none;user-select:none;max-width:none;max-height:none;position:absolute}.precision-magnifier-image.is-inverted{filter:invert()}.precision-magnifier-crosshair,.precision-magnifier-crosshair:before,.precision-magnifier-crosshair:after{pointer-events:none;position:absolute}.precision-magnifier-crosshair{z-index:1;inset:0}.precision-magnifier-crosshair:before,.precision-magnifier-crosshair:after{content:"";background:var(--focus-ring);filter:drop-shadow(0 0 1px var(--text-on-image))}.precision-magnifier-crosshair:before{width:100%;height:1px;top:50%;left:0;transform:translateY(-50%)}.precision-magnifier-crosshair:after{width:1px;height:100%;top:0;left:50%;transform:translate(-50%)}.precision-magnifier-crosshair>span{border:1px solid var(--focus-ring);background:var(--bg-workspace);border-radius:50%;width:.45rem;height:.45rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.calibration-marker circle{fill:var(--text-on-image);stroke-width:2px}.calibration-marker text{paint-order:stroke;stroke:var(--text-on-image);stroke-width:3px;font:600 12px ui-sans-serif,system-ui,sans-serif}.x-marker{color:var(--marker-x);stroke:var(--marker-x);fill:var(--marker-x)}.y-marker{color:var(--marker-y);stroke:var(--marker-y);fill:var(--marker-y)}.calibration-marker.is-active circle{fill:currentColor}.calibration-marker.is-active text{font-weight:800}.data-point-dot{fill:currentColor;stroke:var(--text-on-image);stroke-width:2px}.data-point-marker text{fill:currentColor;paint-order:stroke;stroke:var(--text-on-image);stroke-width:3px;font:600 12px ui-sans-serif,system-ui,sans-serif}.data-point-marker.is-active .data-point-dot{stroke-width:3px}.data-point-selection-ring{fill:none;stroke:var(--selection-ring);stroke-width:1.75px;pointer-events:none}.data-point-extrapolation-ring{fill:none;stroke:var(--warning);stroke-width:1.5px;stroke-dasharray:2 2;pointer-events:none}.data-point-candidate circle{fill:var(--bg-panel);stroke:var(--accent-primary);stroke-width:2px;pointer-events:none}.data-point-marker.is-editing .data-point-dot{stroke:var(--text-primary);stroke-width:3px}.data-point-marker.is-editing text{font-weight:800}.data-point-marker .data-point-hit-target{fill:#0000;stroke:none;pointer-events:all}.canvas-status{min-height:1.5rem;color:var(--text-secondary);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875rem}.calibration-panel{gap:.5rem;display:grid}.calibration-panel>h2{margin-bottom:.1rem}.axis-controls{border:0;border-top:1px solid var(--border);gap:.35rem;min-width:0;margin:0;padding:.5rem 0 0;display:grid}.axis-heading{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.axis-legend{font-weight:600}.axis-status{color:var(--text-secondary);font-size:.75rem}.axis-status.is-valid{color:var(--accent-primary)}.axis-status.is-invalid{color:var(--danger)}.axis-metadata{grid-template-columns:minmax(4.75rem,1fr) minmax(0,1.4fr) minmax(3.5rem,.7fr);gap:.35rem;display:grid}.axis-controls label{gap:.15rem;min-width:0;font-size:.75rem;display:grid}.axis-controls input,.axis-controls select,.theme-control select{border:1px solid var(--border-strong);background:var(--input-bg);min-width:0;color:var(--text-primary);border-radius:.25rem;padding:.35rem}.calibration-reference{flex-wrap:wrap;align-items:end;gap:.35rem;display:flex}.calibration-reference strong{align-self:center}.calibration-reference label{flex:0 6.5rem}.calibration-reference button{min-height:1.8rem;padding:.2rem .45rem}.reference-position{color:var(--text-secondary);white-space:nowrap;flex:5rem;align-self:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem}.calibration-reference .text-button{min-height:auto;padding:0}button.is-active{border-color:var(--accent-primary);background:var(--selected-bg);color:var(--text-primary)}.point-table-panel{gap:1.5rem;display:grid;overflow-x:auto}.point-table-section{gap:.625rem;min-width:0;display:grid}.point-table-section h2{margin:0}.data-set-list{gap:.5rem;display:grid}.point-empty-state{color:var(--text-secondary);white-space:normal;overflow-wrap:break-word;margin:0;font-size:.875rem}.point-table-panel table{border-collapse:collapse;width:100%;font-size:.875rem}.point-table-panel th,.point-table-panel td{border-bottom:1px solid var(--border);text-align:left;padding:.4rem}.point-table-panel tr.is-editing{background:var(--editing-bg)}.point-table-panel tr.is-selected{background:var(--selected-bg)}.point-table-panel tr.is-editing.is-selected{background:var(--hover-bg)}.point-row-actions{align-items:center;gap:.5rem;display:flex}.point-table-panel td:nth-child(2),.point-table-panel td:nth-child(3){font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.about-dialog,.instructions-dialog,.release-notes-dialog,.confirmation-dialog{border:1px solid var(--border);background:var(--bg-panel);color:var(--text-primary);border-radius:.5rem;padding:1.5rem;box-shadow:0 1rem 3rem #00000040}.about-dialog::backdrop,.instructions-dialog::backdrop,.release-notes-dialog::backdrop,.confirmation-dialog::backdrop{background:var(--dialog-backdrop)}.about-dialog h2,.instructions-dialog h2,.release-notes-dialog h2,.confirmation-dialog h2{margin-top:0}.about-dialog p,.instructions-dialog p,.release-notes-dialog p,.confirmation-dialog p{color:var(--text-secondary)}.about-dialog form,.instructions-dialog form,.release-notes-dialog form,.confirmation-dialog-actions{justify-content:end;gap:.5rem;margin-top:1.25rem;display:flex}.confirmation-dialog{box-sizing:border-box;width:min(30rem,100vw - 2rem)}.confirmation-dialog h2{margin-bottom:.6rem;font-size:1.15rem}.confirmation-dialog-body p{margin:0;line-height:1.45}.instructions-dialog{width:min(44rem,100vw - 2rem);max-height:min(44rem,100dvh - 2rem);overflow:auto}.instructions-dialog h3{margin:1.1rem 0 .35rem;font-size:1rem}.instructions-dialog h3+p{margin-top:0}.instructions-dialog h4{color:var(--text-primary);margin:.85rem 0 .2rem;font-size:.85rem}.instructions-dialog h4+p{margin-top:0}.instructions-dialog ul{color:var(--text-secondary);margin:.4rem 0;padding-left:1.3rem}.instructions-useful-controls{border-top:1px solid var(--border);margin-top:1.25rem;padding-top:.75rem}.instructions-dialog dl{color:var(--text-secondary);grid-template-columns:auto minmax(0,1fr);gap:.35rem .75rem;margin:.5rem 0;display:grid}.instructions-dialog dt{color:var(--text-primary);font-weight:600}.release-notes-dialog{width:min(40rem,100vw - 2rem);max-height:min(42rem,100dvh - 2rem);overflow:auto}.release-note+.release-note{margin-top:1.25rem}.release-note hr{border:0;border-top:1px solid var(--border);margin:0 0 1.25rem}.release-note-heading{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.release-note-heading h3{margin:0;font-size:1rem}.release-note-heading time{color:var(--text-secondary);white-space:nowrap;font-size:.8rem}.release-note-subtitle{margin:.2rem 0 0;font-size:.875rem;font-weight:600}.release-note ul{color:var(--text-secondary);margin:.65rem 0 0;padding-left:1.3rem}.release-note li+li{margin-top:.25rem}@media (width<=48rem){.app-shell{padding:1rem}.workspace-grid{grid-template-columns:1fr}.upload-dropzone{flex-direction:column;align-items:flex-start}.axis-metadata{grid-template-columns:repeat(2,minmax(0,1fr))}.axis-metadata label:last-child{grid-column:span 2}.graph-canvas{min-height:22rem}}.app-shell{--inspector-width:20rem;grid-template-rows:auto minmax(0,1fr) auto 1.875rem;height:100dvh;min-height:0;padding:0;display:grid;overflow:hidden}.app-topbar{border-bottom:1px solid var(--border);background:var(--bg-panel);grid-template-columns:minmax(0,auto) minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:3.125rem;padding:0 .875rem;display:grid}.app-brand-group,.image-actions-group,.top-image-control,.app-brand-lockup,.topbar-work-actions,.project-actions-group,.topbar-export-actions,.app-actions-group,.app-actions-direct{align-items:center;gap:.5rem;min-width:0;display:flex}.app-brand-group{flex:0 auto}.topbar-work-actions{justify-content:flex-end;gap:.45rem;min-width:0}.project-actions-group{min-width:0}.topbar-export-actions{flex-shrink:0;gap:.35rem}.app-actions-group{flex:none;position:relative}.app-actions-direct{gap:.35rem}.topbar-more-control{display:none;position:relative}.topbar-more-menu{z-index:12;border:1px solid var(--border-strong);background:var(--bg-panel);min-width:10rem;box-shadow:0 .5rem 1.5rem var(--magnifier-shadow);border-radius:.3rem;gap:.2rem;padding:.3rem;display:grid;position:absolute;top:calc(100% + .35rem);right:0}.topbar-more-menu .button-quiet{text-align:left;justify-content:start;width:100%}.topbar-more-menu .topbar-theme-control{padding:.35rem .5rem}.export-menu-control{flex:none;position:relative}.export-menu-trigger{border-color:var(--border-strong);background:var(--bg-elevated);min-height:1.8rem;color:var(--text-primary);align-items:center;gap:.35rem;padding:.25rem .5rem;font-size:.8rem;font-weight:600;line-height:1.2;display:inline-flex}.export-menu-trigger:hover:not(:disabled),.export-menu-trigger[aria-expanded=true]{border-color:var(--accent-primary);background:var(--hover-bg)}.export-menu-trigger svg,.export-menu button svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:.9rem;height:.9rem}.export-menu-chevron{color:var(--text-secondary);font-size:.7rem}.export-menu{z-index:12;border:1px solid var(--border-strong);background:var(--bg-panel);width:max-content;min-width:10rem;max-width:calc(100vw - 1rem);box-shadow:0 .5rem 1.5rem var(--magnifier-shadow);border-radius:.3rem;gap:.15rem;padding:.3rem;display:grid;position:absolute;top:calc(100% + .35rem);right:0}.export-menu button{width:100%;color:var(--text-primary);text-align:left;background:0 0;border-color:#0000;align-items:center;gap:.5rem;display:flex}.export-menu button:hover:not(:disabled),.export-menu button:focus-visible{border-color:var(--border);background:var(--hover-bg)}.export-menu-error{z-index:12;border:1px solid var(--danger);background:var(--bg-panel);width:max-content;max-width:16rem;color:var(--danger);box-shadow:0 .4rem 1rem var(--magnifier-shadow);border-radius:.25rem;margin:0;padding:.35rem .5rem;font-size:.75rem;position:absolute;top:calc(100% + .35rem);right:0}.app-brand-lockup{flex:none;gap:.625rem}.app-logo{flex:none;width:auto;height:2rem;display:block}.app-version{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;border-radius:999px;padding:.12rem .35rem;font-size:.6875rem;font-weight:600;line-height:1}.app-subtitle{color:var(--text-secondary);white-space:nowrap;font-size:.75rem}.about-version{margin-top:-.5rem;font-size:.875rem;font-weight:600}.about-logo{width:auto;height:2.5rem;margin:0 0 1rem;display:block}.about-dialog a{color:var(--accent-primary)}.about-dialog a:hover{color:var(--accent-primary-hover)}.about-dialog-divider{border:0;border-top:1px solid var(--border);margin:1.25rem 0 .75rem}.about-website{margin:0;font-size:.8125rem}.top-image-control input{opacity:0;width:1px;height:1px;position:absolute}.top-image-name{min-width:0;max-width:min(18vw,14rem);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;overflow:hidden}.topbar-theme-control{color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.875rem;display:flex}.topbar-theme-control select{border:1px solid var(--border-strong);background:var(--input-bg);min-width:5.5rem;color:var(--text-primary);border-radius:.25rem;padding:.3rem 1.5rem .3rem .4rem}.desktop-workspace{grid-template-columns:minmax(0, 1fr) var(--inspector-width);min-height:0;display:grid;overflow:hidden}.app-shell.is-inspector-collapsed .desktop-workspace{grid-template-columns:minmax(0,1fr) 2.5rem}.graph-region{background:var(--bg-workspace);grid-template-rows:auto minmax(0,1fr);gap:.5rem;min-width:0;min-height:0;padding:.75rem;display:grid;overflow:hidden}.graph-region .graph-canvas-section{grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0}.graph-region .graph-canvas{height:100%;min-height:0}.graph-toolbar{border:1px solid var(--border);background:var(--bg-panel);border-radius:.25rem;align-items:center;gap:.5rem;min-height:2.25rem;padding:.1875rem .35rem;display:flex}.graph-toolbar-group{align-items:center;gap:.25rem;display:flex}.graph-toolbar button{min-height:1.75rem;padding:.2rem .5rem;font-size:.8rem;line-height:1.2}.graph-toolbar button.is-active{border-color:var(--accent-primary);background:var(--selected-bg);color:var(--text-primary);font-weight:600}.graph-toolbar-separator{background:var(--border);align-self:stretch;width:1px;margin:.1rem 0}.graph-zoom-controls{gap:.15rem}.graph-zoom-controls button{min-width:1.85rem;padding-left:.35rem;padding-right:.35rem}.graph-zoom-controls .graph-zoom-value{font-variant-numeric:tabular-nums;min-width:3.5rem}.coordinate-lock-control{position:relative}.coordinate-lock-popover{z-index:8;border:1px solid var(--border-strong);background:var(--bg-panel);width:min(18rem,100vw - 2rem);box-shadow:0 .5rem 1.5rem var(--magnifier-shadow);border-radius:.3rem;gap:.45rem;padding:.6rem;display:grid;position:absolute;top:calc(100% + .35rem);left:0}.coordinate-lock-popover label{color:var(--text-secondary);gap:.15rem;font-size:.72rem;display:grid}.coordinate-lock-popover input,.coordinate-lock-popover select,.coordinate-lock-popover textarea{border:1px solid var(--border-strong);background:var(--input-bg);min-width:0;color:var(--text-primary);border-radius:.25rem;padding:.25rem .35rem}.coordinate-lock-popover textarea{resize:vertical;min-height:3.5rem}.coordinate-sequence-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:.3rem;display:grid}.coordinate-lock-progress{color:var(--text-secondary);justify-content:center;align-items:center;gap:.35rem;font-size:.75rem;display:flex}.coordinate-lock-progress button{min-width:1.7rem;padding:.15rem}.coordinate-lock-error{color:var(--danger);font-size:.7rem}.coordinate-lock-guide{pointer-events:none}.coordinate-lock-guide line{stroke:var(--accent-primary);stroke-width:1.5px;stroke-dasharray:4 3}.coordinate-lock-guide text{fill:var(--accent-primary);paint-order:stroke;stroke:var(--text-on-image);stroke-width:3px;font:700 11px ui-sans-serif,system-ui,sans-serif}.coordinate-lock-candidate>circle:last-child{fill:var(--bg-panel);stroke:var(--accent-primary);stroke-width:2px;pointer-events:none}.empty-workspace{box-sizing:border-box;grid-row:1/-1;place-items:center;height:100%;min-height:0;padding:1rem;display:grid}.empty-workspace-content{gap:1.25rem;width:min(100%,34rem);display:grid}.empty-workspace-welcome{text-align:center;justify-items:center;gap:.45rem;display:grid}.empty-workspace-welcome h2,.empty-workspace-welcome p{margin:0}.empty-workspace-welcome p{max-width:30rem;color:var(--text-secondary)}.empty-workspace-upload-area{gap:.65rem;display:grid}.empty-workspace .image-upload{width:100%;margin:0}.empty-workspace .upload-dropzone{justify-content:center;min-height:9rem}.empty-workspace-privacy{color:var(--text-secondary);justify-self:center;align-items:center;gap:.35rem;margin:0;font-size:.8125rem;display:inline-flex}.empty-workspace-privacy svg{fill:none;width:.9rem;height:.9rem;stroke:var(--accent-primary);stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round}.inspector-panel{border-left:1px solid var(--border);background:var(--bg-panel);min-width:0;min-height:0;position:relative}.resize-handle{z-index:4;touch-action:none;-webkit-user-select:none;user-select:none;outline:0;position:absolute}.resize-handle:after{content:"";background:var(--border);transition:background .12s;position:absolute}.resize-handle:hover:after,.resize-handle:focus-visible:after,.resize-handle.is-dragging:after{background:var(--accent-primary)}.resize-handle-vertical{cursor:col-resize;width:.75rem;top:0;bottom:0;left:-.375rem}.resize-handle-vertical:after{width:1px;top:0;bottom:0;left:calc(50% - .5px)}.resize-handle-horizontal{cursor:row-resize;height:.75rem;top:-.375rem;left:0;right:0}.resize-handle-horizontal:after{height:1px;bottom:calc(50% - .5px);left:0;right:0}.inspector-collapse-button{z-index:2;min-width:1.7rem;padding:.2rem;font-size:1.1rem;line-height:1;position:absolute;top:.5rem;left:.4rem}.inspector-content{height:100%;padding:3rem .75rem .75rem;overflow-y:auto;container-type:inline-size}.inspector-section{border-bottom:1px solid var(--border)}.inspector-section:last-child{border-bottom:0}.inspector-section-header{justify-content:space-between;align-items:center;gap:.5rem;min-height:2.25rem;display:flex}.inspector-section-toggle{min-width:0;color:var(--text-primary);text-align:left;background:0 0;border:0;border-radius:0;flex:1;align-items:center;gap:.4rem;padding:.4rem 0;font-size:.875rem;font-weight:700;display:flex}.inspector-section-toggle:hover:not(:disabled){color:var(--accent-primary);background:0 0}.inspector-section-disclosure{width:.85rem;color:var(--text-secondary);font-size:.75rem}.inspector-section-actions{flex-shrink:0;align-items:center;display:flex}.inspector-add-button{min-height:1.65rem;padding:.15rem .4rem;font-size:.75rem}.inspector-section-content{padding:.15rem 0 .75rem}.calibration-panel{gap:.5rem;max-width:34rem;display:grid}.calibration-method,.perspective-controls{border:1px solid var(--border);background:var(--bg-elevated);border-radius:.25rem;gap:.5rem;padding:.5rem;display:grid}.calibration-method p,.perspective-controls p{color:var(--text-secondary);margin:0;font-size:.75rem}.calibration-method-options{gap:.35rem;display:flex}.perspective-geometry{border-bottom:1px solid var(--border);gap:.4rem;padding-bottom:.5rem;display:grid}.perspective-geometry h3,.perspective-axis-header h3{margin:0;font-size:.8rem}.perspective-geometry-actions{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.perspective-geometry-actions button{min-height:1.7rem;padding:.16rem .35rem;font-size:.75rem}.perspective-corner-statuses{grid-template-columns:repeat(2,minmax(0,1fr));gap:.2rem .75rem;display:grid}.perspective-corner-statuses>span{min-width:0;color:var(--text-secondary);justify-content:space-between;gap:.4rem;font-size:.75rem;display:flex}.perspective-corner-statuses strong{color:var(--accent-primary);font-size:.75rem}.perspective-grid-control{width:fit-content;color:var(--text-secondary);align-items:center;gap:.35rem;font-size:.75rem;display:flex}.perspective-axis-controls{gap:.35rem;min-width:0;display:grid}.perspective-axis-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.perspective-axis-value-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem;min-width:0;display:grid}.perspective-value-control{min-width:0}.perspective-value-control input{box-sizing:border-box;width:100%;min-width:0}.perspective-calibration-summary{border-top:1px solid var(--border);padding-top:.15rem}.perspective-grid{pointer-events:none}.perspective-grid line{stroke:var(--accent-primary);stroke-width:1px;stroke-opacity:.45}.perspective-grid line.is-boundary{stroke-width:2px;stroke-opacity:.8}.perspective-corner-handle circle{fill:var(--bg-panel);stroke:var(--accent-primary);stroke-width:2px;cursor:move}.perspective-corner-handle text{fill:var(--accent-primary);paint-order:stroke;stroke:var(--text-on-image);stroke-width:3px;pointer-events:none;font:700 11px ui-sans-serif,system-ui,sans-serif}.calibration-summary{color:var(--text-secondary);margin:0;font-size:.8rem;font-weight:600}.calibration-summary.is-complete{color:var(--accent-primary)}.calibration-summary-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.calibrate-all-button{min-height:1.75rem;padding:.2rem .45rem;font-size:.75rem}.axis-calibration-group,.axis-details{border:1px solid var(--border);background:var(--bg-elevated);border-radius:.25rem;gap:.35rem;min-width:0;padding:.5rem;display:grid}.axis-calibration-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.35rem;display:flex}.axis-calibration-header h3,.axis-details h3,.active-data-set-editor h3{margin:0;font-size:.8rem}.axis-scale-control select{border:1px solid var(--border-strong);background:var(--input-bg);min-height:1.75rem;color:var(--text-primary);border-radius:.25rem;padding:.2rem 1.25rem .2rem .35rem;font-size:.75rem}.calibration-reference-list{gap:.25rem;display:grid}.calibration-reference-row{grid-template-columns:1.45rem auto minmax(0,1fr) minmax(4.4rem,.8fr) auto;align-items:end;gap:.3rem;min-width:0;padding:.2rem;display:grid}.calibration-reference-row.is-active{background:var(--selected-bg)}.calibration-reference-row>strong{align-self:center;font-size:.8rem}.calibration-reference-row button{min-height:1.7rem;padding:.16rem .35rem;font-size:.75rem}.reference-picked-status{min-width:0;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.reference-picked-status.is-picked{color:var(--accent-primary);font-weight:600}.reference-value-control{min-width:0;color:var(--text-secondary);gap:.1rem;font-size:.68rem;display:grid}.reference-value-control input,.axis-metadata-row input,.active-data-set-editor input{border:1px solid var(--border-strong);background:var(--input-bg);width:100%;min-width:0;color:var(--text-primary);border-radius:.25rem;padding:.25rem .35rem}.calibration-error{color:var(--danger);margin:0;font-size:.72rem}.axis-details{background:0 0}.axis-metadata-row{grid-template-columns:1rem minmax(0,1fr) minmax(0,.7fr);align-items:end;gap:.35rem;display:grid}.axis-metadata-row>strong{align-self:center;font-size:.8rem}.axis-metadata-row label,.active-data-set-editor label{min-width:0;color:var(--text-secondary);gap:.12rem;font-size:.7rem;display:grid}.display-controls{gap:.45rem;max-width:24rem;display:grid}.display-controls .image-invert-control{width:fit-content}.display-controls .magnifier-zoom-control{grid-template-columns:auto minmax(4rem,1fr) auto;display:grid}.data-sets-panel{gap:.5rem}.point-table-panel{gap:.75rem}.data-set-list{gap:.2rem;max-height:12rem;padding-right:.15rem;display:grid;overflow-y:auto}.data-set-row{text-align:left;background:0 0;border-color:#0000;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.45rem;width:100%;min-width:0;padding:.35rem .4rem;display:grid}.data-set-row:hover:not(:disabled){border-color:var(--border)}.data-set-row.is-active{border-color:var(--accent-primary);background:var(--selected-bg)}.data-set-colour-swatch{border:1px solid var(--border-strong);border-radius:50%;flex:none;width:.65rem;height:.65rem}.data-set-row-name{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:600;overflow:hidden}.data-set-row-count{color:var(--text-secondary);white-space:nowrap;font-size:.72rem}.active-data-set-editor{border-top:1px solid var(--border);gap:.35rem;padding-top:.5rem;display:grid}.active-data-set-colour{grid-template-columns:auto auto 1fr;align-items:center}.active-data-set-colour input[type=color]{background:0 0;border:0;width:1.8rem;height:1.8rem;padding:0}.active-data-set-editor .text-button{margin-top:.15rem}.point-drawer{height:var(--point-drawer-height,15rem);border-top:1px solid var(--border);background:var(--bg-panel);grid-template-rows:auto auto minmax(0,1fr);min-height:0;display:grid;position:relative}.point-drawer.is-collapsed{grid-template-rows:2.375rem;height:2.375rem}.point-drawer-header{align-items:center;gap:.625rem;min-width:0;min-height:2.375rem;padding:.35rem .875rem;display:flex}.point-drawer-context{white-space:nowrap;align-items:center;gap:.4rem;min-width:0;font-size:.8rem;display:flex}.point-drawer-title{color:var(--text-primary);font-weight:700}.point-drawer-context-separator{color:var(--text-secondary)}.point-drawer-data-set-name{min-width:0;max-width:18rem;color:var(--text-primary);text-overflow:ellipsis;font-weight:600;overflow:hidden}.point-drawer-count{color:var(--text-secondary)}.point-drawer-action-bar{z-index:2;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-panel);flex-wrap:wrap;align-items:center;gap:.4rem .75rem;padding:.35rem .875rem;display:flex;position:relative}.point-drawer-actions,.point-selection-actions{flex-wrap:wrap;align-items:center;gap:.35rem;min-width:0;display:flex}.point-drawer-actions button{min-height:1.7rem;padding:.18rem .4rem;font-size:.75rem}.point-selection-actions{border-left:1px solid var(--border);padding-left:.75rem}.point-drawer-actions .text-button,.point-selection-actions .text-button{min-height:auto;padding:0}.point-drawer-action-button{align-items:center;gap:.35rem;display:inline-flex}.extrapolated-delete-control{position:relative}.extrapolated-delete-menu{z-index:4;border:1px solid var(--border-strong);background:var(--bg-panel);min-width:12.5rem;box-shadow:0 .35rem 1rem var(--magnifier-shadow);border-radius:.25rem;padding:.25rem;display:grid;position:absolute;bottom:calc(100% + .35rem);right:0}.extrapolated-delete-menu button{text-align:left;border-color:#0000;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.extrapolated-delete-menu button span{color:var(--text-secondary);font-variant-numeric:tabular-nums}.point-copy-button{min-width:4.75rem}.point-copy-status{color:var(--danger);font-size:.72rem}.point-selection-count{color:var(--accent-primary);white-space:nowrap;font-size:.75rem;font-weight:700}.point-drawer-collapse-button{flex:none;margin-left:auto;padding:.1rem .2rem;font-size:1rem;line-height:1;text-decoration:none}.point-drawer-body{min-height:0;padding:0 .875rem .5rem;overflow:auto}.point-drawer .point-table-panel{min-height:100%;display:block;overflow:visible}.point-drawer .point-table-section-data{min-height:100%}.point-drawer .point-table-panel table{table-layout:auto;width:100%;min-width:31rem}.point-drawer .point-table-panel th{z-index:1;background:var(--bg-panel);position:sticky;top:0}.point-drawer .point-table-panel th,.point-drawer .point-table-panel td{padding:.27rem .4rem}.point-drawer .point-table-panel tbody tr:hover{background:var(--hover-bg)}.point-drawer .point-table-panel tbody tr.is-selected{background:var(--selected-bg);box-shadow:inset .15rem 0 0 var(--accent-primary)}.point-drawer .point-table-panel tbody tr.is-editing{background:color-mix(in srgb, var(--accent-primary) 10%, var(--bg-panel))}.point-drawer .point-table-panel tbody tr.is-editing.is-selected{box-shadow:inset .15rem 0 0 var(--accent-primary), inset 0 -.1rem 0 var(--accent-primary)}.point-drawer .point-table-panel td.is-extrapolated{color:var(--warning);background:color-mix(in srgb, var(--warning) 12%, transparent);font-weight:600}.point-drawer .point-number-column{width:2.5rem}.point-drawer .point-actions-column{width:1%}.point-drawer .point-row-actions{white-space:nowrap;gap:.35rem}.point-drawer .point-row-actions .text-button{font-size:.72rem}.point-editing-status{color:var(--accent-primary);font-size:.75rem;font-weight:700}.point-table-empty-state{align-content:center;gap:.25rem;min-height:4rem;display:grid}.point-table-empty-state strong{color:var(--text-primary)}.point-coordinate-unavailable{color:var(--text-secondary);margin:.45rem 0 .3rem;font-size:.75rem}.project-controls{align-items:center;gap:.4rem;min-width:0;display:flex}.project-controls input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.project-file-actions{flex:none;align-items:center;gap:.25rem;display:flex}.project-file-button{border:1px solid var(--border-strong);background:var(--bg-panel);min-width:6.1rem;min-height:1.8rem;color:var(--text-primary);border-radius:.25rem;padding:.25rem .5rem;font-size:.8rem;font-weight:600;line-height:1.2}.project-file-button:hover:not(:disabled){border-color:var(--accent-primary);background:var(--hover-bg)}.project-file-button.is-saved{color:var(--accent-primary)}.project-file-button:disabled{border-color:var(--border);background:var(--bg-elevated);color:var(--text-secondary)}.project-controls .project-name-input{clip:auto;clip-path:none;border:1px solid var(--border-strong);background:var(--input-bg);width:min(11rem,16vw);min-width:4rem;height:auto;color:var(--text-primary);white-space:normal;border-radius:.25rem;padding:.2rem .35rem;position:static;overflow:visible}.project-name-button{min-width:0;max-width:min(12rem,18vw);color:var(--text-primary);text-align:left;background:0 0;border-color:#0000;align-items:center;gap:.25rem;padding:.2rem .25rem;display:inline-flex;overflow:hidden}.project-name-button:hover:not(:disabled){border-color:var(--border);background:var(--hover-bg);color:var(--text-primary)}.project-name-value{text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:600;overflow:hidden}.project-name-edit-affordance{color:var(--text-secondary);opacity:.7;flex:none;font-size:.8rem;transition:color .12s,opacity .12s}.project-name-button:hover .project-name-edit-affordance,.project-name-button:focus-visible .project-name-edit-affordance{color:var(--accent-primary);opacity:1}.project-status{max-width:9rem;color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.workspace-status-bar{border-top:1px solid var(--border);background:var(--bg-elevated);min-width:0;color:var(--text-secondary);white-space:nowrap;align-items:center;gap:.75rem;padding:0 .875rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;display:flex;overflow:hidden}.workspace-status-content{flex:auto;align-items:center;min-width:0;display:flex;overflow:hidden}.workspace-status-content span{flex:none}.workspace-status-content span+span:before{content:"·";color:var(--border-strong);margin-right:.75rem}.release-notes-button{color:var(--text-secondary);font:inherit;white-space:nowrap;background:0 0;border-color:#0000;flex:none;align-items:center;gap:.3rem;padding:.15rem 0;font-size:.7rem;display:inline-flex}.release-notes-button:hover:not(:disabled){color:var(--accent-primary);background:0 0;border-color:#0000;text-decoration:underline}.release-notes-button svg{fill:none;stroke:currentColor;stroke-width:1.35px;stroke-linecap:round;stroke-linejoin:round;width:.85rem;height:.85rem}.canvas-instruction{color:var(--text-secondary);margin:0;font-size:.8rem}@media (width<=75rem){.app-subtitle,.app-actions-direct{display:none}.topbar-more-control{display:block}.top-image-name{max-width:9rem}}@media (width<=64rem){.app-shell{--inspector-width:18rem}.app-topbar{grid-template-columns:minmax(0,1fr) auto;align-content:center;row-gap:.35rem;padding-top:.35rem;padding-bottom:.35rem}.app-brand-group{min-width:0}.app-actions-group{grid-area:1/2}.topbar-work-actions{flex-wrap:wrap;grid-area:2/1/auto/-1;justify-content:flex-start}.top-image-name{max-width:min(18vw,8rem)}.project-status{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.project-name-button{max-width:10rem}}@media (width<=48rem){.app-shell{--inspector-width:16rem}.top-image-name{display:none}.app-topbar{gap:.35rem;padding-left:.5rem;padding-right:.5rem}.topbar-work-actions{gap:.35rem}.topbar-work-actions button,.top-image-control button{padding:.3rem .45rem}.project-file-button{min-width:auto}.project-name-button{max-width:7rem}.topbar-export-actions{flex-wrap:wrap}.graph-region{padding:.5rem}}@container (width<=17rem){.perspective-axis-value-grid,.perspective-corner-statuses{grid-template-columns:1fr}}
