/* ============================================================
   MornLabs 排版优化 v12.1 — 像素级匹配设计稿截图
   深色主题: header + 左侧预览区(含统计+明细表) + 右侧操作面板 + footer
   ============================================================ */

/* ========== CSS Variables ========== */
:root {
  --nm-bg:           #1e1e24;
  --nm-bg-panel:     #27272d;
  --nm-bg-card:      #313138;
  --nm-bg-input:     #3a3a42;
  --nm-bg-canvas:    #f8f7f4;
  --nm-border:       #48485a;
  --nm-border-light: #5a5a6a;
  --nm-text:         #e4e4ec;
  --nm-text-sec:     #a0a0b0;
  --nm-text-dim:     #6a6a7a;
  --nm-orange:       #d97706;
  --nm-orange-hover: #f59e0b;
  --nm-blue:         #2563eb;
  --nm-blue-light:   #3b82f6;
  --nm-green:        #10b981;
  --nm-radius:       5px;
  --nm-radius-lg:    8px;
}

/* ========== Reset & Base ========== */
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body {
  width: 100%; height: 100%;
  background: #1a1a1e;
  font-family: -apple-system, "Microsoft YaHei", "PingFang SC", sans-serif;
  font-size: 13px; color: var(--nm-text); line-height: 1.5; overflow: hidden;
}

