
:root {
  /* Semantic color values live in ui_theme.css. Keep only page aliases and
     workstation sizing here so every Cabinet surface shares one theme source. */
  --bg:var(--ui-app-bg);
  --chrome:var(--ui-chrome-bg);
  --chrome-2:var(--ui-panel-soft);
  --panel:var(--ui-panel-bg);
  --panel-deep:var(--ui-panel-deep);
  --field:var(--ui-field-bg);
  --border:var(--ui-border);
  --border-soft:var(--ui-border-soft);
  --text:var(--ui-text);
  --text-strong:var(--ui-text-strong);
  --muted:var(--ui-text-muted);
  --accent:var(--ui-accent);
  --accent-soft:var(--ui-accent-bg);
  --danger:var(--ui-danger);
  --good:var(--ui-good);

  --hud-height:190px;
  --drawer-width:258px;
  font-family:"Segoe UI",Arial,Helvetica,sans-serif;
}

* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; background: var(--bg); color: var(--text); }
button, input, select { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible { outline: 1px solid var(--accent); outline-offset: 1px; }
[hidden] { display: none !important; }

#app {
  height: 100vh;
  display: grid;
  grid-template-rows: 42px minmax(180px, 1fr) var(--hud-height) 23px;
  background: var(--bg);
  /* VIEW4G5K2F · Cabinet is an application, not a document. Prevent stray
     browser text selections while clicking, dragging and orbiting through UI
     chrome. Editable controls opt back into selection below. */
  user-select: none;
  -webkit-user-select: none;
}

#app input,
#app textarea,
#app [contenteditable="true"],
#app .ui-selectable {
  user-select: text;
  -webkit-user-select: text;
}

