/* In-room Take apart (room-parts.mjs): callouts over the room, the dock at the right edge.
   Take apart ported from Mikael Lehtonen's scan2service (web/parts.js) via SinceAI-2026/mvp; UX after Rasmus Mäkinen's pump explode. */
.parts-mode .hud-overlay,
.parts-mode .navigation-hud,
.parts-mode .route-map-panel { display: none; }

.room-parts { position: absolute; inset: 0; z-index: 25; pointer-events: none; font-size: 12px; }
.room-parts svg, .room-parts .rp-labels { position: absolute; inset: 0; overflow: visible; pointer-events: none; }
.rp-label {
  position: absolute; pointer-events: auto; cursor: pointer; max-width: 210px;
  padding: 4px 8px; border-radius: 5px; line-height: 1.3; font-weight: 600; color: #f1f6ee;
  background: rgb(14 22 18 / 0.9); border: 1px solid rgb(255 255 255 / 0.2); box-shadow: 0 2px 10px #0005;
}
.rp-label[hidden] { display: none; }
.rp-label small { display: block; font-weight: 400; color: #aebcaf; font-size: 11px; }
.rp-label.sel { border-color: #3ad6ff; }
.rp-label.fault { border-color: #ff453a; }
.rp-label.fault small { color: #ff9a8f; }
.rp-label.fault2 { border-color: #ffb020; }

.rp-dock {
  position: absolute; top: 64px; right: 12px; width: 260px; max-height: calc(100% - 80px); overflow-y: auto;
  display: flex; flex-direction: column; gap: 6px; pointer-events: auto;
}
.rp-box {
  padding: 9px 10px; border-radius: 9px; background: rgba(250, 251, 247, 0.97); color: var(--text-main, #1d2a20);
  border: 1px solid var(--border, #d6dfd2); box-shadow: 0 8px 24px #0004; line-height: 1.45;
}
.rp-box[hidden] { display: none; }
.rp-box h4 { margin: 0 0 4px; font-size: 13px; }
.rp-box p { margin: 6px 0 0; }
.rp-muted { color: var(--text-muted, #66745f); font-size: 11px; font-weight: 400; }
.rp-bar { display: grid; grid-template-columns: 1fr auto; gap: 6px; align-items: center; }
.rp-bar b { grid-column: 1 / -1; font-size: 13px; }
.rp-bar input[type="range"] { width: 100%; min-width: 0; accent-color: var(--forest, #2f5a3a); }
.rp-bar output { font-variant-numeric: tabular-nums; font-size: 11px; }
.rp-row { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px; }
.rp-dock button {
  padding: 5px 8px; border-radius: 6px; font-size: 11px; font-weight: 600; cursor: pointer;
  border: 1px solid #c7d3c4; background: #fff; color: var(--forest, #2f5a3a);
}
.rp-dock button[aria-pressed="true"] { background: #e5eddf; border-color: #3a8fb0; }
.rp-dock .rp-done { background: var(--forest, #2f5a3a); color: #fff; border-color: var(--forest, #2f5a3a); }
.rp-list { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
.rp-list button { text-align: left; white-space: normal; line-height: 1.2; }
.rp-fault { margin: 5px 0 0; padding: 4px 6px; border-radius: 6px; font-size: 11px; background: #f7e4df; border: 1px solid #e3a99d; color: #7d2f22; }
.rp-fault.mate { background: #f6edda; border-color: #e0c48a; color: #6e5014; }
@media (max-width: 650px) { .rp-dock { top: auto; bottom: 10px; right: 10px; width: calc(100% - 20px); max-height: 45%; } .rp-label { max-width: 140px; font-size: 11px; } }

/* ai3d.mjs: a device drawn as its Higgsfield model */
.hud-tag.ai3d::after { content: "AI 3D"; margin-left: 6px; padding: 0 4px; border-radius: 3px; background: #f4cf76; color: #1d2a20; font-size: 9px; font-weight: 700; letter-spacing: .04em; }