/* ========== 登录弹窗 ========== */
.nm-overlay {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.72);
}
.nm-login-card {
  width: 340px; padding: 28px 24px 20px;
  background: #fff; border-radius: 12px; text-align: center;
  box-shadow: 0 8px 32px rgba(0,0,0,.3);
}
.nm-login-logo {
  width: 52px; height: 52px; margin: 0 auto 10px;
  background: #2574B9; color: #fff; border-radius: 12px;
  font-size: 24px; font-weight: 700; line-height: 52px;
}
.nm-login-title { font-size: 18px; font-weight: 600; color: #1a1a2e; margin-bottom: 2px; }
.nm-login-subtitle { font-size: 12px; color: #888; margin-bottom: 16px; }

.nm-login-tabs { display: flex; gap: 0; margin-bottom: 14px; border-bottom: 1px solid #eee; }
.nm-login-tab {
  flex: 1; padding: 7px 0; border: none; background: none; cursor: pointer;
  font-size: 13px; color: #666; border-bottom: 2px solid transparent;
}
.nm-login-tab.active { color: #2574B9; border-bottom-color: #2574B9; font-weight: 500; }
.nm-login-form { display: none; }
.nm-login-form.active { display: block; }
.nm-login-form input {
  width: 100%; padding: 9px 12px; margin-bottom: 8px;
  border: 1px solid #ddd; border-radius: 5px; font-size: 13px; outline: none;
}
.nm-login-form input:focus { border-color: #2574B9; }
.nm-login-btn {
  width: 100%; padding: 9px; margin-top: 4px;
  background: #2574B9; color: #fff; border: none; border-radius: 5px;
  font-size: 14px; font-weight: 500; cursor: pointer;
}
.nm-login-btn:hover { background: #1e5fa5; }
.nm-login-btn:disabled { opacity: .6; cursor: not-allowed; }
.nm-login-error {
  margin-top: 8px; padding: 6px 10px;
  background: #fef2f2; color: #dc2626; border-radius: 5px; font-size: 12px; text-align: left;
}

/* ========== 主应用容器 ========== */
.nm-app {
  width: 1100px; max-width: 95vw;
  height: 92vh; max-height: 880px;
  margin: 3vh auto;
  background: var(--nm-bg); border-radius: var(--nm-radius-lg);
  display: flex !important; flex-direction: column; overflow: hidden;
  box-shadow: 0 16px 48px rgba(0,0,0,.5);
}

/* ========== 顶部标题栏 ========== */
.nm-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 11px 18px; background: var(--nm-bg-panel);
  border-bottom: 1px solid var(--nm-border); flex-shrink: 0;
}
.nm-header-title { font-size: 15px; font-weight: 600; color: var(--nm-text); }
.nm-header-close {
  width: 28px; height: 28px; border: none; background: transparent;
  color: var(--nm-text-dim); font-size: 20px; cursor: pointer; border-radius: 4px;
}
.nm-header-close:hover { background: rgba(255,255,255,.08); color: var(--nm-text); }

/* ========== 主体左右分栏 ========== */
.nm-body {
  flex: 1; display: flex !important; overflow: hidden;
}

/* ---------- 左侧: 排料预览区 (~55%) ---------- */
.nm-left-panel {
  width: 56%; min-width: 520px;
  display: flex !important; flex-direction: column; padding: 12px 14px; gap: 8px;
  overflow-y: auto; border-right: 1px solid var(--nm-border);
}

/* 预览框 (设计稿: 白底方框，显示排料结果) */
.nm-preview-box {
  flex: 1; min-height: 400px;
  background: var(--nm-bg-canvas); border-radius: var(--nm-radius);
  border: 1px solid #aaa; overflow: hidden; position: relative;
  display: flex; flex-direction: column;
}
/* ★ v16.2: 预览区顶部信息栏 (项目地址 + 场景名称) */
.nm-preview-info-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 14px; min-height: 30px;
  background: linear-gradient(135deg, #1e3a5f, #2574b9);
  color: #fff; font-size: 12px; font-weight: 500;
  z-index: 10; flex-shrink: 0; line-height: 1.5;
}
.nm-info-project { display: inline-flex; align-items: center; gap: 4px; }
.nm-info-scenes { display: inline-flex; align-items: center; gap: 4px; opacity: .92; }
.nm-info-divider { opacity: .5; }
/* ★ 预览内层: relative定位, 让Canvas和board_layer叠加 */
.nm-preview-inner {
  width: 100%; height: 100%; min-height: 370px;
  position: relative; overflow: hidden;
}
/* ★ Canvas层: 作为背景, 始终显示在底层 */
#nesting_canvas {
  display: block !important;
  width: 100%; height: 100%; min-height: 380px;
  position: absolute; top: 0; left: 0; z-index: 1;
}
/* ★ DOM板件层: 叠加在Canvas上方 */
.nm-board-layer {
  position: absolute; top: 0; left: 0; z-index: 2;
  width: 100%; height: 100%; pointer-events: none;
}
/* ★ 单个板件DOM元素 */
.nm-board-item {
  position: absolute; pointer-events: auto;
  border: 2px solid rgba(0,0,0,.6);
  border-radius: 2px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: bold; color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.7);
  transition: transform .15s, box-shadow .15s, z-index .15s;
  overflow: hidden; white-space: nowrap;
  min-width: 20px; min-height: 20px;
}
.nm-board-item:hover {
  transform: scale(1.15); z-index: 100 !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.4);
  border-color: #000; border-width: 2px;
}
.nm-board-item.selected {
  border-color: #facc15; border-width: 3px;
  box-shadow: 0 0 12px rgba(250,204,21,.5);
  z-index: 99;
}
/* ★ 板件编号标签 */
.nm-board-item .nm-bd-num {
  position: absolute; top: -1px; left: -1px;
  background: rgba(0,0,0,.8); color: #fff;
  font-size: 9px; font-weight: bold;
  padding: 1px 4px; border-radius: 2px 0 3px 0;
  line-height: 1.2;
}
/* ★ 板件名称标签(底部) */
.nm-board-item .nm-bd-name {
  font-size: 9px; text-align: center;
  max-width: 100%; overflow: hidden;
  text-overflow: ellipsis; padding: 0 2px;
}
/* ★ 小板件特殊样式(强制可见) */
.nm-board-item.tiny {
  min-width: 24px; min-height: 24px;
  border-width: 2px; border-style: solid;
}
.nm-board-item.tiny::after {
  content: ''; position: absolute;
  inset: 2px; border: 1.5px dashed rgba(255,255,255,.5);
  pointer-events: none;
}
/* ★ v14.1: 错开的板件(重叠修正) — 用虚线边框+半透明强调 */
.nm-board-item.offset {
  border-style: dashed !important;
  border-color: #facc15 !important;
  box-shadow: 0 0 8px rgba(250,204,21,.4);
}

/* 空状态占位 */
.nm-placeholder {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; background: #f8f7f4;
}
.nm-placeholder-icon {
  width: 64px; height: 44px; margin-bottom: 10px;
  border: 2px dashed #bbb; border-radius: 4px;
  display: flex; align-items: center; justify-content: center; color: #bbb; font-size: 22px;
}
.nm-placeholder-text { font-size: 14px; color: #999; font-weight: 500; }
.nm-placeholder-sub { font-size: 12px; color: #bbb; margin-top: 3px; }

/* 翻页导航行 (设计稿: 显示|第1张|下一张 ... 9mm|18mm) */
.nm-nav-row {
  display: flex !important; align-items: center; justify-content: space-between;
  padding: 2px 0;
}
.nm-nav-left { display: flex !important; align-items: center; gap: 6px; }
.nm-nav-label { font-size: 12px; color: var(--nm-text-dim); }
.nm-nav-info {
  padding: 2px 10px; background: var(--nm-bg-card); border-radius: 3px;
  font-size: 12px; color: var(--nm-text-sec); font-weight: 500;
  border: 1px solid var(--nm-border);
}
.nm-nav-btn {
  padding: 2px 12px; border: 1px solid var(--nm-border-light); border-radius: 3px;
  background: var(--nm-bg-input); color: var(--nm-text-sec);
  font-size: 12px; cursor: pointer;
}
.nm-nav-btn:hover { background: var(--nm-bg-card); color: var(--nm-text); }
.nm-nav-btn:disabled { opacity: .4; cursor: not-allowed; }
.nm-nav-right { display: flex !important; gap: 4px; }
.nm-thick-btn {
  padding: 3px 14px; border: 1px solid var(--nm-border); border-radius: 3px;
  background: transparent; color: var(--nm-text-sec); font-size: 12px; cursor: pointer;
}
.nm-thick-btn.active {
  background: var(--nm-bg-card); color: var(--nm-text);
  border-color: var(--nm-border-light); font-weight: 600;
}
.nm-thick-btn:hover:not(.active) { background: var(--nm-bg-input); }

/* 统计栏 (设计稿: 原1220×2440 / 板件5块 / 张数1张 / 利用率1.7%) */
.nm-stats-bar {
  display: flex !important; gap: 6px; flex-wrap: wrap;
}
.nm-stat-chip {
  padding: 4px 12px; background: var(--nm-bg-card); border-radius: 4px;
  font-size: 12px; color: var(--nm-text-sec); white-space: nowrap;
}
.nm-stat-util { color: var(--nm-orange); font-weight: 600; }

/* 原板用量统计 + 板件明细 — 区块样式 */
.nm-section { margin-top: 2px; }
.nm-section-title {
  font-size: 13px; font-weight: 600; color: var(--nm-text);
  padding: 6px 0 5px; margin-bottom: 4px;
}
.nm-summary-list { display: flex !important; flex-direction: column; gap: 3px; }
.nm-summary-row {
  display: flex !important; align-items: center; justify-content: space-between;
  padding: 5px 10px; background: var(--nm-bg-card); border-radius: 4px;
  font-size: 12px; color: var(--nm-text-sec);
}
.nm-summary-row span:nth-child(2) { flex: 1; margin: 0 8px; color: var(--nm-text-dim); }

/* 表格通用 */
.nm-table-wrap { overflow-x: auto; }
.nm-detail-table, .nm-board-table {
  width: 100%; border-collapse: collapse; font-size: 12px;
}
.nm-detail-table th, .nm-board-table th {
  padding: 6px 8px; text-align: left; background: var(--nm-bg-card);
  color: var(--nm-text-dim); font-weight: 500; border-bottom: 1px solid var(--nm-border);
}
.nm-detail-table td, .nm-board-table td {
  padding: 5px 8px; border-bottom: 1px solid rgba(72,72,90,.35);
  color: var(--nm-text-sec);
}
.dim-cell { font-family: Consolas, "Courier New", monospace; }
.dim-dim { color: var(--nm-text-dim); }
/* ★ v10.63: 背板槽标记 */
.nm-slot-badge {
  display: inline-block; background: #f59e0b; color: #78350f;
  font-size: 10px; font-weight: 600; padding: 1px 5px;
  border-radius: 4px; margin-left: 4px; vertical-align: middle;
}

/* ---------- 右侧: 操作面板 (~45%) ---------- */
.nm-right-panel {
  flex: 1; display: flex !important; flex-direction: column;
  padding: 12px 14px; gap: 8px; overflow-y: auto;
}

/* 控制组 (标签 + 控件) */
.nm-ctrl-group { display: flex !important; flex-direction: column; gap: 4px; }
.nm-ctrl-label {
  font-size: 13px; font-weight: 600; color: var(--nm-text); padding-bottom: 2px;
}

/* 订单列表 */
.nm-order-list { display: flex !important; flex-direction: column; gap: 3px; max-height: 140px; overflow-y: auto; }
.nm-order-card {
  padding: 7px 10px; background: var(--nm-bg-card); border-radius: var(--nm-radius);
  cursor: pointer; border: 1px solid transparent; transition: all .12s;
}
.nm-order-card:hover { background: var(--nm-bg-input); border-color: var(--nm-border-light); }
.nm-order-card.selected { border-color: var(--nm-blue-light); background: rgba(59,130,246,.1); }
.order-name { font-size: 13px; font-weight: 500; color: var(--nm-text); }
.order-meta { font-size: 11px; color: var(--nm-text-dim); margin-top: 1px; }

/* 选中订单摘要卡片 */
.nm-order-card-selected {
  padding: 10px 12px; background: var(--nm-bg-card); border-radius: var(--nm-radius);
  cursor: pointer; border: 1px solid var(--nm-border-light);
}
.so-project { font-size: 14px; font-weight: 600; color: var(--nm-text); }
.so-customer { font-size: 12px; color: var(--nm-text-sec); margin-top: 2px; }
.so-status {
  display: inline-block; margin-top: 3px; padding: 2px 8px;
  background: var(--nm-green); color: #fff; border-radius: 3px; font-size: 11px;
}

/* 场景选择框 */
.nm-scene-box {
  display: flex !important; flex-direction: column; gap: 3px;
  background: var(--nm-bg-card); border-radius: var(--nm-radius);
  border: 1px solid var(--nm-border); padding: 6px; max-height: 96px; overflow-y: auto;
}
.nm-scene-item {
  display: flex !important; align-items: center; gap: 6px;
  padding: 4px 6px; font-size: 12px;
}
.nm-scene-item input[type="checkbox"] {
  width: 14px; height: 14px; accent-color: var(--nm-blue); cursor: pointer;
}
.nm-scene-tag {
  display: inline-block; padding: 1px 5px; border-radius: 3px;
  font-size: 10px; font-weight: 600;
}
.nm-scene-tag.decompose { background: var(--nm-blue-light); color: #fff; }
.nm-scene-tag.design { background: #6b7280; color: #fff; }
.nm-scene-tag.pending { background: #4b5563; color: #9ca3af; font-size: 10px; }  /* 待拆单=灰色 */
.nm-scene-name { flex: 1; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nm-scene-notice { font-size: 11px; color: #f59e0b; padding: 4px 8px; margin-bottom: 4px; background: rgba(245,158,11,.08); border-radius: 4px; }
.nm-scene-status { margin-left: auto; font-size: 10px; color: var(--nm-text-dim); }

/* 原板选择: 3下拉横排 */
.nm-sheet-row { display: flex !important; gap: 5px; }
.nm-sheet-select {
  flex: 1; padding: 5px 8px; background: var(--nm-bg-input);
  border: 1px solid var(--nm-border); border-radius: var(--nm-radius);
  color: var(--nm-text); font-size: 12px; outline: none; cursor: pointer;
}
.nm-sheet-select:focus { border-color: var(--nm-blue); }

/* 操作按钮 3×2 网格 (精确匹配设计稿布局) */
.nm-btn-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr 1.4fr;
  gap: 5px;
}
.nm-grid-btn {
  padding: 7px 4px; border: 1px solid var(--nm-border-light); border-radius: var(--nm-radius);
  background: var(--nm-bg-card); color: var(--nm-text-sec);
  font-size: 12px; cursor: pointer; transition: all .12s; text-align: center;
}
.nm-grid-btn:hover { background: var(--nm-bg-input); color: var(--nm-text); }

/* ★ 开始排板 — 橙色主按钮 */
.nm-btn-primary {
  background: var(--nm-orange); color: #fff; border-color: var(--nm-orange);
  font-weight: 600; font-size: 13px;
}
.nm-btn-primary:hover { background: var(--nm-orange-hover); }
.nm-btn-wide { font-size: 12px; }
.nm-btn-wide2 { font-size: 12px; }

/* 设置选项 (设计稿: 允许旋转/锯路补偿) */
.nm-settings {
  display: flex !important; flex-direction: column; gap: 5px; padding: 3px 0;
}
.nm-check-label {
  display: flex !important; align-items: center; gap: 6px;
  font-size: 12px; color: var(--nm-text-sec); cursor: pointer;
}

/* ========== ★ v15.2: 刀具设置按钮 + 弹窗 ========== */
.nm-tool-btn {
  padding: 4px 10px; border: 1px solid var(--nm-border-light); border-radius: var(--nm-radius);
  background: linear-gradient(135deg, #7c3aed, #a855f7); color: #fff;
  font-size: 11px; font-weight: 600; cursor: pointer;
  transition: all .15s; display: inline-flex; align-items: center; gap: 4px;
}
.nm-tool-btn:hover { background: linear-gradient(135deg, #6d28d9, #9333ea); box-shadow: 0 2px 8px rgba(124,58,237,.3); }

/* 弹窗遮罩 */
.nm-tool-modal-overlay {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0,0,0,.65); display: none !important;
  align-items: center; justify-content: center;
}
.nm-tool-modal-overlay.active { display: flex !important; }

/* 弹窗主体 */
.nm-tool-modal {
  width: 480px; max-height: 85vh;
  background: var(--nm-bg-panel); border-radius: 12px;
  border: 1px solid var(--nm-border-light);
  box-shadow: 0 20px 60px rgba(0,0,0,.5);
  display: flex !important; flex-direction: column; overflow: hidden;
}
.nm-tool-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px; background: linear-gradient(135deg, #4c1d95, #7c3aed);
  color: #fff; flex-shrink: 0;
}
.nm-tool-title { font-size: 15px; font-weight: 600; }
.nm-tool-close {
  width: 28px; height: 28px; border: none; background: rgba(255,255,255,.2);
  color: #fff; font-size: 18px; border-radius: 50%; cursor: pointer;
}
.nm-tool-close:hover { background: rgba(255,255,255,.35); }

/* 弹窗内容区 */
.nm-tool-body {
  padding: 16px 18px; overflow-y: auto; flex: 1;
  display: flex !important; flex-direction: column; gap: 12px;
}

/* 分组fieldset */
.nm-tool-group {
  border: 1px solid var(--nm-border); border-radius: var(--nm-radius);
  padding: 10px 14px; margin: 0;
}
.nm-tool-legend {
  font-size: 13px; font-weight: 600; color: var(--nm-blue);
  padding: 0 6px; /* float left效果已不需要 */
}

/* 单行输入 */
.nm-tool-row {
  display: flex !important; align-items: center; gap: 8px;
  margin-bottom: 8px; flex-wrap: wrap;
}
.nm-tool-row:last-child { margin-bottom: 0; }
.nm-tool-label {
  font-size: 12px; color: var(--nm-text); min-width: 70px; flex-shrink: 0;
}
.nm-tool-input {
  width: 80px; padding: 5px 8px; background: var(--nm-bg-input);
  border: 1px solid var(--nm-border); border-radius: 4px;
  color: var(--nm-text); font-size: 12px; outline: none;
}
.nm-tool-input:focus { border-color: var(--nm-blue); box-shadow: 0 0 0 2px rgba(37,99,235,.15); }
.nm-tool-select {
  width: 110px; padding: 5px 8px; background: var(--nm-bg-input);
  border: 1px solid var(--nm-border); border-radius: 4px;
  color: var(--nm-text); font-size: 12px; outline: none; cursor: pointer;
}
.nm-tool-unit { font-size: 11px; color: var(--nm-text-dim); min-width: 32px; }
.nm-tool-hint { font-size: 10px; color: var(--nm-text-dim); margin-left: auto; }
.nm-tool-check { 
  display: flex !important; align-items: center; gap: 6px;
  font-size: 12px; color: var(--nm-text); cursor: pointer;
}
.nm-tool-check input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--nm-blue); }

/* 清边子选项 */
.nm-tool-sub {
  margin-top: 8px; padding-left: 16px;
  border-left: 2px solid var(--nm-border-light);
  animation: fadeIn .2s ease;
}
.nm-tool-sub[style*="display:none"] { display: none !important; }

@keyframes fadeIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }

/* 预设按钮组 */
.nm-tool-presets { background: rgba(59,130,246,.05); border-color: rgba(59,130,246,.2); }
.nm-preset-grid {
  display: grid !important; grid-template-columns: 1fr 1fr; gap: 6px;
}
.nm-preset-btn {
  padding: 7px 10px; border: 1px solid var(--nm-border-light); border-radius: 4px;
  background: var(--nm-bg-card); color: var(--nm-text-sec);
  font-size: 11px; cursor: pointer; transition: all .12s;
  text-align: left;
}
.nm-preset-btn:hover { background: var(--nm-blue); color: #fff; border-color: var(--nm-blue); }

/* 底部按钮栏 */
.nm-tool-footer {
  display: flex !important; justify-content: flex-end; gap: 8px;
  padding: 12px 18px; border-top: 1px solid var(--nm-border); flex-shrink: 0;
  background: rgba(0,0,0,.08);
}
.nm-tool-apply {
  padding: 7px 20px; background: var(--nm-blue); color: #fff; border: none;
  border-radius: 4px; font-size: 13px; font-weight: 600; cursor: pointer;
}
.nm-tool-apply:hover { background: #1d4ed8; }
.nm-tool-cancel {
  padding: 7px 16px; background: transparent; color: var(--nm-text-sec);
  border: 1px solid var(--nm-border); border-radius: 4px;
  font-size: 12px; cursor: pointer;
}
.nm-tool-cancel:hover { background: var(--nm-bg-card); }

/* ========== ★ v15.3: 机型选择弹窗 ========== */
.nm-machine-brands {
  display: grid !important; grid-template-columns: 1fr 1fr 1fr; gap: 5px;
}
.nm-brand-btn {
  padding: 8px 6px; border: 1px solid var(--nm-border); border-radius: 4px;
  background: var(--nm-bg-card); color: var(--nm-text-sec);
  font-size: 11px; cursor: pointer; transition: all .12s; text-align: center;
}
.nm-brand-btn:hover { background: var(--nm-bg-input); border-color: var(--nm-border-light); }
.nm-brand-btn.active {
  background: var(--nm-blue); color: #fff; border-color: var(--nm-blue);
  font-weight: 600; box-shadow: 0 2px 8px rgba(37,99,235,.3);
}
.nm-machine-models {
  display: flex !important; flex-direction: column; gap: 5px;
}
.nm-model-btn {
  display: flex !important; align-items: center; gap: 8px;
  padding: 8px 10px; border: 1px solid var(--nm-border); border-radius: 4px;
  background: var(--nm-bg-card); color: var(--nm-text-sec);
  font-size: 12px; cursor: pointer; transition: all .12s; text-align: left;
}
.nm-model-btn:hover { background: var(--nm-bg-input); border-color: var(--nm-border-light); }
.nm-model-btn.active {
  border-color: var(--nm-blue); background: rgba(37,99,235,.1); color: var(--nm-text);
}
.nm-model-btn .nm-model-name { font-weight: 500; }
.nm-model-btn .nm-model-desc { font-size: 10px; color: var(--nm-text-dim); margin-left: auto; }
.nm-format-info {
  font-size: 11px; color: var(--nm-text-sec); line-height: 1.6;
  background: rgba(0,0,0,.15); padding: 8px 10px; border-radius: 4px;
  font-family: Consolas, monospace; white-space: pre-wrap;
}
.nm-tool-check + .nm-tool-check { margin-top: 5px; }
.nm-machine-intro p { margin: 0; }
.nm-check-label input[type="checkbox"] { width: 14px; height: 14px; accent-color: var(--nm-blue); }

/* 开料清单预览表格 */
.nm-preview-table-wrap {
  background: var(--nm-bg-card); border-radius: var(--nm-radius);
  border: 1px solid var(--nm-border); max-height: 160px; overflow-y: auto;
}
.nm-board-table thead tr { background: rgba(59,130,246,.12); }
.nm-board-table th { color: var(--nm-blue-light); font-weight: 600; }

/* ========== 底部版本信息 ========== */
.nm-footer {
  padding: 8px 18px; text-align: center; font-size: 11px; color: var(--nm-text-dim);
  background: var(--nm-bg-panel); border-top: 1px solid var(--nm-border); flex-shrink: 0;
}

/* ========== 加载态 / Toast ========== */
.nm-loading { padding: 12px; text-align: center; color: var(--nm-text-dim); font-size: 12px; }
.status-toast {
  position: fixed; top: 14px; left: 50%; transform: translateX(-50%);
  padding: 7px 18px; border-radius: 5px; font-size: 13px; z-index: 10000;
  transition: opacity .3s;
}
.status-toast.info { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }
.status-toast.success { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.status-toast.error { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }

/* ========== 滚动条 ========== */
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--nm-border); border-radius: 2px; }

/* ========== ★ 缩略图条 (所有原板的mini预览) ========== */
.nm-thumbnail-strip {
  display: flex; gap: 6px; padding: 8px 10px;
  background: var(--nm-bg-panel); border-top: 1px solid var(--nm-border);
  overflow-x: auto; align-items: center; flex-shrink: 0;
}
.nm-thumbnail-strip::before {
  content: '全部原板:';
  font-size: 11px; color: var(--nm-text-dim); flex-shrink: 0;
  margin-right: 2px;
}
.nm-thumb {
  flex-shrink: 0; width: 56px; height: 42px; cursor: pointer;
  border: 2px solid var(--nm-border); border-radius: 4px;
  background: #f8f7f4; position: relative; transition: all .15s;
}
.nm-thumb:hover { border-color: var(--nm-blue-light); transform: translateY(-1px); }
.nm-thumb.active { border-color: #2574B9; box-shadow: 0 0 0 1px rgba(37,116,185,.3); }
.nm-thumb canvas { width: 100%; height: 100%; display: block; }
.nm-thumb-label {
  position: absolute; bottom: -1px; left: 0; right: 0;
  text-align: center; font-size: 9px; color: #fff;
  background: rgba(0,0,0,.55); padding: 1px 0; border-radius: 0 0 3px 3px;
  line-height: 1.3;
}
.nm-thumb-count {
  position: absolute; top: 1px; right: 1px;
  font-size: 9px; font-weight: 700; color: #fff;
  background: rgba(217,119,6,.85); padding: 0 3px; border-radius: 2px;
  line-height: 1.3;
}
