:root{--bg-1:#e8f1ff;--bg-2:#b9d6ff;--bg-3:#6aa8ff;--blob-1:#3b82f6;--blob-2:#22d3ee;--blob-3:#6366f1;--glass:#ffffff85;--glass-strong:#ffffffc7;--glass-input:#fff9;--glass-border:#ffffffbf;--glass-edge:#1e40af24;--shadow:0 10px 40px #1e40af2e, 0 2px 8px #1e40af14;--highlight:inset 0 1px 0 #ffffffe6;--text:#0f1f3d;--muted:#4b5f86;--accent:#1d6bff;--accent-2:#00b4ff;--accent-text:#fff;--danger:#e11d48;--warn:#b45309;--canvas:#f0f7ff8c;--sheet-fill:#fff;--sheet-stroke:#7aa2e3;--radius:18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);font-family:Be Vietnam Pro,Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-1:#050d24;--bg-2:#0a1d4d;--bg-3:#10307a;--blob-1:#1d4ed8;--blob-2:#0891b2;--blob-3:#4338ca;--glass:#0e1e4880;--glass-strong:#0e1e48d1;--glass-input:#08143499;--glass-border:#8cb4ff38;--glass-edge:#8cb4ff24;--shadow:0 10px 40px #00000073, 0 2px 8px #0000004d;--highlight:inset 0 1px 0 #aacdff2e;--text:#e6efff;--muted:#93a9d6;--accent:#3d8bff;--accent-2:#22d3ee;--danger:#fb7185;--warn:#fbbf24;--canvas:#050e288c;--sheet-fill:#0f2252;--sheet-stroke:#4c76c9;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:linear-gradient(140deg, var(--bg-1) 0%, var(--bg-2) 55%, var(--bg-3) 100%) fixed;overflow:hidden}body:before,body:after,#root:before{content:"";filter:blur(70px);opacity:.55;z-index:-1;pointer-events:none;border-radius:50%;animation:26s ease-in-out infinite alternate drift;position:fixed}body:before{background:var(--blob-1);width:46vw;height:46vw;top:-14vw;left:-10vw}body:after{background:var(--blob-2);width:38vw;height:38vw;animation-duration:32s;bottom:-12vw;right:-8vw}#root:before{background:var(--blob-3);opacity:.35;width:30vw;height:30vw;animation-duration:38s;top:30vh;left:40vw}#root{isolation:isolate;position:relative}@keyframes drift{0%{border-radius:50% 45% 55% 50%;transform:translate(0)scale(1)}50%{border-radius:42% 58% 48% 52%;transform:translate(6vw,4vh)scale(1.08)}to{border-radius:55% 45% 40% 60%;transform:translate(-4vw,8vh)scale(.95)}}@media (prefers-reduced-motion:reduce){body:before,body:after,#root:before{animation:none}}.glass{background:var(--glass);-webkit-backdrop-filter:blur(22px)saturate(170%);border:1px solid var(--glass-border);box-shadow:var(--shadow), var(--highlight);border-radius:var(--radius)}button,.btn{font:inherit;border:1px solid var(--glass-border);background:var(--glass-input);color:var(--text);cursor:pointer;white-space:nowrap;box-shadow:var(--highlight);-webkit-backdrop-filter:blur(10px);border-radius:999px;align-items:center;gap:6px;padding:7px 14px;transition:transform .15s,box-shadow .2s,border-color .2s,background .2s;display:inline-flex}button:hover:not(:disabled),.btn:hover{border-color:var(--accent);box-shadow:var(--highlight), 0 4px 14px #1d6bff38}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.45;cursor:default}button.primary{background:linear-gradient(135deg, var(--accent-2), var(--accent));color:var(--accent-text);border-color:#0000;font-weight:600;box-shadow:0 6px 20px #1d6bff73,inset 0 1px #ffffff73}button.danger{background:linear-gradient(135deg, #fb7185, var(--danger));color:#fff;border-color:#0000;font-weight:600;box-shadow:0 6px 20px #e11d4859,inset 0 1px #ffffff59}button.ghost{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}button.ghost:hover:not(:disabled){background:var(--glass-input)}button.small{padding:3px 10px;font-size:12px}button.active,button.ghost.active{background:linear-gradient(135deg, var(--accent-2), var(--accent));color:var(--accent-text);border-color:#0000}input,select{font:inherit;color:var(--text);background:var(--glass-input);border:1px solid var(--glass-border);border-radius:10px;min-width:0;padding:6px 10px;box-shadow:inset 0 1px 2px #0f1f3d14}select option{color:#0f1f3d;background:#fff}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);outline:none}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;box-shadow:none;padding:0}fieldset{border:0;min-width:0;margin:0;padding:0}.muted{color:var(--muted)}.small{font-size:12px}.pad{padding:16px}.row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.row select{flex:1}.app{flex-direction:column;gap:12px;height:100%;padding:12px;display:flex}.topbar{flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px 8px 14px;display:flex}.brand{align-items:center;gap:10px;margin-right:10px;display:flex}.brand-text{flex-direction:column;line-height:1.35;display:flex}.brand-name{letter-spacing:.04em;background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:17px;font-weight:800}.brand-sub{letter-spacing:.32em;color:var(--muted);font-size:10px;font-weight:600}.file{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.spacer{flex:1}.progress{background:var(--glass);border-radius:999px;height:4px;margin:-6px 6px 0;overflow:hidden}.progress>div{background:linear-gradient(90deg, var(--accent-2), var(--accent), var(--accent-2));background-size:200% 100%;border-radius:999px;height:100%;transition:width .3s;animation:1.6s linear infinite flow}@keyframes flow{to{background-position:-200% 0}}.banner{color:var(--warn);border-radius:12px;padding:8px 14px;font-size:12px}.banner.error{color:var(--danger)}.layout{grid-template-columns:var(--lw,300px) 1fr var(--rw,350px);flex:1;gap:12px;min-height:0;transition:grid-template-columns .28s cubic-bezier(.4,0,.2,1);display:grid}.panel{position:relative}.panel.collapsed{overflow:hidden}.rail{flex-direction:column;align-items:center;gap:8px;height:100%;padding:10px 0;display:flex}.rail-btn{justify-content:center;width:34px;height:34px;padding:0;font-size:15px}.rail-btn.on{background:linear-gradient(135deg, var(--accent-2), var(--accent));color:var(--accent-text);border-color:#0000}.rail-label{writing-mode:vertical-rl;letter-spacing:.18em;color:var(--accent);white-space:nowrap;margin-top:8px;font-size:11px;font-weight:700;transform:rotate(180deg)}.rail-count{color:var(--accent);background:var(--glass-input);border:1px solid var(--glass-border);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}.collapse-btn{flex:none;justify-content:center;width:30px;padding:0;font-size:15px}.panel-corner{z-index:3;height:28px;position:absolute;top:10px;right:10px}.panel.right .parts-head{padding-right:46px}.panel{min-height:0;overflow:auto}.center{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.panel::-webkit-scrollbar{width:8px}.panel::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--accent) 35%, transparent);border-radius:8px}.section{border-bottom:1px solid var(--glass-edge);flex-direction:column;gap:8px;padding:14px 16px;display:flex}.section:last-child{border-bottom:0}.section h3,.parts-head h3{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0;font-size:11px;font-weight:700}.note{color:var(--warn);margin:0;font-size:12px}.field{flex-direction:column;gap:4px;font-size:12px;display:flex}.field>span:first-child{color:var(--muted)}.input-unit{align-items:center;gap:6px;display:flex}.input-unit input{flex:1;width:100%}.input-unit em{color:var(--muted);min-width:22px;font-size:12px;font-style:normal}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.check{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.check.inline{margin-left:8px;font-size:12px}.swatches{flex-wrap:wrap;gap:5px;display:flex}.sw{border-radius:50%;justify-content:center;width:24px;height:24px;padding:0}.sw.none{font-size:12px}.sw.on{outline:2px solid var(--accent);outline-offset:2px}.preview{background:var(--canvas);cursor:grab;touch-action:none;flex:1;min-height:0;position:relative;overflow:hidden}.preview:active{cursor:grabbing}.preview canvas{display:block;position:absolute;top:0;left:0}.preview-empty{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.preview-empty p{margin:2px}.preview-empty .drop{opacity:.85;filter:drop-shadow(0 8px 18px #1d6bff59);width:64px;height:64px;margin-bottom:8px;animation:3s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-6px)}}.fit-btn{justify-content:center;width:36px;height:36px;padding:0;font-size:16px;position:absolute;top:12px;right:12px}.resultbar{border-top:1px solid var(--glass-edge);background:var(--glass-strong);flex-direction:column;gap:6px;padding:10px 14px;display:flex}.nav{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.counter{text-align:center;font-variant-numeric:tabular-nums;min-width:48px;font-weight:600}.stats{flex-wrap:wrap;align-items:center;gap:10px;min-height:40px;display:flex}.stat{background:var(--glass-input);border:1px solid var(--glass-border);box-shadow:var(--highlight);border-radius:12px;flex-direction:column;padding:5px 12px;line-height:1.2;display:flex}.stat small{color:var(--muted);font-size:11px}.stat b{font-variant-numeric:tabular-nums;color:var(--accent);font-size:15px}.stat.warn b{color:var(--danger)}.parts-head{border-bottom:1px solid var(--glass-edge);background:var(--glass-strong);-webkit-backdrop-filter:blur(16px);z-index:1;flex-direction:column;gap:8px;padding:14px 16px;display:flex;position:sticky;top:0}.part-list{margin:0;padding:6px;list-style:none}.part-list li{border:1px solid #0000;border-radius:12px;grid-template-columns:auto 36px 1fr auto auto;align-items:center;gap:8px;margin-bottom:4px;padding:6px 10px;transition:background .15s,border-color .15s;display:grid}.part-list li:hover{background:var(--glass-input);border-color:var(--glass-border)}.part-list li.off{opacity:.5}.part-list li.container{background:color-mix(in srgb, var(--accent) 16%, transparent);border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.part-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.qty{align-items:center;gap:4px;display:flex}.qty input{width:54px;padding:3px 8px}.tabs{z-index:2;background:var(--glass-strong);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--glass-edge);gap:4px;padding:10px;display:flex;position:sticky;top:0}.tab{flex:1;justify-content:center;padding:7px 8px;font-size:13px;font-weight:600}.tab.on{background:linear-gradient(135deg, var(--accent-2), var(--accent));color:var(--accent-text);border-color:#0000;box-shadow:0 4px 14px #1d6bff59,inset 0 1px #fff6}.op-card,.tool-card{background:var(--glass-input);border:1px solid var(--glass-border);box-shadow:var(--highlight);border-radius:14px;flex-direction:column;gap:8px;padding:10px;display:flex}.op-card.off{opacity:.55}.op-head{align-items:center;gap:6px;display:flex}.op-head b{color:var(--accent)}.op-color{border-radius:50%;width:16px;height:16px;box-shadow:inset 0 0 0 1px #0003}.seg{gap:4px;display:flex}.seg button{flex:1;justify-content:center}.grid3{grid-template-columns:1fr 1fr 1fr;gap:6px;display:grid}.grid3 .field{font-size:11px}.grid3 .input-unit em{display:none}.tool-name{flex:1;font-weight:600}.hint{color:var(--muted);margin:0;font-size:11px;line-height:1.45}.cnc-stats{grid-template-columns:1fr 1fr 1fr;gap:6px;display:grid}.cnc-stats span{background:var(--glass-input);border:1px solid var(--glass-border);border-radius:10px;flex-direction:column;padding:6px 8px;display:flex}.cnc-stats small{color:var(--muted);font-size:10px}.cnc-stats b{color:var(--accent);font-size:14px}.computing{color:var(--accent);align-items:center;gap:8px;font-weight:600;display:inline-flex}.spinner{border:2px solid color-mix(in srgb, var(--accent) 25%, transparent);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.color-filter{flex-direction:column;gap:6px;display:flex}.color-filter em{opacity:.75;font-style:normal}.color-chips{flex-wrap:wrap;gap:6px;display:flex}.chip{gap:6px;padding:3px 10px 3px 4px;font-size:12px;font-weight:600}.chip i{border-radius:50%;width:18px;height:18px;box-shadow:inset 0 0 0 1px #00000026}.chip.on{border-color:var(--accent);box-shadow:var(--highlight), 0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent)}.chip.part{border-style:dashed;border-color:var(--accent)}.chip.off{opacity:.45}.chip.off i{filter:grayscale()}.editbar{border-bottom:1px solid var(--glass-edge);background:var(--glass-strong);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.edit-row{border:0;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;display:flex}.edit-row:first-child{flex-wrap:nowrap;min-height:30px}.edit-sel{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:12px;overflow:hidden}.edit-sel b{color:var(--accent);font-size:14px}.tool{background:var(--glass-input);border:1px solid var(--glass-border);box-shadow:var(--highlight);border-radius:999px;align-items:center;gap:4px;padding:3px 6px 3px 10px;font-size:12px;display:inline-flex}.tool>span:first-child{color:var(--accent);margin-right:2px;font-weight:700}.tool input{border-radius:8px;padding:3px 6px}.tool .sw{width:18px;height:18px}.editbar fieldset:disabled .tool{opacity:.5}.preview.editing{cursor:default}@media (width<=1000px){body{overflow:auto}.app{height:auto;min-height:100%}.layout{grid-template-columns:1fr;transition:none}.panel.collapsed{height:48px}.rail{flex-direction:row;height:auto;padding:6px 10px}.rail-label{writing-mode:horizontal-tb;margin:0;transform:none}.panel{overflow:visible}.panel.left{order:2}.center{order:1;height:70vh}.panel.right{order:3}.brand-sub{display:none}}@media (width<=520px){.app{gap:8px;padding:8px}.file{display:none}}.sel-box{background:var(--glass-input);border:1px dashed var(--glass-border);border-radius:10px;padding:8px 10px;font-size:12px}.sel-box b{color:var(--accent)}.sel-box.on{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--glass-input))}.simbar{border-top:1px solid var(--glass-edge);background:var(--glass-strong);flex-direction:column;gap:6px;padding:8px 14px;display:flex}.sim-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sim-title{color:var(--accent);margin-right:4px}.sim-speed{color:var(--muted);align-items:center;gap:4px;margin-left:6px;font-size:12px;display:inline-flex}.sim-speed select,.sim-row select{padding:3px 6px;font-size:12px}.sim-slider{appearance:none;background:linear-gradient(90deg, var(--accent) 0 var(--done), color-mix(in srgb, var(--accent) 15%, transparent) var(--done) 100%);border:0;border-radius:999px;width:100%;height:8px;padding:0}.sim-slider::-webkit-slider-thumb{-webkit-appearance:none;border:2px solid var(--accent);cursor:pointer;background:#fff;border-radius:50%;width:16px;height:16px;box-shadow:0 2px 6px #1d6bff66}.sim-slider::-moz-range-thumb{border:2px solid var(--accent);cursor:pointer;background:#fff;border-radius:50%;width:14px;height:14px}.sim-read{flex-wrap:wrap;gap:6px;display:flex}.sim-read span{background:var(--glass-input);border:1px solid var(--glass-border);border-radius:9px;flex-direction:column;min-width:58px;padding:3px 9px;display:flex}.sim-read small{color:var(--muted);font-size:10px}.sim-read b{font-variant-numeric:tabular-nums;font-size:13px}.sim-read .z-cut b{color:var(--danger)}.panel{overflow-x:hidden}.panel.left>.tabs,.panel.left>.options{min-width:276px}.panel.right>.parts{min-width:326px}@media (width<=1000px){.panel.left>.tabs,.panel.left>.options,.panel.right>.parts{min-width:0}}.stats-table{background:var(--glass-input);border:1px solid var(--glass-border);border-radius:12px;flex-direction:column;gap:6px;padding:8px 10px;display:flex}.stats-table-head{align-items:center;gap:6px;display:flex}.stats-table-head b{color:var(--accent);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.stats-table-scroll{max-height:190px;overflow:auto}.stats-table table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11.5px}.stats-table th,.stats-table td{text-align:right;border-bottom:1px solid var(--glass-edge);white-space:nowrap;padding:4px 6px}.stats-table th:first-child,.stats-table td:first-child{text-align:left}.stats-table th{background:var(--glass-strong);color:var(--muted);font-weight:600;position:sticky;top:0}.stats-table tfoot td{color:var(--accent);border-bottom:0;border-top:2px solid var(--glass-edge);font-weight:700}.brand-logo{filter:drop-shadow(0 4px 10px #1d6bff59);width:36px;height:36px}.preview-empty .drop-logo{opacity:.9;filter:drop-shadow(0 8px 18px #1d6bff40);width:min(360px,70%);height:auto;margin-bottom:14px}.app-footer{text-align:center;color:var(--muted);letter-spacing:.02em;margin:-4px 0;font-size:11.5px}.app-footer b{color:var(--text);font-weight:600}.app-footer a{color:var(--accent);font-weight:600;text-decoration:none}.app-footer a:hover{text-decoration:underline}.app-footer .dot{opacity:.6;margin:0 8px}
