:root{--bg: #eef1f4;--ink: #1b2430;--muted: #5b6775;--panel: #ffffff;--line: #c9d1da;--accent: #1f5fd0;--supply: #2b6be0;--exhaust: #d8452c;--on-accent: #fff}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:IBM Plex Sans KR,Malgun Gothic,system-ui,sans-serif;font-size:13px}[hidden]{display:none!important}#layout{--panel-w: 320px;--right-w: 300px;display:grid;grid-template-columns:64px var(--panel-w) 5px 1fr 5px var(--right-w);grid-template-rows:48px 1fr 48px;grid-template-areas:"top top top top top top" "rail panel psplit canvas rsplit right" "rail panel psplit bottom rsplit right";height:100vh}#layout.panel-off{grid-template-columns:64px 0 0 1fr 5px var(--right-w)}#layout.right-off{grid-template-columns:64px var(--panel-w) 5px 1fr 0 0}#layout.panel-off.right-off{grid-template-columns:64px 0 0 1fr 0 0}.splitter{background:var(--line);cursor:col-resize;touch-action:none}.splitter:hover,.splitter:focus-visible{background:var(--accent)}#panelSplitter{grid-area:psplit}#rightSplitter{grid-area:rsplit}#panel.collapsed,#right.collapsed,#layout.panel-off #panelSplitter,#layout.right-off #rightSplitter{display:none}#topbar{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;white-space:nowrap}#topbar .group{display:flex;gap:8px;align-items:center;flex:none}#topbar button:not(.primary){padding:5px 9px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}#projectName{font:inherit;font-weight:600;border:1px solid transparent;padding:4px 6px;border-radius:4px}#projectName:focus-visible{border-color:var(--accent)}#rail{grid-area:rail;display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--line)}#rail button{height:64px;border:0;background:none;font-size:11px;color:var(--muted);cursor:pointer;overflow:hidden;padding:0 2px}#rail button.on{color:var(--accent);background:#e6eefb}#rail button span{display:block;white-space:nowrap;font-size:10px;letter-spacing:-.02em}#panel{grid-area:panel;background:var(--panel);border-right:1px solid var(--line);padding:12px;overflow:auto}#panel h3{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:14px 0 6px}#panel button:not(.primary){display:flex;justify-content:space-between;width:100%;padding:8px 10px;margin-bottom:4px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}#panel button.on{border-color:var(--accent);background:#e6eefb}#panel .row{display:grid;grid-template-columns:1fr 1fr;gap:4px}#canvasWrap{grid-area:canvas;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}#canvasStack{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}#c2d,#c3d{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}#c3d canvas{display:block;width:100%;height:100%}#optionBar{flex:0 0 auto;display:flex;align-items:center;gap:14px;min-height:40px;padding:4px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap;overflow-x:auto;white-space:nowrap}#optionBar label{display:flex;align-items:center;gap:4px;flex:none}#optionBar input[type=number],#optionBar input[type=text]{width:68px;font:inherit;padding:3px 5px;border:1px solid var(--line);border-radius:4px}#optionBar select{font:inherit;padding:3px 5px;border:1px solid var(--line);border-radius:4px}#optionDims{display:flex;align-items:center;gap:14px}#optionBar label.dim input{width:84px}#optionBar label.dim.on input{border-color:var(--accent);box-shadow:0 0 0 2px #e6eefb}#banner button.hint[data-action=hintCancel]{border:0;background:none;padding:0;color:var(--muted);cursor:pointer;text-decoration:underline dotted;font-size:12px}#banner span.hint{color:var(--muted);font-size:12px}#banner{flex:0 0 auto;display:flex;align-items:center;gap:10px;min-height:32px;padding:4px 12px;background:#fffbe6;border-bottom:1px solid var(--line);overflow-x:auto;white-space:nowrap}#banner button:not(.primary){margin-left:0;padding:3px 8px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}#imageStrip{position:absolute;left:50%;bottom:12px;transform:translate(-50%);display:flex;gap:14px;align-items:center;padding:6px 14px;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 2px 8px #00000014}#imageStrip input[type=range]{width:110px}#btnBgLock{padding:4px 10px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}#btnBgLock.on{background:var(--accent);color:#fff;border-color:var(--accent)}.ctx-menu{position:fixed;z-index:60;min-width:190px;background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 8px 24px #0000002e;padding:4px}.ctx-item{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:6px 10px;border:0;background:none;font:inherit;text-align:left;cursor:pointer;border-radius:4px}.ctx-item:hover:not(:disabled),.ctx-item:focus-visible{background:#e6eefb}.ctx-item:disabled{color:var(--muted);cursor:default}.ctx-item.danger{color:var(--exhaust);border:0;margin:0}.ctx-sep{height:1px;background:var(--line);margin:4px 2px}#right{grid-area:right;display:flex;flex-direction:column;background:var(--panel);border-left:1px solid var(--line);overflow:auto}#minimap{height:200px;border-bottom:1px solid var(--line);position:relative}#minimap canvas{width:100%;height:100%;display:block}#minimap .mm-label{position:absolute;top:4px;left:6px;font-size:11px;color:var(--muted);background:#ffffffbf;padding:0 4px;border-radius:3px;pointer-events:none}#props{padding:12px}#props h2{font-size:14px;margin:0 0 10px}.field{display:block;margin-bottom:8px}.field span{display:block;font-size:11px;color:var(--muted);margin-bottom:2px}.field input,.field select{width:100%;font:inherit;padding:5px 6px;border:1px solid var(--line);border-radius:4px;box-sizing:border-box}#floorBar{display:flex;gap:6px;align-items:center;padding:0 0 10px;position:sticky;top:0;background:var(--panel)}#floorBar select{flex:1 1 auto;min-width:0;font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:4px}#floorBar button:not(.primary){flex:none;padding:4px 8px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}.check{display:flex;gap:6px;align-items:center;margin:8px 0}.danger{color:var(--exhaust);border-color:var(--exhaust);background:#fff;border:1px solid;padding:6px 10px;border-radius:4px;cursor:pointer;margin-top:8px}#bottombar{grid-area:bottom;display:flex;gap:10px;align-items:center;padding:0 10px;background:var(--panel);border-top:1px solid var(--line);overflow-x:auto;overflow-y:hidden;white-space:nowrap}#bottomTail{position:sticky;right:0;z-index:2;display:flex;gap:10px;align-items:center;flex:none;padding-left:10px;background:var(--panel);box-shadow:-8px 0 8px -6px #0000001f}.seg{display:flex;gap:6px;align-items:center}.seg button:not(.primary){padding:5px 8px;white-space:nowrap;flex:none;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}.seg button.on{background:var(--accent);color:#fff;border-color:var(--accent)}#unitSeg button{min-width:44px}#btnZoomIn,#btnZoomOut{min-width:30px;font-weight:600}#minimap canvas{cursor:crosshair}#minimap{resize:vertical;overflow:auto;min-height:80px;max-height:600px;flex:none}.popover{position:fixed;z-index:55;min-width:230px;max-height:70vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px #00000024;padding:10px 12px}.popover h4{font-size:11px;letter-spacing:.06em;color:var(--muted);margin:10px 0 4px}.popover h4:first-child{margin-top:0}.pop-row{display:flex;gap:8px;align-items:center;margin:4px 0}.pop-row span{flex:0 0 74px;color:var(--muted)}.pop-row input[type=range]{flex:1}.pop-row output{width:46px;text-align:right;font-family:IBM Plex Mono,monospace}.pop-row button:not(.primary){padding:2px 6px;font-size:11px;border:1px solid var(--line);background:#fff;border-radius:3px;cursor:pointer}.help-list{margin:4px 0 8px;padding-left:18px;max-width:340px}.help-list li{margin:3px 0;line-height:1.4}kbd{font-family:IBM Plex Mono,monospace;font-size:10px;border:1px solid var(--line);border-radius:3px;padding:0 4px;color:var(--muted)}.muted{color:var(--muted);font-size:12px}.hint{font-size:12px;color:var(--muted)}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:grid;place-items:center;z-index:50}.modal-card{background:#fff;border-radius:8px;width:min(960px,96vw);padding:16px}.modal-card header{display:flex;justify-content:space-between;align-items:center}.modal .toolbar{display:flex;gap:8px;margin:8px 0;flex-wrap:wrap}.modal canvas{width:100%;background:#f4f6f8;border:1px solid var(--line);cursor:crosshair}#toasts{position:fixed;bottom:60px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;z-index:60}.toast{background:#1b2430;color:#fff;padding:8px 14px;border-radius:6px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,.splitter:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.danger:disabled{color:var(--muted);border-color:var(--line);cursor:default}#props details{border-top:1px solid var(--line);margin-top:10px;padding-top:6px}#props summary{cursor:pointer;font-size:11px;color:var(--muted);letter-spacing:.06em}#props .row{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:8px}#props .row button:not(.primary):not(.danger){padding:6px 8px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit}.modal-card.narrow{width:min(380px,94vw)}.modal-card fieldset{border:1px solid var(--line);border-radius:4px}.modal .error{color:var(--exhaust)}.modal-card.narrow .toolbar{justify-content:flex-end}.modal-body .field{margin-bottom:10px}.modal.confirm .modal-body{margin:6px 0 14px;white-space:pre-line}.modal.prompt .modal-body{margin:6px 0 10px}.modal.prompt .error{margin:4px 0 0;font-size:12px}.modal.onboarding .modal-body{margin:6px 0 10px;min-height:3.2em}.onb-dots{text-align:center;color:var(--muted);letter-spacing:.3em;margin:4px 0 2px}.tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:8px 0 12px}.tabs button{padding:6px 12px;border:0;background:none;font:inherit;cursor:pointer;color:var(--muted)}.tabs button.on{color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}#keymapTable{width:100%;border-collapse:collapse}#keymapTable th,#keymapTable td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);font-weight:400}#keymapTable thead th{color:var(--muted);font-size:11px}#props input[type=color]{width:100%;height:28px;padding:0;border:1px solid var(--line);border-radius:4px;background:#fff}#startScreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#17202c8c;display:grid;place-items:center}.start-card-row{background:var(--panel);border-radius:12px;padding:24px 28px;width:min(880px,94vw)}.start-card-row h1{font-size:18px;margin:0 0 16px}.start-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.start-card{display:flex;flex-direction:column;gap:6px;text-align:left;padding:16px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font:inherit}.start-card:hover{border-color:var(--accent);background:#f5f8ff}.start-card b{font-size:14px}.start-card span{color:var(--muted);font-size:12px}@media (max-width: 720px){.start-cards{grid-template-columns:1fr}}#library .tabs{display:flex;gap:4px;margin-bottom:8px;border-bottom:0}#library .tabs button:not(.primary){flex:1;padding:6px 4px;font-size:11px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;box-shadow:none}#library .tabs button.on{border-color:var(--accent);color:var(--accent);background:#e6eefb}.lib-tools{display:grid;grid-template-columns:1fr 88px;gap:4px;margin-bottom:8px}.lib-tools input,.lib-tools select{font:inherit;padding:5px 6px;border:1px solid var(--line);border-radius:4px;box-sizing:border-box;width:100%}.mat-scale{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px;align-items:center;margin-bottom:8px}.mat-scale input{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:4px;width:100%;box-sizing:border-box}.crumb{margin-bottom:6px}.subs,.chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.subs button:not(.primary),.chips button:not(.primary){padding:4px 8px;font-size:11px;border:1px solid var(--line);background:#fff;border-radius:10px;cursor:pointer}#panel .subs button,#panel .chips button{display:inline-flex;justify-content:center;width:auto;margin-bottom:0}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px}.tile{position:relative;display:flex!important;flex-direction:column;align-items:center;gap:2px;padding:6px 4px!important;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font:inherit;text-align:center}.tile-svg{width:100%;height:auto;max-width:96px}.tile-thumb{display:block;width:100%;border-radius:4px;overflow:hidden}.tile-thumb svg{display:block;width:100%;height:auto}.tile canvas.swatch{width:100%;height:auto;border-radius:4px}.tile-name{font-size:11px;line-height:1.2}.tile-code,.tile-size{font-size:10px}.tile .fav{position:absolute;top:2px;right:4px;color:#d0d5db}.tile .fav.on{color:#e8b100}.layer-tree,.layer-tree ul{list-style:none;margin:0;padding:0}.layer-tree>li{margin-bottom:4px}.layer-room-name{font-size:11px;color:var(--muted)}.layer-tree details>summary{display:flex;justify-content:space-between;gap:6px;cursor:pointer;padding:2px 0}.layer-tree details>summary .muted{font-size:10px;white-space:nowrap}.layer-item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;padding:2px 0;border-bottom:1px solid var(--line)}.layer-item.off{opacity:.45}.layer-item.on{background:#e6eefb;box-shadow:inset 2px 0 0 var(--accent)}.layer-item .layer-name{border:0!important;background:none!important;padding:0!important;margin:0!important;font:inherit;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-item .muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.layer-tag{color:var(--accent);font-weight:600}.layer-btns{display:flex;gap:2px}.layer-btns button:not(.primary){border:0!important;background:none!important;padding:0 2px!important;margin:0!important;cursor:pointer}.layer-btns button[data-lock].off,.layer-btns button[data-duct-lock].off{filter:grayscale(1);opacity:.6}.layer-hidden{padding:2px 0}.layer-hidden button:not(.primary){border:0!important;background:none!important;padding:0!important;margin:0!important;font-size:11px;color:var(--muted);text-decoration:underline dotted;cursor:pointer}.layer-actions{margin-bottom:6px}#materials .tabs{display:flex;gap:4px;margin-bottom:8px;border-bottom:0}#materials .tabs button:not(.primary){flex:1;padding:6px 4px;font-size:11px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;box-shadow:none}#materials .tabs button.on{border-color:var(--accent);color:var(--accent);background:#e6eefb}canvas.swatch{width:48px;height:48px;border-radius:4px;border:1px solid var(--line);display:block}.mat-row{border-top:1px solid var(--line);padding-top:8px;margin-top:8px}.mat-label{font-size:11px;color:var(--muted)}.mat-main{display:flex;gap:8px;align-items:center;margin:4px 0 6px}.mat-text{display:flex;flex-direction:column;line-height:1.3}.mat-text b{font-size:12px}.region-row,.region-head{display:grid;grid-template-columns:92px repeat(6,minmax(64px,1fr)) minmax(140px,1fr) auto;gap:6px;align-items:center;margin-bottom:6px}.region-head span{font-size:10px;color:var(--muted);letter-spacing:.02em}.region-row input,.region-row select{font:inherit;padding:4px 6px;border:1px solid var(--line);border-radius:4px;width:100%;box-sizing:border-box}.mat-editor [data-part=rows]{overflow-x:auto}.mat-editor canvas{margin:8px 0}.tpl-filters{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:10px}.tpl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;max-height:50vh;overflow:auto}.tpl-card{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px solid var(--line);border-radius:6px}.tpl-card .row{display:flex;gap:6px;margin-top:4px}.tpl-card button:not(.primary){padding:5px 8px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font:inherit;font-size:12px}@media (max-width: 900px){.tpl-filters{grid-template-columns:1fr 1fr}}.start-sub{font-size:12px;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px}.start-card.tpl{border-left:3px solid var(--accent)}.start-card.restore{border-left:3px solid var(--supply)}.est-table{width:100%;border-collapse:collapse}.est-table th,.est-table td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);font-weight:400}.modal.estimate .est-table thead th{color:var(--ink);font-size:12px;font-weight:600;position:sticky;top:0;background:#fff;z-index:1;box-shadow:0 1px 0 var(--line)}.modal.estimate .modal-card{display:flex;flex-direction:column;max-height:86vh;overflow:hidden;padding:0}.modal.estimate .modal-card>header,.modal.estimate .est-foot{flex:none;padding:12px 16px}.modal.estimate [data-part=table]{flex:1 1 auto;min-height:0;overflow:auto;padding:0 16px}.est-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line)}.est-total{font-weight:600;margin:0}.est-foot .est-note{margin:0;flex:1 1 auto}.modal.render img[data-part=preview]{width:100%;max-height:40vh;object-fit:contain;background:#f4f6f8;border:1px solid var(--line);margin:8px 0}.shot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;max-height:64vh;overflow:auto}.shot-grid>details{grid-column:1 / -1}.shot-grid>details .shot-grid{max-height:none;overflow:visible}.shot{margin:0;border:1px solid var(--line);border-radius:6px;padding:8px}.shot img{width:100%;display:block;border-radius:4px;background:#f4f6f8}.shot figcaption{display:flex;flex-direction:column;font-size:12px;margin:4px 0}.shot .row{display:flex;gap:6px}.shot button:not(.primary):not(.danger){padding:4px 8px;font-size:12px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font-family:inherit;margin:0}.spec-sections{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0}.modal.spec textarea{width:100%;font:inherit;padding:6px;border:1px solid var(--line);border-radius:4px;box-sizing:border-box}.key-cell{border:1px solid var(--line);background:#fff;border-radius:4px;padding:2px 8px;cursor:pointer;font:inherit;min-width:96px;text-align:left}.key-cell:hover{border-color:var(--accent)}.duct-list{list-style:none;margin:4px 0;padding:0}.duct-list li{display:flex;align-items:center;gap:6px;padding:3px 0;border-bottom:1px solid var(--line);font-size:12px}.duct-list li>span:first-child{flex:1}.duct-segs li.on{font-weight:600}.duct-segs button,.duct-dampers button,.duct-conns button{padding:2px 6px;font-size:11px}.duct-dampers input[type=number]{width:52px;padding:1px 3px;font-size:11px}.air-wrap{overflow-x:auto}.air-table{table-layout:fixed}.air-table td.warn{color:#e5484d;font-weight:600}.air-table th,.air-table td{padding:3px 4px;font-size:11px}.air-table tr[data-room]{cursor:pointer}.air-table th:first-child,.air-table td:first-child{width:38%;word-break:keep-all;overflow-wrap:anywhere}.air-table th:not(:first-child),.air-table td:not(:first-child){text-align:right;white-space:nowrap}.air-table td small{font-size:10px;font-weight:400}.air-table thead th{color:var(--muted);font-weight:400}#bottombar.compact kbd{display:none}#bottombar:not(.compact) #btnFit .narrow,#bottombar.compact #btnFit .wide{display:none}#bottombar:not(.compact) #bottomTail .narrow,#bottombar.compact #bottomTail .wide{display:none}#bottombar:not(.tail-sticky) #bottomTail{position:static;box-shadow:none}.bottom-more{position:fixed;right:12px;bottom:52px;z-index:55;display:none;flex-direction:column;gap:6px;padding:10px 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 6px 20px #00000024}.bottom-more.open{display:flex}.bottom-more .seg{justify-content:flex-start}button.primary,.primary{background:var(--accent);color:var(--on-accent);border:0;padding:6px 12px;border-radius:4px;cursor:pointer;font:inherit}.seg button.on kbd,.primary kbd,#panel button.on kbd{color:currentColor;border-color:currentColor}.error{color:var(--exhaust);margin:0 0 8px;font-size:12px}.error:empty{display:none}.tpl-card canvas[data-tpl]{width:96px;height:96px;flex:0 0 auto;align-self:center;background:#f4f6f8;border:1px solid var(--line);border-radius:4px;cursor:default}.tpl-card .error{margin:0}.start-card.tpl.user{display:flex;flex-direction:column;gap:8px;cursor:default}.start-card.tpl.user:hover{border-color:var(--line);background:#fff}.start-open{display:flex;flex-direction:column;gap:6px;text-align:left;border:0;background:none;padding:0;font:inherit;cursor:pointer}.start-open b{font-size:14px}.start-open span{color:var(--muted);font-size:12px}.start-card.tpl.user .row{display:flex;gap:6px}.start-card.tpl.user .row button:not(.primary):not(.danger){flex:1;padding:4px 6px;font-size:11px;border:1px solid var(--line);background:#fff;border-radius:4px;cursor:pointer;font-family:inherit;margin:0}.start-card canvas[data-tpl]{width:96px;height:96px;flex:0 0 auto;align-self:center;background:#f4f6f8;border:1px solid var(--line);border-radius:4px;margin-bottom:2px}.layer-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-bottom:6px}.layer-head input[name=q]{min-width:0}#panel.narrow .layer-code{display:none}.hint-on{outline:2px solid var(--accent);outline-offset:-2px}.modal-card.dxf{max-width:1180px;width:94vw}.dxf-head{margin:0 0 6px;font-weight:600}.dxf-body{display:grid;grid-template-columns:260px 1fr 260px;gap:12px;align-items:start}@media (max-width: 1100px){.dxf-body{grid-template-columns:1fr}}.dxf-col{min-width:0}.dxf-layer-list{max-height:420px;overflow:auto;border:1px solid #e5e7eb;border-radius:6px}.dxf-layer{display:flex;align-items:center;gap:6px;padding:3px 6px;font-size:12px}.dxf-layer.off{color:#9ca3af}.dxf-layer .dot{width:10px;height:10px;border-radius:50%;border:1px solid #d1d5db;flex:none}.dxf-layer b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.dxf-layer .role{color:#6b7280}.dxf-layer .badge{background:#f3f4f6;border-radius:4px;padding:0 4px;color:#6b7280}.dxf-opts label{display:block;margin-bottom:6px}.dxf-nums{font-weight:600;margin:10px 0 2px}.dxf-opts .warn{color:#e5484d;font-weight:600;margin:2px 0}.dxf-opts .tiny{font-size:11px}.dxf-progress{display:flex;align-items:center;gap:8px;margin-top:8px}.dxf-progress .bar{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.dxf-progress .bar i{display:block;height:100%;background:#1f5fd0;width:0}.dxf-col canvas{width:100%;height:auto;background:#fff;border:1px solid #e5e7eb;border-radius:6px}.lib-group{margin-bottom:10px}#panel .lib-group h3{margin:6px 0 4px;font-size:12px}#panel .lib-group h3 .muted{font-weight:400;font-size:11px}#panel button.lib-more{margin-top:4px;width:100%;justify-content:center;font-size:11px;padding:4px}.product-note{margin:6px 0 4px}