/* Top workstation chrome */
.topbar {
  min-width: 0;
  display: grid;
  grid-template-columns: 205px minmax(0, 1fr) auto;
  align-items: stretch;
  background: #151618;
  border-bottom: 1px solid #3a3b3e;
  user-select: none;
}
.compact-brand { display: flex; align-items: center; gap: 8px; padding: 0 10px; min-width: 0; border-right: 1px solid var(--border-soft); }
.brand-mark { width: 25px; height: 25px; display: grid; place-items: center; background: #c9c9c9; color: #111; font-size: 12px; font-weight: 900; letter-spacing: -.04em; }
.brand-copy { min-width: 0; line-height: 1; }
.brand-title { color: #d7d7d7; font-size: 12px; font-weight: 700; letter-spacing: .105em; white-space: nowrap; }
.brand-subtitle { margin-top: 4px; color: #777b80; font-size: 11px; font-weight: 600; letter-spacing: .12em; }
.workspace-tabs { display: flex; align-items: stretch; min-width: 0; overflow: hidden; }
.workspace-tab {
  position: relative;
  min-width: 0;
  padding: 0 13px;
  border: 0;
  border-right: 1px solid #25272a;
  background: transparent;
  color: #8e9195;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .08em;
  cursor: pointer;
}
.workspace-tab:hover { color: #d8d8d8; background: #1d1e20; }
.workspace-tab:disabled { color: #55595e; background: transparent; cursor: default; opacity: .55; }
.workspace-tab:disabled:hover { color: #55595e; background: transparent; }
.workspace-tab.active { color: #f0f0f0; background: #202123; }
.workspace-tab.active::after { content: ""; position: absolute; left: 9px; right: 9px; bottom: 0; height: 2px; background: var(--accent); }
.top-actions { display: flex; align-items: center; gap: 4px; padding: 0 7px; border-left: 1px solid var(--border-soft); }
.connection { display: inline-flex; align-items: center; gap: 5px; height: 22px; margin-right: 3px; color: #83878b; font-size: 11px; letter-spacing: .09em; }
.connection .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--good); }
.chrome-button {
  height: 25px;
  padding: 0 9px;
  border: 1px solid #35373a;
  border-radius: 2px;
  background: #232426;
  color: #b8babc;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .07em;
  cursor: pointer;
}
.chrome-button:hover:not(:disabled) { background: #2b2c2f; color: #eee; border-color: #4b4d50; }
.account-button { display:inline-flex; align-items:center; text-decoration:none; }
.chrome-button.accent { color: #e4c07d; }
.chrome-button:disabled { opacity: .36; cursor: default; }

/* Viewer stage */
/* First-class workstation layout: PROJECT | VIEWPORT | INFO. */
.stage {
  position: relative;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  background: #0d0f11;
  --workspace-left-panel: 0px;
  --workspace-right-panel: 0px;
  display: grid;
  grid-template-columns: var(--workspace-left-panel) minmax(0, 1fr) var(--workspace-right-panel);
  grid-template-rows: minmax(0, 1fr);
  transition: grid-template-columns 130ms ease-out;
}
.stage.left-panel-open { --workspace-left-panel: var(--drawer-width); }
.stage.right-panel-open { --workspace-right-panel: var(--drawer-width); }
.stage.right-panel-open.wide-info-panel { --workspace-right-panel: min(390px, 42vw); }
.workspace-panel { min-width: 0; min-height: 0; }
.viewport-shell { position: relative; grid-column: 2; grid-row: 1; width:100%; height:100%; min-width: 0; min-height: 0; overflow: hidden; background: #0d0f11; }
/* EDIT3 · viewport area maximize. Native Fullscreen API is preferred; this
   class is also a complete in-app fallback for webviews that deny it. */
body.viewport-fullscreen #app { grid-template-rows:minmax(0,1fr); }
body.viewport-fullscreen .topbar,
body.viewport-fullscreen #bottomHud,
body.viewport-fullscreen .statusbar { display:none !important; }
body.viewport-fullscreen .stage { grid-template-columns:minmax(0,1fr) !important; --workspace-left-panel:0px; --workspace-right-panel:0px; }
body.viewport-fullscreen .stage > .side-drawer,
body.viewport-fullscreen .stage > .edge-tab { display:none !important; }
body.viewport-fullscreen #viewportPanel { grid-column:1 !important; grid-row:1 !important; }
#viewportPanel:fullscreen { width:100vw; height:100vh; background:#0d0f11; }
#viewportPanel:-webkit-full-screen { width:100vw; height:100vh; background:#0d0f11; }
#viewport { position: absolute; top:29px; bottom:0; left:0; right:0; width:100%; height:calc(100% - 29px); display:block; touch-action:none; outline:none; z-index:0; }
/* LOCAL-17VIEW2A · Three.js owns only this technical-illustration layer.
   Pointer input continues through to the viewport so orbit/pan/pick behavior stays
   single-sourced and CAD Style cannot fork the interaction pipeline. */
.cad-style-viewport {
  position:absolute;
  z-index:1;
  top:29px;
  bottom:0;
  left:0;
  right:0;
  width:100%;
  height:calc(100% - 29px);
  display:block;
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  background:#dad5d0;
}
.cad-style-viewport.active { opacity:1; visibility:visible; }
.viewer-header {
  position: absolute;
  z-index: 7;
  inset: 0 0 auto 0;
  height: 29px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0 7px;
  background: rgba(23,24,26,.97);
  border-bottom: 1px solid #303236;
  user-select: none;
}
.viewer-group { display: flex; align-items: center; gap: 3px; min-width: 0; }
.viewer-center { justify-content: center; }
.viewer-right { justify-content: flex-end; overflow: hidden; }
.viewer-label { margin-right: 3px; color: #65696e; font-size: 11px; font-weight: 700; letter-spacing: .11em; }
.viewer-button {
  height: 20px;
  padding: 0 7px;
  border: 1px solid transparent;
  border-radius: 2px;
  background: transparent;
  color: #929599;
  font-size: 11px;
  font-weight: 650;
  letter-spacing: .055em;
  cursor: pointer;
}
.viewer-button:hover:not(:disabled) { color: #ddd; background: #292b2d; border-color: #393b3e; }
.viewer-button.active { color: #d9d9d9; background: #27282b; border-color: #3a3c3f; }
.viewer-button:disabled { opacity: .35; cursor: default; }
.viewer-select-wrap {
  position:relative;
  display:flex;
  align-items:center;
  min-width:0;
}
.viewer-select-wrap::after {
  content:"▾";
  position:absolute;
  right:6px;
  top:50%;
  transform:translateY(-53%);
  color:#65696e;
  font-size:9px;
  line-height:1;
  pointer-events:none;
}
.viewer-select {
  appearance:none;
  -webkit-appearance:none;
  height:20px;
  min-width:112px;
  padding:0 20px 0 7px;
  border:1px solid transparent;
  border-radius:2px;
  background:transparent;
  color:#929599;
  font-size:11px;
  font-weight:650;
  letter-spacing:.055em;
  cursor:pointer;
}
.viewer-select:hover {
  color:#ddd;
  background:#292b2d;
  border-color:#393b3e;
}
.viewer-select:focus-visible {
  outline:0;
  color:#d9d9d9;
  background:#27282b;
  border-color:#3a3c3f;
}
.viewer-select-wrap:hover::after,
.viewer-select-wrap:focus-within::after { color:#b4b7ba; }
#viewHistoryBack, #viewHistoryForward { width:24px; padding:0; }
.viewer-divider { width: 1px; height: 14px; margin: 0 3px; background: #383a3d; }
.viewer-status { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #777b80; font-size: 11px; letter-spacing: .055em; text-transform: uppercase; }

.empty-state { position:absolute; z-index:4; top:29px; bottom:0; left:0; right:0; display:flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; background: radial-gradient(circle at 50% 48%, rgba(69,69,69,.12), transparent 38%); }
.empty-state > * { pointer-events: auto; }
.empty-state.hidden { display: none; }
.empty-logo { color: #c4c4c4; font-size: 30px; font-weight: 900; letter-spacing: -.05em; }
.empty-state h1 { margin: 6px 0 3px; color: #d0d0d0; font-size: 14px; font-weight: 600; letter-spacing: .03em; }
.empty-state p { margin: 0 0 14px; color: #777b80; font-size: 12px; }
.empty-state small { margin-top: 12px; color: #575b60; font-size: 11px; }
.empty-actions { display: flex; gap: 5px; }
.launch-button { height: 27px; padding: 0 11px; border: 1px solid #3a3c3f; border-radius: 2px; background: #252629; color: #bcbec0; font-size: 11px; font-weight: 700; letter-spacing: .07em; cursor: pointer; }
.launch-button:hover { background: #303135; color: #eee; }
.launch-button.accent { border-color: #69562f; color: #e1bc74; }

/* Docked workstation panels.  Their grid columns own layout; they never cover
   or crop the viewport canvas. */
.side-drawer {
  position: relative;
  z-index: 20;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  background: rgba(29,30,32,.985);
  border-color: #3b3d40;
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.side-left { grid-column:1; grid-row:1; border-right: 1px solid #3b3d40; }
.side-right { grid-column:3; grid-row:1; border-left: 1px solid #3b3d40; }
.side-drawer.open { opacity:1; visibility:visible; pointer-events:auto; }
.drawer-header { height: 29px; display: flex; align-items: center; justify-content: space-between; padding: 0 7px 0 10px; border-bottom: 1px solid #36383b; color: #aaaeb2; font-size: 11px; font-weight: 700; letter-spacing: .11em; }
.drawer-content { height: calc(100% - 29px); overflow: auto; }
.icon-button { width: 22px; height: 20px; padding: 0; border: 1px solid transparent; border-radius: 2px; background: transparent; color: #8b8f94; cursor: pointer; }
.icon-button:hover { color: #ddd; background: #2b2d30; border-color: #3b3d40; }
.edge-tab {
  position: absolute;
  z-index: 16;
  top: 50%;
  width: 23px;
  height: 76px;
  margin-top: -38px;
  padding: 0;
  border: 1px solid #393b3e;
  background: rgba(28,29,31,.94);
  color: #777b80;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .11em;
  writing-mode: vertical-rl;
  cursor: pointer;
}
.edge-tab:hover { color: #d1d1d1; background: #242527; }
.edge-left { left: 0; border-left: 0; }
.edge-right { right: 0; border-right: 0; transform: rotate(180deg); }
.stage.left-panel-open #leftPanelToggle, .stage.right-panel-open #rightPanelToggle { display:none; }

.project-card { display: flex; align-items: center; gap: 8px; margin: 9px; padding: 8px; border: 1px solid #34363a; background: #242527; font-size: 12px; }
.project-card.empty { opacity: .66; }
.project-icon { width: 26px; height: 26px; flex: 0 0 auto; display: grid; place-items: center; background: #303235; color: #d1a553; font-size: 12px; font-weight: 800; }
.project-copy { min-width: 0; }
#projectName { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #c9cbcd; font-weight: 600; }
.muted { color: var(--muted); font-weight: 400; }
.drawer-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 9px; }
.drawer-row-heading { border-top: 1px solid #2f3134; color: #7d8186; font-size: 11px; font-weight: 700; letter-spacing: .1em; }
.drawer-action { width: calc(100% - 18px); height: 27px; margin: 0 9px 7px; border: 1px solid #57482c; border-radius: 2px; background: #2b2924; color: #dab46c; font-size: 11px; font-weight: 700; letter-spacing: .065em; cursor: pointer; }
.drawer-action:hover:not(:disabled) { background: #343027; border-color: #6c5932; }
.drawer-action:disabled { opacity: .35; cursor: default; }
.tree { padding: 0 7px 12px; }
.tree-item { display: flex; align-items: center; justify-content: space-between; gap: 7px; min-height: 27px; padding: 0 7px; border: 1px solid transparent; color: #b6b9bd; font-size: 11px; cursor: pointer; }
.tree-item:hover { background: #282a2c; }
.tree-item.active { border-color: #5d4d2e; background: #302b21; color: #e0d4bc; }
.tree-type { color: #74787c; font-size: 10px; letter-spacing: .07em; }
.info-drawer { padding: 9px; }
.info-lead { padding-bottom: 10px; color: #73777c; font-size: 11px; line-height: 1.45; }
.info-section-title { margin: 8px -9px 9px; padding: 7px 9px; border-top: 1px solid #303236; border-bottom: 1px solid #303236; color: #777b80; font-size: 11px; font-weight: 700; letter-spacing: .1em; }
.property-title { color: #d5d5d5; font-size: 13px; font-weight: 650; word-break: break-word; }
.property-title.small { font-size: 12px; }
.property-role { margin: 3px 0 8px; color: var(--accent); font-size: 11px; font-weight: 700; letter-spacing: .07em; }
.property-row { min-height: 26px; display: grid; grid-template-columns: 70px 1fr; align-items: center; gap: 7px; border-bottom: 1px solid #292b2e; font-size: 11px; }
.property-row span { color: #777b80; }
.property-row strong { text-align: right; color: #b9bbbe; font-weight: 550; overflow-wrap: anywhere; }

/* Bottom Cabinet HUD */
.bottom-hud { position: relative; min-height: 34px; overflow: hidden; background: #1a1b1d; border-top: 1px solid #44464a; }
.hud-resize-handle { position: absolute; z-index: 3; top: -2px; left: 0; right: 0; height: 6px; cursor: ns-resize; }
.hud-resize-handle:hover::after { content: ""; position: absolute; left: 40%; right: 40%; top: 2px; height: 1px; background: #787b7f; }
.hud-header { height: 31px; display: grid; grid-template-columns: 170px minmax(0,1fr) 56px; align-items: stretch; border-bottom: 1px solid #35373a; user-select: none; }
.hud-context { display: flex; align-items: center; gap: 7px; padding: 0 9px; min-width: 0; border-right: 1px solid #303236; }
.hud-kicker { color: #6d7176; font-size: 10px; font-weight: 700; letter-spacing: .11em; white-space: nowrap; }
.hud-context strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #c8cacc; font-size: 11px; font-weight: 650; letter-spacing: .045em; }
.hud-tabs { display: flex; align-items: stretch; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.hud-tabs::-webkit-scrollbar { display: none; }
.hud-tab { position: relative; min-width: max-content; padding: 0 11px; border: 0; border-right: 1px solid #292b2e; background: transparent; color: #777b80; font-size: 11px; font-weight: 650; letter-spacing: .07em; cursor: pointer; }
.hud-tab:hover { color: #c6c8ca; background: #222326; }
.hud-tab.active { color: #e0e0e0; background: #252628; }
.hud-tab.active::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: 0; height: 2px; background: var(--accent); }
.hud-window-controls { display: flex; align-items: center; justify-content: flex-end; gap: 2px; padding-right: 4px; }
.hud-icon { width: 23px; height: 20px; font-size: 12px; }
.hud-body { height: calc(100% - 31px); min-height: 0; overflow: auto; background: #1d1e20; }
.hud-empty { display: flex; align-items: center; height: 100%; padding: 0 10px; color: #666a6f; font-size: 11px; }
.hud-properties { min-height: 58px; display: flex; align-items: stretch; gap: 0; padding: 7px 8px 8px; }
.hud-identity { width: 150px; flex: 0 0 150px; padding: 5px 10px 5px 3px; border-right: 1px solid #35373a; }
.hud-type { display: block; color: var(--accent); font-size: 11px; font-weight: 750; letter-spacing: .09em; }
.hud-name { display: block; margin-top: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #d4d4d4; font-size: 12px; font-weight: 600; }
.hud-control-cluster { min-width: max-content; padding: 3px 12px; border-right: 1px solid #35373a; }
.cluster-title { display: block; margin-bottom: 5px; color: #666a6f; font-size: 10px; font-weight: 700; letter-spacing: .11em; }
.hud-field { display: inline-grid; grid-template-columns: auto 68px 19px; align-items: center; gap: 4px; margin-right: 7px; color: #85898d; font-size: 11px; }
.hud-field > span { color: #8e9296; font-weight: 650; }
.hud-field input { width: 68px; height: 24px; padding: 0 6px; border: 1px solid #3a3c3f; border-radius: 1px; background: var(--field); color: #d3d4d5; text-align: right; font-size: 11px; outline: none; }
.hud-field input:focus { border-color: #806938; box-shadow: inset 0 0 0 1px #5d4d2d; }
.hud-field em { color: #666a6e; font-size: 10px; font-style: normal; }
.hud-value { height: 24px; margin-right: 4px; padding: 0 8px; border: 1px solid #36383b; border-radius: 1px; background: #232426; color: #9b9ea2; font-size: 11px; font-weight: 600; cursor: pointer; }
.hud-value:hover { color: #d2d2d2; background: #292a2d; }
.hud-spacer { flex: 1 1 auto; min-width: 12px; }
.hud-danger { align-self: center; height: 25px; min-width: 105px; padding: 0 9px; border: 1px solid #61383a; border-radius: 1px; background: #332123; color: #d99090; font-size: 11px; font-weight: 700; letter-spacing: .055em; cursor: pointer; }
.hud-danger:hover { background: #402628; color: #efaaaa; }
body.hud-compact { --hud-height: 32px; }
body.hud-compact .hud-body { display: none; }
body.hud-compact .bottom-hud { border-top-color: #37393c; }

.statusbar { display: flex; align-items: center; justify-content: space-between; padding: 0 7px; background: #121315; border-top: 1px solid #292b2e; color: #6e7276; font-size: 11px; letter-spacing: .02em; }
.statusbar.error { color: var(--danger); }

@media (max-width: 1100px) {
  .topbar { grid-template-columns: 160px minmax(0,1fr) auto; }
  .brand-subtitle { display: none; }
  .workspace-tab { padding: 0 8px; font-size: 10px; }
  .connection { display: none; }
  .future-cluster { display: none; }
}
@media (max-width: 760px) {
  .compact-brand { display: none; }
  .topbar { grid-template-columns: minmax(0,1fr) auto; }
  .workspace-tabs { grid-column: 1; }
  .workspace-tab { padding: 0 6px; }
  .top-actions { grid-column: 2; }
  .hud-header { grid-template-columns: 110px minmax(0,1fr) 56px; }
  .hud-control-cluster { padding-left: 7px; padding-right: 7px; }
  .hud-field { grid-template-columns: auto 55px 17px; margin-right: 3px; }
  .hud-field input { width: 55px; }
}

/* LOCAL-7 · shared Interior / Fronts HUD */
.hud-select {
  height: 24px;
  min-width: 190px;
  max-width: 270px;
  margin-right: 7px;
  padding: 0 23px 0 7px;
  border: 1px solid #3a3c3f;
  border-radius: 1px;
  background: #232426;
  color: #c9cbcd;
  font-size: 11px;
  font-weight: 600;
  outline: none;
}
.hud-select:focus { border-color: #806938; box-shadow: inset 0 0 0 1px #5d4d2d; }
.compact-select { min-width: 116px; max-width: 145px; }
.hud-readout {
  display: inline-flex;
  min-height: 24px;
  align-items: center;
  padding: 0 4px;
  color: #8f9397;
  font-size: 11px;
  white-space: nowrap;
}
.hud-field.compact { grid-template-columns: auto 54px 19px; margin-right: 5px; }
.hud-field.compact input { width: 54px; }
.hud-value.accent-value { border-color: #65532e; background: #2c2922; color: #ddb56a; }
.hud-value.accent-value:hover:not(:disabled) { border-color: #806938; background: #353025; color: #f0c87e; }
.hud-value:disabled, .hud-danger:disabled { opacity: .34; cursor: default; }
.subtle-danger { border-color: #514044; background: #2a2224; color: #b97e82; }
.opening-cluster { min-width: 330px; }
.reveal-cluster { min-width: 430px; }

/* LOCAL-8 · Blender Cabinet HUD parity shell */
.hud-subtabs {
  height: 25px;
  display: flex;
  align-items: stretch;
  padding-left: 170px;
  background: #18191b;
  border-bottom: 1px solid #303236;
  user-select: none;
}
.hud-subtab-set { display: flex; align-items: stretch; min-width: 0; }
.hud-subtab {
  position: relative;
  min-width: 72px;
  padding: 0 11px;
  border: 0;
  border-right: 1px solid #27292c;
  background: transparent;
  color: #74787d;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  cursor: pointer;
}
.hud-subtab:hover { color: #c8cacc; background: #212225; }
.hud-subtab.active { color: #dadbdd; background: #242528; }
.hud-subtab.active::after { content:""; position:absolute; left:10px; right:10px; bottom:0; height:1px; background:var(--accent); }
.bottom-hud .hud-body { height: calc(100% - 56px); }
body.hud-compact .hud-subtabs { display: none; }
body.hud-compact .bottom-hud .hud-body { display: none; }
.hud-primary-tabs .hud-tab { min-width: 92px; }
.hud-check {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-right: 8px;
  color: #969a9e;
  font-size: 10px;
  font-weight: 650;
  letter-spacing: .045em;
  white-space: nowrap;
}
.hud-check input { width: 13px; height: 13px; accent-color: var(--accent); }
.hud-button-row { display: flex; gap: 2px; }
.standard-width { min-width: 38px; padding: 0 6px; }
.hud-notice {
  flex: 0 0 auto;
  align-self: center;
  margin: 4px 8px 4px 0;
  padding: 7px 9px;
  border: 1px solid #49402c;
  background: #29251d;
  color: #b69a65;
  font-size: 11px;
  white-space: nowrap;
}
.hud-advanced-cluster { background: rgba(255,255,255,.012); }
.hud-properties { overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; scrollbar-color: #3a3c3f transparent; }
.hud-properties::-webkit-scrollbar { height: 5px; }
.hud-properties::-webkit-scrollbar-thumb { background: #3a3c3f; }
.hud-select:disabled, .hud-field input:disabled, .hud-check input:disabled { opacity: .42; }
@media (max-width: 760px) {
  .hud-subtabs { padding-left: 110px; }
  .hud-subtab { min-width: 60px; padding: 0 7px; font-size: 10px; }
}

/* LOCAL-8F · Flame-inspired Editing Panel correction
   Flame's lower Editing Panel is a dense two-dimensional control surface,
   not a single horizontally scrolling ribbon. Keep the viewport dominant,
   but let the HUD use its vertical area productively. */
:root { --hud-height: 260px; }

.bottom-hud {
  background: #17181a;
  border-top-color: #484a4d;
}
.hud-header {
  background: #191a1c;
  border-bottom-color: #303236;
}
.hud-subtabs {
  background: #151618;
  border-bottom-color: #2d2f32;
}
.bottom-hud .hud-body {
  background: #1a1b1d;
  overflow: hidden;
}

/* The actual Editing Panel surface. */
.hud-properties {
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-flow: row dense;
  grid-auto-rows: min-content;
  align-content: start;
  gap: 6px;
  padding: 8px 9px 10px;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: #44474a #17181a;
}
.hud-properties::-webkit-scrollbar { width: 6px; height: 6px; }
.hud-properties::-webkit-scrollbar-track { background: #17181a; }
.hud-properties::-webkit-scrollbar-thumb { background: #44474a; }

/* Flame-like parameter banks: flat, compact, multi-row. */
.hud-control-cluster {
  grid-column: span 3;
  min-width: 0;
  min-height: 70px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  align-content: flex-start;
  gap: 5px 7px;
  padding: 6px 8px 8px;
  border: 1px solid #303236;
  border-right: 1px solid #303236;
  background: #1d1e20;
}
.hud-control-cluster:hover { border-color: #383a3d; }
.cluster-title {
  flex: 0 0 100%;
  min-height: 17px;
  margin: 0 0 2px;
  padding-bottom: 4px;
  border-bottom: 1px solid #2b2d30;
  color: #777b80;
  line-height: 12px;
}
.hud-advanced-cluster { background: #1b1c1e; }

/* Selection/identity becomes its own compact bank. */
.hud-identity {
  grid-column: span 2;
  width: auto;
  min-width: 0;
  min-height: 70px;
  padding: 8px 9px;
  border: 1px solid #35373a;
  background: #202123;
}
.hud-type { margin-bottom: 7px; }
.hud-name { white-space: normal; line-height: 1.35; }

/* Let fields form short rows inside each bank instead of forcing one line. */
.hud-field,
.hud-field.compact {
  flex: 0 0 auto;
  grid-template-columns: auto 62px 18px;
  margin: 0;
}
.hud-field input,
.hud-field.compact input { width: 62px; height: 22px; }
.hud-select {
  min-width: 126px;
  max-width: min(100%, 250px);
  height: 22px;
  margin: 0;
}
.compact-select { min-width: 105px; max-width: 150px; }
.hud-value { height: 22px; margin: 0; padding: 0 7px; }
.hud-check { min-height: 22px; margin: 0; }
.hud-readout { min-height: 22px; }
.hud-button-row { flex-wrap: wrap; gap: 3px; }
.standard-width { min-width: 36px; }

/* Larger workflows get more width, still without horizontal scrolling. */
.opening-cluster { grid-column: span 4; min-width: 0; }
.reveal-cluster { grid-column: span 5; min-width: 0; }
.hud-notice {
  grid-column: span 3;
  align-self: stretch;
  margin: 0;
  white-space: normal;
  line-height: 1.45;
}
.hud-danger {
  grid-column: span 2;
  align-self: start;
  min-width: 0;
  width: 100%;
  height: 28px;
}
.hud-spacer { display: none; }

/* More visibly separate the Editing Panel's two navigation levels. */
.hud-primary-tabs .hud-tab { min-width: 102px; }
.hud-tab.active,
.hud-subtab.active { background: #222326; }
.hud-tab.active::after { height: 2px; }
.hud-subtab.active::after { height: 2px; }

/* Responsive workstation density. */
@media (max-width: 1550px) {
  .hud-control-cluster { grid-column: span 4; }
  .hud-identity { grid-column: span 3; }
  .opening-cluster { grid-column: span 6; }
  .reveal-cluster { grid-column: span 6; }
  .hud-notice { grid-column: span 4; }
}
@media (max-width: 1120px) {
  .hud-control-cluster { grid-column: span 6; }
  .hud-identity { grid-column: span 4; }
  .opening-cluster,
  .reveal-cluster { grid-column: span 12; }
  .hud-notice { grid-column: span 6; }
  .hud-danger { grid-column: span 4; }
}
@media (max-width: 760px) {
  .hud-properties { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .hud-control-cluster,
  .hud-identity,
  .opening-cluster,
  .reveal-cluster,
  .hud-notice,
  .hud-danger { grid-column: 1 / -1; }
}


/* LOCAL-17ROOM9A2 · Side-panel bank consistency
   Keep SIDE PANELS on the same visual hierarchy as every other HUD bank.
   Left/right options are paired in a deterministic two-column grid; there is
   intentionally no second oversized heading inside the bank. */
.side-panel-grid {
  flex: 0 0 100%;
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 10px;
  align-items: center;
}
.side-panel-grid .hud-field,
.side-panel-grid .hud-check { margin: 0; min-width: 0; }
.side-panel-thickness { grid-column: 1 / -1; justify-self: start; }

/* LOCAL-9 · Module action banks */
.hud-wide-cluster { grid-column: span 6; }
.hud-text-input {
  width: 150px; height: 22px; box-sizing: border-box;
  border: 1px solid #3a3c40; background: #121315; color: #d6d8da;
  padding: 0 7px; font: inherit; font-size: 11px; outline: none;
}
.hud-text-input:focus { border-color: var(--accent); }
@media (max-width: 1550px) { .hud-wide-cluster { grid-column: span 8; } }
@media (max-width: 1120px) { .hud-wide-cluster { grid-column: span 12; } }

/* LOCAL-10 · Openings parity banks */
.drawer-row-cluster { grid-column: span 6; }
.drawer-row-cluster .hud-field input[type="text"] { width: 110px; text-align: left; }
@media (max-width: 1120px) { .drawer-row-cluster { grid-column: span 12; } }

/* LOCAL-14 · Manufacturing workspace foundation */
.viewport-shell.manufacture-mode #viewport { left:0; right:0; width:100%; }
.viewport-shell.manufacture-mode .empty-state { left:0; right:0; }
.manufacture-workspace {
  position: absolute;
  z-index: 6;
  top: 29px;
  right: 0;
  bottom: 0;
  width: 48%;
  display: grid;
  grid-template-rows: 31px minmax(0, 1fr);
  border-left: 1px solid #3b3d40;
  background: #17181a;
  box-shadow: -8px 0 22px rgba(0,0,0,.16);
}
.manufacture-toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 7px;
  border-bottom: 1px solid #34363a;
  background: #1b1c1e;
  user-select: none;
}
.manufacture-title { display:flex; align-items:baseline; gap:7px; min-width: 125px; }
.manufacture-title strong { color:#c9cbcd; font-size: 11px; letter-spacing:.09em; }
.manufacture-title span { color:var(--accent); font-size: 10px; font-weight:700; letter-spacing:.08em; }
.manufacture-select { height:21px; min-width:120px; padding:0 20px 0 6px; border:1px solid #383a3d; background:#232426; color:#b7b9bc; font-size: 10px; font-weight:650; }
.manufacture-spacer { flex:1; }
.manufacture-summary-line { color:#74787d; font-size: 10px; white-space:nowrap; }
.manufacture-body { min-height:0; display:grid; grid-template-rows:minmax(0,1fr) 132px; }
.manufacture-table-wrap { position:relative; min-height:0; overflow:auto; background:#141517; }
.manufacture-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size: 10px; }
.manufacture-table th { position:sticky; top:0; z-index:2; height:24px; padding:0 6px; border-right:1px solid #2c2e31; border-bottom:1px solid #3b3d40; background:#1d1e20; color:#777b80; text-align:left; font-size: 10px; letter-spacing:.08em; }
.manufacture-table td { height:25px; padding:0 6px; border-right:1px solid #25272a; border-bottom:1px solid #25272a; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#a9acaf; }
.manufacture-table tbody tr { cursor:pointer; }
.manufacture-table tbody tr:hover { background:#222326; }
.manufacture-table tbody tr.active { background:#302b21; outline:1px solid #5d4d2e; outline-offset:-1px; }
.manufacture-table th:nth-child(1), .manufacture-table td:nth-child(1) { width:38px; text-align:right; }
.manufacture-table th:nth-child(2), .manufacture-table td:nth-child(2) { width:17%; }
.manufacture-table th:nth-child(3), .manufacture-table td:nth-child(3) { width:14%; }
.manufacture-table th:nth-child(4), .manufacture-table td:nth-child(4), .manufacture-table th:nth-child(5), .manufacture-table td:nth-child(5) { width:13%; }
.manufacture-table th:nth-child(6), .manufacture-table td:nth-child(6) { width:42px; text-align:right; }
.manufacture-table th:nth-child(7), .manufacture-table td:nth-child(7) { width:74px; }
.manufacture-table th:nth-child(8), .manufacture-table td:nth-child(8) { width:48px; }
.manufacture-empty { position:absolute; inset:24px 0 0; display:grid; place-items:center; color:#606469; font-size: 11px; pointer-events:none; }
.manufacture-lower { min-height:0; display:grid; grid-template-columns:1.25fr .75fr; gap:1px; border-top:1px solid #383a3d; background:#333538; }
.manufacture-card { min-width:0; overflow:auto; background:#1b1c1e; }
.manufacture-card header { position:sticky; top:0; min-height:25px; display:flex; align-items:center; gap:6px; padding:0 8px; border-bottom:1px solid #2f3134; background:#1d1e20; color:#74787d; font-size: 10px; font-weight:700; letter-spacing:.09em; }
.estimate-badge { padding:2px 4px; border:1px solid #66542f; color:#cfaa64; font-size: 10px; }
.manufacture-stock { display:grid; grid-template-columns:1fr; }
.stock-row { min-height:25px; display:grid; grid-template-columns:minmax(90px,1fr) 55px 48px 58px; align-items:center; gap:5px; padding:0 8px; border-bottom:1px solid #292b2e; font-size: 10px; }
.stock-row strong { color:#b9bbbe; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.stock-row span { color:#75797e; text-align:right; }
.manufacture-cost { display:grid; grid-template-columns:1fr auto; gap:4px 12px; padding:8px; font-size: 10px; }
.manufacture-cost span { color:#74787d; }
.manufacture-cost strong { color:#bfc1c3; text-align:right; }
.manufacture-cost .cost-total { color:#e0b86c; font-size: 12px; border-top:1px solid #3a3c3f; padding-top:5px; margin-top:3px; }
.hud-field.wide { grid-template-columns:auto 120px; }
.hud-field.wide input { width:120px; text-align:left; }
@media (max-width: 1100px) {
  .viewport-shell.manufacture-mode #viewport { left:0; right:0; width:100%; }
  .viewport-shell.manufacture-mode .empty-state { left:0; right:0; }
  .manufacture-workspace { width:58%; }
}


/* LOCAL-15 · Manufacturing lives in the collapsible INFO drawer; viewer stays dominant. */
.viewport-shell.manufacture-mode #viewport { left:0 !important; right:0 !important; width:100% !important; }
.viewport-shell.manufacture-mode .empty-state { left:0 !important; right:0 !important; }
.side-right.manufacturing-context { width:100%; }
.info-manufacture-head { display:flex; align-items:center; gap:6px; min-height:27px; }
.info-manufacture-head strong { min-width:0; flex:1; color:#b8bbbe; font-size: 11px; font-weight:600; }
.mini-info-button { height:20px; padding:0 6px; border:1px solid #3a3c3f; background:#242527; color:#92969a; font-size: 10px; font-weight:700; letter-spacing:.07em; cursor:pointer; }
.mini-info-button:hover { color:#ddd; background:#2c2e30; }
.info-tabs { display:grid; grid-template-columns:repeat(4,1fr); margin:4px 0 7px; border:1px solid #34363a; }
.info-tab { height:23px; padding:0; border:0; border-right:1px solid #34363a; background:#1c1d1f; color:#70747a; font-size: 10px; font-weight:700; letter-spacing:.08em; cursor:pointer; }
.info-tab:last-child { border-right:0; }
.info-tab:hover { color:#bbb; background:#252628; }
.info-tab.active { color:#e1b96d; background:#29261f; }
.info-list { display:flex; flex-direction:column; gap:1px; }
.info-list-row { min-height:31px; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; align-items:center; padding:5px 6px; border:1px solid transparent; border-bottom-color:#292b2e; background:#1d1e20; cursor:pointer; }
.info-list-row:hover { background:#252628; }
.info-list-row.active { border-color:#5d4d2e; background:#302b21; }
.info-list-main { min-width:0; }
.info-list-title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b9bbbe; font-size: 10px; font-weight:600; }
.info-list-meta { margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#666b70; font-size: 10px; }
.info-list-value { color:#92969a; font-size: 10px; text-align:right; white-space:nowrap; }
.info-inline-summary { padding:5px 6px; border-bottom:1px solid #303236; color:#777c81; font-size: 10px; }
.info-cost-grid { display:grid; grid-template-columns:1fr auto; gap:5px 9px; padding:5px 2px; font-size: 10px; }
.info-cost-grid span { color:#74787d; }
.info-cost-grid strong { color:#bfc1c3; text-align:right; }
.info-cost-grid .cost-total { color:#e0b86c; border-top:1px solid #3a3c3f; padding-top:5px; margin-top:3px; font-size: 11px; }
.hud-control-cluster[data-hud-bank="EDGE_BANDING"] .hud-readout { grid-column:span 2; }

/* LOCAL-16S · Nesting Studio
   NESTING is a dedicated production environment, not another Cabinet HUD page.
   Keep the global workspace strip/status bar, then give the remaining screen to
   a browser + sheet canvas + inspector + production footer. */
.info-cost-card { border-bottom:1px solid #33363a; padding-bottom:8px; margin-bottom:8px; }
.info-cost-card-head { display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:3px 2px 5px; }
.info-cost-card-head span { color:#777c82; font-size: 10px; font-weight:700; letter-spacing:.08em; }
.info-cost-card-head strong { color:#e0b86c; font-size:16px; font-weight:600; }
.info-cost-grid.compact { padding-top:2px; }

body.nesting-active #app { grid-template-rows:42px minmax(0,1fr) 23px; }
body.nesting-active #bottomHud,
body.nesting-active #leftPanel,
body.nesting-active #rightPanel,
body.nesting-active #leftPanelToggle,
body.nesting-active #rightPanelToggle,
body.nesting-active .viewer-header,
body.nesting-active #viewport,
body.nesting-active #cadStyleViewport,
body.nesting-active #emptyState { display:none !important; }
body.nesting-active .viewport-shell { inset:0; }

.nesting-studio {
  position:absolute;
  inset:0;
  z-index:30;
  min-width:0;
  min-height:0;
  display:grid;
  grid-template-rows:38px minmax(0,1fr) 48px;
  background:#0d0f11;
  color:#bec1c4;
}
.nesting-studio[hidden] { display:none; }

/* Command bar */
.nest-studio-commandbar {
  min-width:0;
  display:grid;
  grid-template-columns:190px auto minmax(120px,1fr) auto;
  align-items:center;
  gap:8px;
  padding:0 8px;
  border-bottom:1px solid #373a3e;
  background:#191b1e;
  box-shadow:0 1px 0 rgba(255,255,255,.018) inset;
  user-select:none;
}
.nest-studio-title { min-width:0; display:flex; align-items:center; gap:8px; }
.nest-studio-mark { width:22px; height:22px; display:grid; place-items:center; border:1px solid #6a5730; background:#2a271f; color:#e0b86c; font-size: 11px; font-weight:900; }
.nest-studio-title > div { min-width:0; display:flex; flex-direction:column; gap:2px; }
.nest-studio-title strong { color:#d9dbdd; font-size: 11px; font-weight:750; letter-spacing:.11em; }
.nest-studio-title small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#73787e; font-size: 10px; font-weight:600; letter-spacing:.035em; }
.nest-command-group { display:flex; align-items:center; gap:4px; }
.nest-command-field { height:24px; display:flex; align-items:center; gap:5px; padding:0 5px; border:1px solid #34373b; background:#202226; }
.nest-command-field span { color:#72777c; font-size: 10px; font-weight:700; letter-spacing:.07em; }
.nest-command-field select { height:20px; max-width:125px; border:0; outline:0; background:#202226; color:#b6b9bc; font-size: 10px; font-weight:650; }
.nest-command-button { height:24px; padding:0 8px; border:1px solid #3b3e42; border-radius:1px; background:#222428; color:#979ca1; font-size: 10px; font-weight:700; letter-spacing:.055em; cursor:pointer; }
.nest-command-button:hover { color:#e2e3e4; background:#2b2e32; border-color:#4d5156; }
.nest-command-button.accent { border-color:#6a5730; background:#2a271f; color:#deb66d; }
.nest-command-button.accent:hover { background:#332e22; color:#f0ca82; }

.nesting-sheet-tabs { min-width:0; display:flex; align-items:center; gap:3px; overflow-x:auto; scrollbar-width:none; }
.nesting-sheet-tabs::-webkit-scrollbar { display:none; }
.nesting-sheet-tab {
  position:relative;
  height:23px;
  min-width:29px;
  flex:0 0 auto;
  padding:0 7px;
  border:1px solid #34373b;
  border-radius:1px;
  background:#202226;
  color:#777c81;
  font-size: 10px;
  font-weight:700;
  cursor:pointer;
}
.nesting-sheet-tab:hover { color:#c7cacd; background:#292c30; border-color:#484c51; }
.nesting-sheet-tab.active { color:#e4bd73; border-color:#6a5730; background:#2b2821; }
.nesting-sheet-tab.active::after { content:""; position:absolute; left:5px; right:5px; bottom:0; height:1px; background:#d6a449; }
.nesting-view-actions { display:flex; gap:3px; }
.nesting-view-button { height:23px; min-width:25px; padding:0 6px; border:1px solid #383b3f; border-radius:1px; background:#222428; color:#91969b; font-size: 11px; font-weight:750; cursor:pointer; }
.nesting-view-button.wide { min-width:40px; font-size: 10px; letter-spacing:.07em; }
.nesting-view-button:hover { color:#dedede; background:#2b2e32; border-color:#4a4e53; }

/* Three-pane production surface */
.nest-studio-body { min-width:0; min-height:0; display:grid; grid-template-columns:205px minmax(420px,1fr) 275px; background:#24272a; gap:1px; }
.nest-browser,
.nest-inspector { min-width:0; min-height:0; display:flex; flex-direction:column; background:#17191c; overflow:hidden; }
.nest-pane-header { height:31px; flex:0 0 31px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:0 9px; border-bottom:1px solid #303338; background:#1c1e21; }
.nest-pane-header strong { color:#aeb2b6; font-size: 10px; font-weight:750; letter-spacing:.1em; }
.nest-pane-header span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#656a70; font-size: 10px; font-weight:650; letter-spacing:.06em; }

.nest-browser-section { flex:0 0 auto; min-height:0; border-bottom:1px solid #2c2f33; }
.nest-browser-section.grow { flex:1 1 auto; display:flex; flex-direction:column; overflow:hidden; }
.nest-browser-section > header { height:25px; display:flex; align-items:center; justify-content:space-between; padding:0 9px; background:#191b1e; color:#686d72; font-size: 10px; font-weight:700; letter-spacing:.08em; }
.nest-browser-section > header strong { color:#8f9499; font-size: 10px; }
.nest-browser-list { max-height:220px; overflow:auto; padding:3px; scrollbar-width:thin; scrollbar-color:#3d4145 #17191c; }
.nest-browser-section.grow .nest-browser-list { max-height:none; flex:1; }
.nest-browser-list.compact { max-height:145px; }
.nest-browser-item { width:100%; min-height:36px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:6px; padding:5px 6px; border:1px solid transparent; border-bottom-color:#25282c; background:#17191c; text-align:left; cursor:pointer; }
.nest-browser-item:hover { background:#202327; border-color:#30343a; }
.nest-browser-item.active { border-color:#604f2d; background:#2c2820; }
.nest-browser-item .main { min-width:0; }
.nest-browser-item .title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b8bbbe; font-size: 10px; font-weight:650; }
.nest-browser-item .meta { margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#666b70; font-size: 10px; }
.nest-browser-item .value { color:#91969b; font-size: 10px; font-weight:650; text-align:right; white-space:nowrap; }
.nest-browser-item.warning .value { color:#d58c65; }
.nest-browser-empty { padding:9px; color:#5e6368; font-size: 10px; line-height:1.45; }

/* Sheet canvas */
.nest-sheet-workarea { position:relative; min-width:0; min-height:0; overflow:hidden; background:#0c0e10; }
.nesting-sheet-head { position:absolute; z-index:4; top:9px; left:10px; right:10px; height:38px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 10px; border:1px solid rgba(58,62,66,.86); background:rgba(24,26,29,.94); box-shadow:0 7px 20px rgba(0,0,0,.2); pointer-events:none; }
.nesting-sheet-head > div:first-child { min-width:0; display:flex; align-items:baseline; gap:9px; }
.nesting-sheet-number { color:#d3a64f; font-size: 10px; font-weight:800; letter-spacing:.12em; }
.nesting-sheet-head strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#c8cbce; font-size: 11px; font-weight:650; letter-spacing:.045em; }
.nesting-sheet-meta { display:flex; align-items:center; gap:11px; white-space:nowrap; color:#777c81; font-size: 10px; }
.nesting-sheet-meta span + span::before,
.nesting-sheet-meta strong::before { content:"·"; margin-right:11px; color:#484c50; }
.nesting-sheet-meta strong { color:#c5c8ca; font-size: 10px; font-weight:700; }
.nesting-canvas { position:absolute; inset:56px 10px 34px; min-width:0; min-height:0; overflow:hidden; border:1px solid #25292d; cursor:grab; background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),#090b0d; background-size:24px 24px; box-shadow:inset 0 0 0 1px rgba(0,0,0,.28); touch-action:none; }
.nesting-canvas.panning { cursor:grabbing; }
.nesting-sheet-svg { width:100%; height:100%; display:block; overflow:visible; transform-origin:50% 50%; will-change:transform; }
.nesting-corner-legend { position:absolute; right:8px; bottom:7px; display:flex; align-items:center; gap:5px; padding:4px 6px; border:1px solid rgba(57,60,64,.8); background:rgba(18,20,23,.9); color:#60656a; font-size: 10px; font-weight:650; letter-spacing:.05em; pointer-events:none; }
.legend-chip { width:9px; height:6px; display:inline-block; border:1px solid #60656a; background:#555b60; }
.legend-chip.selected { border-color:#d6a449; }
.legend-divider { width:1px; height:9px; margin:0 3px; background:#34373a; }
.nesting-selection-strip { position:absolute; z-index:4; left:10px; right:10px; bottom:6px; min-height:23px; display:flex; align-items:center; gap:9px; padding:0 8px; overflow:hidden; border:1px solid #34373b; background:rgba(24,26,29,.96); color:#8a8f94; font-size: 10px; white-space:nowrap; }
.nesting-selection-strip strong { color:#d7dadd; font-size: 10px; font-weight:650; }
.nesting-selection-strip .accent { color:#d8ae5c; }
.nesting-empty { position:absolute; z-index:5; inset:56px 10px 10px; display:grid; place-items:center; color:#62676c; font-size: 11px; letter-spacing:.06em; pointer-events:none; background:#0b0d0f; border:1px solid #25282c; }

/* Inspector */
.nest-inspector-scroll { min-height:0; overflow:auto; padding:7px; scrollbar-width:thin; scrollbar-color:#3d4145 #17191c; }
.nest-inspector-card { margin-bottom:7px; padding:8px; border:1px solid #303338; background:#1b1d20; }
.nest-card-kicker { display:block; margin-bottom:6px; color:#686d72; font-size: 10px; font-weight:750; letter-spacing:.1em; }
.nest-inspector-card > strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#d0d2d4; font-size: 11px; font-weight:650; }
.nest-inspector-card > small { display:block; margin-top:3px; color:#6f7479; font-size: 10px; line-height:1.4; }
.nest-inspector-grid { display:grid; grid-template-columns:1fr auto; gap:0; margin-top:7px; border-top:1px solid #2c2f33; }
.nest-inspector-grid span,
.nest-inspector-grid strong { min-height:23px; display:flex; align-items:center; border-bottom:1px solid #292c30; font-size: 10px; }
.nest-inspector-grid span { color:#70757a; }
.nest-inspector-grid strong { justify-content:flex-end; color:#b6b9bc; font-weight:650; text-align:right; }
.nest-inspector-list { display:flex; flex-direction:column; gap:1px; color:#70757a; font-size: 10px; }
.nest-inspector-op { min-height:27px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:6px; padding:4px 0; border-bottom:1px solid #292c30; }
.nest-inspector-op strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b3b6b9; font-size: 10px; }
.nest-inspector-op span { color:#767b80; font-size: 10px; text-align:right; white-space:nowrap; }

/* Bottom production strip */
.nest-studio-footer { min-width:0; display:flex; align-items:center; gap:5px; padding:0 7px; border-top:1px solid #3a3d41; background:#17191c; overflow-x:auto; scrollbar-width:none; }
.nest-studio-footer::-webkit-scrollbar { display:none; }
.nest-stat { min-width:70px; height:32px; display:flex; flex-direction:column; justify-content:center; padding:0 7px; border-right:1px solid #2e3135; }
.nest-stat span { color:#63686d; font-size: 10px; font-weight:700; letter-spacing:.08em; }
.nest-stat strong { margin-top:2px; color:#c4c7ca; font-size: 11px; font-weight:650; }
.nest-stat:nth-child(3) strong { color:#d8ae5c; }
.nest-footer-divider { width:1px; height:28px; flex:0 0 1px; margin:0 3px; background:#34373b; }
.nest-footer-field { height:28px; display:grid; grid-template-columns:auto 54px 18px; align-items:center; gap:4px; padding:0 5px; border:1px solid #303338; background:#1c1e21; color:#777c81; font-size: 10px; }
.nest-footer-field input { width:54px; height:20px; padding:0 4px; border:1px solid #3a3d41; background:#101214; color:#c4c7ca; text-align:right; font-size: 10px; }
.nest-footer-field em { color:#60656a; font-size: 10px; font-style:normal; }
.nest-footer-check { height:28px; display:flex; align-items:center; gap:5px; padding:0 6px; border:1px solid #303338; background:#1c1e21; color:#7b8085; font-size: 10px; font-weight:650; white-space:nowrap; }
.nest-footer-select { height:28px; min-width:118px; padding:0 6px; border:1px solid #303338; background:#1c1e21; color:#a5a9ad; font-size: 10px; }
.nest-footer-summary { margin-left:auto; min-width:max-content; color:#70757a; font-size: 10px; white-space:nowrap; }

/* SVG production drawing language */
.nesting-sheet-shadow { fill:rgba(0,0,0,.48); }
.nesting-sheet-outline { fill:#c8c4b8; stroke:#777469; stroke-width:2; vector-effect:non-scaling-stroke; }
.nesting-sheet-margin { fill:none; stroke:#8e8a7e; stroke-width:1; stroke-dasharray:8 6; opacity:.82; vector-effect:non-scaling-stroke; }
.nesting-sheet-dim-line { stroke:#71767c; stroke-width:1; vector-effect:non-scaling-stroke; }
.nesting-sheet-dim-text { fill:#7c8187; font-weight:650; letter-spacing:.03em; }
.nesting-sheet-origin { stroke:#595e63; stroke-width:1; vector-effect:non-scaling-stroke; }
.nesting-part { cursor:pointer; }
.nesting-part-rect { fill:#555b60; stroke:#181b1e; stroke-width:1.25; vector-effect:non-scaling-stroke; }
.nesting-part:nth-of-type(3n+1) .nesting-part-rect { fill:#5b6065; }
.nesting-part:nth-of-type(3n+2) .nesting-part-rect { fill:#50565b; }
.nesting-part:hover .nesting-part-rect { fill:#666c71; stroke:#a1a5aa; stroke-width:1.8; }
.nesting-part-rect.selected { fill:#645f54; stroke:#d6a449; stroke-width:3; }
.nesting-part-label { pointer-events:none; fill:#e2e4e6; font-weight:650; letter-spacing:.015em; }
.nesting-part-size { pointer-events:none; fill:#afb3b7; font-weight:550; }
.nesting-part-code { pointer-events:none; fill:#202326; opacity:.96; }
.nesting-part-code-text { pointer-events:none; fill:#d8dadd; font-weight:800; }
.nesting-part-index { pointer-events:none; fill:#22262a; opacity:.9; }
.nesting-part-index-text { pointer-events:none; fill:#d4d7d9; font-weight:750; }
.nesting-part-grain { pointer-events:none; stroke:#b2a176; stroke-width:1.1; opacity:.58; vector-effect:non-scaling-stroke; }

@media (max-width:1180px) {
  .nest-studio-commandbar { grid-template-columns:160px auto minmax(80px,1fr) auto; }
  .nest-studio-body { grid-template-columns:175px minmax(360px,1fr) 225px; }
  .nesting-sheet-meta span:nth-child(2) { display:none; }
  .nest-stat { min-width:60px; }
}
@media (max-width:850px) {
  .nest-studio-body { grid-template-columns:150px minmax(320px,1fr); }
  .nest-inspector { display:none; }
  .nest-command-field { display:none; }
  .nest-studio-commandbar { grid-template-columns:150px auto minmax(50px,1fr) auto; }
}


/* LOCAL-16U · Global readability + Blender-style integrated numeric sliders
   -------------------------------------------------------------------------
   Flame is used as a density/workstation reference, not as a pixel-for-pixel
   copy. The app now has one readable type floor and one reusable numeric-field
   treatment so later workspaces inherit the same interaction automatically. */
:root {
  --ui-font-micro: 10px;
  --ui-font-small: 11px;
  --ui-font-base: 12px;
  --ui-font-title: 13px;
  --ui-control-height: 28px;
  --ui-slider-width: 158px;
  --ui-slider-width-compact: 146px;
  --drawer-width: 300px;
  --hud-height: 292px;
}

/* Keep small workstation text readable instead of shrinking into 6–8 px. */
.statusbar,
.connection,
.viewer-status,
.viewer-label,
.drawer-header,
.drawer-row-heading,
.tree-type,
.info-section-title,
.hud-kicker,
.cluster-title,
.nest-card-kicker,
.nest-pane-header,
.nest-browser-section-title,
.nest-stat span,
.nesting-sheet-number,
.nest-command-kicker { font-size: var(--ui-font-micro); }

.workspace-tab,
.chrome-button,
.viewer-button,
.edge-tab,
.tree-item,
.property-row,
.info-lead,
.hud-tab,
.hud-subtab,
.hud-check,
.hud-readout,
.hud-value,
.hud-select,
.nest-command-button,
.nest-footer-field,
.nest-footer-check,
.nest-footer-select,
.nest-browser-item,
.nest-inspector-grid,
.nest-inspector-list,
.nest-footer-summary { font-size: var(--ui-font-small); }

.brand-title,
.project-card,
.property-title.small,
.hud-name,
.nest-inspector-card strong,
.nesting-sheet-meta,
.nesting-selection-strip { font-size: var(--ui-font-base); }

/* Slightly more breathing room for the bigger type without making the UI huge. */
.chrome-button { min-height: 27px; }
.viewer-button { min-height: 22px; }
.drawer-header { height: 32px; }
.drawer-content { height: calc(100% - 32px); }
.property-row { min-height: 30px; grid-template-columns: 86px 1fr; }
.hud-header { height: 35px; }
.hud-subtabs { height: 30px; }
.bottom-hud .hud-body { height: calc(100% - 65px); }
.hud-tab { padding-left: 14px; padding-right: 14px; }
.hud-subtab { min-width: 82px; padding-left: 13px; padding-right: 13px; }
.hud-control-cluster { min-height: 82px; gap: 7px 8px; padding: 8px 9px 9px; }
.cluster-title { min-height: 20px; line-height: 14px; padding-bottom: 5px; }
.bottom-hud .hud-select,
.bottom-hud .hud-value,
.bottom-hud .hud-check,
.bottom-hud .hud-readout { min-height: var(--ui-control-height); }
.bottom-hud .hud-select,
.bottom-hud .hud-value { height: var(--ui-control-height); }

/* Integrated numeric field — label, value and unit live in one draggable bar. */
.bottom-hud .hud-field.value-slider,
.bottom-hud .hud-field.compact.value-slider {
  --slider-fill: 0%;
  position: relative;
  isolation: isolate;
  width: var(--ui-slider-width);
  height: var(--ui-control-height);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0 7px 0 8px;
  border: 1px solid #3b3d40;
  border-radius: 2px;
  overflow: hidden;
  background: #222326;
  color: #c6c8ca;
  cursor: ew-resize;
  user-select: none;
}
.bottom-hud .hud-field.compact.value-slider { width: var(--ui-slider-width-compact); }
.bottom-hud .hud-field.value-slider::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 auto 0 0;
  width: var(--slider-fill);
  background: rgba(214,164,73,.14);
  border-right: 1px solid rgba(214,164,73,.16);
  pointer-events: none;
}
.bottom-hud .hud-field.value-slider:hover {
  border-color: #53565a;
  background: #27282b;
}
.bottom-hud .hud-field.value-slider.dragging {
  border-color: #8c713a;
  box-shadow: inset 0 0 0 1px rgba(214,164,73,.22);
  background: #292821;
}
.bottom-hud .hud-field.value-slider > span {
  position: relative;
  z-index: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #aeb1b5;
  font-size: var(--ui-font-small);
  font-weight: 650;
  letter-spacing: .025em;
  cursor: ew-resize;
}
.bottom-hud .hud-field.value-slider > em {
  position: relative;
  z-index: 1;
  color: #7f8387;
  font-size: var(--ui-font-micro);
  font-style: normal;
  cursor: ew-resize;
}
.bottom-hud .hud-field.value-slider input[type="number"] {
  position: relative;
  z-index: 2;
  width: 64px;
  height: 100%;
  min-width: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: #f0f0f0;
  font-size: var(--ui-font-small);
  font-weight: 700;
  text-align: right;
  cursor: text;
  user-select: text;
  box-shadow: none;
  appearance: textfield;
  -moz-appearance: textfield;
}
.bottom-hud .hud-field.value-slider input[type="number"]::-webkit-inner-spin-button,
.bottom-hud .hud-field.value-slider input[type="number"]::-webkit-outer-spin-button {
  margin: 0;
  -webkit-appearance: none;
}
.bottom-hud .hud-field.value-slider:focus-within {
  border-color: #806938;
  box-shadow: inset 0 0 0 1px #5d4d2d;
}
.bottom-hud .hud-field.value-slider input[type="number"]:disabled {
  opacity: .5;
  cursor: default;
}
.bottom-hud .hud-field.value-slider:has(input:disabled) {
  cursor: default;
  opacity: .62;
}

/* Wide text/value fields remain conventional inputs; only numeric fields get drag behaviour. */
.bottom-hud .hud-field.wide.value-slider { width: 210px; }

/* Bigger type needs a little more room in the side information drawers. */
.info-drawer { padding: 11px; }
.info-section-title { margin-left: -11px; margin-right: -11px; padding-left: 11px; padding-right: 11px; }

@media (max-width: 1120px) {
  :root { --ui-slider-width: 150px; --ui-slider-width-compact: 140px; }
}

/* LOCAL-16U · wider information rails for the readable workstation type scale. */
@media (min-width: 1121px) {
  .nest-studio-body { grid-template-columns: 225px minmax(420px, 1fr) 310px; }
}

/* LOCAL-16V · Content-packed Editing Panel
   Keep every HUD feature/control, but stop reserving large equal grid cells.
   Banks size to their real contents and wrap like a dense workstation panel. */
:root {
  --hud-bank-max: 410px;
  --hud-bank-wide-max: 830px;
}

.hud-properties {
  display: flex;
  flex-flow: row wrap;
  align-items: flex-start;
  align-content: flex-start;
  gap: 5px;
  padding: 6px 7px 8px;
}

.hud-control-cluster {
  flex: 0 1 auto;
  width: max-content;
  max-width: min(100%, var(--hud-bank-max));
  min-width: 0;
  min-height: 0;
  height: max-content;
  align-self: flex-start;
  align-items: center;
  align-content: flex-start;
  gap: 4px 6px;
  padding: 5px 7px 6px;
}

.hud-control-cluster.hud-wide-cluster,
.hud-control-cluster.opening-cluster,
.hud-control-cluster.reveal-cluster,
.hud-control-cluster.drawer-row-cluster {
  width: max-content;
  max-width: min(100%, var(--hud-bank-wide-max));
}

.hud-identity {
  flex: 0 0 auto;
  width: max-content;
  min-width: 190px;
  max-width: 270px;
  min-height: 0;
  height: max-content;
  align-self: flex-start;
  padding: 7px 9px;
}

.cluster-title {
  min-height: 0;
  margin-bottom: 1px;
  padding-bottom: 3px;
}

.hud-notice {
  flex: 0 1 auto;
  width: max-content;
  max-width: min(100%, var(--hud-bank-max));
  align-self: flex-start;
}

.hud-danger {
  flex: 0 0 auto;
  width: auto;
  min-width: 170px;
  max-width: min(100%, 260px);
  align-self: flex-start;
}

/* Avoid a wide bank just because a nested button row was allowed to stretch. */
.hud-control-cluster > .hud-button-row {
  flex: 0 1 auto;
  width: max-content;
  max-width: 100%;
}

/* The integrated Blender-like value fields keep their useful drag area,
   while the bank itself remains content-sized. */
.bottom-hud .hud-field.value-slider,
.bottom-hud .hud-field.compact.value-slider {
  flex: 0 0 auto;
}

@media (max-width: 1120px) {
  :root {
    --hud-bank-max: 360px;
    --hud-bank-wide-max: 720px;
  }
}

@media (max-width: 760px) {
  .hud-properties { gap: 4px; padding: 5px; }
  .hud-control-cluster,
  .hud-control-cluster.hud-wide-cluster,
  .hud-control-cluster.opening-cluster,
  .hud-control-cluster.reveal-cluster,
  .hud-control-cluster.drawer-row-cluster,
  .hud-identity,
  .hud-notice,
  .hud-danger {
    width: 100%;
    max-width: 100%;
  }
}

/* LOCAL-16W · Vertical HUD column packing
   Banks flow top-to-bottom inside vertical workstation columns. The available
   HUD height decides how many banks can stack before the next column begins.
   This preserves every control while eliminating row-driven dead space. */
:root {
  --hud-column-width: 390px;
  --hud-column-gap: 5px;
}

.hud-properties {
  display: block;
  height: 100%;
  min-height: 0;
  box-sizing: border-box;
  padding: 6px 7px 8px;
  column-width: var(--hud-column-width);
  column-gap: var(--hud-column-gap);
  column-fill: auto;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: #44474a #17181a;
}

.hud-properties > .hud-control-cluster,
.hud-properties > .hud-identity,
.hud-properties > .hud-notice,
.hud-properties > .hud-danger {
  width: 100%;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
  margin: 0 0 var(--hud-column-gap);
  break-inside: avoid-column;
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  vertical-align: top;
}

.hud-properties > .hud-control-cluster,
.hud-properties > .hud-control-cluster.hud-wide-cluster,
.hud-properties > .hud-control-cluster.opening-cluster,
.hud-properties > .hud-control-cluster.reveal-cluster,
.hud-properties > .hud-control-cluster.drawer-row-cluster {
  width: 100%;
  max-width: none;
}

.hud-properties > .hud-identity {
  width: 100%;
  max-width: none;
}

.hud-properties > .hud-danger {
  width: 100%;
  max-width: none;
}

/* Keep nested controls compact inside the column instead of forcing a bank
   wider than the workstation column. */
.hud-properties .hud-button-row {
  width: auto;
  max-width: 100%;
}

@media (max-width: 1550px) {
  :root { --hud-column-width: 350px; }
}

@media (max-width: 1120px) {
  :root { --hud-column-width: 320px; }
}

@media (max-width: 760px) {
  .hud-properties {
    column-width: auto;
    column-count: 1;
    overflow-x: hidden;
    overflow-y: auto;
  }
}

/* LOCAL-16X · Centered 250–300 px HUD column deck + Flame-style centered navigation
   Keep every existing HUD bank/control. Sections flow top-to-bottom, then into
   the next workstation column. Columns stay compact and the deck is centered
   instead of stretching banks or pushing them into a horizontal scroll strip. */
:root {
  --hud-column-target: 264px;
  --hud-column-min: 248px;
  --hud-column-max: 300px;
  --hud-column-gap: 6px;
}

/* Flex column-wrap is a better fit than CSS multicolumn here: it preserves the
   requested top-to-bottom packing while letting the complete column deck center
   itself inside whatever width the workstation currently has. */
.hud-properties {
  display: flex;
  flex-flow: column wrap;
  /* Center banks inside each flex column as well as centering the wrapped
     column deck. align-content alone does not center a single flex line,
     which made short tabs such as ROOM sit against the left edge. */
  align-items: center;
  align-content: center;
  justify-content: flex-start;
  width: 100%;
  height: 100%;
  min-height: 0;
  gap: var(--hud-column-gap);
  padding: 6px 8px 8px;
  overflow-x: hidden;
  overflow-y: hidden;
  column-width: auto;
  column-count: auto;
}

.hud-properties > .hud-control-cluster,
.hud-properties > .hud-identity,
.hud-properties > .hud-notice,
.hud-properties > .hud-danger,
.hud-properties > .hud-control-cluster.hud-wide-cluster,
.hud-properties > .hud-control-cluster.opening-cluster,
.hud-properties > .hud-control-cluster.reveal-cluster,
.hud-properties > .hud-control-cluster.drawer-row-cluster {
  flex: 0 0 auto;
  width: clamp(var(--hud-column-min), var(--hud-column-target), var(--hud-column-max));
  min-width: 0;
  max-width: var(--hud-column-max);
  margin: 0;
  box-sizing: border-box;
  break-inside: auto;
  -webkit-column-break-inside: auto;
  page-break-inside: auto;
}

/* Wide workflows wrap their controls inside the same workstation column rather
   than demanding a special oversized bank. No feature is removed or collapsed. */
.hud-properties .hud-control-cluster,
.hud-properties .hud-control-cluster.hud-wide-cluster,
.hud-properties .hud-control-cluster.opening-cluster,
.hud-properties .hud-control-cluster.reveal-cluster,
.hud-properties .hud-control-cluster.drawer-row-cluster {
  flex-wrap: wrap;
  align-content: flex-start;
}
.hud-properties .hud-button-row {
  flex-wrap: wrap;
  max-width: 100%;
}
.hud-properties .hud-select,
.hud-properties .hud-text-input,
.hud-properties .hud-field.wide.value-slider {
  max-width: 100%;
}

/* Center the workstation navigation like Flame: main workspaces, HUD primary
   tabs and HUD secondary tabs all share the same visual centre line. */
.workspace-tabs,
.hud-tabs,
.hud-subtabs,
.hud-subtab-set {
  justify-content: center;
}
.hud-subtabs {
  padding-left: 0;
  padding-right: 0;
}
.hud-subtab-set {
  flex: 0 1 auto;
  margin-inline: auto;
}

/* Keep the centred tab bars stable instead of turning them into horizontal
   scrollers at normal workstation widths. */
.hud-tabs {
  overflow-x: hidden;
}

@media (max-width: 1550px) {
  :root {
    --hud-column-target: 252px;
    --hud-column-min: 238px;
  }
  .hud-properties {
    padding-left: 8px;
    padding-right: 8px;
  }
}

@media (max-width: 1120px) {
  :root {
    --hud-column-target: 244px;
    --hud-column-min: 224px;
  }
  .hud-properties {
    align-content: center;
    overflow-x: hidden;
  }
}

@media (max-width: 760px) {
  .hud-properties {
    flex-flow: column nowrap;
    align-items: center;
    align-content: center;
    overflow-x: hidden;
    overflow-y: auto;
  }
  .hud-properties > .hud-control-cluster,
  .hud-properties > .hud-identity,
  .hud-properties > .hud-notice,
  .hud-properties > .hud-danger,
  .hud-properties > .hud-control-cluster.hud-wide-cluster,
  .hud-properties > .hud-control-cluster.opening-cluster,
  .hud-properties > .hud-control-cluster.reveal-cluster,
  .hud-properties > .hud-control-cluster.drawer-row-cluster {
    width: min(100%, var(--hud-column-max));
  }
  .hud-subtabs { padding-left: 0; }
}

/* LOCAL-17 · CNC Studio ----------------------------------------------------
   Dedicated production workspace. The Cabinet HUD/side drawers disappear
   while CNC is active; machining is inspected against the exact nested sheet. */
body.cnc-active #app { grid-template-rows:42px minmax(0,1fr) 23px; }
body.cnc-active #bottomHud,
body.cnc-active #leftPanel,
body.cnc-active #rightPanel,
body.cnc-active #leftPanelToggle,
body.cnc-active #rightPanelToggle,
body.cnc-active .viewer-header,
body.cnc-active #viewport,
body.cnc-active #cadStyleViewport,
body.cnc-active #emptyState { display:none !important; }
body.cnc-active .viewport-shell { inset:0; }

.cnc-studio { position:absolute; inset:0; z-index:31; min-width:0; min-height:0; display:grid; grid-template-rows:38px minmax(0,1fr) 48px; background:#0d0f11; color:#bec1c4; }
.cnc-studio[hidden] { display:none; }
.cnc-commandbar { min-width:0; display:grid; grid-template-columns:190px auto minmax(100px,1fr) auto; align-items:center; gap:8px; padding:0 8px; border-bottom:1px solid #373a3e; background:#191b1e; user-select:none; }
.cnc-title { min-width:0; display:flex; align-items:center; gap:8px; }
.cnc-mark { width:22px; height:22px; display:grid; place-items:center; border:1px solid #6a5730; background:#2a271f; color:#e0b86c; font-size:11px; font-weight:900; }
.cnc-title > div { min-width:0; display:flex; flex-direction:column; gap:2px; }
.cnc-title strong { color:#d9dbdd; font-size:11px; font-weight:750; letter-spacing:.11em; }
.cnc-title small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#73787e; font-size:10px; font-weight:600; }
.cnc-command-group { display:flex; align-items:center; gap:4px; }
.cnc-command-field { height:24px; display:flex; align-items:center; gap:5px; padding:0 5px; border:1px solid #34373b; background:#202226; }
.cnc-command-field span { color:#72777c; font-size:10px; font-weight:700; letter-spacing:.07em; }
.cnc-command-field select { height:20px; border:0; outline:0; background:#202226; color:#b6b9bc; font-size:10px; font-weight:650; }
.cnc-command-button { height:24px; padding:0 8px; border:1px solid #3b3e42; border-radius:1px; background:#222428; color:#979ca1; font-size:10px; font-weight:700; letter-spacing:.055em; cursor:pointer; }
.cnc-command-button:hover { color:#e2e3e4; background:#2b2e32; border-color:#4d5156; }
.cnc-command-button.accent { color:#e7bf70; border-color:#735c2d; background:#2b271d; }
.cnc-sheet-tabs { min-width:0; display:flex; justify-content:center; gap:2px; overflow:hidden; }
.cnc-sheet-tab { width:26px; height:23px; flex:0 0 26px; padding:0; border:1px solid #303338; background:#202226; color:#74797e; font-size:10px; cursor:pointer; }
.cnc-sheet-tab.active { color:#efc771; border-color:#745e31; background:#29251d; }
.cnc-view-actions { display:flex; align-items:center; gap:2px; }
.cnc-view-button { width:24px; height:24px; padding:0; border:1px solid #34373b; background:#202226; color:#858a8f; font-size:12px; cursor:pointer; }
.cnc-view-button.wide { width:38px; font-size:10px; font-weight:700; }

.cnc-body { min-width:0; min-height:0; display:grid; grid-template-columns:220px minmax(420px,1fr) 270px; overflow:hidden; }
.cnc-browser,.cnc-inspector { min-width:0; min-height:0; display:flex; flex-direction:column; background:#15171a; }
.cnc-browser { border-right:1px solid #34373b; }
.cnc-inspector { border-left:1px solid #34373b; }
.cnc-pane-header { height:31px; flex:0 0 31px; display:flex; align-items:center; justify-content:space-between; gap:8px; padding:0 8px; border-bottom:1px solid #313438; background:#1b1d20; }
.cnc-pane-header strong { color:#9ba0a5; font-size:10px; font-weight:750; letter-spacing:.09em; }
.cnc-pane-header span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#656a6f; font-size:10px; }
.cnc-browser-section { flex:0 0 auto; min-height:0; border-bottom:1px solid #2f3236; }
.cnc-browser-section.grow { flex:1 1 auto; display:flex; flex-direction:column; overflow:hidden; }
.cnc-browser-section header { height:26px; display:flex; align-items:center; justify-content:space-between; padding:0 8px; background:#191b1e; color:#666b70; font-size:10px; font-weight:700; letter-spacing:.07em; }
.cnc-browser-section header strong { color:#989da2; font-size:10px; }
.cnc-browser-list { max-height:154px; overflow:auto; padding:3px; scrollbar-width:thin; scrollbar-color:#3d4145 #17191c; }
.cnc-browser-section.grow .cnc-browser-list { max-height:none; flex:1 1 auto; }
.cnc-browser-item { width:100%; min-height:37px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:5px; padding:5px 6px; border:1px solid transparent; background:transparent; color:inherit; text-align:left; cursor:default; }
button.cnc-browser-item { cursor:pointer; }
.cnc-browser-item:hover { background:#202327; }
.cnc-browser-item.active { border-color:#705a2f; background:#27241e; }
.cnc-browser-item.warning .value { color:#d38470; }
.cnc-browser-item .main { min-width:0; }
.cnc-browser-item .title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#afb3b7; font-size:11px; font-weight:650; }
.cnc-browser-item .meta { margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#62676c; font-size:10px; }
.cnc-browser-item .value { color:#888d92; font-size:10px; font-weight:700; white-space:nowrap; }

.cnc-workarea { position:relative; min-width:0; min-height:0; overflow:hidden; background:#0c0e10; }
.cnc-sheet-head { position:absolute; z-index:4; top:9px; left:10px; right:10px; height:38px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:0 10px; border:1px solid rgba(58,62,66,.86); background:rgba(24,26,29,.94); pointer-events:none; }
.cnc-sheet-head > div:first-child { min-width:0; display:flex; align-items:baseline; gap:9px; }
.cnc-sheet-number { color:#d3a64f; font-size:10px; font-weight:800; letter-spacing:.12em; }
.cnc-sheet-head strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#c8cbce; font-size:11px; font-weight:650; }
.cnc-sheet-meta { display:flex; align-items:center; gap:11px; white-space:nowrap; color:#777c81; font-size:10px; }
.cnc-sheet-meta span + span::before,.cnc-sheet-meta strong::before { content:"·"; margin-right:11px; color:#484c50; }
.cnc-sheet-meta strong { color:#d8ae5c; }
.cnc-canvas { position:absolute; inset:56px 10px 34px; overflow:hidden; border:1px solid #25292d; cursor:grab; background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),#090b0d; background-size:24px 24px; touch-action:none; }
.cnc-canvas.panning { cursor:grabbing; }
.cnc-sheet-svg { width:100%; height:100%; display:block; overflow:visible; transform-origin:50% 50%; will-change:transform; }
.cnc-legend { position:absolute; right:8px; bottom:7px; display:flex; align-items:center; gap:5px; padding:4px 6px; border:1px solid rgba(57,60,64,.8); background:rgba(18,20,23,.9); color:#60656a; font-size:10px; font-weight:650; pointer-events:none; }
.cnc-legend-hole { width:8px; height:8px; border-radius:50%; display:inline-block; border:1px solid; }
.cnc-legend-hole.ready { border-color:#b6b9bc; background:#383d41; }
.cnc-legend-hole.warning { border-color:#c7816e; background:#452b27; }
.cnc-selection-strip { position:absolute; z-index:4; left:10px; right:10px; bottom:6px; min-height:23px; display:flex; align-items:center; gap:9px; padding:0 8px; overflow:hidden; border:1px solid #34373b; background:rgba(24,26,29,.96); color:#8a8f94; font-size:10px; white-space:nowrap; }
.cnc-selection-strip strong { color:#d7dadd; }
.cnc-selection-strip .ready { color:#bfc9bc; }
.cnc-selection-strip .warning { color:#df947d; }
.cnc-empty { position:absolute; z-index:5; inset:56px 10px 10px; display:grid; place-items:center; color:#62676c; font-size:11px; letter-spacing:.05em; pointer-events:none; background:#0b0d0f; border:1px solid #25282c; }

.cnc-sheet-outline { fill:#c6c2b6; stroke:#767369; stroke-width:2; vector-effect:non-scaling-stroke; }
.cnc-part { cursor:pointer; }
.cnc-part-rect { fill:#4d5358; fill-opacity:.76; stroke:#24282b; stroke-width:1.2; vector-effect:non-scaling-stroke; }
.cnc-part:hover .cnc-part-rect { stroke:#9ca1a5; stroke-width:1.8; }
.cnc-part.selected .cnc-part-rect { fill:#5a554b; stroke:#d5a84f; stroke-width:2.5; }
.cnc-part-label { fill:#d4d7d9; font-weight:750; pointer-events:none; }
.cnc-operation { cursor:pointer; }
.cnc-operation .cnc-op-hole { stroke-width:1.5; vector-effect:non-scaling-stroke; }
.cnc-operation.ready .cnc-op-hole { fill:#24282c; stroke:#d0d3d5; }
.cnc-operation.warning .cnc-op-hole { fill:#4a2b27; stroke:#df907a; }
.cnc-operation.selected .cnc-op-hole { stroke:#f1bd58; stroke-width:3; }
.cnc-op-cross { stroke:#b4b8bb; stroke-width:1; vector-effect:non-scaling-stroke; pointer-events:none; }
.cnc-operation.warning .cnc-op-cross { stroke:#e4a08c; }
.cnc-op-label { fill:#f0c66f; font-weight:700; paint-order:stroke; stroke:#151719; stroke-width:2px; stroke-linejoin:round; pointer-events:none; }

.cnc-inspector-scroll { min-height:0; overflow:auto; padding:7px; scrollbar-width:thin; scrollbar-color:#3d4145 #17191c; }
.cnc-inspector-card { margin-bottom:7px; padding:8px; border:1px solid #303338; background:#1b1d20; }
.cnc-inspector-card.grow { min-height:110px; }
.cnc-card-kicker { display:block; margin-bottom:6px; color:#686d72; font-size:10px; font-weight:750; letter-spacing:.1em; }
.cnc-inspector-card > strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#d0d2d4; font-size:11px; font-weight:650; }
.cnc-inspector-card > small { display:block; margin-top:3px; color:#6f7479; font-size:10px; line-height:1.4; }
.cnc-inspector-grid { display:grid; grid-template-columns:1fr auto; margin-top:7px; border-top:1px solid #2c2f33; }
.cnc-inspector-grid span,.cnc-inspector-grid strong { min-height:23px; display:flex; align-items:center; border-bottom:1px solid #292c30; font-size:10px; }
.cnc-inspector-grid span { color:#70757a; }
.cnc-inspector-grid strong { justify-content:flex-end; max-width:145px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b6b9bc; font-weight:650; text-align:right; }
.cnc-tool-list { display:flex; flex-direction:column; }
.cnc-tool-row { min-height:34px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:5px; border-bottom:1px solid #292c30; }
.cnc-tool-row .main { min-width:0; display:flex; flex-direction:column; gap:2px; }
.cnc-tool-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b8bbbe; font-size:10px; }
.cnc-tool-row span { color:#6c7176; font-size:10px; }
.cnc-tool-row b { min-width:24px; padding:2px 5px; border:1px solid #363a3e; color:#d5ad5d; text-align:center; font-size:10px; }
.cnc-tool-row.disabled { opacity:.45; }
.cnc-warning-list { display:flex; flex-direction:column; gap:4px; }
.cnc-warning-row { padding:5px 6px; border-left:2px solid #7a5c37; background:#22201c; color:#a8a29a; font-size:10px; line-height:1.35; }

.cnc-footer { min-width:0; display:flex; align-items:center; gap:5px; padding:0 7px; border-top:1px solid #3a3d41; background:#17191c; overflow-x:auto; scrollbar-width:none; }
.cnc-footer::-webkit-scrollbar { display:none; }
.cnc-stat { min-width:78px; height:32px; display:flex; flex-direction:column; justify-content:center; padding:0 7px; border-right:1px solid #2e3135; }
.cnc-stat span { color:#63686d; font-size:10px; font-weight:700; letter-spacing:.08em; }
.cnc-stat strong { margin-top:2px; color:#c4c7ca; font-size:11px; font-weight:650; }
.cnc-stat:nth-child(3) strong { color:#c9cdbf; }
.cnc-stat:nth-child(4) strong { color:#d28a75; }
.cnc-footer-divider { width:1px; height:28px; flex:0 0 1px; margin:0 3px; background:#34373b; }
.cnc-footer-field { height:28px; display:flex; align-items:center; gap:5px; padding:0 5px; border:1px solid #303338; background:#1c1e21; color:#777c81; font-size:10px; }
.cnc-footer-field select { height:20px; min-width:94px; border:0; background:#1c1e21; color:#afb3b7; font-size:10px; }
.cnc-footer-check { height:28px; display:flex; align-items:center; gap:5px; padding:0 6px; border:1px solid #303338; background:#1c1e21; color:#7b8085; font-size:10px; font-weight:650; white-space:nowrap; }
.cnc-footer-summary { margin-left:auto; min-width:max-content; color:#777c81; font-size:10px; white-space:nowrap; }

@media (max-width:1180px) { .cnc-body { grid-template-columns:185px minmax(360px,1fr) 235px; } .cnc-commandbar { grid-template-columns:165px auto minmax(70px,1fr) auto; } }
@media (max-width:850px) { .cnc-body { grid-template-columns:160px minmax(320px,1fr); } .cnc-inspector { display:none; } .cnc-command-field { display:none; } .cnc-commandbar { grid-template-columns:150px auto minmax(50px,1fr) auto; } }

/* LOCAL-17P1 · Viewport intelligence overlay. */
.dimension-overlay {
  position:absolute;
  top:29px;
  bottom:0;
  left:0;
  right:0;
  width:100%;
  height:calc(100% - 29px);
  pointer-events: none;
  z-index: 7;
  overflow: visible;
}
.dimension-overlay[hidden] { display: none; }

/* LOCAL-17ROOM5A · direct ROOM semantic grips.  Same orange/cyan language as
   the Blender-style Screen HUD; no cards, bubbles, or browser chrome. */
.room-grip-overlay {
  position:absolute;
  top:29px;
  bottom:0;
  left:0;
  right:0;
  width:100%;
  height:calc(100% - 29px);
  pointer-events:none;
  z-index:9;
  overflow:visible;
}
.room-grip-overlay[hidden] { display:none; }
.room-edit-grip { pointer-events:all; touch-action:none; }
.room-edit-grip-halo { fill:transparent; stroke:transparent; stroke-width:1; }
.room-edit-grip-stem { stroke:#75a7b5; stroke-width:1; vector-effect:non-scaling-stroke; opacity:.78; }
.room-edit-grip-diamond { fill:#ff7100; stroke:#101315; stroke-width:1; vector-effect:non-scaling-stroke; }
.room-edit-grip.secondary .room-edit-grip-diamond { fill:#a7c5cf; }
.room-edit-grip.move .room-edit-grip-diamond { fill:#ff7100; }
.room-edit-grip-label {
  fill:#c4d7de;
  font-family:inherit;
  font-size:10px;
  font-weight:700;
  letter-spacing:.055em;
  paint-order:stroke;
  stroke:rgba(16,19,21,.9);
  stroke-width:2px;
  stroke-linejoin:round;
  pointer-events:none;
}
.room-edit-grip:hover .room-edit-grip-stem,
.room-edit-grip:active .room-edit-grip-stem { stroke:#ff7100; opacity:1; }
.room-edit-grip:hover .room-edit-grip-diamond,
.room-edit-grip:active .room-edit-grip-diamond { fill:#ff8a24; }
/* LOCAL-17ROOM5B · magnetic snap + wall-span feedback. */
.room-grip-dynamic { pointer-events:none; }
.room-wall-span { fill:none; vector-effect:non-scaling-stroke; stroke-linecap:round; }
.room-wall-span.available { stroke:#75a7b5; stroke-width:1.25; stroke-dasharray:5 5; opacity:.58; }
.room-wall-span.occupied { stroke:#ff7100; stroke-width:2.2; opacity:.95; }
.room-wall-span-label {
  fill:#c4d7de; font-family:inherit; font-size:10px; font-weight:700; letter-spacing:.045em;
  paint-order:stroke; stroke:rgba(16,19,21,.88); stroke-width:2px; pointer-events:none;
}
.room-wall-span-label.occupied { fill:#ffb06d; }
.room-snap-marker { pointer-events:none; opacity:.62; }
.room-snap-marker-tick { stroke:#75a7b5; stroke-width:1; vector-effect:non-scaling-stroke; }
.room-snap-marker-diamond { fill:#1c2428; stroke:#75a7b5; stroke-width:1; vector-effect:non-scaling-stroke; }
.room-snap-marker.active { opacity:1; }
.room-snap-marker.active .room-snap-marker-tick { stroke:#ff7100; stroke-width:1.5; }
.room-snap-marker.active .room-snap-marker-diamond { fill:#ff7100; stroke:#101315; }
.room-snap-marker-label {
  fill:#ffb06d; font-family:inherit; font-size:10px; font-weight:700; letter-spacing:.05em;
  paint-order:stroke; stroke:rgba(16,19,21,.92); stroke-width:2px; pointer-events:none;
}
.room-edit-grip.action .room-edit-grip-diamond { fill:#75a7b5; }
.room-edit-grip.action:hover .room-edit-grip-diamond { fill:#ff7100; }
body.nesting-active .room-grip-overlay,
body.cnc-active .room-grip-overlay,
body.publisher-active .room-grip-overlay { display:none !important; }
.dimension-line {
  stroke: #c8d2df;
  vector-effect: non-scaling-stroke;
  shape-rendering: geometricPrecision;
}
.dimension-text {
  fill: #e7edf5;
  font-family: inherit;
  font-weight: 600;
  paint-order: stroke;
  stroke: rgba(10, 13, 17, .82);
  stroke-width: 3px;
  stroke-linejoin: round;
  letter-spacing: .01em;
}
.dimension-text-editable { pointer-events:all; cursor:text; }
.dimension-text-editable:hover,
.dimension-text-editable:focus { fill:#ff8a24; outline:none; }
.dimension-drag-grip { pointer-events:all; touch-action:none; cursor:grab; }
.dimension-drag-grip:active,.dimension-drag-grip.active { cursor:grabbing; }
.dimension-drag-grip .hit { fill:transparent; stroke:transparent; }
.dimension-drag-grip .diamond { fill:#15191c; stroke:#8dc0ca; stroke-width:1.25; vector-effect:non-scaling-stroke; }
.dimension-drag-grip:hover .diamond,.dimension-drag-grip.active .diamond { fill:#ff7100; stroke:#141719; }
.dimension-grip-alignment { pointer-events:none; }
.dimension-grip-alignment .guide { fill:none; stroke:#78aeb8; stroke-width:1; stroke-dasharray:7 5; vector-effect:non-scaling-stroke; opacity:.72; }
.dimension-grip-alignment.track .label { fill:#9bc7cf; }
.dimension-grip-alignment.snap .guide { stroke:#ff8a24; stroke-dasharray:4 3; opacity:.92; }
.dimension-grip-alignment .ring { fill:rgba(255,113,0,.08); stroke:#ff8a24; stroke-width:1.5; vector-effect:non-scaling-stroke; }
.dimension-grip-alignment .axis { stroke:#ff8a24; stroke-width:1; vector-effect:non-scaling-stroke; }
.dimension-grip-alignment .label { fill:#ffb06b; font-size:10px; font-weight:700; paint-order:stroke; stroke:rgba(10,13,17,.9); stroke-width:3px; stroke-linejoin:round; }
.cabinet-grip-snap { pointer-events:none; }
.cabinet-grip-snap .ring { fill:rgba(255,113,0,.08); stroke:#ff8a24; stroke-width:1.5; vector-effect:non-scaling-stroke; }
.cabinet-grip-snap .axis { stroke:#ff8a24; stroke-width:1; vector-effect:non-scaling-stroke; opacity:.92; }
.cabinet-grip-snap .label { fill:#ffb06b; font-size:10px; font-weight:700; paint-order:stroke; stroke:rgba(10,13,17,.9); stroke-width:3px; stroke-linejoin:round; }
.dimension-inline-editor {
  position:fixed;
  z-index:1200;
  width:88px;
  height:24px;
  transform:translate(-50%,-50%);
  box-sizing:border-box;
  border:0;
  border-bottom:2px solid #ff7100;
  border-radius:0;
  background:rgba(16,19,21,.96);
  color:#f3f5f7;
  font-family:inherit;
  font-size:12px;
  font-weight:700;
  line-height:22px;
  text-align:center;
  outline:none;
  box-shadow:0 2px 8px rgba(0,0,0,.34);
}
.dimension-inline-editor:focus { border-bottom-color:#ff9a3d; }
.dimension-inline-editor.invalid { border-bottom-color:#ff4d4d; color:#ffb3b3; }
body.nesting-active .dimension-overlay,
body.cnc-active .dimension-overlay { display: none !important; }

/* LOCAL-17P2 · compact status/selector rows inside 250–300 px HUD columns. */
.hud-mini-list {
  display: flex;
  flex-direction: column;
  gap: 3px;
  width: 100%;
  min-width: 0;
}
.hud-mini-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  width: 100%;
  min-height: var(--ui-control-height, 24px);
  padding: 3px 6px;
  border: 1px solid #35373a;
  border-radius: 1px;
  background: #202124;
  color: #aeb1b5;
  font-size: 11px;
  text-align: left;
  box-sizing: border-box;
}
button.hud-mini-row { cursor: pointer; }
button.hud-mini-row:hover { background: #292a2d; color: #d7d8da; }
button.hud-mini-row.active { border-color: #76613a; color: #e2bb72; background: #2b2822; }
.hud-mini-row > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hud-mini-row > span:last-child { color: #85898e; white-space: nowrap; }

/* LOCAL-17P2A · Two-column HUD control packing
   ---------------------------------------------
   Keep the centered 250–300 px workstation banks from LOCAL-16X, but use the
   interior of every bank as a compact two-column control surface. Numeric
   Blender-style value sliders now pair side-by-side instead of leaving the
   second half of a bank empty. Full-width workflows (button strips, long
   selectors/readouts/lists and text inputs) still own the complete row. */
.hud-properties .hud-control-cluster {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-flow: row dense;
  align-items: center;
  align-content: start;
  gap: 4px 6px;
}

/* Section headers and controls that genuinely need horizontal room keep the
   whole bank width. Everything else is free to occupy either workstation cell. */
.hud-properties .hud-control-cluster > .cluster-title,
.hud-properties .hud-control-cluster > .hud-button-row,
.hud-properties .hud-control-cluster > .hud-readout,
.hud-properties .hud-control-cluster > .hud-mini-list,
.hud-properties .hud-control-cluster > .hud-text-input,
.hud-properties .hud-control-cluster > .hud-select:not(.compact-select),
.hud-properties .hud-control-cluster > .hud-field.wide:not(.value-slider) {
  grid-column: 1 / -1;
  width: 100%;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
}

/* Compact selectors, toggles and action buttons share the same two-column
   rhythm instead of reserving arbitrary flex widths. */
.hud-properties .hud-control-cluster > .compact-select,
.hud-properties .hud-control-cluster > .hud-check,
.hud-properties .hud-control-cluster > .hud-value {
  width: 100%;
  min-width: 0;
  max-width: none;
  box-sizing: border-box;
}

/* Numeric controls are the important part of this pass: each one occupies
   exactly one half-bank cell. This applies automatically to current and future
   HUD number fields because initHudValueSliders() adds .value-slider. */
.bottom-hud .hud-properties .hud-control-cluster > .hud-field.value-slider,
.bottom-hud .hud-properties .hud-control-cluster > .hud-field.compact.value-slider,
.bottom-hud .hud-properties .hud-control-cluster > .hud-field.wide.value-slider {
  grid-column: auto;
  width: 100%;
  min-width: 0;
  max-width: none;
  box-sizing: border-box;
  padding-left: 6px;
  padding-right: 5px;
  grid-template-columns: minmax(0, 1fr) minmax(36px, 44px) auto;
  gap: 3px;
}
.bottom-hud .hud-properties .hud-control-cluster > .hud-field.value-slider input[type="number"] {
  width: 44px;
  min-width: 36px;
}

/* Keep primary apply/update actions visually deliberate: when an accent action
   is a standalone direct child it gets a full row rather than accidentally
   sharing the last odd slider cell. Preset/button strips are handled above. */
.hud-properties .hud-control-cluster > button.hud-value.accent-value {
  grid-column: 1 / -1;
}

/* Very narrow windows need readability more than density. The outer HUD bank
   already stacks vertically here; collapse its internal grid as well. */
@media (max-width: 560px) {
  .hud-properties .hud-control-cluster {
    grid-template-columns: minmax(0, 1fr);
  }
  .hud-properties .hud-control-cluster > * {
    grid-column: 1 / -1;
  }
  .bottom-hud .hud-properties .hud-control-cluster > .hud-field.value-slider,
  .bottom-hud .hud-properties .hud-control-cluster > .hud-field.compact.value-slider,
  .bottom-hud .hud-properties .hud-control-cluster > .hud-field.wide.value-slider {
    grid-column: 1 / -1;
  }
}


/* LOCAL-17P3A · Manufacturing production/cost metrics. */
.hud-properties .hud-control-cluster > .hud-metric {
  min-width: 0;
  min-height: 38px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
  padding: 5px 7px;
  border: 1px solid #34363a;
  background: #202124;
  box-sizing: border-box;
}
.hud-metric > span {
  overflow: hidden;
  color: #74787d;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.hud-metric > strong {
  overflow: hidden;
  color: #c6c9cc;
  font-size: 11px;
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.hud-properties .hud-control-cluster > .hud-metric-total {
  grid-column: 1 / -1;
  min-height: 42px;
  border-color: #6d5935;
  background: #27241f;
}
.hud-metric-total > strong { color: #e2bb72; font-size: 13px; }

/* LOCAL-17P3B · supplier inventory + purchase order packing. */
.hud-properties .hud-control-cluster > .hud-span-2 {
  grid-column: 1 / -1 !important;
  width: 100%;
  max-width: none;
  min-width: 0;
  box-sizing: border-box;
}
.hud-properties .hud-control-cluster > .hud-field.hud-span-2 {
  grid-template-columns: auto minmax(0, 1fr);
}
.hud-properties .hud-control-cluster > .hud-field.hud-span-2 input {
  width: 100%;
  min-width: 0;
  text-align: left;
  box-sizing: border-box;
}

/* LOCAL-17P3C · Commercial quotation drift warning. */
.warning-text { color: #e0a456 !important; }

/* LOCAL-17N1 · Technical nesting drawing sheet
   ------------------------------------------------------------
   The Nesting Studio remains a dark production environment, but the active
   nest is now presented as a real CAD/fabrication drawing sheet rather than a
   dashboard card.  The sheet is monochrome-first with restrained aBSy blue
   accents, solid light panel fills, engineering lineweights and a title block. */
.nesting-canvas {
  background:
    linear-gradient(rgba(255,255,255,.013) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.013) 1px,transparent 1px),
    #111417;
  background-size:28px 28px;
  border-color:#30353a;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.35), 0 0 24px rgba(0,0,0,.14);
}
.nesting-corner-legend { opacity:.78; }

.nest-tech-paper { fill:#fafbfc; stroke:#d5d9dd; stroke-width:1; vector-effect:non-scaling-stroke; }
.nest-tech-border { fill:none; stroke:#252b31; stroke-width:1.3; vector-effect:non-scaling-stroke; }
.nest-tech-zone-tick { stroke:#6f7880; stroke-width:.75; vector-effect:non-scaling-stroke; }
.nest-tech-zone-text { fill:#68717a; font-weight:650; }
.nest-tech-rule { stroke:#6e777f; stroke-width:.8; vector-effect:non-scaling-stroke; }
.nest-tech-rule-light { stroke:#b8bec4; stroke-width:.52; vector-effect:non-scaling-stroke; }
.nest-tech-rule-strong { stroke:#272d33; stroke-width:1.35; vector-effect:non-scaling-stroke; }
.nest-tech-accent-rule { stroke:#2869c7; stroke-width:2; vector-effect:non-scaling-stroke; }
.nest-tech-logo { fill:#12171c; font-weight:900; font-style:italic; letter-spacing:-.04em; }
.nest-tech-logo-sub { fill:#4f5962; font-weight:700; letter-spacing:.28em; }
.nest-tech-title { fill:#10151a; font-weight:850; letter-spacing:.025em; }
.nest-tech-sheet-no { fill:#11171c; font-weight:800; }
.nest-tech-label { fill:#5b646c; font-weight:700; letter-spacing:.045em; }
.nest-tech-value { fill:#1d242a; font-weight:650; }
.nest-tech-more { fill:#68717a; font-weight:650; font-style:italic; }
.nest-tech-note { fill:#283139; font-weight:550; }
.nest-tech-section-head { fill:#252b31; stroke:#252b31; stroke-width:.8; vector-effect:non-scaling-stroke; }
.nest-tech-section-title { fill:#f7f8f9; font-weight:750; letter-spacing:.07em; }
.nest-tech-table-row { fill:#fbfcfd; stroke:#b8bec4; stroke-width:.52; vector-effect:non-scaling-stroke; }
.nest-tech-table-header { fill:#f0f2f4; stroke:#aab1b7; stroke-width:.55; vector-effect:non-scaling-stroke; }
.nest-tech-table-header-text { fill:#3b434a; font-weight:750; letter-spacing:.025em; }
.nest-tech-table-label { fill:#58616a; font-weight:650; letter-spacing:.015em; }
.nest-tech-table-value { fill:#222a30; font-weight:575; }
.nest-tech-band-title { fill:#1d242a; font-weight:750; letter-spacing:.06em; }
.nest-tech-util-bg { fill:#e2e6e9; stroke:#aeb5bb; stroke-width:.6; vector-effect:non-scaling-stroke; }
.nest-tech-util-fill { fill:#2f6fca; }
.nest-tech-legend-part { fill:#edf1f4; stroke:#30383f; stroke-width:1; vector-effect:non-scaling-stroke; }
.nest-tech-key-sheet { fill:#f5f6f7; stroke:#30383f; stroke-width:1; vector-effect:non-scaling-stroke; }
.nest-tech-key-usable { fill:none; stroke:#2f6fca; stroke-width:.9; stroke-dasharray:5 3; vector-effect:non-scaling-stroke; }
.nest-tech-register { fill:none; stroke:#242b31; stroke-width:.9; vector-effect:non-scaling-stroke; }
.nest-tech-arrow-head { fill:#2f6fca; }
.nest-tech-grain-callout { stroke:#2f6fca; stroke-width:1.1; vector-effect:non-scaling-stroke; }
.nest-tech-grain-text { fill:#245da9; font-weight:750; letter-spacing:.04em; }

/* The stock itself is paper-neutral; panels are solid, light technical fills. */
.nesting-sheet-shadow { display:none; }
.nesting-sheet-outline { fill:#f4f6f7; stroke:#252c32; stroke-width:1.4; vector-effect:non-scaling-stroke; }
.nesting-sheet-margin { fill:none; stroke:#2f6fca; stroke-width:1; stroke-dasharray:7 5; opacity:.72; vector-effect:non-scaling-stroke; }
.nesting-sheet-dim-line { stroke:#2f6fca; stroke-width:1; vector-effect:non-scaling-stroke; }
.nesting-sheet-dim-text { fill:#245da9; font-weight:750; letter-spacing:.02em; }
.nesting-sheet-origin { stroke:#2b333a; stroke-width:1.1; vector-effect:non-scaling-stroke; }
.nesting-part { cursor:pointer; }
.nesting-part-rect { fill:#edf1f4; stroke:#30383f; stroke-width:1.05; vector-effect:non-scaling-stroke; }
.nesting-part.tone-1 .nesting-part-rect { fill:#e8eef4; }
.nesting-part.tone-2 .nesting-part-rect { fill:#f0f1ed; }
.nesting-part.tone-3 .nesting-part-rect { fill:#eaf0ed; }
.nesting-part:hover .nesting-part-rect { fill:#dfe9f6; stroke:#2f6fca; stroke-width:1.7; }
.nesting-part-rect.selected { fill:#d7e6fa; stroke:#1d63c5; stroke-width:2.8; }
.nesting-part-label { pointer-events:none; fill:#1b2228; font-weight:675; letter-spacing:.008em; }
.nesting-part-size { pointer-events:none; fill:#4d5861; font-weight:550; }
.nesting-part-index-text { pointer-events:none; fill:#151b20; font-weight:800; letter-spacing:.02em; }
.nesting-part-edge-note { pointer-events:none; fill:#626c74; font-weight:600; letter-spacing:.025em; }
.nesting-part-edge-band { pointer-events:none; fill:none; stroke:#68747b; stroke-width:.72; stroke-dasharray:6 4; stroke-linecap:butt; vector-effect:non-scaling-stroke; }
.nesting-part-grain { pointer-events:none; stroke:#2f6fca; stroke-width:1; opacity:.90; vector-effect:non-scaling-stroke; }
.nesting-part-machining { pointer-events:none; fill:#fafbfc; stroke:#262d33; stroke-width:.85; vector-effect:non-scaling-stroke; }

/* LOCAL-17PUB1/2 — the standalone PUBLISH workspace hosts the exact aBSy
   Publisher workstation on its own localhost origin.  No imitation UI lives
   in Cabinet Designer; this frame is only a host boundary.  Publisher owns
   the complete working area, so the Cabinet HUD row is removed from layout
   rather than merely made invisible. */
body.publisher-active #app { grid-template-rows: 42px minmax(0, 1fr) 23px; }
body.publisher-active .viewport-shell { inset: 0; }
body.publisher-active .viewer-header,
body.publisher-active #viewport,
body.publisher-active #cadStyleViewport,
body.publisher-active #dimensionOverlay,
body.publisher-active .empty-state,
body.publisher-active .edge-tab,
body.publisher-active .side-drawer,
body.publisher-active #bottomHud { display: none !important; }
.publisher-workspace {
  position: absolute;
  inset: 0;
  z-index: 48;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: #181818;
}
.publisher-workspace[hidden] { display: none; }
.publisher-frame {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #181818;
}
.publisher-loading {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 9px;
  background: #181818;
  color: #e7e7e7;
  text-align: center;
  font-size: 11px;
  letter-spacing: .04em;
}
.publisher-loading[hidden] { display: none; }
.publisher-loading strong { font-size: 13px; letter-spacing: .11em; }
.publisher-loading span { max-width: 460px; color: #8f969e; font-size: 11px; line-height: 1.55; }
.publisher-loading-mark {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  margin-bottom: 5px;
  border: 1px solid #4c84d7;
  background: #24364f;
  color: #dceaff;
  font-weight: 800;
  font-size: 14px;
}

/* LOCAL-17VIEW1 · viewport navigation, render modes and contextual editing. */
/* VIEW4G5K2J1 · CAD wireframe ViewCube. The live Three.js gizmo renders only
   the cube skeleton at rest; face/edge/corner target geometry appears on hover.
   The old button layout remains only as a progressive fallback if WebGL init fails. */
.view-gizmo {
  position:absolute;
  z-index:9;
  top:40px;
  right:12px;
  width:118px;
  height:118px;
  pointer-events:none;
  user-select:none;
}
.view-gizmo-canvas {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:none;
  pointer-events:auto;
  border:0;
  outline:0 !important;
  box-shadow:none !important;
  filter:none;
  -webkit-tap-highlight-color:transparent;
}
.view-gizmo-canvas:focus,
.view-gizmo-canvas:focus-visible {
  border:0;
  outline:0 !important;
  box-shadow:none !important;
}
.view-gizmo.is-three-ready .view-gizmo-canvas { display:block; }

/* VIEW4G5K2J3 · projection belongs to the navigation cluster, not the header. */
.gizmo-projection-toggle {
  position:absolute;
  z-index:10;
  top:160px;
  right:31px;
  width:26px;
  min-width:26px;
  height:26px;
  padding:0;
  border-color:var(--ui-border,#3a3d41);
  background:color-mix(in srgb,var(--ui-chrome-bg,#17191c) 82%,transparent);
  backdrop-filter:blur(2px);
}
.gizmo-projection-toggle.active { border-color:var(--ui-border-strong,#4c5056); }
.gizmo-projection-toggle.has-ui-icon { gap:0; }
.gizmo-projection-toggle.has-ui-icon > .ui-icon { width:15px; height:15px; flex-basis:15px; }

.viewport-context-panel {
  --screen-hud-text:#eaf7fa;
  --screen-hud-muted:#80a8b0;
  --screen-hud-line:#78b8c4;
  --screen-hud-line-soft:rgba(92,140,150,.32);
  --screen-hud-track:rgba(117,158,166,.30);
  --screen-hud-accent:#ff6b0f;
  --screen-hud-accent-soft:rgba(255,107,15,.22);
  --screen-hud-accent-hover:#ffa838;
  --screen-hud-shadow:rgba(0,0,0,.72);
  position:absolute;
  inset:35px 0 0;
  z-index:10;
  color:var(--screen-hud-text);
  pointer-events:none;
  overflow:hidden;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
}
.viewport-context-panel[hidden] { display:none; }

.viewport-hotkey-panel { z-index:12; }
.viewport-hotkey-panel .viewport-context-identity { display:none; }
.viewport-hotkey-panel .viewport-context-body {
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  pointer-events:none;
  padding:56px 48px 40px;
}
.viewport-hotkey-layout {
  width:min(1040px,calc(100% - 120px));
  display:grid;
  grid-template-columns:repeat(3,minmax(220px,1fr));
  gap:26px;
  align-items:start;
  pointer-events:auto;
}
.viewport-hotkey-column { display:grid; align-content:start; }
.viewport-hotkey-layout .viewport-hotkey-group {
  position:relative;
  width:auto;
  gap:8px;
}
.viewport-hotkey-layout .viewport-hotkey-group .viewport-edge-group-body { gap:10px; }
.viewport-hotkey-layout .viewport-edge-section { align-content:start; }
.viewport-hotkey-hint {
  position:absolute;
  left:18px;
  bottom:18px;
  z-index:9;
  display:inline-flex;
  align-items:center;
  gap:6px;
  pointer-events:none;
  color:var(--screen-hud-text);
  font-size:10px;
  font-weight:760;
  letter-spacing:.08em;
  text-shadow:1px 1px 0 var(--screen-hud-shadow);
}
.viewport-hotkey-hint .viewport-hotkey-hint-text { color:var(--screen-hud-text); }
.viewport-hotkey-hint .viewport-hotkey-hint-key { color:var(--ui-accent-strong,#e2bb72) !important; font-size:10px; font-weight:800; }
.viewport-hotkey-hint[hidden] { display:none !important; }

.viewport-hotkey-panel .viewport-context-readout strong { color:var(--screen-hud-accent); }

.viewport-context-panel :is(strong,span,small,em,button,input) {
  text-shadow:1px 1px 0 var(--screen-hud-shadow);
}
.viewport-context-identity {
  position:absolute;
  left:18px;
  top:14px;
  width:min(260px,calc(100% - 36px));
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  padding:0;
  border:0;
  background:transparent;
  box-shadow:none;
  pointer-events:auto;
}
.viewport-context-identity > div {
  position:relative;
  min-width:0;
  display:grid;
  gap:2px;
  padding-left:19px;
}
.viewport-context-identity > div::before {
  content:"";
  position:absolute;
  left:0;
  top:7px;
  width:12px;
  height:2px;
  background:var(--screen-hud-accent);
  box-shadow:1px 1px 0 var(--screen-hud-shadow);
}
.viewport-context-identity small { color:var(--screen-hud-muted); font-size:10px; font-weight:800; letter-spacing:.14em; }
.viewport-context-identity strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--screen-hud-text); font-size:12px; font-weight:720; }
.viewport-context-identity span { color:rgba(128,168,176,.72); font-size:10px; font-weight:700; letter-spacing:.08em; }
#viewportContextClose {
  position:relative;
  width:22px;
  height:22px;
  padding:0 0 4px;
  border:0;
  background:transparent;
  color:var(--screen-hud-muted);
  font-size:17px;
  line-height:1;
  cursor:pointer;
  pointer-events:auto;
}
#viewportContextClose::after {
  content:"";
  position:absolute;
  left:4px;
  right:4px;
  bottom:1px;
  height:1px;
  background:var(--screen-hud-line-soft);
}
#viewportContextClose:hover { color:var(--screen-hud-accent-hover); }
#viewportContextClose:hover::after { height:2px; background:var(--screen-hud-accent-hover); }
.viewport-context-body { position:absolute; inset:0; pointer-events:none; }
.viewport-edge-group {
  position:absolute;
  width:220px;
  display:grid;
  gap:6px;
  pointer-events:auto;
}
.viewport-edge-group.dock-left { left:18px; top:42%; transform:translateY(-48%); }
.viewport-edge-group.dock-right { right:18px; top:42%; transform:translateY(-48%); }
.viewport-edge-group.dock-right-bottom { right:18px; bottom:18px; }
.viewport-edge-group.dock-bottom { left:50%; bottom:18px; width:min(330px,calc(100% - 36px)); transform:translateX(-50%); }
.viewport-edge-group.dock-top { left:50%; top:14px; width:min(290px,calc(100% - 560px)); min-width:220px; transform:translateX(-50%); }
.viewport-edge-group.dock-bottom-left { left:18px; bottom:18px; width:280px; }
.viewport-edge-group.dock-bottom-right { right:18px; bottom:18px; width:280px; }
.viewport-edge-group-title {
  display:flex;
  align-items:center;
  gap:7px;
  min-height:14px;
}
.viewport-edge-group-title::before {
  content:"";
  width:12px;
  height:2px;
  flex:0 0 12px;
  background:var(--screen-hud-accent);
  box-shadow:1px 1px 0 var(--screen-hud-shadow);
}
.viewport-edge-group-title strong { color:var(--screen-hud-text); font-size:10px; line-height:1; font-weight:760; letter-spacing:.12em; }
.viewport-edge-group-title::after { content:none; }
.viewport-edge-group-body { display:grid; gap:8px; }
.viewport-edge-stack { display:grid; gap:5px; }
.viewport-edge-section { display:grid; gap:5px; }
.viewport-edge-section + .viewport-edge-section { padding-top:7px; border-top:1px solid var(--screen-hud-line-soft); }
.viewport-edge-section-title { color:var(--screen-hud-muted); font-size:10px; font-weight:800; letter-spacing:.11em; }

/* Blender Screen HUD sliders: label/value above a transparent track. */
.viewport-context-field {
  --hud-factor:0%;
  position:relative;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(70px,1fr) 72px auto;
  align-items:start;
  gap:5px;
  min-height:37px;
  padding:2px 0 13px;
  border:0;
  border-radius:0;
  background:transparent;
  backdrop-filter:none;
  cursor:ew-resize;
  touch-action:none;
}
.viewport-context-field::before {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:7px;
  height:5px;
  background:
    linear-gradient(var(--screen-hud-track),var(--screen-hud-track)) left 2px/100% 1px no-repeat,
    repeating-linear-gradient(90deg,var(--screen-hud-line-soft) 0 1px,transparent 1px calc(20% - .2px));
  pointer-events:none;
}
.viewport-context-field::after {
  content:"";
  position:absolute;
  left:0;
  bottom:9px;
  width:var(--hud-factor);
  height:1.5px;
  background:var(--screen-hud-accent);
  box-shadow:1px 1px 0 var(--screen-hud-shadow);
  pointer-events:none;
}
.viewport-context-field:focus-within::after,
.viewport-context-field:hover::after,
.viewport-context-field.dragging::after { background:var(--screen-hud-accent-hover); height:2px; }
.viewport-context-slider-marker {
  position:absolute;
  left:var(--hud-factor);
  bottom:4px;
  width:0;
  height:11px;
  border-left:2px solid var(--screen-hud-accent);
  transform:translateX(-1px);
  pointer-events:none;
  filter:drop-shadow(1px 1px 0 var(--screen-hud-shadow));
}
.viewport-context-slider-marker::after {
  content:"";
  position:absolute;
  left:-3px;
  top:4px;
  width:4px;
  height:4px;
  border:1px solid var(--screen-hud-accent);
  background:var(--screen-hud-accent);
  transform:rotate(45deg);
}
.viewport-context-field:hover .viewport-context-slider-marker,
.viewport-context-field.dragging .viewport-context-slider-marker {
  height:15px;
  bottom:2px;
  border-left-color:var(--screen-hud-accent-hover);
}
.viewport-context-field:hover .viewport-context-slider-marker::after,
.viewport-context-field.dragging .viewport-context-slider-marker::after {
  border-color:var(--screen-hud-accent-hover);
  background:var(--screen-hud-accent-hover);
  width:5px;
  height:5px;
  left:-3.5px;
}
.viewport-context-field span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--screen-hud-muted); font-size:10px; font-weight:800; letter-spacing:.07em; }
.viewport-context-field input {
  width:72px;
  min-width:0;
  height:17px;
  padding:0;
  border:0;
  border-bottom:1px solid transparent;
  background:transparent;
  color:var(--screen-hud-text);
  text-align:right;
  font:700 11px/1 system-ui,-apple-system,"Segoe UI",sans-serif;
  outline:0;
  appearance:textfield;
  cursor:text;
}
.viewport-context-field input::-webkit-outer-spin-button,
.viewport-context-field input::-webkit-inner-spin-button { margin:0; appearance:none; }
.viewport-context-field input:focus { border-bottom-color:var(--screen-hud-accent); }
.viewport-context-field input:disabled { color:rgba(128,168,176,.48); }
.viewport-context-field em { color:rgba(128,168,176,.72); font-size:10px; font-style:normal; }

/* EDIT7 · contextual source-control mirrors keep the Blender Screen HUD
   language: no cards, only text, fine guide lines and orange active marks. */
.viewport-context-text-field,
.viewport-context-select {
  position:relative;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(76px,1fr) minmax(88px,1.2fr);
  align-items:center;
  gap:8px;
  min-height:29px;
  padding:2px 0 6px;
  border-bottom:1px solid var(--screen-hud-line-soft);
  background:transparent;
}
.viewport-context-text-field > span,
.viewport-context-select > span { color:var(--screen-hud-muted); font-size:10px; font-weight:800; letter-spacing:.07em; }
.viewport-context-text-field input,
.viewport-context-select select {
  width:100%;
  min-width:0;
  height:20px;
  padding:0 2px;
  border:0;
  border-bottom:1px solid rgba(111,155,166,.35);
  border-radius:0;
  outline:0;
  background:transparent;
  color:var(--screen-hud-text);
  font:700 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif;
}
.viewport-context-select { padding-right:12px; }
.viewport-context-select::after {
  content:"";
  position:absolute;
  right:2px;
  top:50%;
  width:4px;
  height:4px;
  border:1px solid var(--screen-hud-line);
  background:transparent;
  transform:translateY(-50%) rotate(45deg);
  box-shadow:1px 1px 0 var(--screen-hud-shadow);
  pointer-events:none;
}
.viewport-context-select select {
  color-scheme:dark;
  appearance:none;
  -webkit-appearance:none;
  padding-right:14px;
  cursor:pointer;
}
.viewport-context-select:focus-within::after,
.viewport-context-select:hover::after { border-color:var(--screen-hud-accent-hover); background:var(--screen-hud-accent-hover); }
.viewport-context-text-field input:focus,
.viewport-context-select select:focus { border-bottom-color:var(--screen-hud-accent); }
.viewport-context-text-field input:disabled,
.viewport-context-select select:disabled { opacity:.42; }
.viewport-context-toggle {
  position:relative;
  display:grid;
  grid-template-columns:13px 1fr auto;
  gap:7px;
  align-items:center;
  min-height:24px;
  color:var(--screen-hud-muted);
  font-size:10px;
  font-weight:800;
  letter-spacing:.07em;
  cursor:pointer;
}
.viewport-context-toggle input { position:absolute; opacity:0; pointer-events:none; }
.viewport-context-toggle i {
  width:9px;
  height:9px;
  border:1px solid rgba(111,155,166,.72);
  transform:rotate(45deg);
  box-shadow:1px 1px 0 var(--screen-hud-shadow);
}
.viewport-context-toggle input:checked + i { border-color:var(--screen-hud-accent); background:var(--screen-hud-accent); }
.viewport-context-toggle::after {
  content:"OFF";
  color:var(--screen-hud-muted);
  font-size:10px;
  font-weight:800;
  letter-spacing:.06em;
}
.viewport-context-toggle:has(input:checked)::after { content:"ON"; color:var(--screen-hud-accent); }
.viewport-context-toggle:hover { color:var(--screen-hud-text); }
.viewport-context-toggle input:disabled ~ * { opacity:.36; cursor:default; }

.viewport-edge-group.context-column {
  top:54px;
  bottom:58px;
  transform:none;
  width:min(270px,29vw);
  max-height:none;
  /* LOCAL-17ROOM4H · A context column has a definite height because both top
     and bottom are set. CSS Grid's default stretch alignment was therefore
     stretching the title/body tracks, and then the section rows, across that
     entire height. Keep the scroll viewport full-height but pack all actual
     Screen HUD content at the top. */
  align-content:start;
  grid-template-rows:max-content max-content;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:5px;
  scrollbar-width:thin;
  scrollbar-color:rgba(112,157,167,.24) transparent;
  mask-image:linear-gradient(to bottom,transparent 0,#000 10px,#000 calc(100% - 10px),transparent 100%);
  padding-top:10px;
  padding-bottom:10px;
}
.viewport-edge-group.context-column > .viewport-edge-group-body {
  align-content:start;
  grid-auto-rows:max-content;
}
.viewport-edge-group.context-column .viewport-edge-section { align-content:start; }
.viewport-edge-group.context-column.dock-right { padding-right:0; padding-left:5px; }
.viewport-edge-group.context-column::-webkit-scrollbar { width:3px; }
.viewport-edge-group.context-column::-webkit-scrollbar-thumb { background:rgba(112,157,167,.24); }
.viewport-edge-group.context-tabs { width:min(620px,calc(100% - 620px)); min-width:420px; }
.viewport-edge-group.context-tabs .viewport-context-actions { grid-template-columns:repeat(7,minmax(0,1fr)); gap:7px; }
.viewport-edge-group.context-tabs .viewport-screen-hud-button,
.viewport-edge-group.context-tabs .viewport-context-actions button { font-size:10px; letter-spacing:.035em; }

.viewport-context-readout {
  display:flex;
  justify-content:space-between;
  gap:8px;
  min-height:24px;
  align-items:center;
  padding:2px 0 4px;
  border:0;
  border-bottom:1px solid var(--screen-hud-line-soft);
  color:var(--screen-hud-muted);
  font-size:10px;
  background:transparent;
}
.viewport-context-readout strong { color:var(--screen-hud-text); font-size:10px; }
.viewport-context-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.viewport-context-actions.three { grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.viewport-context-actions.one { grid-template-columns:minmax(0,1fr); }
.viewport-context-actions.dense { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 14px; }
.viewport-screen-hud-button,
.viewport-context-actions button {
  position:relative;
  width:100%;
  min-height:25px;
  padding:2px 4px 7px;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--screen-hud-muted);
  font-size:10px;
  font-weight:800;
  letter-spacing:.055em;
  cursor:pointer;
  backdrop-filter:none;
}
.viewport-screen-hud-button::after,
.viewport-context-actions button::after {
  content:"";
  position:absolute;
  left:19%;
  right:19%;
  bottom:2px;
  height:1px;
  background:var(--screen-hud-line-soft);
  pointer-events:none;
}
.viewport-screen-hud-button::before,
.viewport-context-actions button::before {
  content:"";
  position:absolute;
  left:calc(19% - 7px);
  bottom:0;
  width:4px;
  height:4px;
  border:1px solid transparent;
  transform:rotate(45deg);
  pointer-events:none;
}
.viewport-screen-hud-button:hover,
.viewport-context-actions button:hover { color:var(--screen-hud-accent-hover); background:transparent; }
.viewport-screen-hud-button:hover::after,
.viewport-context-actions button:hover::after { height:2px; background:var(--screen-hud-accent-hover); }
.viewport-screen-hud-button:hover::before,
.viewport-context-actions button:hover::before { border-color:var(--screen-hud-accent-hover); background:var(--screen-hud-accent-hover); }
.viewport-screen-hud-button.accent,
.viewport-context-actions button.accent { color:var(--screen-hud-text); background:transparent; }
.viewport-screen-hud-button.accent::after,
.viewport-context-actions button.accent::after { height:2px; background:var(--screen-hud-accent); }
.viewport-screen-hud-button.accent::before,
.viewport-context-actions button.accent::before { border-color:var(--screen-hud-accent); background:var(--screen-hud-accent); }
.viewport-screen-hud-button.accent:hover,
.viewport-context-actions button.accent:hover { color:var(--screen-hud-accent-hover); background:transparent; }
.viewport-screen-hud-button.accent:hover::after,
.viewport-screen-hud-button.accent:hover::before,
.viewport-context-actions button.accent:hover::after,
.viewport-context-actions button.accent:hover::before { background:var(--screen-hud-accent-hover); border-color:var(--screen-hud-accent-hover); }
.viewport-screen-hud-button.danger,
.viewport-context-actions button.danger { color:var(--screen-hud-muted); background:transparent; }
.viewport-screen-hud-button.danger::after,
.viewport-context-actions button.danger::after { background:var(--screen-hud-line-soft); }
.viewport-screen-hud-button.danger:hover,
.viewport-context-actions button.danger:hover { color:var(--screen-hud-accent-hover); background:transparent; }
.viewport-screen-hud-button.danger:hover::after,
.viewport-context-actions button.danger:hover::after { background:var(--screen-hud-accent-hover); }
.viewport-screen-hud-button:disabled,
.viewport-context-actions button:disabled { opacity:.34; cursor:default; filter:saturate(.35); }
.viewport-screen-hud-button:disabled:hover,
.viewport-context-actions button:disabled:hover { color:var(--screen-hud-muted); background:transparent; }
.viewport-screen-hud-button:disabled:hover::after,
.viewport-context-actions button:disabled:hover::after { height:1px; background:var(--screen-hud-line-soft); }
.viewport-screen-hud-button:disabled:hover::before,
.viewport-context-actions button:disabled:hover::before { border-color:transparent; background:transparent; }
.viewport-context-readout.muted strong { color:rgba(128,168,176,.58); }

@media (max-width: 900px), (max-height: 620px) {
  .viewport-edge-group { width:190px; }
  .viewport-edge-group.dock-left { left:10px; }
  .viewport-edge-group.dock-right,.viewport-edge-group.dock-right-bottom,.viewport-edge-group.dock-bottom-right { right:10px; }
  .viewport-context-identity { left:10px; top:10px; }
  .viewport-edge-group.dock-bottom,.viewport-edge-group.dock-right-bottom,.viewport-edge-group.dock-bottom-left,.viewport-edge-group.dock-bottom-right { bottom:10px; }
  .viewport-edge-group.dock-bottom-left { left:10px; width:280px; }
  .viewport-edge-group.dock-bottom-right { width:280px; }
  .viewport-edge-group.dock-top { top:10px; width:220px; min-width:190px; }
  .viewport-edge-group.context-column { top:48px; bottom:52px; width:min(220px,31vw); }
  .viewport-edge-group.context-tabs { width:min(520px,calc(100% - 470px)); min-width:360px; }
  .viewport-edge-group.context-tabs .viewport-context-actions { gap:4px; }
}

body.nesting-active .view-gizmo, body.cnc-active .view-gizmo, body.publisher-active .view-gizmo,
body.nesting-active .gizmo-projection-toggle, body.cnc-active .gizmo-projection-toggle, body.publisher-active .gizmo-projection-toggle,

@media (max-width: 1100px) {
  .viewport-hotkey-layout { width:min(920px,calc(100% - 80px)); gap:18px; }
}
@media (max-width: 900px) {
  .viewport-hotkey-panel .viewport-context-body { padding:50px 26px 34px; }
  .viewport-hotkey-layout { grid-template-columns:1fr; width:min(560px,calc(100% - 52px)); gap:14px; }
}
body.nesting-active .viewport-context-panel, body.cnc-active .viewport-context-panel, body.publisher-active .viewport-context-panel { display:none !important; }
body.nesting-active .viewport-hotkey-hint, body.cnc-active .viewport-hotkey-hint, body.publisher-active .viewport-hotkey-hint { display:none !important; }

@media (max-width: 1040px) {
  .viewer-header .viewer-group:first-child .viewer-button { padding:0 4px; font-size:10px; }
  .viewer-select { min-width:104px; }
  .view-gizmo { transform:scale(.9); transform-origin:top right; }
  .gizmo-projection-toggle { right:25px; }
}

/* EDIT3 · keep the complete edge HUD usable on compact windows without ever
   becoming a centered modal. */
@media (max-width: 1050px) {
  .viewport-edge-group.dock-bottom-left { width:230px; }
  .viewport-edge-group.dock-bottom-right { width:230px; }
  .viewport-edge-group.dock-top { width:200px; min-width:180px; }
}
@media (max-height: 650px) {
  .viewport-edge-group { width:205px; }
  .viewport-edge-group.dock-left,.viewport-edge-group.dock-right { top:40%; }
  .viewport-edge-group.dock-bottom-left,.viewport-edge-group.dock-bottom-right { width:250px; }
  .viewport-context-field { min-height:25px; }
  .viewport-screen-hud-button,
.viewport-context-actions button { min-height:24px; }
}

/* LOCAL-17ROOM3 · ROOM1/ROOM2 wall graph + cabinet hosting + whole-run corners. Reuse the
   Blender Screen HUD language rather than introducing a second web panel. */
.room-screen-hud {
  --screen-hud-text:#eaf7fa;
  --screen-hud-muted:#80a8b0;
  --screen-hud-line:#78b8c4;
  --screen-hud-line-soft:rgba(92,140,150,.32);
  --screen-hud-track:rgba(117,158,166,.30);
  --screen-hud-accent:#ff6b0f;
  --screen-hud-accent-soft:rgba(255,107,15,.22);
  --screen-hud-accent-hover:#ffa838;
  --screen-hud-shadow:rgba(0,0,0,.72);
  /* ROOM4C · one canonical side-workstation geometry.  ROOM / PLACE / FEATURE / RUN
     share the same width and the same label/value axis instead of sizing to content. */
  --room-hud-side-width:255px;
  --room-hud-label-width:104px;
  --room-hud-unit-width:24px;
  --room-hud-action-gap:10px;
  position:absolute;
  inset:35px 0 0;
  z-index:9;
  color:var(--screen-hud-text);
  pointer-events:none;
  overflow:hidden;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
}
.room-screen-hud[hidden] { display:none; }
.room-screen-hud :is(strong,span,small,em,button,input,select) { text-shadow:1px 1px 0 var(--screen-hud-shadow); }
.room-hud-identity {
  position:absolute;
  left:18px;
  top:14px;
  width:min(280px,calc(100% - 36px));
  display:flex;
  align-items:flex-start;
  pointer-events:none;
}
.room-hud-identity > div { position:relative; min-width:0; display:grid; gap:2px; padding-left:19px; }
.room-hud-identity > div::before { content:""; position:absolute; left:0; top:7px; width:12px; height:2px; background:var(--screen-hud-accent); box-shadow:1px 1px 0 var(--screen-hud-shadow); }
.room-hud-identity small { color:var(--screen-hud-muted); font-size:10px; font-weight:800; letter-spacing:.14em; }
.room-hud-identity strong { color:var(--screen-hud-text); font-size:12px; font-weight:720; }
.room-hud-identity span { color:rgba(128,168,176,.72); font-size:10px; font-weight:700; letter-spacing:.08em; }
.room-screen-hud .viewport-edge-group { z-index:2; }
.room-screen-hud .room-type-group { width:min(500px,calc(100% - 620px)); min-width:360px; }
.room-screen-hud .room-preset-actions { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.room-screen-hud .room-preset-actions button { font-size:10px; }
.room-screen-hud .room-dimensions-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-documentation-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-placement-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-run-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-feature-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-appliance-group { width:var(--room-hud-side-width); }
.room-screen-hud .room-help-group { width:min(560px,calc(100% - 520px)); }
.room-screen-hud .room-help-group .viewport-context-readout { text-align:center; }
.room-screen-hud .viewport-context-field,
.room-screen-hud .viewport-context-select,
.room-screen-hud .viewport-context-actions,
.room-screen-hud .viewport-context-readout { pointer-events:auto; }
/* Keep every ROOM side workstation on one visual ruler: labels begin together, values
   finish together, and all action rows use the same gutter rhythm. */
.room-screen-hud :is(.room-dimensions-group,.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) {
  box-sizing:border-box;
}
.room-screen-hud :is(.room-dimensions-group,.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-edge-group-body {
  width:100%;
}
.room-screen-hud :is(.room-dimensions-group,.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-context-field {
  grid-template-columns:var(--room-hud-label-width) minmax(0,1fr) var(--room-hud-unit-width);
}
.room-screen-hud :is(.room-dimensions-group,.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-context-field input {
  width:100%;
  text-align:right;
}
.room-screen-hud :is(.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) :is(.viewport-context-select,.viewport-context-text-field) {
  grid-template-columns:var(--room-hud-label-width) minmax(0,1fr);
}
.room-screen-hud :is(.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-context-select select {
  text-align:right;
  text-align-last:right;
}
.room-screen-hud :is(.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-context-readout {
  display:grid;
  grid-template-columns:var(--room-hud-label-width) minmax(0,1fr);
  align-items:center;
}
.room-screen-hud :is(.room-documentation-group,.room-placement-group,.room-run-group,.room-feature-group,.room-appliance-group) .viewport-context-readout strong {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:right;
}
.room-screen-hud .viewport-context-actions { gap:var(--room-hud-action-gap); }
.room-screen-hud .viewport-context-actions.three { gap:var(--room-hud-action-gap); }
.room-screen-hud .viewport-context-field { min-height:37px; }
.room-screen-hud .viewport-context-field input { cursor:text; }
.room-screen-hud .viewport-context-actions button.active { color:var(--screen-hud-text); }
.room-screen-hud .viewport-context-actions button.active::after { height:2px; background:var(--screen-hud-accent); }
.room-screen-hud .viewport-context-actions button.active::before { border-color:var(--screen-hud-accent); background:var(--screen-hud-accent); }
body.room-active #leftPanelToggle,
body.room-active #rightPanelToggle { opacity:.72; }
body.room-active .viewport-context-panel { z-index:11; }

@media (max-width:1100px) {
  .room-screen-hud { --room-hud-side-width:235px; --room-hud-label-width:94px; }
  .room-screen-hud .room-type-group { min-width:300px; width:calc(100% - 500px); }
  .room-screen-hud .room-preset-actions { grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px 10px; }
  .room-screen-hud .room-help-group { display:none; }
}

@media (max-height:650px) {
  .room-screen-hud { --room-hud-side-width:235px; --room-hud-label-width:94px; }
  .room-screen-hud .room-run-group .viewport-edge-group-body,
  .room-screen-hud .room-placement-group .viewport-edge-group-body { gap:5px; }
  .room-screen-hud .room-run-group .viewport-context-field,
  .room-screen-hud .room-placement-group .viewport-context-field { min-height:28px; }
  .room-screen-hud .room-help-group { display:none; }
}

/* LOCAL-17ROOM4 · wall-hosted openings / obstacle coordination. */
.room-screen-hud .room-feature-clearance-row { display:grid; grid-template-columns:1fr; gap:0; }
.room-screen-hud .room-feature-clearance-row .viewport-context-field { min-width:0; }
.room-screen-hud .viewport-context-readout strong.warning { color:var(--screen-hud-accent-hover); }
@media (max-width:1100px) {
}
@media (max-height:650px) {
  .room-screen-hud :is(.room-feature-group,.room-appliance-group) .viewport-edge-group-body { gap:5px; }
  .room-screen-hud :is(.room-feature-group,.room-appliance-group) .viewport-context-field { min-height:28px; }
}


/* LOCAL-17ROOM4A · ROOM static controls use the exact same frameless component
   language as the Blender E Screen HUD. Ordinary actions are hover-accented,
   numeric rows use track/ticks/progress/diamond, and toggles expose ON/OFF. */
.room-screen-hud .viewport-context-field.dragging { cursor:ew-resize; }
.room-screen-hud .viewport-context-field:not(.dragging) { cursor:ew-resize; }
.room-screen-hud .viewport-context-select:hover > span,
.room-screen-hud .viewport-context-select:focus-within > span { color:var(--screen-hud-text); }
.room-screen-hud .viewport-context-toggle:hover::after { color:var(--screen-hud-accent-hover); }


/* LOCAL-17ROOM4D · one vertical flow per viewport edge.
   ROOM/FEATURE and PLACE/RUN no longer use independent absolute anchors, so
   variable content height cannot make neighboring Screen HUD groups overlap. */
.room-screen-hud {
  /* ROOM4E · reserve one shared top safe-area for both side stacks.
     The HUD layer begins 35px below the viewport shell; 112px here places the
     side workstations below the top-left ROOM identity and the 92px view gizmo
     on the top-right.  Keeping this shared means both sides start on one ruler. */
  --room-hud-top-safe:112px;
  --room-hud-stack-top:var(--room-hud-top-safe);
  --room-hud-stack-bottom:54px;
  --room-hud-stack-gap:18px;
}
.room-screen-hud .room-hud-stack {
  position:absolute;
  top:var(--room-hud-stack-top);
  bottom:var(--room-hud-stack-bottom);
  width:var(--room-hud-side-width);
  min-height:0;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:var(--room-hud-stack-gap);
  overflow-x:visible;
  overflow-y:auto;
  scrollbar-width:none;
  pointer-events:none;
  z-index:2;
}
.room-screen-hud .room-hud-stack::-webkit-scrollbar { display:none; }
.room-screen-hud .room-hud-stack-left { left:18px; }
.room-screen-hud .room-hud-stack-right { right:18px; }
.room-screen-hud .room-hud-stack > .viewport-edge-group {
  position:relative;
  inset:auto;
  left:auto;
  right:auto;
  top:auto;
  bottom:auto;
  width:100%;
  transform:none;
  flex:0 0 auto;
  pointer-events:auto;
}
.room-screen-hud .room-hud-stack > .viewport-edge-group[hidden] { display:none; }

@media (max-width:1100px) {
  .room-screen-hud { --room-hud-stack-gap:14px; }
  .room-screen-hud .room-hud-stack-left { left:10px; }
  .room-screen-hud .room-hud-stack-right { right:10px; }
}
@media (max-height:650px) {
  .room-screen-hud {
    /* Compact height still respects the corner chrome; the stacks scroll rather
       than climbing back into the header / gizmo safe-area. */
    --room-hud-top-safe:104px;
    --room-hud-stack-top:var(--room-hud-top-safe);
    --room-hud-stack-bottom:10px;
    --room-hud-stack-gap:10px;
  }
}
/* LOCAL-17ROOM5C · direct run fitting, clearance grips and neighbour clash feedback. */
.room-edit-grip.clearance .room-edit-grip-diamond { fill:#9ec2cd; }
.room-edit-grip.fit .room-edit-grip-diamond { fill:#ff7100; }
.room-edit-grip.turn .room-edit-grip-diamond,
.room-edit-grip.pack .room-edit-grip-diamond { fill:#75a7b5; }
.room-edit-grip.turn:hover .room-edit-grip-diamond,
.room-edit-grip.pack:hover .room-edit-grip-diamond { fill:#ff7100; }
.room-wall-span.fit-preview { stroke:#ffb06d; stroke-width:2; stroke-dasharray:8 4; opacity:.95; }
.room-wall-span-label.fit-preview { fill:#ffb06d; }
.room-wall-span.collision { stroke:#ff4058; stroke-width:3; stroke-dasharray:3 3; opacity:1; }
.room-wall-span-label.collision { fill:#ff7c8d; }

/* LOCAL-17ROOM7B · semantic Run end-condition markers. */
.room-finish-marker { pointer-events:none; opacity:.9; }
.room-finish-marker-tick { stroke:#75a7b5; stroke-width:1.25; vector-effect:non-scaling-stroke; }
.room-finish-marker-diamond { fill:#1c2428; stroke:#75a7b5; stroke-width:1; vector-effect:non-scaling-stroke; }
.room-finish-marker-label { fill:#9fc5d0; font-size:10px; font-weight:700; letter-spacing:.06em; paint-order:stroke; stroke:#101315; stroke-width:2px; }
.room-finish-marker.open .room-finish-marker-tick { stroke:#ff7100; }
.room-finish-marker.open .room-finish-marker-diamond { fill:#ff7100; stroke:#101315; }
.room-finish-marker.open .room-finish-marker-label { fill:#ffb06d; }
.room-finish-marker.filler .room-finish-marker-diamond { fill:#75a7b5; stroke:#101315; }
.room-finish-marker.appliance .room-finish-marker-diamond,
.room-finish-marker.cabinet .room-finish-marker-diamond,
.room-finish-marker.adjoining_run .room-finish-marker-diamond { fill:#8fb1bb; stroke:#101315; }

/* LOCAL-17ROOM8A · automatic ROOM wall elevation workspace.
   This is a viewport mode, not a modal dialog.  It sits over the 3D canvas and
   renders the exact aBSy Vector document returned by the standalone host. */
.room-elevation-workspace {
  position:absolute;
  inset:35px 0 0;
  z-index:14;
  display:grid;
  grid-template-rows:58px minmax(0,1fr) 30px;
  background:#3f474c;
  color:#eaf7fa;
  font-family:system-ui,-apple-system,"Segoe UI",sans-serif;
}
.room-elevation-workspace[hidden] { display:none; }
.room-elevation-header {
  min-width:0;
  display:grid;
  grid-template-columns:minmax(230px,1fr) auto minmax(230px,1fr);
  align-items:center;
  gap:16px;
  padding:0 18px;
  border-bottom:1px solid rgba(119,151,159,.28);
  background:#242a2e;
}
.room-elevation-heading { display:grid; gap:1px; min-width:0; }
.room-elevation-heading small { color:#80a8b0; font-size:10px; font-weight:800; letter-spacing:.13em; }
.room-elevation-heading strong { color:#f0f8fa; font-size:12px; letter-spacing:.035em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.room-elevation-heading span { color:rgba(128,168,176,.68); font-size:10px; font-weight:700; letter-spacing:.07em; }
.room-elevation-wall-tabs { display:flex; gap:12px; align-items:center; justify-content:center; }
.room-elevation-wall-tabs button,
.room-elevation-actions button {
  position:relative;
  min-width:54px;
  height:28px;
  padding:0 5px;
  border:0;
  background:transparent;
  color:#80a8b0;
  font:800 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif;
  letter-spacing:.06em;
  cursor:pointer;
}
.room-elevation-wall-tabs button::after,
.room-elevation-actions button::after { content:""; position:absolute; left:0; right:0; bottom:1px; height:1px; background:rgba(92,140,150,.34); }
.room-elevation-wall-tabs button::before,
.room-elevation-actions button::before { content:""; position:absolute; left:18%; bottom:0; width:4px; height:4px; border:1px solid transparent; transform:rotate(45deg); }
.room-elevation-wall-tabs button:hover,
.room-elevation-actions button:hover { color:#ffa838; }
.room-elevation-wall-tabs button:hover::after,
.room-elevation-actions button:hover::after { height:2px; background:#ffa838; }
.room-elevation-wall-tabs button:hover::before,
.room-elevation-actions button:hover::before { border-color:#ffa838; background:#ffa838; }
.room-elevation-wall-tabs button.active { color:#eef9fb; }
.room-elevation-wall-tabs button.active::after { height:2px; background:#ff6b0f; }
.room-elevation-wall-tabs button.active::before { border-color:#ff6b0f; background:#ff6b0f; }
.room-elevation-actions { justify-self:end; display:flex; gap:14px; }
.room-elevation-stage {
  position:relative;
  min-width:0;
  min-height:0;
  display:grid;
  place-items:center;
  overflow:auto;
  padding:24px 30px;
  background:#596166;
}
.room-elevation-paper {
  width:min(1180px,calc(100% - 18px));
  aspect-ratio:16 / 9;
  max-height:calc(100% - 18px);
  background:#fff;
  box-shadow:0 7px 28px rgba(0,0,0,.24),0 0 0 1px rgba(0,0,0,.18);
}
.room-elevation-paper svg { width:100%; height:100%; display:block; }
.room-elevation-loading {
  color:#c6dadd;
  font-size:11px;
  font-weight:800;
  letter-spacing:.12em;
}
.room-elevation-footer {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:0 18px;
  border-top:1px solid rgba(119,151,159,.24);
  background:#242a2e;
  color:#80a8b0;
  font-size:10px;
  font-weight:750;
  letter-spacing:.07em;
}
.room-elevation-footer strong { color:#9fc1c7; font-size:10px; }
@media (max-width:900px) {
  .room-elevation-header { grid-template-columns:1fr auto; }
  .room-elevation-wall-tabs { grid-row:2; grid-column:1 / -1; padding-bottom:4px; }
  .room-elevation-header { grid-template-rows:32px 24px; height:auto; gap:0 12px; }
  .room-elevation-workspace { grid-template-rows:62px minmax(0,1fr) 28px; }
  .room-elevation-stage { padding:12px; }
}

/* WEB0E4 · semantic 3D export ------------------------------------------------ */
.export-control { position: relative; display: inline-flex; align-items: center; }
.export-menu {
  position: absolute;
  top: calc(100% + 7px);
  right: 0;
  z-index: 1800;
  width: 294px;
  padding: 10px;
  border: 1px solid #3a3d40;
  border-radius: 4px;
  background: #17191b;
  box-shadow: 0 15px 38px rgba(0,0,0,.48);
  color: #c8cbce;
}
.export-menu[hidden] { display: none !important; }
.export-menu-title {
  padding: 1px 2px 8px;
  color: #e4c07d;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .14em;
}
.export-row { display: grid; grid-template-columns: 58px 1fr; align-items: center; gap: 8px; padding: 7px 0 9px; border-top: 1px solid #2b2e31; }
.export-row > span { color: #7f858a; font-size: 10px; font-weight: 750; letter-spacing: .12em; }
.export-row select {
  min-width: 0;
  height: 27px;
  border: 1px solid #383c40;
  border-radius: 2px;
  background: #202326;
  color: #d8dbdd;
  padding: 0 7px;
  font: inherit;
  font-size: 10px;
}
.export-options { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 8px; padding: 0 0 9px; }
.export-options label {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 23px;
  color: #9ea3a7;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .055em;
  cursor: pointer;
}
.export-options input { accent-color: #b88732; }
.export-format-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; padding-top: 8px; border-top: 1px solid #2b2e31; }
.export-format-button {
  min-width: 0;
  min-height: 57px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 3px;
  padding: 7px;
  border: 1px solid #34383b;
  border-radius: 3px;
  background: #202326;
  color: #c7cbce;
  cursor: pointer;
}
.export-format-button:hover { border-color: #555b60; background: #292d30; color: #f2f2f2; }
.export-format-button.accent { border-color: #6b5122; background: #2b261b; }
.export-format-button strong { color: #e7c57f; font-size: 11px; letter-spacing: .08em; }
.export-format-button span { color: #858b90; font-size: 10px; line-height: 1.25; text-align: left; }
.export-project-button {
  width: 100%;
  height: 28px;
  margin-top: 7px;
  border: 1px solid #34383b;
  border-radius: 3px;
  background: #1d1f21;
  color: #969ca1;
  font-size: 10px;
  font-weight: 750;
  letter-spacing: .08em;
  cursor: pointer;
}
.export-project-button:hover { background: #292c2f; color: #e7e9ea; border-color: #4c5155; }
@media (max-width: 980px) {
  .export-menu { position: fixed; top: 48px; right: 8px; width: min(294px, calc(100vw - 16px)); }
}

/* WEB-UI1 · Cloud panels stay inside Designer instead of navigating away. */
.cloud-panel-overlay{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:34px;background:rgba(6,7,8,.70);backdrop-filter:blur(7px)}
.cloud-panel-overlay[hidden]{display:none}
.cloud-panel-window{width:min(1120px,calc(100vw - 50px));height:min(780px,calc(100vh - 50px));display:grid;grid-template-rows:46px minmax(0,1fr);overflow:hidden;border:1px solid #4a4d52;background:#17181b;box-shadow:0 30px 90px rgba(0,0,0,.6)}
.cloud-panel-header{display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 16px;border-bottom:1px solid #34363b;background:#222428}
.cloud-panel-header>div{display:flex;align-items:baseline;gap:10px}.cloud-panel-header small{color:#777b81;font-size:10px;letter-spacing:.13em}.cloud-panel-header strong{font-size:11px;letter-spacing:.12em;color:#e4e4e4}.cloud-panel-header button{width:30px;height:30px;border:1px solid transparent;background:transparent;color:#a8abb0;font-size:20px;cursor:pointer}.cloud-panel-header button:hover{background:#2c2e32;border-color:#45484e;color:#fff}.cloud-panel-window iframe{width:100%;height:100%;border:0;background:#17181b}
@media(max-width:760px){.cloud-panel-overlay{padding:8px}.cloud-panel-window{width:100%;height:100%}}

/* PREF1A · compact non-modal viewport preferences. The panel lives inside the
   viewport shell so it follows fullscreen mode and never blocks project/HUD
   workflows. It is intentionally dense, closer to a DCC preferences flyout
   than a modal dialog. */
.viewport-preferences {
  position:absolute;
  z-index:18;
  top:35px;
  right:8px;
  width:min(360px, calc(100% - 16px));
  max-height:calc(100% - 48px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border:1px solid #3a3c40;
  border-radius:4px;
  background:rgba(25,26,28,.985);
  box-shadow:0 18px 44px rgba(0,0,0,.38), 0 2px 7px rgba(0,0,0,.42);
  color:#c8c9cb;
  backdrop-filter:blur(10px);
}
.viewport-preferences[hidden] { display:none !important; }
.viewport-preferences-header {
  min-height:40px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 10px 0 12px;
  border-bottom:1px solid #34363a;
  background:#202124;
}
.viewport-preferences-header div { display:flex; flex-direction:column; line-height:1.05; }
.viewport-preferences-header small { color:#6f747a; font-size:10px; font-weight:750; letter-spacing:.12em; }
.viewport-preferences-header strong { margin-top:3px; color:#dedfe0; font-size:11px; font-weight:750; letter-spacing:.075em; }
.viewport-preferences-header button {
  width:25px; height:25px; border:0; border-radius:3px; background:transparent;
  color:#888d92; font-size:19px; line-height:20px; cursor:pointer;
}
.viewport-preferences-header button:hover { background:#2e3033; color:#e4e4e4; }
.viewport-preferences-body { overflow:auto; padding:7px; scrollbar-width:thin; }
.viewport-pref-section { padding:8px 8px 7px; border-bottom:1px solid #303236; }
.viewport-pref-section:last-child { border-bottom:0; }
.viewport-pref-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:7px; }
.viewport-pref-heading strong { color:#aeb2b6; font-size:10px; letter-spacing:.095em; }
.viewport-pref-heading span { color:#64696e; font-size:10px; letter-spacing:.035em; text-transform:uppercase; }
.viewport-pref-row {
  min-height:26px; display:grid; grid-template-columns:112px minmax(90px,1fr) 44px;
  gap:8px; align-items:center; color:#959a9f; font-size:10px;
}
.viewport-pref-row > span { white-space:nowrap; }
.viewport-pref-row input[type="range"] { width:100%; min-width:0; accent-color:#9b7a3d; cursor:ew-resize; }
.viewport-pref-row output { color:#d0d1d2; font-variant-numeric:tabular-nums; text-align:right; font-size:10px; }
.viewport-pref-check { min-height:25px; display:flex; align-items:center; gap:7px; color:#a6aaae; font-size:10px; cursor:pointer; }
.viewport-pref-check input { accent-color:#a48243; }
.viewport-pref-select { min-height:28px; display:grid; grid-template-columns:112px 1fr; gap:8px; align-items:center; color:#959a9f; font-size:10px; }
.viewport-pref-select select {
  height:23px; min-width:0; border:1px solid #3b3d41; border-radius:2px; background:#24262a;
  color:#c2c4c7; font:inherit; padding:0 5px; outline:none;
}
.viewport-preferences-footer { display:flex; justify-content:flex-end; gap:5px; padding:7px; border-top:1px solid #34363a; background:#202124; }
.viewport-preferences-footer button {
  height:24px; padding:0 10px; border:1px solid #3b3e42; border-radius:2px; background:#292b2f;
  color:#aeb1b5; font-size:10px; font-weight:750; letter-spacing:.08em; cursor:pointer;
}
.viewport-preferences-footer button:hover { color:#eee; background:#33353a; }
#viewportPreferencesAoTest { border-color:#6f5931; color:#d6b56f; }
#viewportPreferencesToggle.active { color:#e0bd78; border-color:#66532f; background:#2b281f; }
@media (max-width:720px) {
  .viewport-preferences { right:4px; top:33px; width:min(350px, calc(100% - 8px)); }
  .viewport-pref-row { grid-template-columns:102px minmax(80px,1fr) 42px; gap:6px; }
}

/* VIEW4C · compact saved-view library and camera history. */
.saved-views-panel {
  position:absolute; z-index:14; top:33px; right:5px; width:318px; max-height:min(520px,calc(100% - 42px));
  display:flex; flex-direction:column; border:1px solid #383b3f; border-radius:3px; overflow:hidden;
  background:rgba(30,32,35,.985); box-shadow:0 14px 32px rgba(0,0,0,.34); color:#b7babd;
}
.saved-views-panel[hidden] { display:none; }
.saved-views-header { height:34px; flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; padding:0 7px 0 9px; border-bottom:1px solid #35383c; background:#222428; }
.saved-views-header div { display:flex; align-items:baseline; gap:8px; min-width:0; }
.saved-views-header small { color:#686d72; font-size:10px; font-weight:750; letter-spacing:.09em; }
.saved-views-header strong { color:#d0d2d4; font-size:11px; letter-spacing:.11em; }
.saved-views-header button { width:24px; height:24px; border:0; background:transparent; color:#8e9296; font-size:16px; cursor:pointer; }
.saved-views-header button:hover { color:#eee; }
.saved-views-body { overflow:auto; padding:7px; }
.saved-views-section { padding:7px; border:1px solid #34373b; background:#26282c; }
.saved-views-section + .saved-views-section { margin-top:6px; }
.saved-views-heading { min-height:18px; display:flex; align-items:center; justify-content:space-between; color:#858a8f; font-size:10px; font-weight:800; letter-spacing:.09em; }
.saved-views-heading small { max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#63686d; font-size:10px; font-weight:700; letter-spacing:.04em; }
.saved-views-standard-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:4px; }
.saved-views-standard-grid button, .saved-view-create button, .saved-view-action {
  min-height:25px; border:1px solid #3b3e42; border-radius:2px; background:#2b2d31; color:#a9adb1;
  font:750 10px/1 system-ui,-apple-system,"Segoe UI",sans-serif; letter-spacing:.055em; cursor:pointer;
}
.saved-views-standard-grid button:hover, .saved-view-create button:hover, .saved-view-action:hover { color:#eee; background:#34373b; border-color:#4a4d52; }
.saved-views-standard-grid button[data-standard-view="ISO"] { color:#d5b570; border-color:#5c4d31; }
.saved-view-create { display:grid; grid-template-columns:1fr 58px; gap:5px; }
.saved-view-create input { height:25px; min-width:0; box-sizing:border-box; border:1px solid #3b3e42; border-radius:2px; background:#1f2124; color:#d1d3d5; padding:0 7px; font-size:10px; font-weight:650; letter-spacing:.04em; outline:none; }
.saved-view-create input:focus { border-color:#69604c; }
.saved-view-create button { color:#d7b774; border-color:#5d4e31; }
.saved-views-library { min-height:74px; }
.saved-views-list { display:flex; flex-direction:column; gap:3px; }
.saved-view-row { min-height:30px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:4px; padding:2px 3px 2px 7px; border:1px solid #34373b; border-radius:2px; background:#222428; }
.saved-view-recall { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:0; background:transparent; color:#c3c6c9; text-align:left; font-size:10px; font-weight:720; letter-spacing:.035em; cursor:pointer; }
.saved-view-recall:hover { color:#fff; }
.saved-view-actions { display:flex; gap:2px; }
.saved-view-action { width:26px; min-height:23px; padding:0; color:#777c81; }
.saved-view-action.danger:hover { color:#f1a38f; border-color:#68463d; }
.saved-views-empty { padding:10px 3px 4px; color:#666b70; font-size:10px; text-align:center; }
#savedViewsToggle.active { color:#e0bd78; border-color:#66532f; background:#2b281f; }
@media (max-width:760px) { .saved-views-panel { right:4px; width:min(318px,calc(100% - 8px)); } }

/* VIEW4C1 · native viewport pointer + DESIGN direct cabinet grips.
   The custom CAD crosshair/pickbox overlay was intentionally removed. */
.cabinet-grip-overlay {
  position:absolute; top:29px; bottom:0; left:0; right:0; width:100%; height:calc(100% - 29px);
  pointer-events:none; z-index:9; overflow:visible;
}
.cabinet-grip-overlay[hidden] { display:none; }
.cabinet-edit-grip { pointer-events:all; touch-action:none; }
.cabinet-edit-grip .axis { stroke:#79aeb8; stroke-width:1; vector-effect:non-scaling-stroke; opacity:.72; }
.cabinet-edit-grip .hit { fill:transparent; stroke:transparent; }
.cabinet-edit-grip .box { fill:#15191c; stroke:#8dc0ca; stroke-width:1.25; vector-effect:non-scaling-stroke; }
.cabinet-edit-grip .label {
  fill:#c7dbe0; font-family:inherit; font-size:10px; font-weight:800; letter-spacing:.055em;
  paint-order:stroke; stroke:rgba(12,15,17,.94); stroke-width:2px; pointer-events:none;
}
.cabinet-edit-grip:hover .axis,.cabinet-edit-grip.active .axis { stroke:#ff7100; opacity:1; }
.cabinet-edit-grip:hover .box,.cabinet-edit-grip.active .box { fill:#ff7100; stroke:#141719; }
.cabinet-edit-readout {
  fill:#ffb06d; font-family:inherit; font-size:10px; font-weight:800; letter-spacing:.04em;
  paint-order:stroke; stroke:rgba(12,15,17,.94); stroke-width:2.5px; pointer-events:none;
}
body.room-active .cabinet-grip-overlay,
body.nesting-active .cabinet-grip-overlay,
body.cnc-active .cabinet-grip-overlay,
body.publisher-active .cabinet-grip-overlay { display:none !important; }

/* VIEW4D · authoritative viewport preference profile. Global user defaults are
   visually separated from per-project camera/render state without turning the
   compact flyout into a modal settings application. */
.viewport-preferences-scope {
  min-height:28px; display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:0 10px 0 12px; border-bottom:1px solid #303236; background:#1d1f22;
  color:#6f7479; font-size:10px; letter-spacing:.08em;
}
.viewport-preferences-scope span { font-weight:800; color:#8b8f94; }
.viewport-preferences-scope strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#9a9ea3; font-size:10px; font-weight:700; text-align:right; }
#viewportPreferencesResetMode { border-color:#4b4d50; }
#viewportPreferencesFactoryReset { border-color:#5c4a31; color:#caaa70; }
#viewportPreferencesFactoryReset:hover { color:#efd39a; background:#362f24; }
\n\n/* BETA-FEEDBACK1 · compact authenticated beta feedback surface. */\n.feedback-button{border-color:rgba(133,179,214,.32);color:#b9d3e5}\n.feedback-button:hover{border-color:rgba(133,179,214,.58);color:#e2f1fb}\n.feedback-overlay{position:fixed;inset:0;z-index:10040;display:grid;place-items:center;padding:28px;background:rgba(6,7,8,.68);backdrop-filter:blur(7px)}\n.feedback-overlay[hidden]{display:none}\n.feedback-window{width:min(520px,calc(100vw - 32px));max-height:calc(100vh - 40px);overflow:auto;background:#15181c;border:1px solid #343a41;box-shadow:0 28px 90px rgba(0,0,0,.48)}\n.feedback-header{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #2d3238;background:#121417}\n.feedback-header>div{display:flex;flex-direction:column;gap:4px}.feedback-header small{font-size:10px;letter-spacing:.16em;color:#747d86}.feedback-header strong{font-size:12px;letter-spacing:.12em;color:#e0e4e7}\n.feedback-header button{width:28px;height:28px;border:0;background:transparent;color:#90979e;font-size:22px;cursor:pointer}.feedback-header button:hover{color:#fff}\n.feedback-body{padding:16px;display:grid;gap:13px}.feedback-body p{margin:0 0 2px;color:#969da4;font-size:12px;line-height:1.5}\n.feedback-field{display:grid;gap:6px}.feedback-field>span{font-size:10px;font-weight:700;letter-spacing:.13em;color:#777f87}.feedback-field select,.feedback-field textarea{width:100%;box-sizing:border-box;border:1px solid #343a41;background:#0f1114;color:#dfe3e6;font:inherit}.feedback-field select{height:34px;padding:0 9px}.feedback-field textarea{padding:10px;resize:vertical;min-height:122px;line-height:1.45}.feedback-field select:focus,.feedback-field textarea:focus{outline:1px solid #6b92ad;border-color:#6b92ad}\n.feedback-context{display:flex;align-items:center;gap:8px;color:#8f969d;font-size:11px}.feedback-context input{accent-color:#7fa6c2}\n.feedback-status{min-height:18px;color:#85909a;font-size:11px}.feedback-status.success{color:#9bc5a7}.feedback-status.error{color:#dc8e8e}\n.feedback-actions{display:flex;justify-content:flex-end;gap:6px;padding:12px 16px 15px;border-top:1px solid #2d3238}\n.feedback-actions .chrome-button{min-width:108px}.feedback-actions button:disabled{opacity:.5;cursor:wait}\n@media(max-width:600px){.feedback-overlay{padding:10px}.feedback-window{width:100%}}\n
/* VIEW4E45 · conservative multi-cabinet alignment UI. Secondary selections
   are SVG envelope guides; the primary cabinet keeps the existing orange
   Three.js selection outline and owns all alignment semantics. */
.multi-cabinet-outline { pointer-events:none; }
.multi-cabinet-outline line {
  stroke:#7da2aa; stroke-width:1; vector-effect:non-scaling-stroke;
  stroke-dasharray:5 4; opacity:.72;
}
.multi-cabinet-outline text {
  fill:#a9c1c6; font-family:inherit; font-size:9px; font-weight:780; letter-spacing:.055em;
  paint-order:stroke; stroke:rgba(10,13,15,.94); stroke-width:2.5px; pointer-events:none;
}
.multi-edit-toolbar {
  position:absolute; left:50%; bottom:14px; transform:translateX(-50%); z-index:14;
  min-height:32px; max-width:calc(100% - 32px); display:flex; align-items:center; gap:4px;
  padding:4px 5px; border:1px solid #3b4146; border-radius:3px;
  background:rgba(23,26,29,.94); box-shadow:0 10px 30px rgba(0,0,0,.28);
  backdrop-filter:blur(6px); white-space:nowrap;
}
.multi-edit-toolbar[hidden] { display:none; }
.multi-edit-toolbar strong {
  max-width:220px; overflow:hidden; text-overflow:ellipsis; padding:0 7px 0 5px;
  color:#9fb8be; font-size:9px; font-weight:820; letter-spacing:.07em;
}
.multi-edit-toolbar button {
  min-height:24px; padding:0 7px; border:1px solid #363b40; border-radius:2px;
  background:#202428; color:#aeb6bc; font:inherit; font-size:9px; font-weight:760;
  letter-spacing:.045em; cursor:pointer;
}
.multi-edit-toolbar button:hover { border-color:#6f8f97; color:#dce8eb; background:#283137; }
.multi-edit-toolbar button:active { transform:translateY(1px); }
.multi-edit-toolbar .multi-edit-clear { width:25px; padding:0; color:#7f878d; font-size:15px; }
.multi-edit-divider { width:1px; height:18px; margin:0 2px; background:#3b4044; }
body.room-active .multi-edit-toolbar,
body.nesting-active .multi-edit-toolbar,
body.cnc-active .multi-edit-toolbar,
body.publisher-active .multi-edit-toolbar { display:none !important; }
@media(max-width:850px){
  .multi-edit-toolbar strong { display:none; }
  .multi-edit-toolbar { max-width:calc(100% - 12px); overflow-x:auto; }
}

/* VIEW4E46 · semantic multi-shelf/divider alignment. Internal boards use a
   distinct dashed envelope so the existing orange primary part selection can
   remain the authoritative Screen HUD owner. */
.multi-internal-outline { pointer-events:none; }
.multi-internal-outline line {
  stroke:#86aeb5; stroke-width:1; vector-effect:non-scaling-stroke;
  stroke-dasharray:4 3; opacity:.68;
}
.multi-internal-outline.primary line { stroke:#d6ad67; opacity:.9; }
.multi-internal-outline text {
  fill:#b4cbd0; font-family:inherit; font-size:9px; font-weight:780; letter-spacing:.055em;
  paint-order:stroke; stroke:rgba(10,13,15,.94); stroke-width:2.5px; pointer-events:none;
}
.multi-internal-outline.primary text { fill:#e5bf7d; }
.multi-edit-toolbar .multi-internal-align {
  min-width:92px; border-color:#657f86; color:#d2e1e4; background:#263036;
}
.multi-edit-toolbar .multi-internal-align:hover { border-color:#8eb5bd; color:#f0fafb; background:#2d3b41; }


/* VIEW4E47 · advanced internal selection/distribution. */
.multi-edit-toolbar .multi-internal-equal {
  min-width:94px; border-color:#6f7865; color:#e1e5d2; background:#30342a;
}
.multi-edit-toolbar .multi-internal-equal:hover:not(:disabled) { border-color:#aab58b; color:#fbffe9; background:#3a4030; }
.multi-edit-toolbar .multi-internal-align:disabled,
.multi-edit-toolbar .multi-internal-equal:disabled { opacity:.38; cursor:not-allowed; }
.multi-internal-preview { pointer-events:none; }
.multi-internal-preview line {
  stroke:#c9d59c; stroke-width:1.15; stroke-dasharray:6 4; opacity:.8; vector-effect:non-scaling-stroke;
}
.multi-internal-preview circle {
  fill:rgba(21,25,19,.9); stroke:#d8e6a8; stroke-width:1.25; vector-effect:non-scaling-stroke;
}
.multi-internal-preview text {
  fill:#dce9b7; font-family:inherit; font-size:9px; font-weight:800; letter-spacing:.055em;
  paint-order:stroke; stroke:rgba(10,13,15,.94); stroke-width:2.5px;
}

/* VIEW4F1 · Drawings workspace -------------------------------------------------
   Drawings owns persistent one-view-per-page documentation. Publisher remains a
   downstream sheet compositor and is intentionally not involved here. */
body.drawings-active #app { grid-template-rows:42px minmax(0,1fr) 23px; }
body.drawings-active #bottomHud,
body.drawings-active #leftPanel,
body.drawings-active #rightPanel,
body.drawings-active #leftPanelToggle,
body.drawings-active #rightPanelToggle,
body.drawings-active .viewer-header,
body.drawings-active #viewport,
body.drawings-active #cadStyleViewport,
body.drawings-active #dimensionOverlay,
body.drawings-active #emptyState { display:none !important; }
body.drawings-active .viewport-shell { inset:0; }
body.drawings-active .view-gizmo,
body.drawings-active .viewport-context-panel,
body.drawings-active .viewport-hotkey-hint,
body.drawings-active .cabinet-grip-overlay,
body.drawings-active .room-grip-overlay,
body.drawings-active .multi-edit-toolbar { display:none !important; }

.drawings-studio {
  position:absolute; inset:0; z-index:32; min-width:0; min-height:0;
  display:grid; grid-template-rows:40px auto minmax(0,1fr);
  background:#0d0f11; color:#bec1c4;
}
.drawings-studio[hidden] { display:none; }
.drawings-commandbar {
  min-width:0; display:grid; grid-template-columns:220px auto minmax(120px,1fr) auto;
  align-items:center; gap:8px; padding:0 8px; border-bottom:1px solid #373a3e;
  background:#191b1e; user-select:none;
}
.drawings-title { display:flex; align-items:center; gap:8px; min-width:0; }
.drawings-mark { width:22px; height:22px; display:grid; place-items:center; border:1px solid #6a5730; background:#2a271f; color:#e0b86c; font-size:11px; font-weight:900; }
.drawings-title>div { min-width:0; display:flex; flex-direction:column; gap:2px; }
.drawings-title strong { color:#d9dbdd; font-size:11px; font-weight:750; letter-spacing:.11em; }
.drawings-title small { color:#73787e; font-size:10px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.drawings-command-group,.drawings-page-nav { display:flex; align-items:center; gap:5px; }
.drawings-build-progress {
  min-width:0; min-height:22px; display:grid; grid-template-columns:minmax(150px,230px) minmax(120px,1fr) 42px;
  align-items:center; gap:9px; padding:3px 10px; border-bottom:1px solid #30343a; background:#121417;
  color:#8e949a; user-select:none;
}
.drawings-build-progress[hidden] { display:none; }
.drawings-build-progress > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:9px; font-weight:800; letter-spacing:.085em; }
.drawings-build-progress > strong { color:#c6c9cc; font-size:9px; font-variant-numeric:tabular-nums; text-align:right; }
.drawings-build-progress-track { height:4px; overflow:hidden; border-radius:999px; background:#2b2e32; box-shadow:inset 0 0 0 1px #34383d; }
.drawings-build-progress-track > i { display:block; width:0%; height:100%; border-radius:inherit; background:#b38a46; transition:width .18s ease-out; }
.drawings-build-progress.is-complete .drawings-build-progress-track > i { background:#7d9b67; }
.drawings-page-nav { justify-self:end; color:#777c82; font-size:10px; font-weight:700; }
.drawings-command-button,.drawings-view-button {
  height:25px; padding:0 9px; border:1px solid #3b3e42; border-radius:1px; background:#222428;
  color:#979ca1; font-size:10px; font-weight:700; letter-spacing:.045em; cursor:pointer;
}
.drawings-command-button:hover,.drawings-view-button:hover { color:#e2e3e4; background:#2b2e32; border-color:#4d5156; }
.drawings-command-button.accent { border-color:#6a5730; background:#2a271f; color:#deb66d; }
.drawings-command-button:disabled,.drawings-view-button:disabled { opacity:.38; cursor:default; }
.drawings-view-button { min-width:28px; padding:0 7px; }
.drawings-body { min-width:0; min-height:0; display:grid; grid-template-columns:235px minmax(0,1fr) 245px; }
.drawings-browser,.drawings-inspector { min-width:0; min-height:0; background:#15171a; border-right:1px solid #34373b; display:flex; flex-direction:column; }
.drawings-inspector { border-right:0; border-left:1px solid #34373b; }
.drawings-pane-header { height:34px; flex:0 0 34px; display:flex; align-items:center; justify-content:space-between; padding:0 10px; border-bottom:1px solid #303338; color:#777c82; font-size:9px; letter-spacing:.08em; }
.drawings-pane-header strong { color:#b7babd; font-size:10px; }
.drawings-page-list { min-height:0; flex:1; overflow:auto; padding:5px; }
.drawings-cabinet-group { margin-bottom:7px; border:1px solid #292c30; background:#121416; }
.drawings-cabinet-group-title { padding:7px; display:flex; align-items:center; justify-content:space-between; gap:8px; color:#7d8287; font-size:9px; font-weight:800; letter-spacing:.07em; border-bottom:1px solid #292c30; }
.drawings-cabinet-group-title strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#aeb2b5; font-size:9px; }
.drawings-cabinet-group-title span { color:#676c71; font-size:8px; }
.drawings-browser-section+.drawings-browser-section { border-top:1px solid #292c30; }
.drawings-browser-section-title { height:25px; display:flex; align-items:center; justify-content:space-between; padding:0 7px; background:#101214; color:#656a70; font-size:8px; font-weight:800; letter-spacing:.08em; }
.drawings-browser-section-title em { font-style:normal; color:#555a60; }
.drawings-page-item { width:100%; min-width:0; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; align-items:center; padding:7px 7px 7px 9px; border:0; border-top:1px solid #23262a; background:transparent; color:#a6aaae; text-align:left; cursor:pointer; }
.drawings-page-item:hover { background:#202327; color:#d7d9db; }
.drawings-page-item.active { background:#2a271f; color:#e3c27e; box-shadow:inset 2px 0 #d6aa59; }
.drawings-page-copy { min-width:0; display:flex; flex-direction:column; gap:2px; }
.drawings-page-copy strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:inherit; font-size:10px; }
.drawings-page-copy small { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#62676c; font-size:7.5px; font-weight:750; letter-spacing:.07em; }
.drawings-page-item.active .drawings-page-copy small { color:#927b50; }
.drawings-page-badges { display:flex; align-items:center; gap:5px; color:#6f7479; }
.drawings-page-badges b { min-width:29px; color:#6f7479; font-size:8px; font-weight:750; text-align:right; }
.drawings-page-edited { width:5px; height:5px; border-radius:50%; background:#d6aa59; box-shadow:0 0 0 2px rgba(214,170,89,.10); }
.drawings-browser-empty { padding:14px 10px; color:#64696f; font-size:10px; line-height:1.5; }
.drawings-workarea { position:relative; min-width:0; min-height:0; display:grid; grid-template-rows:42px minmax(0,1fr); background:#25282b; }
.drawings-sheet-head { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:12px; padding:0 12px; background:#17191c; border-bottom:1px solid #35383c; }
.drawings-sheet-head>div:first-child { min-width:0; display:flex; align-items:baseline; gap:10px; }
.drawings-sheet-number { color:#777c82; font-size:9px; font-weight:800; letter-spacing:.08em; }
.drawings-sheet-head strong { color:#c9cbcd; font-size:11px; letter-spacing:.04em; }
.drawings-sheet-meta { justify-self:end; display:flex; align-items:center; gap:12px; color:#73787e; font-size:10px; }
.drawings-sheet-meta strong { color:#d9b66e; }
.drawings-canvas-tools { display:flex; align-items:center; justify-content:center; gap:4px; }
.drawings-canvas-tools .drawings-view-button { height:23px; min-width:25px; }
.drawings-fit-button { min-width:38px !important; }
.drawings-zoom-value { width:38px; color:#777c82; font-size:8px; font-weight:800; letter-spacing:.04em; text-align:right; }
.drawings-canvas { position:relative; min-width:0; min-height:0; overflow:auto; padding:28px; background:#272a2e; overscroll-behavior:contain; cursor:default; }
.drawings-canvas.is-panning { cursor:grabbing; user-select:none; }
.drawings-paper-stage { min-width:100%; min-height:100%; display:flex; align-items:center; justify-content:center; }
.drawings-svg { flex:0 0 auto; width:1188px; height:840px; max-width:none; display:block; background:#fff; box-shadow:0 10px 34px rgba(0,0,0,.34); }
.drawings-paper-caption { position:absolute; right:34px; bottom:11px; color:#666b70; font-size:9px; font-weight:700; letter-spacing:.08em; }
.drawings-empty { position:absolute; inset:42px 0 0 0; display:grid; place-items:center; z-index:2; color:#74797e; font-size:11px; pointer-events:none; }
.drawings-empty[hidden] { display:none; }
.drawings-inspector-scroll { min-height:0; flex:1; overflow:auto; padding:7px; display:flex; flex-direction:column; gap:7px; }
.drawings-inspector-card { padding:9px; border:1px solid #303338; background:#1a1c1f; display:flex; flex-direction:column; gap:7px; }
.drawings-inspector-card[hidden] { display:none !important; }
.drawings-inspector-card.grow { flex:1; }
.drawings-card-kicker { color:#6f7479; font-size:8px; font-weight:800; letter-spacing:.11em; }
.drawings-inspector-card>strong { color:#c8cacc; font-size:11px; }
.drawings-inspector-card>small { color:#70757a; font-size:9px; line-height:1.45; }
.drawings-field { display:grid; grid-template-columns:52px 1fr; align-items:center; gap:6px; color:#73787e; font-size:9px; font-weight:700; }
.drawings-field input,.drawings-field select { min-width:0; height:25px; border:1px solid #3a3d41; outline:0; background:#121416; color:#c0c3c6; padding:0 6px; font-size:10px; }
.drawings-info-grid { display:grid; grid-template-columns:62px 1fr; gap:7px 8px; font-size:9px; }
.drawings-info-grid span { color:#6f7479; }
.drawings-info-grid strong { color:#b8bbbe; font-size:9px; text-align:right; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.drawings-danger-button { height:27px; border:1px solid #5a3434; background:#281c1d; color:#c88989; font-size:9px; font-weight:800; letter-spacing:.06em; cursor:pointer; }
.drawings-danger-button:hover { background:#352123; color:#e3a2a2; }
.drawings-display-card { gap:8px; }
.drawings-display-actions { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.drawings-display-actions .drawings-command-button { min-width:0; height:28px; padding:0 4px; font-size:8px; }

@media (max-width:980px) {
  .drawings-body { grid-template-columns:190px minmax(0,1fr); }
  .drawings-inspector { display:none; }
}

/* VIEW4F3B · interactive semantic dimensions -------------------------------- */
.drawings-svg .drawing-dimension { cursor:grab; }
.drawings-svg.dimension-dragging .drawing-dimension { cursor:grabbing; }
.drawings-svg .drawing-dimension .drawing-dimension-hit { cursor:grab; }
.drawings-svg .drawing-dimension .drawing-dimension-text { cursor:move; pointer-events:all; }
.drawings-svg .drawing-dimension.selected line:not(.drawing-dimension-hit) { stroke:#b47724 !important; }
.drawings-svg .drawing-dimension.selected .drawing-dimension-text { fill:#8c5719 !important; }
.drawings-svg .drawing-dimension.hidden-ghost { opacity:.28; }
.drawings-svg .drawing-dimension.hidden-ghost line:not(.drawing-dimension-hit) { stroke:#b47724 !important; stroke-dasharray:5 4 !important; }
.drawings-svg .drawing-dimension.hidden-ghost .drawing-dimension-text { fill:#9b6a2e !important; }
.drawings-dimension-card { gap:8px; }
.drawings-dimension-info { padding-top:2px; border-top:1px solid #2f3236; }
.drawings-dimension-actions { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.drawings-dimension-actions #drawingsDimensionSelectChain { grid-column:1 / -1; }
.drawings-dimension-actions .drawings-command-button { min-width:0; padding:0 5px; }
.drawings-command-button.subtle { background:#17191c; color:#8e9398; }
.drawings-check { display:flex; align-items:center; gap:7px; color:#858a8f; font-size:8.5px; font-weight:700; letter-spacing:.04em; cursor:pointer; }
.drawings-check input { accent-color:#c79a4d; }

/* VIEW4F3C · semantic part/material leader callouts */
.drawings-svg .drawing-callout { cursor:grab; }
.drawings-svg.callout-dragging .drawing-callout { cursor:grabbing; }
.drawings-svg .drawing-callout .drawing-callout-hit,
.drawings-svg .drawing-callout .drawing-callout-text { cursor:move; }
.drawings-svg .drawing-callout.selected path:not(.drawing-callout-hit),
.drawings-svg .drawing-callout.selected circle { stroke:#b47724 !important; }
.drawings-svg .drawing-callout.selected .drawing-callout-text { fill:#8c5719 !important; }
.drawings-svg .drawing-callout.hidden-ghost { opacity:.28; }
.drawings-svg .drawing-callout.hidden-ghost path:not(.drawing-callout-hit) { stroke:#b47724 !important; stroke-dasharray:5 4 !important; }
.drawings-svg .drawing-callout.hidden-ghost .drawing-callout-text { fill:#9b6a2e !important; }
.drawings-callout-card { gap:8px; }
.drawings-callout-info { padding-top:2px; border-top:1px solid #2f3236; }
.drawings-callout-actions { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.drawings-callout-actions .drawings-command-button { min-width:0; padding:0 5px; }

/* VIEW4F3D · linked section/detail markers -------------------------------- */
.drawings-command-button.detail-active { border-color:#a87528; background:#30271a; color:#f0c879; box-shadow:inset 0 0 0 1px rgba(214,170,89,.18); }
.drawings-svg.detail-placement { cursor:crosshair; }
.drawings-svg .drawing-detail-preview { pointer-events:none; }
.drawings-svg .drawing-detail-preview rect { fill:rgba(214,170,89,.07); stroke:#b47724; stroke-width:1.1; stroke-dasharray:8 5; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-detail-preview text { fill:#8c5719; font-weight:800; font-size:10px; letter-spacing:.8px; }
.drawings-svg .drawing-detail-marker,
.drawings-svg .drawing-section-marker { cursor:pointer; }
.drawings-svg .drawing-detail-marker:hover rect,
.drawings-svg .drawing-detail-marker:hover circle,
.drawings-svg .drawing-section-marker:hover path,
.drawings-svg .drawing-section-marker:hover circle { stroke:#b47724 !important; }
.drawings-svg .drawing-detail-marker:hover text,
.drawings-svg .drawing-section-marker:hover text { fill:#8c5719 !important; }
.drawings-svg .drawing-detail-marker rect { fill:none; stroke:#5d6970; stroke-width:1.05; stroke-dasharray:7 4; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-detail-marker circle,
.drawings-svg .drawing-section-marker circle { fill:#fff; stroke:#26323a; stroke-width:1.1; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-detail-marker text,
.drawings-svg .drawing-section-marker text { fill:#26323a; font-size:9.5px; font-weight:850; text-anchor:middle; dominant-baseline:middle; }
.drawings-svg .drawing-section-marker path { fill:none; stroke:#4d5a62; stroke-width:1; stroke-dasharray:10 4 2 4; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-section-marker polygon { fill:#4d5a62; stroke:none; }
.drawings-detail-card { gap:8px; }
.drawings-detail-info { padding-top:2px; border-top:1px solid #2f3236; }
.drawings-detail-actions { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.drawings-detail-actions .drawings-command-button { min-width:0; padding-inline:7px; }
.drawings-svg .drawing-detail-marker .drawing-detail-bubble { cursor:pointer; }
.drawings-svg .drawing-detail-marker .drawing-detail-scale { font-size:7px; fill:#727c82; font-weight:750; dominant-baseline:middle; }
.drawings-svg .drawing-detail-marker.editing rect:first-child { stroke:#b47724; stroke-width:1.45; stroke-dasharray:8 4; fill:rgba(214,170,89,.055); cursor:move; }
.drawings-svg .drawing-detail-marker .drawing-detail-crop-grip { fill:#fff; stroke:#b47724; stroke-width:1.25; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-detail-marker .drawing-detail-crop-grip[data-crop-role="NW"],
.drawings-svg .drawing-detail-marker .drawing-detail-crop-grip[data-crop-role="SE"] { cursor:nwse-resize; }
.drawings-svg .drawing-detail-marker .drawing-detail-crop-grip[data-crop-role="NE"],
.drawings-svg .drawing-detail-marker .drawing-detail-crop-grip[data-crop-role="SW"] { cursor:nesw-resize; }
.drawings-svg .drawing-detail-marker .drawing-detail-crop-size { fill:#8c5719; font-size:8.2px; font-weight:800; text-anchor:middle; letter-spacing:.35px; pointer-events:none; }

/* VIEW4F4A · page-local manual notes and user leaders ---------------------- */
.drawings-svg.manual-annotation-placement { cursor:crosshair; }
.drawings-svg .drawing-manual-annotation { cursor:grab; }
.drawings-svg.manual-annotation-dragging .drawing-manual-annotation { cursor:grabbing; }
.drawings-svg .drawing-manual-text { cursor:move; pointer-events:all; user-select:none; }
.drawings-svg .drawing-manual-leader .drawing-manual-anchor { cursor:crosshair; }
.drawings-svg .drawing-manual-annotation.selected path,
.drawings-svg .drawing-manual-annotation.selected circle { stroke:#b47724 !important; }
.drawings-svg .drawing-manual-annotation.selected .drawing-manual-text { fill:#8c5719 !important; }
.drawings-svg .drawing-manual-placement-preview { pointer-events:none; opacity:.7; }
.drawings-svg .drawing-manual-placement-preview path { fill:none; stroke:#b47724; stroke-width:1; stroke-dasharray:7 4; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-manual-placement-preview .drawing-manual-text { fill:#8c5719; }
.drawings-manual-card { gap:8px; }
.drawings-manual-text-field { grid-template-columns:42px 1fr; align-items:start; }
.drawings-manual-text-field textarea { min-width:0; resize:vertical; border:1px solid #3a3d41; outline:0; background:#121416; color:#c0c3c6; padding:6px; font:10px/1.35 inherit; }
.drawings-manual-text-field textarea:focus { border-color:#8d6b34; box-shadow:inset 0 0 0 1px rgba(214,170,89,.14); }
.drawings-manual-actions { display:grid; grid-template-columns:1fr 74px; gap:5px; }
.drawings-manual-actions .drawings-command-button,
.drawings-manual-actions .drawings-danger-button { min-width:0; padding:0 5px; }


/* VIEW4F4B · custom dimensions + CAD-style annotation tracking */
.drawings-svg .drawing-manual-dimension { cursor:grab; }
.drawings-svg .drawing-manual-dimension .drawing-dimension-hit { cursor:move; }
.drawings-svg .drawing-manual-dimension-grip { fill:#fff; stroke:#b47724; stroke-width:1.15; cursor:crosshair; pointer-events:all; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-manual-dimension.selected line:not(.drawing-dimension-hit) { stroke:#b47724 !important; }
.drawings-svg .drawing-manual-dimension.selected .drawing-manual-dimension-text { fill:#8c5719 !important; }
.drawings-svg .drawing-manual-dimension-preview line { stroke:#b47724; stroke-dasharray:7 4; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-manual-dimension-preview circle { fill:#fff; stroke:#b47724; stroke-width:1; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-annotation-tracking { pointer-events:none; }
.drawings-svg .drawing-annotation-tracking line { stroke:#b47724; stroke-width:.85; stroke-dasharray:10 5 2 5; vector-effect:non-scaling-stroke; opacity:.78; }
.drawings-svg .drawing-annotation-tracking text { fill:#8c5719; font-size:8px; font-weight:800; letter-spacing:.9px; paint-order:stroke; stroke:#fff; stroke-width:3px; }


/* VIEW4F5A · DRAWINGS workspace refinement ---------------------------------
   Browser hierarchy, context inspector and paper navigation. */
body.drawings-active .drawings-canvas::-webkit-scrollbar { width:10px; height:10px; }
body.drawings-active .drawings-canvas::-webkit-scrollbar-track { background:#202327; }
body.drawings-active .drawings-canvas::-webkit-scrollbar-thumb { background:#4b4f54; border:2px solid #202327; }
body.drawings-active .drawings-canvas::-webkit-scrollbar-corner { background:#202327; }


/* VIEW4F5B · CAD-style selection + contextual HUD ------------------------- */
.drawings-canvas { position:relative; }
.drawings-selection-hud {
  position:sticky; top:12px; left:12px; z-index:8; width:max-content; max-width:min(520px,calc(100% - 24px));
  margin:12px 0 -54px 12px; padding:7px 10px 8px; display:grid; grid-template-columns:auto minmax(0,1fr); gap:2px 9px; align-items:baseline;
  border:1px solid rgba(190,137,57,.56); border-radius:3px; background:rgba(22,24,27,.94); box-shadow:0 7px 22px rgba(0,0,0,.26); pointer-events:none;
  backdrop-filter:blur(7px);
}
.drawings-selection-hud[hidden] { display:none !important; }
.drawings-selection-hud>span { grid-row:1 / span 2; align-self:center; color:#d2a458; font-size:8px; font-weight:900; letter-spacing:.12em; }
.drawings-selection-hud>strong { min-width:0; color:#e2e4e5; font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.drawings-selection-hud>small { color:#858b90; font-size:8px; line-height:1.25; }
.drawings-selection-hud.selection-pulse { animation:drawings-selection-pulse .18s ease-out; }
@keyframes drawings-selection-pulse { from { transform:translateY(-2px); opacity:.58; } to { transform:translateY(0); opacity:1; } }

.drawings-svg .drawing-dimension:hover line:not(.drawing-dimension-hit),
.drawings-svg .drawing-callout:hover path:not(.drawing-callout-hit),
.drawings-svg .drawing-callout:hover circle,
.drawings-svg .drawing-manual-annotation:hover path,
.drawings-svg .drawing-manual-annotation:hover circle { stroke:#9b6a2e !important; }
.drawings-svg .drawing-dimension:hover .drawing-dimension-text,
.drawings-svg .drawing-callout:hover .drawing-callout-text,
.drawings-svg .drawing-manual-annotation:hover .drawing-manual-text { fill:#76501f !important; }

.drawings-svg .drawing-selection-grip {
  fill:#fff; stroke:#b47724; stroke-width:1.15; vector-effect:non-scaling-stroke; pointer-events:all; cursor:move;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.2));
}
.drawings-svg .drawing-selection-grip:hover { fill:#f5d89a; stroke:#8c5719; }
.drawings-svg .drawing-selected-anchor { fill:#fff7e8 !important; stroke:#b47724 !important; stroke-width:1.3 !important; }
.drawings-svg .drawing-dimension-string-grip { cursor:ns-resize; }
.drawings-svg .drawing-dimension[data-dimension-side="LEFT"] .drawing-dimension-string-grip,
.drawings-svg .drawing-dimension[data-dimension-side="RIGHT"] .drawing-dimension-string-grip { cursor:ew-resize; }
.drawings-svg .drawing-dimension-text-grip { cursor:move; }
.drawings-svg .drawing-callout-text-grip,
.drawings-svg .drawing-manual-text-grip { cursor:move; }
.drawings-svg .drawing-manual-dimension-grip { fill:#fff; }

/* VIEW4F5C · full-page semantic tracking ---------------------------------- */
.drawings-svg .drawing-track-target {
  fill:#fff9ef; stroke:#b47724; stroke-width:1; vector-effect:non-scaling-stroke;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.16));
}
.drawings-svg .drawing-track-intersection { fill:rgba(255,255,255,.92); stroke:#b47724; stroke-width:1.15; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-track-intersection-dot { fill:#b47724; stroke:none; }
.drawings-svg .drawing-track-guide { opacity:.82; }

/* VIEW4F5D · multi-select, alignment and CAD window selection -------------- */
.drawings-multi-card { gap:8px; border-color:#4a3a24; background:linear-gradient(180deg,#1d1b18,#191a1c); }
.drawings-align-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; }
.drawings-align-grid .drawings-command-button { min-width:0; padding:0 4px; font-size:7.6px; }
.drawings-distribute-actions { display:grid; grid-template-columns:1fr 1fr; gap:5px; }
.drawings-distribute-actions .drawings-command-button { min-width:0; padding:0 4px; font-size:7.7px; }
.drawings-svg .drawing-selection-window { pointer-events:none; }
.drawings-svg .drawing-selection-window rect { stroke-width:1; vector-effect:non-scaling-stroke; }
.drawings-svg .drawing-selection-window.window rect { fill:rgba(56,116,181,.08); stroke:#477fb7; stroke-dasharray:6 3; }
.drawings-svg .drawing-selection-window.crossing rect { fill:rgba(66,153,100,.08); stroke:#4c9b68; stroke-dasharray:3 3; }
.drawings-svg .drawing-selection-window text { font-size:8px; font-weight:850; letter-spacing:.75px; paint-order:stroke; stroke:#fff; stroke-width:3px; }
.drawings-svg .drawing-selection-window.window text { fill:#477fb7; }
.drawings-svg .drawing-selection-window.crossing text { fill:#3f895a; }

/* VIEW4F5E · annotation organization, draw order + direct PDF publish ------- */
.drawings-publish-button {
  border-color:#695332; background:#27231c; color:#dfb86d;
  box-shadow:inset 0 0 0 1px rgba(214,170,89,.06);
}
.drawings-publish-button:hover { border-color:#8c6c39; background:#30291f; color:#f2ca7f; }
.drawings-publish-button.is-publishing { cursor:wait; opacity:.72; }

/* VIEW4G1A · generated annotation intelligence remains subtle and page-local. */
.drawings-smart-layout { width:100%; min-width:0; margin:2px 0 7px; background:#17191c; color:#8e9398; }
.drawings-smart-layout.active { border-color:#6a5730; background:#2a271f; color:#deb66d; box-shadow:inset 0 0 0 1px rgba(222,182,109,.08); }
.drawings-smart-layout.active::before { content:"●"; margin-right:5px; font-size:7px; vertical-align:1px; }
.drawings-organization-card { gap:8px; border-color:#38342b; background:linear-gradient(180deg,#1a1917,#17191b); }
.drawings-organization-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; }
.drawings-organization-actions .drawings-command-button { min-width:0; padding:0 4px; font-size:7.8px; }
.drawings-order-actions { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; }
.drawings-order-actions .drawings-command-button { min-width:0; padding:0 2px; font-size:7px; letter-spacing:.02em; }
.drawings-category-visibility { display:grid; grid-template-columns:1fr; gap:4px; padding-top:3px; border-top:1px solid #2f3236; }
.drawings-category-visibility label,.drawings-switch-row { min-width:0; display:flex; align-items:center; gap:6px; color:#8c9196; font-size:8px; font-weight:750; letter-spacing:.055em; cursor:pointer; }
.drawings-category-visibility input,.drawings-switch-row input { width:12px; height:12px; margin:0; accent-color:#b47724; }
.drawings-switch-row { padding-top:3px; color:#73797e; }
.drawings-svg .drawing-annotation-layer > .annotation-locked { cursor:default; }
.drawings-svg .drawing-annotation-layer > .annotation-locked .drawing-selection-grip { fill:#e7e7e7; stroke:#6e7377; cursor:not-allowed; }
.drawings-svg .drawing-annotation-layer > .annotation-locked.selected .drawing-dimension-text,
.drawings-svg .drawing-annotation-layer > .annotation-locked.selected .drawing-callout-text,
.drawings-svg .drawing-annotation-layer > .annotation-locked.selected .drawing-manual-text { text-decoration:underline; text-decoration-style:dotted; }
.drawings-svg .drawing-annotation-layer > .annotation-grouped.selected { filter:drop-shadow(0 0 1px rgba(180,119,36,.22)); }
.drawings-svg .drawing-manual-annotation.hidden-ghost { opacity:.28; }
.drawings-svg .drawing-manual-annotation.hidden-ghost path { stroke:#b47724 !important; stroke-dasharray:5 4 !important; }
.drawings-svg .drawing-manual-annotation.hidden-ghost circle { stroke:#b47724 !important; }
.drawings-svg .drawing-manual-annotation.hidden-ghost .drawing-manual-text { fill:#9b6a2e !important; }


/* VIEW4F5F · DRAWINGS workspace polish + QA -------------------------------
   Cursor state, keyboard focus, reduced-motion safety and dense-page polish. */
.drawings-canvas[data-drawing-cursor="POINT"] .drawings-svg,
.drawings-canvas[data-drawing-cursor="WINDOW"] .drawings-svg { cursor:crosshair; }
.drawings-canvas[data-drawing-cursor="DRAG"] .drawings-svg { cursor:grabbing; }
.drawings-canvas[data-drawing-cursor="PAN"],
.drawings-canvas[data-drawing-cursor="PAN"] .drawings-svg { cursor:grabbing; }
.drawings-canvas[data-drawing-cursor="SELECTED"] .drawings-svg { cursor:default; }
.drawings-svg .drawing-annotation-layer > .annotation-locked,
.drawings-svg .drawing-annotation-layer > .annotation-locked * { cursor:not-allowed !important; }
.drawings-command-button:focus-visible,
.drawings-view-button:focus-visible,
.drawings-page-item:focus-visible,
.drawings-field input:focus-visible,
.drawings-field select:focus-visible,
.drawings-manual-text-field textarea:focus-visible {
  outline:2px solid #b47724; outline-offset:2px; border-color:#8d6b34;
}
.drawings-page-item:focus-visible { position:relative; z-index:1; }
.drawings-svg .drawing-selection-grip { transition:fill .09s ease,stroke .09s ease,transform .09s ease; transform-box:fill-box; transform-origin:center; }
.drawings-svg .drawing-selection-grip:hover { transform:scale(1.16); }
.drawings-svg .drawing-annotation-layer > .annotation-locked .drawing-selection-grip:hover { transform:none; }
.drawings-inspector-scroll,.drawings-page-list { scrollbar-color:#4b4f54 #202327; scrollbar-width:thin; }
.drawings-canvas:focus-within { box-shadow:inset 0 0 0 1px rgba(214,170,89,.08); }
@media (prefers-reduced-motion:reduce) {
  .drawings-selection-hud.selection-pulse { animation:none; }
  .drawings-svg .drawing-selection-grip { transition:none; }
}

/* VIEW4G1A9 · ROOM native bottom HUD shared-layout correction -------------
   ROOM uses the exact same centered, responsive workstation deck as every
   other bottom-HUD panel. Do not override .hud-properties alignment, column
   sizing or .hud-control-cluster widths here; those are intentionally owned
   by the shared dynamic HUD CSS (LOCAL-16X / LOCAL-17P2A). */
.room-native-preset-row { grid-template-columns:repeat(4,minmax(92px,1fr)); }
.room-native-preset-row .hud-value.active,
.room-native-panel [data-room-dock-preset].active {
  border-color:#8a642d; background:#2c251b; color:#e4bd73;
}
.room-native-appliance-row { grid-template-columns:repeat(5,minmax(76px,1fr)); }
.room-native-panel .hud-readout.warning { color:#e68a72; }
.room-native-panel.room-native-inactive::after {
  content:"SELECT A RUN IN THE ROOM TO ENABLE RUN CONTROLS";
  align-self:center; padding:7px 9px; color:#777d82; font-size:8px; font-weight:800; letter-spacing:.08em;
  border:1px dashed #34373b; background:#181a1d;
}
@media (max-width:980px) {
  .room-native-preset-row { grid-template-columns:repeat(2,minmax(92px,1fr)); }
  .room-native-appliance-row { grid-template-columns:repeat(3,minmax(76px,1fr)); }
}

/* VIEW4G1D · page-local Drawing Visibility + Detail Rules */
.drawings-view-rules-card { gap:8px; }
.drawings-view-rule-switches,.drawings-view-category-grid { display:grid; grid-template-columns:1fr 1fr; gap:5px 8px; padding-top:5px; border-top:1px solid #2f3236; }
.drawings-view-rule-switches { grid-template-columns:1fr; }
.drawings-view-category-grid.compact { grid-template-columns:1fr; }
.drawings-view-rule-switches label,.drawings-view-category-grid label { min-width:0; display:flex; align-items:center; gap:6px; color:#8c9196; font-size:8px; font-weight:750; letter-spacing:.05em; cursor:pointer; }
.drawings-view-rule-switches input,.drawings-view-category-grid input { width:12px; height:12px; margin:0; accent-color:#b47724; }
.drawings-rule-heading { margin-top:2px; color:#686e73; font-size:7.5px; font-weight:800; letter-spacing:.12em; }
.drawings-view-rules-card select:disabled,.drawings-view-rules-card input:disabled { opacity:.48; cursor:not-allowed; }

/* VIEW4G1E · drawing issue check + performance polish ---------------------- */
.drawings-qa-card { gap:8px; border-color:#31363a; background:linear-gradient(180deg,#181a1c,#16181a); }
.drawings-qa-card.is-ready { border-color:#31463a; }
.drawings-qa-card.is-ready > strong { color:#9bc6a7; }
.drawings-qa-card.is-check { border-color:#65452f; background:linear-gradient(180deg,#201a17,#191817); }
.drawings-qa-card.is-check > strong { color:#e1a36d; }
.drawings-qa-grid { grid-template-columns:72px minmax(0,1fr); }
.drawings-qa-grid strong { text-align:right; }
.drawings-qa-card.is-check #drawingsQaGeometry,
.drawings-qa-card.is-check #drawingsQaLayout { color:#e2a16b; }

/* VIEW4G2A · Section Intelligence ----------------------------------------- */
.drawings-section-card { gap:8px; border-color:#394148; background:linear-gradient(180deg,#191c1f,#17191b); }
.drawings-section-grid { display:grid; gap:7px; }
.drawings-section-grid .drawings-field { margin:0; }
.drawings-section-grid input,.drawings-section-grid select { width:100%; }
.drawings-section-actions { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.drawings-section-card > strong { color:#d3d7da; }
.drawings-section-card .drawings-field > span { color:#737a80; }
.drawings-svg .drawing-section-cut-line { cursor:ew-resize; stroke-width:1.25; }
.drawings-svg.section-marker-dragging .drawing-section-cut-line { stroke:#b47724 !important; stroke-width:1.65 !important; }
.drawings-svg .drawing-section-marker:hover .drawing-section-cut-line { stroke:#b47724 !important; }
.drawings-svg .drawing-section-marker-position { fill:#717b81; font-size:7.5px; font-weight:750; letter-spacing:.04em; pointer-events:none; }

/* VIEW4G2D · persistent drawing-template controls share the same inspector
   language as View + Detail Rules. Custom templates are project data; page
   overrides remain visually separate and editable below. */
.drawings-template-card { gap:8px; }
.drawings-template-actions { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.drawings-template-card .drawings-rule-heading { margin-top:3px; padding-top:7px; border-top:1px solid #2f3236; }
.drawings-template-card select:disabled,.drawings-template-card input:disabled { opacity:.48; cursor:not-allowed; }

/* VIEW4G2E · Drawing Set + Issue Workflow ---------------------------------
   The issue panel is a focused documentation drawer. It overlays the current
   drawing without changing SVG coordinates, zoom, or annotation state. */
.drawings-issue-panel {
  position:absolute; z-index:48; top:40px; right:0; bottom:0; width:min(660px,calc(100% - 180px)); min-width:440px;
  display:grid; grid-template-rows:auto minmax(0,1fr) auto; border-left:1px solid #44484d;
  background:#111315; box-shadow:-18px 0 38px rgba(0,0,0,.32);
}
.drawings-issue-panel[hidden] { display:none !important; }
.drawings-issue-panel-head { min-height:52px; padding:8px 10px; display:flex; align-items:center; justify-content:space-between; gap:14px; border-bottom:1px solid #35383c; background:#191b1e; }
.drawings-issue-panel-head>div { min-width:0; display:grid; gap:2px; }
.drawings-issue-panel-head span { color:#8e7446; font-size:7.5px; font-weight:850; letter-spacing:.12em; }
.drawings-issue-panel-head strong { color:#d8dadc; font-size:12px; letter-spacing:.08em; }
.drawings-issue-panel-head small { color:#72787d; font-size:8.5px; font-weight:700; }
.drawings-issue-panel-head .drawings-view-button { font-size:17px; line-height:1; }
.drawings-issue-scroll { min-height:0; overflow:auto; padding:9px; display:flex; flex-direction:column; gap:8px; scrollbar-color:#4b4f54 #202327; scrollbar-width:thin; }
.drawings-issue-card { padding:10px; border:1px solid #303338; background:#181a1d; display:flex; flex-direction:column; gap:8px; }
.drawings-issue-card-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.drawings-issue-card-head>div { display:grid; gap:3px; }
.drawings-issue-card-head strong { color:#b9bdc0; font-size:9px; letter-spacing:.06em; }
.drawings-issue-meta-grid { display:grid; grid-template-columns:1fr 1fr; gap:7px 8px; }
.drawings-issue-meta-grid .drawings-field { grid-template-columns:72px minmax(0,1fr); }
.drawings-issue-meta-grid .drawings-field.wide { grid-column:1 / -1; }
.drawings-issue-page-list { display:flex; flex-direction:column; gap:4px; }
.drawings-issue-page { min-width:0; min-height:40px; display:grid; grid-template-columns:16px 28px minmax(0,1fr) 112px 48px; align-items:center; gap:7px; padding:5px 6px; border:1px solid #292c30; background:#141619; }
.drawings-issue-page.is-included { border-color:#3c392f; background:#191816; }
.drawings-issue-page>input[type="checkbox"] { width:12px; height:12px; margin:0; accent-color:#b47724; }
.drawings-issue-sheet-index { color:#8d7448; font-size:8px; font-weight:900; letter-spacing:.08em; text-align:center; }
.drawings-issue-page-copy { min-width:0; display:grid; gap:2px; }
.drawings-issue-page-copy strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#c4c7c9; font-size:9px; }
.drawings-issue-page-copy small { color:#696f74; font-size:7.5px; font-weight:700; }
.drawings-issue-number { min-width:0; width:100%; height:24px; padding:0 6px; border:1px solid #373b3f; background:#111315; color:#d0b071; font-size:8.5px; font-weight:800; outline:0; }
.drawings-issue-number:focus { border-color:#8d6b34; box-shadow:inset 0 0 0 1px rgba(214,170,89,.12); }
.drawings-issue-move { display:grid; grid-template-columns:1fr 1fr; gap:3px; }
.drawings-issue-move button { width:22px; height:22px; padding:0; border:1px solid #383c40; background:#202327; color:#858b90; cursor:pointer; }
.drawings-issue-move button:hover:not(:disabled) { color:#e0e2e3; background:#2a2d31; }
.drawings-issue-move button:disabled { opacity:.28; cursor:default; }
.drawings-issue-empty { padding:16px 10px; border:1px dashed #34383c; color:#6c7277; font-size:9px; text-align:center; }
.drawings-issue-check-card { border-color:#34393d; }
.drawings-issue-check-card>strong { color:#aeb3b7; font-size:11px; }
.drawings-issue-check-card>small { color:#73797e; font-size:8.5px; line-height:1.45; }
.drawings-issue-check-card.is-ready { border-color:#32493b; }
.drawings-issue-check-card.is-ready>strong { color:#9ec9aa; }
.drawings-issue-check-card.is-warning { border-color:#66502e; }
.drawings-issue-check-card.is-warning>strong { color:#ddb36a; }
.drawings-issue-check-card.is-error { border-color:#6a3834; background:#1e1717; }
.drawings-issue-check-card.is-error>strong { color:#dc8b82; }
.drawings-issue-check-list { display:flex; flex-direction:column; gap:3px; max-height:190px; overflow:auto; }
.drawings-issue-check-row { display:grid; grid-template-columns:94px minmax(0,1fr); gap:8px; padding:5px 6px; border:1px solid #292d31; background:#141619; font-size:8px; line-height:1.35; }
.drawings-issue-check-row strong { color:#8f969b; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.drawings-issue-check-row span { color:#8a9095; }
.drawings-issue-check-row.error strong,.drawings-issue-check-row.error span { color:#d98d85; }
.drawings-issue-check-row.warning strong { color:#d0aa65; }
.drawings-issue-check-row.ready { display:block; color:#95c3a2; border-color:#2f4437; }
.drawings-issue-actions { min-height:48px; display:grid; grid-template-columns:1fr 1fr; gap:7px; padding:9px; border-top:1px solid #35383c; background:#191b1e; }
.drawings-issue-actions .drawings-command-button { height:30px; }
@media (max-width:820px) {
  .drawings-issue-panel { width:100%; min-width:0; }
  .drawings-issue-meta-grid { grid-template-columns:1fr; }
  .drawings-issue-meta-grid .drawings-field.wide { grid-column:auto; }
  .drawings-issue-page { grid-template-columns:16px 24px minmax(0,1fr) 92px 48px; }
}

/* VIEW4G3A-D · fabrication part-detail inspector. Manufacturing identifiers
   and machining summaries are intentionally allowed to wrap instead of being
   ellipsized, because these are issue-critical production values. */
.drawings-part-detail-card { border-color:#3b3a34; }
.drawings-part-detail-card > strong { color:#d2c4a6; }
.drawings-part-detail-info { grid-template-columns:64px minmax(0,1fr); }
.drawings-part-detail-info strong { white-space:normal; overflow:visible; text-overflow:clip; line-height:1.35; overflow-wrap:anywhere; }
#drawingsPartDetailSync { color:#9eb5a5; }

/* VIEW4G3E · Fabrication QA + Release Check */
.drawings-fabrication-qa-card { border-color:#3d4549; }
.drawings-fabrication-qa-card.is-busy { opacity:.78; }
.drawings-fabrication-qa-grid { grid-template-columns:82px minmax(0,1fr); }
.drawings-fabrication-qa-grid strong { text-align:right; }
.drawings-fabrication-qa-card.is-error .drawings-fabrication-qa-grid strong { color:#dc8b82; }
.drawings-fabrication-qa-card.is-warning .drawings-fabrication-qa-grid strong { color:#ddb36a; }
.drawings-fabrication-qa-card.is-ready .drawings-fabrication-qa-grid strong { color:#9ec9aa; }

/* VIEW4G4A-E · Production Package + Workshop Release ---------------------- */
.drawings-production-package-card textarea {
  width: 100%; min-height: 54px; resize: vertical; box-sizing: border-box;
  border: 1px solid var(--line, rgba(127,127,127,.35)); border-radius: 5px;
  background: var(--panel-input, rgba(255,255,255,.04)); color: inherit;
  padding: 7px 8px; font: inherit;
}
.drawings-production-artifacts {
  display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 6px 10px;
  padding: 9px 0 10px; margin-top: 4px; border-top: 1px solid rgba(127,127,127,.16);
}
.drawings-production-artifacts label {
  display: flex; align-items: center; gap: 7px; min-width: 0;
  font-size: 10px; font-weight: 700; letter-spacing: .055em;
}
.drawings-production-artifacts input { accent-color: currentColor; }
.drawings-production-delta-card.is-clean { box-shadow: inset 3px 0 0 rgba(83,181,117,.65); }
.drawings-production-delta-card.is-dirty { box-shadow: inset 3px 0 0 rgba(226,161,62,.8); }
.drawings-production-delta-grid { grid-template-columns: auto 1fr auto 1fr; }
.drawings-production-workshop-list,
.drawings-production-release-list {
  display: grid; gap: 5px; max-height: 230px; overflow: auto; margin-top: 9px;
}
.drawings-production-workshop-row,
.drawings-production-release-row {
  display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; align-items: center;
  border: 1px solid rgba(127,127,127,.16); border-radius: 5px; padding: 7px 8px;
  background: rgba(127,127,127,.045);
}
button.drawings-production-workshop-row {
  width: 100%; color: inherit; text-align: left; cursor: pointer; font: inherit;
}
button.drawings-production-workshop-row:hover { background: rgba(127,127,127,.1); }
.drawings-production-workshop-row strong,
.drawings-production-release-row strong { display: block; font-size: 10px; letter-spacing: .035em; }
.drawings-production-workshop-row small,
.drawings-production-release-row small { display: block; margin-top: 2px; font-size: 9px; opacity: .72; }
.drawings-production-workshop-row b,
.drawings-production-release-row b { font-size: 9px; white-space: nowrap; opacity: .82; }
.drawings-production-actions { grid-template-columns: repeat(2, minmax(0,1fr)); }
.drawings-production-actions #drawingsProductionRelease { grid-column: 2; }
.drawings-production-actions #drawingsProductionBuild { grid-column: 1; }
.drawings-production-package-card.is-busy,
.drawings-production-delta-card.is-busy { opacity: .72; }
@media (max-width: 900px) {
  .drawings-production-artifacts { grid-template-columns: 1fr; }
}
/* VIEW4G5A · live production documents inside DRAWINGS -------------------- */
.drawings-production-document-group { border-color:#3b3428; }
.drawings-production-document-group-title { background:#171512; }
.drawings-production-document-group-title strong { color:#d0b678; }
.drawings-production-browser-section .drawings-browser-section-title { background:#141310; color:#8d8064; }
.drawings-production-page-item .drawings-page-copy small { color:#757b7f; }
.drawings-production-page-item .drawings-page-badges b { min-width:32px; text-align:center; }
.drawings-production-browser-state { padding:10px 8px; border-top:1px solid #292c30; color:#777d82; font-size:8.5px; line-height:1.45; }
.drawings-production-browser-state.warning { color:#c69476; }

/* VIEW4G5B · production cross-navigation */
.drawings-production-nav-card { box-shadow: inset 3px 0 0 rgba(201,151,52,.58); }
.drawings-production-part-info { margin-top:8px; }
.drawings-production-filter-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:7px; }
.drawings-production-nav-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; margin-top:8px; }
.drawings-production-nav-grid .drawings-command-button { min-width:0; padding-inline:5px; font-size:8px; }
.drawings-production-nav-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:6px; margin-top:7px; }
.drawings-production-nav-actions #drawingsProductionFilterClear { grid-column:1 / -1; }
.drawings-production-part-link { width:7px; height:7px; border-radius:50%; background:#c89a3d; box-shadow:0 0 0 2px rgba(200,154,61,.16); }
.drawings-production-page-item:has(.drawings-production-part-link) { border-color:rgba(200,154,61,.55); }
@media (max-width: 1180px){ .drawings-production-nav-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }


/* VIEW4G5C · production document family + print/PDF polish ---------------- */
.drawings-production-document-card { box-shadow: inset 3px 0 0 rgba(184,138,52,.66); }
.drawings-production-document-info { margin-top:8px; }
.drawings-production-pdf-actions { display:grid; grid-template-columns:1fr; gap:6px; margin-top:8px; }
.drawings-production-pdf-actions .drawings-command-button { width:100%; }
.drawings-svg.production-document-svg { background:#fff; }
.drawings-svg.production-document-svg text { text-rendering:geometricPrecision; }
.drawings-production-page-item.active .drawings-page-badges b { letter-spacing:.04em; }
@media (min-width: 1460px){ .drawings-production-pdf-actions { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* VIEW4G5D · persistent production sheet configuration -------------------- */
.drawings-production-layout-card { box-shadow: inset 3px 0 0 rgba(90,125,130,.7); }
.drawings-production-layout-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:8px; }
.drawings-production-layout-grid .wide { grid-column:1 / -1; }
.drawings-production-nesting-options { margin-top:8px; padding:8px; border:1px solid rgba(132,142,147,.2); border-radius:7px; background:rgba(255,255,255,.018); }
.drawings-production-layout-columns-head { display:flex; justify-content:space-between; gap:8px; align-items:center; margin:10px 0 5px; color:#7f898e; font-size:7px; font-weight:800; letter-spacing:.055em; }
.drawings-production-layout-columns-head em { font-style:normal; white-space:nowrap; opacity:.72; }
.drawings-production-layout-columns { display:grid; gap:4px; max-height:224px; overflow:auto; padding-right:2px; }
.drawings-production-layout-columns[hidden] { display:none !important; }
.drawings-production-layout-column { display:grid; grid-template-columns:18px 18px minmax(0,1fr) 54px; gap:5px; align-items:center; min-height:28px; padding:4px 5px; border:1px solid rgba(127,137,142,.18); border-radius:5px; background:rgba(255,255,255,.018); cursor:grab; }
.drawings-production-layout-column.dragging { opacity:.5; border-color:rgba(201,151,52,.68); }
.drawings-production-layout-grip { color:#727b80; font-size:10px; letter-spacing:-2px; user-select:none; }
.drawings-production-layout-column > strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#b7bec1; font-size:7.5px; letter-spacing:.035em; }
.drawings-production-layout-column > input[type="number"] { width:100%; min-width:0; height:22px; padding:2px 4px; font-size:8px; text-align:right; }
.drawings-production-layout-actions { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:6px; margin-top:8px; }
@media (max-width:1180px){ .drawings-production-layout-grid { grid-template-columns:1fr; } .drawings-production-layout-grid .wide { grid-column:auto; } .drawings-production-layout-actions { grid-template-columns:1fr; } }
/* VIEW4G5E · production document final QA -------------------------------- */
.drawings-production-recheck { width:100%; margin-top:8px; }
.drawings-paper-stage.production-document-active .drawings-paper-caption { display:none; }
.drawings-production-document-card .drawings-info-grid strong { overflow-wrap:anywhere; }
.drawings-production-document-card.is-ready { border-color:#32493b; }
.drawings-production-document-card.is-ready > strong { color:#9ec9aa; }
.drawings-production-document-card.is-review { border-color:#665436; }
.drawings-production-document-card.is-review > strong { color:#d9b875; }
.drawings-production-document-card.is-check { border-color:#65402f; }
.drawings-production-document-card.is-check > strong { color:#e1a36d; }

/* VIEW4G5F2 · Shared theme source -------------------------------------------
   Semantic theme values are loaded once from ui_theme.css. This stylesheet
   contains component/layout rules only. */
.viewport-pref-note { margin:5px 0 0; color:var(--ui-text-muted); font-size:9px; line-height:1.4; }
.viewport-pref-appearance { padding-bottom:9px; }

/* VIEW4G5F2 · Dynamic Theme Token Consolidation -----------------------------
   This layer is authoritative for application chrome. Both dark and light
   themes use the same component declarations; only the semantic tokens above
   change. Renderer-owned CAD colors and technical drawing paper/SVG output are
   intentionally outside this contract. */

:root[data-theme] html,
:root[data-theme] body,
:root[data-theme] #app {
  background:var(--ui-app-bg);
  color:var(--ui-text);
}
:root[data-theme] button,
:root[data-theme] input,
:root[data-theme] select,
:root[data-theme] textarea { color:var(--ui-text); }
:root[data-theme] input,
:root[data-theme] select,
:root[data-theme] textarea {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
}

/* Main workstation chrome */
:root[data-theme] .topbar {
  background:var(--ui-chrome-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .brand-mark { background:var(--ui-inverse-bg); color:var(--ui-inverse-text); }
:root[data-theme] .brand-title { color:var(--ui-text-strong); }
:root[data-theme] .brand-subtitle,
:root[data-theme] .connection { color:var(--ui-text-muted); }
:root[data-theme] .workspace-tab { color:var(--ui-text-secondary); border-color:var(--ui-border-subtle); }
:root[data-theme] .workspace-tab:hover { color:var(--ui-text-strong); background:var(--ui-hover-bg); }
:root[data-theme] .workspace-tab:disabled,
:root[data-theme] .workspace-tab:disabled:hover { color:var(--ui-text-disabled); background:transparent; }
:root[data-theme] .workspace-tab.active { color:var(--ui-text-strong); background:var(--ui-panel-bg); }
:root[data-theme] .chrome-button {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .chrome-button:hover:not(:disabled) {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .chrome-button.accent { color:var(--ui-accent-text); }

/* Viewport shell chrome, not renderer palette */
:root[data-theme] .stage,
:root[data-theme] .viewport-shell { background:var(--ui-stage-bg); }
:root[data-theme] .empty-state { background:radial-gradient(circle at 50% 48%,var(--ui-empty-glow),transparent 40%); }
:root[data-theme] .viewer-header {
  background:var(--ui-chrome-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .viewer-label,
:root[data-theme] .viewer-status { color:var(--ui-text-muted); }
:root[data-theme] .viewer-button { color:var(--ui-text-secondary); }
:root[data-theme] .viewer-select {
  color:var(--ui-text-secondary);
  background:transparent;
  border-color:transparent;
}
:root[data-theme] .viewer-select:hover {
  color:var(--ui-text-strong);
  background:var(--ui-hover-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .viewer-select:focus-visible {
  color:var(--ui-text-strong);
  background:var(--ui-active-bg);
  border-color:var(--ui-border-strong);
}
:root[data-theme] .viewer-select-wrap::after { color:var(--ui-text-muted); }
:root[data-theme] .viewer-select-wrap:hover::after,
:root[data-theme] .viewer-select-wrap:focus-within::after { color:var(--ui-text-secondary); }
:root[data-theme] .viewer-button:hover:not(:disabled) {
  color:var(--ui-text-strong);
  background:var(--ui-hover-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .viewer-button.active {
  color:var(--ui-text-strong);
  background:var(--ui-active-bg);
  border-color:var(--ui-border-strong);
}
:root[data-theme] .viewer-divider { background:var(--ui-border); }
:root[data-theme] .empty-logo,
:root[data-theme] .empty-state h1 { color:var(--ui-text); }
:root[data-theme] .empty-state p,
:root[data-theme] .empty-state small { color:var(--ui-text-muted); }
:root[data-theme] .launch-button {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .launch-button:hover { background:var(--ui-hover-bg); color:var(--ui-text-strong); }

/* Docked drawers and generic lists */
:root[data-theme] .side-drawer {
  background:var(--ui-panel-bg);
  border-color:var(--ui-border-strong);
}
:root[data-theme] .side-left,
:root[data-theme] .side-right { border-color:var(--ui-border-strong); }
:root[data-theme] .drawer-header { border-color:var(--ui-border); color:var(--ui-text); }
:root[data-theme] .icon-button { color:var(--ui-text-secondary); }
:root[data-theme] .icon-button:hover {
  color:var(--ui-text-strong);
  background:var(--ui-hover-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .edge-tab {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-muted);
}
:root[data-theme] .edge-tab:hover { color:var(--ui-text-strong); background:var(--ui-hover-bg); }
:root[data-theme] .project-card { background:var(--ui-raised-bg); border-color:var(--ui-border); }
:root[data-theme] .project-icon { background:var(--ui-panel-soft); color:var(--ui-accent-text); }
:root[data-theme] #projectName,
:root[data-theme] .property-title { color:var(--ui-text-strong); }
:root[data-theme] .drawer-row-heading,
:root[data-theme] .info-section-title { border-color:var(--ui-border-soft); color:var(--ui-text-muted); }
:root[data-theme] .tree-item { color:var(--ui-text); }
:root[data-theme] .tree-item:hover { background:var(--ui-row-hover-bg); }
:root[data-theme] .tree-item.active,
:root[data-theme] .info-list-row.active {
  background:var(--ui-selection-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-accent-text);
}
:root[data-theme] .tree-type,
:root[data-theme] .property-row span,
:root[data-theme] .info-lead { color:var(--ui-text-muted); }
:root[data-theme] .property-row { border-color:var(--ui-border-soft); }
:root[data-theme] .property-row strong { color:var(--ui-text); }
:root[data-theme] .drawer-action {
  border-color:var(--ui-accent-border);
  background:var(--ui-accent-bg);
  color:var(--ui-accent-text);
}
:root[data-theme] .drawer-action:hover:not(:disabled) {
  background:var(--ui-accent-hover-bg);
  color:var(--ui-accent-text);
}

/* Bottom HUD and all parameter banks */
:root[data-theme] .bottom-hud {
  background:var(--ui-chrome-bg);
  border-color:var(--ui-border-strong);
}
:root[data-theme] .hud-header,
:root[data-theme] .hud-subtabs {
  background:var(--ui-chrome-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .hud-body,
:root[data-theme] .hud-properties { background:var(--ui-panel-soft); }
:root[data-theme] .hud-tab,
:root[data-theme] .hud-subtab { color:var(--ui-text-muted); border-color:var(--ui-border-soft); }
:root[data-theme] .hud-tab:hover,
:root[data-theme] .hud-subtab:hover { color:var(--ui-text-strong); background:var(--ui-hover-bg); }
:root[data-theme] .hud-tab.active,
:root[data-theme] .hud-subtab.active { color:var(--ui-text-strong); background:var(--ui-panel-bg); }
:root[data-theme] .hud-control-cluster,
:root[data-theme] .hud-identity {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .hud-control-cluster:hover { border-color:var(--ui-border-strong); }
:root[data-theme] .hud-advanced-cluster { background:var(--ui-panel-soft); }
:root[data-theme] .hud-name { color:var(--ui-text-strong); }
:root[data-theme] .cluster-title,
:root[data-theme] .hud-field,
:root[data-theme] .hud-field>span,
:root[data-theme] .hud-field em { color:var(--ui-text-muted); }
:root[data-theme] .hud-field input,
:root[data-theme] .hud-select,
:root[data-theme] .hud-text-input {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .hud-value {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .hud-value:hover { background:var(--ui-hover-bg); color:var(--ui-text-strong); }
:root[data-theme] .statusbar {
  background:var(--ui-chrome-bg);
  border-color:var(--ui-border-soft);
  color:var(--ui-text-muted);
}

/* Integrated numeric sliders. Parent owns the visible surface. */
:root[data-theme] .bottom-hud .hud-field.value-slider,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider {
  border-color:var(--ui-border);
  background:var(--ui-field-bg);
  color:var(--ui-text);
}
:root[data-theme] .bottom-hud .hud-field.value-slider::before,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider::before {
  background:var(--ui-accent-wash);
  border-right-color:var(--ui-accent-line);
}
:root[data-theme] .bottom-hud .hud-field.value-slider:hover,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider:hover {
  border-color:var(--ui-border-strong);
  background:var(--ui-raised-bg);
}
:root[data-theme] .bottom-hud .hud-field.value-slider.dragging,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider.dragging,
:root[data-theme] .bottom-hud .hud-field.value-slider:focus-within,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider:focus-within {
  border-color:var(--ui-accent-border);
  box-shadow:inset 0 0 0 1px var(--ui-accent-focus);
}
:root[data-theme] .bottom-hud .hud-field.value-slider > span,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider > span { color:var(--ui-text-secondary); }
:root[data-theme] .bottom-hud .hud-field.value-slider > em,
:root[data-theme] .bottom-hud .hud-field.compact.value-slider > em { color:var(--ui-text-muted); }
:root[data-theme] .bottom-hud .hud-field.value-slider input[type="number"],
:root[data-theme] .bottom-hud .hud-field.compact.value-slider input[type="number"] {
  background:transparent;
  color:var(--ui-text-strong);
}

/* Buttons with semantic state */
:root[data-theme] .hud-value.accent-value,
:root[data-theme] button.hud-mini-row.active,
:root[data-theme] #savedViewsToggle.active,
:root[data-theme] #viewportPreferencesToggle.active {
  border-color:var(--ui-accent-border);
  background:var(--ui-accent-bg);
  color:var(--ui-accent-text);
}
:root[data-theme] .hud-value.accent-value:hover:not(:disabled) {
  background:var(--ui-accent-hover-bg);
  color:var(--ui-accent-text);
}
:root[data-theme] .hud-danger,
:root[data-theme] .subtle-danger {
  border-color:var(--ui-danger-border);
  background:var(--ui-danger-bg);
  color:var(--ui-danger);
}
:root[data-theme] .hud-danger:hover:not(:disabled),
:root[data-theme] .subtle-danger:hover:not(:disabled) {
  background:var(--ui-danger-hover-bg);
  color:var(--ui-danger);
}
:root[data-theme] button.hud-mini-row:hover { background:var(--ui-hover-bg); color:var(--ui-text); }

/* Manufacturing, Costing, Procurement, Inventory */
:root[data-theme] .manufacture-workspace,
:root[data-theme] .manufacture-card {
  background:var(--ui-panel-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .manufacture-toolbar,
:root[data-theme] .manufacture-card header {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border-soft);
}
:root[data-theme] .manufacture-title strong,
:root[data-theme] .stock-row strong,
:root[data-theme] .manufacture-cost strong,
:root[data-theme] .info-manufacture-head strong,
:root[data-theme] .info-list-title { color:var(--ui-text); }
:root[data-theme] .manufacture-select {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .manufacture-summary-line,
:root[data-theme] .manufacture-card header,
:root[data-theme] .stock-row span,
:root[data-theme] .manufacture-cost span,
:root[data-theme] .info-list-meta,
:root[data-theme] .info-list-value,
:root[data-theme] .info-inline-summary { color:var(--ui-text-muted); }
:root[data-theme] .manufacture-table-wrap { background:var(--ui-raised-bg); }
:root[data-theme] .manufacture-table th {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border-soft);
  color:var(--ui-text-muted);
}
:root[data-theme] .manufacture-table td { border-color:var(--ui-border-soft); color:var(--ui-text); }
:root[data-theme] .manufacture-table tbody tr:hover { background:var(--ui-row-hover-bg); }
:root[data-theme] .manufacture-table tbody tr.active {
  background:var(--ui-selection-bg);
  outline-color:var(--ui-accent-border);
}
:root[data-theme] .manufacture-lower { background:var(--ui-border-soft); border-color:var(--ui-border); }
:root[data-theme] .mini-info-button,
:root[data-theme] .info-tab {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .mini-info-button:hover,
:root[data-theme] .info-tab:hover { background:var(--ui-hover-bg); color:var(--ui-text-strong); }
:root[data-theme] .info-tab.active { background:var(--ui-accent-bg); color:var(--ui-accent-text); }
:root[data-theme] .info-list-row {
  background:var(--ui-row-bg);
  border-bottom-color:var(--ui-border-soft);
}
:root[data-theme] .info-list-row:hover { background:var(--ui-row-hover-bg); }

/* Costing metric cards were the most visible legacy dark island. */
:root[data-theme] .hud-properties .hud-control-cluster > .hud-metric {
  border-color:var(--ui-border);
  background:var(--ui-raised-bg);
}
:root[data-theme] .hud-metric > span { color:var(--ui-text-muted); }
:root[data-theme] .hud-metric > strong { color:var(--ui-text); }
:root[data-theme] .hud-properties .hud-control-cluster > .hud-metric-total {
  border-color:var(--ui-accent-border);
  background:var(--ui-accent-bg);
}
:root[data-theme] .hud-metric-total > strong { color:var(--ui-accent-strong); }
:root[data-theme] .manufacture-cost .cost-total,
:root[data-theme] .info-cost-grid .cost-total,
:root[data-theme] .info-cost-card-head strong { color:var(--ui-accent-strong); border-color:var(--ui-border); }
:root[data-theme] .info-cost-grid span,
:root[data-theme] .info-cost-card-head span { color:var(--ui-text-muted); }
:root[data-theme] .info-cost-grid strong { color:var(--ui-text); }
:root[data-theme] .info-cost-card { border-color:var(--ui-border); }

/* Nesting + CNC workstation chrome. Technical stock drawings stay renderer-owned. */
:root[data-theme] .nesting-studio,
:root[data-theme] .cnc-studio { background:var(--ui-stage-bg); color:var(--ui-text); }
:root[data-theme] .nest-studio-commandbar,
:root[data-theme] .cnc-commandbar { background:var(--ui-chrome-bg); border-color:var(--ui-border-strong); }
:root[data-theme] .nest-studio-title strong,
:root[data-theme] .cnc-title strong { color:var(--ui-text-strong); }
:root[data-theme] .nest-studio-title small,
:root[data-theme] .cnc-title small { color:var(--ui-text-muted); }
:root[data-theme] .nest-command-field,
:root[data-theme] .cnc-command-field {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .nest-command-field span,
:root[data-theme] .cnc-command-field span { color:var(--ui-text-muted); }
:root[data-theme] .nest-command-field select,
:root[data-theme] .cnc-command-field select { background:var(--ui-raised-bg); color:var(--ui-text); }
:root[data-theme] .nest-browser,
:root[data-theme] .nest-inspector,
:root[data-theme] .cnc-browser,
:root[data-theme] .cnc-inspector {
  background:var(--ui-panel-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .nest-pane-header,
:root[data-theme] .cnc-pane-header {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border-soft);
  color:var(--ui-text-muted);
}
:root[data-theme] .nest-sheet-item,
:root[data-theme] .cnc-list-item { color:var(--ui-text); border-color:var(--ui-border-soft); }
:root[data-theme] .nest-sheet-item:hover,
:root[data-theme] .cnc-list-item:hover { background:var(--ui-row-hover-bg); }

/* Preferences and floating viewport panels.
   Screen HUDs are intentionally excluded: they occupy the full viewport layer
   and must remain transparent so model geometry stays visible behind controls. */
:root[data-theme] .viewport-preferences,
:root[data-theme] .saved-views-panel {
  background:var(--ui-panel-bg);
  border-color:var(--ui-border-strong);
  box-shadow:0 14px 36px var(--ui-shadow);
  color:var(--ui-text);
}
:root[data-theme] .viewport-context-panel,
:root[data-theme] .viewport-hotkey-panel {
  background:transparent;
  border-color:transparent;
  box-shadow:none;
  color:var(--ui-text);
}
/* Screen-HUD palette is also derived from the application theme tokens. */
:root[data-theme] .viewport-context-panel,
:root[data-theme] .viewport-hotkey-panel {
  --screen-hud-text:var(--ui-screen-text);
  --screen-hud-muted:var(--ui-screen-muted);
  --screen-hud-line:var(--ui-screen-line);
  --screen-hud-line-soft:var(--ui-screen-line-soft);
  --screen-hud-track:var(--ui-screen-track);
  --screen-hud-accent:var(--ui-screen-accent);
  --screen-hud-accent-soft:var(--ui-screen-accent-soft);
  --screen-hud-accent-hover:var(--ui-screen-accent-hover);
  --screen-hud-shadow:var(--ui-screen-shadow);
}
:root[data-theme] .viewport-context-field input,
:root[data-theme] .viewport-context-text-field input,
:root[data-theme] .viewport-context-select select {
  background:transparent;
  color:var(--screen-hud-text);
}

:root[data-theme] .viewport-preferences-header,
:root[data-theme] .viewport-preferences-footer,
:root[data-theme] .saved-views-header {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border-soft);
}
:root[data-theme] .viewport-preferences-header strong { color:var(--ui-text-strong); }
:root[data-theme] .viewport-preferences-scope {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border-soft);
  color:var(--ui-text-muted);
}
:root[data-theme] .viewport-pref-section { border-color:var(--ui-border-soft); }
:root[data-theme] .viewport-pref-heading strong { color:var(--ui-text); }
:root[data-theme] .viewport-pref-heading span,
:root[data-theme] .viewport-pref-note { color:var(--ui-text-muted); }
:root[data-theme] .viewport-pref-check,
:root[data-theme] .viewport-pref-row,
:root[data-theme] .viewport-pref-select { color:var(--ui-text-secondary); }
:root[data-theme] .viewport-pref-select select {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .viewport-preferences button,
:root[data-theme] .saved-views-standard-grid button,
:root[data-theme] .saved-view-create button,
:root[data-theme] .saved-view-action {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .viewport-preferences button:hover,
:root[data-theme] .saved-views-standard-grid button:hover,
:root[data-theme] .saved-view-create button:hover,
:root[data-theme] .saved-view-action:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .saved-views-section,
:root[data-theme] .saved-view-row { background:var(--ui-raised-bg); border-color:var(--ui-border-soft); }
:root[data-theme] .saved-view-create input {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}

/* View gizmo is application chrome and follows the app appearance. */
:root[data-theme] .view-gizmo { filter:none; }

/* Drawings editor chrome. .drawings-svg remains paper-white by design. */
:root[data-theme] .drawings-studio { background:var(--ui-stage-bg); color:var(--ui-text); }
:root[data-theme] .drawings-commandbar { background:var(--ui-chrome-bg); border-color:var(--ui-border-strong); }
:root[data-theme] .drawings-build-progress { background:var(--ui-panel-soft); border-color:var(--ui-border); color:var(--ui-text-muted); }
:root[data-theme] .drawings-build-progress > strong { color:var(--ui-text); }
:root[data-theme] .drawings-title strong { color:var(--ui-text-strong); }
:root[data-theme] .drawings-title small,
:root[data-theme] .drawings-page-nav { color:var(--ui-text-muted); }
:root[data-theme] .drawings-command-button,
:root[data-theme] .drawings-view-button {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .drawings-command-button:hover,
:root[data-theme] .drawings-view-button:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .drawings-browser,
:root[data-theme] .drawings-inspector { background:var(--ui-panel-deep); border-color:var(--ui-border); }
:root[data-theme] .drawings-pane-header { border-color:var(--ui-border-soft); color:var(--ui-text-muted); }
:root[data-theme] .drawings-pane-header strong { color:var(--ui-text); }
:root[data-theme] .drawings-cabinet-group,
:root[data-theme] .drawings-inspector-card { background:var(--ui-raised-bg); border-color:var(--ui-border-soft); }
:root[data-theme] .drawings-cabinet-group-title,
:root[data-theme] .drawings-browser-section+ .drawings-browser-section { border-color:var(--ui-border-soft); }
:root[data-theme] .drawings-cabinet-group-title,
:root[data-theme] .drawings-browser-section-title,
:root[data-theme] .drawings-card-kicker,
:root[data-theme] .drawings-inspector-card>small,
:root[data-theme] .drawings-field,
:root[data-theme] .drawings-info-grid span { color:var(--ui-text-muted); }
:root[data-theme] .drawings-cabinet-group-title strong,
:root[data-theme] .drawings-inspector-card>strong,
:root[data-theme] .drawings-info-grid strong { color:var(--ui-text); }
:root[data-theme] .drawings-browser-section-title { background:var(--ui-panel-soft); }
:root[data-theme] .drawings-page-item { border-color:var(--ui-border-soft); color:var(--ui-text); }
:root[data-theme] .drawings-page-item:hover { background:var(--ui-row-hover-bg); color:var(--ui-text-strong); }
:root[data-theme] .drawings-page-item.active { background:var(--ui-accent-bg); color:var(--ui-accent-text); }
:root[data-theme] .drawings-page-copy small,
:root[data-theme] .drawings-page-badges,
:root[data-theme] .drawings-page-badges b { color:var(--ui-text-muted); }
:root[data-theme] .drawings-workarea { background:var(--ui-workarea-bg); }
:root[data-theme] .drawings-sheet-head { background:var(--ui-toolbar-bg); border-color:var(--ui-border); }
:root[data-theme] .drawings-sheet-number,
:root[data-theme] .drawings-sheet-meta,
:root[data-theme] .drawings-zoom-value { color:var(--ui-text-muted); }
:root[data-theme] .drawings-sheet-head strong { color:var(--ui-text); }
:root[data-theme] .drawings-canvas { background:var(--ui-canvas-bg); }
:root[data-theme] .drawings-paper-caption,
:root[data-theme] .drawings-empty { color:var(--ui-text-muted); }
:root[data-theme] .drawings-field input,
:root[data-theme] .drawings-field select {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}

/* Export, cloud, account host and feedback surfaces */
:root[data-theme] .cloud-panel-shell,
:root[data-theme] .publisher-workspace { background:var(--ui-stage-bg); }
:root[data-theme] .publisher-loading { background:var(--ui-panel-soft); color:var(--ui-text); }
:root[data-theme] .publisher-loading span { color:var(--ui-text-muted); }
:root[data-theme] .export-menu,
:root[data-theme] .feedback-window,
:root[data-theme] .cloud-panel-window {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
  box-shadow:0 18px 48px var(--ui-shadow);
  color:var(--ui-text);
}
:root[data-theme] .export-row,
:root[data-theme] .export-format-grid,
:root[data-theme] .feedback-actions { border-color:var(--ui-border-soft); }
:root[data-theme] .export-row>span,
:root[data-theme] .export-options label,
:root[data-theme] .export-format-button span,
:root[data-theme] .feedback-header small,
:root[data-theme] .feedback-field>span,
:root[data-theme] .feedback-status,
:root[data-theme] .feedback-body p,
:root[data-theme] .feedback-context { color:var(--ui-text-muted); }
:root[data-theme] .export-row select,
:root[data-theme] .export-format-button,
:root[data-theme] .export-project-button {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .export-format-button:hover,
:root[data-theme] .export-project-button:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .export-format-button.accent { background:var(--ui-accent-bg); border-color:var(--ui-accent-border); }
:root[data-theme] .export-format-button strong { color:var(--ui-accent-strong); }
:root[data-theme] .cloud-panel-overlay,
:root[data-theme] .feedback-overlay { background:var(--ui-overlay-bg); }
:root[data-theme] .cloud-panel-header,
:root[data-theme] .feedback-header {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border-soft);
}
:root[data-theme] .cloud-panel-header strong,
:root[data-theme] .feedback-header strong { color:var(--ui-text-strong); }
:root[data-theme] .cloud-panel-header small,
:root[data-theme] .cloud-panel-header button,
:root[data-theme] .feedback-header button { color:var(--ui-text-muted); }
:root[data-theme] .cloud-panel-header button:hover,
:root[data-theme] .feedback-header button:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border);
  color:var(--ui-text-strong);
}
:root[data-theme] .cloud-panel-window iframe { background:var(--ui-app-bg); }
:root[data-theme] .feedback-field select,
:root[data-theme] .feedback-field textarea {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}

/* Scrollbars belong to chrome, not to the technical render. */
:root[data-theme] .hud-properties::-webkit-scrollbar-track { background:var(--ui-scroll-track); }
:root[data-theme] .hud-properties::-webkit-scrollbar-thumb { background:var(--ui-scroll-thumb); }

/* VIEW4G5G1 · Shared aBSy UI icons ------------------------------------------
   SVG geometry lives in ui_icons.js and inherits currentColor. These layout
   rules are deliberately color-free so the dynamic theme remains authoritative. */
button.has-ui-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
}
button.has-ui-icon > .ui-icon {
  width:1.2em;
  height:1.2em;
  flex:0 0 1.2em;
  display:block;
  pointer-events:none;
}
.workspace-tab.has-ui-icon { gap:5px; }
.hud-tab.has-ui-icon { gap:6px; }
.hud-tab.has-ui-icon > .ui-icon { width:1.1em; height:1.1em; flex-basis:1.1em; }
.workspace-tab.has-ui-icon > .ui-icon,
.viewer-button.has-ui-icon > .ui-icon { width:1.15em; height:1.15em; flex-basis:1.15em; }
.hud-subtab.has-ui-icon > .ui-icon,
.info-tab.has-ui-icon > .ui-icon { width:1.1em; height:1.1em; flex-basis:1.1em; }
.hud-value.has-ui-icon,
.hud-danger.has-ui-icon { gap:5px; }
.drawings-command-button.has-ui-icon { gap:6px; }
.chrome-button.has-ui-icon { gap:5px; }
@media (max-width:1180px) {
  .workspace-tab.has-ui-icon { gap:3px; padding-left:9px; padding-right:9px; }
  .workspace-tab.has-ui-icon > .ui-icon { width:1.1em; height:1.1em; flex-basis:1.1em; }
}

/* VIEW4G5I · sheet-level nesting algorithm selector ----------------------- */
.nest-algorithm-card[hidden] { display:none !important; }
.nest-inspector-field { display:flex; flex-direction:column; gap:4px; margin-top:2px; }
.nest-inspector-field > span { font-size:10px; font-weight:700; letter-spacing:.08em; }
.nest-inspector-field select { width:100%; height:27px; padding:0 7px; border:1px solid; border-radius:1px; outline:0; font-size:10px; font-weight:650; letter-spacing:.025em; }
.nest-algorithm-card > small { min-height:42px; margin-top:7px; }
.nest-algorithm-grid { margin-top:7px; }
.nest-algorithm-actions { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:5px; margin-top:8px; }
.nest-algorithm-actions .nest-command-button { width:100%; min-width:0; }

:root[data-theme] .nest-inspector-field > span { color:var(--ui-text-muted); }
:root[data-theme] .nest-inspector-field select {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .nest-inspector-field select:focus { border-color:var(--ui-accent-border); }
:root[data-theme] .nest-algorithm-card > small { color:var(--ui-text-muted); }


/* VIEW4G5I1 · Drawings issue/release dynamic-theme completion -------------
   The Drawing Set / Issue Workflow family predates the shared theme contract.
   Keep its layout/state semantics, but derive every application-chrome surface
   from the same System/Dark/Light tokens as the rest of Cabinet. Paper/SVG
   output remains intentionally independent. */
:root[data-theme] .drawings-issue-panel {
  background:var(--ui-panel-deep);
  border-color:var(--ui-border-strong);
  box-shadow:-18px 0 38px var(--ui-shadow);
  color:var(--ui-text);
}
:root[data-theme] .drawings-issue-panel-head,
:root[data-theme] .drawings-issue-actions {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .drawings-issue-panel-head span,
:root[data-theme] .drawings-issue-sheet-index { color:var(--ui-accent-text); }
:root[data-theme] .drawings-issue-panel-head strong { color:var(--ui-text-strong); }
:root[data-theme] .drawings-issue-panel-head small,
:root[data-theme] .drawings-card-kicker,
:root[data-theme] .drawings-issue-page-copy small,
:root[data-theme] .drawings-issue-empty,
:root[data-theme] .drawings-issue-check-card>small { color:var(--ui-text-muted); }
:root[data-theme] .drawings-issue-scroll,
:root[data-theme] .drawings-issue-check-list,
:root[data-theme] .drawings-production-workshop-list,
:root[data-theme] .drawings-production-release-list {
  scrollbar-color:var(--ui-scroll-thumb) var(--ui-scroll-track);
}

:root[data-theme] .drawings-inspector-scroll,
:root[data-theme] .drawings-page-list,
:root[data-theme] .drawings-issue-scroll,
:root[data-theme] .drawings-issue-check-list,
:root[data-theme] .drawings-production-workshop-list,
:root[data-theme] .drawings-production-release-list,
:root[data-theme] .drawings-production-column-list {
  scrollbar-width:thin;
  scrollbar-color:var(--ui-scroll-thumb) var(--ui-scroll-track);
}
:root[data-theme] .drawings-inspector-scroll::-webkit-scrollbar,
:root[data-theme] .drawings-page-list::-webkit-scrollbar,
:root[data-theme] .drawings-issue-scroll::-webkit-scrollbar,
:root[data-theme] .drawings-issue-check-list::-webkit-scrollbar,
:root[data-theme] .drawings-production-workshop-list::-webkit-scrollbar,
:root[data-theme] .drawings-production-release-list::-webkit-scrollbar,
:root[data-theme] .drawings-production-column-list::-webkit-scrollbar {
  width:10px;
  height:10px;
}
:root[data-theme] .drawings-inspector-scroll::-webkit-scrollbar-track,
:root[data-theme] .drawings-page-list::-webkit-scrollbar-track,
:root[data-theme] .drawings-issue-scroll::-webkit-scrollbar-track,
:root[data-theme] .drawings-issue-check-list::-webkit-scrollbar-track,
:root[data-theme] .drawings-production-workshop-list::-webkit-scrollbar-track,
:root[data-theme] .drawings-production-release-list::-webkit-scrollbar-track,
:root[data-theme] .drawings-production-column-list::-webkit-scrollbar-track {
  background:var(--ui-scroll-track);
}
:root[data-theme] .drawings-inspector-scroll::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-page-list::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-issue-scroll::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-issue-check-list::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-production-workshop-list::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-production-release-list::-webkit-scrollbar-thumb,
:root[data-theme] .drawings-production-column-list::-webkit-scrollbar-thumb {
  background:var(--ui-scroll-thumb);
  border:2px solid var(--ui-scroll-track);
  border-radius:8px;
}
:root[data-theme] .drawings-inspector-scroll::-webkit-scrollbar-corner,
:root[data-theme] .drawings-page-list::-webkit-scrollbar-corner,
:root[data-theme] .drawings-issue-scroll::-webkit-scrollbar-corner,
:root[data-theme] .drawings-issue-check-list::-webkit-scrollbar-corner,
:root[data-theme] .drawings-production-workshop-list::-webkit-scrollbar-corner,
:root[data-theme] .drawings-production-release-list::-webkit-scrollbar-corner,
:root[data-theme] .drawings-production-column-list::-webkit-scrollbar-corner {
  background:var(--ui-scroll-track);
}
:root[data-theme] .drawings-issue-card {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border-soft);
}
:root[data-theme] .drawings-issue-card-head strong,
:root[data-theme] .drawings-issue-check-card>strong { color:var(--ui-text); }
:root[data-theme] .drawings-issue-page,
:root[data-theme] .drawings-issue-check-row {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border-soft);
}
:root[data-theme] .drawings-issue-page.is-included {
  background:var(--ui-accent-bg);
  border-color:var(--ui-accent-border);
}
:root[data-theme] .drawings-issue-page-copy strong { color:var(--ui-text); }
:root[data-theme] .drawings-issue-number {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-accent-text);
}
:root[data-theme] .drawings-issue-number:focus {
  border-color:var(--ui-accent-border);
  box-shadow:inset 0 0 0 1px var(--ui-accent-focus);
}
:root[data-theme] .drawings-issue-move button {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .drawings-issue-move button:hover:not(:disabled) {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .drawings-issue-empty { border-color:var(--ui-border); }
:root[data-theme] .drawings-issue-check-row strong,
:root[data-theme] .drawings-issue-check-row span { color:var(--ui-text-secondary); }

/* Validation/status states use semantic status tokens in both appearances. */
:root[data-theme] .drawings-issue-check-card.is-ready,
:root[data-theme] .drawings-fabrication-qa-card.is-ready,
:root[data-theme] .drawings-production-document-card.is-ready { border-color:var(--ui-good); }
:root[data-theme] .drawings-issue-check-card.is-ready>strong,
:root[data-theme] .drawings-fabrication-qa-card.is-ready .drawings-fabrication-qa-grid strong,
:root[data-theme] .drawings-production-document-card.is-ready>strong,
:root[data-theme] .drawings-issue-check-row.ready { color:var(--ui-good); }
:root[data-theme] .drawings-issue-check-row.ready { border-color:var(--ui-good); background:var(--ui-good-bg); }
:root[data-theme] .drawings-issue-check-card.is-warning,
:root[data-theme] .drawings-fabrication-qa-card.is-warning,
:root[data-theme] .drawings-production-document-card.is-review,
:root[data-theme] .drawings-production-document-card.is-check { border-color:var(--ui-warning); }
:root[data-theme] .drawings-issue-check-card.is-warning>strong,
:root[data-theme] .drawings-fabrication-qa-card.is-warning .drawings-fabrication-qa-grid strong,
:root[data-theme] .drawings-production-document-card.is-review>strong,
:root[data-theme] .drawings-production-document-card.is-check>strong,
:root[data-theme] .drawings-issue-check-row.warning strong,
:root[data-theme] .drawings-production-browser-state.warning { color:var(--ui-warning); }
:root[data-theme] .drawings-issue-check-card.is-error {
  background:var(--ui-danger-bg);
  border-color:var(--ui-danger-border);
}
:root[data-theme] .drawings-issue-check-card.is-error>strong,
:root[data-theme] .drawings-fabrication-qa-card.is-error .drawings-fabrication-qa-grid strong,
:root[data-theme] .drawings-issue-check-row.error strong,
:root[data-theme] .drawings-issue-check-row.error span { color:var(--ui-danger); }

/* Release/package sub-components. */
:root[data-theme] .drawings-production-package-card textarea {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}
:root[data-theme] .drawings-production-artifacts { border-color:var(--ui-border-soft); }
:root[data-theme] .drawings-production-workshop-row,
:root[data-theme] .drawings-production-release-row,
:root[data-theme] .drawings-production-nesting-options,
:root[data-theme] .drawings-production-layout-column {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border-soft);
  color:var(--ui-text);
}
:root[data-theme] button.drawings-production-workshop-row:hover { background:var(--ui-hover-bg); }
:root[data-theme] .drawings-production-layout-columns-head,
:root[data-theme] .drawings-production-layout-grip,
:root[data-theme] .drawings-production-browser-state { color:var(--ui-text-muted); }
:root[data-theme] .drawings-production-layout-column>strong { color:var(--ui-text); }
:root[data-theme] .drawings-production-document-group { border-color:var(--ui-accent-border); }
:root[data-theme] .drawings-production-document-group-title,
:root[data-theme] .drawings-production-browser-section .drawings-browser-section-title {
  background:var(--ui-panel-soft);
  color:var(--ui-text-muted);
}
:root[data-theme] .drawings-production-document-group-title strong { color:var(--ui-accent-text); }
:root[data-theme] .drawings-production-page-item .drawings-page-copy small { color:var(--ui-text-muted); }
:root[data-theme] .drawings-production-browser-state { border-color:var(--ui-border-soft); }

/* Inspector cards that can appear in the same release workflow. */
:root[data-theme] .drawings-part-detail-card,
:root[data-theme] .drawings-fabrication-qa-card,
:root[data-theme] .drawings-production-document-card,
:root[data-theme] .drawings-production-layout-card,
:root[data-theme] .drawings-production-nav-card {
  background:var(--ui-raised-bg);
}
:root[data-theme] .drawings-part-detail-card>strong { color:var(--ui-text); }

/* VIEW4G5J1 · Exploded drawing controls */
.drawings-exploded-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.8fr); gap:6px; margin-top:8px; }
.drawings-exploded-grid .wide { grid-column:1 / -1; }
.drawings-exploded-switches { grid-template-columns:minmax(0,1fr) minmax(0,1fr); margin-top:6px; }
.drawings-exploded-switches label { min-height:20px; }
@media (max-width:1180px){ .drawings-exploded-grid { grid-template-columns:1fr; } .drawings-exploded-grid .wide { grid-column:auto; } .drawings-exploded-switches { grid-template-columns:1fr; } }

/* VIEW4G5J4 · Smart Drawing Set */
.drawings-smart-set-card { gap:6px; }
.drawings-smart-set-card>small { font-size:8px; line-height:1.45; }
.drawings-issue-group-head { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:25px; margin-top:4px; padding:4px 7px; border:1px solid #303338; background:#202327; }
.drawings-issue-group-head:first-child { margin-top:0; }
.drawings-issue-group-head strong { font-size:8px; letter-spacing:.08em; }
.drawings-issue-group-head span { min-width:20px; text-align:center; font-size:8px; font-weight:800; }
:root[data-theme] .drawings-smart-set-card>small { color:var(--ui-text-muted); }
:root[data-theme] .drawings-issue-group-head { background:var(--ui-panel-deep); border-color:var(--ui-border-soft); }
:root[data-theme] .drawings-issue-group-head strong { color:var(--ui-text); }
:root[data-theme] .drawings-issue-group-head span { color:var(--ui-accent-text); }
.drawings-smart-set-production { display:flex; align-items:center; gap:7px; font-size:7.5px; font-weight:750; letter-spacing:.04em; }
.drawings-smart-set-production input { width:12px; height:12px; margin:0; }
.drawings-issue-production-page { grid-template-columns:30px 28px minmax(0,1fr) 112px 48px; }
.drawings-issue-production-live,.drawings-issue-production-tag { font-size:7px; font-weight:850; letter-spacing:.06em; text-align:center; }
.drawings-issue-production-number { display:flex; align-items:center; min-height:27px; padding:0 7px; border:1px solid; }
:root[data-theme] .drawings-smart-set-production { color:var(--ui-text-muted); }
:root[data-theme] .drawings-smart-set-production input { accent-color:var(--ui-accent); }
:root[data-theme] .drawings-issue-group-head.is-production { background:var(--ui-panel-soft); }
:root[data-theme] .drawings-issue-production-live { color:var(--ui-good-text); }
:root[data-theme] .drawings-issue-production-tag { color:var(--ui-accent-text); }
:root[data-theme] .drawings-issue-production-number { background:var(--ui-field-bg); border-color:var(--ui-border); color:var(--ui-accent-text); }

/* VIEW4G5K2B · Theme consistency audit ---------------------------------------
   Final semantic pass for legacy UI islands that pre-date the shared theme
   contract. Renderer-owned viewport/CAD/paper/SVG colors remain intentionally
   independent. */

/* Compact HUD status/list surfaces, including RUN PLINTH STATUS. */
:root[data-theme] .hud-mini-row {
  background:var(--ui-row-bg);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .hud-mini-row > span:first-child { color:var(--ui-text); }
:root[data-theme] .hud-mini-row > span:last-child { color:var(--ui-text-muted); }
:root[data-theme] button.hud-mini-row:hover {
  background:var(--ui-row-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] button.hud-mini-row.active {
  background:var(--ui-accent-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-accent-text);
}
:root[data-theme] button.hud-mini-row.active > span:last-child { color:var(--ui-accent-text); }
:root[data-theme] .hud-readout,
:root[data-theme] .hud-check { color:var(--ui-text-secondary); }
:root[data-theme] .hud-check input { accent-color:var(--ui-accent); }
:root[data-theme] .hud-notice {
  background:var(--ui-warning-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-warning);
}

/* Inline numeric editor is UI chrome even though it floats over the viewport. */
:root[data-theme] .dimension-inline-editor {
  background:var(--ui-field-bg);
  color:var(--ui-text-strong);
  border-bottom-color:var(--ui-accent);
  box-shadow:0 2px 8px var(--ui-shadow);
}
:root[data-theme] .dimension-inline-editor:focus { border-bottom-color:var(--ui-accent-strong); }
:root[data-theme] .dimension-inline-editor.invalid {
  border-bottom-color:var(--ui-danger);
  color:var(--ui-danger);
}

/* Multi-selection command strip. */
:root[data-theme] .multi-edit-toolbar {
  background:var(--ui-gizmo-bg);
  border-color:var(--ui-border-strong);
  box-shadow:0 10px 30px var(--ui-shadow);
  color:var(--ui-text);
}
:root[data-theme] .multi-edit-toolbar strong { color:var(--ui-text-secondary); }
:root[data-theme] .multi-edit-toolbar button {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .multi-edit-toolbar button:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .multi-edit-toolbar .multi-edit-clear { color:var(--ui-text-muted); }
:root[data-theme] .multi-edit-divider { background:var(--ui-border); }
:root[data-theme] .multi-edit-toolbar .multi-internal-align {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border-strong);
  color:var(--ui-text);
}
:root[data-theme] .multi-edit-toolbar .multi-internal-align:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-text-strong);
}
:root[data-theme] .multi-edit-toolbar .multi-internal-equal {
  background:var(--ui-accent-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-accent-text);
}
:root[data-theme] .multi-edit-toolbar .multi-internal-equal:hover:not(:disabled) {
  background:var(--ui-accent-hover-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-accent-strong);
}

/* Viewport preferences destructive/reset state. */
:root[data-theme] #viewportPreferencesResetMode { border-color:var(--ui-border-strong); }
:root[data-theme] #viewportPreferencesFactoryReset {
  border-color:var(--ui-danger-border);
  color:var(--ui-danger);
}
:root[data-theme] #viewportPreferencesFactoryReset:hover {
  background:var(--ui-danger-hover-bg);
  border-color:var(--ui-danger-border);
  color:var(--ui-danger);
}
:root[data-theme] .viewport-preferences-scope span,
:root[data-theme] .viewport-preferences-scope strong { color:var(--ui-text-secondary); }

/* Room Elevation UI follows the application appearance. The drawing paper
   itself stays white and the aBSy Vector document remains renderer-owned. */
:root[data-theme] .room-elevation-workspace {
  background:var(--ui-stage-bg);
  color:var(--ui-screen-text);
}
:root[data-theme] .room-elevation-header,
:root[data-theme] .room-elevation-footer {
  background:var(--ui-toolbar-bg);
  border-color:var(--ui-border);
}
:root[data-theme] .room-elevation-stage { background:var(--ui-workarea-bg); }
:root[data-theme] .room-elevation-heading small,
:root[data-theme] .room-elevation-heading span,
:root[data-theme] .room-elevation-footer { color:var(--ui-screen-muted); }
:root[data-theme] .room-elevation-heading strong { color:var(--ui-screen-text); }
:root[data-theme] .room-elevation-footer strong { color:var(--ui-screen-line); }
:root[data-theme] .room-elevation-wall-tabs button,
:root[data-theme] .room-elevation-actions button { color:var(--ui-screen-muted); }
:root[data-theme] .room-elevation-wall-tabs button::after,
:root[data-theme] .room-elevation-actions button::after { background:var(--ui-screen-line-soft); }
:root[data-theme] .room-elevation-wall-tabs button:hover,
:root[data-theme] .room-elevation-actions button:hover { color:var(--ui-screen-accent-hover); }
:root[data-theme] .room-elevation-wall-tabs button:hover::after,
:root[data-theme] .room-elevation-actions button:hover::after,
:root[data-theme] .room-elevation-wall-tabs button:hover::before,
:root[data-theme] .room-elevation-actions button:hover::before { background:var(--ui-screen-accent-hover); border-color:var(--ui-screen-accent-hover); }
:root[data-theme] .room-elevation-wall-tabs button.active { color:var(--ui-screen-text); }
:root[data-theme] .room-elevation-wall-tabs button.active::after,
:root[data-theme] .room-elevation-wall-tabs button.active::before { background:var(--ui-screen-accent); border-color:var(--ui-screen-accent); }
:root[data-theme] .room-elevation-loading { color:var(--ui-screen-text); }

/* Legacy workstation controls are still used by embedded workflows even though
   NESTING/CNC are no longer top-level tabs. Keep their chrome theme-safe. */
:root[data-theme] .nest-command-button,
:root[data-theme] .nesting-sheet-tab,
:root[data-theme] .nesting-view-button,
:root[data-theme] .cnc-command-button,
:root[data-theme] .cnc-sheet-tab,
:root[data-theme] .cnc-view-button {
  background:var(--ui-raised-bg);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .nest-command-button:hover,
:root[data-theme] .nesting-sheet-tab:hover,
:root[data-theme] .nesting-view-button:hover,
:root[data-theme] .cnc-command-button:hover,
:root[data-theme] .cnc-sheet-tab:hover,
:root[data-theme] .cnc-view-button:hover {
  background:var(--ui-hover-bg);
  border-color:var(--ui-border-strong);
  color:var(--ui-text-strong);
}
:root[data-theme] .nest-command-button.accent,
:root[data-theme] .nesting-sheet-tab.active,
:root[data-theme] .cnc-command-button.accent,
:root[data-theme] .cnc-sheet-tab.active {
  background:var(--ui-accent-bg);
  border-color:var(--ui-accent-border);
  color:var(--ui-accent-text);
}
:root[data-theme] .nest-studio-body { background:var(--ui-workarea-bg); }
:root[data-theme] .nest-browser-section > header,
:root[data-theme] .cnc-browser-section header { background:var(--ui-panel-soft); color:var(--ui-text-muted); }
:root[data-theme] .nest-browser-item,
:root[data-theme] .cnc-browser-item { background:var(--ui-row-bg); border-color:var(--ui-border-soft); color:var(--ui-text); }
:root[data-theme] .nest-browser-item:hover,
:root[data-theme] .cnc-browser-item:hover { background:var(--ui-row-hover-bg); border-color:var(--ui-border); }
:root[data-theme] .nest-browser-item.active,
:root[data-theme] .cnc-browser-item.active { background:var(--ui-selection-bg); border-color:var(--ui-accent-border); }
:root[data-theme] .nest-inspector-card,
:root[data-theme] .cnc-inspector-card { background:var(--ui-raised-bg); border-color:var(--ui-border-soft); }
:root[data-theme] .nest-studio-footer,
:root[data-theme] .cnc-footer { background:var(--ui-toolbar-bg); border-color:var(--ui-border); }
:root[data-theme] .nest-footer-field,
:root[data-theme] .nest-footer-check,
:root[data-theme] .nest-footer-select,
:root[data-theme] .cnc-footer-field,
:root[data-theme] .cnc-footer-check {
  background:var(--ui-panel-soft);
  border-color:var(--ui-border);
  color:var(--ui-text-secondary);
}
:root[data-theme] .nest-footer-field input,
:root[data-theme] .cnc-footer-field select {
  background:var(--ui-field-bg);
  border-color:var(--ui-border);
  color:var(--ui-text);
}

/* One scrollbar palette across all application chrome. Individual components
   retain their existing widths; only track/thumb colors are centralized. */
:root[data-theme] * { scrollbar-color:var(--ui-scroll-thumb) var(--ui-scroll-track); }
:root[data-theme] *::-webkit-scrollbar-track { background:var(--ui-scroll-track); }
:root[data-theme] *::-webkit-scrollbar-thumb { background:var(--ui-scroll-thumb); }
:root[data-theme] *::-webkit-scrollbar-corner { background:var(--ui-scroll-track); }

/* VIEW4G5K2K3 · Secondary HUD tabs use compact solid SVGs. Keep them visibly
   subordinate to the primary bottom-HUD tab icons. */
.hud-subtab.has-ui-icon { gap:5px; }
.hud-subtab.has-ui-icon > .ui-icon.ui-icon-subtab {
  width:.92em;
  height:.92em;
  flex:0 0 .92em;
}


/* MATSYS2-I · MATV2-12 appearance preview. Display-only material authoring. */
.mat-v2-appearance-swatch {
  min-width: 94px;
  min-height: 34px;
  border: 1px solid var(--ui-border, #3a3c3f);
  border-radius: 3px;
  background: #c0c6cb center / cover no-repeat;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.035);
}
.hud-field input[type="color"] {
  padding: 2px;
  text-align: initial;
  cursor: pointer;
}

/* MATSYS2-T · stock/procurement dashboard state accents. */
.hud-properties .hud-metric[data-tone="good"],
.hud-mini-row[data-tone="good"] {
  border-color: color-mix(in srgb, var(--ui-accent-border, #6d5935) 55%, #4f765e);
}
.hud-properties .hud-metric[data-tone="warning"],
.hud-mini-row[data-tone="warning"] {
  border-color: #8b6733;
}
.hud-mini-row[data-tone="warning"] > span:last-child { color:#d4a65d; }
.hud-mini-row[data-tone="good"] > span:last-child { color:#86ad91; }
:root[data-theme="light"] .hud-mini-row[data-tone="warning"] > span:last-child { color:#8b5a17; }
:root[data-theme="light"] .hud-mini-row[data-tone="good"] > span:last-child { color:#47795a; }


/* HELP8 · opt-in documentation capture utility. Hidden during normal use. */
.docs-capture-panel { position: fixed; z-index: 9800; top: 54px; right: 14px; width: 330px; border: 1px solid #4a4c50; background: #17181a; color: #d6d8db; box-shadow: 0 18px 54px rgba(0,0,0,.42); font-family: "Segoe UI",Arial,sans-serif; }
.docs-capture-panel[hidden] { display: none !important; }
.docs-capture-panel header { height: 44px; display:flex; align-items:center; justify-content:space-between; padding:0 10px 0 12px; border-bottom:1px solid #34363a; background:#131416; }
.docs-capture-panel header div { display:grid; gap:3px; }
.docs-capture-panel header small { color:#8b8e93; font-size:9px; font-weight:700; letter-spacing:.12em; }
.docs-capture-panel header strong { color:#d9dbde; font-size:12px; letter-spacing:.09em; }
.docs-capture-panel header button { width:28px; height:28px; border:1px solid #3a3c40; background:#1d1f21; color:#aeb1b5; cursor:pointer; }
.docs-capture-body { display:grid; gap:10px; padding:12px; }
.docs-capture-body p { margin:0 0 2px; color:#96999e; font-size:11px; line-height:1.45; }
.docs-capture-body label { display:grid; gap:5px; }
.docs-capture-body label span { color:#777b80; font-size:9px; font-weight:700; letter-spacing:.12em; }
.docs-capture-body input { width:100%; height:30px; border:1px solid #3b3d41; background:#202225; color:#d7d9dc; padding:0 8px; font-size:11px; }
.docs-capture-actions { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.docs-capture-actions button { min-height:34px; border:1px solid #5b4a2b; background:#23201a; color:#d6b16b; font-size:10px; font-weight:750; letter-spacing:.07em; cursor:pointer; }
.docs-capture-actions button:hover { background:#2b261e; border-color:#8a6b36; }
.docs-capture-actions button:disabled { opacity:.45; cursor:default; }
.docs-capture-status { min-height:28px; padding:7px 8px; border-left:2px solid #a67f3e; background:#1b1c1f; color:#999da2; font-size:10px; line-height:1.35; }
body.docs-capture-recording::after { content:"HELP8 · RECORDING"; position:fixed; z-index:9799; left:50%; top:10px; transform:translateX(-50%); padding:6px 10px; border:1px solid #8d632c; background:rgba(23,18,12,.88); color:#ddb970; font:700 10px "Segoe UI",Arial,sans-serif; letter-spacing:.12em; pointer-events:none; }

/* MODERN2-PDWS2F · live pull-down motion scrubber. */

/* MODERN-3 / LIGHT-3I · compact integrated-lighting authoring HUD. */
.lighting-hud .lighting-summary-bank { grid-column: span 4; }
.lighting-hud .lighting-profile-bank { grid-column: span 4; }
.lighting-hud .lighting-readiness-bank { grid-column: span 4; }
.lighting-hud .lighting-preview-bank { grid-column: span 2; }
.lighting-run-select { min-width: 220px; max-width: 100%; }
.lighting-summary-text { color: var(--text-strong); font-weight: 650; }
.lighting-readiness {
  flex: 0 0 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  min-width: 0;
}
.lighting-status-pill {
  min-height: 20px;
  display: inline-flex;
  align-items: center;
  padding: 0 6px;
  border: 1px solid var(--border);
  border-radius: 2px;
  background: var(--field);
  color: var(--muted);
  font-size: 9px;
  font-weight: 750;
  letter-spacing: .055em;
  white-space: nowrap;
}
.lighting-status-pill[data-state="ok"] { border-color: var(--ui-good); background: var(--ui-good-bg); color: var(--ui-good); }
.lighting-status-pill[data-state="warn"] { border-color: var(--ui-warning); background: var(--ui-warning-bg); color: var(--ui-warning); }
.lighting-status-pill[data-state="error"] { border-color: var(--ui-danger-border); background: var(--ui-danger-bg); color: var(--ui-danger); }
.lighting-detail-readout { flex: 0 0 100%; min-width: 0; white-space: normal; line-height: 1.3; }
.lighting-secondary-readout { flex: 0 0 100%; min-width: 0; color: var(--muted); white-space: normal; line-height: 1.3; font-size: 10px; }
.lighting-inline-danger { width: auto; min-width: 0; height: 22px; grid-column: auto; }
.lighting-hud input[aria-invalid="true"] { border-color: var(--ui-danger-border); background: var(--ui-danger-bg); }
@media (max-width:1550px){
  .lighting-hud .lighting-summary-bank,
  .lighting-hud .lighting-profile-bank,
  .lighting-hud .lighting-readiness-bank { grid-column: span 6; }
  .lighting-hud .lighting-preview-bank { grid-column: span 4; }
}
@media (max-width:1120px){
  .lighting-hud .lighting-summary-bank,
  .lighting-hud .lighting-profile-bank,
  .lighting-hud .lighting-readiness-bank,
  .lighting-hud .lighting-preview-bank { grid-column: span 6; }
}
@media (max-width:760px){
  .lighting-hud .lighting-summary-bank,
  .lighting-hud .lighting-profile-bank,
  .lighting-hud .lighting-readiness-bank,
  .lighting-hud .lighting-preview-bank { grid-column: 1 / -1; }
}

/* HND-7A.10 · Opening selector hover preview typography parity.
   HND-7A.9 introduced the custom hoverable menu; HND-7A.10 pins its row
   typography to the same HUD scale/weight as the original native selector.

   HND-7A.9 · Opening selector with viewport hover preview.
   The native select remains the authoritative value but is hidden after the
   progressive-enhancement combobox is installed. The menu is portalled to
   <body> so the bottom HUD's overflow rules cannot clip it. */
.opening-hover-native-select { display:none !important; }
.opening-hover-select-button {
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  padding-right:27px;
  overflow:hidden;
  text-align:left;
  text-overflow:ellipsis;
  white-space:nowrap;
  cursor:default;
}
.opening-hover-select-button::after {
  content:"";
  position:absolute;
  right:8px;
  top:50%;
  width:0;
  height:0;
  margin-top:-2px;
  border-left:4px solid transparent;
  border-right:4px solid transparent;
  border-top:5px solid currentColor;
  opacity:.72;
  pointer-events:none;
}
.opening-hover-select-button[aria-expanded="true"]::after {
  margin-top:-3px;
  border-top:0;
  border-bottom:5px solid currentColor;
}
.opening-hover-select-menu {
  position:fixed;
  z-index:10020;
  padding:4px;
  overflow:auto;
  border:1px solid var(--ui-border-strong,var(--border));
  border-radius:2px;
  background:var(--ui-panel-bg,var(--panel));
  box-shadow:0 8px 24px rgba(0,0,0,.32);
  scrollbar-width:thin;
  scrollbar-color:var(--ui-border-strong,var(--border)) transparent;
}
.opening-hover-option {
  width:100%;
  min-height:27px;
  display:block;
  padding:4px 8px;
  border:1px solid transparent;
  border-radius:1px;
  background:transparent;
  color:var(--ui-text,var(--text));
  font-size:var(--ui-font-small,11px);
  font-weight:600;
  line-height:1.2;
  text-align:left;
  white-space:nowrap;
  cursor:default;
}
.opening-hover-option:hover,
.opening-hover-option:focus-visible {
  outline:none;
  border-color:var(--ui-border-strong,var(--border));
  background:var(--ui-hover-bg,var(--chrome-2));
  color:var(--ui-text-strong,var(--text-strong));
}
.opening-hover-option[aria-selected="true"] {
  border-color:var(--ui-accent,var(--accent));
  background:var(--ui-accent-bg,var(--accent-soft));
  color:var(--ui-text-strong,var(--text-strong));
}

/* MDO-2B · plan-first organizer divider editor.
   The HUD stays within one workstation column: choose an axis mode, work in the
   top-view, then edit only the selected bay instead of rendering every field. */
.organizer-layout-cluster {
  min-width:0;
  width:100% !important;
  max-width:100% !important;
  grid-template-columns:minmax(0,1fr);
  align-items:start;
  overflow:hidden;
}
.organizer-layout-cluster > .cluster-title,
.organizer-axis-controls,
.organizer-plan-editor,
.organizer-bay-editor,
.organizer-layout-hint { grid-column:1/-1; min-width:0; max-width:100%; }
.organizer-axis-controls {
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  gap:4px 7px;
  align-items:center;
  width:100%;
}
.organizer-axis-label {
  font-size:9px;
  font-weight:700;
  letter-spacing:.08em;
  opacity:.72;
  white-space:nowrap;
}
.organizer-axis-controls .hud-select { width:100%; min-width:0; }
.organizer-legacy-equalize { display:none !important; }
.organizer-plan-editor {
  position:relative;
  width:100%;
  height:124px;
  border:1px solid var(--ui-border,#3b3d40);
  border-radius:5px;
  background:rgba(127,127,127,.055);
  overflow:hidden;
  touch-action:none;
  user-select:none;
  box-sizing:border-box;
}
.organizer-plan-shell { position:absolute; inset:8px; border:4px solid currentColor; border-radius:3px; opacity:.84; pointer-events:none; }
.organizer-plan-divider { position:absolute; z-index:3; background:currentColor; opacity:.86; cursor:ew-resize; touch-action:none; }
.organizer-plan-divider[data-axis="X"] { top:8px; bottom:8px; width:4px; transform:translateX(-50%); }
.organizer-plan-divider[data-axis="Y"] { left:8px; right:8px; height:4px; transform:translateY(-50%); cursor:ns-resize; }
.organizer-plan-divider.is-locked { opacity:.24; cursor:not-allowed; }
.organizer-plan-bay-label {
  position:absolute;
  z-index:4;
  min-width:0;
  padding:2px 4px;
  border:1px solid transparent;
  border-radius:3px;
  background:rgba(18,19,20,.56);
  color:inherit;
  font:inherit;
  font-size:8.5px;
  line-height:1;
  opacity:.72;
  transform:translate(-50%,-50%);
  white-space:nowrap;
  cursor:pointer;
}
.organizer-plan-bay-label:hover,
.organizer-plan-bay-label:focus-visible { opacity:1; border-color:var(--ui-border-strong,var(--border)); outline:none; }
.organizer-plan-bay-label.is-selected { opacity:1; border-color:var(--ui-accent,var(--accent)); background:var(--ui-accent-bg,var(--accent-soft)); }
.organizer-plan-bay-label[data-axis="Y"] { opacity:.58; }
.organizer-plan-bay-label[data-axis="Y"].is-selected { opacity:1; }
.organizer-bay-editor { width:100%; display:block; min-width:0; overflow:hidden; }
.organizer-selected-bay {
  display:grid;
  grid-template-columns:auto 24px minmax(58px,1fr) auto 24px auto;
  gap:4px;
  align-items:center;
  width:100%;
  min-width:0;
}
.organizer-selected-bay-title {
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:9px;
  font-weight:700;
  letter-spacing:.04em;
  opacity:.76;
}
.organizer-bay-step {
  width:24px;
  min-width:24px;
  height:24px;
  padding:0;
  display:grid;
  place-items:center;
  border:1px solid var(--ui-border,#3b3d40);
  border-radius:3px;
  background:var(--ui-field-bg,transparent);
  color:inherit;
  cursor:pointer;
}
.organizer-selected-bay input[type="number"] { width:100%; min-width:0; box-sizing:border-box; }
.organizer-selected-bay-unit { font-size:9px; opacity:.58; }
.organizer-selected-bay-lock { display:flex; align-items:center; gap:3px; font-size:8.5px; opacity:.74; white-space:nowrap; }
.organizer-selected-bay.is-equal input[type="number"],
.organizer-selected-bay.is-equal .organizer-selected-bay-lock { opacity:.42; }
.organizer-layout-hint { white-space:normal; font-size:9px; line-height:1.25; opacity:.7; }

/* MDO-2C · Simplified organizer HUD.
   Keep the MDO-2 custom-divider controls in the DOM so saved custom layouts
   remain lossless, but remove the wide editor from the user-facing Drawer HUD. */
#drawerOrganizerCustomCluster[hidden] {
  display: none !important;
}
