
:root{--bg:#14161a;--panel:#1c1f26;--panel2:#22262e;--line:#2e333c;--txt:#c8cdd5;--dim:#8a919c;--teal:#5DCAA5;--teal2:#9FE1CB;--amber:#EF9F27;--red:#E24B4A;--green:#97C459}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--txt);font:13px/1.6 -apple-system,"Segoe UI","Microsoft YaHei",sans-serif;padding:16px}
header{display:flex;align-items:baseline;gap:12px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:14px}
header .brand{margin-left:auto;color:var(--dim);font-size:11px;letter-spacing:.4px}
header h1{font-size:16px;font-weight:500;color:var(--teal2)}
header .sub{color:var(--dim);font-size:12px}
.grid{display:grid;grid-template-columns:250px 1fr 430px;gap:14px;align-items:start}
.grid>div{min-width:0}
.grid>.col-m{grid-column:2}
.grid>.col-r{grid-column:3}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:14px}
.card h2{font-size:13px;font-weight:500;color:var(--teal2);margin-bottom:10px}
#dropzone{border:2px dashed var(--line);border-radius:8px;padding:28px 12px;text-align:center;color:var(--dim);cursor:pointer;transition:.15s}
#dropzone.over{border-color:var(--teal);color:var(--teal);background:var(--panel2)}
#dropzone .big{font-size:14px;color:var(--txt);margin-bottom:6px}
#fileinfo{margin-top:10px;font-size:12px;color:var(--dim);word-break:break-all}
label{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;color:var(--dim)}
label input{width:120px;background:var(--panel2);border:1px solid var(--line);border-radius:4px;color:var(--txt);padding:4px 8px;font-size:12px;text-align:right}
label input:focus{outline:1px solid var(--teal)}
.btn{background:var(--teal);color:#0b2e22;border:none;border-radius:4px;padding:8px 14px;font-size:12px;font-weight:500;cursor:pointer}
.btn:hover{background:var(--teal2)}
.btn.sec{background:var(--panel2);color:var(--txt);border:1px solid var(--line)}
.btn.pressed{background:var(--teal);color:#0b2e22;box-shadow:inset 0 0 0 1px rgba(93,202,165,.55);font-weight:700}
.btn.sec.pressed{background:var(--teal);color:#0b2e22;border-color:var(--teal)}
.row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
table{width:100%;border-collapse:collapse;font-size:12px}
th,td{padding:5px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
th{color:var(--dim);font-weight:500;text-align:right}
td:first-child,th:first-child{text-align:left}
tr.bend td{color:var(--amber)}
tr.seg td{color:var(--teal2)}
.hl{color:var(--amber);font-weight:500}
.total td{border-top:2px solid var(--line);border-bottom:none;font-weight:500;color:var(--teal2)}
canvas{width:100%;height:360px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;display:block;touch-action:none}
.hint{color:var(--dim);font-size:11px;margin-top:6px}
.stat{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.stat div{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:8px;text-align:center}
.stat b{display:block;font-size:16px;color:var(--teal2);font-weight:500}
.stat span{font-size:11px;color:var(--dim)}
.warn{color:var(--red);font-size:12px;margin-top:6px;display:none}
.sec-tab{display:flex;gap:8px;margin-bottom:10px}
.sec-tab button{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:4px;padding:5px 12px;font-size:12px;cursor:pointer}
.sec-tab button.on{background:var(--panel);color:var(--teal2);border-color:var(--teal)}
.view-tab{display:flex;gap:8px;margin-bottom:10px}
.view-tab button{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:4px;padding:5px 12px;font-size:12px;cursor:pointer}
.view-tab button.on{background:var(--panel);color:var(--teal2);border-color:var(--teal)}
.cam-tab{display:flex;gap:4px;margin-bottom:8px;flex-wrap:wrap}
.input-tab{display:flex;gap:8px;margin-bottom:10px}
.input-tab button{flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:4px;padding:6px 10px;font-size:12px;cursor:pointer}
.input-tab button.on{background:var(--panel);color:var(--teal2);border-color:var(--teal)}
#xyzwrap table{width:100%;border-collapse:collapse;font-size:12px}
#xyzwrap th{position:sticky;top:0;background:var(--panel2);color:var(--dim);font-weight:500;padding:4px 6px;border-bottom:1px solid var(--line)}
#xyzwrap td{padding:2px 3px;border-bottom:1px solid var(--line)}
#xyzwrap input{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:3px;color:var(--txt);padding:3px 5px;font-size:12px;text-align:right}
#xyzwrap input:focus{outline:1px solid var(--teal)}
#xyzwrap .no{color:var(--dim);text-align:center;padding:4px 2px;font-size:11px}
.cam-tab button{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:4px;padding:3px 9px;font-size:11px;cursor:pointer}
.cam-tab button:hover{color:var(--txt);border-color:var(--teal)}
.cam-tab button.on{background:var(--panel);color:var(--teal2);border-color:var(--teal)}
.cv-wrap{position:relative}
.cv-wrap canvas{width:100%;height:360px;background:var(--panel2);border:1px solid var(--line);border-radius:8px;display:block;touch-action:none}
.cv-ctrl-zoom{position:absolute;top:10px;right:10px;display:flex;flex-direction:column;gap:6px}
.cv-ctrl-zoom button{width:34px;height:34px;border-radius:50%;border:1px solid rgba(127,127,127,.4);background:rgba(20,23,28,.45);color:#dfe6ec;font-size:17px;line-height:1;cursor:pointer;backdrop-filter:blur(3px);transition:.15s}
.cv-ctrl-zoom button:hover{background:rgba(93,202,165,.25);border-color:var(--teal);color:#fff}
.cv-ctrl-rotate{position:absolute;bottom:10px;right:10px;display:grid;grid-template-columns:repeat(3,34px);grid-template-rows:repeat(2,30px);gap:4px}
.cv-ctrl-rotate button{width:30px;height:30px;border-radius:6px;border:1px solid rgba(127,127,127,.4);background:rgba(20,23,28,.45);color:#dfe6ec;font-size:13px;line-height:1;cursor:pointer;backdrop-filter:blur(3px);transition:.15s}
.cv-ctrl-rotate button:hover{background:rgba(93,202,165,.25);border-color:var(--teal);color:#fff}
.cv-ctrl-rotate #btn_rot_up{grid-column:2;grid-row:1}
.cv-ctrl-rotate #btn_rot_left{grid-column:1;grid-row:2}
.cv-ctrl-rotate #btn_rot_down{grid-column:2;grid-row:2}
.cv-ctrl-rotate #btn_rot_right{grid-column:3;grid-row:2}
#endcheck{display:flex;gap:8px;margin-bottom:8px;font-size:11px}
#endcheck .ec{flex:1;background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:6px 10px}
#endcheck .ec b{font-weight:500;display:block;margin-bottom:2px}
#endcheck .ec.ok b{color:var(--green)}
#endcheck .ec.fixed b{color:var(--amber)}
#endcheck .ec.suspect b{color:var(--red)}
#endcheck .ec.na b{color:var(--dim)}
#endcheck .ec.es{border-color:var(--cyan,#2aa198)}
#endcheck .ec.es b{color:var(--cyan,#2aa198)}
#endcheck .ec span{color:var(--dim)}
/* ---------- 模具参数面板（v3.9.54 重新设计：卡片+表格对齐） ---------- */
.die-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden;font-size:12px}
.die-product-bar{background:rgba(127,127,127,.08);padding:8px 12px;border-bottom:1px solid var(--line);display:flex;justify-content:center;align-items:center;gap:10px;text-align:center}
.die-product-title{color:var(--dim);font-size:11px;font-weight:500}
.die-product-val{color:var(--teal2);font-size:12px;font-weight:500;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.die-table-header{display:grid;grid-template-columns:90px 1fr;padding:6px 12px;color:var(--dim);font-size:11px;border-bottom:1px solid var(--line);background:rgba(127,127,127,.04)}
.die-row{display:grid;grid-template-columns:90px 1fr;border-bottom:1px solid var(--line)}
.die-row:last-child{border-bottom:none}
.die-name-cell{display:flex;align-items:center;gap:8px;padding:10px 0 10px 12px;background:rgba(127,127,127,.03);border-right:1px solid var(--line)}
.die-color-bar{width:4px;height:34px;border-radius:2px;flex-shrink:0}
.die-name-wrap{display:flex;flex-direction:row;align-items:center;gap:5px}
.die-name-text{font-size:12px;font-weight:600}
.die-info{cursor:pointer;color:var(--teal2);font-size:11px;font-weight:700;width:16px;height:16px;line-height:16px;text-align:center;border-radius:50%;background:rgba(93,202,165,.12);display:inline-block}
.die-info:hover{background:rgba(93,202,165,.25)}
.die-params-cell{padding:8px 12px;display:flex;flex-direction:column;gap:6px;min-width:0}
.die-edits-table{display:table;width:100%}
.die-edit-row{display:grid;grid-template-columns:55px 1fr 28px;align-items:center;gap:6px;padding:3px 0}
.die-edit-label{color:var(--dim);font-size:11px;text-align:right;white-space:nowrap}
.die-edit{width:100%;min-width:0;height:24px;background:var(--panel2);border:1px solid rgba(93,202,165,.35);border-radius:4px;color:var(--txt);text-align:right;padding:2px 6px;font-size:12px}
.die-edit:focus{outline:1px solid var(--teal);border-color:var(--teal)}
.die-edit-unit{color:var(--dim);font-size:11px;text-align:left;white-space:nowrap}
.die-summary{color:#dfe6ec;font-size:11.5px;line-height:1.6;word-break:break-all;padding-top:2px;border-top:1px dashed rgba(127,127,127,.2)}
.die-no-edit{color:var(--dim);font-size:11px;font-style:italic;padding:4px 0}
/* ---------- 模具装配示意图（v3.9.55：左SVG只标序号 + 右垂直图例 + 右上角按钮） ---------- */
.die-scheme-card{background:#14171c;border:1px solid rgba(127,127,127,.25);border-radius:8px;overflow:hidden}
.die-scheme-legend{display:flex;flex-direction:column;justify-content:center;gap:9px;padding:12px 14px 12px 16px;font-size:12px;color:#cfd8e0;min-width:118px;border-left:1px solid rgba(127,127,127,.18)}
.die-scheme-legend>div{display:flex;align-items:center;gap:8px;white-space:nowrap}
.die-scheme-no{flex-shrink:0;width:18px;height:18px;border-radius:50%;background:#14171c;border:1.5px solid #8a919c;color:#8a919c;font-size:11px;font-weight:600;line-height:15px;text-align:center;font-family:sans-serif}
