/* ════════════════════════════════════════════════════════════════════════
 *  Assembly adjustable panel (#auto-assemble-panel / .aa-panel)
 *  auto-assemble.js 装配可调浮窗。改为遵 DESIGN.md：§8.4.A 浮起面板 + §6.4 液态玻璃
 *  + §8.1 按钮变体 + §3-§6 token（全 token、0 硬编 hex；旧版整窗 inline + 暗色 hex
 *  fallback 不合规，user 2026-06-15）。固定锚左下角、非可拖（不复用 .panel-floating
 *  的拖拽/resize，仅取其玻璃皮肤语言）。
 * ════════════════════════════════════════════════════════════════════════ */
.aa-panel {
  position: fixed;
  left: 16px;
  bottom: 52px;
  z-index: 1000;                        /* §8.4.A floating-panel 段 */
  width: 320px;
  padding: 12px 14px;                   /* §5.2 面板边距 */
  font: 400 13px/1.5 var(--font-ui);    /* §4.2 base / §4.3 400 */
  color: var(--ink-1);
  background: var(--float-bg);          /* 液态玻璃 §6.4 */
  background-image: var(--glass-noise);
  backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  -webkit-backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  border: 1px solid var(--glass-border);
  border-radius: 5px;                   /* §6.1 radius-md */
  box-shadow: var(--float-shadow), var(--float-edge);
  animation: panel-pop var(--dur-enter) var(--ease-out);   /* §10.2 入场 */
}
.aa-panel-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px;
}
.aa-panel-title { font-size: 13px; font-weight: 600; }      /* §4.3 600 */
.aa-panel-title small { color: var(--ink-3); font-weight: 400; }
.aa-panel-close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; margin: -6px -6px -6px 0;       /* U1 命中区 ≥32，负 margin 抵紧凑 */
  background: none; border: none; border-radius: 5px;
  color: var(--ink-3); font: inherit; font-size: 15px; cursor: pointer;
  transition: background-color var(--dur-micro) var(--ease-out),
              color var(--dur-micro) var(--ease-out);
}
.aa-panel-close:hover { background: var(--overlay-1); color: var(--ink-1); }

.aa-row { display: flex; align-items: center; gap: 8px; margin: 6px 0; }
.aa-row-label { flex: none; width: 52px; color: var(--ink-2); }   /* §UX-2 label = ink-2 */

.aa-row-fixed { flex: 1; }
.aa-row-fixed small { color: var(--ink-3); }
.aa-link { flex: none; color: var(--ink-1); text-decoration: underline; }  /* §3.5 链接 = ink-1 */

/* 叉块：PHC-32S 固定硬件 + 连续微角度调节。Fork scrubber 是相对当前角 ±10° 的
   精调行程，约 0.07°/px（320px 面板内），数字框/键盘/−/+ 统一 0.1°。 */
.aa-fork-block {
  margin: 6px 0; padding: 2px 0 7px;
  border-bottom: 1px solid var(--line-1);
}
.aa-fork-block .aa-row { margin: 0 0 4px; }
.aa-fork-mid { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; }
.aa-fork-turn {
  flex: none; display: inline-flex; align-items: center; gap: 3px;
  min-height: 24px; padding: 0 9px;
  font: 500 11px var(--font-ui); color: var(--ink-1);
  background: transparent; border: 1px solid var(--line-1);
  border-radius: 999px; cursor: pointer;
  transition: background-color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);
}
.aa-fork-turn:hover { background: var(--overlay-1); border-color: var(--ink-2); }
.aa-fork-turn:disabled { opacity: .45; cursor: default; }
.aa-fork-turn small { color: var(--ink-3); font-size: 10px; }
.aa-fork-drop { color: var(--fault-warn); font-size: 11px; }
.aa-fork-block.aa-dis .aa-row-label,
.aa-fork-block.aa-dis .aa-row-fixed { opacity: .55; }
.aa-fork-adjust {
  display: grid; grid-template-columns: 24px minmax(72px, 1fr) 24px 64px auto;
  align-items: center; gap: 4px; margin-left: 60px;
}
.aa-fork-nudge,
.aa-fork-auto {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 24px; min-height: 24px; padding: 0 5px;
  border: 1px solid transparent; border-radius: 5px;
  background: transparent; color: var(--ink-2); font: 500 11px var(--font-ui); cursor: pointer;
  transition: background-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out);
}
.aa-fork-nudge:hover,
.aa-fork-auto:hover { background: var(--overlay-1); color: var(--ink-1); }
.aa-fork-auto:disabled { opacity: .45; cursor: default; }
.aa-fork-scrub { width: 100%; min-width: 0; accent-color: var(--ink-1); cursor: ew-resize; }
.aa-fork-angle {
  display: flex; align-items: center; color: var(--ink-3); font-size: 11px;
}
.aa-fork-angle input {
  width: 49px; height: 24px; box-sizing: border-box; padding: 2px 3px;
  border: 1px solid var(--line-1); border-radius: 4px;
  background: var(--surface-2); color: var(--ink-1); font: 500 11px var(--font-ui);
  text-align: right;
}
.aa-fork-feedback {
  display: flex; align-items: center; justify-content: space-between;
  margin: 3px 0 0 60px; color: var(--ink-3); font-size: 10px;
}
.aa-fork-status.is-ok { color: var(--sig-ok); }
.aa-fork-status.is-bad { color: var(--fault-warn); }

