.wb-upload{position:absolute;top:70px;left:76px;z-index:12;background:#20282b;border:1px solid #485154;color:#d4d9d8;padding:9px 13px;font-size:11px}.wb-upload:hover{border-color:#61d7c7;color:#61d7c7}.editable-canvas{touch-action:none}.editable-canvas .planning-object{cursor:pointer}.editable-canvas .planning-object.selected .shape{filter:drop-shadow(0 0 5px #f5c55d)}.control-handle{fill:#f5c55d;stroke:#202428;stroke-width:3;cursor:move}.rotation-handle{fill:#61d7c7;stroke:#202428;stroke-width:3;cursor:crosshair}.right-panel-body{padding:14px}.panel-empty{padding:48px 24px;text-align:center;color:#829092;font-size:11px;line-height:1.8}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-grid label,.property-fields>label{display:grid;gap:5px;color:#8f9b9b;font-size:10px;margin-bottom:11px}.field-grid input,.property-fields input,.property-fields select{width:100%;background:#262c2f;border:1px solid #3b4447;color:#e0e4e3;padding:8px}.object-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:16px}.object-actions button,.layer-row button{background:#272e31;border:1px solid #3d4649;color:#bfc7c6;padding:8px;font-size:10px}.measure-row,.layer-row{display:flex;align-items:center;gap:9px;width:100%;padding:10px;border:0;border-bottom:1px solid #30383b;background:transparent;color:#c8cfce;text-align:left}.measure-row:hover,.layer-row:hover,.measure-row.active,.layer-row.active{background:#2a3335}.measure-row i{width:3px;height:32px;background:#61d7c7}.measure-row span,.layer-row span{flex:1}.measure-row b,.measure-row small,.layer-row b,.layer-row small{display:block}.measure-row b,.layer-row b{font-size:11px}.measure-row small,.layer-row small{font-size:9px;color:#7f8b8c;margin-top:3px}.layer-row .mini{border:0;padding:4px;background:transparent}.upload-empty{position:absolute;inset:15%;border:1px dashed #536064;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#7d8b8d;pointer-events:none}.upload-empty b{color:#aeb9b8;margin-bottom:6px}.canvas-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:1}.object-svg{position:absolute;inset:0;width:100%;height:100%;z-index:4}.tool-instruction{position:absolute;left:50%;top:68px;transform:translateX(-50%);z-index:11;background:#14191cdd;border:1px solid #3c4749;color:#bfc8c7;padding:8px 14px;font-size:10px;pointer-events:none}.measure-badge{fill:#15201f;stroke:#61d7c7;stroke-width:1}.properties .tabs button{cursor:pointer}.properties .tabs button.active{pointer-events:none}
.workbench-entry-error{position:fixed;inset:0;display:grid;place-items:center;background:#111827;color:#e5edf7}.workbench-entry-error section{width:min(520px,calc(100vw - 40px));padding:34px;border:1px solid #334155;background:#172033}.workbench-entry-error small{color:#f59e0b;letter-spacing:.12em}.workbench-entry-error h2{margin:10px 0}.workbench-entry-error p{color:#aab8cb}.workbench-entry-error section>div{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.workbench-entry-error button{padding:10px 16px;border:1px solid #4b5d75;background:transparent;color:#e5edf7}.workbench-entry-error button.primary{background:#2563eb;border-color:#2563eb}.straight-plate-body{fill:#b9c6d3;fill-opacity:.72}.straight-plate-hit{fill:transparent;stroke:transparent;stroke-width:20;pointer-events:stroke}.straight-plate-hole{fill:#182027;stroke:#f5c55d;stroke-width:1}.plate-trim-guide{stroke:#ef4444;stroke-width:2;stroke-dasharray:5 3;pointer-events:none}.plate-trim-handle{fill:#ef4444;stroke:#fff;stroke-width:2;cursor:ns-resize}.plate-bend-guide{stroke:#f59e0b;stroke-width:1.5;stroke-dasharray:4 3;pointer-events:none}.plate-bend-handle{stroke:#fff;stroke-width:2;cursor:crosshair}.plate-bend-handle.angle{fill:#f59e0b}.plate-bend-handle.radius{fill:#3b82f6}.plate-bend-label,.plate-metric-label{fill:#f8fafc;font-weight:700;pointer-events:none;paint-order:stroke;stroke:#111827;stroke-width:3px}.plate-bend-label{font-size:14px}.straight-plate-panel>header{padding-bottom:12px;border-bottom:1px solid #334155}.straight-plate-panel>header small{color:#60a5fa;letter-spacing:.1em}.straight-plate-panel>header h3{margin:6px 0}.straight-plate-panel>header p{margin:0;color:#94a3b8;font-size:11px}.straight-plate-panel>nav{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:12px 0}.straight-plate-panel>nav button{padding:9px;border:1px solid #3a4656;background:#202a38;color:#aab7c7}.straight-plate-panel>nav button.active{background:#2563eb;border-color:#60a5fa;color:#fff}.plate-panel-body label{display:block;margin-bottom:10px;font-size:11px;color:#b9c5d5}.plate-panel-body input,.plate-panel-body select{width:100%;margin-top:5px;padding:8px;border:1px solid #42516a;background:#111827;color:#f8fafc}.plate-panel-body input[readonly]{color:#8fa0b6;background:#182131}.plate-capability,.plate-mode-note,.plate-clinical-note{padding:10px;border-left:3px solid #3b82f6;background:#172944;color:#bfdbfe;font-size:11px;line-height:1.5}.plate-mode-note{margin-bottom:12px}.plate-clinical-note{margin-top:12px;border-color:#f59e0b;background:#332611;color:#fde68a}.plate-metrics{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:12px 0}.plate-metrics span{padding:8px;background:#172131;color:#94a3b8;font-size:10px}.plate-metrics b{display:block;margin-top:3px;color:#f8fafc;font-size:12px}.plate-reset{width:100%;padding:9px;border:1px solid #52627a;background:transparent;color:#d7e0eb}.plate-zone-add{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:150px;overflow:auto;margin-bottom:12px}.plate-zone-add button{padding:7px;border:1px solid #42516a;background:#1b2737;color:#dbeafe;text-align:left}.plate-zone-add button:disabled{opacity:.35}.plate-zone-add small{display:block;color:#8ca0b8}.plate-bend-list{max-height:270px;overflow:auto}.plate-bend-list article{margin-bottom:9px;padding:9px;border:1px solid #3b485b;background:#182231}.plate-bend-list article>header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.plate-bend-list article>header span{flex:1;color:#f59e0b;font-size:10px}.plate-bend-list article>header button{border:0;background:#7f1d1d;color:#fff}.plate-bend-list .field-grid{grid-template-columns:1fr 1fr}.straight-plate-panel>.object-actions{margin-top:12px}
.readonly-workbench .wb-head button[hidden],.readonly-workbench .wb-upload[hidden]{display:none!important}
.wb-head .wb-case-edit{height:30px;padding:0 10px;border-color:#405774;background:#202b3b;color:#bfdbfe;white-space:nowrap}.wb-head .wb-case-edit:hover,.wb-head .wb-case-edit:focus-visible{border-color:#60a5fa;color:#fff}.wb-head .wb-case-edit:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}@media(max-width:980px){.wb-head .wb-case-edit{font-size:0;padding:0;width:34px}.wb-head .wb-case-edit::after{content:'编辑';font-size:10px}}
.statusbar .status-guidance{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#b8c4c8}
.statusbar .status-guidance::before{content:"操作提示：";color:#60a5fa;font-weight:700;margin-right:3px}
.upload-empty::before{content:"";display:block;width:min(60%,360px);height:min(54%,210px);background:url('/logo/vet-speed-login-logo.png') center/contain no-repeat;filter:brightness(0) invert(1);opacity:.5;flex:none}
.upload-empty[hidden]{display:none}
.editable-canvas.app-xray::before,.editable-canvas.app-xray::after{display:none}
.editable-canvas,.editable-canvas *{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.workbench-text-dialog-backdrop{position:fixed;inset:0;z-index:320;display:grid;place-items:center;padding:24px;background:#080c10b8;backdrop-filter:blur(2px)}
.workbench-text-dialog{width:min(440px,calc(100vw - 40px));background:#f8fafc;color:#17243a;border:1px solid #cbd8e8;box-shadow:0 28px 90px #0009}
.workbench-text-dialog>header{min-height:76px;padding:18px 22px;background:#16243a;color:#f8fafc;display:flex;align-items:flex-start;gap:18px}
.workbench-text-dialog>header span{flex:1}.workbench-text-dialog>header small{display:block;color:#60a5fa;font-size:9px;font-weight:700;letter-spacing:.16em}.workbench-text-dialog>header h2{margin:6px 0 0;font-size:19px;line-height:1.25}
.workbench-text-dialog-close{width:34px;height:34px;border:1px solid #ffffff1f;background:#ffffff0d;color:#dbeafe;font-size:20px;line-height:1;cursor:pointer}
.workbench-text-dialog form{padding:22px}.workbench-text-dialog label{display:block;margin-bottom:7px;color:#46566b;font-size:11px;font-weight:700}
.workbench-text-dialog textarea{width:100%;min-height:132px;padding:11px 12px;border:1px solid #b9c9dc;background:#fff;color:#17243a;font:14px/1.55 inherit;outline:0;resize:vertical}.workbench-text-dialog textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1f}.workbench-text-dialog textarea[aria-invalid="true"]{border-color:#dc5a52;box-shadow:0 0 0 3px #dc5a521c}
.workbench-text-dialog form>p{margin:8px 0 0;color:#738399;font-size:10px;line-height:1.55}.workbench-text-dialog .workbench-text-dialog-error{color:#b42318}
.workbench-text-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:16px;border-top:1px solid #e1e8f0}.workbench-text-dialog footer button{min-width:82px;padding:10px 16px;border:1px solid #c7d3e2;background:#fff;color:#304158;font-size:11px;cursor:pointer}.workbench-text-dialog footer button.primary{border-color:#2563eb;color:#fff}
@media(max-width:560px){.workbench-text-dialog-backdrop{padding:14px}.workbench-text-dialog{width:100%}.workbench-text-dialog form{padding:18px}}

.xray-clip{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}.xray-clip .canvas-image{z-index:auto}.background-crop-overlay{position:absolute;inset:0;z-index:8;pointer-events:none}.background-crop-frame{position:absolute;border:1px dashed #60a5fa;box-shadow:0 0 0 9999px #07111c4d;pointer-events:none}.background-crop-frame button{position:absolute;border:0;background:#60a5fa;box-shadow:0 0 0 2px #07111c;width:10px;height:10px;padding:0;pointer-events:auto}.background-crop-frame [data-crop-edge="top"]{left:50%;top:-5px;transform:translateX(-50%);cursor:ns-resize}.background-crop-frame [data-crop-edge="right"]{right:-5px;top:50%;transform:translateY(-50%);cursor:ew-resize}.background-crop-frame [data-crop-edge="bottom"]{left:50%;bottom:-5px;transform:translateX(-50%);cursor:ns-resize}.background-crop-frame [data-crop-edge="left"]{left:-5px;top:50%;transform:translateY(-50%);cursor:ew-resize}
.background-panel .range-number-row{display:grid;grid-template-columns:minmax(0,1fr) 78px;align-items:center;gap:10px}.background-panel .range-number-row input[type="number"]{width:100%;background:#262c2f;border:1px solid #3b4447;color:#e0e4e3;padding:7px 8px}.background-panel .crop-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0}.background-panel .crop-control-grid label{display:grid;gap:5px;color:#8f9b9b;font-size:10px}.background-panel .crop-control-grid .range-number-row{grid-template-columns:minmax(0,1fr) 62px}
.property-fields textarea[data-prop="value"]{width:100%;min-height:112px;padding:9px;background:#262c2f;border:1px solid #3b4447;color:#e0e4e3;line-height:1.5;resize:vertical}.measurement-label-controls{display:grid;gap:9px}.measurement-label-controls .label-reset-button{width:100%;border:1px solid #3d4649;background:#272e31;color:#bfc7c6;padding:8px;font-size:10px}.persistent-measurement-label{cursor:grab;font-weight:500!important;paint-order:stroke;stroke:#101618;stroke-width:var(--canvas-line-width,1px)!important;stroke-linejoin:round;vector-effect:non-scaling-stroke}.label-drag-hit{fill:transparent;stroke:none;cursor:grab;pointer-events:all}.label-connector{fill:none;stroke:#b9f3eb;stroke-width:1;stroke-dasharray:3 4;vector-effect:non-scaling-stroke;pointer-events:none}.label-connector-arrow{fill:#b9f3eb}.intersection-angle.selectable-label{pointer-events:none}.intersection-label-layer.selected .persistent-measurement-label{filter:drop-shadow(0 0 4px #f5c55d)}
.dxf-dimension-lock-note{margin:10px 0;padding:9px 10px;border-left:2px solid #61d7c7;background:#193031;color:#a7d9d2;font-size:10px;line-height:1.55}
.canvas-status-controls{display:flex;align-items:center;gap:14px;flex:0 0 auto;color:#9aa7aa;font-variant-numeric:tabular-nums}.status-number-control,.canvas-dimension-controls,.canvas-dimension-controls label{display:flex;align-items:center;gap:5px;white-space:nowrap}.canvas-status-controls input{height:20px;border:1px solid #3a4549;background:#20272a;color:#d9e0df;padding:1px 5px;font:10px/1 inherit;font-variant-numeric:tabular-nums;outline:0}.canvas-status-controls input:focus{border-color:#61d7c7;box-shadow:0 0 0 2px #61d7c71f}.canvas-status-controls input[aria-invalid="true"]{border-color:#dc5a52;box-shadow:0 0 0 2px #dc5a521c}.status-number-control input{width:48px}.canvas-dimension-controls input{width:54px}.canvas-dimension-controls>b{color:#5f6c6f;font-weight:400}.canvas-dimension-controls button{height:21px;border:1px solid #48615f;background:#203432;color:#bfece6;padding:1px 8px;font-size:9px;cursor:pointer}.canvas-dimension-controls button:hover{border-color:#61d7c7;color:#e7fffc}.canvas-dimension-controls button:disabled{opacity:.45;cursor:not-allowed}.status-number-control output{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.background-position-readout{display:block;margin:8px 0 12px;padding:7px 9px;border:1px solid #35464a;background:#1c292c;color:#9fded5;font-size:10px;font-variant-numeric:tabular-nums}@media(max-width:1100px){.statusbar{gap:10px}.canvas-status-controls{gap:8px}.canvas-dimension-controls label{gap:3px}.canvas-dimension-controls button{padding-inline:5px}.statusbar #calStatus{display:none}}
.implant-bend-limit-warning{margin:0 0 8px;padding:8px 9px;border:1px solid #765e27;background:#302817;color:#f6d77c;font-size:10px;line-height:1.5}.visual-bend-list .implant-bend-limit-warning,.plate-bend-list .implant-bend-limit-warning{position:sticky;top:0;z-index:2}

.visual-bend-picker{display:grid;gap:6px;margin:0 0 10px;padding:9px;border:1px solid #9a6b25;background:#332611;color:#fde68a;font-size:10px}.visual-bend-picker b{color:#fff7dc}.visual-bend-picker small{color:#fcd34d}.visual-bend-picker>div{display:grid;grid-template-columns:1fr 1fr;gap:6px}.visual-bend-picker button{border:1px solid #785916;background:#25200f;color:#fde68a;padding:8px}.visual-bend-picker .primary{border-color:#f59e0b;background:#b45309;color:#fff}.visual-bend-picker button:disabled{opacity:.45;cursor:not-allowed}.visual-print-action{margin:10px 0}.visual-print-action button{width:100%;border:1px solid #405574;background:#202f44;color:#dbeafe;padding:9px}.visual-bend-preview-line{stroke:#fbbf24;stroke-width:var(--canvas-line-width,1px);stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.visual-bend-preview-handle{fill:#fbbf24;stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke;cursor:ew-resize}
.visual-implant-panel[data-compact-bend="true"] .visual-bend-list{max-height:calc(100vh - 310px);min-height:0}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article{margin-bottom:5px;padding:6px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article>header{margin-bottom:4px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article>header b{font-size:11px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article .field-grid{gap:5px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article label{margin-bottom:0;font-size:9px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-list article input{margin-top:3px;padding:5px 6px;font-size:11px}.visual-implant-panel[data-compact-bend="true"] .visual-add-bend{margin-bottom:6px;min-height:28px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-picker{gap:4px;margin-bottom:6px;padding:6px}.visual-implant-panel[data-compact-bend="true"] .visual-bend-picker button{min-height:28px;padding:5px}.visual-implant-panel[data-compact-bend="true"] .plate-reset{min-height:29px;margin-top:2px;padding:6px}
.visual-implant-panel[data-compact-cut="true"] .visual-cut-side,.visual-implant-panel[data-compact-cut="true"] .visual-inline-actions{gap:5px;margin-bottom:6px}.visual-implant-panel[data-compact-cut="true"] .visual-cut-side button,.visual-implant-panel[data-compact-cut="true"] .visual-inline-actions button{min-height:28px;padding:6px}.visual-implant-panel[data-compact-cut="true"] .visual-implant-panel-body>label{margin-bottom:4px;font-size:10px}.visual-implant-panel[data-compact-cut="true"] #visualCutPosition{margin-top:3px;padding:5px 6px}.visual-implant-panel[data-compact-cut="true"] #visualCutRange{margin:2px 0 6px;padding:0}
.visual-implant-panel .visual-bend-list article>header button{margin-left:auto}.visual-implant-object .visual-implant-segment-hit,.visual-implant-object .visual-cut-handle,.visual-implant-object .visual-bend-preview-handle,.visual-implant-object .visual-bend-handle,.visual-implant-object .rotation-handle{cursor:grab}.visual-implant-grabbing .visual-implant-object .visual-implant-segment-hit,.visual-implant-grabbing .visual-implant-object .visual-cut-handle,.visual-implant-grabbing .visual-implant-object .visual-bend-preview-handle,.visual-implant-grabbing .visual-implant-object .visual-bend-handle,.visual-implant-grabbing .visual-implant-object .rotation-handle{cursor:grabbing!important}

/* Browser-only implant shaping */
.visual-implant-panel>header{padding-bottom:10px;border-bottom:1px solid #334155}.visual-implant-panel>header small{color:#60a5fa;letter-spacing:.1em}.visual-implant-panel>header h3{margin:5px 0}.visual-implant-panel>header p{margin:0;color:#94a3b8;font-size:11px}.visual-implant-panel>nav{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:10px 0}.visual-implant-panel>nav button{min-height:30px;border:1px solid #3a4656;background:#202a38;color:#aab7c7;font-weight:500}.visual-implant-panel>nav button.active{border-color:#60a5fa;background:#294367;color:#fff}.visual-implant-panel-body label{display:block;margin-bottom:9px;color:#b9c5d5;font-size:11px}.visual-implant-panel-body input{width:100%;margin-top:4px;border:1px solid #42516a;background:#111827;color:#f8fafc;padding:7px}.visual-mode-note{margin-bottom:10px;padding:9px;border-left:3px solid #3b82f6;background:#172944;color:#bfdbfe;font-size:11px;line-height:1.5}.visual-cut-side,.visual-inline-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:10px}.visual-cut-side button{border:1px solid #405574;background:#202f44;color:#b7c7d9}.visual-cut-side button.active{border-color:#f87171;background:#4c252b;color:#fee2e2}.visual-cut-preview-values,.visual-shaping-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0}.visual-cut-preview-values span,.visual-shaping-metrics span{min-width:0;padding:7px;background:#172131;color:#94a3b8;font-size:10px}.visual-cut-preview-values b,.visual-shaping-metrics b{display:block;margin-top:2px;color:#f8fafc;font-size:11px;overflow-wrap:anywhere}.visual-dimension-status{margin:10px 0;padding:9px;border-left:3px solid #f59e0b;background:#332611;color:#fde68a;font-size:11px}.visual-dimension-status.trusted{border-color:#10b981;background:#12352f;color:#a7f3d0}.visual-add-bend{width:100%;margin-bottom:10px;border:1px dashed #3b82f6;background:#172944;color:#bfdbfe}.visual-add-bend.active{border-color:#f59e0b;background:#332611;color:#fde68a}.visual-bend-list{max-height:255px;overflow:auto}.visual-bend-list article{margin-bottom:7px;padding:8px;border:1px solid #3b485b;background:#182231}.visual-bend-list article>header{display:flex;align-items:center;gap:7px;margin-bottom:6px}.visual-bend-list article>header span{flex:1;color:#fbbf24;font-size:10px}.visual-bend-list article>header button{border:1px solid #7f1d1d;background:transparent;color:#fca5a5}.visual-bend-list article>small{color:#8ca0b8}.visual-shaping-confirm{margin:12px 0;padding:10px;border:1px solid #3b485b;background:#151f2d}.visual-shaping-confirm h4{margin:0 0 6px}.visual-shaping-confirm ul{margin:0 0 8px;padding-left:16px;color:#94a3b8;font-size:10px}.visual-shaping-confirm>label{display:flex;align-items:flex-start;gap:7px;color:#cbd5e1;font-size:10px;line-height:1.5}.visual-shaping-confirm>label input{flex:0 0 auto;margin-top:2px}.visual-shaping-confirm>div{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}.visual-implant-image{pointer-events:none}.visual-implant-segment-hit{fill:transparent;stroke:transparent;pointer-events:all;cursor:move}.visual-implant-removal-image{opacity:.55;filter:sepia(1) saturate(8) hue-rotate(320deg) brightness(.75)}.visual-cut-line,.visual-bend-guide{stroke-width:var(--canvas-line-width,1px);vector-effect:non-scaling-stroke}.visual-cut-line{stroke:#ef4444;stroke-dasharray:5 3}.visual-cut-handle{fill:#ef4444;stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke;cursor:ew-resize}.visual-bend-guide{stroke:#f59e0b;stroke-dasharray:4 3}.visual-bend-pivot{fill:#111827;stroke:#f59e0b;stroke-width:1;vector-effect:non-scaling-stroke}.visual-bend-handle{fill:#f59e0b;stroke:#fff;stroke-width:1;vector-effect:non-scaling-stroke;cursor:crosshair}.visual-cut-label,.visual-bend-label,.visual-end-label{fill:#f8fafc;font-weight:500;paint-order:stroke;stroke:#111827;stroke-width:1px;vector-effect:non-scaling-stroke;pointer-events:none}.visual-end-label{fill:#60a5fa;text-anchor:middle;dominant-baseline:middle}.implant-shaping-sheet{font-weight:400}.shaping-sheet-warning{line-height:1.6}


/* Unified compact implant property panels. */
.implant-property-panel{display:flex;flex-direction:column;gap:0}
.implant-property-panel>header{padding:0 0 10px!important;border:0!important}
.implant-property-panel .material-view-switcher{margin:10px 0 12px!important;padding:0 0 12px!important;border:0!important;border-bottom:1px solid #334155!important;background:transparent!important}
.material-view-switcher .implant-view-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.material-view-switcher .implant-view-options button{min-height:30px;padding:6px;border:1px solid #405574;background:#202f44;color:#b7c7d9;font-size:10px;font-weight:500;line-height:1.2}
.material-view-switcher .implant-view-options button.active{border-color:#3b82f6;background:#294367;color:#e4efff}
.implant-property-panel>.implant-property-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin:0 0 12px!important}
.implant-property-panel>.implant-property-tabs button{min-height:30px;padding:8px;border:1px solid #3a4656;background:#202a38;color:#aab7c7;font-weight:500}
.implant-property-panel>.implant-property-tabs button.active{border-color:#60a5fa;background:#294367;color:#fff}
.implant-property-panel>.plate-panel-body,.implant-property-panel>.visual-implant-panel-body{padding-top:0}
.implant-property-panel .plate-panel-body label,.implant-property-panel .visual-implant-panel-body label{display:block;margin-bottom:9px;color:#b9c5d5;font-size:11px}
.implant-property-panel .plate-panel-body input,.implant-property-panel .plate-panel-body select,.implant-property-panel .visual-implant-panel-body input{width:100%;margin-top:4px;padding:7px;border:1px solid #42516a;background:#111827;color:#f8fafc}
.implant-property-panel>.implant-property-footer{margin:0}
.implant-property-panel>.implant-property-footer:empty{display:none}
.implant-property-panel>.visual-print-action{margin:0 0 12px}
.implant-property-panel>.implant-property-actions{margin-top:0;padding-top:12px;border-top:1px solid #334155}

/* Unique implant property renderer: the same property-fields contract is used
   by generic, precise and visual implants. */
.unified-material-properties{display:flex;flex-direction:column}
.unified-material-properties .material-view-switcher{margin:10px 0 11px;padding:0;background:transparent;border:0}
.unified-material-properties .implant-view-options,.unified-material-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.unified-material-properties .implant-view-options button,.unified-material-tabs button{min-height:32px;padding:8px;border:1px solid #3d4649;background:#272e31;color:#bfc7c6;font:10px/1.2 inherit}
.unified-material-properties .implant-view-options button.active,.unified-material-tabs button.active{border-color:#60a5fa;background:#2563eb;color:#fff}
.unified-material-properties .implant-view-options button:disabled,.unified-material-tabs button:disabled{opacity:.38;cursor:not-allowed}
.unified-material-tabs{margin:0 0 12px;padding:0 0 12px;border-bottom:1px solid #30383b}
.unified-material-body>label,.unified-material-advanced label{display:grid;gap:5px;margin-bottom:11px;color:#8f9b9b;font-size:10px}
.unified-material-body input,.unified-material-body select,.unified-material-advanced input,.unified-material-advanced select{width:100%;margin-top:0;padding:8px;border:1px solid #3b4447;background:#262c2f;color:#e0e4e3;font:inherit}
.unified-material-advanced .field-grid label{margin-bottom:11px}
.unified-material-advanced input[readonly]{background:#22292c;color:#9eaaa9}
.unified-material-properties .metric{margin:12px 0}
.unified-material-properties .measurement-label-controls{margin-top:0}
.unified-material-properties .implant-property-actions{margin-top:12px;padding-top:12px;border-top:1px solid #30383b}
.unified-material-properties .implant-property-actions [data-retry-material-asset]{grid-column:1/-1}
.unified-material-view-note{margin:10px 0 0;padding:9px 10px;border-left:2px solid #8f9b9b;background:#252d2f;color:#aeb8b7;font-size:10px;line-height:1.55}
.unified-material-advanced .plate-mode-note,.unified-material-advanced .visual-mode-note{margin:0 0 11px;padding:9px 10px;border-left:2px solid #3b82f6;background:#172944;color:#bfdbfe;font-size:10px;line-height:1.55}
.unified-material-advanced .plate-metrics,.unified-material-advanced .visual-cut-preview-values,.unified-material-advanced .visual-shaping-metrics{gap:7px;margin:11px 0}
.unified-material-advanced .plate-metrics span,.unified-material-advanced .visual-cut-preview-values span,.unified-material-advanced .visual-shaping-metrics span{padding:8px;border:1px solid #343d40;background:#242b2e;color:#8f9b9b;font-size:10px}
.unified-material-advanced .plate-metrics b,.unified-material-advanced .visual-cut-preview-values b,.unified-material-advanced .visual-shaping-metrics b{color:#d9e0df;font-size:11px}
.unified-material-advanced button,.unified-material-print{min-height:32px;padding:8px;border:1px solid #3d4649;background:#272e31;color:#bfc7c6;font:10px/1.2 inherit}
.unified-material-advanced button.primary{border-color:#2563eb;background:#2563eb;color:#fff}
.unified-material-advanced .plate-zone-add button,.unified-material-advanced .visual-cut-side button{text-align:center}
.unified-material-advanced .plate-bend-list article,.unified-material-advanced .visual-bend-list article{border:1px solid #3b4447;background:#242b2e}
.unified-material-print{width:100%;margin-top:10px}

/* In-workbench scale calibration dialog. */
.calibration-dialog-backdrop{position:fixed;inset:0;z-index:340;display:grid;place-items:center;padding:20px;background:#05080cbd;backdrop-filter:blur(2px)}
.calibration-dialog-backdrop[hidden]{display:none!important}
.calibration-dialog{width:min(410px,calc(100vw - 40px));border:1px solid #43536a;border-radius:8px;background:#1d242d;box-shadow:0 24px 80px #000a;color:#dbe5f2;overflow:hidden}
.calibration-dialog>header{display:flex;align-items:flex-start;gap:16px;padding:18px 20px 14px;border-bottom:1px solid #354154}
.calibration-dialog>header>span{flex:1;min-width:0}
.calibration-dialog>header small{color:#60a5fa;font-size:10px;letter-spacing:.11em}
.calibration-dialog>header h2{margin:5px 0 0;font-size:17px;line-height:1.35}
.calibration-dialog-close{display:grid;place-items:center;width:28px;min-width:28px;height:28px;padding:0;border:1px solid #465467;background:#242c36;color:#cbd6e4}
.calibration-dialog-close .flat-icon{width:14px;height:14px}
.calibration-dialog form{padding:18px 20px 20px}
.calibration-dialog form>label{display:block;margin-bottom:6px;color:#a9b7c7;font-size:11px}
.calibration-dialog-input{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid #465467;border-radius:4px;background:#111827;overflow:hidden}
.calibration-dialog-input:focus-within{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}
.calibration-dialog-input input{width:100%;height:36px;padding:0 11px;border:0;background:transparent;color:#f8fafc;font:600 14px/1 Manrope,"Noto Sans SC","Microsoft YaHei",sans-serif;outline:0}
.calibration-dialog-input span{padding:0 11px;color:#8fa0b6;font-size:11px}
.calibration-dialog-input:has(input[aria-invalid="true"]){border-color:#ef4444;box-shadow:0 0 0 2px #ef444426}
#calibrationDialogHint{margin:9px 0 0;color:#8fa0b6;font-size:10px;line-height:1.55}
.calibration-dialog-error{margin:8px 0 0;color:#fca5a5;font-size:10px}
.calibration-dialog footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.calibration-dialog footer button{min-width:104px;height:32px;padding:0 11px}
.calibration-dialog footer .property-action-icon{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:5px;background:#334155;color:#fff}
.calibration-dialog footer .property-action-icon .flat-icon{width:12px;height:12px}
.calibration-dialog footer .primary .property-action-icon{background:#ffffff2b}
/* Canvas navigation dial, calibration shape controls and workbench confirmations. */
.canvas-navigation-dial{--dial-rotation:0deg;position:absolute;left:16px;bottom:16px;z-index:18;width:112px;padding:10px;border:1px solid rgba(255,255,255,.16);border-radius:12px;background:rgba(15,23,42,.78);box-shadow:0 12px 30px rgba(0,0,0,.28);backdrop-filter:blur(8px);color:#fff;user-select:none}
.canvas-rotation-dial{position:relative;width:72px;height:72px;margin:0 auto 10px;border-radius:50%;outline:0;cursor:grab}
.canvas-rotation-dial.active{cursor:grabbing}
.canvas-rotation-track{position:absolute;inset:5px;border:2px solid rgba(226,232,240,.7);border-radius:50%;box-shadow:inset 0 0 0 1px rgba(15,23,42,.65)}
.canvas-rotation-indicator{position:absolute;left:50%;top:3px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#fff;box-shadow:0 0 0 3px rgba(96,165,250,.2);transform-origin:4px 33px;transform:rotate(var(--dial-rotation))}
.canvas-rotation-dial [data-rotation-reset]{position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-8px;border:0;border-radius:50%;background:#f8fafc;box-shadow:0 0 0 4px rgba(255,255,255,.08);cursor:pointer}
.canvas-rotation-dial:focus-visible,.canvas-rotation-dial:hover{filter:brightness(1.16)}
.canvas-rotation-dial [data-rotation-reset]:hover,.canvas-rotation-dial [data-rotation-reset]:focus-visible{background:#bfdbfe;box-shadow:0 0 0 5px rgba(59,130,246,.28);outline:0}
.canvas-navigation-dial.resetting .canvas-rotation-indicator{transition:transform .18s ease}
.canvas-zoom-dial{display:grid;grid-template-columns:28px 1fr 28px;align-items:center;gap:4px;height:30px;border-top:1px solid rgba(255,255,255,.12);padding-top:8px}
.canvas-zoom-dial button{height:28px;border:0;border-radius:7px;background:rgba(255,255,255,.08);color:#fff;font:500 20px/1 Arial;cursor:pointer}
.canvas-zoom-dial button:hover,.canvas-zoom-dial button:focus-visible,.canvas-zoom-dial button:active{background:rgba(59,130,246,.52);outline:0}
.canvas-zoom-dial span{overflow:hidden;text-align:center;color:#dbeafe;font:600 9px/1 Manrope,Arial,sans-serif;font-variant-numeric:tabular-nums}
.endpoint-interaction-hit{opacity:0!important;pointer-events:all!important}
.endpoint-style-marker{vector-effect:non-scaling-stroke;stroke-width:var(--endpoint-line-width,1.5px);stroke:#f8fafc;fill:#2563eb}
.endpoint-style-marker.endpoint-style-small,.endpoint-style-marker.endpoint-style-large{fill:rgba(15,23,42,.55);stroke:var(--endpoint-stroke,#60a5fa);stroke-width:var(--endpoint-line-width,1.5px);stroke-dasharray:var(--endpoint-dash,6px 1.5px);stroke-linecap:butt}
.calibration-diameter-circle{vector-effect:non-scaling-stroke}
.calibration-shape-presets{display:grid;gap:8px;margin:9px 0}
.calibration-shape-options,.calibration-length-presets,.calibration-shape-property>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.calibration-length-presets{grid-template-columns:repeat(4,minmax(0,1fr))}
.calibration-shape-presets button,.calibration-shape-property button{min-height:30px;border:1px solid #405574;border-radius:4px;background:#202f44;color:#bfcee0;font-size:10px}
.calibration-shape-presets button.active,.calibration-shape-property button.active{border-color:#60a5fa;background:#294d7a;color:#fff}
.calibration-shape-property{display:grid;gap:6px;margin:10px 0;padding:10px 0;border-top:1px solid #334155}
.calibration-shape-property>span{color:#94a3b8;font-size:10px}
.workbench-action-backdrop{position:absolute;inset:0;z-index:90;display:grid;place-items:center;background:rgba(2,6,23,.58);backdrop-filter:blur(3px)}
.workbench-action-dialog{width:min(390px,calc(100% - 32px));border:1px solid #475569;border-radius:9px;background:#1b2531;color:#dbe7f4;box-shadow:0 24px 60px rgba(0,0,0,.48)}
.workbench-action-dialog header{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px;border-bottom:1px solid #334155}
.workbench-action-dialog header small{color:#60a5fa;font-size:9px;letter-spacing:.12em}
.workbench-action-dialog h2{margin:4px 0 0;font-size:16px}
.workbench-action-dialog header>button{width:30px;height:30px;border:1px solid #475569;border-radius:5px;background:transparent;color:#cbd5e1}
.workbench-action-dialog>p,.delete-prompt-preference{margin:14px 18px;color:#aab8c8;font-size:11px}
.delete-prompt-preference{display:flex;align-items:center;gap:8px}
.workbench-action-dialog footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid #334155}
.workbench-action-dialog footer button{min-width:96px;height:32px;border:1px solid #465467;border-radius:4px;background:#242c36;color:#d7e0eb;font-size:11px}
.workbench-action-dialog footer button.danger{border-color:#b91c1c;background:#b91c1c;color:#fff}
@media(max-width:900px){.canvas-navigation-dial{left:8px;bottom:8px;transform:scale(.92);transform-origin:left bottom}}

/* Fixed-arc ring-saw controls. */
.ring-radius-guide{stroke:#60a5fa;stroke-width:1;stroke-dasharray:4 4;opacity:.7;vector-effect:non-scaling-stroke}
.ring-radius-handle{fill:#2563eb;stroke:#dbeafe;stroke-width:2;cursor:ns-resize;vector-effect:non-scaling-stroke}
.fixed-arc-ring-fields{display:grid;gap:10px;margin:10px 0;padding:10px 0;border-top:1px solid #334155;border-bottom:1px solid #334155}
.fixed-arc-ring-fields label{display:grid;gap:6px;color:#94a3b8;font-size:10px}
.fixed-arc-ring-fields input,.fixed-arc-ring-fields select{width:100%;height:34px;padding:0 9px;border:1px solid #40506a;border-radius:3px;background:#111827;color:#e5edf8;font:11px/1 Manrope,"Noto Sans SC",sans-serif}
.fixed-arc-ring-fields .field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ring-geometry-readout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ring-geometry-readout span{padding:8px;border:1px solid #334155;background:#172033;color:#8fa0b6;font-size:9px}
.ring-geometry-readout b{display:block;margin-top:3px;color:#dbeafe;font-size:11px;font-variant-numeric:tabular-nums}
.ring-measurement-toggle{display:flex!important;align-items:center;justify-content:space-between;min-height:30px}

/* Four-quadrant intersection selector. */
.intersection-quadrant-selector{display:grid;gap:7px;margin:10px 0;padding:10px 0;border-top:1px solid #334155;border-bottom:1px solid #334155}
.intersection-quadrant-selector>span{color:#94a3b8;font-size:10px}
.intersection-quadrant-selector>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.intersection-quadrant-selector button{position:relative;display:flex;align-items:center;justify-content:center;gap:6px;min-height:36px;border:1px solid #3b4b62;border-radius:4px;background:#172033;color:#a9b7c7}
.intersection-quadrant-selector button i{width:10px;height:10px;border:2px solid currentColor;border-radius:12px 2px 2px 2px}
.intersection-quadrant-selector button:nth-child(2) i{transform:rotate(90deg)}
.intersection-quadrant-selector button:nth-child(3) i{transform:rotate(270deg)}
.intersection-quadrant-selector button:nth-child(4) i{transform:rotate(180deg)}
.intersection-quadrant-selector button.active{border-color:#60a5fa;background:#24508a;color:#fff}
.intersection-quadrant-selector button b{font-size:10px;font-variant-numeric:tabular-nums}
.intersection-quadrant-selector>small{color:#708199;font-size:9px}

/* Multi-image tab strip. */
.canvas-stage{position:relative}
.image-tab-bar{position:absolute;left:16px;right:16px;top:10px;z-index:22;display:flex;pointer-events:none}
.image-tab-scroll{display:flex;align-items:stretch;gap:6px;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:2px;scrollbar-width:thin;pointer-events:auto}
.image-tab{display:flex;flex:0 0 auto;min-width:112px;max-width:220px;height:34px;border:1px solid rgba(100,116,139,.52);border-radius:6px;background:rgba(15,23,42,.78);backdrop-filter:blur(7px);overflow:hidden}
.image-tab.active{border-color:#60a5fa;background:rgba(37,80,138,.92);box-shadow:0 0 0 1px rgba(96,165,250,.18)}
.image-tab button{border:0;background:transparent;color:#b8c5d5}
.image-tab-main{display:flex;align-items:center;gap:7px;min-width:0;flex:1;padding:0 8px;cursor:pointer}
.image-tab-main span{display:grid;place-items:center;flex:0 0 18px;width:18px;height:18px;border-radius:50%;background:#334155;color:#dbeafe;font-size:9px}
.image-tab-main b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:600}
.image-tab.active .image-tab-main{color:#fff}
.image-tab.active .image-tab-main span{background:#60a5fa;color:#0f172a}
.image-tab-menu{flex:0 0 28px;width:28px;padding:0;cursor:pointer;opacity:.72}
.image-tab-menu:hover,.image-tab-menu:focus-visible{background:rgba(255,255,255,.12);opacity:1;outline:0}
.image-tab-action-menu{position:fixed;z-index:260;width:190px;padding:6px;border:1px solid #40516a;border-radius:9px;background:#172033;box-shadow:0 16px 42px #02061770}.image-tab-action-menu button{width:100%;min-height:38px;border:0;border-radius:6px;background:transparent;color:#d9e5f5;padding:8px 10px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer}.image-tab-action-menu button:hover,.image-tab-action-menu button:focus-visible{background:#243552;outline:2px solid #60a5fa;outline-offset:-2px}.image-tab-action-menu button.danger{color:#fecaca}.image-tab-action-menu button.danger:hover,.image-tab-action-menu button.danger:focus-visible{background:#4a2028;outline-color:#f87171}.image-tab-action-menu button:disabled{color:#68778b;background:transparent;cursor:not-allowed;opacity:.65}.image-tab-action-menu .flat-icon{width:16px;flex:none}.image-delete-dialog{width:min(520px,calc(100vw - 32px))}.image-delete-dialog p{line-height:1.7}.image-delete-dialog footer .danger{border-color:#b4232f;background:#b4232f;color:#fff}
.wb-head .wb-replace-image{position:static;inset:auto;z-index:auto;height:34px;margin:0 2px;padding:0 11px;white-space:nowrap;background:#202b3b;border-color:#405774;color:#cbd9e9}
.workbench-text-entry{display:grid;gap:7px;margin:16px 18px;color:#aab8c8;font-size:10px}
.workbench-text-entry input{height:36px;padding:0 10px;border:1px solid #46566f;border-radius:3px;background:#111827;color:#f1f5f9;outline:0}
.workbench-text-entry input:focus{border-color:#60a5fa;box-shadow:0 0 0 2px rgba(59,130,246,.22)}
.workbench-action-dialog footer button.primary{border-color:#2563eb;background:#2563eb;color:#fff}
@media(max-width:900px){.image-tab-bar{left:8px;right:8px}.image-tab{min-width:96px}.wb-head .wb-replace-image{display:none}}

/* Centralized image lifecycle management. */
.workbench-image-manager-trigger{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.workbench-image-manager-trigger .flat-icon{width:16px;height:16px}
.readonly-workbench .workbench-image-manager-trigger{display:inline-flex!important;pointer-events:auto}
.workbench-action-dialog.workbench-image-manager{width:min(880px,calc(100% - 40px));max-height:min(760px,calc(100% - 40px));display:grid;grid-template-rows:auto auto minmax(260px,1fr) auto;overflow:hidden}
.workbench-image-manager>header{align-items:center;padding:18px 20px}
.workbench-image-manager>header>div{min-width:0;flex:1}
.workbench-image-manager>header h2{margin:0;font-size:19px}
.workbench-image-manager>header p{overflow:hidden;margin:5px 0 0;color:#93a4b8;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.workbench-image-manager-toolbar{display:flex;align-items:center;gap:14px;padding:12px 20px;border-bottom:1px solid #334155;background:#17212d}
.workbench-image-manager-toolbar nav{display:flex;align-self:stretch;gap:4px;min-width:0;flex:1}
.workbench-image-manager .workbench-image-manager-toolbar nav button{height:34px;min-height:34px;border:1px solid transparent;border-radius:5px;background:transparent;color:#9fb0c4;padding:0 11px;font-size:11px;cursor:pointer}
.workbench-image-manager .workbench-image-manager-toolbar nav button:hover,.workbench-image-manager .workbench-image-manager-toolbar nav button:focus-visible{border-color:#405574;background:#202f44;color:#dbeafe}
.workbench-image-manager .workbench-image-manager-toolbar nav button.active{border-color:#3b82f6;background:#294367;color:#fff}
.workbench-image-manager-toolbar nav span{display:inline-grid;min-width:19px;height:19px;margin-left:5px;padding:0 5px;place-items:center;border-radius:10px;background:#0f172a;color:#bfdbfe;font-size:9px;font-variant-numeric:tabular-nums}
.workbench-image-manager .workbench-image-manager-toolbar>button{height:34px;min-height:34px;border:1px solid #2563eb;border-radius:5px;background:#2563eb;color:#fff;padding:0 13px;display:inline-flex;align-items:center;gap:7px;font-size:11px;white-space:nowrap;cursor:pointer}
.workbench-image-manager-toolbar>button .flat-icon{width:15px;height:15px}
.workbench-image-manager-body{min-height:0;overflow:auto;padding:16px 20px;background:#151e29;scrollbar-color:#52647b #151e29}
.workbench-image-manager-readonly{margin:0 0 12px;padding:10px 12px;border:1px solid #66583d;border-radius:5px;background:#2c261b;color:#f4d38c;font-size:10px;line-height:1.55}
.workbench-image-manager-list{display:grid;gap:8px}
.workbench-image-manager-row{display:grid;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:72px;padding:11px 12px;border:1px solid #334155;border-radius:6px;background:#1b2531}
.workbench-image-manager-row.current{border-color:#3b82f6;background:#1d2d43}
.workbench-image-manager-row.deleted{background:#19222d}
.workbench-image-manager-icon{width:38px;height:38px;border-radius:6px;background:#24344a;color:#60a5fa;display:grid;place-items:center}
.workbench-image-manager-row.deleted .workbench-image-manager-icon{background:#2a3039;color:#94a3b8}
.workbench-image-manager-icon .flat-icon{width:19px;height:19px}
.workbench-image-manager-copy{min-width:0}
.workbench-image-manager-copy>div{display:flex;align-items:center;gap:8px;min-width:0}
.workbench-image-manager-copy b{overflow:hidden;color:#e5edf7;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.workbench-image-manager-copy em{flex:0 0 auto;border-radius:10px;background:#2563eb;color:#fff;padding:3px 7px;font-size:8px;font-style:normal}
.workbench-image-manager-copy small{display:block;margin-top:4px;color:#8798ac;font-size:9px;font-variant-numeric:tabular-nums}
.workbench-image-manager-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}
.workbench-image-manager .workbench-image-manager-actions button{height:30px;min-height:30px;border:1px solid #41536b;border-radius:4px;background:#202d3e;color:#cbd8e8;padding:0 9px;display:inline-flex;align-items:center;gap:5px;font-size:10px;white-space:nowrap;cursor:pointer}
.workbench-image-manager .workbench-image-manager-actions button:hover,.workbench-image-manager .workbench-image-manager-actions button:focus-visible{border-color:#60a5fa;background:#294367;color:#fff}
.workbench-image-manager .workbench-image-manager-actions button.danger{height:30px;min-height:30px;border:1px solid #76404a;background:#35232a;color:#fecaca;padding:0 9px}
.workbench-image-manager .workbench-image-manager-actions button.danger:hover,.workbench-image-manager .workbench-image-manager-actions button.danger:focus-visible{border-color:#f87171;background:#4a2028;color:#fff}
.workbench-image-manager-actions .flat-icon{width:13px;height:13px}
.workbench-image-manager-empty,.workbench-image-manager-loading{min-height:170px;border:1px dashed #40516a;border-radius:6px;color:#8fa0b4;display:grid;place-items:center;padding:28px;text-align:center;font-size:11px}
.workbench-image-manager-empty.error{gap:12px;color:#fecaca}
.workbench-image-manager .workbench-image-manager-empty button{height:30px;border:1px solid #526983;border-radius:4px;background:#24344a;color:#dbeafe;padding:0 12px}
.workbench-image-manager>footer{align-items:center;justify-content:flex-end}
.workbench-image-manager>footer button{min-width:84px}

/* Keep dark popover actions independent from the global light danger button. */
.image-tab-action-menu button.danger{height:auto;min-height:38px;padding:8px 10px;border:0;border-radius:6px;background:transparent;color:#fecaca}
.image-tab-action-menu button.danger:hover,.image-tab-action-menu button.danger:focus-visible{border:0;background:#4a2028;color:#fff;outline:2px solid #f87171;outline-offset:-2px}
.image-tab-action-menu button.danger:disabled{height:auto;min-height:38px;border:0;background:transparent;color:#8b6870;opacity:.62!important}

.measurement-drawing-preview{filter:drop-shadow(0 0 1px rgba(3,7,18,.9))}

@media(max-width:900px){.workbench-action-dialog.workbench-image-manager{width:calc(100% - 20px);max-height:calc(100% - 20px)}.workbench-image-manager-toolbar{align-items:stretch;flex-direction:column}.workbench-image-manager-toolbar nav{overflow-x:auto}.workbench-image-manager .workbench-image-manager-toolbar>button{align-self:flex-end}.workbench-image-manager-row{grid-template-columns:36px minmax(0,1fr)}.workbench-image-manager-actions{grid-column:2;justify-content:flex-start}}

.material-replacement-field{display:grid;gap:6px;margin:9px 0 11px;color:#94a3b8;font-size:10px}
.material-replacement-field select{width:100%;height:34px;padding:0 9px;border:1px solid #40506a;border-radius:3px;background:#111827;color:#e5edf8;font:10px/1.2 Manrope,"Noto Sans SC",sans-serif}
/* Angle-object quadrants and compact ring-saw radius handle. */
.ring-radius-handle-hit{fill:transparent;stroke:transparent;cursor:ns-resize;pointer-events:all}
.ring-radius-handle-dot{fill:none;stroke:#2563eb;stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}
.angle-quadrant-extension{stroke-dasharray:4 4;stroke-linecap:round;vector-effect:non-scaling-stroke}
.angle-ray-extension{fill:none;stroke-dasharray:4 4;stroke-linecap:round;vector-effect:non-scaling-stroke;pointer-events:none}
.object-svg .planning-object>line.angle-ray-extension,.object-svg .intersection-angle>line.angle-ray-extension{stroke-width:calc(var(--canvas-line-width,1px)*var(--object-line-width,1))!important}
.intersection-angle>.angle-ray-extension{stroke:#60a5fa}
.angle-object-quadrants{display:grid;gap:8px;margin:10px 0;padding:10px 0;border-top:1px solid #334155;border-bottom:1px solid #334155}
.angle-object-quadrants>span{color:#94a3b8;font-size:10px}
.wb-head{position:relative}.canvas-settings-button{display:grid;place-items:center;width:34px;height:34px;padding:0!important;border:1px solid #40516a!important;border-radius:4px;background:#202b3b!important;color:#cbd9e9!important}.canvas-settings-button:hover,.canvas-settings-button[aria-expanded="true"]{border-color:#60a5fa!important;background:#263b58!important;color:#fff!important}.canvas-settings-button .flat-icon{width:17px;height:17px}.canvas-settings-popover{position:absolute;right:8px;top:calc(100% + 8px);z-index:80;width:286px;padding:0 14px 14px;border:1px solid #40516a;border-radius:8px;background:rgba(20,29,43,.97);box-shadow:0 18px 48px rgba(0,0,0,.42);backdrop-filter:blur(12px)}.canvas-settings-popover header{display:flex;align-items:center;gap:10px;margin:0 -14px 12px;padding:12px 14px;border-bottom:1px solid #334155}.canvas-settings-popover header div{display:grid;gap:3px;flex:1}.canvas-settings-popover header small{color:#60a5fa;font-size:8px;letter-spacing:.12em}.canvas-settings-popover header b{font-size:12px;color:#eef5ff}.canvas-settings-popover header button{width:26px;height:26px;padding:0;border:1px solid #46566d;background:transparent;color:#aab8ca}.canvas-settings-popover>label{display:grid;grid-template-columns:1fr 100px;align-items:center;gap:10px;margin:9px 0;color:#aab8ca;font-size:10px}.canvas-settings-popover input[type="number"],.canvas-settings-popover input[type="color"]{width:100%;height:32px;box-sizing:border-box;border:1px solid #40516a;border-radius:3px;background:#111827;color:#eef5ff;padding:4px 8px}.canvas-setting-switch{grid-template-columns:1fr auto!important;margin-top:13px!important;padding-top:12px;border-top:1px solid #334155}.canvas-setting-switch span{display:grid;gap:3px}.canvas-setting-switch b{color:#dbe7f5;font-size:10px}.canvas-setting-switch small{color:#71839b;font-size:8px;line-height:1.4}.canvas-setting-switch input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.canvas-setting-switch input:focus-visible+i{outline:2px solid #93c5fd;outline-offset:2px}.canvas-setting-switch>i{position:relative;width:34px;height:18px;border-radius:10px;background:#475366}.canvas-setting-switch>i:after{content:"";position:absolute;left:3px;top:3px;width:12px;height:12px;border-radius:50%;background:#d9e2ee;transition:.15s}.canvas-setting-switch input:checked+i{background:#2563eb}.canvas-setting-switch input:checked+i:after{transform:translateX(16px);background:#fff}.multi-quadrant-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.multi-quadrant-grid button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:38px;border:1px solid #3b4b62;border-radius:5px;background:#172033;color:#a9b7c7}.multi-quadrant-grid button i{width:10px;height:10px;border:2px solid currentColor;border-radius:12px 2px 2px 2px}.multi-quadrant-grid button:nth-child(2) i{transform:rotate(90deg)}.multi-quadrant-grid button:nth-child(3) i{transform:rotate(270deg)}.multi-quadrant-grid button:nth-child(4) i{transform:rotate(180deg)}.multi-quadrant-grid button.active{border-color:#60a5fa;background:#24508a;color:#fff;box-shadow:0 0 0 2px rgba(37,99,235,.16)}.multi-quadrant-grid button b{font-size:10px;font-variant-numeric:tabular-nums}.angle-object-quadrants>.multi-quadrant-grid{width:100%;margin:0}.angle-object-quadrants>small,.intersection-quadrant-selector.multi>small{color:#708199;font-size:9px}.ring-arc-hit{fill:none;stroke:transparent!important;stroke-width:40px!important;pointer-events:stroke;cursor:none;vector-effect:non-scaling-stroke}.ring-arc-hover{fill:none;stroke:#60a5fa!important;stroke-width:7px!important;opacity:0;filter:drop-shadow(0 0 6px rgba(96,165,250,.95));vector-effect:non-scaling-stroke;transition:opacity .12s}.ring-arc-hit:hover+.ring-arc-hover{opacity:.95}.ring-arc-cursor{--ring-cursor-angle:0deg;position:fixed;z-index:140;width:30px;height:16px;transform:translate(-50%,-50%) rotate(var(--ring-cursor-angle));pointer-events:none;opacity:0;color:#eff6ff;filter:drop-shadow(0 1px 3px #020617);transition:opacity .08s}.ring-arc-cursor.visible{opacity:1}.ring-arc-cursor svg{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.intersection-angle-hit{fill:none;stroke:transparent!important;stroke-width:18px!important;pointer-events:stroke;cursor:pointer}.intersection-center-hit{fill:transparent;stroke:transparent!important;pointer-events:all;cursor:pointer}.intersection-center-dot{fill:#2563eb;stroke:none;vector-effect:non-scaling-stroke}.layer-row{display:grid!important;grid-template-columns:18px minmax(0,1fr) auto;gap:7px!important;align-items:center}
.layer-row--special>.layer-info{grid-column:1/-1}
.layer-info{min-width:0;overflow-wrap:anywhere}.layer-info b,.layer-info small{display:block}.layer-info small{white-space:normal}
.layer-actions{display:grid!important;grid-template-columns:repeat(5,28px);gap:4px;align-items:center;justify-content:end;flex:0 0 auto}.layer-actions>.layer-actions{display:contents!important}
.layer-actions button{display:grid!important;place-items:center;width:28px!important;min-width:28px!important;height:28px!important;min-height:28px!important;padding:0!important}.layer-actions button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.layer-drag-handle{display:grid;align-content:center;gap:2px;width:18px;height:28px;padding:0!important;border:0!important;background:transparent!important;cursor:grab}.layer-drag-handle span{display:block;width:12px;height:1px;background:#71839b}.layer-drag-handle:active{cursor:grabbing}.layer-drag-handle:disabled{cursor:not-allowed;opacity:.28}
.layer-row.dragging{opacity:.42}.layer-row.drag-over{box-shadow:inset 0 2px #60a5fa}.layer-action--order:disabled{opacity:.24}
.endpoint-style-marker.endpoint-style-point,.endpoint-style-marker.endpoint-fixed-center{fill:#2563eb;stroke:none}
.layer-row>[data-layer-actions]{align-self:center!important}
.workbench .layer-row{grid-template-columns:18px minmax(0,1fr) 156px!important;align-items:center!important}.workbench .layer-row--special>.layer-info{grid-column:1/-1!important}.workbench .layer-actions{display:grid!important;grid-template-columns:repeat(5,28px)!important;width:156px!important;min-width:156px!important;align-self:center!important}
.pan-tool-guidance{display:grid;gap:6px;padding:4px 0;color:#cbd5e1}.pan-tool-guidance>small{color:#60a5fa;font-size:9px;letter-spacing:.12em}.pan-tool-guidance h3{margin:0;color:#e5edf7;font-size:16px}

.right-panel-body .unified-cut-spec-field select{font-size:10px!important;line-height:1.2!important}
/* One shared cutting-tool picker and calibrated measurement inputs. */
.unified-cut-picker,.unified-cut-object-selector{display:grid;gap:10px;min-width:0}.unified-cut-picker>header{display:grid;gap:5px;padding-bottom:11px;border-bottom:1px solid #334155}.unified-cut-picker>header small{color:#60a5fa;font-size:9px;letter-spacing:.12em}.unified-cut-picker>header h3{margin:0;color:#e5edf7;font-size:16px}.unified-cut-picker>header p{margin:0;color:#8798ad;font-size:10px;line-height:1.55}.cut-kind-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.cut-kind-tabs button{display:flex;align-items:center;justify-content:center;gap:6px;height:34px;min-width:0;border:1px solid #40516a;border-radius:4px;background:#1c293a;color:#aebdd0;font-size:10px}.cut-kind-tabs button .flat-icon{width:14px;height:14px}.cut-kind-tabs button.active{border-color:#60a5fa;background:#24508a;color:#fff;box-shadow:0 0 0 2px rgba(37,99,235,.14)}.unified-cut-spec-field,.calibrated-dimension-field{display:grid;gap:6px;min-width:0;color:#94a3b8;font-size:10px}.unified-cut-spec-field select,.calibrated-dimension-field input{box-sizing:border-box;width:100%;height:34px;min-width:0;padding:0 9px;border:1px solid #40506a;border-radius:3px;background:#111827;color:#e5edf8;font:10px/1.2 Manrope,"Noto Sans SC","Microsoft YaHei",sans-serif;text-overflow:ellipsis}.unified-cut-spec-field small,.calibrated-dimension-field small{overflow-wrap:anywhere;color:#72839a;font-size:9px;line-height:1.45}.cut-placement-note{padding:9px 10px;border-left:3px solid #3b82f6;background:#17243a;color:#a9bad0;font-size:9px;line-height:1.5}.unified-cut-object-selector{margin:10px 0;padding:10px 0;border-top:1px solid #334155;border-bottom:1px solid #334155}.calibrated-dimension-field{margin:10px 0;padding:10px 0;border-top:1px solid #334155;border-bottom:1px solid #334155}.cut-type-replacement-dialog .primary{border-color:#2563eb!important;background:#2563eb!important;color:#fff!important}
.inline-text-editing>.text-annotation-card{opacity:0}
.inline-text-editor-foreign{overflow:visible}
.inline-text-editor{display:grid;grid-template-rows:auto minmax(32px,1fr);gap:4px;width:100%;height:100%;box-sizing:border-box;color:var(--inline-color);opacity:var(--inline-text-opacity);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;pointer-events:auto}
.inline-text-editor input,.inline-text-editor textarea{min-width:0;width:100%;box-sizing:border-box;margin:0;outline:none;font-family:inherit;caret-color:#fff}
.inline-text-title{padding:0 2px;border:0;background:transparent;color:var(--inline-color);font-size:var(--inline-title-size);font-weight:700;line-height:1.25;text-shadow:0 1px 2px rgba(0,0,0,.7)}
.inline-text-body{height:100%;min-height:32px;padding:7px 8px;resize:none;overflow:auto;border:1px solid color-mix(in srgb,var(--inline-color) 72%,#fff);border-radius:3px;background:color-mix(in srgb,var(--inline-color) 50%,transparent);font-size:var(--inline-body-size);line-height:1.35;color:var(--inline-color);box-shadow:0 0 0 2px rgba(37,99,235,.25)}
.inline-text-body::placeholder{color:color-mix(in srgb,var(--inline-color) 62%,transparent)}
.inline-text-title:focus,.inline-text-body:focus{box-shadow:0 0 0 2px rgba(96,165,250,.65)}
.ring-arc-endpoint-dot{fill:#60a5fa;stroke:none;vector-effect:non-scaling-stroke}
.ring-arc-endpoint-halo{fill:rgba(96,165,250,.14);stroke:#60a5fa;stroke-width:1px;opacity:0;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 5px rgba(96,165,250,.9));transition:opacity .12s}
.ring-arc-endpoint-hit{fill:transparent;stroke:transparent;cursor:none}
.ring-arc-endpoint-hover{fill:none;stroke:#60a5fa!important;stroke-width:7px!important;opacity:0;filter:drop-shadow(0 0 6px rgba(96,165,250,.95));vector-effect:non-scaling-stroke;transition:opacity .12s}
.ring-saw-object:has(.ring-arc-endpoint-hit:hover) .ring-arc-endpoint-hover,.ring-saw-object:has(.ring-arc-endpoint-hit:hover) .ring-arc-endpoint-halo{opacity:.95}
.text-annotation-card{cursor:grab}.text-annotation-card:active{cursor:grabbing}.inline-text-editing>.text-annotation-card{cursor:text}
.fixed-radius-ring-fields input[readonly]{color:#93c5fd;background:#172033;cursor:not-allowed}
.calibration-object .calibration-hit{fill:none;stroke:transparent}.calibration-object .calibration-shape{stroke-linecap:butt;filter:drop-shadow(0 0 3px rgba(245,184,61,.28))}.calibration-object .calibration-endpoint-ring,.calibration-object .calibration-endpoint-dot{vector-effect:non-scaling-stroke;pointer-events:none}.calibration-object.selected .calibration-shape{filter:drop-shadow(0 0 5px rgba(245,184,61,.58))}.calibration-object .calibration-endpoint-hit{cursor:move}.calibration-object .calibration-endpoint-marker:has(.calibration-endpoint-hit:hover) .calibration-endpoint-ring,.calibration-object .calibration-endpoint-marker:has(.calibration-endpoint-hit:hover) .calibration-endpoint-dot{filter:drop-shadow(0 0 5px #f5b83d)}
.ring-rotation-travel{grid-template-columns:minmax(0,1fr)!important}.ring-rotation-travel span{min-height:48px;border-left:3px solid #3b82f6;background:#17243a}.ring-position-lock-note{margin:7px 0 10px;padding:8px 10px;border-left:3px solid #60a5fa;background:#162235;color:#9fb2c9;font-size:9px;line-height:1.5}
.point-creation-active .planning-object,.point-creation-active .planning-object *,.point-creation-active .intersection-angle,.point-creation-active .intersection-angle *{cursor:crosshair!important}.point-creation-active .planning-object .label-drag-hit{pointer-events:none}.point-creation-active .ring-extracted-layer,.point-creation-active .ring-extracted-layer *{cursor:crosshair!important}

.canvas-settings-toggle-group{display:grid;gap:2px;margin-top:13px;padding-top:8px;border-top:1px solid #334155}
.canvas-settings-toggle-group .canvas-setting-switch{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:36px;margin:0!important;padding:0;border:0;color:#aab8ca;cursor:pointer}
.canvas-settings-toggle-group .canvas-setting-switch b{font-size:10px;line-height:1.35}
.canvas-settings-toggle-group .canvas-setting-switch:has(input:disabled){cursor:not-allowed;opacity:.55}

/* Circle geometry uses separate visible affordances and forgiving hit areas. */
.editable-canvas .circle-tool-object .circle-center-hit{cursor:move}
.editable-canvas .circle-tool-object.circle-radius-editable .circle-radius-hit,.editable-canvas .circle-tool-object.circle-radius-editable .circle-radius-point-hit{cursor:nwse-resize}
.editable-canvas .circle-tool-object.circle-radius-editable .circle-radius-visual{transition:filter .12s ease,opacity .12s ease}
.editable-canvas .circle-tool-object.circle-radius-editable:has(.circle-radius-hit:hover) .circle-radius-visual,.editable-canvas .circle-tool-object.circle-radius-editable:has(.circle-radius-point-hit:hover) .circle-radius-visual{filter:drop-shadow(0 0 4px rgba(96,165,250,.8));opacity:1}
.editable-canvas .circle-tool-object:not(.circle-radius-editable) .circle-radius-hit{cursor:pointer}

/* Unified scene: the logical canvas frame stays fixed while image and planning
   layers share rotation, zoom and pan. */
.image-canvas{overflow:hidden}
.canvas-scene-layer{position:absolute;inset:0;z-index:1;transform-origin:50% 50%;will-change:transform}
.canvas-scene-layer .xray-clip,.canvas-scene-layer .object-svg{position:absolute;inset:0;width:100%;height:100%}
.canvas-scene-layer .xray-clip{z-index:1;overflow:hidden}.canvas-scene-layer .object-svg{z-index:4}
.pan-tool-active{cursor:grab}.pan-tool-active:active,.pan-tool-active:has(.canvas-scene-layer:active),.pan-tool-active.scene-pan-dragging{cursor:grabbing}
.pan-tool-active .planning-object,.pan-tool-active .planning-object *{cursor:grab!important}.pan-tool-active.scene-pan-dragging .planning-object,.pan-tool-active.scene-pan-dragging .planning-object *{cursor:grabbing!important}

/* Canvas crop is an explicit focus mode rather than four permanent inputs. */
.visual-crop-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:36px;margin:12px 0 8px;border:1px solid #40516a;border-radius:4px;background:#1c2a3e;color:#dbeafe;font-size:10px;cursor:pointer}
.visual-crop-button:hover,.visual-crop-button:focus-visible{border-color:#60a5fa;background:#243b5e;color:#fff}.visual-crop-button:disabled{opacity:.45;cursor:not-allowed}.visual-crop-button .flat-icon{width:15px;height:15px}
.background-crop-overlay{z-index:24;background:rgba(2,6,23,.38);pointer-events:auto}
.background-crop-frame{box-shadow:0 0 0 200vmax rgba(2,6,23,.68),inset 0 0 0 1px rgba(255,255,255,.24)}
.background-crop-frame button{background:#60a5fa;opacity:.8}.background-crop-frame button:hover{opacity:1;box-shadow:0 0 0 4px rgba(96,165,250,.18)}
.visual-crop-actions{position:absolute;left:50%;bottom:18px;display:flex;gap:8px;transform:translateX(-50%);padding:7px;border:1px solid #42526a;border-radius:7px;background:#111827;box-shadow:0 12px 28px rgba(0,0,0,.38)}
.visual-crop-actions button{min-width:92px;height:34px;border:1px solid #46566d;border-radius:4px;background:#202b3b;color:#dbe7f5;font-size:10px}.visual-crop-actions button.primary{border-color:#2563eb;background:#2563eb;color:#fff}

/* High-contrast calibration remains legible on white, grey and black images. */
.calibration-object .calibration-shape-casing{filter:drop-shadow(0 1px 2px rgba(255,255,255,.28))}.calibration-object .persistent-measurement-label{paint-order:stroke fill;stroke:#101722;stroke-width:3px;stroke-linejoin:round}

/* Compact clinical panels and searchable cutting presets. */
.compact-ring-geometry{display:grid;gap:10px;margin:10px 0}.compact-ring-geometry>.field-grid{gap:8px}.compact-ring-geometry label{display:grid;gap:5px;color:#9aaac0;font-size:10px}.compact-ring-geometry input{width:100%;box-sizing:border-box;background:#202833;border:1px solid #40516a;color:#eef5ff;padding:8px}
.cut-preset-combobox{position:relative;display:grid;gap:5px;margin:10px 0;color:#aab8ca;font-size:10px}.cut-combobox-field{display:grid;grid-template-columns:minmax(0,1fr) 34px}.cut-combobox-field input,.cut-combobox-field button{height:36px;box-sizing:border-box;border:1px solid #40516a;background:#182235;color:#eef5ff}.cut-combobox-field input{min-width:0;padding:7px 10px;border-radius:4px 0 0 4px;font-size:10px}.cut-combobox-field button{border-left:0;border-radius:0 4px 4px 0;font-size:15px}.cut-preset-results{position:absolute;z-index:90;top:60px;left:0;right:0;max-height:220px;overflow:auto;padding:5px;border:1px solid #40516a;border-radius:5px;background:#111827;box-shadow:0 14px 30px rgba(0,0,0,.42)}
.right-panel-body .cut-preset-combobox .cut-combobox-field input{font-size:10px!important}
.cut-preset-results button{display:grid;gap:2px;width:100%;padding:8px 9px;border:0;border-radius:3px;background:transparent;color:#dbe7f5;text-align:left}.cut-preset-results button:hover,.cut-preset-results button:focus-visible,.cut-preset-results button.exact,.cut-preset-results button.keyboard-active{background:#233b60}.cut-preset-results button.current{box-shadow:inset 2px 0 #60a5fa}.cut-preset-results b{font-size:10px}.cut-preset-results small{color:#7f93ad;font-size:8px}.cut-preset-results p{margin:0;padding:16px;color:#73849a;text-align:center;font-size:9px}
.cut-empty-fields{margin-top:10px}.cut-empty-fields label{display:grid;gap:5px;color:#8495aa;font-size:9px}.cut-empty-fields input{width:100%;box-sizing:border-box;border:1px solid #334155;background:#18202d;color:#718096;padding:8px}.cut-kind-preview>.object-actions{margin-top:12px}.cut-alternate-empty{padding-bottom:8px}
.ring-object-panel>.ring-status,.ring-object-panel>.wedge-panel-status{margin:5px 0 8px;padding:5px 8px;border:1px solid #344760;border-radius:3px;background:#172235;color:#9eb0c7;font-size:9px}
.property-fields>[data-calibrated-angle]{display:grid;gap:5px;margin:8px 0 10px;color:#9aa7aa;font-size:10px}.property-fields>[data-calibrated-angle] input{width:100%;box-sizing:border-box}

/* Infinite workspace: the center column is the viewport, not a document frame. */
.workbench .canvas-stage{display:block;position:relative;min-width:0;min-height:0;overflow:hidden;background:#20262d}
.workbench .image-canvas{position:absolute;inset:0;width:100%!important;height:100%!important;max-width:none!important;aspect-ratio:auto!important;overflow:hidden;background:transparent;box-shadow:none;transform:none!important}
.workbench .canvas-scene-layer{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}
.workbench .canvas-scene-layer .object-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.workbench .canvas-scene-layer .xray-clip{position:absolute;right:auto;bottom:auto;overflow:visible}
.workbench .canvas-scene-layer .canvas-image{inset:auto;object-fit:contain}
.workbench .canvas-dimension-controls{display:none!important}

/* Geometry-backed chooser for genuinely overlapping planning layers. */
.overlap-layer-menu{position:fixed;z-index:420;width:min(280px,calc(100vw - 16px));overflow:hidden;border:1px solid #41516a;border-radius:9px;background:#111827;color:#e5edf8;box-shadow:0 18px 44px rgba(0,0,0,.52)}
.overlap-layer-menu header{display:flex;align-items:center;justify-content:space-between;padding:10px 11px;border-bottom:1px solid #2e3b50}.overlap-layer-menu header b{font-size:11px}.overlap-layer-menu header span{color:#7f91a9;font-size:9px}
.custom-wedge-editor{display:grid;gap:10px}.custom-wedge-fields{margin:0}.custom-wedge-fields input[aria-invalid="true"]{border-color:#ef646b;box-shadow:0 0 0 1px rgba(239,100,107,.18)}.custom-wedge-feedback{min-height:16px;margin:0;color:#8fa4bd;font-size:10px;line-height:16px}.custom-wedge-convert{width:100%}.custom-wedge-picker .cut-kind-tabs,.custom-wedge-object-selector .cut-kind-tabs{margin-bottom:2px}.custom-wedge-object-selector{display:grid;gap:12px}
.stable-cut-object-panel{display:grid;gap:12px;min-width:0;padding-top:10px}
.stable-cut-object-panel>.cut-panel-mode{order:1;min-width:0}
.stable-cut-object-panel>.cut-panel-parameters{order:2;display:grid;gap:10px;min-width:0;padding:0 0 12px;border-bottom:1px solid #334155}
.stable-cut-object-panel>.ring-cut-actionbar,.stable-cut-object-panel>.cut-object-actionbar{order:3}
.stable-cut-object-panel>.ring-opacity-field{order:4;margin:0!important;padding:0 0 12px;border-bottom:1px solid #334155}
.stable-cut-object-panel>.measurement-label-controls{order:5;margin:0!important}
.stable-cut-object-panel>.object-actions{order:6;margin-top:0!important}
.stable-cut-object-panel .cut-kind-tabs{margin:0}
.stable-cut-object-panel .cut-preset-combobox{margin:0}
.stable-cut-object-panel .cut-panel-geometry{display:grid;gap:10px;min-width:0;margin:0;padding:0;border:0}
.stable-cut-object-panel .compact-ring-geometry>.field-grid,.stable-cut-object-panel .custom-wedge-fields{gap:8px}
.stable-cut-object-panel .custom-wedge-editor{gap:8px}
.stable-cut-object-panel .custom-wedge-feedback:empty{display:none}
.stable-cut-object-panel .wedge-inline-control{display:grid;gap:5px;margin:0;color:#9aaac0;font-size:10px}
.stable-cut-object-panel .wedge-inline-control input{width:100%;height:34px;box-sizing:border-box;border:1px solid #40516a;border-radius:3px;background:#202833;color:#eef5ff;padding:0 9px}
.cut-object-actionbar{display:grid;grid-template-columns:1fr;min-width:0;margin:0}
.cut-object-actionbar .ring-cut-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:100%;height:32px;border:1px solid #2563eb;border-radius:4px;background:#2563eb;color:#fff;font-size:10px;font-weight:600}
.overlap-layer-options{display:grid;max-height:min(320px,60vh);overflow:auto;padding:5px}.overlap-layer-options button{display:grid;grid-template-columns:28px minmax(0,1fr) 20px;align-items:center;gap:8px;min-height:48px;padding:6px 8px;border:0;border-radius:5px;background:transparent;color:#dce7f5;text-align:left}.overlap-layer-options button:hover,.overlap-layer-options button:focus-visible{outline:0;background:#1e2e47}.overlap-layer-options button.selected{background:#223b61;box-shadow:inset 2px 0 #60a5fa}
.overlap-layer-icon{display:grid;width:28px;height:28px;place-items:center;border-radius:5px;background:rgba(59,130,246,.18);color:#8bb8ff}.overlap-layer-icon svg,.overlap-layer-state svg{width:15px;height:15px}.overlap-layer-copy{display:grid;min-width:0;gap:2px}.overlap-layer-copy b,.overlap-layer-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overlap-layer-copy b{font-size:10px}.overlap-layer-copy small{color:#8497b0;font-size:8px}.overlap-layer-state{display:grid;color:#8eb9ff;place-items:center}
.workspace-fit-button{display:inline-flex;align-items:center;justify-content:center;height:21px;border:1px solid #42556b;border-radius:3px;background:#202b39;color:#c8d6e6;padding:0 8px;font-size:9px;cursor:pointer}
.workspace-fit-button:hover,.workspace-fit-button:focus-visible{border-color:#60a5fa;background:#263b58;color:#fff}
.workspace-fit-button:disabled{cursor:not-allowed;opacity:.45}
.image-canvas[data-infinite-workspace="true"]{touch-action:none}
.image-canvas[data-infinite-workspace="true"] .upload-empty{inset:24px}
