:root{--bg:#f3f4f7;--panel:#fff;--border:#e1e5eb;--text:#1b2230;--muted:#6a7587;--accent:#2f5bea;--accent-soft:#e9eefe;--danger:#c0392b;--ok:#17845a;--warn:#ff7a00;--paper:#fbfbfa;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);overflow:hidden}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--border);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:7px;padding:5px 10px}button:hover:not(:disabled){background:#f8f9fb;border-color:#b9c2d0}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:#2449c4}button.danger{color:var(--danger)}button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}input,select{border:1px solid var(--border);background:#fff;border-radius:6px;width:100%;min-width:0;padding:5px 8px}input:focus,select:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}input.invalid{border-color:var(--danger);background:#fff6f5}input.mono,.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:13px}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:12px}.app{grid-template:"top top top"50px"tools main side"minmax(0,1fr)"status status status"30px/128px minmax(0,1fr) 390px;height:100vh;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--border);grid-area:top;align-items:center;gap:8px;padding:0 12px;display:flex}.brand{align-items:center;gap:8px;margin-right:8px;font-size:16px;display:flex}.doc-name{width:260px}.doc-name input{background:0 0;border-color:#0000;font-weight:600}.doc-name input:hover{border-color:var(--border)}.toolbar{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;grid-area:tools;gap:6px;padding:8px 6px;display:flex;overflow-y:auto}.tool-group{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;gap:3px;padding-bottom:6px;display:grid}.tool-group:last-child{border-bottom:0}.tool{white-space:nowrap;color:#3a4457;background:0 0;border-color:#0000;flex-direction:column;align-items:center;gap:2px;padding:5px 1px 3px;font-size:10.5px;display:flex}.tool.active{color:var(--accent)}.main{grid-area:main;min-width:0;min-height:0;position:relative}.sidebar{background:var(--panel);border-left:1px solid var(--border);flex-direction:column;grid-area:side;min-height:0;display:flex}.statusbar{background:var(--panel);border-top:1px solid var(--border);color:var(--muted);grid-area:status;align-items:center;gap:12px;min-width:0;padding:0 12px;font-size:12px;display:flex}.status-ok{color:var(--ok)}.status-err{color:var(--danger);text-overflow:ellipsis;background:0 0;border:0;max-width:70vw;padding:0;overflow:hidden}.menu{position:relative}.menu .caret{opacity:.7;font-size:10px}.menu-pop{z-index:30;background:var(--panel);border:1px solid var(--border);border-radius:9px;flex-direction:column;min-width:230px;padding:5px;display:flex;position:absolute;top:calc(100% + 4px);box-shadow:0 10px 30px #141e3229}.menu-pop.left{left:0}.menu-pop.right{right:0}.menu-pop button{text-align:left;background:0 0;border-color:#0000}.menu-pop button:hover{background:var(--accent-soft)!important}.menu-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:7px 10px 3px;font-size:11px}.modal-overlay{z-index:60;background:#141a2866;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border-radius:12px;flex-direction:column;gap:12px;width:320px;max-width:90vw;padding:20px;display:flex;box-shadow:0 20px 60px #141e324d}.modal h2{margin:0;font-size:16px}.modal.wide{width:90vw;max-width:1100px;height:85vh}.modal-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.modal-head h2{font-size:15px}.sim-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sim-bar label.inline{align-items:center;gap:6px;width:auto;display:inline-flex}.sim-bar select{width:auto}.sim-bar .toggle-group{gap:4px;display:inline-flex}.sim-bar .toggle-group button.active{font-weight:700}.sim-status{min-height:1.4em}.sim-legend .sw{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin:0 3px 0 8px;display:inline-block}.sim-legend .sim-piece{white-space:nowrap}.modal-head .toggle-group{gap:4px;margin-left:auto;display:flex}.modal-head .toggle-group button.active{font-weight:700}.modal.wide .preview3d-canvas{background:#eef1f6;border-radius:8px;flex:1;min-height:0;overflow:hidden}.modal input{border:1px solid var(--border);border-radius:7px;width:100%;padding:6px 9px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.modal-switch{color:var(--accent);white-space:normal;background:0 0;border:0;align-self:center;padding:0;font-size:12px}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.tabs button{white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:33%;min-width:84px;padding:9px 4px;font-size:12.5px}.tabs button.active{border-bottom-color:var(--accent);color:var(--accent);background:0 0;font-weight:600}.count{background:var(--bg);min-width:16px;color:var(--muted);text-align:center;border-radius:9px;padding:0 4px;font-size:10.5px;display:inline-block}.tab-content{flex:1;min-height:0;overflow-y:auto}.panel-body{flex-direction:column;gap:6px;padding:10px;display:flex}.panel-actions{align-items:center;gap:10px;margin-bottom:4px;display:flex}.panel-actions .muted{font-size:12px;line-height:1.3}.empty{border:1px dashed var(--border);color:var(--muted);border-radius:9px;padding:14px;line-height:1.45}.step{border:1px solid var(--border);background:#fff;border-radius:9px}.step.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.step.has-error:not(.selected){border-color:#efb4ad}.step-head{cursor:pointer;align-items:center;gap:8px;min-width:0;padding:6px 9px;display:flex}.step-id{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;font-weight:700}.step-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);flex:1;font-size:12px;overflow:hidden}.step-val{color:#3a4457;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.step.has-error .step-val{color:var(--danger)}.badge{background:var(--bg);color:#4a5568;white-space:nowrap;border-radius:5px;padding:1px 6px;font-size:10.5px}.badge.t-variable{color:#6b3fb8;background:#f3ecfd}.badge.t-line,.badge.t-bezier,.badge.t-spline,.badge.t-subPath{color:#1f4e9c;background:#e6f0ff}.badge.t-piece{color:#17845a;background:#e3f6ec}.step-editor{border-top:1px solid var(--border);flex-direction:column;gap:7px;padding:4px 10px 10px;display:flex}.help-steps{margin:0;padding-left:18px;font-size:12.5px;line-height:1.5}.help-steps li+li{margin-top:3px}.help-example{background:var(--bg);border-radius:7px;padding:7px 9px;font-size:12.5px;line-height:1.45}.field{grid-template-columns:92px 1fr;align-items:start;gap:8px;display:grid}.field-label{color:var(--muted);padding-top:6px;font-size:12px}.field-body{min-width:0}.formula-row{align-items:center;gap:8px;display:flex}.fval{color:var(--ok);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px}.ferr{color:var(--danger);margin-top:3px;font-size:12px;line-height:1.3}.ferr.block{background:#fff3f1;border-radius:6px;padding:6px 8px}.pair{gap:6px;display:flex}.check{color:#3a4457;align-items:center;gap:7px;font-size:13px;display:flex}.check input{width:auto}.check.inline{white-space:nowrap;font-size:12px}.row-actions{gap:6px;margin-top:4px;display:flex}.icon-btn{color:var(--muted);background:0 0;border-color:#0000;padding:2px 7px}.sub-title{color:#3a4457;margin-top:6px;font-size:12px;font-weight:600}.sub-title-row{justify-content:space-between;align-items:center;gap:8px;margin-top:6px;display:flex}.sub-title-row .sub-title{margin-top:0}.edge-row{border:1px solid var(--border);background:#fafbfc;border-radius:8px;flex-direction:column;gap:5px;padding:6px;display:flex}.edge-top{align-items:center;gap:4px;display:flex}.edge-n{text-align:center;width:18px;color:var(--muted);font-size:12px}.edge-sa{grid-template-columns:44px 1fr auto 46px auto;align-items:start;gap:6px;display:grid}.edge-corners{grid-template-columns:44px 1fr 1fr;align-items:center;gap:6px;display:grid}.edge-elastic{grid-template-columns:44px 1fr;align-items:center;gap:6px;display:grid}.edge-corner{min-width:0;font-size:12px}.edge-mark{text-align:center;color:#b3261e;width:46px;font-weight:700}.chip.double{border-color:#b3261e}.edge-sa .check.inline,.edge-sa .muted,.edge-len{padding-top:6px}.chips{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.chips select{width:64px}.chip{background:var(--bg);border-radius:12px;align-items:center;gap:4px;padding:2px 4px 2px 8px;font-size:12px;display:inline-flex}.chip button{color:var(--muted);background:0 0;border:0;padding:0 4px}.stats{color:#2d5a45;background:#f1f7f3;border-radius:8px;flex-wrap:wrap;gap:4px 14px;padding:8px 10px;font-size:12px;display:flex}.meas{border-collapse:collapse;width:100%}.meas td{border-bottom:1px solid var(--border);vertical-align:middle;padding:5px 4px}.meas-name{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;font-weight:700}.meas-val{align-items:center;gap:5px;width:120px;display:flex}.meas-val input{text-align:right}.meas-add{grid-template-columns:1fr 70px auto;gap:6px;margin-top:8px;display:grid}.size-chips{flex-wrap:wrap;gap:6px;margin:4px 0 8px;display:flex}.size-chip{border-radius:14px;padding:4px 13px;font-size:12px;font-weight:700}.size-chip.active,.size-chip.active:hover{background:var(--accent);border-color:var(--accent);color:#fff}.size-table-wrap{margin-top:10px;overflow-x:auto}.size-table{border-collapse:collapse;font-size:12px}.size-table th,.size-table td{border-bottom:1px solid var(--border);text-align:center;white-space:nowrap;padding:4px 7px}.size-table th{color:var(--muted);font-weight:600}.size-table th:first-child,.size-table td:first-child{text-align:left}.size-table input{text-align:right;width:56px}.canvas-wrap{position:absolute;inset:0;overflow:hidden}.canvas{background:var(--paper);touch-action:none;-webkit-user-select:none;user-select:none;cursor:default;width:100%;height:100%;display:block}.canvas:not(.tool-select){cursor:crosshair}.grid-minor{stroke:#eceef2;stroke-width:1px;fill:none}.grid-major{stroke:#d6dbe3;stroke-width:1px;fill:none}.grid-axis{stroke:#b3bccb;stroke-width:1px;fill:none}.path-vis,.piece-fill,.piece-seam,.piece-internal,.piece-grain,.handles,.path-hit{fill:none;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.path-vis.solid{stroke:#161a22;stroke-width:1.8px}.path-vis.guide{stroke:#7b879a;stroke-width:1px;stroke-dasharray:5 4}.path-vis.curve{stroke:#1f4e9c;stroke-width:2px}.path-vis.faded{opacity:.4}.path:hover .path-vis{stroke-width:3px}.path-vis.drafted{stroke:#12a05c;stroke-width:3.4px;stroke-dasharray:none}.path-vis.selected{stroke:var(--warn);stroke-width:3.2px;stroke-dasharray:none}.path-hit{stroke:#0000;stroke-width:14px;pointer-events:stroke;cursor:pointer}.piece-fill{fill:#2f5bea12;stroke:#161a22;stroke-width:1.2px}.piece-fill.selected{fill:#2f5bea2e}.piece-fill.open{fill:none;stroke:#d33;stroke-dasharray:6 4}.piece-seam{stroke:#c0392b;stroke-width:1px;stroke-dasharray:6 4}.piece-internal{stroke:#161a22;stroke-width:1px;stroke-dasharray:4 3}.piece-grain{stroke:#161a22;stroke-width:1.2px}.handles{stroke:var(--warn);stroke-width:1px;stroke-dasharray:3 3}.pt-hit{fill:#0000;cursor:pointer}.pt.fixed .pt-hit,.tool-select .pt.draggable .pt-hit{cursor:grab}.pt.handle .pt-dot{fill:#fff4e6;stroke:var(--warn);stroke-width:2px}.pt-dot{fill:#fff;stroke:#161a22;stroke-width:1.5px}.pt.fixed .pt-dot{fill:#161a22}.pt:hover .pt-dot{stroke:var(--accent);stroke-width:2.5px}.pt.picked .pt-dot{fill:#12a05c;stroke:#0b6b3c}.pt.selected .pt-dot{fill:var(--warn);stroke:#a34d00}.pt-label,.piece-label,.rubber-label{paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;-webkit-user-select:none;user-select:none}.pt-label{fill:var(--text);pointer-events:none;font-size:12px;font-weight:600}.seam-mark{fill:#b3261e;paint-order:stroke;stroke:var(--paper);stroke-width:3px;-webkit-user-select:none;user-select:none;font-size:14px;font-weight:700}.piece-label{fill:#1f3a8a;font-size:13px;font-weight:600}.piece-label.selected{fill:var(--accent)}.tool-select .piece-label{cursor:grab}.canvas.tool-movePiece,.tool-movePiece .piece-label{cursor:move}.ruler-bg,.ruler-corner{fill:#f6f7f9;stroke:var(--border);stroke-width:1px}.ruler-bg[data-ruler=top]{cursor:row-resize}.ruler-bg[data-ruler=left]{cursor:col-resize}.ruler-tick{stroke:#9aa3b2;stroke-width:1px;fill:none}.ruler-num{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:9px}.guide-line{stroke:#e0389a;stroke-width:1px;stroke-dasharray:6 3;fill:none}.guide.active .guide-line{stroke-dasharray:none}.guide-hit{stroke:#0000;stroke-width:9px;fill:none}.guide[data-guide] .guide-hit{cursor:move}.guide-label{fill:#e0389a;font-variant-numeric:tabular-nums;font-size:10px;font-weight:600}.rubber{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 4}.rubber-label{fill:var(--accent);font-size:12px;font-weight:600}.canvas-hud{border:1px solid var(--border);color:var(--muted);pointer-events:none;font-variant-numeric:tabular-nums;background:#ffffffd9;border-radius:6px;padding:3px 9px;font-size:12px;position:absolute}.canvas-hud.top-right{top:26px;right:12px}.zoom-controls{flex-direction:column;gap:5px;display:flex;position:absolute;bottom:62px;right:12px}.zoom-controls button{box-shadow:0 1px 3px #141e321a}.hint-bar{color:#fff;background:#1b2230eb;border-radius:10px;align-items:center;gap:10px;max-width:calc(100% - 110px);padding:7px 8px 7px 14px;font-size:13px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 22px #141e3240}.hint-bar button{padding:3px 10px}.hint-bar button:not(.primary){color:var(--text)}.toast{color:#fff;z-index:50;cursor:pointer;background:#1b2230;border-radius:10px;max-width:min(640px,90vw);padding:10px 16px;line-height:1.35;position:fixed;top:62px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #141e324d}.toast.error{background:#a92f22}.path-vis.added{stroke:#0f9d58;stroke-width:2.6px;stroke-dasharray:none}.path-vis.modified{stroke:#e08600;stroke-width:2.6px;stroke-dasharray:none}.path-vis.ghost{stroke:#c0392b;stroke-width:1.5px;stroke-dasharray:2 4;opacity:.6}.pt.added .pt-dot{fill:#0f9d58;stroke:#0a6b3c}.pt.modified .pt-dot{fill:#e08600;stroke:#9a5b00}.pt-ghost{fill:none;stroke:#c0392b;stroke-width:1.2px;stroke-dasharray:2 2}.pt-label.ghost{fill:#c0392b;opacity:.7}.piece-fill.added{fill:#0f9d581f}.preview-bar{z-index:5;background:#fff;border:2px solid #0f9d58;border-radius:10px;align-items:center;gap:10px;max-width:calc(100% - 140px);padding:7px 8px 7px 14px;font-size:13px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 22px #141e3233}.preview-bar span{color:var(--muted);flex:320px;max-height:96px;overflow-y:auto}.preview-bar{flex-wrap:wrap}.hint-bar[hidden]{display:none}.assistant-panel{flex-direction:column;height:100%;min-height:0;display:flex}.chat-scroll{flex:1;min-height:0;padding:12px;overflow-y:auto}.chat-scroll>*+*{margin-top:12px}.chat-empty{color:var(--muted);line-height:1.5}.chat-empty h3{color:var(--text);margin:4px 0 6px;font-size:15px}.suggestions{flex-direction:column;gap:6px;margin-top:10px;display:flex}.suggestions button{text-align:left;white-space:normal;background:#f8f9fb}.msg{flex-direction:column;gap:6px;max-width:100%;display:flex}.msg.user{align-items:flex-end}.msg.assistant{border:1px solid var(--border);background:#f7f8fa;border-radius:12px;padding:9px 11px}.msg.assistant.error{background:#fffaf9;border-color:#f3d9d2}.bubble{word-break:break-word;border-radius:12px;max-width:94%;padding:8px 11px;line-height:1.45}.msg.user .bubble{background:var(--accent);color:#fff;white-space:pre-wrap;border-bottom-right-radius:4px}.msg.assistant .bubble{max-width:100%;padding:0}.msg.assistant.error .bubble{color:#8a2a20}.bubble p{margin:0 0 6px}.bubble p:last-child{margin-bottom:0}.bubble ul,.bubble ol{margin:4px 0 6px;padding-left:20px}.bubble code{background:#141e3214;border-radius:4px;padding:0 4px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px}.msg-meta{color:var(--muted);font-size:11.5px}.activity{color:var(--muted);flex-direction:column;gap:5px;padding:3px 0 3px 4px;font-size:12px;line-height:1.4;display:flex}.activity .ok{color:var(--ok)}.activity .bad{color:var(--danger)}.activity .more{color:var(--muted);font-style:italic}.activity-summary>summary,.work>summary{cursor:pointer;color:var(--muted);-webkit-user-select:none;user-select:none;padding:2px 0 2px 4px;font-size:12px}.activity-summary>summary .bad{color:var(--danger)}.work{color:var(--muted);font-size:13px;line-height:1.45}.work[open]>summary{margin-bottom:4px}.work-status{border-top:1px solid var(--border);color:var(--text);background:#f3f6fb;align-items:center;gap:8px;min-height:34px;padding:7px 12px;font-size:12.5px;display:flex}.work-status .work-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.work-status .work-meta{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.thinking-preview{color:var(--muted);overflow-wrap:anywhere;margin-bottom:6px;font-size:12px;font-style:italic;line-height:1.4}.typing{gap:4px;padding:4px 2px;display:inline-flex}.typing i{background:#9aa6ba;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite blink}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.proposal{border:1px solid var(--border);background:#fff;border-left:4px solid #0f9d58;border-radius:9px;flex-direction:column;gap:7px;padding:9px 11px;font-size:13px;display:flex}.proposal.applied{border-left-color:var(--muted);color:var(--muted)}.proposal.discarded{color:var(--muted);border-left-color:#c9ced8}.proposal .row{align-items:center;gap:8px;display:flex}.proposal .warn{color:#9a5b00;font-size:12px}.proposal .bad{color:var(--danger);font-size:12px}.composer{border-top:1px solid var(--border);background:#fafbfc;flex-direction:column;gap:8px;padding:10px;display:flex}.composer textarea{resize:none;border:1px solid var(--border);width:100%;font:inherit;background:#fff;border-radius:8px;min-height:62px;max-height:160px;padding:8px 10px}.composer textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.assembly-add{flex-direction:column;gap:6px;display:flex}.assembly-add textarea,.step-editor textarea{resize:vertical;border:1px solid var(--border);width:100%;font:inherit;border-radius:8px;min-height:42px;padding:7px 9px}.assembly-add textarea:focus,.step-editor textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.assembly-machine{border:1px solid var(--border);width:100%;font:inherit;border-radius:8px;margin-top:4px;padding:4px 9px;font-size:12px}.composer-row{align-items:center;gap:8px;display:flex}.thumbs{flex-wrap:wrap;gap:6px;display:flex}.thumb{border:1px solid var(--border);border-radius:7px;width:52px;height:52px;position:relative;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%}.thumb button{color:#fff;background:#0009;border:0;border-radius:8px;padding:0 5px;font-size:11px;line-height:16px;position:absolute;top:1px;right:1px}.agent-note{color:#6b4d05;background:#fff8e8;border:1px solid #f1d9a2;border-radius:9px;margin:12px;padding:12px 14px;font-size:13px;line-height:1.45}.agent-note code{background:#0000000f;border-radius:4px;padding:0 4px;font-family:ui-monospace,Menlo,Consolas,monospace}.mock-badge{color:#3b4bb0;background:#eef2ff;border-radius:7px;margin:8px 12px 0;padding:6px 10px;font-size:12px}.tab-content.flush{flex-direction:column;display:flex;overflow:hidden}.tab-content.flush>.assistant-panel{flex:1}.preview-bar b{white-space:nowrap}.preview-bar span{white-space:normal}:root{--measure:#7c3aed}.path-vis.measured{stroke:var(--measure);stroke-width:3.4px;stroke-dasharray:none}.pt.measured .pt-dot{fill:var(--measure);stroke:#4c1d95}.measure-line{fill:none;stroke:var(--measure);stroke-width:1.6px;stroke-dasharray:6 4}.measure-pill{fill:var(--measure);opacity:.95}.measure-pill-text{fill:#fff;font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.len-label{fill:#0f766e;paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.measure-card{border:2px solid var(--measure);z-index:6;background:#fff;border-radius:12px;flex-direction:column;gap:6px;width:300px;padding:10px 12px;font-size:13px;display:flex;position:absolute;top:28px;left:26px;box-shadow:0 8px 26px #141e3238}.mc-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.mc-head b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mc-main{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.mc-value{color:var(--measure);font-variant-numeric:tabular-nums;font-size:34px;font-weight:700;line-height:1}.mc-unit{color:var(--measure);font-size:15px;font-weight:600}.mc-label{color:var(--muted);font-size:12px}.mc-table{border-collapse:collapse;width:100%;font-size:12.5px}.mc-table td{border-top:1px solid var(--border);padding:3px 2px}.mc-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.mc-actions{gap:8px;margin-top:2px;display:flex}button.mini{color:var(--measure);background:0 0;border-color:#0000;padding:0 6px;font-size:11px;text-decoration:underline}.mtable{border-collapse:collapse;width:100%;font-size:12.5px}.mtable th{text-align:right;color:var(--muted);border-bottom:1px solid var(--border);padding:3px 4px;font-weight:600}.mtable th:first-child,.mtable td:first-child{text-align:left}.mtable td{border-bottom:1px solid #f0f2f6;padding:3px 4px}.mtable .num{text-align:right;font-variant-numeric:tabular-nums}.mtable tfoot td{border-top:1px solid var(--border);border-bottom:0;font-weight:700}:root{--cmp-a:#e11d48;--cmp-b:#0891b2}.path-vis.cmp-a{stroke:var(--cmp-a);stroke-width:3.4px;stroke-dasharray:none}.path-vis.cmp-b{stroke:var(--cmp-b);stroke-width:3.4px;stroke-dasharray:none}.measure-pill.cmp-a{fill:var(--cmp-a)}.measure-pill.cmp-b{fill:var(--cmp-b)}.badge.t-check{color:#b45309;background:#fff1e6}.status-warn{color:#b45309;background:0 0;border:0;padding:0;font-weight:600}.compare-card{border-color:var(--cmp-b);width:320px}.seg-row{gap:6px;display:flex}.seg{border-width:2px;flex-direction:column;flex:1;align-items:flex-start;gap:2px;padding:6px 8px;font-size:12px;display:flex}.seg-val{font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.seg-a{color:var(--cmp-a)}.seg-b{color:var(--cmp-b)}.seg-a.on{border-color:var(--cmp-a);background:#fff1f4}.seg-b.on{border-color:var(--cmp-b);background:#ecfbff}.cmp-result{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.cmp-diff{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.cmp-range{align-items:center;gap:6px;font-size:12.5px;display:flex}.cmp-range input{text-align:right;width:60px}.cmp-presets{flex-wrap:wrap;gap:4px;display:flex}.cmp-ok{color:var(--ok);font-size:12.5px;font-weight:600}.cmp-bad{color:#b45309;font-size:12.5px;font-weight:600}.ctl-summary{border-radius:8px;padding:7px 10px;font-size:13px;font-weight:600}.ctl-summary.ok{color:#2d5a45;background:#f1f7f3}.ctl-summary.warn{color:#9a5b00;background:#fff5e6}.step.has-warn:not(.selected){border-color:#f1c98a}.chip{white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:10px;padding:1px 8px;font-size:12px;font-weight:700}.chip.ok{color:#17845a;background:#e3f6ec}.chip.warn{color:#9a5b00;background:#fff1d6}.chip.info{background:var(--bg);color:#3a4457}.chip.bad{color:var(--danger);background:#fde8e6}.ctl-rows{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:12px;padding:0 10px 8px;font-size:12px;display:flex}.ctl-warn{color:#9a5b00;background:#fff5e6;border-radius:6px;margin:0 10px 8px;padding:6px 8px;font-size:12px;line-height:1.35}.step-editor .ctl-warn{margin:0}.snap circle,.snap path{fill:none;stroke:#e11d74;stroke-width:2px}.snap-path path{fill:#e11d7426}.snap-grid path,.snap-free path{stroke:var(--muted);stroke-width:1.2px}.snap-label{fill:#b0125a;paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;-webkit-user-select:none;user-select:none;font-size:11px;font-weight:600}.draw-input{background:var(--panel);border:1px solid var(--accent);z-index:20;border-radius:8px;flex-direction:column;gap:3px;padding:7px 9px;font-size:12px;display:flex;position:absolute;box-shadow:0 6px 22px #141e3238}.draw-input label{align-items:center;gap:6px;font-weight:600;display:flex}.draw-input input{border:1px solid var(--border);border-radius:5px;width:150px;padding:3px 6px;font-family:ui-monospace,monospace}.ctx-menu{background:var(--panel);border:1px solid var(--border);z-index:30;border-radius:8px;flex-direction:column;min-width:190px;padding:4px;display:flex;position:absolute;box-shadow:0 8px 26px #141e3238}.ctx-menu .ctx-title{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:3px;padding:4px 8px 6px;font:600 12px ui-monospace,monospace}.ctx-menu button{text-align:left;background:0 0;border:0;border-radius:5px;padding:6px 8px}.ctx-menu button:hover{background:var(--accent-soft)}.ctx-menu button.danger{color:var(--danger)}.badge.t-mirror{color:#a34d00;background:#fff1e6}.piece-notch{stroke:#161a22;stroke-width:2px;vector-effect:non-scaling-stroke}.piece-fold{stroke:var(--muted);stroke-width:1px;stroke-dasharray:10 3 2 3;vector-effect:non-scaling-stroke;fill:none}.mirror-axis{stroke:#e11d74;stroke-width:1px;stroke-dasharray:12 4 2 4;fill:none}.marker-controls{flex-wrap:wrap;align-items:flex-end;gap:14px;font-size:12px;display:flex}.marker-controls>label{flex-direction:column;gap:3px;width:130px;display:flex}.marker-sizes{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.marker-size{align-items:center;gap:4px;font-weight:600;display:flex}.marker-size input{width:58px}.marker-stats{flex-wrap:wrap;gap:18px;font-size:13px;display:flex}.marker-view{background:#eef1f6;border-radius:8px;flex:1;min-height:0;overflow:auto}.marker-view svg{width:100%;height:100%}.marker-fabric{fill:#fff;stroke:var(--muted);stroke-width:.2px;stroke-dasharray:1 .6}.modal-actions .spacer{flex:1}.size-overlay path{fill:none;stroke-width:1.2px;vector-effect:non-scaling-stroke;opacity:.85}.size-legend{border:1px solid var(--border);background:#ffffffe6;border-radius:6px;gap:10px;padding:3px 9px;font-size:12px;font-weight:600;display:flex;position:absolute;top:40px;right:12px}.formula-help{flex-wrap:wrap;align-items:center;gap:4px;margin-top:3px;display:flex}.formula-help button{background:var(--accent-soft);color:var(--accent);border-color:#0000;border-radius:10px;padding:1px 7px;font:12px ui-monospace,monospace}.formula-help button:hover{border-color:var(--accent)}.empty-start{background:var(--panel);border:1px solid var(--border);text-align:center;pointer-events:none;border-radius:12px;flex-direction:column;gap:8px;width:min(380px,90%);padding:20px 22px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);box-shadow:0 10px 30px #141e321f}.empty-start button{pointer-events:auto}.empty-start h3{margin:0;font-size:17px}.empty-start p{color:var(--muted);margin:0 0 4px;line-height:1.4}.empty-start kbd{opacity:.8;border:1px solid;border-radius:3px;padding:0 4px;font:11px ui-monospace,monospace}.select-box{fill:#2f5bea14;stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3}.square-mark{fill:none;stroke:#17845a;stroke-width:1.6px;vector-effect:non-scaling-stroke}.drag-info{color:#fff;pointer-events:none;white-space:nowrap;z-index:15;background:#1b2230e6;border-radius:6px;padding:3px 8px;font-size:12px;position:absolute}.ctx-menu .ctx-note{color:var(--muted);padding:4px 8px;font-size:11px}.tool-select .path.active-curve .path-hit{cursor:grab}.line-measure{flex-direction:column;gap:7px;display:flex}.line-row{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.line-now{font-variant-numeric:tabular-nums;font-weight:600}.dir-chips{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.dir-chips button{border-radius:10px;padding:1px 7px;font-size:12px}.line-badge{border:1px solid var(--accent);background:var(--panel);color:var(--accent);font-variant-numeric:tabular-nums;z-index:12;border-radius:10px;padding:2px 8px;font-size:12px;font-weight:600;position:absolute;box-shadow:0 2px 8px #141e3226}.quick-edit{background:var(--panel);border:1px solid var(--accent);z-index:25;border-radius:10px;width:330px;padding:10px 12px;position:absolute;box-shadow:0 10px 30px #141e3238}.quick-edit-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.quick-edit-head .icon-btn{margin-left:auto}.legal-overlay{z-index:80}.legal-layout{flex:1;grid-template-columns:230px minmax(0,1fr);gap:16px;min-height:0;display:grid}.legal-nav{flex-direction:column;gap:2px;display:flex;overflow-y:auto}.legal-nav button{text-align:left;background:0 0;border:0;border-radius:7px;padding:7px 10px}.legal-nav button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.legal-body{padding-right:8px;line-height:1.55;overflow-y:auto}.legal-draft{color:#7a4300;background:#fff4e6;border:1px solid #f5c38a;border-radius:8px;margin-bottom:12px;padding:8px 12px;font-size:12.5px}.md h1{margin:4px 0 10px;font-size:22px}.md h2{margin:22px 0 8px;font-size:17px}.md h3{margin:18px 0 6px;font-size:15px}.md p,.md li{color:var(--text)}.md img{border:1px solid var(--border);border-radius:6px;max-width:100%;margin:6px 0}.md blockquote{border-left:3px solid var(--accent);background:var(--bg);border-radius:0 6px 6px 0;margin:10px 0;padding:4px 14px}.md code{background:var(--bg);border-radius:4px;padding:0 4px;font:12.5px ui-monospace,monospace}.md-table{margin:8px 0;overflow-x:auto}.md table{border-collapse:collapse;font-size:13px}.md th,.md td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:5px 9px}.md th{background:var(--bg)}.md li.md-check{margin-left:-18px;list-style:none}.md li.md-check input{margin-right:6px}.legal-links{gap:10px;font-size:12px;display:flex}.legal-links a,.consent a,.cookie-notice a{color:var(--accent)}.consent{flex-direction:column;gap:8px;font-size:12.5px;line-height:1.4;display:flex}.consent .check{align-items:flex-start;gap:8px;display:flex}.consent .check input{width:auto;margin-top:2px}.cookie-notice{z-index:55;background:var(--panel);border:1px solid var(--border);border-radius:12px;align-items:center;gap:12px;width:min(460px,100vw - 32px);padding:12px 14px;font-size:12.5px;line-height:1.45;display:flex;position:fixed;bottom:42px;left:16px;box-shadow:0 10px 30px #141e3233}.cookie-notice p{margin:0}.cookie-notice.consent-choice{flex-direction:column;align-items:stretch}.cookie-actions{justify-content:flex-end;gap:8px;display:flex}.legal-cookie-settings{border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;display:flex}.modal:has(.consent){width:420px}.consent .check input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);flex:none;padding:0}.legal-nav button{white-space:normal;line-height:1.3}.landing{background:var(--panel);scroll-behavior:smooth;height:100%;overflow-y:auto}.landing-header{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#ffffffeb;align-items:center;gap:24px;padding:12px max(24px,50% - 580px);display:flex;position:sticky;top:0}.landing-brand{color:var(--text);align-items:center;gap:8px;font-size:18px;text-decoration:none;display:flex}.landing-nav{gap:20px;display:flex}.landing-nav a{color:#3a4457;font-weight:500;text-decoration:none}.landing-nav a:hover{color:var(--accent)}.landing-actions{gap:8px;margin-left:auto;display:flex}button.big{border-radius:10px;padding:10px 20px;font-size:15px}.landing-hero{background:radial-gradient(1200px 400px at 80% 0,#e9eefe 0%,#0000 60%);grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);align-items:center;gap:48px;padding:64px max(24px,50% - 580px) 48px;display:grid}.eyebrow{background:var(--accent-soft);color:var(--accent);border-radius:20px;margin-bottom:14px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-block}.landing-hero h1{letter-spacing:-.02em;margin:0 0 16px;font-size:clamp(30px,4vw,46px);line-height:1.1}.lead{color:#3a4457;margin:0 0 24px;font-size:17px;line-height:1.55}.hero-ctas{flex-wrap:wrap;gap:10px;display:flex}.hero-media img{border:1px solid var(--border);border-radius:14px;width:100%;box-shadow:0 30px 60px #141e322e}.banners{padding:0 max(24px,50% - 580px)}.banner{color:#fff;background:linear-gradient(120deg,#1f3a8a 0%,#2f5bea 55%,#5b8cff 100%) 50%/cover;border-radius:16px;align-items:center;min-height:170px;padding:28px 36px;display:flex}.banner.with-image{box-shadow:inset 0 0 0 2000px #0f193c73}.banner h2{margin:0 0 8px;font-size:24px}.banner p{opacity:.95;max-width:640px;margin:0 0 14px;line-height:1.5}.banner button.primary{color:var(--accent);background:#fff;border-color:#fff}.banner-dots{justify-content:center;gap:8px;margin-top:10px;display:flex}.banner-dots button{background:var(--border);border:0;border-radius:50%;width:10px;height:10px;padding:0}.banner-dots button.active{background:var(--accent)}.landing-section{padding:64px max(24px,50% - 580px) 16px;scroll-margin-top:60px}.landing-section h2,.final-cta h2{text-align:center;letter-spacing:-.01em;margin:0 0 8px;font-size:30px}.section-sub{text-align:center;color:var(--muted);margin:0 0 32px;font-size:16px}.feature-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;margin-top:24px;display:grid}.feature-card{border:1px solid var(--border);background:#fff;border-radius:14px;padding:20px}.feature-icon{margin-bottom:8px;font-size:28px}.feature-card h3{margin:0 0 6px;font-size:16px}.feature-card p{color:#3a4457;margin:0;line-height:1.5}.pro-badge{color:#fff;vertical-align:middle;background:linear-gradient(120deg,#7c3aed,#2f5bea);border-radius:8px;padding:1px 7px;font-size:11px;font-weight:700;display:inline-block}.steps{counter-reset:none;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:24px 0 0;padding:0;list-style:none;display:grid}.steps li{background:var(--bg);border-radius:14px;padding:20px}.step-n{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-weight:700;display:inline-flex}.steps h3{margin:10px 0 4px;font-size:16px}.steps p{color:#3a4457;margin:0}.plans{flex-wrap:wrap;justify-content:center;gap:20px;display:flex}.plan{border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;gap:8px;width:320px;padding:24px;display:flex}.plan.highlighted{border:2px solid var(--accent);box-shadow:0 20px 40px #2f5bea26}.plan h3{margin:0;font-size:18px}.price b{font-size:32px}.price span{color:var(--muted)}.plan ul{flex-direction:column;gap:6px;margin:6px 0 12px;padding:0;list-style:none;display:flex}.plan button{margin-top:auto;padding:10px}.faq{flex-direction:column;gap:8px;max-width:760px;margin:24px auto 0;display:flex}.faq details{border:1px solid var(--border);border-radius:10px;padding:12px 16px}.faq summary{cursor:pointer;font-weight:600}.faq p{color:#3a4457;margin:8px 0 0;line-height:1.5}.final-cta{text-align:center;background:linear-gradient(120deg,#eef2ff,#e9eefe);border-radius:20px;margin:64px max(24px,50% - 580px) 0;padding:48px 24px}.final-cta p{color:#3a4457;margin:0 0 20px}.landing-footer{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:48px;padding:28px max(24px,50% - 580px);font-size:13px;display:flex}.landing-footer div{align-items:center;gap:6px;display:flex}.landing-footer nav{flex-wrap:wrap;gap:14px;display:flex}.landing-footer a{color:#3a4457}.landing.preview{height:auto;overflow:visible}.landing.preview .landing-header{position:static}@media (width<=800px){.landing-hero{grid-template-columns:1fr;padding-top:36px}.landing-nav{display:none}}.mobile-only{display:none}@media (width<=900px){.mobile-only{display:block}}@media (width<=560px){.landing-header{gap:12px;padding:10px 16px}.landing-header .landing-header-cta{display:none}}.hero-mobile-note{color:var(--muted);margin:14px 0 0;font-size:14px}.small-screen{background:var(--bg,#f4f6fb);justify-content:center;align-items:center;min-height:100%;padding:24px 16px;display:flex}.small-screen-card{text-align:center;background:var(--panel);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:12px;width:min(420px,100%);padding:28px 22px;display:flex;box-shadow:0 10px 30px #141e321f}.small-screen-icon{font-size:44px}.small-screen-card h2{margin:0;font-size:21px}.small-screen-card p{color:#3a4457;margin:0 0 6px;line-height:1.5}.small-screen-card .link-btn{color:var(--muted);background:0 0;border:none;font-size:13px;text-decoration:underline}.page-loading,.page-message{height:100%;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex}.page-message h2{color:var(--text);margin:0}.upsell{text-align:left;flex-direction:column;gap:10px;padding:24px 20px;display:flex}.upsell-icon{font-size:36px}.upsell h3{margin:0;font-size:17px}.upsell p{margin:0;line-height:1.5}.upsell ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.admin{background:var(--bg);flex-direction:column;height:100%;display:flex}.admin-header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:10px 20px;display:flex}.admin-tabs{gap:4px;display:flex}.admin-tabs button{background:0 0;border:0;border-radius:8px;padding:7px 12px}.admin-tabs button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.admin-body{flex:1;min-height:0;padding:16px 24px 48px;overflow-y:auto}.admin-toolbar{z-index:5;background:var(--bg);align-items:center;gap:8px;padding:10px 0;display:flex;position:sticky;top:-16px}.status-warn-text{color:var(--warn);font-weight:600}.admin-error{margin-bottom:10px}.admin-form{flex-direction:column;gap:16px;max-width:860px;display:flex}.admin-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.admin-card h3{margin:0 0 4px}.admin-field{color:var(--muted);flex-direction:column;flex:1;gap:4px;font-size:12.5px;display:flex}.admin-field input,.admin-field textarea{font:inherit;color:var(--text);border:1px solid var(--border);resize:vertical;border-radius:7px;padding:7px 9px;font-size:14px}.admin-card .pair{gap:10px;display:flex}.admin-card .pair.narrow-first>:first-child{flex:0 0 80px}.admin-list{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.admin-item{border:1px solid var(--border);background:var(--bg);border-radius:10px;flex-direction:column;align-self:stretch;gap:8px;padding:10px 12px;display:flex}.admin-item-head{align-items:center;gap:4px;display:flex}.image-field{align-items:center;gap:12px;display:flex}.image-field img,.image-empty{object-fit:cover;border:1px solid var(--border);background:var(--bg);border-radius:8px;width:160px;height:90px}.image-empty{justify-content:center;align-items:center;font-size:12px;display:flex}.image-actions{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.admin-preview{border:1px solid var(--border);background:var(--panel);border-radius:12px;overflow:hidden}.admin-search{border:1px solid var(--border);border-radius:8px;width:320px;padding:7px 10px}.admin-table{border-collapse:collapse;background:var(--panel);border-radius:10px;width:100%;font-size:13px;overflow:hidden}.admin-table th,.admin-table td{border-bottom:1px solid var(--border);text-align:left;padding:8px 10px}.admin-table th{background:var(--bg);font-weight:600}.app.side-collapsed{grid-template-columns:128px minmax(0,1fr) 40px}.sidebar.collapsed{align-items:stretch;gap:6px;padding:6px 0}.side-expand{margin:0 5px;padding:4px 0;font-size:16px}.side-rail{flex-direction:column;gap:2px;display:flex;overflow-y:auto}.side-rail button{writing-mode:vertical-rl;color:#3a4457;background:0 0;border:0;border-left:2px solid #0000;border-radius:0;padding:10px 0;font-size:12px}.side-rail button:hover{background:var(--accent-soft)}.side-rail button.active{color:var(--accent);border-left-color:var(--accent);font-weight:600}.side-handle{width:16px;height:56px;color:var(--muted);z-index:6;border-right:0;border-radius:8px 0 0 8px;padding:0;font-size:14px;line-height:1;position:absolute;top:50%;right:0;transform:translateY(-50%);box-shadow:-1px 0 4px #141e3214}.side-handle:hover{color:var(--accent);width:20px}.seam-suggest{border-bottom:1px solid var(--border);cursor:pointer;align-items:flex-start;gap:8px;padding:6px 0;display:flex}.msg-figures{flex-wrap:wrap;gap:6px;margin:4px 0;display:flex}.msg-figure{cursor:zoom-in;background:0 0;border:none;padding:0}.msg-figure.big{cursor:zoom-out;width:100%}.msg-figure.big img{width:100%;max-height:none}.msg-figures img{border:1px solid var(--border);background:#fff;border-radius:6px;max-width:100%;max-height:180px}.cloud-badge{border:1px solid var(--border);background:var(--panel,#fff);white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:12px}.cloud-badge.saved{color:#2b8a3e;border-color:#b2f2bb}.cloud-badge.dirty,.cloud-badge.saving{color:#9c6500;border-color:#ffe066}.cloud-badge.error,.cloud-badge.conflict{color:#c92a2a;border-color:#ffc9c9}.cloud-badge.local{color:var(--muted,#666)}.cloud-modal .tabs-row{gap:6px;margin:8px 0;display:flex}.cloud-modal .tabs-row .active{border-color:var(--accent);color:var(--accent)}.cloud-body{flex-direction:column;gap:6px;max-height:60vh;display:flex;overflow:auto}.cloud-row{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:6px 4px;display:flex}.cloud-row.current{background:var(--accent-soft,#eef3ff)}.cloud-row .grow,.cloud-save-new .grow{flex:1}.cloud-save-new{border:1px dashed var(--border);border-radius:8px;align-items:center;gap:8px;padding:8px;display:flex}.cloud-save-new span,.cloud-save-new input{flex:1}.cloud-save-new input{border:1px solid var(--border);font:inherit;border-radius:6px;padding:5px 8px}.cloud-conflict{background:#fff5f5;border:1px solid #ffc9c9;border-radius:8px;padding:8px}.cloud-conflict .row{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.piece-fill.with-art{fill-opacity:.05}.print-panel h3{margin:12px 0 4px}.print-panel .row{gap:6px;margin:6px 0;display:flex}.print-band,.print-layer{padding:6px}.print-preview{border:1px solid var(--border);touch-action:none;background:#fff;border-radius:8px;width:100%;max-height:320px}.print-handle{fill:#2f5bea;fill-opacity:.8;stroke:#fff;stroke-width:.3px;cursor:grab}.layer-thumb{object-fit:contain;background:#eee;border-radius:4px;width:28px;height:28px}.print-layer-grid{grid-template-columns:1fr 1fr;gap:4px 10px;margin-top:4px;font-size:12px;display:grid}.print-layer-grid label{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.print-layer-grid input[type=number]{width:60px}.color-input{align-items:center;gap:6px;display:inline-flex}.color-input input[type=color]{border:1px solid var(--border);border-radius:4px;width:34px;height:24px;padding:0}.print-export{grid-template-columns:320px 1fr;gap:16px;display:grid}.print-export-form{flex-direction:column;gap:6px;font-size:13px;display:flex}.print-export-form input[type=number]{width:70px}.print-qty{flex-wrap:wrap;gap:6px;display:flex}.print-qty label{flex-direction:column;font-size:12px;display:flex}.print-qty input{width:52px}.print-export-preview{min-width:0}.print-sheet{border:1px solid var(--border);background:#fafafa;max-height:62vh;margin-top:6px;overflow:auto}.print-sheet svg{max-width:420px;height:auto;margin:0 auto;display:block}.row-inline{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.join-card p{margin:4px 0 6px}.join-sizes th{text-align:left;color:var(--muted);font-weight:600}.join-sizes tr.active td{color:var(--accent);font-weight:700}.join-sizes-wrap{max-height:168px;overflow-y:auto}.walked-a,.walked-b{fill:none;stroke-width:4px;vector-effect:non-scaling-stroke;stroke-linecap:round}.walked-a{stroke:#2f5bea8c}.walked-b{stroke:#e0389a8c;stroke-dasharray:6 4}.walk-contact{fill:#fff;stroke:#e0389a;stroke-width:3px}.walk-card input[type=range]{width:100%}.walk-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.walk-row input[type=number]{width:70px}.walk-notches tr.ok td{color:#17845a}.walk-notches tr.warn td{color:#b7950b}.walk-notches tr.missing td{color:#c0392b}.walk-notches th{text-align:left;color:var(--muted);font-weight:600}.join-junctions{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding-top:6px;display:flex}.junction{justify-content:space-between;align-items:center;gap:6px;display:flex}.junction.warn span{color:#b7950b}.junction.ok span{color:#17845a}button.link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}
