/* ============================================================================
   CNC WORKSTATION — Fullscreen overlay
   Layout: 50px header + activity bar (48px) + detail panel (240px) + canvas
   Typography: DM Sans (labels) + DM Mono (technical values)
   ============================================================================ */

.cnc-overlay { position:fixed; inset:0; z-index:1800; background:#fff; display:none; overflow:hidden }
.cnc-overlay.open { display:block }
.cnc { height:100vh; display:flex; flex-direction:column; font-family:'DM Sans',system-ui,sans-serif; color:#1a1a1a }

/* ── Header (50px) ── */
.cnc-head { display:flex; align-items:center; justify-content:space-between; padding:0 28px; height:50px; border-bottom:1px solid #f0f0ee; flex-shrink:0; background:#fff }
.cnc-head-left { display:flex; align-items:center }
.cnc-head-right { display:flex; align-items:center; gap:10px }
.cnc-brand { display:flex; align-items:center; gap:10px; transition:opacity .15s }
.cnc-brand:hover { opacity:.7 }
.cnc-brand-icon { flex-shrink:0; transition:transform .7s cubic-bezier(.25,0,.25,1) }
.cnc-brand:hover .cnc-brand-icon { transform:rotate(90deg) }
.cnc-brand-name { font-family:'Outfit','DM Sans',sans-serif; font-size:19px; font-weight:500; letter-spacing:-.01em }
.cnc-brand-sub { font-family:'DM Mono',monospace; font-size:10px; color:#bbb; letter-spacing:.1em; text-transform:uppercase; padding:3px 7px; border:1px solid rgba(0,0,0,.06); border-radius:4px; margin-left:2px }
.cnc-pill { font-family:'DM Mono',monospace; font-size:11px; color:#888; padding:3px 9px; background:rgba(0,0,0,.03); border-radius:10px; white-space:nowrap }
.cnc-pill b { font-weight:500; color:#1a1a1a; margin-right:2px }
.cnc-format { font-family:'DM Mono',monospace; font-size:11px; padding:7px 14px; border:1px solid rgba(0,0,0,.08); border-radius:6px; background:none; color:#1a1a1a; cursor:pointer; -webkit-appearance:none }
.cnc-export { font-family:inherit; font-size:12px; font-weight:500; padding:8px 22px; border-radius:6px; background:#1a1a1a; color:#fff; border:none; cursor:pointer; transition:background .15s }
.cnc-export:hover { background:#333 }

/* ── Body ── */
.cnc-body { display:flex; flex:1; min-height:0; overflow:hidden }

/* ── Activity bar (narrow left strip) ── */
.cnc-bar { width:48px; border-right:1px solid rgba(0,0,0,.06); flex-shrink:0; display:flex; flex-direction:column; background:#fff }
.cnc-bar-item { padding:14px 0; text-align:center; cursor:pointer; border-left:2px solid transparent; transition:all .15s; user-select:none; position:relative }
.cnc-bar-item:hover { background:rgba(0,0,0,.02) }
.cnc-bar-item.active { border-left-color:#1a1a1a; background:rgba(0,0,0,.03) }
.cnc-bar-label { font-family:'DM Mono',monospace; font-size:8px; letter-spacing:.06em; text-transform:uppercase; color:#bbb; writing-mode:horizontal-tb }
.cnc-bar-item.active .cnc-bar-label { color:#1a1a1a }
.cnc-bar-icon { width:18px; height:18px; margin:0 auto 4px; opacity:.4 }
.cnc-bar-item.active .cnc-bar-icon { opacity:.9 }
.cnc-bar-count { position:absolute; top:8px; right:6px; font-family:'DM Mono',monospace; font-size:8px; font-weight:500; color:#fff; background:#1a1a1a; border-radius:6px; padding:0 4px; min-width:14px; line-height:14px; text-align:center }

/* ── Detail panel (shows when bar item active) ── */
.cnc-detail { width:0; overflow:hidden; border-right:0 solid rgba(0,0,0,.06); flex-shrink:0; background:#fff; transition:width .2s cubic-bezier(.4,0,.2,1), border-right-width 0s .2s }
.cnc-detail.open { width:240px; border-right-width:1px; overflow-y:auto; transition:width .2s cubic-bezier(.4,0,.2,1), border-right-width 0s 0s }
.cnc-detail-inner { min-width:240px }
.cnc-detail-head { padding:14px 16px 10px; border-bottom:1px solid rgba(0,0,0,.04); display:flex; justify-content:space-between; align-items:center }
.cnc-detail-title { font-family:'DM Mono',monospace; font-size:10px; color:#bbb; letter-spacing:.1em; text-transform:uppercase }
.cnc-detail-close { font-size:16px; color:#ccc; cursor:pointer; background:none; border:none; padding:0 2px; transition:color .15s }
.cnc-detail-close:hover { color:#1a1a1a }
.cnc-detail-body { padding:8px 0 }

/* Parts list inside detail panel */
.cnc-part { display:flex; align-items:center; padding:9px 16px; cursor:pointer; border-bottom:1px solid rgba(0,0,0,.02); transition:background .1s }
.cnc-part:hover { background:rgba(0,0,0,.02) }
.cnc-part.active { background:rgba(0,0,0,.04) }
.cnc-part-info { flex:1; min-width:0 }
.cnc-part-name { font-size:13px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.cnc-part-dim { font-family:'DM Mono',monospace; font-size:10px; color:#aaa; margin:2px 0 0 }
.cnc-part-ops { display:flex; gap:3px; margin-left:8px; flex-shrink:0 }
.cnc-op { font-family:'DM Mono',monospace; font-size:9px; padding:2px 6px; border-radius:8px; font-weight:500 }
.cnc-op-b { background:rgba(55,138,221,.1); color:rgba(55,138,221,.85) }
.cnc-op-g { background:rgba(186,117,23,.1); color:rgba(186,117,23,.85) }
.cnc-op-p { background:rgba(127,119,221,.1); color:rgba(127,119,221,.85) }
.cnc-op-none { font-size:9px; color:#ccc; font-family:'DM Mono',monospace }

/* Settings content shared styles */
.cnc-sg-body { padding:8px 16px 14px }
.cnc-collapsed { display:none }
.cnc-add { font-size:10px; color:#bbb; text-align:center; padding:6px 0; cursor:pointer; transition:color .15s }
.cnc-add:hover { color:#1a1a1a }

/* Profile cards */
.cnc-profile { padding:10px 14px; border:1px solid rgba(0,0,0,.06); border-radius:8px; margin:0 0 8px; cursor:pointer; transition:all .15s }
.cnc-profile:hover { border-color:rgba(0,0,0,.2) }
.cnc-profile.active { border-color:#1a1a1a }
.cnc-profile-n { font-size:13px; font-weight:500 }
.cnc-profile-d { font-size:11px; color:#aaa; margin:2px 0 0 }

/* Tool cards */
.cnc-tool-grid { display:flex; flex-direction:column; gap:6px }
.cnc-tool-card { border:1px solid rgba(0,0,0,.06); border-radius:6px; padding:8px 10px }
.cnc-tool-card-head { display:flex; align-items:center; gap:5px; cursor:pointer }
.cnc-tool-id-input { font-family:'DM Mono',monospace; font-weight:500; font-size:11px; color:#1a1a1a; width:32px; border:none; background:none; padding:0 }
.cnc-tool-id-input:focus { outline:none; border-bottom:1px solid #1a1a1a }
.cnc-tool-dia { font-family:'DM Mono',monospace; font-size:9px; color:#aaa; margin-left:auto }
.cnc-tool-name-input { font-family:inherit; font-size:11px; font-weight:500; color:#1a1a1a; border:none; background:none; padding:0; flex:1; min-width:0 }
.cnc-tool-name-input:focus { outline:none; border-bottom:1px solid #1a1a1a }
.cnc-tool-card-body { margin:6px 0 0; padding:4px 0 0; border-top:1px solid rgba(0,0,0,.04) }
.cnc-tool-card-row { display:flex; align-items:center; gap:5px; padding:2px 0; font-size:11px }
.cnc-tool-field-label { font-family:'DM Mono',monospace; font-size:9px; color:#bbb; min-width:28px }
.cnc-tool-type-sel { font-family:inherit; font-size:10px; color:#1a1a1a; padding:2px 6px; border:1px solid rgba(0,0,0,.06); border-radius:4px; background:rgba(0,0,0,.015); cursor:pointer; -webkit-appearance:none; flex:1 }
.cnc-tool-val { font-family:'DM Mono',monospace; font-size:10px; color:#1a1a1a; text-align:right; padding:3px 6px; border:1px solid rgba(0,0,0,.06); border-radius:4px; background:rgba(0,0,0,.015); width:48px }
.cnc-tool-val:focus { outline:none; border-color:#1a1a1a }
.cnc-tool-unit { font-family:'DM Mono',monospace; font-size:8px; color:#bbb; min-width:20px }

/* Mapping rows */
.cnc-map-row { display:flex; justify-content:space-between; align-items:center; padding:4px 0; font-size:11px }
.cnc-map-label { color:#888 }
.cnc-map-sel { font-family:'DM Mono',monospace; font-size:10px; font-weight:500; color:#1a1a1a; padding:3px 8px; border:1px solid rgba(0,0,0,.06); border-radius:4px; background:rgba(0,0,0,.015); cursor:pointer; -webkit-appearance:none }

/* Mapping cards (grouped) */
.cnc-map-group-title { font-family:'DM Mono',monospace; font-size:9px; color:#bbb; letter-spacing:.08em; text-transform:uppercase; padding:12px 0 6px; border-bottom:1px solid rgba(0,0,0,.04); margin:0 0 6px }
.cnc-map-group-title:first-child { padding-top:0 }
.cnc-map-card { padding:8px 10px; border:1px solid rgba(0,0,0,.05); border-radius:6px; margin:0 0 6px; background:rgba(0,0,0,.01) }
.cnc-map-card-top { display:flex; justify-content:space-between; align-items:baseline; margin:0 0 6px }
.cnc-map-card-label { font-size:12px; font-weight:500 }
.cnc-map-card-desc { font-family:'DM Mono',monospace; font-size:9px; color:#bbb }
.cnc-map-card .cnc-map-sel { width:100%; padding:5px 8px; font-size:10px }

/* Beslag groups */
.cnc-beslag-group { padding:12px 14px; border:1px solid rgba(0,0,0,.05); border-radius:8px; margin:0 0 8px; background:rgba(0,0,0,.01) }
.cnc-beslag-label { font-size:12px; font-weight:500; margin:0 0 8px }
.cnc-beslag-sel { font-family:inherit; font-size:10px; color:#1a1a1a; padding:4px 8px; border:1px solid rgba(0,0,0,.08); border-radius:5px; background:#fff; cursor:pointer; -webkit-appearance:none; width:100%; margin:0 0 6px }
.cnc-beslag-sel:focus { outline:none; border-color:#1a1a1a }
.cnc-beslag-dims { display:grid; grid-template-columns:1fr 1fr; gap:5px }
.cnc-beslag-dim { display:flex; flex-direction:column; gap:2px }
.cnc-beslag-dim-l { font-family:'DM Mono',monospace; font-size:8px; color:#bbb; letter-spacing:.06em; text-transform:uppercase }
.cnc-beslag-input { font-family:'DM Mono',monospace; font-size:12px; color:#1a1a1a; text-align:right; padding:5px 8px; border:1px solid rgba(0,0,0,.08); border-radius:6px; background:#fff; width:100% }
.cnc-beslag-input:hover { border-color:rgba(0,0,0,.15) }
.cnc-beslag-input:focus { outline:none; border-color:#1a1a1a }

/* ── Diagram canvas ── */
.cnc-canvas { flex:1; display:flex; flex-direction:column; min-width:0; overflow:hidden; background:#fafaf8; background-image:radial-gradient(circle,rgba(0,0,0,.04) .8px,transparent .8px); background-size:20px 20px }
.cnc-canvas-head { display:flex; justify-content:space-between; align-items:center; padding:10px 24px; flex-shrink:0; background:rgba(250,250,248,.85); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border-bottom:1px solid rgba(0,0,0,.04); z-index:1; position:relative }
.cnc-canvas-stats { display:flex; align-items:center; gap:6px }
.cnc-canvas-title { font-size:16px; font-weight:500 }
.cnc-canvas-sub { font-family:'DM Mono',monospace; font-size:11px; color:#aaa }
.cnc-canvas-dims { font-family:'DM Mono',monospace; font-size:11px; color:#bbb; margin-left:10px }

/* Diagram + op panel */
.cnc-canvas-split { flex:1; display:flex; min-height:0; overflow:hidden }
.cnc-diagram { flex:1; display:flex; align-items:center; justify-content:center; padding:8px 16px; min-width:0; cursor:grab; overflow:hidden; position:relative }
.cnc-diagram svg { shape-rendering:geometricPrecision }
.cnc-preview-empty { flex:1; display:flex; align-items:center; justify-content:center; color:#ccc; font-size:13px }

/* ── Op properties panel ── */
.cnc-op-panel { width:0; overflow:hidden; background:#fff; display:flex; flex-direction:column; transition:width .25s cubic-bezier(.4,0,.2,1); flex-shrink:0; border-left:0 solid rgba(0,0,0,.06) }
.cnc-op-panel.open { width:240px; border-left-width:1px; overflow-y:auto }
.cnc-op-panel-inner { min-width:240px; display:flex; flex-direction:column; height:100% }
.cnc-op-accent { height:3px; flex-shrink:0; opacity:.6 }
.cnc-op-head { padding:20px 18px 14px }
.cnc-op-head-row { display:flex; justify-content:space-between; align-items:flex-start }
.cnc-op-close { font-size:18px; line-height:1; color:#ccc; background:none; border:none; cursor:pointer; padding:0 2px; transition:color .15s; margin:-2px -2px 0 0 }
.cnc-op-close:hover { color:#1a1a1a }
.cnc-op-name { font-size:13px; font-weight:500; display:flex; align-items:center; gap:7px; line-height:1.3 }
.cnc-op-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0 }
.cnc-op-sect-t { font-family:'DM Mono',monospace; font-size:9px; color:#bbb; letter-spacing:.1em; text-transform:uppercase; margin:0 0 10px }
.cnc-op-body { padding:0 18px 18px; flex:1 }
.cnc-op-coords { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin:0 0 4px }
.cnc-op-coord { display:flex; flex-direction:column; gap:3px }
.cnc-op-coord-l { font-family:'DM Mono',monospace; font-size:9px; color:#bbb; letter-spacing:.06em; text-transform:uppercase }
.cnc-op-input { font-family:'DM Mono',monospace; font-size:13px; color:#1a1a1a; text-align:right; padding:7px 9px; border:1px solid rgba(0,0,0,.08); border-radius:6px; background:#fafaf8; width:100% }
.cnc-op-input:hover { border-color:rgba(0,0,0,.15) }
.cnc-op-input:focus { outline:none; border-color:#1a1a1a; background:#fff }
.cnc-op-sep { height:0; border-top:1px solid rgba(0,0,0,.05); margin:12px 0 }
.cnc-op-row { display:flex; justify-content:space-between; align-items:center; padding:5px 0; font-size:12px }
.cnc-op-label { color:#999; font-size:11px }
.cnc-op-val-ro { font-family:'DM Mono',monospace; font-size:11px; color:#bbb; padding:3px 8px; background:rgba(0,0,0,.025); border-radius:4px }
.cnc-op-unit { font-family:'DM Mono',monospace; font-size:9px; color:#bbb; margin-left:3px }
.cnc-op-tool { display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid rgba(0,0,0,.06); border-radius:8px; background:#fafaf8 }
.cnc-op-tool-id { font-family:'DM Mono',monospace; font-size:13px; font-weight:500 }
.cnc-op-tool-name { font-size:11px; color:#aaa }

#cnc-sel-ring { pointer-events:none }
.cnc-op-hit { cursor:pointer }
.cnc-op-hit:hover { opacity:.85 }

/* ── Upgrade ── */
.cnc-upgrade .cnc-upgrade-body { flex:1; display:flex; align-items:center; justify-content:center; background:#fafaf8 }
.cnc-upgrade-card { text-align:center; max-width:420px; padding:48px 40px }
.cnc-upgrade-icon { margin:0 0 24px; opacity:.6 }
.cnc-upgrade-title { font-family:inherit; font-size:28px; font-weight:600; letter-spacing:-.02em; margin:0 0 12px }
.cnc-upgrade-desc { font-size:14px; color:#888; line-height:1.6; margin:0 0 32px }
.cnc-upgrade-features { text-align:left; margin:0 0 36px }
.cnc-upgrade-feat { font-size:13px; color:#555; padding:8px 0; border-bottom:1px solid rgba(0,0,0,.04) }
.cnc-upgrade-feat::before { content:'\2192 '; color:#bbb }
.cnc-upgrade-actions { display:flex; flex-direction:column; gap:10px; align-items:center }
.cnc-pro-badge { font-family:'DM Mono',monospace; font-size:9px; font-weight:500; letter-spacing:.08em; color:#888; border:1px solid rgba(0,0,0,.1); border-radius:3px; padding:1px 5px; margin-left:6px; vertical-align:middle }
