.rotation-guide{stroke:#60a5fa;stroke-width:2;stroke-dasharray:5 4}.rotation-handle{fill:#2563eb!important;stroke:#dbeafe!important;stroke-width:3;cursor:grab}.rotation-handle:hover{fill:#60a5fa!important;r:12}.rotation-handle:active{cursor:grabbing}.angle-arc{stroke-linecap:round}.intersection-angle path{fill:none;stroke:#60a5fa;stroke-width:2;stroke-linecap:round}.endpoint-ring,.endpoint-handle{fill:transparent!important;pointer-events:all!important;cursor:move}.endpoint-ring:hover,.endpoint-handle:hover{fill:#60a5fa22!important;stroke-width:4}.object-hit-area{fill:none!important;stroke:transparent!important;stroke-width:18!important;pointer-events:stroke!important}.generate-line{grid-column:1/3!important;color:#93c5fd!important;border-color:#4c6f9f!important;display:flex;align-items:center;justify-content:center;gap:6px}.generate-line .flat-icon{width:14px}
.ring-saw-panel header{margin-bottom:18px}.ring-saw-panel header small{color:#60a5fa;font-size:9px;letter-spacing:.12em}.ring-saw-panel header h3{margin:5px 0 7px;color:#edf5ff}.ring-saw-panel header p{margin:0;color:#8b9bad;font-size:11px;line-height:1.6}.ring-saw-panel>label{display:grid;gap:6px;color:#91a0b0;font-size:10px;margin-bottom:13px}.ring-saw-panel input,.ring-saw-panel select{width:100%;box-sizing:border-box;background:#20282f;border:1px solid #3d4d5d;color:#e5edf7;padding:9px}.ring-saw-steps{display:grid;gap:9px;margin:18px 0;padding:13px;background:#1c252e;border:1px solid #30445a;color:#a9b6c4;font-size:10px}.ring-saw-steps>b{color:#d8e7f7}.ring-saw-steps span{display:flex;align-items:center;gap:8px}.ring-saw-steps i{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#2563eb;color:white;font-style:normal}.ring-saw-ready{display:flex;align-items:center;gap:9px;padding:11px;background:#162d48;border:1px solid #285f99;color:#93c5fd;font-size:11px}.ring-saw-ready .flat-icon{width:18px}.ring-status{padding:8px!important;border:1px solid #9a6b25;background:#392b16;color:#fbbf24!important}.ring-status.confirmed{border-color:#276749;background:#153b31;color:#6ee7b7!important}.ring-edit-note{margin:14px 0;padding:10px;background:#192d42;color:#93c5fd;font-size:10px;line-height:1.55}.ring-confirm-actions{display:grid;grid-template-columns:1fr 1.3fr;gap:7px}.ring-confirm-actions button{border:1px solid #415365;background:#252f39;color:#c4d0dc;padding:9px;font-size:10px}.ring-confirm-actions .primary{background:#2563eb;border-color:#2563eb;color:white}.ring-sector-preview{fill:#f59e0b80;stroke:#fbbf24;stroke-width:2}.ring-supplement-preview{fill:#3b82f680;stroke:#60a5fa;stroke-width:2}.ring-outline,.ring-supplement-outline{fill:transparent;stroke:#93c5fd;stroke-width:2;stroke-dasharray:7 4;pointer-events:all}.ring-crosshair{stroke:#dbeafe;stroke-width:1;stroke-dasharray:5 4;pointer-events:none}.ring-angle-label{fill:#dbeafe;font-size:16px;font-weight:700;paint-order:stroke;stroke:#101820;stroke-width:4;pointer-events:none}.ring-cutout{fill:#070b10;stroke:#111827;stroke-width:2}.ring-extracted-image{pointer-events:all}.ring-saw-object.selected .ring-outline,.ring-saw-object.selected .ring-supplement-outline{stroke:#fbbf24;filter:drop-shadow(0 0 4px #60a5fa)}
.ring-status.drawing{border-color:#2563eb;background:#172f55;color:#93c5fd!important}.ring-start-supplement{width:100%;margin:0 0 9px;padding:11px;border:1px solid #3b82f6;background:#1d4ed8;color:#fff;font-weight:700;cursor:pointer}.ring-start-supplement.active{background:#7c2d12;border-color:#fb923c;color:#ffedd5}.ring-supplement-preview{stroke:none!important}.ring-supplement-drawing{fill:none;stroke:#60a5fa;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:.78;pointer-events:none}.ring-saw-object .ring-supplement-outline{display:none}
.endpoint-ring,.endpoint-handle{stroke-width:1!important}.wb-head .wb-upload-top{position:static;inset:auto;z-index:auto;margin:0 2px 0 8px;height:34px;padding:0 11px;white-space:nowrap;background:#203653;border:1px solid #41658f;color:#dbeafe}.wb-head .wb-upload-top:hover{border-color:#60a5fa;color:#fff}.space-pan .object-svg{cursor:grab!important}.space-pan .object-svg:active{cursor:grabbing!important}
.object-svg [stroke-dasharray],.object-svg .ring-outline,.object-svg .wedge-outline,.object-svg .line-diameter-circle{stroke-dasharray:1 7!important;stroke-linecap:round!important}.line-circle-toggle{display:flex!important;align-items:center;gap:10px;margin:13px 0!important;padding:10px;border:1px solid #3b4c65;background:#233147;cursor:pointer}.line-circle-toggle>span{flex:1}.line-circle-toggle b,.line-circle-toggle small{display:block}.line-circle-toggle b{font-size:10px;color:#d1deed}.line-circle-toggle small{font-size:8px;color:#8092aa;margin-top:3px}.line-circle-toggle input{display:none}.line-circle-toggle>i{width:34px;height:18px;border-radius:10px;background:#475366;position:relative}.line-circle-toggle>i:after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#d9e2ee;left:3px;top:3px;transition:.15s}.line-circle-toggle input:checked+i{background:#2563eb}.line-circle-toggle input:checked+i:after{transform:translateX(16px);background:#fff}
.object-svg [stroke-dasharray],.object-svg .ring-outline,.object-svg .wedge-outline,.object-svg .line-diameter-circle{stroke-dasharray:1 5!important}.calibration-scale-field{display:grid!important;gap:6px;margin:12px 0!important;color:#92a3b8;font-size:10px}.calibration-scale-field input{width:100%;background:#1c293b;border:1px solid #4b6688;color:#e2ecf7;padding:9px}.calibration-scale-field small{font-size:8px;color:#6f86a2}.calibration-magnifier{position:absolute;z-index:45;width:164px;height:164px;border-radius:50%;overflow:hidden;pointer-events:none;background:#070b10;border:2px solid #60a5fa;box-shadow:0 12px 34px #02050acc,0 0 0 4px #172944cc}.calibration-magnifier[hidden]{display:none}.calibration-magnifier svg{width:100%;height:100%;display:block;background:#080d13}.calibration-magnifier>i{position:absolute;left:50%;top:50%;width:5px;height:5px;transform:translate(-50%,-50%);border-radius:50%;background:#2563eb;border:1px solid #eff6ff;box-shadow:0 0 0 1px #172944}.calibration-magnifier>i:before,.calibration-magnifier>i:after{content:"";position:absolute;left:50%;top:50%;background:#60a5fa;transform:translate(-50%,-50%);box-shadow:0 0 1px #0b1727}.calibration-magnifier>i:before{width:25px;height:1px}.calibration-magnifier>i:after{width:1px;height:25px}.calibration-magnifier>span{position:absolute;left:50%;bottom:9px;transform:translateX(-50%);white-space:nowrap;background:#10233fd9;border:1px solid #3b82f6;color:#dbeafe;padding:3px 7px;font-size:8px;letter-spacing:.04em}
.calibration-magnifier>i:before,.calibration-magnifier>i:after{display:none!important}
.measurement-label-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0;padding:10px;border:1px solid #3b4c65;background:#1d2a3c}.measurement-label-controls>label{margin:0!important}.measurement-label-controls>label:first-child{display:grid;gap:5px;color:#91a3b8;font-size:9px}.measurement-label-controls input[type="number"]{width:100%;box-sizing:border-box;background:#152238;border:1px solid #456184;color:#e1ecf8;padding:8px}.measurement-label-switch{display:flex!important;align-items:center;gap:7px;padding:7px 8px;border:1px solid #344b69;background:#22324a;cursor:pointer}.measurement-label-switch>span{flex:1}.measurement-label-switch b,.measurement-label-switch small{display:block}.measurement-label-switch b{font-size:9px;color:#d4e2f1}.measurement-label-switch small{font-size:7px;color:#7f94ae;margin-top:2px}.measurement-label-switch input{display:none}.measurement-label-switch>i{width:30px;height:16px;border-radius:9px;background:#475366;position:relative;flex:0 0 auto}.measurement-label-switch>i:after{content:"";position:absolute;width:10px;height:10px;left:3px;top:3px;border-radius:50%;background:#d9e2ee;transition:.15s}.measurement-label-switch input:checked+i{background:#2563eb}.measurement-label-switch input:checked+i:after{transform:translateX(14px);background:#fff}
.measurement-label-controls{margin:14px 0!important;padding:0!important;border:0!important;background:transparent!important}.measurement-label-controls>label:first-child{font-size:var(--type-label)!important;color:#8f9b9b!important;line-height:1.35}.measurement-label-controls input[type="number"]{font-size:var(--type-control)!important;background:#262c2f!important;border-color:#3b4447!important;color:#e0e4e3!important}.measurement-label-switch{padding:7px 0!important;border:0!important;background:transparent!important}.measurement-label-switch>span{font-size:var(--type-label)!important;color:#c8d0cf!important;line-height:1.35}.measurement-label-switch b,.measurement-label-switch small{font-size:inherit!important}
.object-svg.cut-supplement-active{cursor:crosshair}.cut-supplement-hit{fill:transparent;pointer-events:all;cursor:crosshair}

/* 画布可见线条保持屏幕视觉 1px；透明命中层继续使用原有宽度。 */
.object-svg :where(line,polyline,path,circle,ellipse,polygon,rect):not(.object-hit-area):not(.straight-plate-hit){stroke-width:var(--canvas-line-width,1px)!important;vector-effect:non-scaling-stroke}
.object-svg .ring-cutout,.object-svg .ring-cutout.ring-cutout path,.object-svg .ring-cutout.ring-cutout polygon{stroke:none!important;stroke-width:0!important}
.editable-canvas .planning-object.selected .shape,.ring-saw-object.selected .ring-outline,.ring-saw-object.selected .ring-supplement-outline,.wedge-object.selected .wedge-outline{filter:none!important}
.object-svg .planning-object>text:not(.shape),.object-svg .ring-angle-label,.object-svg .plate-bend-label,.object-svg .plate-metric-label,.object-svg .intersection-angle text{font-weight:500!important;paint-order:stroke;stroke:#101820;stroke-width:var(--canvas-line-width,1px)!important;vector-effect:non-scaling-stroke}
.object-svg .planning-object .ring-radius-handle-dot{stroke-width:2px!important;stroke-linecap:round!important;vector-effect:non-scaling-stroke}
.object-svg .planning-object>.shape:not(.ring-sector-preview):not(.ring-supplement-preview),.object-svg .intersection-angle>path:not(.intersection-angle-hit){stroke-width:calc(var(--canvas-line-width,1px)*var(--object-line-width,1))!important}.object-svg .planning-object path.ring-arc-hit{stroke-width:40px!important}.object-svg .planning-object path.ring-arc-hover{stroke-width:7px!important}.object-svg .intersection-angle-hit{stroke-width:18px!important}.object-svg .intersection-center line.intersection-center-dot{stroke:#2563eb!important;stroke-width:3px!important;stroke-linecap:round!important;vector-effect:non-scaling-stroke}
