.contour-editor{background:#f8fbfc;border:1px solid #c4d8dc;border-radius:9px}.contour-editor>summary{color:#145b65;cursor:pointer;padding:12px;font-weight:650}.contour-editor-body{gap:10px;padding:0 12px 12px;display:grid}.contour-editor-body p{color:#516570;margin:0;font-size:12px;line-height:1.65}.contour-editor-tools{flex-wrap:wrap;gap:6px;display:flex}.contour-editor button{color:#245360;cursor:pointer;background:#fff;border:1px solid #bacdd2;border-radius:5px;min-height:32px;padding:6px 9px;font-size:12px}.contour-editor button[aria-pressed=true]{background:#d8edef;border-color:#087c87}.contour-editor button:disabled{opacity:.45;cursor:default}.contour-editor :is(button,input,select,circle):focus-visible{outline-offset:3px;outline:2px solid #146f9c}.contour-editor-instruction{color:#526575;font-size:12px;line-height:1.5}.contour-editor-canvas{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;background:#edf3f5;border:1px solid #bfd0d5;width:100%;min-height:250px;max-height:550px;display:block}.contour-editor-roi{fill:none;stroke:#8595b0;stroke-width:1px;stroke-dasharray:5 4}.contour-editor-reference{fill:none;stroke:#9b6b38;stroke-width:1.5px;stroke-dasharray:4 3;pointer-events:none}.contour-editor-outline{fill:#087c8714;stroke:#087c87;stroke-width:2px;pointer-events:none}.contour-editor-outline.has-issue{stroke:#b25238}.contour-editor-point{fill:#fff;stroke:#087c87;stroke-width:1.5px;vector-effect:non-scaling-stroke;cursor:grab}.contour-editor-point.selected{fill:#087c87;stroke:#fff}.contour-editor-selection{fill:#298eb12a;stroke:#12698b;stroke-width:2px;stroke-dasharray:5 3;pointer-events:none}.contour-editor-coordinates,.contour-editor-calibration{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.contour-editor-coordinates>:first-child{grid-column:1/-1}.contour-editor-calibration{border:1px solid #ccdadd;border-radius:5px;margin:0;padding:9px}.contour-editor-calibration legend{color:#245360;padding:0 4px;font-size:12px}.contour-editor-calibration :is(button,small){grid-column:1/-1}.contour-editor-calibration small{color:#60727b;font-size:11px;line-height:1.5}.contour-editor-validation{color:#17665b;background:#eef6f3;border-left:3px solid #2f8c7b;padding:7px 9px;font-size:12px;line-height:1.5}.contour-editor-validation.has-issue{color:#93502b;background:#fff5ec;border-color:#bd744c}@media (width<=700px),(pointer:coarse){.contour-editor button,.contour-editor .field input,.contour-editor .field select{min-height:44px}.contour-editor button{min-width:44px}.contour-editor .field input,.contour-editor .field select{font-size:16px}.contour-editor>summary{min-height:44px}.contour-editor-point.selected{stroke:#0000;stroke-width:40px;paint-order:stroke fill;pointer-events:all}}.shape-library-dialog{--library-ink:#182230;--library-blue:#006fe8;--library-line:#e3e8ef;width:min(1040px,100vw - 32px);max-width:none;height:min(860px,100dvh - 40px);max-height:calc(100dvh - 40px);color:var(--library-ink);background:#fff;border:1px solid #cfd7e3;border-radius:14px;margin:auto;padding:0;overflow:hidden;box-shadow:0 24px 80px #18223033}.shape-library-dialog[open]{flex-direction:column;display:flex}.shape-library-dialog::backdrop{background:#071c2294}.shape-library-dialog button,.shape-library-dialog input,.shape-library-dialog select,.shape-library-dialog textarea{font:inherit}.shape-library-dialog button{border:1px solid var(--library-line);color:#475467;cursor:pointer;background:#fff;border-radius:8px;min-height:40px;padding:8px 12px;font-size:13px}.shape-library-dialog button:hover:not(:disabled){background:#edf5ff;border-color:#006fe8}.shape-library-dialog :is(button,input,select,textarea):focus-visible{outline-offset:2px;outline:3px solid #007aff55}.shape-library-heading{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:20px 24px 16px;display:flex}.shape-library-heading h2{letter-spacing:-.03em;align-items:center;gap:9px;margin:5px 0 0;font-size:22px;display:flex}.shape-library-heading span{color:#667085;font-size:11px}.shape-library-heading>button{place-items:center;width:44px;height:44px;padding:0;display:grid}.shape-library-toolbar{border-bottom:1px solid var(--library-line);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:0 24px 14px;display:flex}.shape-library-toolbar nav,.shape-library-toolbar>div{gap:6px;display:flex}.shape-library-toolbar button{align-items:center;gap:6px;display:flex}.shape-library-toolbar button[aria-pressed=true]{color:#005bc4;background:#edf5ff;border-color:#bfd9ff;font-weight:650}.shape-library-body{overscroll-behavior:contain;flex:1;min-height:0;padding:20px 24px;overflow:auto}.shape-library-browser{grid-template-columns:216px minmax(0,1fr);align-items:start;gap:24px;display:grid}.shape-library-list{gap:7px;display:grid}.shape-library-list button{text-align:left;overflow-wrap:anywhere;gap:6px;padding:12px;display:grid}.shape-library-list button[aria-pressed=true]{color:#005bc4;background:#edf5ff;border-color:#93bdff;box-shadow:inset 3px 0 #006fe8}.shape-library-list span{color:#667085;font-size:11px;font-weight:400}.shape-library-version{justify-content:space-between;align-items:start;gap:16px;margin-bottom:15px;display:flex}.shape-library-version h3{overflow-wrap:anywhere;margin:5px 0;font-size:18px}.shape-library-version label{min-width:200px;max-width:70%}.shape-library-dialog label:not(.shape-library-check){color:#475467;gap:7px;font-size:12px;display:grid}.shape-library-dialog :is(input:not([type=checkbox]),select,textarea){color:#182230;background:#fff;border:1px solid #cfd7e3;border-radius:7px;width:100%;max-width:100%;min-height:40px;padding:9px 10px;font-size:13px}.shape-library-dialog textarea{resize:vertical}.shape-library-drawing{background:#f6f9ff;border:1px solid #dce8f8;border-radius:10px;margin:0 0 16px;overflow:hidden}.shape-library-drawing svg{width:100%;height:210px;display:block}.shape-library-drawing figcaption{color:#475467;border-top:1px solid #dce8f8;flex-wrap:wrap;justify-content:space-between;gap:7px;padding:10px 12px;font-size:11px;display:flex}.shape-library-drawing strong{color:#005bc4;font:600 13px ui-monospace,SFMono-Regular,Menlo,monospace}.shape-library-facts{margin:0;font-size:12px}.shape-library-facts>div{border-bottom:1px solid #edf0f5;grid-template-columns:100px minmax(0,1fr);gap:10px;padding:8px 0;display:grid}.shape-library-facts dt{color:#667085}.shape-library-facts dd{color:#182230;overflow-wrap:anywhere;margin:0;line-height:1.6}.shape-library-mono{font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.shape-library-evidence{min-width:0;max-width:100%}.shape-library-evidence summary{cursor:pointer;color:#005bc4;overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 8px;min-height:44px;display:flex}.shape-library-evidence summary span{min-width:0}.shape-library-evidence summary small{white-space:nowrap;text-decoration:underline}.shape-library-evidence summary:focus-visible{outline-offset:2px;outline:3px solid #007aff55}.shape-library-evidence>div{overflow-wrap:anywhere;padding:4px 0 8px;line-height:1.6}.shape-library-note{color:#667085;margin:12px 0;font-size:12px;line-height:1.7}.shape-library-source{border:1px solid var(--library-line);border-radius:8px;margin-top:12px;overflow:hidden}.shape-library-source summary{cursor:pointer;padding:12px;font-size:12px}.shape-library-source img{object-fit:contain;background:#f9fafc;width:100%;max-height:440px;display:block}.shape-library-review{border-top:2px solid #dce8f8;margin-top:24px;padding-top:20px}.shape-library-review h4{margin:0 0 12px;font-size:15px}.shape-library-review table{table-layout:fixed;border-collapse:collapse;width:100%;margin-top:15px;font-size:11px}.shape-library-review caption{text-align:left;color:#9e4c12;margin-bottom:7px;font-weight:650}.shape-library-review :is(th,td){text-align:left;vertical-align:top;overflow-wrap:anywhere;border:1px solid #e3e8ef;padding:8px}.shape-library-review thead{color:#667085;background:#f9fafc}.shape-library-dialog .shape-library-check{color:#475467;align-items:start;gap:9px;margin:13px 0;font-size:12px;line-height:1.7;display:flex}.shape-library-check input{accent-color:#006fe8;flex:none;width:17px;height:17px;margin:2px 0 0}.shape-library-dialog .shape-library-primary{color:#fff;background:var(--library-blue);border-color:var(--library-blue);min-height:44px;font-weight:650}.shape-library-dialog .shape-library-primary:hover:not(:disabled){color:#fff;background:#005bc4}.shape-library-save{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:26px;display:grid}.shape-library-form{align-content:start;gap:13px;display:grid}.shape-library-error{color:#a43d21;background:#fff5ea;border:1px solid #efcfad;border-radius:8px;padding:12px;font-size:12px;line-height:1.6}.shape-library-empty{text-align:center;color:#667085;place-content:center;justify-items:center;gap:9px;min-height:330px;display:grid}.shape-library-empty h3{color:#182230;margin:10px 0 0;font-size:17px}.shape-library-empty p{font-size:13px;line-height:1.7}.shape-library-footer{color:#667085;background:#f9fafc;border-top:1px solid #e3e8ef;flex:none;padding:12px 24px;font-size:11px;line-height:1.6}@media (width<=700px){.shape-library-dialog button,.shape-library-dialog :is(input:not([type=checkbox]),select,textarea){min-height:44px}.shape-library-dialog :is(input:not([type=checkbox]),select,textarea){font-size:16px}.shape-library-dialog{width:calc(100vw - 16px);height:calc(100dvh - 20px);max-height:calc(100dvh - 20px)}.shape-library-heading{padding:15px 16px}.shape-library-heading h2{font-size:20px}.shape-library-toolbar{padding:0 16px 12px}.shape-library-body{padding:16px}.shape-library-browser,.shape-library-save{grid-template-columns:minmax(0,1fr);gap:18px}.shape-library-list{padding-bottom:5px;display:flex;overflow-x:auto}.shape-library-list button{flex:none;min-width:160px;max-width:220px}.shape-library-version{flex-direction:column;gap:5px}.shape-library-version label{width:100%;max-width:100%}.shape-library-footer{padding:10px 16px}}@media (prefers-reduced-motion:reduce){.shape-library-dialog *{transition:none!important}}:root{color:#182230;font-synthesis:none;text-rendering:optimizelegibility;--ink:#182230;--ink-2:#475467;--muted:#667085;--line:#e3e8ef;--line-strong:#cfd7e3;--surface:#f9fafc;--surface-2:#f0f3f8;--blueprint:#007aff;--action:#006fe8;--blueprint-dark:#005bc4;--blueprint-soft:#edf5ff;--indigo:#5856d6;--safety:#c96619;--safety-soft:#fff5ea;--success:#23794c;--success-soft:#edf8f1;--board:#fff;--shadow:0 4px 8px #18223006, 0 18px 40px #18223012;background:#f5f7fb;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:0;min-height:100%;margin:0}body{min-height:100dvh;overflow:hidden}button,input,select{font:inherit}button{color:inherit}button,select{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}button{transition:background-color .14s,border-color .14s,box-shadow .14s}button:not(:disabled):active{filter:brightness(.96)}input,output{font-variant-numeric:tabular-nums}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline-offset:2px;outline:3px solid #007aff4d}.app-shell{background:#f5f7fb;grid-template-rows:72px minmax(0,1fr);height:100dvh;min-height:0;display:grid}.topbar{min-width:0;color:var(--ink);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:20;background:#ffffffeb;align-items:center;gap:12px;padding:0 20px;display:flex;box-shadow:0 1px 8px #18223006}.brand-mark{color:#fff;background:linear-gradient(150deg, var(--blueprint), var(--indigo));border:1px solid #ffffff4d;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;display:grid;box-shadow:inset 0 1px 1px #ffffff40,0 3px 7px #007aff1a}.brand-copy{min-width:158px;line-height:1.15;display:grid}.brand-copy strong{letter-spacing:-.035em;font-size:18px;font-weight:700}.brand-copy span{color:var(--muted);letter-spacing:.01em;margin-top:5px;font-size:11px;font-weight:450}.project-name{flex:1;align-items:center;gap:8px;min-width:160px;max-width:360px;margin-left:18px;display:flex}.project-name span{color:var(--muted);white-space:nowrap;font-size:12px}.project-name input{width:100%;min-width:0;height:38px;color:var(--ink);background:var(--surface-2);border:1px solid #0000;border-radius:10px;padding:0 12px;font-size:13px}.project-name input:focus{border-color:var(--blueprint);background:#fff}.connection-state{white-space:nowrap;color:var(--muted);align-items:center;gap:7px;font-size:11px;display:flex}.connection-state i{background:#32a368;border-radius:99px;width:6px;height:6px;box-shadow:0 0 0 3px #edf8f1}.connection-state.offline{color:#9e4c12}.connection-state.offline i{background:var(--safety);box-shadow:0 0 0 3px var(--safety-soft)}.top-actions{gap:6px;display:flex}.top-actions button{height:36px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:6px;padding:0 10px;font-size:12px;display:flex}.top-actions button:hover{background:var(--surface-2);border-color:var(--line-strong)}.top-actions{flex-shrink:0;margin-left:auto}.brand-copy strong{align-items:center;gap:8px;display:flex}.version-badge{width:max-content;color:var(--blueprint-dark);background:var(--blueprint-soft);letter-spacing:0;white-space:nowrap;border:1px solid #d5e7ff;border-radius:6px;padding:3px 6px;font:650 10px ui-monospace,SFMono-Regular,Menlo,monospace}.help-dialog{width:min(620px,100vw - 32px);max-width:none;height:min(740px,100dvh - 40px);max-height:calc(100dvh - 40px);color:var(--ink);border:1px solid var(--line-strong);box-shadow:var(--shadow);background:#fff;border-radius:12px;margin:auto;padding:0;overflow:hidden}.help-dialog[open]{flex-direction:column;display:flex}.help-dialog::backdrop{background:#071c2294}.help-heading{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:20px 24px 16px;display:flex}.help-heading h2{letter-spacing:-.02em;margin:6px 0 0;font-size:21px}.help-heading .icon-button{flex:none;width:44px;height:44px}.help-navigation{border-bottom:1px solid var(--line);flex:none;gap:24px;padding-inline:24px;display:flex}.help-navigation button{min-height:44px;color:var(--ink-2);background:0 0;border:0;border-bottom:3px solid #0000;padding:0 2px;font-size:14px}.help-navigation button[aria-pressed=true]{color:var(--blueprint-dark);border-bottom-color:var(--blueprint);font-weight:700}.help-content{overscroll-behavior:contain;scrollbar-width:thin;min-height:0;padding:20px 24px 24px;font-size:14px;line-height:1.65;overflow-y:auto}.help-content h3{margin:0 0 10px;font-size:15px}.help-steps{color:var(--ink-2);margin:0 0 24px;padding-left:24px}.help-steps li{margin-bottom:5px;padding-left:4px}.help-steps li::marker{color:var(--blueprint);font:700 13px ui-monospace,monospace}.help-methods{margin:0 0 22px}.help-methods>div{border-bottom:1px solid var(--line);grid-template-columns:74px minmax(0,1fr);gap:12px;padding:10px 0;display:grid}.help-methods dt{color:var(--blueprint-dark);font-weight:700}.help-methods dd{color:var(--ink-2);margin:0}.help-detail{border-bottom:1px solid var(--line)}.help-detail summary{cursor:pointer;min-height:48px;padding:12px 0;font-weight:600}.help-detail p{color:var(--ink-2);margin:0 0 14px}.help-boundary{background:var(--surface-2);border-left:3px solid var(--blueprint);color:var(--ink-2);margin:20px 0 0;padding:12px;font-size:12px}.release-note+.release-note{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}.release-note-heading{gap:4px;display:grid}.release-note-heading h3{margin:0}.release-note-heading span{color:var(--success);font-size:12px}.release-note ul{color:var(--ink-2);padding-left:20px}.release-note li{margin-bottom:10px}.release-note.planned .release-note-heading span{color:var(--muted)}.release-note p{color:var(--muted);margin:16px 0 0;font-size:12px}.workspace{grid-template-columns:minmax(280px,320px) minmax(440px,1fr) minmax(270px,304px);min-height:0;display:grid;overflow:hidden}.input-panel,.results-panel{background:var(--surface);min-width:0}.input-panel{border-right:1px solid var(--line)}.results-panel{border-left:1px solid var(--line)}.panel-scroll{scrollbar-width:thin;scrollbar-color:#c2cad6 transparent;min-height:0;overflow-y:auto}.input-panel,.results-panel{padding:22px 18px}.panel-heading{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px;display:flex}.unit-switch{color:var(--ink-2);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;font-size:13px;font-weight:600;display:flex}.unit-options{background:#e9edf3;border:1px solid #dce3ec;border-radius:12px;grid-template-columns:1fr 1fr;gap:3px;width:160px;padding:3px;display:grid}.unit-options button{min-height:44px;color:var(--ink-2);letter-spacing:.01em;background:0 0;border:0;border-radius:9px;font-size:16px;font-weight:650}.unit-options button[aria-pressed=true]{background:var(--blueprint-dark);color:#fff;box-shadow:0 2px 5px #007aff26}.unit-options button:hover:not([aria-pressed=true]){background:#ffffffa6}.unit-options button:focus-visible{outline:2px solid var(--blueprint-dark);outline-offset:2px}.panel-heading h2,.dialog-title h2{color:var(--ink);letter-spacing:-.035em;margin:2px 0 0;font-size:20px;font-weight:650}.eyebrow{color:var(--muted);letter-spacing:.025em;font-size:11px;font-weight:600;display:block}.count-chip{color:var(--ink-2);background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:4px 8px;font-size:12px}.input-tabs{background:#e9edf3;border:1px solid #e4e9f0;border-radius:12px;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;margin-bottom:16px;padding:4px;display:grid}.input-tabs button{min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;gap:5px;font-size:12px;font-weight:600;display:flex}.input-tabs button.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #1822301a,0 1px 1px #18223008}.product-stack{gap:10px;display:grid}.entry-hint{color:var(--ink-2);margin:0 0 4px;font-size:12px;line-height:1.65}.manual-shape-picker{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.manual-shape-picker button{border:1px solid var(--line);min-width:0;min-height:68px;color:var(--muted);background:#fff;border-radius:10px;align-content:center;justify-items:center;gap:5px;padding:7px 2px;font-size:12px;font-weight:600;display:grid}.manual-shape-picker button svg{fill:currentColor;fill-opacity:.12;stroke:currentColor;stroke-width:1.8px;stroke-linejoin:round;width:25px;height:25px}.manual-shape-picker button[aria-pressed=true]{color:var(--blueprint-dark);background:var(--blueprint-soft);border-color:var(--blueprint);box-shadow:0 1px 4px #007aff12}.manual-shape-picker button:hover{border-color:var(--blueprint)}.manual-shape-note{color:var(--ink-2);gap:4px;font-size:12px;line-height:1.6;display:grid}.manual-shape-note>span{color:var(--blueprint-dark);font-weight:600}.manual-shape-note>small{color:var(--muted);font-size:11px}.manual-shape-note>strong{background:var(--safety-soft);color:#a43d21;border-radius:6px;padding:7px 9px;font-weight:500}.style-reset{border:1px solid var(--line);background:var(--blueprint-soft);min-height:44px;color:var(--blueprint-dark);border-radius:8px;font-size:12px}.reconnect-button{min-height:32px;color:var(--blueprint-dark);border:1px solid var(--line-strong);background:#fff;border-radius:8px;padding:3px 8px;font-size:12px}.pending-upload{background:var(--safety-soft);border-left:3px solid var(--safety);flex-wrap:wrap;gap:8px;padding:10px;font-size:12px;display:flex}.pending-upload span{overflow-wrap:anywhere;width:100%}.pending-upload button{border:1px solid var(--line);background:#fff;border-radius:4px;min-height:34px}.product-fields>.field input{letter-spacing:-.055em;background:#fff;height:54px;font:550 24px ui-monospace,SFMono-Regular,Menlo,monospace}.live-product-preview{background:#f6f9ff;border:1px solid #dce8f8;border-radius:11px;margin:0;overflow:hidden}.live-preview-heading{justify-content:space-between;align-items:center;gap:6px;padding:10px 11px 0;display:flex}.live-preview-heading strong{color:var(--ink-2);font-size:11px;font-weight:550}.live-preview-heading span{color:var(--blueprint-dark);font-size:10px}.live-product-preview>svg{color:#69a7fb;width:100%;height:164px;display:block}.live-preview-shape{fill:currentColor;fill-opacity:.2;stroke:var(--blueprint);stroke-width:1.5px;stroke-linejoin:round}.live-preview-dimension{fill:#365d8d;font:500 10px ui-monospace,SFMono-Regular,Menlo,monospace}.live-preview-guides{stroke:#8dacd4;stroke-width:.75px;fill:none}.live-product-preview figcaption{color:var(--muted);padding:0 11px 9px;font-size:10px;line-height:1.5}.live-preview-empty{min-height:135px;color:var(--muted);align-content:center;padding:12px;font-size:12px;display:grid}.settings-card>summary small{color:var(--muted);margin:5px 0 0;font-size:11px;font-weight:400;display:block}.search-evidence{color:var(--ink-2);border-bottom:1px solid var(--line);margin:0 0 14px;font-size:12px;line-height:1.6}.search-evidence summary{cursor:pointer;padding:10px 0}.search-evidence p{margin:0 0 8px}.product-card,.settings-card{border:1px solid var(--line);background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 2px 5px #18223003}.product-card summary,.settings-card summary{cursor:pointer;align-items:center;gap:10px;min-height:58px;padding:10px 12px;list-style:none;display:flex}.product-card summary::-webkit-details-marker{display:none}.settings-card summary::-webkit-details-marker{display:none}.product-card summary>span:nth-child(2){flex:1;min-width:0;display:grid}.product-card summary strong{text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:14px;overflow:hidden}.product-card summary small{color:var(--muted);margin-top:4px;font-size:12px}.product-index{width:28px;height:28px;color:var(--blueprint-dark);background:var(--blueprint-soft);border:1px solid #dceaff;border-radius:8px;flex:none;place-items:center;font:650 11px ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.summary-chevron{color:var(--muted);flex:none;transition:transform .16s}details[open]>summary .summary-chevron{transform:rotate(180deg)}.product-fields,.settings-grid{border-top:1px solid var(--line);background:#fff;grid-template-columns:1fr 1fr;gap:14px 10px;padding:16px 12px 14px;display:grid}.field{gap:5px;min-width:0;display:grid}.field-wide{grid-column:1/-1}.field>span{color:var(--ink-2);font-size:12px;font-weight:550}.field input,.field select{width:100%;min-width:0;height:39px;color:var(--ink);border:1px solid var(--line-strong);background:#fff;border-radius:9px;padding:0 10px;font-size:13px}.field input:hover,.field select:hover{border-color:#aab8cb}.field input[readonly]{color:var(--muted);background:var(--surface-2);cursor:not-allowed}.field input:focus,.field select:focus{border-color:var(--blueprint)}.source-note{color:var(--ink-2);background:var(--blueprint-soft);border-left:3px solid var(--blueprint);align-items:flex-start;gap:7px;padding:8px 9px;font-size:12px;line-height:1.55;display:flex}.preview-dimension-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:8px;display:grid}.preview-dimension-actions button{border:1px solid var(--line);min-height:48px;color:var(--ink);text-align:left;background:#fff;border-radius:9px;gap:3px;padding:7px;display:grid}.preview-dimension-actions button:hover{border-color:var(--blueprint);background:var(--blueprint-soft)}.preview-dimension-actions button span{color:var(--muted);font-size:11px}.preview-dimension-actions button strong{font-variant-numeric:tabular-nums;font-size:12px}.draft-status{color:var(--muted);flex-wrap:wrap;flex:1 0 100%;justify-content:space-between;gap:4px 12px;font-size:11px;line-height:1.5;display:flex}.draft-status.has-error{color:#9b4227;background:#fff2ec;border-radius:8px;padding:8px}.draft-status span{color:var(--muted)}.recovery-banner{background:var(--blueprint-soft);color:var(--ink);border:1px solid #b5cdee;border-radius:12px;flex:1 0 100%;padding:12px}.recovery-banner strong{font-size:13px}.recovery-banner p{margin:5px 0 8px;font-size:12px;line-height:1.55}.recovery-banner>div{flex-wrap:wrap;gap:8px;display:flex}.recovery-banner button{border:1px solid var(--line-strong);min-height:44px;color:var(--blueprint-dark);background:#fff;border-radius:8px;padding:8px 12px;font-size:12px}.recovery-banner button:first-child{background:var(--blueprint-dark);color:#fff;border-color:var(--blueprint-dark)}.performance-table{border-collapse:collapse;width:100%;font-size:12px}.performance-table th,.performance-table td{text-align:right;border-bottom:1px solid var(--line);padding:8px 4px}.performance-table th:first-child,.performance-table td:first-child{text-align:left}.text-button,.add-product{border:1px dashed var(--line-strong);background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:7px;min-height:40px;font-size:12px;font-weight:600;display:flex}.text-button{border-style:solid}.text-button.danger{color:#a54e36;background:#fff7f3;border-color:#edc6b9}.add-product:hover{color:var(--blueprint-dark);border-color:var(--blueprint);background:var(--blueprint-soft)}.inline-note{color:var(--ink-2);background:var(--blueprint-soft);border-radius:5px;align-items:flex-start;gap:7px;padding:9px 10px;font-size:12px;line-height:1.45;display:flex}.upload-section{gap:12px;display:grid}.drop-zone{width:100%;min-height:176px;color:var(--ink-2);background:#fff;border:1px dashed #aebbd0;border-radius:14px;align-content:center;place-items:center;gap:9px;padding:16px;display:grid;overflow:hidden}.drop-zone:hover{color:var(--blueprint-dark);border-color:var(--blueprint);background:var(--blueprint-soft)}.drop-zone img{object-fit:contain;border-radius:4px;width:100%;max-height:210px}.drop-zone span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:14px;font-weight:700;overflow:hidden}.drop-zone small{color:var(--muted);font-size:12px}.pdf-actions{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.pdf-actions label{color:var(--ink-2);align-items:center;gap:6px;margin-right:auto;font-size:12px;display:flex}.pdf-actions select,.pdf-actions button{min-height:34px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:5px;padding:5px 9px;font-size:12px}.pdf-preview-details{border:1px solid var(--line);background:#fff;border-radius:6px}.pdf-preview-details summary{cursor:pointer;color:var(--blueprint);padding:8px 10px;font-size:12px;font-weight:650}.pdf-preview-details>div{border-top:1px solid var(--line);max-height:65vh;padding:8px;overflow:auto}.pdf-preview-details img{width:max(100%,760px);height:auto;display:block}.pdf-warning{align-items:flex-start;gap:5px;display:flex;color:#875434!important}.pdf-warning svg{flex:none;margin-top:1px}.pdf-contour-review{background:#f8faff;border:1px solid #c5dcfb;border-radius:7px;overflow:hidden}.pdf-contour-review-heading{border-bottom:1px solid #dbe7f7;gap:2px;padding:10px;display:grid}.pdf-contour-review-heading strong{color:var(--blueprint-dark);font-size:13px}.pdf-contour-review-heading span{color:var(--ink-2);font-size:11px}.pdf-contour-preview-grid{grid-template-columns:minmax(0,1fr);gap:9px;padding:9px;display:grid}.pdf-contour-preview-grid figure{border:1px solid var(--line);background:#fff;border-radius:5px;min-width:0;margin:0;overflow:hidden}.pdf-contour-preview-grid svg{background-color:#f5f8fc;background-image:linear-gradient(#e1e9f5 1px,#0000 1px),linear-gradient(90deg,#e1e9f5 1px,#0000 1px);background-size:18px 18px;width:100%;height:auto;min-height:155px;max-height:260px;display:block}.pdf-contour-preview-grid figcaption{border-top:1px solid var(--line);color:var(--ink);gap:2px;padding:7px 8px;font-size:12px;font-weight:700;display:grid}.pdf-contour-preview-grid figcaption small{color:var(--muted);font-size:11px;font-weight:400;line-height:1.4}.pdf-overlay-zoom{background:#fff;border:1px solid #dbe7f7;border-radius:5px;margin:0 9px 9px}.pdf-overlay-zoom summary{color:var(--blueprint-dark);cursor:pointer;padding:9px;font-size:12px;font-weight:700}.pdf-overlay-zoom>div{border-top:1px solid #dbe7f7;max-height:70dvh;padding:8px;overflow:auto}.pdf-overlay-zoom svg{background:#f6f8fc;width:max(100%,760px);height:auto;display:block}.pdf-contour-caveat{color:#624d37;margin:0 9px 9px;font-size:11px;line-height:1.5}.pdf-contour-choice{border:0;border-top:1px solid #dbe7f7;gap:6px;margin:0;padding:9px;display:grid}.pdf-contour-choice legend{color:var(--ink);padding:0 3px;font-size:12px;font-weight:700}.pdf-contour-choice label{color:var(--ink-2);align-items:center;gap:7px;font-size:12px;line-height:1.4;display:flex}.pdf-contour-choice input,.pdf-review-check input{width:17px;height:17px;accent-color:var(--blueprint);flex:none;margin:0}.pdf-contour-unavailable{color:#714b3c;background:#fff8f5;border:1px solid #efc9bc;border-radius:6px;gap:8px;padding:10px;display:flex}.pdf-contour-unavailable svg{flex:none;margin-top:2px}.pdf-contour-unavailable span{gap:3px;display:grid}.pdf-contour-unavailable strong{font-size:12px}.pdf-contour-unavailable small{font-size:11px;line-height:1.5}.pdf-review-check{color:var(--ink-2);background:#f4f8ff;border:1px solid #d4e2f7;border-radius:5px;align-items:flex-start;gap:8px;padding:9px;font-size:12px;line-height:1.5;display:flex}.pdf-review-check input{margin-top:1px}.analysis-state{color:var(--blueprint);background:var(--blueprint-soft);border:1px solid #d5e7ff;border-radius:6px;align-items:center;gap:8px;padding:10px;font-size:13px;display:flex}.spin-slow{animation:1.8s linear infinite scan}@keyframes scan{to{transform:rotate(360deg)}}.analysis-card{background:var(--blueprint-soft);border:1px solid #d8e5f7;border-radius:7px;gap:9px;padding:11px;display:grid}.analysis-card.failed{background:#fff1eb;border-color:#efc9bc}.analysis-card>div:first-child{gap:4px;display:grid}.analysis-card strong{font-size:14px}.analysis-card span,.analysis-card>small{color:var(--ink-2);font-size:12px;line-height:1.5}.candidate{border-top:1px solid #d8e5f7;justify-content:space-between;align-items:center;gap:8px;padding-top:8px;display:flex!important}.candidate>span{display:grid}.candidate button{color:#fff;background:var(--action);border:0;border-radius:8px;padding:7px 9px;font-size:12px}.image-confirm-card{background:#fff;border:1px solid #c9daf1;border-radius:8px;overflow:hidden;box-shadow:0 7px 18px #102d3512}.image-confirm-heading{background:var(--blueprint-soft);border-bottom:1px solid #d8e5f7;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:11px 12px;display:grid}.image-confirm-heading>div{gap:2px;min-width:0;display:grid}.image-confirm-heading strong{color:var(--ink);font-size:14px}.image-confirm-heading small{color:var(--muted);font-size:11px;line-height:1.4}.image-step{color:#fff;background:var(--action);border-radius:8px;place-items:center;width:29px;height:29px;font:750 11px ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.required-chip{color:var(--blueprint-dark);white-space:nowrap;background:#fff;border:1px solid #cfe2ff;border-radius:99px;padding:3px 6px;font-size:10px;font-weight:700}.image-confirm-fields{grid-template-columns:1fr 1fr;gap:11px 9px;padding:13px 12px 14px;display:grid}.reference-boundary{color:var(--ink-2);background:var(--surface-2);border-radius:5px;align-items:flex-start;gap:7px;padding:8px 9px;font-size:11px;line-height:1.5;display:flex}.reference-boundary svg{color:var(--blueprint);flex:none;margin-top:1px}.confirm-image-product{color:#fff;background:var(--action);border:1px solid var(--blueprint-dark);border-radius:9px;justify-content:center;align-items:center;gap:7px;min-height:41px;font-size:13px;font-weight:650;display:flex;box-shadow:0 3px 8px #007aff20}.confirm-image-product:hover{background:var(--blueprint-dark)}.confirm-image-product:disabled{color:#7b8799;background:var(--surface-2);border-color:var(--line);box-shadow:none;cursor:not-allowed}.guardrail{color:#74412f;background:var(--safety-soft);border:1px solid #f1c7b8;border-radius:6px;align-items:flex-start;gap:8px;padding:10px;display:flex}.guardrail.neutral{color:var(--ink-2);background:var(--surface-2);border-color:var(--line)}.guardrail svg{flex:none;margin-top:2px}.guardrail p{margin:0;font-size:12px;line-height:1.55}.guardrail strong{margin-bottom:2px;display:block}.settings-card{margin-top:14px}.settings-card summary{min-height:48px;color:var(--ink);font-weight:700}.settings-card summary>span{flex:1;align-items:center;gap:8px;display:flex}.check-field{align-items:flex-start;gap:9px;display:flex}.check-field input{width:17px;height:17px;accent-color:var(--blueprint);margin:2px 0 0}.check-field span{gap:2px;display:grid}.check-field strong{font-size:13px}.check-field small{color:var(--muted);font-size:12px}.constraint-formula{color:var(--ink-2);background:var(--surface-2);border-radius:5px;align-items:flex-start;gap:8px;padding:9px;font-size:12px;line-height:1.5;display:flex}.constraint-formula svg{flex:none;margin-top:1px}.planning-panel{background:#f0f3f8;grid-template-rows:auto auto minmax(320px,1fr) auto;min-width:0;min-height:0;display:grid;overflow-y:auto}.mode-switcher{border-bottom:1px solid var(--line);background:#fff;grid-template-columns:repeat(3,1fr);gap:5px;padding:14px 14px 10px;display:grid}.mode-switcher button{text-align:left;background:0 0;border:1px solid #0000;border-radius:11px;gap:4px;min-height:59px;padding:10px 12px;display:grid}.mode-switcher button span{color:var(--ink-2);font-size:13px;font-weight:650}.mode-switcher button small{color:var(--muted);white-space:nowrap;font-size:10px}.mode-switcher button.active{background:var(--blueprint-soft);border-color:#d9e9ff}.mode-switcher button:hover:not(.active){background:var(--surface)}.mode-switcher button.active span{color:var(--blueprint-dark)}.planning-strip{border-bottom:1px solid var(--line);background:#fff;grid-template-columns:minmax(0,1fr);align-content:start;gap:12px;min-height:auto;padding:12px 14px;display:grid}.pending-input-warning{color:#8a4932;background:var(--safety-soft);border-radius:4px;align-items:center;gap:5px;margin-left:10px;padding:4px 7px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.stale-result{margin-top:2px}.planning-context{color:var(--ink-2);align-items:center;gap:7px;font-size:13px;display:flex}.run-actions{gap:7px;display:flex}.run-button,.optimize-button{border-radius:10px;align-items:center;gap:7px;height:40px;padding:0 15px;font-size:13px;font-weight:600;display:flex}.run-button{color:#fff;background:var(--action);border:1px solid #0067d8;box-shadow:0 3px 8px #007aff26,inset 0 1px 1px #ffffff24}.run-button:hover{background:#006ce5;box-shadow:0 4px 12px #007aff33}.optimize-button{color:var(--blueprint-dark);background:var(--blueprint-soft);border:1px solid #d5e7ff}.optimize-button:hover:not(:disabled){background:#e2efff;border-color:#b9d7ff}.job-progress{align-items:center;gap:8px;min-width:300px;display:flex}.job-progress>span{background:var(--line);border-radius:99px;width:100px;height:6px;overflow:hidden}.job-progress i{background:var(--blueprint);height:100%;transition:width .18s;display:block}.job-progress strong{min-width:100px;color:var(--ink-2);flex:1;font-size:12px;font-weight:650}.job-progress button{color:#a44c34;background:#fff4ef;border:1px solid #ebc5b8;border-radius:4px;align-items:center;gap:5px;height:32px;padding:0 8px;font-size:12px;display:flex}.canvas-shell{min-height:0;box-shadow:var(--shadow);background:#fff;border:1px solid #d8e0eb;border-radius:16px;grid-template-rows:52px minmax(0,1fr) 33px;margin:16px;display:grid;overflow:hidden}.canvas-toolbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;padding:0 12px 0 15px;display:flex}.canvas-toolbar>div:first-child{align-items:baseline;gap:10px;display:flex}.canvas-toolbar strong{color:var(--ink);font:600 12px ui-monospace,SFMono-Regular,Menlo,monospace}.canvas-material{color:var(--muted);font-size:10px;font-weight:450}.canvas-actions{align-items:center;gap:4px;display:flex}.canvas-actions output{min-width:48px;color:var(--ink-2);text-align:center;font:700 12px ui-monospace,SFMono-Regular,Menlo,monospace}.icon-button{width:34px;height:34px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:9px;place-items:center;padding:0;display:grid}.icon-button:hover{color:var(--blueprint-dark);background:var(--blueprint-soft);border-color:#c5ddff}.canvas-stage{background-color:#f2f5fa;background-image:radial-gradient(#b9c6d655 .8px,#0000 .8px);background-size:20px 20px;min-height:0;overflow:hidden}.canvas-stage svg{touch-action:none;cursor:grab;width:100%;height:100%;display:block}.canvas-stage svg:active{cursor:grabbing}.raw-board{fill:var(--board);stroke:#708299;stroke-width:1.5px;vector-effect:non-scaling-stroke}.usable-boundary{fill:none;stroke:var(--safety);stroke-width:1.2px;stroke-dasharray:7 6;vector-effect:non-scaling-stroke;pointer-events:none}.ruler line{stroke:#8b9bb1;stroke-width:.75px;vector-effect:non-scaling-stroke}.ruler text{fill:#66758c;font:22px ui-monospace,SFMono-Regular,Menlo,monospace}.piece{cursor:pointer;outline:none}.piece path{stroke:#284770;stroke-width:1px;stroke-opacity:.75;vector-effect:non-scaling-stroke;transition:fill-opacity .12s}.piece:hover path{fill-opacity:.76;stroke:#fff;stroke-width:2.5px}.piece.is-selected path{fill-opacity:.95;stroke:#fff;stroke-width:4px;filter:drop-shadow(0 0 7px #102d3573)}.piece text{fill:#152b4d;pointer-events:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:650}.canvas-empty text:first-child{fill:#596b85;font-size:42px;font-weight:550}.canvas-empty text:last-child{fill:#697a91;font-size:24px}.canvas-legend{color:var(--muted);border-top:1px solid var(--line);white-space:nowrap;background:#fff;align-items:center;gap:15px;padding:0 12px;font-size:10px;display:flex;overflow:hidden}.canvas-legend span{align-items:center;gap:5px;display:flex}.canvas-legend span:last-child{margin-left:auto}.canvas-legend i{width:15px;height:8px;display:inline-block}.legend-margin{border-top:2px dashed var(--safety)}.legend-piece{background:var(--blueprint);border:1px solid var(--ink)}.board-footer{background:var(--surface-2);border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:64px;padding:8px 16px 12px;display:grid}.board-tabs{gap:6px;min-width:0;display:flex;overflow-x:auto}.board-tabs button{text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;gap:3px;min-width:105px;padding:9px 12px;display:grid}.board-tabs button span{font-size:12px;font-weight:750}.board-tabs button small{color:var(--muted);font-size:10px}.board-tabs button.active{color:var(--blueprint-dark);background:var(--blueprint-soft);border-color:#b5d7ff;box-shadow:0 1px 4px #007aff0d}.board-tabs button.active small{color:#426796}.board-tab-placeholder{color:var(--muted);font-size:12px}.production-boundary{color:#76503f;align-items:center;gap:7px;max-width:340px;font-size:11px;line-height:1.4;display:flex}.production-boundary svg{color:var(--safety);flex:none}.history-select{max-width:128px;height:32px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:8px;padding:0 8px;font-size:11px}.results-empty{color:#8391a7;text-align:center;border:1px solid var(--line);background:#fff;border-radius:14px;align-content:center;place-items:center;gap:10px;min-height:220px;padding:20px;display:grid}.results-empty strong{color:var(--ink-2);font-size:15px}.results-empty p{max-width:250px;margin:0;font-size:13px;line-height:1.6}.status-card{background:var(--blueprint-soft);border:1px solid #d5e7ff;border-radius:12px;align-items:flex-start;gap:10px;margin-bottom:14px;padding:14px 12px;display:flex}.status-card.success{background:var(--success-soft);border-color:#cce8d7}.status-card.warning{background:var(--safety-soft);border-color:#f0d8bf}.status-icon{width:32px;height:32px;color:var(--blueprint);background:#fff;border-radius:99px;flex:none;place-items:center;display:grid}.status-card.success .status-icon{color:var(--success)}.status-card.warning .status-icon{color:var(--safety)}.status-card>div:last-child{min-width:0;display:grid}.status-card span{color:var(--muted);font-size:11px}.status-card strong{color:var(--ink);margin-top:2px;font-size:15px}.status-card p{color:var(--ink-2);margin:5px 0 0;font-size:12px;line-height:1.5}.metric-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px;display:grid}.metric-grid>div{border:1px solid var(--line);background:#fff;border-radius:12px;grid-template-columns:auto auto 1fr;align-items:baseline;gap:5px;padding:13px 12px;display:grid}.metric-grid span{color:var(--muted);grid-column:1/-1;font-size:11px}.metric-grid strong{color:var(--ink);letter-spacing:-.06em;font:600 28px ui-monospace,SFMono-Regular,Menlo,monospace}.metric-grid small{color:var(--muted);font-size:11px}.comparison-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.comparison-grid article{background:var(--blueprint-soft);border:1px solid #d7e6fb;border-radius:6px;gap:3px;min-width:0;padding:9px;display:grid}.comparison-grid article.is-infeasible{background:#fff3ee;border-color:#edc8ba}.comparison-grid strong{text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12px;overflow:hidden}.comparison-grid span{color:var(--blueprint-dark);font:750 17px ui-monospace,SFMono-Regular,Menlo,monospace}.comparison-grid .is-infeasible span{color:#a54e36;font-size:11px;font-weight:700}.comparison-grid small{color:var(--muted);font-size:10px;line-height:1.4}.result-section{border-top:1px solid var(--line);padding:12px 0}.section-title{color:var(--ink);justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;font-size:13px;font-weight:750;display:flex}.section-title em{color:var(--muted);font-size:11px;font-style:normal;font-weight:650}.ok-tag,.warn-tag{border-radius:99px;padding:3px 6px}.ok-tag{background:var(--success-soft);color:var(--success)!important}.warn-tag{background:var(--safety-soft);color:#a74f36!important}.demand-table{border:1px solid var(--line);background:#fff;border-radius:6px;overflow:hidden}.demand-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1.45fr) .75fr .65fr .65fr;align-items:center;min-height:34px;padding:0 8px;font-size:12px;display:grid}.demand-row:first-child{border-top:0}.demand-row>:not(:first-child){text-align:right}.demand-row strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.demand-head{color:var(--muted);background:var(--surface-2);font-size:10px;font-weight:700}.shortfall{color:#b34e31;font-weight:800}.verification-card p,.micro-copy{color:var(--muted);margin:0;font-size:12px;line-height:1.55}.verification-card .section-title svg{color:var(--success)}.issue-line{color:#a34f38;gap:7px;margin-top:7px;font-size:12px;display:flex}.selection-card dl{gap:6px;margin:0;display:grid}.selection-card dl>div{justify-content:space-between;gap:12px;font-size:12px;display:flex}.selection-card dt{color:var(--muted)}.selection-card dd{color:var(--ink);text-align:right;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.process-summary{grid-template-columns:1fr 1fr;gap:5px 10px;margin:0 0 8px;display:grid}.process-summary>div{border-bottom:1px solid var(--line);justify-content:space-between;gap:8px;padding:5px 0;font-size:11px;display:flex}.process-summary dt{color:var(--muted)}.process-summary dd{color:var(--ink);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.cut-sequence{gap:5px;max-height:226px;margin:0 0 8px;padding:0;list-style:none;display:grid;overflow-y:auto}.cut-sequence li{border:1px solid var(--line);background:#fff;border-radius:5px;align-items:center;gap:8px;padding:7px 8px;display:flex}.cut-sequence li>strong{color:#fff;background:var(--action);border-radius:99px;flex:none;place-items:center;width:22px;height:22px;font:700 10px ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.cut-sequence li>span{color:var(--ink-2);font:650 11px ui-monospace,SFMono-Regular,Menlo,monospace;display:grid}.cut-sequence li small{color:var(--muted);font-size:10px}.cut-sequence .cut-more{color:var(--muted);background:var(--surface-2);font-size:11px;display:block}.cut-boundary{margin-top:7px}.risk-stack{gap:6px;margin:2px 0 10px;display:grid}.risk-item{color:#724534;background:var(--safety-soft);border-radius:5px;align-items:flex-start;gap:7px;padding:8px;font-size:11px;line-height:1.45;display:flex}.risk-item svg{flex:none;margin-top:1px}.risk-item strong{display:block}.algorithm-line{justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;font-size:12px;display:flex}.algorithm-line code{color:var(--blueprint-dark);background:var(--blueprint-soft);border-radius:3px;padding:3px 5px;font-size:10px}.export-section{border-top:1px solid var(--line);padding-top:12px}.export-grid{grid-template-columns:1fr 1fr;gap:7px;display:grid}.export-grid button{text-align:left;min-height:48px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:8px;padding:9px 10px;display:flex}.export-grid button:hover{color:var(--blueprint-dark);background:var(--blueprint-soft);border-color:#bfd9fb}.export-grid button span{font-size:12px;font-weight:750;display:grid}.export-grid button small{color:var(--muted);font-size:10px;font-weight:500}.result-actions{grid-template-columns:1fr 1fr;gap:7px;margin-top:12px;display:grid}.secondary-action{min-height:38px;color:var(--ink-2);border:1px solid var(--line);background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.toast{z-index:60;color:#fff;background:var(--ink);border:1px solid #526a71;border-radius:7px;align-items:center;gap:9px;max-width:min(440px,100vw - 44px);padding:12px 12px 12px 14px;font-size:13px;display:flex;position:fixed;bottom:22px;right:22px;box-shadow:0 18px 45px #071c2247}.toast.success{background:#265d4b;border-color:#5c917d}.toast.error{background:#8e422e;border-color:#c57962}.toast button{color:#fff;background:0 0;border:0;border-radius:4px;place-items:center;width:27px;height:27px;margin-left:auto;display:grid}.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#071c2285;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.project-dialog{background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;width:min(540px,100%);max-height:min(620px,85vh);overflow:hidden;box-shadow:0 24px 80px #071c2259}.dialog-title{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:17px 18px;display:flex}.project-list{gap:7px;max-height:480px;padding:12px;display:grid;overflow-y:auto}.project-list>button{text-align:left;border:1px solid var(--line);background:#fff;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.project-list>button:hover{border-color:var(--blueprint)}.project-list>button>span{gap:3px;min-width:0;display:grid}.project-list strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.project-list small{color:var(--muted);font-size:11px}.project-list em{color:var(--blueprint);flex:none;font-size:11px;font-style:normal}.dialog-empty{min-height:180px;color:var(--muted);align-content:center;place-items:center;gap:8px;font-size:13px;display:grid}@media (width<=1280px){.workspace{grid-template-columns:280px minmax(410px,1fr) 280px}.input-panel,.results-panel{padding:14px}.mode-switcher button{padding-inline:8px}.mode-switcher button small{font-size:10px}.canvas-legend span:last-child{display:none}}@media (width<=1120px){body{overflow:auto}.app-shell{grid-template-rows:auto auto}.topbar{flex-wrap:wrap;min-height:64px;padding-block:8px}.project-name{order:3;min-width:100%;margin-left:0}.connection-state{margin-left:auto}.workspace{grid-template-rows:minmax(740px,100vh) auto;grid-template-columns:minmax(300px,36vw) minmax(0,1fr);overflow:visible}.input-panel{grid-area:1/1;max-height:100vh}.planning-panel{grid-area:1/2;min-height:740px}.results-panel{border-left:0;border-top:1px solid var(--line-strong);grid-area:2/1/auto/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;display:grid}.results-panel .panel-heading,.results-panel .status-card,.results-panel .metric-grid,.results-panel .results-empty{grid-column:1/-1}}.mobile-sections{display:none}.product-options>summary{cursor:pointer;flex-wrap:wrap;align-items:center;gap:6px;min-height:42px;padding:4px 0;font-size:12px;font-weight:600;display:flex}.product-options>summary>span{flex:1}.product-options>summary>small{order:3;width:100%;margin-top:0}.product-options>summary>.summary-chevron{width:15px}.product-options>.settings-grid{margin-top:8px;padding-inline:0}.product-options>summary small{color:var(--muted);font-weight:400}.product-options>.settings-grid{padding-top:10px}.machining-basics{border:1px solid var(--line);background:#fff;border-radius:7px;margin-top:16px;padding:14px}.spacing-presets{gap:8px;margin-block:10px;display:flex}.spacing-presets button{background:var(--blueprint-soft);border:1px solid var(--line);min-height:40px;color:var(--blueprint-dark);cursor:pointer;border-radius:9px;flex:1}.machining-basics .field small{color:var(--muted);line-height:1.5}.result-details>summary{cursor:pointer;justify-content:space-between;align-items:center;min-height:44px;font-weight:700;display:flex}.result-details>summary:after{content:"+"}.result-details[open]>summary:after{content:"−"}@media (width<=900px){body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}.app-shell{min-height:100dvh;display:block}.topbar{gap:8px}.brand-mark{width:34px;height:34px}.brand-copy{min-width:0}.brand-copy span{display:none}.brand-copy strong{flex-direction:column;align-items:flex-start;gap:4px}.connection-state{display:none}.connection-state.offline{white-space:normal;order:4;width:100%;display:flex}.project-name input{height:42px;font-size:16px}.top-actions{width:auto;margin-left:auto}.top-actions button{justify-content:center;width:40px;min-height:40px;padding:0;font-size:0}.mobile-sections{z-index:30;border-bottom:1px solid var(--line);background:#fff;display:flex;position:sticky;top:0}.mobile-sections button{min-height:44px;color:var(--ink);background:0 0;border:0;flex:1;font-weight:700}.workspace{flex-direction:column;display:flex;overflow:visible}.input-panel,.results-panel{border:0;max-height:none;padding:16px 12px;scroll-margin-top:48px;overflow:visible}.panel-scroll{overflow:visible}.planning-panel{order:0;grid-template-rows:auto auto auto auto;min-height:0;scroll-margin-top:48px}.mode-switcher{grid-template-columns:repeat(3,minmax(0,1fr));padding:8px 10px;overflow:visible}.mode-switcher button{text-align:center;place-items:center;min-height:48px;padding:8px 5px}.mode-switcher button span{font-size:12px}.mode-switcher button small{display:none}.planning-strip{flex-direction:column;align-items:flex-start}.run-actions,.job-progress{width:100%}.run-actions button{flex:1;justify-content:center;min-height:44px}.run-actions .run-button,.job-progress{z-index:35;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));width:min(366px,100vw - 24px);min-width:0;min-height:50px;box-shadow:var(--shadow);justify-content:center;position:fixed}.job-progress{border:1px solid var(--line);background:#fff;border-radius:7px;padding:8px 10px}.canvas-shell{grid-template-rows:44px minmax(0,1fr) 28px;height:clamp(300px,80vw,480px);min-height:0;margin:10px}.canvas-toolbar{padding-inline:9px}.canvas-toolbar strong{font-size:11px}.canvas-actions .icon-button{width:36px;height:36px}.board-footer{grid-template-columns:1fr}.production-boundary{max-width:none}.results-panel{display:block}.field input,.field select{min-height:44px;font-size:16px}.input-tabs button,.add-product,.text-button,.confirm-image-product,.secondary-action{min-height:44px}.product-card summary,.settings-card summary{min-height:52px}.modal-backdrop{align-items:end;padding:0}.project-dialog{border-radius:12px 12px 0 0;width:100%;max-height:88dvh}.project-list{max-height:calc(88dvh - 80px)}.toast{left:12px;right:12px;bottom:calc(72px + env(safe-area-inset-bottom));max-width:none}}@media (width<=480px){.input-tabs button{gap:3px;font-size:12px}.input-tabs button svg{width:14px;height:14px}.topbar{padding-inline:12px}.brand-mark{display:none}.top-actions{gap:4px}.help-dialog{width:calc(100vw - 20px);height:calc(100dvh - 32px);max-height:calc(100dvh - 32px)}.help-heading{padding:16px}.help-heading h2{font-size:19px}.help-navigation{padding-inline:16px}.help-content{padding:16px}.help-methods>div{grid-template-columns:1fr;gap:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.canvas-shell.canvas-fullscreen{z-index:1000;width:100vw;height:100dvh;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);border:0;border-radius:0;grid-template-rows:auto minmax(0,1fr) 33px;margin:0;position:fixed;inset:0}.canvas-fullscreen .canvas-toolbar{min-height:60px}.canvas-fullscreen .canvas-actions .icon-button{min-width:44px;min-height:44px}.board-settings{grid-template-columns:minmax(150px,1fr) auto;align-items:end;gap:8px 12px;min-width:0;display:grid}.board-settings-lock{width:100%}.board-settings .field{gap:6px}.board-settings select{max-width:100%;min-height:44px;font-size:14px;font-weight:550}.board-settings .field>span{font-size:12px}.gap-stepper{border:1px solid var(--line-strong);border-radius:9px;align-items:stretch;display:flex;overflow:hidden}.gap-stepper input{text-align:center;border:0;border-radius:0;width:72px;min-height:42px;font:550 18px ui-monospace,SFMono-Regular,Menlo,monospace}.gap-stepper button{background:var(--surface-2);min-width:34px;color:var(--ink-2);border:0;font-size:20px}.gap-presets{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:6px;max-width:none;display:flex}.gap-presets button{min-height:30px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:11px}.gap-presets small{color:var(--muted);font-size:11px}.function-help{min-width:0;color:var(--ink-2);border:1px solid var(--line);background:var(--surface);border-radius:10px;font-size:12px}.function-help summary{cursor:pointer;border-radius:9px;align-items:center;gap:8px;min-height:44px;padding:10px 12px;font-weight:550;list-style:none;display:flex}.function-help summary::-webkit-details-marker{display:none}.function-help summary:after{content:"+";color:var(--muted);margin-left:auto;font-size:18px}.function-help[open] summary:after{content:"−"}.function-help summary:hover{background:var(--blueprint-soft)}.function-help summary:focus-visible{outline:2px solid var(--blueprint);outline-offset:2px}.function-help summary svg{color:var(--blueprint-dark);flex-shrink:0}.function-help dl{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:12px;margin:0;padding:4px 12px 12px;display:grid}.function-help dl>div{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:0;padding:12px}.function-help dt{color:var(--ink);font-weight:650}.function-help dd{overflow-wrap:anywhere;margin:6px 0 0;line-height:1.65}.run-actions{flex-wrap:wrap}.run-actions>button{height:auto;min-height:42px}.canvas-actions select{border:1px solid var(--line);background:#fff;border-radius:5px;min-height:34px}.canvas-shell{grid-template-rows:auto minmax(0,1fr) 33px}.canvas-toolbar{flex-wrap:wrap;gap:8px;min-height:52px;padding-block:8px}.canvas-stage{position:relative}.canvas-stage svg{position:absolute;inset:0}.board-settings-lock{min-width:0}.secondary-button{color:#4d4bb8;background:#f6f5ff;border:1px solid #dcdaf6;border-radius:10px;min-height:40px;padding:8px 15px;font-size:13px;font-weight:600}.secondary-button:hover:not(:disabled){background:#eeecff;border-color:#c6c3ef}.optimization-result{background:var(--blueprint-soft);border:1px solid #d5e7ff;border-radius:10px;flex-basis:100%;width:100%;padding:12px 14px;font-size:13px;line-height:1.55}.optimization-result>p{white-space:pre-line;max-height:140px;margin:5px 0;overflow:auto}.optimization-result details{color:var(--muted);font-size:12px}.optimization-result summary{cursor:pointer;padding:8px 0 0}.optimization-result details p{max-height:140px;overflow:auto}.primary-exports{grid-column:1/-1;margin:0 0 16px}.primary-exports .export-grid button{min-height:56px;color:var(--blueprint-dark);background:#fff;border-color:#d5e7ff}.source-note,.risk-item{overflow-wrap:anywhere}.mobile-primary,.preview-summary{display:none}@media (width<=900px){.app-shell{height:auto;min-height:100dvh}.board-settings,.board-settings>.field:first-child{width:100%}.board-settings select{width:100%;font-size:16px}.canvas-toolbar>div:first-child{flex-wrap:wrap}.canvas-actions{margin-left:auto}.canvas-shell{grid-template-rows:auto minmax(0,1fr) 28px}.workspace[data-mobile-section=input]>.planning-panel,.workspace[data-mobile-section=input]>.results-panel,.workspace[data-mobile-section=preview]>.input-panel,.workspace[data-mobile-section=preview]>.results-panel,.workspace[data-mobile-section=results]>.input-panel,.workspace[data-mobile-section=results]>.planning-panel{display:none}.mobile-sections button[aria-pressed=true]{color:var(--blueprint-dark);background:var(--blueprint-soft);box-shadow:inset 0 -2px var(--blueprint)}.planning-panel{flex-direction:column;display:flex;overflow:visible}.board-settings-lock{width:100%}.board-settings{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;display:grid}.board-settings>.field:first-child{grid-column:1/-1}.gap-presets{grid-column:1/-1;gap:6px;max-width:none}.gap-presets small{display:inline}.gap-presets button{padding-inline:6px}.run-actions .run-button{display:none}.job-progress{box-shadow:none;width:100%;position:static}.run-actions{grid-template-columns:1fr 1fr;display:grid}.run-actions button{min-width:0}.mobile-primary{z-index:35;bottom:0;padding:10px 12px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff5;align-items:center;gap:12px;display:flex;position:fixed;inset-inline:0;box-shadow:0 -4px 20px #18223008}.mobile-primary>span{min-width:0;color:var(--ink-2);flex:1;font-size:12px}.mobile-primary button{justify-content:center;min-width:150px;min-height:48px}.mobile-primary .text-button{min-width:88px}.preview-summary{color:var(--blueprint-dark);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px 0;scroll-margin-top:44px;font-size:12px;display:flex}.preview-summary button{color:inherit;background:0 0;border:0;padding:10px 0;font-weight:700}.preview-summary.is-stale{color:#a54e36}.canvas-shell{flex:none;height:clamp(340px,70dvh,540px)}.canvas-actions .icon-button,.canvas-fullscreen .canvas-actions .icon-button{width:44px;height:44px}.canvas-actions output{min-width:42px}.canvas-toolbar>div:first-child{width:100%}.canvas-actions{justify-content:space-between;width:100%}.canvas-material{font-size:12px}.gap-stepper button{min-width:44px;min-height:44px}.gap-presets button,.history-select,.top-actions button{min-height:44px}.top-actions button{min-width:44px}.pdf-actions button,.pdf-actions select,.pending-upload button,.candidate button,.job-progress button,.reconnect-button,.pdf-contour-choice label,.pdf-review-check{min-height:44px}.pdf-contour-choice input,.pdf-review-check input,.check-field input{width:20px;height:20px}.toast button{min-width:44px;min-height:44px}.canvas-stage svg{touch-action:pan-y}.canvas-stage svg.is-interactive,.canvas-fullscreen .canvas-stage svg{touch-action:none}.canvas-legend{white-space:normal;gap:6px;font-size:10px}.canvas-legend span:nth-child(2){display:none}}
