:root{--bg:#f3f3ef;--surface:#fff;--surface-2:#efefea;--field-bg:#f7f7f4;--field-border:#e7e7e1;--text:#1d1d1b;--muted:#6b6b66;--border:#dcdcd5;--accent:#2f6f5e;--accent-text:#fff;--material:#e8d9bd;--material-edge:#b89b6a;--cut:#e0301e;--engrave:#2456d6;--key:#4f7fb0;--below:#9a9a92;--warn-bg:#fff4dc;--warn-text:#7a5200;--error-bg:#fde7e4;--error-text:#9b1c10;--info-bg:#e8f0fb;--info-text:#1e4a87;--viewport-bg:#eceae4;--best-bg:#fcefd2;--best-text:#8a5300;--util-low:#c2321f;--util-fair:#b06a00;--util-good:#6a8a12;--util-great:#1f8a4c;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b6b66' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--shadow-1:0 1px 2px #1e1e140d, 0 1px 4px #1e1e140a;--shadow-2:0 12px 40px #1e1e142e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--accent-soft:color-mix(in srgb, var(--accent) 12%, var(--surface));--field-changed-bg:color-mix(in srgb, var(--accent) 8%, var(--surface));--focus:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);--radius-sm:6px;--radius:10px;--radius-lg:14px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141513;--surface:#1f201e;--surface-2:#2a2b28;--field-bg:#252623;--field-border:#30312d;--text:#ecece7;--muted:#9d9d95;--border:#363733;--accent:#5fb59b;--accent-text:#0e1a16;--material:#6b5a3e;--material-edge:#a68b5c;--cut:#ff6a55;--engrave:#7ea2ff;--key:#6f9fd0;--below:#74746c;--warn-bg:#3a2f14;--warn-text:#f1cf7c;--error-bg:#3e1b17;--error-text:#ffaa9e;--info-bg:#17283f;--info-text:#a9c6f2;--viewport-bg:#1b1c1a;--best-bg:#3d3014;--best-text:#f3c86b;--util-low:#ff7d6b;--util-fair:#f0b04a;--util-good:#b9d65c;--util-great:#5fd08e;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239d9d95' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--shadow-1:0 1px 2px #0000004d;--shadow-2:0 12px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#141513;--surface:#1f201e;--surface-2:#2a2b28;--field-bg:#252623;--field-border:#30312d;--text:#ecece7;--muted:#9d9d95;--border:#363733;--accent:#5fb59b;--accent-text:#0e1a16;--material:#6b5a3e;--material-edge:#a68b5c;--cut:#ff6a55;--engrave:#7ea2ff;--key:#6f9fd0;--below:#74746c;--warn-bg:#3a2f14;--warn-text:#f1cf7c;--error-bg:#3e1b17;--error-text:#ffaa9e;--info-bg:#17283f;--info-text:#a9c6f2;--viewport-bg:#1b1c1a;--best-bg:#3d3014;--best-text:#f3c86b;--util-low:#ff7d6b;--util-fair:#f0b04a;--util-good:#b9d65c;--util-great:#5fd08e;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239d9d95' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--shadow-1:0 1px 2px #0000004d;--shadow-2:0 12px 40px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);accent-color:var(--accent);-webkit-font-smoothing:antialiased;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.muted{color:var(--muted)}.icon{flex:none}.topbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.brand{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.brand .logo{flex:none;width:28px;height:28px}.brand strong{letter-spacing:-.01em;font-size:17px}.brand .muted{font-size:13px}.version{background:var(--surface-2);color:var(--muted);font-variant-numeric:tabular-nums;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.file-actions{align-items:center;gap:8px;display:flex}body:not(.has-model) .layout,body:not(.has-model) .model-only,body.has-model .welcome{display:none!important}.button,button,select,input[type=number]{font:inherit;color:inherit}.button,.sheet-card button{border:1px solid var(--border);background:var(--surface);height:32px;box-shadow:var(--shadow-1);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 12px;transition:background .12s,border-color .12s,filter .12s;display:inline-flex}.button:hover:not(:disabled),.sheet-card button:hover{background:var(--surface-2)}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.button.primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.button.ghost{box-shadow:none;background:0 0;border-color:#0000}.button.ghost:hover:not(:disabled){background:var(--surface-2)}.button.small{height:26px;padding:0 9px;font-size:12px}.button:disabled{opacity:.5;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible{box-shadow:var(--focus);outline:none}select,input[type=number]{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);min-width:0;height:32px;padding:0 8px}select{appearance:none;background-image:var(--chevron);cursor:pointer;background-position:right 10px center;background-repeat:no-repeat;background-size:12px 12px;padding-right:30px}select:hover:not(:disabled){border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}select:disabled{opacity:.6;cursor:default}input[type=number]{width:100%}input[aria-invalid=true]{border-color:var(--cut);outline-color:var(--cut)}.input-group{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;min-width:0;height:32px;transition:box-shadow .12s,border-color .12s;display:flex}.input-group:focus-within{border-color:var(--accent);box-shadow:var(--focus)}.input-group:has(input[aria-invalid=true]){border-color:var(--cut)}.input-group input[type=number]{height:100%;box-shadow:none;background:0 0;border:none;flex:1}.input-group .unit{color:var(--muted);padding:0 9px 0 2px;font-size:12px}.input-group .unit:empty{display:none}.input-group:has(input:disabled){opacity:.6}input.switch{appearance:none;background:var(--border);cursor:pointer;border-radius:999px;flex:none;width:34px;height:20px;margin:0;transition:background .15s;position:relative}input.switch:before{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0000004d}input.switch:checked{background:var(--accent)}input.switch:checked:before{transform:translate(14px)}input.switch:disabled{opacity:.5;cursor:default}body{flex-direction:column;display:flex}.layout{flex:1;grid-template-columns:340px minmax(0,1fr);min-height:0;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--bg);scrollbar-gutter:stable;padding:14px 12px 24px 14px;overflow-y:auto}.model-info{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);margin-bottom:12px;padding:12px;font-size:13px}.model-head{color:var(--accent);align-items:center;gap:8px;display:flex}.model-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1;font-size:14px;overflow:hidden}.model-facts{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin:10px 0 0;display:grid}.model-facts>:first-child{grid-column:1/-1}.model-facts dt{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px}.model-facts dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.model-note{border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--text);margin-top:10px;padding:6px 9px;font-size:12px}.axis-note{color:var(--muted);margin-top:8px}.axis-note button{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;margin-left:6px;padding:1px 8px}.tier-row{align-items:center;gap:10px;margin-bottom:12px;display:flex}.tier-caption{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px;font-weight:600}.segmented.tier-bar{flex:1;display:flex}.tier-bar button{flex:1}.hidden-note{color:var(--info-text);background:var(--info-bg);border-radius:var(--radius);margin-bottom:12px;padding:8px 10px;font-size:12px}.hidden-note button{font:inherit;color:inherit;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:1px solid;margin-left:6px;padding:1px 8px}.section{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);margin:0 0 12px;padding:12px}.section-head{color:var(--accent);align-items:center;gap:8px;margin-bottom:10px;display:flex}.section-head h3{color:var(--text);flex:1;margin:0;font-size:13px;font-weight:650}.section-reset{border-radius:var(--radius-sm);color:var(--accent);cursor:pointer;background:0 0;border:none;padding:1px 6px;font-size:12px}.section-reset:hover{background:var(--accent-soft)}.section-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.field{border:1px solid var(--field-border);border-left:3px solid var(--field-border);background:var(--field-bg);border-radius:8px;flex-direction:column;grid-column:1/-1;gap:6px;min-width:0;padding:8px 10px 9px;transition:background .15s,border-color .15s;display:flex}.field.pair{grid-column:span 1}.field.changed{border-color:color-mix(in srgb, var(--accent) 30%, var(--field-border));border-left-color:var(--accent);background:var(--field-changed-bg)}.field.locked{opacity:.75}.field-head{align-items:center;gap:8px;min-height:22px;display:flex}.field-head label{flex:1;min-width:0;font-size:13px;font-weight:500}.field.checkbox .field-head label{cursor:pointer}.reset-chip{border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);background:var(--surface);height:22px;color:var(--accent);cursor:pointer;border-radius:999px;flex:none;align-items:center;gap:4px;padding:0 8px;font-size:12px;font-weight:600;display:inline-flex}.reset-chip:hover{background:var(--accent);color:var(--accent-text)}.field.pair .reset-chip{padding:0 5px}.field.pair .reset-chip span{display:none}.field select{width:100%}.field .hint,.field .default-note{color:var(--muted);font-size:12px}.field .hint:empty{display:none}.field .default-note{color:var(--accent)}.main{scrollbar-gutter:stable;min-width:0;padding:14px 16px 24px;overflow-y:auto}.tabs{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:12px;padding:6px;display:flex}.tab-group{align-items:center;gap:4px;display:flex}.tab-group+.tab-group{border-left:1px solid var(--border);padding-left:14px}.tab-caption{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 6px;font-size:11px;font-weight:600}.tabs [role=tab]{border-radius:var(--radius);height:36px;color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0 14px;font-weight:550;transition:background .12s,color .12s;display:inline-flex}.tabs [role=tab]:hover{background:var(--surface-2);color:var(--text)}.tabs [role=tab][aria-selected=true]{background:var(--accent-soft);color:var(--accent)}.badge{background:var(--surface-2);min-width:20px;height:18px;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 6px;font-size:11px;font-weight:700;line-height:18px}.tabs [aria-selected=true] .badge{background:var(--accent);color:var(--accent-text)}.status-area{align-items:center;gap:10px;min-width:0;margin-left:auto;padding-right:8px;display:flex}.status{font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.progress{background:var(--surface-2);border:1px solid var(--border);border-radius:3px;width:200px;max-width:40vw;height:6px;overflow:hidden}.progress-fill{background:var(--accent);width:0;height:100%;transition:width .15s linear}.progress-fill.reset{transition:none}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:12px}.view-bar{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:10px;display:flex}.view-bar label{align-items:center;gap:6px;display:inline-flex}.view-bar .home{margin-left:auto}.view-bar .spread input{width:140px;accent-color:var(--accent)}.view-bar.model-mode .stack-only{display:none}.segmented{border:1px solid var(--border);background:var(--surface-2);border-radius:9px;gap:2px;padding:2px;display:inline-flex}.segmented button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:4px 12px;transition:background .12s,color .12s}.segmented button:hover:not(:disabled){color:var(--text)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--accent);font-weight:600;box-shadow:0 1px 3px #00000026}.segmented.small button{padding:1px 9px;font-size:12px}.segmented.wide{display:flex}.segmented.wide button{flex:1;padding:6px 12px}.welcome{flex:1;width:100%;padding:48px 16px 64px;overflow-y:auto}.welcome>*{max-width:880px;margin-left:auto;margin-right:auto}.hero{text-align:center}.hero h1{letter-spacing:-.02em;margin:0;font-size:clamp(26px,4.2vw,40px);line-height:1.15}.lede{max-width:600px;margin:12px auto 0;font-size:16px}.drop-zone{border:2px dashed color-mix(in srgb, var(--accent) 45%, var(--border));background:color-mix(in srgb, var(--accent) 4%, var(--surface));text-align:center;cursor:pointer;border-radius:20px;flex-direction:column;align-items:center;gap:8px;margin-top:28px;padding:40px 24px 32px;transition:background .15s,border-color .15s,transform .15s;display:flex}.drop-zone:hover,.drop-zone.dragging{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 9%, var(--surface));border-style:solid}.drop-zone.dragging{transform:scale(1.01)}.drop-zone.busy{cursor:progress}.drop-icon{background:var(--accent-soft);width:68px;height:68px;color:var(--accent);border-radius:50%;place-items:center;margin-bottom:4px;display:grid}.drop-title{font-size:18px;font-weight:600}.button.big{border-radius:var(--radius);height:42px;padding:0 22px;font-size:15px}.drop-status{min-height:1.45em;font-size:13px}.privacy{justify-content:center;align-items:center;gap:6px;margin-top:12px;font-size:13px;display:flex}.welcome-sub{text-align:center;margin-top:40px;margin-bottom:14px;font-size:15px;font-weight:600}.sample-cards{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;display:grid}.sample-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);color:var(--text);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:2px;padding:18px 12px 14px;transition:transform .15s,border-color .15s,box-shadow .15s;display:flex}.sample-card:hover{border-color:var(--accent);box-shadow:var(--shadow-2);transform:translateY(-2px)}.sample-card svg{width:72px;height:72px;margin-bottom:8px}.sample-card .muted{font-size:12px}.sample-card .mat{fill:var(--material);stroke:var(--material-edge);stroke-width:1.5px}.sample-card .lines{fill:none;stroke:var(--material-edge);stroke-width:1px}.sample-card .hole{fill:var(--surface);stroke:var(--material-edge);stroke-width:1.5px}.sample-card .knot{fill:none;stroke:var(--material-edge);stroke-width:7px;stroke-linecap:round}.how{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:40px;padding:0;list-style:none;display:grid}.how li{border-radius:var(--radius-lg);background:var(--surface-2);gap:2px;padding:14px 16px;display:grid}.how-icon{color:var(--accent);margin-bottom:6px}.how .muted{font-size:13px}.setup{border:1px solid var(--border);background:var(--surface);width:min(560px,100vw - 32px);max-width:none;max-height:calc(100dvh - 32px);color:var(--text);box-shadow:var(--shadow-2);border-radius:18px;padding:0;overflow:hidden}.setup::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073}.setup-form{flex-direction:column;max-height:calc(100dvh - 34px);display:flex}.setup-head{align-items:center;gap:12px;padding:20px 22px 6px;display:flex}.setup-head>div{min-width:0}.setup-icon{background:var(--accent-soft);width:42px;height:42px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.setup-head h2{margin:0;font-size:18px}.setup-file{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;overflow:hidden}.setup-body{padding:0 22px 8px;overflow-y:auto}.setup-step{padding:16px 0}.setup-step+.setup-step{border-top:1px solid var(--border)}.setup-step h3{align-items:center;gap:8px;margin:0 0 10px;font-size:14px;display:flex}.step-num{background:var(--accent);width:22px;height:22px;color:var(--accent-text);border-radius:50%;place-items:center;font-size:12px;display:grid}.setup-step .work-units{margin-left:auto}.step-help{margin:-4px 0 10px;font-size:13px}.setup-label{color:var(--muted);margin:12px 0 6px;font-size:12px;font-weight:600;display:block}.setup-step h3+.setup-label{margin-top:0}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;height:30px;padding:0 12px;font-size:13px;transition:background .12s,border-color .12s}.chip-button:hover:not(:disabled){border-color:var(--accent)}.chip-button:disabled,.segmented button:disabled,.stepper button:disabled{opacity:.5;cursor:default}.chip-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.setup-input{width:160px;margin-top:8px}.setup-pair{align-items:center;gap:8px;max-width:340px;margin-top:8px;display:flex}.setup-pair .input-group{flex:1}.size-options{gap:8px;display:grid}.size-option{border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:10px;padding:12px 14px;transition:border-color .12s,background .12s;display:flex}.size-option:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--border))}.size-option.selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, var(--surface))}.size-option input[type=radio]{accent-color:var(--accent);margin:3px 0 0}.size-option>span{gap:3px;display:grid}.size-detail{font-variant-numeric:tabular-nums;font-size:13px}.stepper{border:1px solid var(--border);background:var(--surface);vertical-align:middle;border-radius:8px;align-items:center;height:28px;margin:0 4px;font-weight:400;display:inline-flex}.stepper button{width:26px;height:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:16px}.stepper button:hover:not(:disabled){color:var(--accent)}.stepper input[type=number]{text-align:center;-moz-appearance:textfield;background:0 0;border:none;border-radius:0;width:40px;height:100%;padding:0}.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.setup-progress{border-top:1px solid var(--border);align-items:center;gap:12px;padding:12px 22px;display:flex}.setup-progress .progress{flex:1;max-width:none}.setup-status{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.setup-error{background:var(--error-bg);color:var(--error-text);border-radius:8px;margin:0 22px 12px;padding:8px 10px;font-size:13px}.setup-foot{border-top:1px solid var(--border);background:var(--bg);align-items:center;gap:8px;padding:14px 22px;display:flex}.setup-foot .spacer{flex:1}@media (width<=640px){.setup{border:none;border-radius:0;width:100vw;height:100dvh;max-height:100dvh;margin:0}.setup-form{height:100%;max-height:100dvh}.setup-body{flex:1}.how{grid-template-columns:minmax(0,1fr)}.theme-label{display:none}}.viewport{border-radius:var(--radius);background:var(--viewport-bg);height:min(64vh,680px);min-height:300px;position:relative;overflow:hidden}.viewport.dragging{outline:2px dashed var(--accent);outline-offset:-6px}.viewport canvas{display:block}.layer-range{background:color-mix(in srgb, var(--surface) 82%, transparent);border:1px solid var(--border);-webkit-user-select:none;user-select:none;touch-action:none;z-index:1;border-radius:8px;flex-direction:column;align-items:center;gap:8px;width:44px;padding:8px 0 14px;display:flex;position:absolute;top:12px;bottom:12px;right:12px}.lr-caption{font-variant-numeric:tabular-nums;color:var(--muted);text-align:center;font-size:11px;line-height:1.2}.lr-track{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:3px;flex:1;width:6px;margin:8px 0;position:relative}.lr-track:before{content:"";position:absolute;inset:-8px -14px}.lr-fill{background:var(--accent);border-radius:3px;position:absolute;left:-1px;right:-1px}.lr-thumb{border:2px solid var(--accent);background:var(--surface);cursor:grab;border-radius:50%;width:18px;height:18px;margin:0;padding:0;position:absolute;left:50%;transform:translate(-50%,50%);box-shadow:0 1px 3px #00000040}.layer-range.dragging .lr-thumb{cursor:grabbing}.lr-thumb:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lr-thumb:after{content:attr(data-value);font-variant-numeric:tabular-nums;color:var(--text);background:var(--surface);border:1px solid var(--border);white-space:nowrap;pointer-events:none;border-radius:4px;padding:1px 6px;font:12px/1.4 system-ui,sans-serif;position:absolute;top:50%;right:calc(100% + 8px);transform:translateY(-50%)}.layer-bar{align-items:center;gap:12px;margin-bottom:8px;display:flex}.layer-bar label{white-space:nowrap;min-width:90px}.layer-bar input{flex:1}.canvas-wrap{background:var(--viewport-bg);border-radius:var(--radius);height:min(58vh,600px);min-height:280px}.canvas-wrap canvas{width:100%;height:100%;display:block}.legend{flex-wrap:wrap;align-items:center;gap:6px 14px;margin:8px 0 0;font-size:12px;display:flex}.swatch{vertical-align:middle;width:14px;height:3px;margin-right:-8px;display:inline-block}.swatch.cut{background:var(--cut)}.swatch.engrave{background:var(--engrave)}.swatch.below{background:var(--below)}.sheet-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.sheets{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.sheet-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--field-bg);padding:10px}.sheet-card header{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.sheet-card .art{background:var(--material);cursor:zoom-in;border-radius:3px;line-height:0}.sheet-card .art:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sheet-card .art svg{width:100%;height:auto}.sheet-art #cut{stroke:var(--cut)}.sheet-art #engrave{stroke:var(--engrave)}.sheet-art path{vector-effect:non-scaling-stroke;stroke-width:1px}.zoom-stage.sheet-art{background:var(--material)}.zoom-view{border:1px solid var(--border);background:var(--surface);width:calc(100vw - 32px);max-width:none;height:calc(100vh - 32px);max-height:none;color:var(--text);border-radius:10px;margin:16px;padding:0;overflow:hidden}.zoom-view[open]{flex-direction:column;display:flex}.zoom-view::backdrop{background:#0000008c}.zoom-bar{border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:8px 10px;display:flex}.zoom-title{flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:0;display:flex}.zoom-spacer{flex:1}.zoom-level{text-align:center;font-variant-numeric:tabular-nums;min-width:52px;font-size:13px}.zoom-stage{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;flex:1;min-height:0;line-height:0}.zoom-stage.panning{cursor:grabbing}.zoom-stage svg{width:100%;height:100%}.zoom-hint{border-top:1px solid var(--border);text-align:center;padding:6px 10px;font-size:12px}.top-view-stage{background:var(--surface)}.sheet-card .actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.sheet-card button{height:26px;padding:0 9px;font-size:12px}.assembly-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.assembly-status{font-variant-numeric:tabular-nums;font-size:13px}.page-viewer{border-radius:var(--radius);background:var(--viewport-bg);align-items:center;gap:8px;padding:12px 8px;display:flex}.page-stage{flex:1;place-items:center;min-width:0;height:min(78vh,900px);min-height:320px;display:grid}.page-canvas{display:block;box-shadow:0 1px 4px #00000040}.assembly-3d{border-radius:6px;flex:1;min-width:0;height:min(78vh,900px);min-height:320px;position:relative;overflow:hidden}.assembly-3d canvas{display:block}.assembly-overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.align-bubble{pointer-events:auto;cursor:zoom-in;fill:var(--surface);stroke:#a66ad8;stroke-width:1.5px;filter:drop-shadow(0 1px 3px #00000040)}.align-title{fill:var(--text);font:600 12px system-ui,sans-serif}.align-leader{stroke:#a66ad8;stroke-width:1.5px;fill:#a66ad8}.assembly-card{z-index:1;border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 94%, transparent);max-width:min(50%,440px);color:var(--text);pointer-events:none;border-left:5px solid #f4a340;border-radius:10px;align-items:flex-start;gap:14px;padding:12px 16px 14px;display:flex;position:absolute;top:12px;left:12px;box-shadow:0 2px 10px #0000002e}.assembly-card[hidden]{display:none}.assembly-card.sub{border-left-color:#5d9a52}.card-step{flex-direction:column;align-items:center;line-height:1;display:flex}.card-num{font-variant-numeric:tabular-nums;font-size:44px;font-weight:800}.card-of{color:var(--muted);white-space:nowrap;margin-top:4px;font-size:12px}.card-body{min-width:0}.card-tag{color:#3d6b35;background:#eef5ea;border-radius:999px;margin-bottom:4px;padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.card-title{font-size:19px;font-weight:700;line-height:1.25}.card-chips{flex-wrap:wrap;gap:5px;margin-top:8px;display:flex}.chip{color:#1d1d1b;border-radius:5px;padding:2px 8px;font-size:13px;font-weight:700}.chip.fresh{background:#f4a340}.chip.loose{color:#fff;background:#a66ad8}.chip.key{background:#7ea6cf}.chip.more{background:var(--surface-2);color:var(--muted)}.card-hint{color:var(--muted);margin-top:8px;font-size:13px;line-height:1.35}@media (width<=640px){.assembly-card{max-width:calc(100% - 24px);top:auto;bottom:12px}.card-num{font-size:32px}.card-title{font-size:16px}}.finished-frame{fill:none;stroke:#5d9a52;stroke-width:1.5px}.finished-strip{fill:var(--surface)}.finished-title{fill:#5d9a52;font:700 12px system-ui,sans-serif}.align-zoom{z-index:1;border:1px solid var(--border);background:var(--surface-2);width:30px;height:26px;color:var(--text);cursor:pointer;border-radius:6px;place-items:center;padding:0;display:grid;position:absolute}.align-zoom:hover{color:#a66ad8;border-color:#a66ad8}.align-zoom[hidden]{display:none}.assembly-note{text-align:center;place-items:center;padding:16px;font-size:14px;display:grid;position:absolute;inset:0}.assembly-note[hidden],[data-panel=assembly].pages-mode .live-only,[data-panel=assembly]:not(.pages-mode) .pages-only{display:none}[data-panel=assembly] .legend{justify-content:center}.swatch.fresh,.swatch.loose,.swatch.key{border-radius:2px;width:12px;height:10px;margin-right:-6px}.swatch.fresh{background:#f4a340}.swatch.loose{background:#a66ad8}.swatch.key{background:#7ea6cf}.page-nav{border:1px solid var(--border);background:var(--surface);width:40px;height:64px;color:var(--text);cursor:pointer;border-radius:6px;flex:none;font-size:28px;line-height:1}.page-nav:disabled{opacity:.35;cursor:default}.assembly-scrub{align-items:center;gap:14px;margin-top:10px;padding:0 8px;display:flex}.step-slider{cursor:pointer;flex:1;min-width:0;margin:0}.step-slider:disabled{opacity:.4;cursor:default}.page-label{text-align:right;font-variant-numeric:tabular-nums;min-width:96px;font-size:13px;font-weight:600}.assembly-card.done{border-left-color:var(--util-great)}.assembly-card.done .card-step{color:var(--util-great)}.summary{margin-top:12px}.stats{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-bottom:10px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:10px 12px}.stat.wide{grid-column:span 2}.size .axis{letter-spacing:.02em;color:var(--muted);cursor:help;margin-right:.2em;font-size:.8em;font-weight:600;text-decoration:none}.stat .value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:650}.stat .name{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:flex}.warnings{gap:6px;margin:0;padding:0;list-style:none;display:grid}.warnings li{border-radius:var(--radius);padding:8px 12px}.warnings .warn{background:var(--warn-bg);color:var(--warn-text)}.warnings .error{background:var(--error-bg);color:var(--error-text)}.warnings .info{background:var(--info-bg);color:var(--info-text)}.too-big{border-radius:var(--radius-lg);background:var(--error-bg);color:var(--error-text);margin-bottom:8px;padding:12px 14px}.too-big p{margin:4px 0 10px}.too-big-options{flex-wrap:wrap;gap:8px;display:flex}.too-big-option{text-align:left;font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;gap:2px;padding:8px 12px;display:grid}.too-big-option:hover{border-color:var(--accent)}.too-big-option span:first-child{font-weight:600}.too-big-option .muted{font-size:12px}.scale-finder{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-1);margin-top:12px;padding:14px 16px}.scale-finder.empty{border:1.5px dashed color-mix(in srgb, var(--accent) 40%, var(--border));background:color-mix(in srgb, var(--accent) 4%, var(--surface));box-shadow:none}.scale-finder-head{color:var(--accent);align-items:center;gap:10px;margin-bottom:12px;display:flex}.scale-finder-head>div{gap:1px;display:grid}.scale-finder-head strong{color:var(--text);font-size:15px}.scale-finder-head .muted{font-size:13px}.scale-finder-intro{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.scale-finder-intro>div{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);grid-template-columns:auto minmax(0,1fr);align-content:start;gap:2px 8px;padding:10px 12px;display:grid}.scale-finder-intro .icon{color:var(--accent);grid-row:span 2}.scale-finder-intro strong{font-size:13px}.scale-finder-intro .muted{font-size:12px}.scale-finder-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.scale-finder-bar label{align-items:center;display:inline-flex}.scale-finder-bar input{text-align:center;width:4.5em;margin:0 6px}.scale-finder-bar .muted{font-size:12px}.scale-finder-body{overflow-x:auto}.scale-finder-answer{margin:14px 0 0;font-weight:600}.scale-finder-stale{border-radius:var(--radius-sm);background:var(--warn-bg);color:var(--warn-text);margin:12px 0 0;padding:6px 10px}.scale-table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;width:100%;margin-top:10px}.scale-table th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 10px;font-size:11px;font-weight:600}.scale-table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px}.scale-table td:last-child,.scale-table th:last-child{text-align:right}.scale-table td:first-child{border-left:3px solid #0000}.scale-table tr.current td{background:var(--accent-soft)}.scale-table tr.current td:first-child{border-left-color:var(--accent);border-radius:6px 0 0 6px}.scale-table tr.current td:last-child{border-radius:0 6px 6px 0}.scale-table tr.best td:nth-child(4){font-weight:700}.scale-table.stale td{opacity:.55}.sheets-cell{font-weight:600}.pill{vertical-align:1px;white-space:nowrap;border-radius:999px;align-items:center;gap:3px;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:600;line-height:1.5;display:inline-flex}.pill.current{background:var(--accent);color:var(--accent-text)}.pill.best{border:1px solid var(--border);background:var(--surface);color:var(--text)}.pill.best .icon{color:var(--best-text);fill:currentColor}.pill.asked{border:1px solid var(--border);color:var(--muted);font-weight:500}.pill.limit{background:var(--info-bg);color:var(--info-text);font-weight:500}.meter{background:var(--surface-2);vertical-align:middle;border-radius:3px;width:64px;height:6px;margin-right:8px;display:inline-block;overflow:hidden}.meter span{background:var(--util,var(--accent));border-radius:3px;height:100%;display:block}.util-low{--util:var(--util-low)}.util-fair{--util:var(--util-fair)}.util-good{--util:var(--util-good)}.util-great{--util:var(--util-great)}.util{color:var(--util);white-space:nowrap;cursor:help;font-weight:650}.util-label{margin-left:6px;font-size:12px;font-weight:600}.stat.util-tile{position:relative;overflow:hidden}.util-bar{background:var(--util);height:3px;position:absolute;bottom:0;left:0}.scale-finder-legend{margin:10px 0 0;font-size:12px;line-height:1.9}.scale-finder-legend .pill:first-child{margin-left:0}.scale-finder-misses{margin:8px 0 0;padding-left:18px;font-size:12px}@media (width<=820px){.scale-finder-intro{grid-template-columns:minmax(0,1fr)}html,body{height:auto}.layout{grid-template-columns:minmax(0,1fr)}.sidebar,.main{overflow-y:visible}.sidebar{border-right:none;border-bottom:1px solid var(--border)}.brand .muted{display:none}.tabs{flex-wrap:nowrap;overflow-x:auto}.tab-caption{display:none}.tab-group+.tab-group{padding-left:6px}.status-area .progress{width:80px}}