/* 自绘下拉（原生 select 不能逐 option hover 预览，故自绘——结构/类沿用） */
.aa-dd { flex: 1; position: relative; min-width: 0; }
.aa-dd-btn {
  width: 100%; position: relative; text-align: left;
  padding: 4px 22px 4px 8px;
  font: inherit;
  background: var(--surface-2); color: inherit;
  border: 1px solid var(--line-1); border-radius: 5px;
  cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  transition: border-color var(--dur-micro) var(--ease-out),
              background-color var(--dur-micro) var(--ease-out);
}
.aa-dd-btn:hover { border-color: var(--ink-3); }
.aa-dd-caret { position: absolute; right: 6px; top: 4px; color: var(--ink-3); }
.aa-dd-list {
  position: absolute; z-index: 5; left: 0; right: 0; top: calc(100% + 2px);
  max-height: 190px; overflow: auto;
  background: var(--surface-1); border: 1px solid var(--line-1);
  border-radius: 5px; box-shadow: var(--float-shadow); font-size: 12px;
}
.aa-dd-opt { padding: 4px 8px; cursor: pointer; white-space: nowrap; }
.aa-dd-opt:not(.aa-dis):hover { background: var(--overlay-1); }
.aa-dd-opt.is-selected { background: var(--surface-3); }
.aa-dd-opt.aa-dis { color: var(--ink-3); opacity: .55; cursor: default; }

.aa-summary {
  margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--line-1);
  display: flex; justify-content: space-between; align-items: center;
}
.aa-actions { margin-top: 8px; display: flex; justify-content: space-between; gap: 8px; }
.aa-btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 32px; padding: 0 14px;        /* §8.1 行内 32 */
  font: 500 12px var(--font-ui); border-radius: 5px; cursor: pointer;
  transition: background-color var(--dur-micro) var(--ease-out),
              border-color var(--dur-micro) var(--ease-out);
}
.aa-btn-secondary { background: transparent; border: 1px solid var(--line-1); color: var(--ink-1); }
.aa-btn-secondary:hover { background: var(--overlay-1); }
.aa-btn-primary { background: var(--ink-1); border: 1px solid var(--ink-1); color: var(--surface); }
.aa-btn-primary:hover { background: var(--ink-2); border-color: var(--ink-2); }
.aa-note { margin: 8px 0 0; color: var(--ink-3); font-size: 11px; line-height: 1.5; }
.aa-warn { color: var(--fault-warn); line-height: 1.6; }

/* ── 无法装配原因徽章(overhead ERROR 槽;auto-assemble.js 全局「⚠ Reasons」toggle)──
 *  大感叹号(_alert 三角危险标,同 Inspector/3D 报错牌)+ 旁注英文具体问题。
 *  红 = 光高够不到(套筒对不到中心) · 黄 = 无镜架/不可装配。挂在器件上方 overhead 堆叠。 */
.aa-err-badge {
  position: relative;                   /* 锚 .aa-err-pop 上方浮层 */
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px 3px 7px;
  border-radius: 999px;                 /* 精简单行 chip(user 2026-07-06「太冗长」→ 短标签) */
  font: 600 11px/1.2 var(--font-ui); color: var(--ink-1);
  white-space: nowrap;
  background: var(--float-bg);
  background-image: var(--glass-noise);
  backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  -webkit-backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  border: 1px solid var(--glass-border, var(--line-1));
  box-shadow: var(--float-shadow), var(--float-edge);
  pointer-events: auto; user-select: none;   /* auto = 可 hover 出完整原因 title */
}
.aa-err-badge .aa-err-icon { display: inline-flex; flex: none; }
.aa-err-badge .aa-err-icon svg { width: 15px; height: 15px; }   /* 大感叹号 */
.aa-err-badge .aa-err-text { flex: none; }
.aa-err-badge.is-height { border-color: var(--fault-bad); }               /* 红 = 光高够不到 */
.aa-err-badge.is-height .aa-err-icon { color: var(--fault-bad); }
.aa-err-badge.is-mount  { border-color: var(--fault-warn); }              /* 黄/橙 = 镜架未导入 */
.aa-err-badge.is-mount  .aa-err-icon { color: var(--fault-warn); }
.aa-err-badge.is-collision { border-color: var(--fault-caution); }        /* 橙 = 镜架穿模(拒绝装配) */
.aa-err-badge.is-collision .aa-err-icon { color: var(--fault-caution); }
.aa-err-badge.is-fork { border-color: var(--ink-3, var(--line-1)); }      /* 灰 = 叉块无处下(装了但没叉,info 级) */
.aa-err-badge.is-fork .aa-err-icon { color: var(--ink-2); }

/* hover 浮层:悬停时在 chip 正上方显「抬/降到 X–Y mm」可达范围(user 2026-07-06)。 */
.aa-err-pop {
  position: absolute; left: 50%; bottom: calc(100% + 6px); transform: translateX(-50%);
  white-space: nowrap; padding: 3px 9px; border-radius: 6px;
  font: 500 10.5px/1.2 var(--font-ui); color: var(--ink-1);
  background: var(--float-bg); background-image: var(--glass-noise);
  backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  -webkit-backdrop-filter: blur(var(--float-blur)) saturate(var(--float-sat));
  border: 1px solid var(--glass-border, var(--line-1));
  box-shadow: var(--float-shadow), var(--float-edge);
  opacity: 0; pointer-events: none; transition: opacity 120ms var(--ease-out, ease);
}
.aa-err-badge:hover .aa-err-pop { opacity: 1; }

