:root{--bg:#0d1117;--panel:#12181f;--panel-2:#161d26;--border:#232c38;--text:#c4cdd8;--text-dim:#7d8a99;--accent:#36d1dc;--accent-2:#1f9aa6;--warn:#ffb300;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0}button{font-family:inherit}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.auth-wrap{height:100vh;color:var(--text);background:radial-gradient(1200px 600px at 50% -10%,#16202b 0%,#0d1117 60%);justify-content:center;align-items:center;display:flex}.auth-loading{color:var(--text-dim);font-size:14px}.auth-card{border:1px solid var(--border);background:#121922;border-radius:14px;flex-direction:column;gap:12px;width:340px;padding:28px;display:flex;box-shadow:0 18px 60px #00000080}.auth-brand{align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.auth-brand .brand-sub{color:var(--accent)}.auth-title{color:var(--text-dim);margin-bottom:4px;font-size:15px}.auth-field{color:var(--text-dim);flex-direction:column;gap:4px;font-size:12px;display:flex}.auth-field input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 10px;font-size:14px}.auth-field input:focus{border-color:var(--accent);outline:none}.auth-err{color:#ff8a8a;background:#ff52521f;border:1px solid #ff525266;border-radius:8px;padding:8px 10px;font-size:12px}.auth-submit{cursor:pointer;background:var(--accent);color:#04222a;border:none;border-radius:8px;margin-top:4px;padding:10px;font-size:14px;font-weight:700}.auth-submit:disabled{opacity:.6;cursor:default}.auth-toggle{color:var(--text-dim);text-align:center;font-size:12px}.auth-toggle button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.user-chip{color:var(--text-dim);align-items:center;gap:8px;margin-left:10px;font-size:12px;display:inline-flex}.user-logout{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:6px;padding:3px 9px;font-size:11px}.user-logout:hover{border-color:var(--accent);color:var(--accent)}.topbar{background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:24px;height:52px;padding:0 16px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#04222a;border-radius:8px;place-items:center;width:30px;height:30px;font-size:18px;font-weight:800;display:grid}.brand-name{letter-spacing:.3px;color:#eaf2f7;font-size:17px;font-weight:700}.brand-sub{color:var(--accent);margin-left:2px;font-weight:600}.topbar-actions{gap:8px;display:flex}.topbar-right{margin-left:auto}.phase-pill{color:var(--text-dim);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-size:12px}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s}.btn:hover:not(:disabled){border-color:var(--accent-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#04222a;border:none}.body{flex:1;min-height:0;display:flex}.panel{background:var(--panel);flex-direction:column;flex-shrink:0;display:flex}.panel-left{border-right:1px solid var(--border);width:240px}.panel-right{border-left:1px solid var(--border);overscroll-behavior:contain;width:240px;min-height:0;overflow:hidden auto}.panel-title{text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:12px 14px;font-size:12px;display:flex}.count{background:var(--panel-2);color:var(--accent);border-radius:999px;padding:1px 8px;font-size:11px}.part-list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:8px;display:flex;overflow-y:auto}.part-item{text-align:left;background:var(--panel-2);cursor:pointer;color:var(--text);border:1px solid #0000;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex;position:relative}.part-del{width:20px;height:20px;color:var(--text-dim);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:5px;font-size:16px;line-height:1;transition:opacity .12s,background .12s,color .12s;position:absolute;top:4px;right:4px}.part-item:hover .part-del{opacity:1}.part-del:hover{color:#ff5252;background:#ff525226}.part-exp{font-size:13px;right:26px}.part-exp:hover{color:var(--accent);background:#36d1dc1f}.part-3dchip{cursor:pointer;color:#9fc687;background:#7fb0691f;border:1px solid #7fb06966;border-radius:4px;flex:none;padding:0 5px;font-size:10px;font-weight:700;line-height:1.5}.part-3dchip:hover{background:#7fb06947}.part-bendbadge{cursor:pointer;color:#8a94a6;white-space:nowrap;background:#8a94a61f;border-radius:4px;padding:1px 4px;font-size:10px}.part-bendbadge:hover{background:#8a94a640}.part-item:hover{border-color:var(--border)}.app.magnify .panel-left,.app.magnify .panel-right{zoom:1.25;width:268px}.part-item.done{background:#0daa7812;border-color:#0daa788c}.part-item.active{border-color:var(--accent);background:#15222a}.part-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;padding-right:18px;font-size:13px;font-weight:600;overflow:hidden}.part-title{box-sizing:border-box;align-items:center;gap:6px;width:100%;min-width:0;padding-right:34px;display:flex}.part-title .part-name{flex:0 auto;min-width:44px;padding-right:0}.part-title .part-thick{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.part-meta{color:var(--text-dim);font-size:11px}.part-thick{color:#7fd4c0;white-space:nowrap;text-overflow:ellipsis;background:#0daa781f;border:1px solid #0daa7859;border-radius:5px;max-width:110px;padding:1px 6px;font-size:10px;font-weight:600;overflow:hidden}.group-net{border-top:1px solid var(--border);margin-top:10px;padding:8px 10px;font-size:11px}.group-net-title{color:var(--text-dim);text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;font-size:10px;font-weight:700}.group-net-row{color:var(--text-dim);justify-content:space-between;align-items:baseline;gap:8px;padding:2px 0;display:flex}.group-net-row b{color:#7fd4c0}.group-net-row.total{border-top:1px dashed var(--border);margin-top:3px;padding-top:4px}.group-net-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.group-net-val{white-space:nowrap}.group-net-item{margin-bottom:4px}.group-net-stock{color:var(--text-dim);opacity:.8;padding-left:2px;font-size:10px}.group-net-stock.none{color:#c9a227}.group-net-stock.low{color:#e5534b;opacity:1;font-weight:600}.group-net-stock.done{color:#3fb950;opacity:1}.empty-hint{color:var(--text-dim);padding:16px 14px;font-size:13px;line-height:1.5}.stage{background:var(--bg);flex:1;min-width:0;position:relative}.cam-canvas-host{position:absolute;inset:0}.stage-overlay{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.drop-card{text-align:center;color:var(--text-dim);border:1.5px dashed var(--border);background:#12181f80;border-radius:14px;padding:36px 48px}.drop-icon{color:var(--accent);font-size:40px}.drop-title{color:var(--text);margin-top:8px;font-size:15px;font-weight:600}.drop-sub{margin-top:4px;font-size:13px}.props{grid-template-columns:auto 1fr;gap:8px 12px;margin:0;padding:12px 14px;font-size:13px;display:grid}.props dt{color:var(--text-dim)}.props dd{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;min-width:0;margin:0}.props dt.warn-dt{color:#ff6b6f;font-weight:600}.props dd.warn-dd{color:#ff6b6f;font-weight:700}.boundary-drop.dragover{border-color:var(--accent,#36d1dc);color:var(--accent,#36d1dc);outline:1px dashed var(--accent,#36d1dc);background:#36d1dc1f}.sheet-lib{flex-direction:column;gap:5px;margin:2px 0;display:flex}.sheet-lib .ss-apply{text-align:left;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;flex:1;padding:0;font-size:12px;overflow:hidden}.sheet-lib .ss-apply:hover{color:var(--accent,#36d1dc)}.sheet-lib .ss-del{color:var(--text-dim,#8a94a0);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:14px}.sheet-lib .ss-del:hover{color:#ff6b6f}.batch-bar{background:var(--panel-2,#161b22);border:1px solid var(--border,#2a3340);z-index:30;border-radius:10px;align-items:center;gap:10px;padding:7px 12px;font-size:13px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #00000073}.batch-bar .batch-count{color:#ffb300;font-weight:700}.batch-bar .batch-align{color:var(--text-dim,#8a94a0);align-items:center;gap:4px;font-size:12px;display:inline-flex}.batch-bar .batch-align .btn{padding:2px 8px}.batch-bar .batch-hint{color:var(--text-dim,#8a94a0);font-size:11px}.batch-bar .btn.danger{color:#ff6b6f;border-color:#5a2a2a}.props dd .prop-num{background:var(--bg);border:1px solid var(--border);width:56px;color:var(--text);text-align:right;font-variant-numeric:tabular-nums;border-radius:6px;padding:3px 6px;font-size:13px}.sheetsize-add{align-items:center;gap:5px;display:flex}.sheetsize-add .ss-in{background:var(--bg);border:1px solid var(--border);width:64px;color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.sheetsize-list{flex-direction:column;gap:4px;display:flex}.sheetsize-item{background:var(--panel-2);border-radius:6px;justify-content:space-between;align-items:center;padding:4px 8px;font-size:12px;display:flex}.compare-table{border-collapse:collapse;width:100%;font-size:13px}.compare-table th,.compare-table td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px}.compare-table th{color:var(--text-dim);font-size:12px;font-weight:600}.compare-table tr.best{background:#3fb9501f}.compare-table tr.best td{color:#3fb950;font-weight:600}.sim-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sim-bar .sim-speed{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 6px;font-size:12px}.sim-bar .sim-scrub{min-width:80px;accent-color:var(--accent);flex:1}.sim-bar .sim-pct{color:var(--text-dim);text-align:right;font-variant-numeric:tabular-nums;min-width:32px;font-size:11px}.compare-hint{color:var(--text-dim);margin-top:8px;font-size:11px}.compare-hint.warn{color:#ffb454}.rec-apply{border:1px solid var(--accent-2);color:var(--accent);cursor:pointer;background:#36d1dc1f;border-radius:5px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:600}.rec-apply:hover{background:var(--accent);color:#04222a}.rec-note{color:var(--text-dim);font-size:10px}.settings-body{padding:14px 16px;overflow-y:auto}.settings-note{color:var(--text-dim);margin:0 0 12px;font-size:12px;line-height:1.5}.settings-current{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:14px;padding:10px 12px}.settings-current .sc-title{margin-bottom:8px;font-weight:600}.settings-row{align-items:center;gap:8px;display:flex}.settings-row input{background:var(--bg);border:1px solid var(--border);width:80px;color:var(--text);border-radius:6px;padding:4px 7px;font-size:13px}.settings-list{flex-direction:column;gap:6px;display:flex}.settings-empty{color:var(--text-dim);padding:8px 0;font-size:12px}.settings-item{border:1px solid var(--border);border-radius:7px;align-items:center;gap:8px;padding:6px 8px;display:flex}.settings-label{flex:1;font-size:13px}.settings-item input{background:var(--bg);border:1px solid var(--border);width:72px;color:var(--text);border-radius:6px;padding:3px 6px;font-size:13px}.settings-unit{color:var(--text-dim);font-size:12px}.settings-del{border:1px solid var(--border);color:#ff6b6f;cursor:pointer;background:0 0;border-radius:6px;width:24px;height:24px;padding:0;font-size:16px;line-height:1}.settings-del:hover{background:#ff6b6f1f}.compare-warn{color:var(--warn);border:1px solid var(--warn);background:#ffb3001a;border-radius:6px;margin-top:8px;padding:8px 10px;font-size:12px}.remnant-row{justify-content:space-between;align-items:center;gap:6px;font-size:12px;display:flex}.remnant-row b{color:#3fb950}.seg-toggle{border:1px solid var(--border);border-radius:7px;gap:0;display:flex;overflow:hidden}.seg-toggle .seg{color:var(--text-dim);cursor:pointer;background:0 0;border:none;flex:1;padding:7px 6px;font-size:12px;font-weight:600}.seg-toggle .seg+.seg{border-left:1px solid var(--border)}.seg-toggle .seg.active{background:var(--accent);color:#04222a}.remnant-hint{color:var(--text-dim);background:var(--panel-2);border-radius:6px;padding:5px 7px;font-size:11px}.remnant-empty{color:var(--text-dim);font-size:12px}.remnant-inv{flex-direction:column;gap:4px;margin-top:8px;display:flex}.remnant-inv-title{color:var(--text-dim);text-transform:uppercase;letter-spacing:.4px;font-size:11px}.remnant-item{background:var(--panel-2);border-radius:6px;justify-content:space-between;align-items:center;gap:6px;padding:5px 7px;display:flex}.remnant-meta{font-size:12px}.remnant-actions{gap:4px;display:flex}.tool-btn.danger{color:#ff6b6f}.cut-edit{flex-direction:column;gap:6px;padding:4px 0 2px;display:flex}.cut-edit-lbl{color:var(--text-dim);font-size:11px}.cut-edit-btns{flex-wrap:wrap;gap:6px;display:flex}.cut-edit-btns .tool-btn{flex:1;min-width:64px}.cut-edit-hint{color:var(--accent);border:1px solid var(--accent-2);background:#36d1dc14;border-radius:6px;padding:5px 7px;font-size:11px}.statusbar{background:var(--panel);border-top:1px solid var(--border);height:28px;color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;gap:18px;padding:0 14px;font-size:12px;display:flex}.statusbar .spacer{flex:1}.seg{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.seg-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:6px 16px;font-size:13px;font-weight:600}.seg-btn.active{color:var(--accent);background:#15222a}.seg-btn:disabled{opacity:.4;cursor:not-allowed}.part-row{justify-content:space-between;align-items:center;width:100%;margin-top:4px;display:flex}.qty{color:var(--text-dim);align-items:center;gap:5px;font-size:11px;display:flex}.part-placed{font-variant-numeric:tabular-nums;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:700}.part-placed.ok{color:#2ecc40;background:#2ecc4029}.part-placed.partial{color:#ffb300;background:#ffb30029}.part-placed.over{color:#ff6b6f;background:#e5484d2e}.part-place-group{align-items:center;gap:5px;display:flex}.part-add{border:1px solid var(--accent-2);width:22px;height:20px;color:var(--accent);cursor:pointer;background:#36d1dc1a;border-radius:6px;padding:0;font-size:15px;font-weight:700;line-height:1;transition:background .12s,color .12s}.part-add:hover{background:var(--accent);color:#04222a}.part-grain{border:1px solid var(--border);width:22px;height:20px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:6px;margin-right:6px;padding:0;font-size:13px;font-weight:700;line-height:1;transition:background .12s,color .12s,border-color .12s}.part-grain:hover{color:#ffb454;border-color:#ffb454}.part-grain.on{color:#ffb454;background:#ffb45429;border-color:#ffb454}.qty input{background:var(--bg);border:1px solid var(--border);width:48px;color:var(--text);text-align:right;border-radius:6px;padding:3px 6px;font-size:12px}.form{border-bottom:1px solid var(--border);flex-direction:column;gap:10px;padding:12px 14px;display:flex}.field{color:var(--text-dim);flex-direction:column;gap:4px;font-size:12px;display:flex}.field input,.field select{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.field-check{color:var(--text);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.btn.full{width:100%;margin-top:2px}.panel-right{width:268px}.panel-right .panel-title,.panel-left .panel-title{z-index:5;background:var(--panel);position:sticky;top:0}.panel-right .panel-title:before,.panel-left .panel-title:before{content:"";background:var(--accent);opacity:.85;border-radius:2px;flex-shrink:0;width:3px;height:13px}button.psec-head{background:var(--panel);border:none;border-bottom:1px solid var(--border);text-align:left;cursor:pointer;width:100%;font-family:inherit;font-weight:600}button.psec-head:hover{color:var(--text)}.psec-chev{color:var(--text-dim);flex-shrink:0;margin-left:auto;font-size:10px}button.psec-subhead{border:none;border-top:1px solid var(--border);width:100%;color:var(--text-dim);letter-spacing:.4px;text-align:left;cursor:pointer;background:0 0;align-items:center;gap:6px;margin-top:4px;padding:8px 0 2px;font-family:inherit;font-size:12px;font-weight:600;display:flex}button.psec-subhead:hover{color:var(--text)}.field input,.field select{height:33px;transition:border-color .15s,box-shadow .15s}.field input:hover,.field select:hover{border-color:#2e3a48}.field input:focus,.field select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #36d1dc24}.field-check{padding:2px 0}.field-check input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.btn:hover{border-color:var(--accent-2)}.btn.btn-primary:hover{filter:brightness(1.07)}.radial-menu{z-index:60;pointer-events:none;width:0;height:0;position:absolute}.radial-item{width:38px;height:38px;color:var(--text);border:1px solid var(--accent-2);cursor:pointer;pointer-events:auto;-webkit-user-select:none;user-select:none;background:#12181ff5;border-radius:50%;place-items:center;margin:-19px 0 0 -19px;font-size:14px;font-weight:600;transition:background .12s,border-color .12s,transform .12s,color .12s;display:grid;position:absolute;box-shadow:0 3px 12px #00000080}.radial-item:hover{background:var(--accent);color:#04222a;border-color:var(--accent);transform:scale(1.12)}.radial-center{border-color:var(--border);background:#0d1117fa;font-size:15px;top:0;left:0}.radial-item.danger:hover{color:#fff;background:#e5484d;border-color:#e5484d}.sheet-tabs{border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);scrollbar-width:none;background:#12181fd9;border-radius:10px;flex-wrap:nowrap;align-items:center;gap:6px;max-width:calc(100% - 24px);padding:5px;display:flex;position:absolute;top:12px;left:50%;overflow:auto hidden;transform:translate(-50%)}.sheet-tabs::-webkit-scrollbar{display:none}.sheet-tab{color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:none;padding:5px 12px;font-size:12px;font-weight:600;line-height:1.4}.sheet-tab:not(.active):not(.sheet-shuffle){opacity:.55}.sheet-tab:not(.active):not(.sheet-shuffle):hover{opacity:.95}.sheet-tab.active{background:var(--accent);color:#04222a}.sheet-shuffle{border-left:1px solid var(--border);color:var(--accent);border-radius:0 6px 6px 0;margin-left:6px}.sheet-shuffle:hover{background:#2dd4bf1f}.sheet-usage{color:var(--text-dim);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;background:#12181fd9;border-radius:8px;padding:4px 12px;font-size:12px;position:absolute;top:52px;left:50%;transform:translate(-50%)}.sheet-usage .usage-stock{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;max-width:380px;display:inline-block;overflow:hidden}.sheet-usage b{color:var(--accent);font-weight:700}.usage-of{color:var(--text-dim);opacity:.7}.warn-box{color:var(--warn);background:#ffb3001a;border:1px solid #ffb30059;border-radius:8px;margin:10px 14px;padding:10px 12px;font-size:12px;line-height:1.4}.modal-backdrop{z-index:1000;background:#0000008c;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:min(900px,92vw);height:min(640px,88vh);display:flex;overflow:hidden}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.modal-head h3{color:#eaf2f7;margin:0;font-size:15px}.modal-x{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:22px;line-height:1}.modal-body{flex:1;grid-template-columns:260px 1fr;min-height:0;display:grid}.nc-config{border-right:1px solid var(--border);flex-direction:column;gap:10px;padding:14px;display:flex;overflow-y:auto}.nc-config select,.nc-config input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.nc-note{color:var(--warn);background:#ffb30014;border:1px solid #ffb30040;border-radius:8px;padding:8px 10px;font-size:11px;line-height:1.4}.nc-hint{color:var(--text-dim);text-align:center;font-size:11px}.rate-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.rate-grid input,.rate-grid select{width:100%;min-width:0}.cad-tools{grid-template-columns:1fr 1fr 1fr;gap:6px;padding:10px 14px 0;display:grid}.tool-btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:7px;padding:7px 4px;font-size:12px;font-weight:600}.tool-btn:hover:not(:disabled){border-color:var(--accent-2)}.tool-btn.active{border-color:var(--accent);color:var(--accent);background:#15222a}.tool-btn.danger.active,.tool-btn.danger:hover:not(:disabled){color:#ff7676;border-color:#ff5252}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.cad-scale{gap:6px;padding:6px 14px 0;display:flex}.cad-scale input{background:var(--bg);border:1px solid var(--border);width:70px;color:var(--text);border-radius:6px;padding:6px 8px;font-size:13px}.cad-scale .tool-btn{flex:1}.mini-btn{background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;width:24px;height:22px;font-size:13px;line-height:1}.mini-btn:hover:not(:disabled){border-color:var(--accent-2)}.mini-btn:disabled{opacity:.35;cursor:not-allowed}.mini-label{color:var(--text-dim);align-self:center;font-size:12px}.warn-val{color:var(--warn);font-weight:700}.confirm-modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(380px,92vw);padding:20px 22px;animation:.18s toast-in;box-shadow:0 20px 50px #0000008c}.nest-modal{width:min(460px,94vw);max-height:88vh;overflow-y:auto}.confirm-title{color:#eaf2f7;margin-bottom:8px;font-size:15px;font-weight:700}.confirm-msg{color:var(--text);font-size:13px;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.btn-danger{color:#fff;background:#e23d3d;border:none}.btn-danger:hover{background:#c92f2f}.toast{z-index:1200;background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;align-items:center;gap:12px;min-width:300px;max-width:420px;padding:12px 14px;animation:.22s cubic-bezier(.2,.8,.2,1) toast-in;display:flex;position:fixed;top:64px;right:18px;overflow:hidden;box-shadow:0 10px 30px #00000080}@keyframes toast-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.toast-icon{opacity:.85;font-size:16px}.toast-msg{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.toast-undo{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#04222a;cursor:pointer;border:none;border-radius:7px;flex-shrink:0;padding:6px 12px;font-size:12px;font-weight:700}.toast-undo:hover{filter:brightness(1.08)}.toast-x{color:var(--text-dim);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.toast-x:hover{color:var(--text)}.toast-bar{background:var(--accent);transform-origin:0;width:100%;height:2px;animation:6s linear forwards toast-bar;position:absolute;bottom:0;left:0}@keyframes toast-bar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.dyn-hud{z-index:50;border:1px solid var(--accent-2);pointer-events:none;background:#12181ff2;border-radius:8px;flex-direction:column;gap:4px;padding:7px 8px;display:flex;position:absolute;box-shadow:0 4px 16px #00000080}.dyn-field{border:1px solid #0000;border-radius:5px;align-items:center;gap:8px;padding:3px 6px;font-size:12px;display:flex}.dyn-field.active{border-color:var(--accent);background:#15222a}.dyn-lbl{color:var(--text-dim);min-width:64px}.dyn-val{color:var(--accent);font-variant-numeric:tabular-nums;text-align:right;min-width:48px;font-weight:700}.dyn-hint{color:var(--text-dim);margin-top:2px;font-size:10px}.report-backdrop{z-index:1100}.report-root{color:#1a1f29;background:#fff;border-radius:10px;flex-direction:column;width:min(960px,96vw);height:94vh;display:flex;overflow:hidden}.report-toolbar{background:#f3f5f8;border-bottom:1px solid #e2e6ec;justify-content:flex-end;gap:8px;padding:10px 14px;display:flex}.report-page{padding:28px 32px;overflow-y:auto}.report-head{border-bottom:2px solid #1a1f29;justify-content:space-between;align-items:center;padding-bottom:14px;display:flex}.report-brand{align-items:center;gap:12px;display:flex}.report-title{font-size:18px;font-weight:700}.report-sub{color:#6b7280;font-size:12px}.report-prog{font-size:13px}.report-info{grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0;display:grid}.report-info>div{flex-direction:column;gap:2px;display:flex}.report-info span{color:#6b7280;font-size:11px}.report-img{background:#0d1117;border:1px solid #e2e6ec;border-radius:6px;width:100%}.report-summary{grid-template-columns:repeat(6,1fr);gap:10px;margin:18px 0;display:grid}.sum-card{border:1px solid #e2e6ec;border-radius:8px;flex-direction:column;gap:4px;padding:10px;display:flex}.sum-card span{color:#6b7280;font-size:11px}.sum-card b{font-size:15px}.sum-card.total{background:#eef6ff;border-color:#b6d8ff}.report-h3{border-bottom:1px solid #e2e6ec;margin:22px 0 10px;padding-bottom:6px;font-size:15px}.report-sheet{margin-top:8px}.report-cols{grid-template-columns:1fr 1fr;gap:24px;margin-top:8px;display:grid}.report-block h4{margin:16px 0 8px;font-size:14px}.report-table{border-collapse:collapse;width:100%;font-size:13px}.report-table th,.report-table td{text-align:left;border:1px solid #e2e6ec;padding:6px 9px}.report-table th{background:#f3f5f8}.report-table td:last-child{text-align:right}.report-table .trtotal td{background:#f8fafc;font-weight:700}.labels{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:8px;display:grid}.label{border:1px solid #cbd2da;border-radius:6px;padding:10px}.label-name{font-size:13px;font-weight:700}.label-sub{color:#6b7280;margin:2px 0 8px;font-size:11px}.label-bc svg{max-width:100%;height:auto}@media print{html,body,#root,.app{height:auto!important;display:block!important;overflow:visible!important}.app>.topbar,.app>.body,.app>.statusbar,.modal-backdrop:not(.report-backdrop),.no-print{display:none!important}.report-backdrop{background:0 0!important;padding:0!important;display:block!important;position:static!important}.report-root{-webkit-print-color-adjust:exact;print-color-adjust:exact;width:100%!important;height:auto!important;max-height:none!important;box-shadow:none!important;border-radius:0!important;position:static!important;overflow:visible!important}.report-page{height:auto!important;padding:0!important;overflow:visible!important}.report-sheet{page-break-before:always}.report-img{max-width:100%}}.nc-preview{color:#b8e6ea;background:var(--bg);white-space:pre;margin:0;padding:14px;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.45;overflow:auto}.proj-modal{border:1px solid var(--border);background:#121922;border-radius:12px;flex-direction:column;width:560px;max-width:92vw;max-height:80vh;display:flex;overflow:hidden}.proj-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;font-weight:700;display:flex}.admin-modal{width:900px}.admin-body{padding:14px 16px;overflow-y:auto}.admin-empty{color:var(--text-dim);text-align:center;padding:16px;font-size:13px}.admin-totals{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.admin-totals>div{background:var(--bg);border:1px solid var(--border);border-radius:9px;flex-direction:column;flex:1;gap:2px;min-width:110px;padding:10px 12px;display:flex}.admin-totals b{font-size:18px}.admin-totals span{color:var(--text-dim);font-size:11px}.admin-title{color:var(--text-dim);margin:14px 0 6px;font-size:13px;font-weight:600}.admin-table{border:1px solid var(--border);border-radius:8px;overflow:hidden}.admin-table table{border-collapse:collapse;width:100%;font-size:12.5px}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 10px}.admin-table th{background:var(--bg);color:var(--text-dim);font-weight:600}.admin-table tr:last-child td{border-bottom:none}.admin-table td.num{text-align:right;font-variant-numeric:tabular-nums}.proj-save{border-bottom:1px solid var(--border);gap:8px;padding:12px 16px;display:flex}.proj-save input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;flex:1;padding:8px 10px;font-size:14px}.proj-list{padding:8px 12px;overflow:auto}.proj-empty{color:var(--text-dim);text-align:center;padding:18px;font-size:13px}.proj-item{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;gap:10px;padding:10px 8px;display:flex}.proj-item.active{background:#2dd4bf14;border-radius:8px}.shortcuts{flex-direction:column;gap:16px;padding:12px 16px;display:flex;overflow:auto}.sc-group{flex-direction:column;gap:4px;display:flex}.sc-title{color:var(--accent,#2dd4bf);margin-bottom:4px;font-size:13px;font-weight:700}.sc-row{color:var(--text);align-items:center;gap:8px;font-size:13px;display:flex}.sc-row span{color:var(--text-dim)}.sc-hint{color:var(--text-dim);margin-top:4px;font-size:12px;font-style:italic}.shortcuts kbd{text-align:center;border:1px solid var(--border);min-width:18px;color:var(--text);background:#1b2430;border-bottom-width:2px;border-radius:5px;padding:2px 7px;font-family:ui-monospace,monospace;font-size:12px;line-height:1.4;display:inline-block}.proj-info{flex-direction:column;gap:2px;min-width:0;display:flex}.proj-name{font-weight:600}.proj-meta{color:var(--text-dim);font-size:11px}.proj-actions{flex-shrink:0;gap:6px;display:flex}.nesting-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080c10b8;justify-content:center;align-items:center;display:flex}.nesting-modal{border:1px solid var(--border);background:linear-gradient(#121922 0%,#0d141b 100%);border-radius:14px;flex-direction:column;align-items:center;gap:14px;padding:30px 38px 26px;display:flex;box-shadow:0 18px 60px #0000008c,0 0 0 1px #2dd4bf14}.nesting-radar{background:radial-gradient(circle,#2dd4bf0f 0%,#0000 70%);border:1px solid #2dd4bf59;border-radius:50%;width:96px;height:96px;position:relative;overflow:hidden}.nesting-grid{background-image:linear-gradient(#2dd4bf24 1px,#0000 1px),linear-gradient(90deg,#2dd4bf24 1px,#0000 1px);background-size:16px 16px;position:absolute;inset:0}.nesting-sweep{background:conic-gradient(#0000 0deg,#2dd4bf73 50deg,#0000 60deg);border-radius:50%;animation:1.1s linear infinite nest-sweep;position:absolute;inset:0}.nesting-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 10px var(--accent);border-radius:50%;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%}@keyframes nest-sweep{to{transform:rotate(360deg)}}.nesting-title{color:var(--text);letter-spacing:.3px;font-size:15px;font-weight:700}.nesting-sub{color:var(--text-dim);margin-top:-6px;font-size:12px}.nesting-track{background:#ffffff12;border-radius:4px;width:220px;height:4px;overflow:hidden}.nesting-fill{background:linear-gradient(90deg, transparent, var(--accent), transparent);border-radius:4px;width:40%;height:100%;animation:1.2s ease-in-out infinite nest-fill;display:block}@keyframes nest-fill{0%{transform:translate(-120%)}to{transform:translate(320%)}}
