.sw{display:inline-block;width:11px;height:11px;border-radius:2px;vertical-align:-1px;border:1px solid var(--piece-edge);flex:0 0 auto}.sw-piece{background:var(--piece-0)}.sw-waste{background:repeating-linear-gradient(45deg,var(--waste-hatch) 0 1px,var(--waste) 1px 4px)}.sw-remnant{background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--remnant-edge) 45%,transparent) 0 1px,var(--remnant) 1px 4px);border-color:var(--remnant-edge)}.sw-kerf{background:var(--kerf);border-color:var(--kerf);width:4px}.sw-selected{background:transparent;border:2px solid var(--selection);box-shadow:0 0 0 2px var(--selection-halo)}.cv{position:absolute;inset:0;overflow:hidden;background-color:var(--canvas);background-image:radial-gradient(circle,var(--canvas-grid) 1px,transparent 1.2px);background-size:24px 24px;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default;outline:none}.cv:focus-visible{box-shadow:inset 0 0 0 2px var(--accent);border-radius:0}.cv[data-space=true]{cursor:-webkit-grab;cursor:grab}.cv[data-panning=true]{cursor:-webkit-grabbing;cursor:grabbing}.cv-svg{position:absolute;inset:0;display:block;font-family:var(--font)}.cv-group-name{font:650 13px var(--font-display);fill:var(--text-primary);letter-spacing:-.01em}.cv-group-meta{font-size:11.5px;fill:var(--text-muted)}.cv-bin-id{font:700 10.5px var(--mono);letter-spacing:.08em;fill:var(--text-primary)}.cv-bin-size{font:500 11.5px var(--mono);fill:var(--text-secondary)}.cv-bin-util{font:650 11.5px var(--mono);fill:var(--text-primary)}.cv-bin-util-k{font:500 10.5px var(--font);fill:var(--text-muted)}.cv-stock{stroke:none}.cv-stock-edge{fill:none;stroke:var(--stock-edge);stroke-width:1.25;pointer-events:none}.cv-hatch-bg{fill:var(--waste)}.cv-hatch-line{stroke:var(--waste-hatch);stroke-width:1}.cv-piece{cursor:pointer}.cv-piece rect{fill:var(--piece-0);stroke:var(--piece-edge);stroke-width:1;shape-rendering:crispEdges;transition:fill var(--t-fast) var(--ease),opacity var(--t) var(--ease)}.cv-piece[data-family="1"] rect{fill:var(--piece-1)}.cv-piece[data-family="2"] rect{fill:var(--piece-2)}.cv-piece[data-family="3"] rect{fill:var(--piece-3)}.cv-piece[data-family="4"] rect{fill:var(--piece-4)}.cv-piece[data-family="5"] rect{fill:var(--piece-5)}.cv-piece[data-family="6"] rect{fill:var(--piece-6)}.cv-piece[data-family="7"] rect{fill:var(--piece-7)}.cv-piece:hover rect{fill:color-mix(in srgb,var(--piece-0) 85%,var(--text-primary) 8%)}.cv-piece[data-family="1"]:hover rect{fill:color-mix(in srgb,var(--piece-1) 85%,var(--text-primary) 8%)}.cv-piece[data-family="2"]:hover rect{fill:color-mix(in srgb,var(--piece-2) 85%,var(--text-primary) 8%)}.cv-piece[data-family="3"]:hover rect{fill:color-mix(in srgb,var(--piece-3) 85%,var(--text-primary) 8%)}.cv-piece[data-family="4"]:hover rect{fill:color-mix(in srgb,var(--piece-4) 85%,var(--text-primary) 8%)}.cv-piece[data-family="5"]:hover rect{fill:color-mix(in srgb,var(--piece-5) 85%,var(--text-primary) 8%)}.cv-piece[data-family="6"]:hover rect{fill:color-mix(in srgb,var(--piece-6) 85%,var(--text-primary) 8%)}.cv-piece[data-family="7"]:hover rect{fill:color-mix(in srgb,var(--piece-7) 85%,var(--text-primary) 8%)}.cv-piece[data-dimmed=true]{opacity:.28}.cv-piece text{text-anchor:middle;dominant-baseline:central;fill:var(--piece-ink);pointer-events:none}.cv-piece-name{font-weight:600}.cv-piece-dims{font-family:var(--mono);fill:color-mix(in srgb,var(--piece-ink) 72%,transparent)!important}.cv-strong{font-weight:650;fill:var(--piece-ink)!important}.cv-piece-code{font-family:var(--mono);font-weight:700}.cv-piece-rot{font:650 9px var(--mono);letter-spacing:.06em;text-anchor:end!important;fill:color-mix(in srgb,var(--piece-ink) 55%,transparent)!important}.cv-remnant-bg{fill:var(--remnant)}.cv-remnant-line{stroke:color-mix(in srgb,var(--remnant-edge) 40%,transparent);stroke-width:1}.cv-remnant rect{stroke:var(--remnant-edge);stroke-width:1;stroke-dasharray:4 3}.cv-remnant text,.cv-waste text{text-anchor:middle;dominant-baseline:central;pointer-events:none}.cv-remnant-k,.cv-waste-k{font:700 9.5px var(--font);letter-spacing:.1em}.cv-remnant-k,.cv-remnant-v{fill:var(--remnant-ink)}.cv-remnant-v,.cv-waste-v{font-family:var(--mono);font-size:11px;font-weight:600}.cv-waste-k,.cv-waste-v{fill:var(--text-secondary)}.cv-waste-k{fill:var(--text-muted)}.cv-cut{cursor:crosshair}.cv-cut-hit{fill:transparent}.cv-kerf{fill:var(--kerf);opacity:.88;pointer-events:none;transition:opacity var(--t-fast) var(--ease)}.cv-cut[data-fine=true] .cv-kerf,.cv-kerf[data-fine=true]{opacity:.62}.cv-cut[data-zero=true] .cv-kerf{fill:none;stroke:var(--kerf);stroke-dasharray:3 3;opacity:.7}.cv-cut:hover .cv-kerf{opacity:1}.cv-kerf-linear{opacity:.9}.cv-seq circle{fill:var(--surface-raised);stroke:var(--kerf);stroke-width:1.25}.cv-seq text{font:700 9.5px var(--mono);fill:var(--kerf);text-anchor:middle;dominant-baseline:central}.cv-positions line{stroke:var(--text-muted);stroke-width:1}.cv-positions text{font:500 10px var(--mono);fill:var(--text-muted);text-anchor:middle}.cv-outline-hover{fill:none;stroke:var(--text-primary);stroke-width:1.5;pointer-events:none}.cv-outline-selected{fill:color-mix(in srgb,var(--selection) 10%,transparent);stroke:var(--selection);stroke-width:2;pointer-events:none;filter:drop-shadow(0 0 3px var(--selection-halo));animation:select-in var(--t) var(--ease-out)}@keyframes select-in{0%{stroke-width:6;opacity:.2}}.cv-cut-active{fill:var(--kerf);stroke:var(--kerf);stroke-width:1;filter:drop-shadow(0 0 4px var(--blade-soft));pointer-events:none}.cv-dim line{stroke:var(--selection);stroke-width:1}.cv-dim text{font:650 11px var(--mono);fill:var(--selection);text-anchor:middle;dominant-baseline:central}.cv-dim-bg{fill:var(--surface-raised);stroke:color-mix(in srgb,var(--selection) 35%,transparent);stroke-width:1}.cv-arrow{fill:var(--selection)}.cv[data-emphasis] .cv-piece rect{opacity:.22}.cv[data-emphasis=waste] .cv-hatch-line{stroke:var(--text-primary);stroke-width:1.5}.cv[data-emphasis=kerf] .cv-kerf{opacity:1;filter:drop-shadow(0 0 2px var(--kerf))}.cv[data-emphasis=remnant] .cv-remnant rect{stroke-width:2;stroke-dasharray:none}.cv[data-emphasis] .cv-piece text{opacity:.35}.cv-ruler{position:absolute;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;z-index:2}.cv-ruler-x{top:0;left:0;border-bottom:1px solid var(--border)}.cv-ruler-y{top:0;left:0;border-right:1px solid var(--border)}.cv-ruler text{font:500 9.5px var(--mono);fill:var(--text-muted)}.cv-tick{stroke:var(--text-muted);stroke-width:1}.cv-tick-minor{stroke:var(--border-strong);stroke-width:1}.cv-ruler-span{fill:color-mix(in srgb,var(--accent) 22%,transparent)}.cv-ruler-cursor{stroke:var(--blade);stroke-width:1}.cv-ruler-corner{position:absolute;top:0;left:0;width:22px;height:22px;display:grid;place-items:center;z-index:3;background:var(--surface);border-right:1px solid var(--border);border-bottom:1px solid var(--border);font:600 9px var(--mono);color:var(--text-muted);pointer-events:none}.cv-legend,.cv-legend-wrap>.cv-tool,.cv-zoom{background:color-mix(in srgb,var(--surface-raised) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);box-shadow:var(--shadow-2)}.cv-zoom{position:absolute;right:12px;bottom:12px;z-index:3;display:flex;gap:1px;padding:3px;border-radius:var(--radius)}.cv-tool,.cv-zoom{align-items:center}.cv-tool{display:inline-flex;justify-content:center;gap:6px;height:28px;min-width:28px;min-height:0;padding:0 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font:inherit;font-size:12px;font-weight:560;cursor:pointer}.cv-tool:hover{background:var(--surface-hover);color:var(--text-primary)}.cv-tool-text{padding:0 9px 0 7px}.cv-zoom-value{height:28px;min-width:56px;min-height:0;padding:0 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font:600 12px var(--mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;cursor:pointer}.cv-zoom-value:hover{background:var(--surface-hover)}.cv-sep{width:1px;height:18px;background:var(--border);margin:0 3px}.cv-legend-wrap{position:absolute;left:34px;bottom:12px;z-index:3;display:flex;flex-direction:column-reverse;align-items:flex-start;gap:6px}.cv-legend-wrap>.cv-tool{border-radius:var(--radius);height:34px}.cv-legend{margin:0;padding:10px 12px;border-radius:var(--radius);display:grid;grid-gap:7px;gap:7px;width:260px;animation:pop var(--t) var(--ease-out)}.cv-legend div{display:grid;grid-template-columns:18px 1fr;grid-gap:8px;gap:8px;align-items:start}.cv-legend dt{padding-top:3px}.cv-legend dd{margin:0;font-size:12px;font-weight:560;line-height:1.35}.cv-legend small{display:block;font-weight:400;color:var(--text-muted);font-size:11px}@keyframes pop{0%{opacity:0;transform:translateY(4px) scale(.98)}}.cv-tag{pointer-events:none;animation:pop .1s var(--ease-out)}.cv-tag rect{fill:var(--surface-raised);stroke:var(--border-strong);stroke-width:1;filter:drop-shadow(0 2px 6px rgb(0 0 0/14%))}.cv-tag text{font:500 11px var(--mono);fill:var(--text-secondary)}.cv-tag text[data-strong=true]{font:650 11.5px var(--font);fill:var(--text-primary)}.cv-tag[data-tone=blade] rect{stroke:var(--kerf)}.cv-tag[data-tone=blade] text[data-strong=true]{fill:var(--kerf)}.cv-remnant[data-kind=roll] rect{stroke-dasharray:6 4}.cv-idle{display:grid;place-items:center;padding:24px}.cv-minimap{position:absolute;right:12px;bottom:56px;z-index:3;padding:6px;border-radius:var(--radius);background:color-mix(in srgb,var(--surface-raised) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);box-shadow:var(--shadow-2);animation:pop var(--t) var(--ease-out)}.cv-minimap svg{display:block;cursor:pointer;touch-action:none}.cv-minimap-bin{fill:var(--piece-0);stroke:var(--piece-edge);stroke-width:.5}.cv-minimap-view{fill:color-mix(in srgb,var(--selection) 12%,transparent);stroke:var(--selection);stroke-width:1.25}.cv-band line{stroke:var(--band);stroke-width:3;stroke-linecap:round;pointer-events:none}.cv-piece[data-dimmed=true] .cv-band line{opacity:.35}.sw-band{background:var(--piece-0);border-left:3px solid var(--band)}