html{background-color:#f6f6f6;height:-webkit-fill-available}body{margin:0;padding:0}@font-face{font-family:SamsungSharpSans;src:url(./samsungsharpsans-bold.C6UfwxnM.otf)format("otf");font-weight:700;font-style:normal}@font-face{font-family:SamsungSharpSans;src:url(./samsungsharpsans-medium.D0vX5Fr5.otf)format("otf");font-weight:500;font-style:normal}@font-face{font-family:SamsungSharpSans;src:url(./samsungsharpsans.GQODf_wq.otf)format("otf");font-weight:400;font-style:normal}needle-engine{z-index:0;width:100%;height:100%;position:absolute;top:0;left:0}#root{z-index:1;pointer-events:none;position:relative}.header,.sidebar{pointer-events:auto}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:#1b2233;font-family:SamsungSharpSans,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{background:#f4f5f700;flex-direction:column;height:100vh;display:flex}.header{background:#fff0;border-bottom:3px solid #e7e9ee;border-radius:0 0 14px 14px;flex-shrink:0;align-items:center;gap:16px;height:60px;padding:0 20px;display:flex}.header__logo{width:200px;height:40px}.header__left{align-items:center;gap:10px;display:flex}.header__brand{flex-direction:column;font-size:14px;line-height:1.15;display:flex}.header__brand-top{color:#1b2233}.header__brand-bottom{color:#1b2233;font-weight:700}.header__divider{background:#b6b6b6;width:1px;height:28px}.header__product{flex-direction:column;font-size:13.5px;line-height:1.2;display:flex}.header__product-line{color:#3d8bff;font-size:16px}.header__product-name{color:#3d8bff;font-size:16px;font-weight:600}.header__spacer{flex:1}.header__right{align-items:center;gap:12px;display:flex}.header__meta{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.header__version{color:#1b2233;font-size:12px}.header__status{color:#6b7280;background:#eee8d6;border:1px solid #dbdbdb;border-radius:999px;padding:2px 10px;font-size:11px}.header__avatar{color:#5b6273;background:#d9dce3;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:600;display:flex}.app__body{flex:1;gap:16px;min-height:0;padding:16px;display:flex}.sidebar{flex-shrink:0;width:240px}.sidebar__panel{flex-direction:column;width:max-content;min-width:220px;max-width:360px;height:100%;display:flex}.sidebar__tree{flex:1;max-height:calc(100vh - 140px);padding-right:4px;overflow:hidden auto}.sidebar__tree::-webkit-scrollbar{width:6px}.sidebar__tree::-webkit-scrollbar-thumb{background:#c7ccd6;border-radius:10px}.sidebar__tree::-webkit-scrollbar-track{background:0 0}.sidebar__header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.sidebar__title{color:#3d8bff;font-size:14px;font-weight:700}.sidebar__menu-btn{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;display:flex}.sidebar__menu-btn:hover{background:#f4f5f7}.tree-node__row{cursor:pointer;text-align:left;color:#1b2233;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;width:100%;padding:8px 6px;font-size:13.5px;display:flex}.tree-node__row:hover{background:#f4f5f7}.tree-node__row--active{background:#fff}.tree-node__row--child{padding-left:26px}.tree-node__label{flex:1}.tree-node__label--bold{font-weight:600}.chevron{flex-shrink:0;transition:transform .15s}.chevron--open{transform:rotate(180deg)}.tree-node__children{flex-direction:column;display:flex}.viewer{background:#fff;border-radius:12px;flex:1;justify-content:center;align-items:center;display:flex;position:relative;box-shadow:0 1px 2px #1018280a}.viewer__stage{justify-content:center;align-items:center;display:flex}.viewer__swatch{cursor:pointer;background:#fff;border:1px solid #e7e9ee;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 2px 6px #10182814}.viewer__swatch:hover{background:#f9fafb}.viewer-controls{pointer-events:auto;flex-direction:column;align-items:center;gap:14px;display:flex;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.viewer-controls__steps{align-items:center;gap:10px;display:flex}.step-dot{color:#3d6bff;cursor:pointer;background:#fff;border:1.5px solid #3d6bff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:600;transition:background .15s,color .15s;display:flex}.step-dot--active{color:#fff;background:#3d6bff;border-color:#3d6bff}.viewer-controls__tabs{align-items:center;gap:10px;display:flex}.tab-pill{color:#fff;cursor:pointer;background:#0b1b4a;border:none;border-radius:999px;padding:10px 22px;font-size:13.5px;font-weight:600;transition:background .15s,transform .1s}.tab-pill:hover{transform:translateY(-1px)}.tab-pill--active{background:#3d6bff}.viewer-controls__colors{align-items:center;gap:10px;display:flex}.color-dot{cursor:pointer;border:2px solid #0000;border-radius:50%;width:26px;height:26px;transition:transform .1s,border-color .15s;box-shadow:0 1px 3px #00000026}.color-dot:hover{transform:scale(1.08)}.color-dot--active{border-color:#1b2233}.right-panel{pointer-events:auto;flex-shrink:0;width:auto;max-width:360px}.sidebar__panel{width:max-content;min-width:220px;max-width:360px}.tree-node__row{min-width:0}.tree-node__row-main{cursor:pointer;color:#1b2233;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:8px;min-width:0;padding:0;font-size:13.5px;display:flex}.tree-node__label{white-space:nowrap}.tree-node__actions{align-items:center;gap:2px;margin-left:auto;display:flex}.tree-node__reorder{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;display:flex}.tree-node__reorder:hover:not(:disabled){background:#eef0f4}.tree-node__reorder:disabled{opacity:.3;cursor:default}.tree-node__visibility{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:4px;display:flex}.tree-node__row{gap:4px}.tree-node__drag-handle{cursor:grab;opacity:.6;flex-shrink:0;align-items:center;display:flex}.tree-node__row:active .tree-node__drag-handle{cursor:grabbing}.tree-node__row--drag-over{outline-offset:-1px;background:#eaf2ff;outline:1.5px dashed #3d8bff}.tree-node__visibility{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;margin-left:auto;padding:4px;display:flex}.tree-node__visibility:hover{background:#eef0f4}.context-menu{z-index:50;background:#fff;border:1px solid #e7e9ee;border-radius:8px;min-width:160px;padding:4px;position:fixed;box-shadow:0 4px 16px #10182829}.context-menu__item{text-align:left;color:#1b2233;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;padding:8px 10px;font-size:13px}.context-menu__item:hover{background:#f4f5f7}.context-menu__label{color:#8a93a6;text-transform:uppercase;letter-spacing:.03em;padding:6px 10px 4px;font-size:11px;font-weight:600}.context-menu__item--muted{color:#8a93a6}.tree-node__rename{cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:4px;display:flex}.tree-node__rename:hover{background:#eef0f4}.tree-node__rename-input{color:#1b2233;background:#fff;border:1.5px solid #3d8bff;border-radius:4px;outline:none;flex:1;min-width:0;padding:2px 6px;font-size:13.5px}.model-label{color:#fff;pointer-events:none;white-space:nowrap;z-index:20;background:#1b2233;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:500;position:fixed;transform:translate(-50%,-100%)}.part-add-btn{color:#fff;cursor:pointer;z-index:30;pointer-events:auto;background:#3d8bff;border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:17px;font-weight:600;line-height:1;transition:transform .12s,box-shadow .12s,background .12s;animation:.15s ease-out part-add-pop;display:flex;position:fixed;transform:translate(-50%,-50%)scale(1);box-shadow:0 3px 10px #3d8bff73,0 1px 3px #10182826}.part-add-btn:after{content:"";pointer-events:none;border:1.5px solid #3d8bff59;border-radius:50%;animation:1.6s ease-out infinite part-add-ring;position:absolute;inset:-6px}.part-add-btn:hover{background:#2b77e8;transform:translate(-50%,-50%)scale(1.08);box-shadow:0 4px 14px #3d8bff8c,0 1px 3px #10182833}.part-add-btn:active{transform:translate(-50%,-50%)scale(.94)}@keyframes part-add-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.5)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes part-add-ring{0%{opacity:.6;transform:scale(.8)}to{opacity:0;transform:scale(1.6)}}.part-label-input{z-index:30;pointer-events:auto;background:#fff;border:1px solid #e7e9ee;border-radius:12px;align-items:center;gap:6px;padding:8px;animation:.14s ease-out part-input-in;display:flex;position:fixed;transform:translate(-50%,calc(-100% - 14px));box-shadow:0 10px 28px #1018282e,0 2px 6px #10182814}.part-label-input:after{content:"";background:#fff;border-bottom:1px solid #e7e9ee;border-right:1px solid #e7e9ee;border-radius:0 0 2px;width:12px;height:12px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)rotate(45deg)}@keyframes part-input-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 6px))scale(.96)}to{opacity:1;transform:translate(-50%,calc(-100% - 14px))scale(1)}}.part-label-input input{color:#1b2233;border:1.5px solid #e7e9ee;border-radius:8px;outline:none;width:140px;padding:7px 10px;font-size:13px;transition:border-color .12s,box-shadow .12s}.part-label-input input:focus{border-color:#3d8bff;box-shadow:0 0 0 3px #3d8bff26}.part-label-input input::placeholder{color:#a3a9b7}.part-label-input button{color:#fff;cursor:pointer;white-space:nowrap;background:#3d8bff;border:none;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600;transition:background .12s,transform .1s}.part-label-input button:hover{background:#2b77e8;transform:translateY(-1px)}.part-label-input button:active{transform:translateY(0)}.model-label{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#fff;pointer-events:none;white-space:nowrap;z-index:20;background:#1b2233eb;border:1px solid #ffffff24;border-radius:999px;align-items:center;gap:6px;padding:6px 12px 6px 8px;font-size:12px;font-weight:500;animation:.15s ease-out model-label-in;display:flex;position:fixed;transform:translate(-50%,calc(-100% - 10px));box-shadow:0 4px 14px #10182847}.model-label:before{content:"";background:#3d8bff;border-radius:50%;flex-shrink:0;width:6px;height:6px;box-shadow:0 0 0 3px #3d8bff40}.model-label:after{content:"";background:#1b2233eb;border-radius:0 0 2px;width:8px;height:8px;position:absolute;bottom:-4px;left:20px;transform:rotate(45deg)}@keyframes model-label-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 4px))scale(.9)}to{opacity:1;transform:translate(-50%,calc(-100% - 10px))scale(1)}}
