:root{--bg: #f6f7f8;--panel: #ffffff;--panel-2: #f1f3f5;--border: #dde1e6;--text: #1f2328;--muted: #6a737d;--accent: #e0700f;--accent-soft: #fdf0e3;--danger: #c93c37;--part: #216bf2;--part-soft: #eef4fe;--radius: 6px;--font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;font-family:var(--font);font-size:13px;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--border);background:var(--panel);border-radius:var(--radius);padding:4px 10px;cursor:pointer;white-space:nowrap}button:hover{background:var(--panel-2)}button:disabled{opacity:.5;cursor:default}button.is-active{background:var(--accent-soft);border-color:var(--accent);color:#9a4a05}button.danger{color:var(--danger)}button.link{border:none;background:none;padding:0;color:inherit;font-weight:600}.muted{color:var(--muted)}.small{font-size:12px}.strong{font-weight:600}.spacer{flex:1}.app{display:grid;height:100%;grid-template-columns:var(--left-w, 280px) minmax(0,1fr) var(--right-w, 340px);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"toolbar toolbar toolbar" "left view right" "bottom bottom bottom"}.toolbar{grid-area:toolbar;display:flex;align-items:center;gap:12px;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--border)}.brand{font-weight:800;letter-spacing:.02em;color:var(--accent)}.project-name{border:1px solid transparent;border-radius:var(--radius);padding:3px 6px;width:200px;background:transparent;font-weight:600}.project-name:hover,.project-name:focus{border-color:var(--border);background:var(--panel)}.tool-group{display:flex;gap:4px}.toggle{margin-left:auto;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}.viewport{grid-area:view;position:relative;min-height:0}.app.no-left{--left-w: 0px}.app.no-right{--right-w: 0px}.panel-handle{position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:16px;height:56px;padding:0;display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--muted);background:#ffffffeb;border:1px solid var(--border);cursor:pointer}.panel-handle:hover{color:var(--accent);border-color:var(--accent)}.panel-handle-left{left:0;border-left:none;border-radius:0 var(--radius) var(--radius) 0}.panel-handle-right{right:0;border-right:none;border-radius:var(--radius) 0 0 var(--radius)}.view-cube{position:absolute;z-index:2;top:8px;right:8px;display:flex;flex-direction:column;align-items:center;user-select:none}.vc-stage{position:relative;width:100px;height:100px;cursor:grab;touch-action:none}.vc-stage:active{cursor:grabbing}.vc-cube{position:absolute;left:50%;top:50%;width:0;height:0;transform-style:preserve-3d}.vc-face{position:absolute;left:-31px;top:-31px;width:62px;height:62px;display:grid;grid-template-columns:24% 52% 24%;grid-template-rows:24% 52% 24%;background:#fafbfcf0;border:1px solid #8f99a4;backface-visibility:hidden;font:700 9.5px var(--font);letter-spacing:.04em;color:#3d4550}.vc-top,.vc-bottom{background:#f1f3f5f5}.vc-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.vc-zone{cursor:pointer}.vc-zone:hover{background:#e0700f61}.vc-buttons{display:flex;gap:4px}.vc-buttons button{padding:1px 8px;font-size:12px;background:#ffffffeb}.dim-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.dim line{stroke:#3d4550;stroke-width:1}.dim line.ext{stroke-opacity:.55}.dim line.tick{stroke-width:1.4}.dim-label{fill:#1f2328;font:600 11px var(--font);font-variant-numeric:tabular-nums;text-anchor:middle;paint-order:stroke;stroke:#eef0f2f2;stroke-width:3.5px;stroke-linejoin:round}.dim-label.is-editable{pointer-events:auto;cursor:text}.dim-label.is-editable:hover{fill:var(--accent)}.dim-cell line{stroke:#216bf2}.dim-cell .dim-label{fill:#174ea6}.dim-room line,.dim-opening line{stroke:#7a4fb0}.dim-room .dim-label,.dim-opening .dim-label{fill:#5b3690}.dim-gap line{stroke:#b26a00}.dim-gap .dim-label{fill:#8a5200}.dim-elevation line,.dim-wall line{stroke:#6a737d;stroke-dasharray:4 3}.dim-elevation line.tick,.dim-wall line.tick{stroke-dasharray:none}.dim-input{position:absolute;z-index:3;width:84px;transform:translate(-50%,-50%);padding:2px 6px;border:1px solid var(--accent);border-radius:var(--radius);font:600 12px var(--font);text-align:center;box-shadow:0 2px 8px #00000026}.dim-bar{position:absolute;z-index:2;top:8px;left:8px;max-width:calc(100% - 136px);display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:4px 6px;background:#ffffffeb;border:1px solid var(--border);border-radius:var(--radius);font-size:12px}.dim-toggle{border:1px solid transparent;border-radius:999px;padding:1px 8px;background:none;color:var(--muted);font-size:12px;cursor:pointer;user-select:none}.dim-toggle:hover{border-color:var(--border)}.dim-toggle.is-on{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.dim-bar select{border:1px solid var(--border);border-radius:var(--radius);padding:1px 4px}.viewport-host{position:absolute;inset:0}.viewport-canvas{display:block;width:100%;height:100%;outline:none;touch-action:none}.sidebar{background:var(--panel);overflow-y:auto;padding:8px 10px 16px}.sidebar-left{grid-area:left;border-right:1px solid var(--border)}.sidebar-right{grid-area:right;border-left:1px solid var(--border)}.panel-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:8px 0 6px}.catalog-group{margin-bottom:8px}.catalog-item,.tree-item{display:flex;width:100%;justify-content:space-between;gap:6px;text-align:left;border-color:transparent;background:transparent;padding:5px 6px}.catalog-item:hover,.tree-item:hover{background:var(--panel-2)}.tree{list-style:none;margin:0;padding:0}.tree-item.is-selected{background:var(--accent-soft);border-color:var(--accent)}.tree-item.is-parent{border-color:var(--accent)}.tree-subitem{padding-left:18px;font-size:12px;border-radius:var(--radius);border:1px solid transparent}.tree-item.is-part{background:var(--part-soft);border-color:var(--part);color:#174ea6}.section{border-top:1px solid var(--border);padding:8px 0 4px}.section-title{font-size:12px;font-weight:700;margin:0 0 6px}.section-title{display:flex;justify-content:space-between;align-items:baseline}.section.tone-part{border:1px solid #b9d0fb;border-left:3px solid var(--part);background:var(--part-soft);border-radius:var(--radius);padding:8px 8px 6px;margin-bottom:8px}.section.tone-part .section-title{color:#174ea6}.button-row{display:flex;flex-wrap:wrap;gap:4px}.section-body{display:grid;grid-template-columns:minmax(0,1fr);gap:4px}.field{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:8px}.field-label{color:var(--muted)}.field-input{display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);overflow:hidden}.field-input:focus-within{border-color:var(--accent)}.field-input.is-error{border-color:var(--danger)}.field-input input,.field-input select{flex:1;min-width:0;border:none;outline:none;background:transparent;padding:4px 6px}.field-unit{color:var(--muted);padding:0 6px;font-size:12px}.field-check{display:flex;align-items:center;gap:6px;cursor:pointer;color:var(--muted)}.field-note{color:var(--muted)}.pp-hole{fill:#fff;stroke:#b3261e;stroke-width:1.2}.pp-hole.is-back{fill:#e8a39d}.pp-band{stroke:var(--accent, #d9822b);stroke-width:4;stroke-linecap:square}.pp-cutout{fill:#fff;stroke:#3b6fd6;stroke-width:1.2;stroke-dasharray:4 2}.cutout{border-left:2px solid var(--panel-2);padding-left:6px;margin:4px 0}.pp-groove{fill:none;stroke:#6b5bd6;stroke-width:1}.pp-groove.is-back{fill:#c9c2f2}.pp-hole-edge{stroke:#b3261e;stroke-width:2}.pp-hole.g-shelf{stroke:#216bf2}.pp-hole.g-shelf.is-back{fill:#a9c4fa}.pp-hole.g-hinge{stroke:#2f8a3e}.pp-hole.g-hinge.is-back{fill:#a8d8b0}.pp-hole.g-handle{stroke:#8a3fb8}.pp-hole.g-handle.is-back{fill:#d6b5ea}.pp-hole-edge.g-shelf{stroke:#216bf2}.pp-hole-edge.g-hinge{stroke:#2f8a3e}.pp-hole-edge.g-handle{stroke:#8a3fb8}.pp-hole.g-drawer{stroke:#c26a00}.pp-hole.g-drawer.is-back{fill:#f3cf9c}.pp-hole-edge.g-drawer{stroke:#c26a00}.pp-hole.is-dim,.pp-hole-edge.is-dim{opacity:.2}.pp-hole.is-hl{stroke-width:2.2}.pp-hole-edge.is-hl{stroke-width:3.5}.pp-legend{list-style:none;margin:2px 0 8px;padding:0;font-size:12px}.pp-legend li{display:flex;align-items:center;gap:6px;padding:2px 4px;border-radius:var(--radius);cursor:default}.pp-legend li:hover,.pp-legend li:focus-visible{background:var(--panel-2);outline:none}.pp-legend svg{flex:none}.field-note.warn{color:#b7791f}.warnings{margin-top:8px;padding:6px 8px;border-radius:var(--radius);background:#fff6e5;color:#7a4b00}.warnings p{margin:2px 0}.props-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);margin-top:8px;padding-top:8px}.opening-editor{display:grid;gap:4px;padding:6px 0 8px;border-bottom:1px dashed var(--border)}.opening-header{display:flex;justify-content:space-between;align-items:center}.empty-state{color:var(--text);line-height:1.5}code{background:var(--panel-2);padding:0 4px;border-radius:3px}.bottom-panel{grid-area:bottom;background:var(--panel);border-top:1px solid var(--border);display:flex;flex-direction:column}.bottom-panel.is-open{height:var(--bottom-h, 240px)}.bottom-header{display:flex;align-items:center;gap:8px;padding:6px 10px;flex-wrap:wrap}.catalog-row{display:flex;align-items:center}.catalog-row .catalog-item{flex:1}.catalog-remove{padding:0 6px}.cutlist-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:0 10px 6px}.search-input{min-width:200px}.cutlist th.sortable{cursor:pointer;user-select:none}.cutlist th.sortable:hover{color:var(--accent)}.bottom-tabs{display:flex;gap:4px}.bottom-tab{font-weight:600;color:var(--muted);border-color:transparent;background:transparent}.bottom-tab:hover{color:var(--text);background:var(--panel-2)}.bottom-tab.is-active{color:#9a4a05;background:var(--accent-soft);border-color:var(--accent)}.hw-list{margin:4px 0 0;padding-left:16px;font-size:12px}.hw-list li{margin:2px 0}.chip{background:var(--panel-2);border-radius:999px;padding:2px 8px;font-size:12px}.chip-band{background:#eef4fb}.table-wrap{overflow:auto;flex:1}.cutlist{width:100%;border-collapse:collapse}.cutlist th,.cutlist td{padding:3px 10px;border-bottom:1px solid var(--panel-2);text-align:left;vertical-align:middle}.cutlist th{position:sticky;top:0;background:var(--panel);font-weight:600;color:var(--muted);font-size:12px}.cutlist .num{text-align:right;font-variant-numeric:tabular-nums}.edge-glyph{display:block}.edge-body{fill:var(--panel-2);stroke:#c4cad1;stroke-width:1}.edge-on{stroke:var(--accent);stroke-width:3}.edge-off{stroke:none}.segment-card{display:grid;gap:4px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2)}.segment-head{display:flex;justify-content:space-between;align-items:center}.context-menu{position:fixed;z-index:50;min-width:200px;padding:4px 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 6px 20px #00000026;font-size:13px}.context-title{padding:4px 12px 6px;font-weight:600;color:var(--muted);font-size:12px}.context-group+.context-group{border-top:1px solid var(--border);margin-top:4px;padding-top:4px}.context-menu button{display:flex;width:100%;gap:6px;padding:4px 12px 4px 6px;border:none;border-radius:0;background:transparent;text-align:left;cursor:pointer}.context-menu button:hover:not(:disabled){background:var(--accent-soft)}.context-menu button.danger{color:var(--danger)}.context-check{width:14px;text-align:center;color:var(--accent)}.modal-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;background:#14181e59}.modal{max-width:900px;width:100%;max-height:calc(100% - 32px);overflow:auto;padding:14px 18px 18px;background:var(--panel);border-radius:var(--radius);box-shadow:0 12px 40px #00000040}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0;font-size:16px}.shortcuts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px 24px}.shortcuts-grid h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 0 6px}.shortcuts-grid td{padding:3px 8px 3px 0;vertical-align:top}kbd{display:inline-block;padding:1px 6px;border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;background:var(--panel-2);font-family:var(--font);font-size:12px;white-space:nowrap}.tree-row{display:flex;align-items:stretch}.tree-row>.tree-item{flex:1;min-width:0}.tree-toggle{width:18px;flex:none;padding:0;border:none;background:transparent;color:var(--muted);cursor:pointer}.tree-nested{margin-left:18px}.tree-group{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:6px 0 2px}.tree-warn{color:#b7791f}.tree-warn.is-error{color:var(--danger)}.tree-item.is-hidden{opacity:.6;text-decoration:line-through}.tree-item.is-hidden button{text-decoration:none}.modal-sub{display:flex;align-items:center;justify-content:space-between;margin:14px 0 6px}.modal-sub h3{margin:0;font-size:13px}.materials-table{width:100%;border-collapse:collapse}.materials-table th,.materials-table td{padding:3px 6px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.materials-table th{font-size:11px;color:var(--muted);font-weight:600}.materials-table .num,.materials-table .actions{text-align:right}.materials-table input[type=color]{width:28px;height:22px;padding:0;border:1px solid var(--border);border-radius:4px}.name-input{width:100%;min-width:180px;border:1px solid transparent;border-radius:4px;padding:2px 4px;background:transparent}.name-input:hover,.name-input:focus,.maker-input:hover,.maker-input:focus,.list-input:hover,.list-input:focus,.num-input:hover,.num-input:focus{border-color:var(--border);background:var(--panel)}.num-input{width:56px;text-align:right;border:1px solid transparent;border-radius:4px;padding:2px 4px;background:transparent}.panel-preview{display:block;margin:4px auto;max-width:100%}.pp-body{fill:var(--panel-2);stroke:#c3c8cf;stroke-width:1}.pp-edge.is-clickable{cursor:pointer}.pp-hit{stroke:transparent;stroke-width:12}.pp-edge.is-clickable:hover line:last-of-type{stroke-width:5}.pp-label{font-size:10px;fill:var(--muted)}.pp-dims{font-size:11px;fill:var(--text)}.profile-grid,.tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:8px 24px}.profile-grid h3,.tech-grid h3{font-size:12px;text-transform:uppercase;color:var(--muted);margin:10px 0 4px}.nesting-status,.nesting-empty{margin:4px 10px}.nesting-material h4{margin:10px 10px 4px;font-size:12px}.nesting-sheets{display:flex;flex-wrap:wrap;gap:12px;padding:0 10px 10px}.sheet{margin:0}.sheet figcaption{color:var(--muted);margin-bottom:2px}.sheet-trim{fill:#d6d9de}.sheet-body{fill:#f4f5f7;stroke:#9aa1aa;stroke-width:.5}.sheet-part{fill:#fff;stroke:#4a5160;stroke-width:.8}.sheet-label{font-size:10px;fill:#2a2f38;pointer-events:none}.warn-text{color:#b7791f}.bom-actions{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:4px 10px}.bom-sub{margin:12px 10px 4px;font-size:12px}.cutlist tr.group-start td{border-top:2px solid var(--panel-2)}.field-radio{display:flex;flex-direction:column;gap:2px;font-size:12px}.fronts-editor{margin-bottom:8px}.front-layouts,.front-kinds{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0 8px}.front-kinds button.is-active{border-color:var(--accent);color:var(--accent);font-weight:600}.front-drawing{display:block;margin:4px auto}.front-zone rect{fill:#f7f8fa;stroke:#5a6270;stroke-width:1;cursor:pointer}.front-zone.kind-none rect{fill:#fff;stroke-dasharray:4 3}.front-zone.is-active rect{fill:var(--accent-soft);stroke:var(--accent);stroke-width:2}.front-sym{stroke:#8a92a0;stroke-width:1;pointer-events:none}.front-empty{font-size:10px;fill:#9aa1aa;pointer-events:none}.profile-sub{font-size:13px;margin:14px 0 0}.maker-input,.list-input{width:90px;border:1px solid transparent;border-radius:4px;padding:2px 4px;background:transparent}.list-input{width:170px}.hw-select{max-width:170px}.hw-params label{margin-right:8px;color:var(--muted);font-size:11px}.hw-params .num-input{width:44px;color:var(--text, inherit);font-size:12px}.board-drag-label{position:absolute;z-index:3;padding:2px 8px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--panel, #fff);font:600 12px var(--font);white-space:nowrap;pointer-events:none;box-shadow:0 2px 8px #00000026}.measure-label{position:absolute;z-index:3;transform:translate(-50%,-140%);padding:2px 8px;border:1px solid #e0590d;border-radius:var(--radius);background:var(--panel, #fff);color:#b3440a;font:600 12px var(--font);white-space:nowrap;pointer-events:none;box-shadow:0 2px 8px #00000026}.measure-label.is-live{opacity:.85;border-style:dashed}.ill-pop{position:fixed;z-index:1000;max-width:560px;padding:8px 10px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:0 6px 24px #00000029;pointer-events:none}.ill-title{font-weight:600;margin-bottom:4px}.ill-grid{display:flex;flex-wrap:wrap;gap:6px}.ill-grid figure{margin:0;border:1px solid transparent;border-radius:var(--radius);background:var(--bg)}.ill-pop.is-variants .ill-grid figure.is-active{border-color:var(--accent);background:var(--accent-soft)}.ill-grid figcaption{font-size:11px;color:var(--muted);text-align:center;padding:0 4px 4px;max-width:150px}.ill-pop.is-variants .ill-grid figure.is-active figcaption{color:var(--accent);font-weight:600}.ill-text{margin:6px 0 0;max-width:300px;color:var(--muted);font-size:12px}.ill .ill-shape polygon{stroke:#5a6270;stroke-width:.8;stroke-linejoin:round}.ill .tone-body polygon{fill:#fff}.ill .tone-body .face-top{fill:#f4f5f7}.ill .tone-body .face-side{fill:#e4e7eb}.ill .tone-front polygon{fill:#6b7280}.ill .tone-front .face-top{fill:#7d8591}.ill .tone-front .face-side{fill:#575e69}.ill .tone-back polygon{fill:#e9e4da}.ill .tone-ghost polygon{fill:#6b72802e;stroke-dasharray:3 2}.ill .tone-hw polygon{fill:#9aa1aa}.ill .tone-hl polygon{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.4}.ill .tone-hl .face-top{fill:#fef6ee}.ill .tone-hl .face-side{fill:#f9dfc4}.ill-floor{stroke:#9aa1aa;stroke-width:1.2}.ill-wall{stroke:#7a4fb0;stroke-width:3;stroke-opacity:.5}.ill-hole{fill:#fff;stroke:#b3261e;stroke-width:1}.ill-hole.tone-hl{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.4}.ill-line.tone-hl{stroke:var(--accent);stroke-width:2.2;stroke-linecap:round}.ill-line.tone-guide{stroke:#7a4fb0;stroke-width:1;stroke-dasharray:4 3}.ill-line.tone-arrow{stroke:var(--accent);stroke-width:1.6}.ill-arrow-head{fill:var(--accent)}.ill-dim line{stroke:#3d4550;stroke-width:1}.ill-dim line.ext{stroke-opacity:.55}.ill-dim line.tick{stroke-width:1.4}.ill-dim text{fill:#1f2328;font:600 10px var(--font);font-variant-numeric:tabular-nums;text-anchor:middle;paint-order:stroke;stroke:#f6f7f8f2;stroke-width:3px;stroke-linejoin:round}.ill-dim.is-hl line{stroke:var(--accent)}.ill-dim.is-hl text{fill:var(--accent)}.ill-gallery{display:flex;flex-wrap:wrap;gap:8px;padding:8px;height:100%;overflow:auto;align-content:flex-start}.ill-gallery figure{margin:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}.ill-gallery figcaption{font-size:11px;color:var(--muted);text-align:center;padding-bottom:4px}.ill-mark{stroke:#b8bec7;stroke-width:.9;stroke-dasharray:5 3}.ill .tone-hl .ill-mark{stroke:var(--accent)}.ill .tone-wall polygon{fill:#ece7f4}.pp-hole.is-clickable,.pp-hole-edge.is-clickable{cursor:pointer}.pp-hole.is-selected{stroke:var(--part);stroke-width:3}.pp-hole-edge.is-selected{stroke:var(--part);stroke-width:4}.pp-hole.g-custom{stroke:#1d7f86}.pp-hole.g-custom.is-back{fill:#a6dade}.pp-hole-edge.g-custom{stroke:#1d7f86}.hole-editor{margin:2px 0 10px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}.hole-editor-title{display:flex;align-items:baseline;gap:6px;margin:0 0 4px;font-size:13px}.hole-editor-title .link{margin-left:auto}.project-panel{padding-top:0}.add-bar{position:sticky;top:0;z-index:2;margin:0 -10px 4px;padding:8px 10px;background:var(--panel);border-bottom:1px solid var(--border)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover{background:#c9630b}.add-button{width:100%;padding:7px 10px}.tree-row{align-items:center;gap:2px}.tree-subrow{padding-left:0}.tree-actions{display:flex;flex:none;gap:1px;visibility:hidden}.tree-row:hover .tree-actions,.tree-row.is-active .tree-actions,.tree-row:focus-within .tree-actions{visibility:visible}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border-color:transparent;background:transparent;color:var(--muted)}.icon-button:hover{color:var(--text);background:var(--panel-2)}.add-dialog{max-width:1000px}.add-filters{position:sticky;top:-14px;z-index:1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px -18px 4px;padding:8px 18px;background:var(--panel);border-bottom:1px solid var(--border)}.add-search{flex:1 1 220px;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius)}.add-chips{display:flex;flex-wrap:wrap;gap:4px}button.chip{border:1px solid transparent}.add-group h3{margin:12px 0 6px;font-size:13px}.add-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}.add-card-wrap{position:relative}.add-card{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%;padding:6px 6px 8px;white-space:normal;text-align:center}.add-card:hover{border-color:var(--accent);background:var(--accent-soft)}.add-card-name{font-weight:600;font-size:13px}.add-card-remove{position:absolute;top:4px;right:8px;color:var(--muted)}.project-panel{overflow-x:hidden}.project-panel .tree-item>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-panel .tree-item>.muted{flex:none}.tree-item-2l{flex-direction:column;align-items:flex-start;gap:0}.tree-item-2l>span:first-child{max-width:100%}.tree-row.is-hidden-view>.tree-item{opacity:.45}.tree-row.is-hidden-view .tree-actions{visibility:visible}.icon-button.is-off{color:var(--accent)}.bottom-panel select,.bottom-panel input[type=number],.bottom-panel input[type=text],.bottom-panel .search-input{height:28px;padding:3px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);outline:none}.bottom-panel select:focus,.bottom-panel input:focus{border-color:var(--accent)}.bottom-panel select{padding-right:4px;cursor:pointer}.bottom-panel label.small{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.bottom-panel input[type=checkbox]{accent-color:var(--accent)}.bottom-header{border-bottom:1px solid var(--border)}.resizer{position:absolute;z-index:2}.resizer:hover,body.is-resizing-x .resizer-left,body.is-resizing-x .resizer-right,body.is-resizing-y .resizer-bottom{background:#e0700f59}.resizer-left,.resizer-right{top:0;bottom:0;width:5px;cursor:col-resize}.resizer-left{left:0}.resizer-right{right:0}.resizer-bottom{left:0;right:0;bottom:0;height:5px;cursor:row-resize}body.is-resizing-x{cursor:col-resize;user-select:none}body.is-resizing-y{cursor:row-resize;user-select:none}.panel-handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%);width:56px;height:16px;border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;font-size:16px}.sidebar-right .section-title{position:sticky;top:-8px;z-index:3;margin:-8px -10px 6px;padding:8px 10px 6px;background:var(--panel);border-top:1px solid var(--border)}.sidebar-right .section:not(.tone-part){border-top:none}.sidebar-right .section.tone-part .section-title{border-top:none;margin:-8px -8px 6px;padding:8px 8px 6px;background:var(--part-soft);border-radius:var(--radius) var(--radius) 0 0}.section-body{gap:7px}.profile-grid>section,.tech-grid>section{display:grid;gap:7px;align-content:start}.profile-grid>section>h3,.tech-grid>section>h3{margin-bottom:0}.ill-grid{gap:10px}.project-panel>.tree>li+li{border-top:1px solid var(--border);padding-top:3px;margin-top:3px}.project-panel .tree-nested{margin:2px 0 4px 8px;padding-left:8px;border-left:1px solid var(--border)}.project-panel .tree-group{margin:6px 0 2px;font-size:10px}.project-panel .tree-subitem{padding-left:6px}.modal.drawers{max-width:1200px}.drawers-body{display:grid;grid-template-columns:210px minmax(0,1fr) 300px;gap:16px;margin-top:10px}.drawers-list ul{list-style:none;margin:0 0 8px;padding:0;display:grid;gap:2px}.drawers-item{display:grid;width:100%;text-align:left;gap:1px;padding:6px 8px;border:1px solid transparent;border-radius:var(--radius);background:none}.drawers-item:hover{background:var(--part-soft)}.drawers-item.is-selected{border-color:var(--part);background:var(--part-soft)}.drawers-item-name{font-size:12px;font-weight:600}.drawers-item-sub{font-size:11px;color:var(--muted)}.drawers-preview{display:grid;gap:10px;align-content:start;min-width:0}.drawers-3d{position:relative;height:280px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.drawers-3d canvas{display:block;width:100%;height:100%;outline:none}.drawers-test{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px}.drawers-test>.field-label{grid-column:1 / -1;font-weight:700}.drawers-views{display:flex;flex-wrap:wrap;gap:8px}.drawers-views figure{margin:0;border:1px solid var(--border);border-radius:var(--radius);padding:4px}.drawers-views figcaption{font-size:11px;color:var(--muted);text-align:center}.drawers-parts{width:100%;border-collapse:collapse;font-size:12px}.drawers-parts th,.drawers-parts td{text-align:left;padding:3px 6px;border-bottom:1px solid var(--border)}.drawers-settings{display:grid;gap:7px;align-content:start}.drawers-lib-title{margin:14px 0 4px;font-size:12px}.drawers-lib-item{display:grid;gap:1px;padding:4px 8px}.drawers-lib-item .button-row{align-items:center}.section-toggle{all:unset;display:flex;align-items:baseline;gap:6px;flex:1;min-width:0;cursor:pointer}.section-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.section-chev{width:10px;color:var(--muted);font-size:10px}.section-summary{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;font-size:11px;color:var(--muted)}.section.is-collapsed{padding-bottom:0}.section.is-collapsed .section-title{margin-bottom:0}.disclosure{border-top:1px dashed var(--border);padding-top:6px}.disclosure-toggle{all:unset;display:flex;align-items:baseline;gap:6px;width:100%;min-width:0;cursor:pointer;font-size:12px;font-weight:600}.disclosure-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.disclosure-body{display:grid;gap:7px;margin-top:7px}.project-panel .tree-subrow-2{margin-left:18px;padding-left:6px;border-left:1px solid var(--border)}.modal.hinge-dialog{width:min(860px,calc(100vw - 32px))}.hinge-name{width:100%;margin-bottom:10px}.hinge-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px);gap:16px;align-items:start}.hinge-figure{margin:0;display:grid;gap:6px}.hinge-figure svg{max-width:100%;height:auto}.hinge-fields{display:grid;gap:7px}.hinge-fields h3{margin:6px 0 0;font-size:12px}@media(max-width:700px){.hinge-body{grid-template-columns:1fr}}.door-hinges{display:grid;gap:8px;justify-items:center}.door-hinges-fields{justify-self:stretch}.door-hinges-fields{display:grid;gap:7px;min-width:0}.notice{position:absolute;left:50%;bottom:18px;transform:translate(-50%);z-index:6;display:flex;align-items:center;gap:10px;max-width:min(560px,calc(100% - 32px));padding:7px 8px 7px 12px;border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--panel, #fff);box-shadow:0 4px 16px #0000001f;font-size:12px}.crumbs{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 4px;padding:2px 2px 6px;font-size:12px;min-width:0}.crumb{display:inline-flex;align-items:baseline;gap:4px;min-width:0}.crumb b{font-weight:600}.crumb-sep{color:var(--muted)}.context-label{flex:1}.context-key{margin-left:16px;color:var(--muted);font:inherit;font-size:11px}.panel-title-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.panel-title-row .link{text-transform:none;letter-spacing:0;font-weight:400}.tree-ref{color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.modal.check-dialog{width:min(640px,calc(100vw - 32px))}.check-ok{color:#1d7a3a;font-weight:600}.check-group h3{margin:12px 0 4px;font-size:13px}.check-group ul{list-style:none;margin:0;padding:0}.check-item{display:flex;gap:8px;align-items:baseline;padding:3px 0;font-size:12px}.check-text{flex:1}.danger-text{color:#c0392b}:root{--label-col: 108px}.sidebar-right{container-type:inline-size}.field{grid-template-columns:var(--label-col) minmax(0,1fr);min-height:28px}.field-label{line-height:1.25}.field-value{min-width:0}.field-actions{align-items:start}.field-actions>.field-label{padding-top:5px}.action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;min-width:0}.action-grid.cols-1{grid-template-columns:minmax(0,1fr)}.action-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.action-grid>button{width:100%;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.action-grid>button:only-child,.action-grid>.action-info+button:last-child,.action-grid.cols-2>button:last-child:nth-child(odd):not(:only-child){grid-column:1 / -1}.action-info{grid-column:1 / -1;color:var(--muted);font-size:12px;line-height:1.3;padding-top:4px}.action-info.is-error{color:var(--danger)}.section-body .field-note,.fronts-editor .field-note{font-size:12px;line-height:1.35;margin:0}.field-note.under{margin-left:calc(var(--label-col) + 8px);margin-top:-3px}.section-body>.button-row,.fronts-editor>.button-row,.disclosure-body>.button-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.section-body>.button-row>button:not(.link),.fronts-editor>.button-row>button:not(.link),.disclosure-body>.button-row>button:not(.link){width:100%;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.fronts-editor{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-bottom:0}.fronts-editor .front-kinds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin:0}.fronts-editor .front-kinds button{min-width:0;padding-left:4px;padding-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.field-check{line-height:1.25}@container (max-width: 290px){.field-actions{grid-template-columns:minmax(0,1fr);gap:3px}.field-actions>.field-label{padding-top:0}.field-note.under{margin-left:0}}.action-grid>button{padding-left:4px;padding-right:4px}
