:root{--bg: #ffffff;--panel: #ffffff;--panel-2: #f5f5f5;--field: #ffffff;--text: #141414;--muted: #6e6e6e;--line: #e3e3e3;--hover: #f2f2f2;--accent: #d71920;--accent-text: #ffffff;--sel: #fde4e5;--active: #141414;--stage-top: #e9e9e9;--stage-bottom: #f8f8f8;--float: rgba(255, 255, 255, .95);--shadow: 0 2px 10px rgba(0, 0, 0, .14);--dim: #b0b0b0;color-scheme:light;font-family:Pretendard,Malgun Gothic,Apple SD Gothic Neo,system-ui,sans-serif;font-size:13px;color:var(--text)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #111111;--panel: #1a1a1a;--panel-2: #232323;--field: #111111;--text: #f2f2f2;--muted: #9b9b9b;--line: #2f2f2f;--hover: #262626;--accent: #e5262d;--accent-text: #ffffff;--sel: #4a1619;--active: #e5262d;--stage-top: #2a2a2a;--stage-bottom: #101010;--float: rgba(26, 26, 26, .95);--shadow: 0 2px 12px rgba(0, 0, 0, .5);--dim: #5a5a5a;color-scheme:dark}}:root[data-theme=dark]{--bg: #111111;--panel: #1a1a1a;--panel-2: #232323;--field: #111111;--text: #f2f2f2;--muted: #9b9b9b;--line: #2f2f2f;--hover: #262626;--accent: #e5262d;--accent-text: #ffffff;--sel: #4a1619;--active: #e5262d;--stage-top: #2a2a2a;--stage-bottom: #101010;--float: rgba(26, 26, 26, .95);--shadow: 0 2px 12px rgba(0, 0, 0, .5);--dim: #5a5a5a;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg)}body{display:flex}button,input,select{font:inherit;color:inherit}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}svg .fill{fill:currentColor;stroke:none}:root:not([data-theme=dark]) .i-sun{display:none}:root[data-theme=dark] .i-moon{display:none}@media (prefers-color-scheme: dark){:root:not([data-theme]) .i-moon{display:none}:root:not([data-theme]) .i-sun{display:inline}}button,.file-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:4px 9px;cursor:pointer;white-space:nowrap}button:hover,.file-btn:hover{background:var(--hover)}button:disabled{opacity:.4;cursor:default;background:transparent}button.icon,.file-btn.icon{padding:4px;width:30px;height:30px}button.ghost{border-color:transparent;background:transparent}button.ghost:hover{background:var(--hover)}button.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);font-weight:600}button.primary:hover{filter:brightness(1.08)}button.active{background:var(--active);border-color:var(--active);color:#fff}input,select{border:1px solid var(--line);border-radius:6px;padding:5px 8px;background:var(--field);min-width:0;outline:none}input:focus,select:focus{border-color:var(--accent)}input[type=range]{accent-color:var(--accent);padding:0;border:none;background:transparent}input[type=checkbox]{accent-color:var(--accent);margin:0}.muted{color:var(--muted);font-size:12px}body{--side-w: 290px}#side{width:var(--side-w);flex:none;display:flex;flex-direction:column;background:var(--panel);padding:10px 12px 12px;gap:12px;overflow:hidden;transition:margin-left .2s}body.side-closed #side{margin-left:calc(-1 * var(--side-w))}body.resizing #side{transition:none}body.resizing,body.resizing *{cursor:col-resize!important;-webkit-user-select:none;user-select:none}#sideEdge{flex:none;position:relative;z-index:7;width:6px;margin-right:-5px;border-left:1px solid var(--line);cursor:col-resize;touch-action:none}#sideEdge:after{content:"";position:absolute;left:-2px;top:0;bottom:0;width:3px;background:var(--accent);opacity:0;transition:opacity .15s}#sideEdge:hover:after,body.resizing #sideEdge:after{opacity:1}#sideTab{position:absolute;top:50%;left:0;transform:translateY(-50%);width:16px;height:56px;padding:0;border:1px solid var(--line);border-left:none;border-radius:0 8px 8px 0;background:var(--panel);color:var(--muted);box-shadow:2px 0 6px #00000014;cursor:pointer!important}#sideTab:hover{color:var(--accent);background:var(--panel)}#sideTab svg{width:14px;height:14px;transition:transform .2s}body.side-closed #sideTab svg{transform:rotate(180deg)}#side section{display:flex;flex-direction:column;gap:6px;min-height:0}#side h3{margin:0;font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--muted);display:flex;align-items:center;min-height:22px}#side .tree-section{flex:1 1 0}#side .props-section{flex:0 1 34%}.fold{margin-left:auto;width:22px;height:22px;padding:0;color:var(--muted)}.fold svg{width:14px;height:14px;transition:transform .15s}#side.fold-tree #treeSec>:not(h3),#side.fold-props #propsSec>:not(h3){display:none}#side.fold-tree #treeSec .fold svg,#side.fold-props #propsSec .fold svg{transform:rotate(-90deg)}#side.fold-tree #propsSec{flex:1 1 0!important}#side.fold-tree #treeSec,#side.fold-props #propsSec{flex:none!important}#side.fold-tree .hsplit,#side.fold-props .hsplit{display:none}.hsplit{flex:none;height:10px;margin:-11px 0;position:relative;cursor:row-resize;touch-action:none;z-index:1}.hsplit:after{content:"";position:absolute;left:30%;right:30%;top:4px;height:3px;border-radius:2px;background:var(--line);transition:background .15s}.hsplit:hover:after,body.resizing-v .hsplit:after{background:var(--accent);left:0;right:0}body.resizing-v,body.resizing-v *{cursor:row-resize!important;-webkit-user-select:none;user-select:none}.vp-section{position:relative}.vp-btn{justify-content:flex-start;gap:8px;padding:6px 10px;width:100%}.vp-btn #vpLabel{overflow:hidden;text-overflow:ellipsis}.vp-btn .badge{margin-left:auto;color:var(--muted);font-size:11px}.vp-btn .chev{width:14px;height:14px;color:var(--muted);transition:transform .15s}.vp-btn.on .chev{transform:rotate(180deg)}.vp-btn.on{border-color:var(--accent)}.pop.menu{top:calc(100% + 4px);bottom:auto;left:0;right:0;transform:none;min-width:0;z-index:30;gap:6px;padding:8px;border:1px solid var(--line)}.pop.menu .list{max-height:min(55vh,460px)}.list li.grp{cursor:default;font-size:11px;font-weight:700;color:var(--muted);padding:8px 8px 3px}.list li.grp:hover{background:none}.list li.cur{background:var(--sel)}.side-head{display:flex;align-items:center;justify-content:space-between;min-height:30px}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;letter-spacing:-.2px}.brand .logo{width:26px;height:26px;display:block}.model-row{flex-direction:row!important;gap:4px!important}.model-row select{flex:1}.search-field{display:flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:8px;padding:3px 3px 3px 9px;background:var(--field)}.search-field:focus-within{border-color:var(--accent)}.search-field svg{color:var(--muted);width:16px;height:16px}.search-field input{flex:1;border:none;padding:4px 2px;background:transparent}.search-field button{padding:4px 12px}.check{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px}.search-result{font-size:12px;color:var(--muted);max-height:120px;overflow:auto}.search-result:empty{display:none}.search-result div{padding:3px 6px;cursor:pointer;color:var(--text);border-radius:4px}.search-result div:hover{background:var(--hover)}.list{list-style:none;margin:0;padding:0;max-height:180px;overflow:auto}.list li{padding:5px 8px;cursor:pointer;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list li:hover{background:var(--hover)}.list li .folder{color:var(--muted);font-size:11px;margin-left:6px}.tree{border:1px solid var(--line);border-radius:8px;overflow:auto;flex:1;padding:4px 0;font-size:12px}.tree .node{display:flex;align-items:center;white-space:nowrap;cursor:pointer;padding:1px 6px;line-height:21px}.tree .node:hover{background:var(--hover)}.tree .node.sel{background:var(--sel)}.tree .tw{width:16px;flex:none;text-align:center;color:var(--muted);font-size:9px}.tree .nm.hidden{color:var(--dim)}.tree .more{color:var(--accent);padding-left:24px;cursor:pointer;line-height:21px}.props{overflow:auto;font-size:12px;border:1px solid var(--line);border-radius:8px;flex:1}.props .empty{color:var(--muted);padding:14px 10px;text-align:center}.props .head{padding:6px 8px;font-weight:600;border-bottom:1px solid var(--line)}.props .head span{color:var(--muted);font-weight:400}.props details{border-bottom:1px solid var(--line)}.props details:last-child{border-bottom:none}.props summary{font-weight:600;padding:5px 8px;cursor:pointer;background:var(--panel-2)}.props table{width:100%;border-collapse:collapse;table-layout:fixed}.props td{padding:3px 8px;vertical-align:top;word-break:break-all;border-top:1px solid var(--line)}.props td:first-child{color:var(--muted);width:42%}#stage{flex:1;position:relative;min-width:0;background:linear-gradient(180deg,var(--stage-top),var(--stage-bottom))}#stage canvas{display:block;width:100%;height:100%;touch-action:none}.vc-ui{position:absolute;pointer-events:none;z-index:4}.vc-ui button{position:absolute;pointer-events:auto;padding:0;border:0;background:none;min-width:0;box-shadow:none;cursor:pointer}.vc-home{left:4px;top:2px;width:22px;height:22px;opacity:0;transition:opacity .15s}.vc-home svg{width:20px;height:20px;stroke:#6a6a6a;fill:#f2f2f2;stroke-width:1.6}.vc-home:hover svg{stroke:#d71920;fill:#fde4e5}.vc-ui:hover .vc-home,#stage:hover .vc-home{opacity:1}.vc-arrow{width:16px;height:11px;display:none;background:#cfcfcf!important;clip-path:polygon(50% 0,100% 100%,0 100%)}.vc-arrow:hover{background:#ef6a6f!important}.vc-ui.aligned .vc-arrow{display:block}.vc-arrow[data-a=up]{left:calc(50% - 8px);top:19.5%}.vc-arrow[data-a=down]{left:calc(50% - 8px);bottom:19.5%;transform:rotate(180deg)}.vc-arrow[data-a=left]{left:17.5%;top:calc(50% - 5.5px);transform:rotate(-90deg)}.vc-arrow[data-a=right]{right:17.5%;top:calc(50% - 5.5px);transform:rotate(90deg)}.float{position:absolute;z-index:5;background:var(--float);box-shadow:var(--shadow);border-color:transparent}#btnSide{left:10px;top:10px;width:32px;height:32px;display:none}.toolbar{position:absolute;left:50%;bottom:16px;transform:translate(-50%);z-index:6;display:flex;align-items:center;gap:2px;background:var(--float);box-shadow:var(--shadow);border-radius:10px;padding:5px}.toolbar>button,.tool-wrap>button{width:38px;height:36px;padding:0;border:none;background:transparent;border-radius:7px}.toolbar>button:hover:not(:disabled),.tool-wrap>button:hover{background:var(--hover)}.toolbar svg{width:20px;height:20px}.toolbar button.on{background:var(--sel);color:var(--accent)}.toolbar button.active{background:var(--active);color:#fff}.toolbar .sep{width:1px;height:22px;background:var(--line);margin:0 4px}.tool-wrap{position:relative}.pop{position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%);background:var(--float);box-shadow:var(--shadow);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;min-width:210px;font-size:12px}.pop.right{left:auto;right:-5px;transform:none}.pop-title{font-size:11px;font-weight:700;color:var(--muted);display:flex;justify-content:space-between}.pop-title span{color:var(--text);font-weight:600}.pop-title:not(:first-child){margin-top:4px}.pop-row{display:flex;align-items:center;gap:6px}.pop-row>span:first-child{flex:1}.pop-row button{padding:3px 8px;font-size:12px}.pop input[type=color]{width:40px;height:24px;padding:0 2px}.pop input[type=range]{width:100%}.seg{display:flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}.seg button{flex:1;border:none;border-radius:0;padding:4px 6px;font-size:12px;background:transparent}.seg button+button{border-left:1px solid var(--line)}.seg button.active{background:var(--active);color:#fff}.stats{position:absolute;left:12px;top:10px;z-index:5;margin:0;background:#111c;color:#f2f2f2;font:11px/1.4 Consolas,monospace;padding:6px 8px;border-radius:6px;pointer-events:none}.measure-info{position:absolute;left:50%;bottom:72px;transform:translate(-50%);z-index:5;display:flex;align-items:center;gap:10px;background:var(--float);box-shadow:var(--shadow);border-radius:8px;padding:5px 6px 5px 12px;white-space:nowrap}.measure-info button{padding:2px 8px;font-size:12px}.measure-snap{position:absolute;z-index:4;width:14px;height:14px;pointer-events:none;transform:translate(-50%,-50%);border:2px solid #ff5a1f;background:#ff5a1f26;box-shadow:0 0 0 1px #fffc}.measure-snap.vertex{width:13px;height:13px;transform:translate(-50%,-50%) rotate(45deg);background:#ff5a1f73}.pivot{position:absolute;left:-8px;top:-8px;z-index:4;width:16px;height:16px;pointer-events:none;border-radius:50%;background:radial-gradient(circle at 35% 30%,#b9f5a8,#2fb336 55%,#157a1f);border:1.5px solid #fff;box-shadow:0 0 0 1px #00000040,0 1px 4px #00000059}.pivot:after{content:"";position:absolute;left:-15px;top:-15px;width:40px;height:40px;border-radius:50%;border:1.5px dashed rgba(47,179,54,.85);box-sizing:border-box}.measure-dot{position:absolute;z-index:4;width:11px;height:11px;border-radius:50%;pointer-events:none;transform:translate(-50%,-50%);background:#ff5a1f;border:2px solid #fff;box-shadow:0 1px 3px #0000004d}.measure-label{position:absolute;z-index:5;transform:translate(-50%,12px);pointer-events:none;background:var(--panel);border:1px solid #ff5a1f;border-radius:6px;overflow:hidden;box-shadow:var(--shadow);white-space:nowrap;font-size:12px;min-width:140px}.measure-label .mh{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#ff5a1f;color:#fff;padding:3px 4px 3px 9px}.measure-label .mh b{font-size:14px}.measure-label .mh button{pointer-events:auto;border:none;background:transparent;color:#fff;padding:0 4px;font-size:15px;line-height:1}.measure-label .mh button:hover{background:#fff3}.measure-label .mr{display:flex;align-items:center;gap:8px;padding:2px 9px;font-variant-numeric:tabular-nums}.measure-label .mr:last-child{padding-bottom:5px}.measure-label .mr i{font-style:normal;font-weight:700;font-size:11px;color:#fff;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:2px}.measure-label .x{color:#e02424}.measure-label .x i{background:#e02424}.measure-label .y{color:#13a035}.measure-label .y i{background:#13a035}.measure-label .z{color:#1f4fe0}.measure-label .z i{background:#1f4fe0}.measure-table{position:absolute;left:12px;bottom:16px;z-index:5;background:var(--float);box-shadow:var(--shadow);border:1px solid #ff5a1f;border-radius:8px;padding:6px 10px;font-size:12px;font-variant-numeric:tabular-nums}.measure-table table{border-collapse:collapse}.measure-table th,.measure-table td{padding:2px 8px;text-align:right;white-space:nowrap}.measure-table th{color:var(--muted);font-weight:600;text-align:left}.measure-table th.x{color:#e02424;text-align:right}.measure-table th.y{color:#13a035;text-align:right}.measure-table th.z{color:#3b6cf0;text-align:right}.measure-table tr.diff td,.measure-table tr.diff th{border-top:1px solid var(--line)}.measure-table tr.dist td{text-align:left;color:#ff5a1f;font-size:13px}@media (max-width: 1400px){.measure-table{bottom:116px}}.progress{position:absolute;left:12px;bottom:16px;z-index:5;width:240px;background:var(--float);box-shadow:var(--shadow);border-radius:8px;padding:6px 10px;font-size:12px}.progress .bar{margin-top:5px;height:4px}.loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg) 55%,transparent)}.loading-box{background:var(--panel);padding:16px 20px;border-radius:10px;box-shadow:var(--shadow);min-width:280px}.bar{height:6px;background:var(--line);border-radius:3px;margin-top:10px;overflow:hidden}.bar div{height:100%;width:0;background:var(--accent);transition:width .1s}.partial-note{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:6;display:flex;align-items:center;gap:8px;max-width:min(560px,calc(100% - 24px));background:var(--float);box-shadow:var(--shadow);border-left:3px solid var(--accent);border-radius:8px;padding:6px 6px 6px 12px;font-size:12.5px}.partial-note span{flex:1;min-width:0}.partial-note button{flex:none;padding:3px 9px;font-size:12px}.partial-note .icon{width:26px;height:26px;padding:0}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;background:#0006}.modal[hidden]{display:none}.modal-box{background:var(--panel);color:var(--text);border-radius:12px;box-shadow:var(--shadow);padding:16px 20px 20px;width:min(780px,100%);max-height:calc(100vh - 32px);overflow:auto}.modal-box header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.modal-box h2{font-size:16px;margin:0}.help-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.help-cols h3{font-size:12px;color:var(--muted);font-weight:600;margin:12px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}.help-cols dl{display:grid;grid-template-columns:104px 1fr;gap:6px 10px;margin:0;font-size:13px;align-items:center;word-break:keep-all}.help-cols dt{white-space:nowrap;color:var(--muted);font-size:12px}.help-cols dd{margin:0}kbd{display:inline-block;min-width:20px;padding:1px 6px;text-align:center;font:600 11px/18px Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--panel-2, var(--bg));border:1px solid var(--line);border-bottom-width:2px;border-radius:5px}.mobile-only{display:none!important}@media (max-width: 760px),(pointer: coarse) and (orientation: landscape) and (max-height: 540px){body{flex-direction:column}#stage{order:0;flex:1;min-height:0}#side{order:1;width:100%;height:var(--sheet-h, 46vh);margin:0!important;padding:0 14px 16px;gap:12px;border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -4px 16px #0000001f;transition:none;overflow-y:auto;overscroll-behavior:contain}#side>*{flex:none!important}body.side-closed #side,#sideEdge{display:none}#btnSide{display:inline-flex}#sheetBar{display:flex!important;flex-direction:column;position:sticky;top:0;z-index:3;background:var(--panel);margin:0 -14px;padding:0 14px}#sheetGrip{height:18px;display:flex;align-items:center;justify-content:center;cursor:row-resize;touch-action:none}#sheetGrip span{width:40px;height:4px;border-radius:2px;background:var(--dim)}.sheet-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line)}.sheet-tabs button{flex:1;border:none;border-radius:0;background:none;padding:8px 0 9px;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}.sheet-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.sheet-tabs #sheetClose{flex:none;width:36px}#side>.tab-pane:not(.tab-on){display:none!important}#side .search-result{max-height:30vh;overflow:auto}#side.fold-tree #treeSec>:not(h3),#side.fold-props #propsSec>:not(h3){display:flex}#side .fold,#side .hsplit{display:none!important}#treeSec>.tree{height:min(36vh,280px);flex:none;overflow:auto}#propsSec{flex:none!important}#propsSec>.props{flex:none;overflow:visible}#side .vp-btn{display:none}#side #vpPop{position:static;display:flex!important;box-shadow:none;border:none;padding:0;transform:none}#side #vpPop .list{max-height:none;overflow:visible}#btnMore{display:inline-flex!important}.toolbar{bottom:10px;left:10px;right:10px;transform:none;width:fit-content;max-width:calc(100% - 20px);margin:0 auto;flex-wrap:wrap;justify-content:center}.toolbar .sep,.toolbar .mob-more{display:none}.toolbar.expanded .mob-more{display:inline-flex}.toolbar.expanded #btnMore{background:var(--hover)}.toolbar>button,.tool-wrap>button{width:40px;height:38px}.stats{left:52px}.measure-info,.progress{bottom:calc(var(--tb-h, 48px) + 18px);max-width:calc(100% - 20px)}.measure-table{bottom:calc(var(--tb-h, 48px) + 64px)}.toolbar .pop,.toolbar .pop.right{position:fixed;left:10px;right:10px;top:auto;bottom:calc(var(--tb-gap, 70px) + 10px);transform:none;min-width:0;max-height:calc(100vh - var(--tb-gap, 70px) - 20px);overflow:auto;z-index:20}.partial-note{top:10px;left:58px;right:112px;transform:none;max-width:none;flex-wrap:wrap;row-gap:4px;padding:6px 6px 6px 10px}.partial-note span{flex:1 1 100%}.partial-note #partialMore{margin-left:auto}}@media (pointer: coarse) and (orientation: landscape) and (max-height: 540px){body{flex-direction:row}#side{order:0;width:min(320px,42vw);height:100%!important;border-top:none;border-right:1px solid var(--line);border-radius:0;box-shadow:none;padding-left:max(14px,env(safe-area-inset-left,0px))}#sheetGrip{display:none!important}#sheetBar{padding-top:6px}#stage{order:1}#treeSec>.tree{height:min(52vh,260px)}.toolbar{top:54px;bottom:auto;left:max(8px,env(safe-area-inset-left,0px));right:auto;margin:0;flex-direction:column;flex-wrap:wrap;align-content:flex-start;width:auto;max-width:none;max-height:calc(100% - 64px);padding:4px}.toolbar>button,.tool-wrap>button{width:38px;height:34px}.toolbar .pop,.toolbar .pop.right{position:fixed;top:10px;bottom:auto;left:calc(var(--tb-right, 100px) + 10px);right:auto;width:min(300px,calc(100vw - var(--tb-right, 100px) - 20px));max-height:calc(100vh - 20px)}.measure-info,.progress{bottom:10px;left:50%;transform:translate(-50%)}.measure-table{bottom:56px;left:60px}.partial-note{left:58px;right:100px}}@media (max-width: 760px),(pointer: coarse){.desk-only{display:none!important}}
