:root{
  --bg:#0f1218; --panel:#171b24; --panel2:#1d2230; --line:#262c3a;
  --ink:#e7ecf3; --ink-dim:#bcc4d0; --accent:#43b0d0; --accent2:#caa15a;
  --ctrl:#11151e; --ctrl-hl:#1a2230;
  --shadow:0 6px 22px rgba(0,0,0,.35);
}
:root.light-theme{
  --bg:#eef1f6; --panel:#ffffff; --panel2:#f4f6fa; --line:#d3d8e1;
  --ink:#1b1f29; --ink-dim:#4f5767; --accent:#2a8fb0; --accent2:#9a7530;
  --ctrl:#e9edf3; --ctrl-hl:#dde6f2;
  --shadow:0 6px 22px rgba(0,0,0,.12);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--ink);
  font:14px/1.45 "Segoe UI",system-ui,-apple-system,sans-serif;
  display:flex; flex-direction:column; height:100vh; overflow:hidden;
}

/* Topbar */
#topbar{display:flex;align-items:center;gap:18px;padding:0 18px;height:52px;
  background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}
.brand{font-weight:700;font-size:18px;letter-spacing:.2px}
.brand span{color:var(--accent)}
.product-name{font-weight:600;color:var(--ink-dim)}
#design-tools{margin-left:auto;display:flex;gap:8px}
.tbtn{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:8px;
  padding:6px 14px;font-size:13px;font-weight:600;cursor:pointer}
.tbtn:hover{border-color:var(--accent)}
.tbtn.primary{background:var(--accent);color:#06222c;border-color:transparent}
.tbtn.primary:hover{filter:brightness(1.08)}
.cust{margin-left:16px;color:var(--ink-dim);font-size:13px}
.menu-err{color:#e0a0a0;font-size:11px;margin:-2px 0 7px;min-height:13px}
.submit-sum{font-size:13px;color:var(--ink);line-height:1.5;margin-bottom:10px}
.submit-sum b{color:var(--accent)}

/* Save / Open menu */
.menu{position:fixed;z-index:200;width:230px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow);padding:11px}
.menu-h{font-size:12px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:9px}
.menu-in{width:100%;background:var(--ctrl);border:1px solid var(--line);color:var(--ink);border-radius:7px;
  padding:7px 9px;font-size:13px;margin-bottom:8px}
.menu-in:focus{outline:none;border-color:var(--accent)}
.menu-btn{width:100%;padding:8px;border:1px solid var(--line);background:var(--ctrl);color:var(--ink);
  border-radius:8px;cursor:pointer;font-size:13px;margin-top:6px}
.menu-btn:hover{border-color:var(--accent)}
.menu-btn.primary{background:var(--accent);color:#06222c;font-weight:700;border-color:transparent}
.menu-btn.menu-seeds{border-color:var(--accent2);color:var(--accent2);font-weight:600;margin-bottom:6px}
.menu-btn.menu-seeds:hover{background:color-mix(in srgb,var(--accent2) 14%,transparent);border-color:var(--accent2)}
.menu-btn.danger{background:#3a1414;border-color:#7a2b2b;color:#e0a0a0;font-weight:600}
.menu-btn.danger:hover{background:#d06a6a;border-color:#d06a6a;color:#1a0808}

/* Library authoring (Bake, ★ save, ✕ delete) is admin-only — hidden for end users. */
body:not(.admin) #bake-feature,
body:not(.admin) #lib-export,
body:not(.admin) #lib-import,
body:not(.admin) .super-save,
body:not(.admin) .super-pick-del{display:none}
.menu-empty{color:var(--ink-dim);font-size:12px;padding:4px 0 8px}
.menu-sub{font-size:11px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.5px;margin:8px 0 5px}
.menu-check{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink);cursor:pointer;margin:2px 0 4px}
.menu-check input{accent-color:var(--accent);width:15px;height:15px}
.menu-row{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.menu-load{flex:1;text-align:left;background:var(--panel2);border:1px solid var(--line);color:var(--ink);
  border-radius:7px;padding:7px 9px;cursor:pointer;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.menu-load:hover{border-color:var(--accent)}
.menu-del{background:none;border:none;color:#6a7589;cursor:pointer;font-size:13px;padding:4px}
.menu-del:hover{color:#d06a6a}

#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(10px);z-index:300;
  background:var(--ctrl);border:1px solid var(--line);color:var(--ink);padding:9px 16px;border-radius:9px;
  font-size:13px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.18s}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Layout — four resizable, collapsible columns: Features | Your design | Parts | 3D */
#layout{display:flex;flex:1 1 auto;min-height:0}
.col{display:flex;flex-direction:column;min-height:0;min-width:0;background:var(--panel);overflow:hidden}
#col-pick{flex:0 0 220px}
#col-stack{flex:0 0 340px}
#col-sub{flex:0 0 300px}
#col-3d{flex:1 1 auto;position:relative;background:#0b0e13;min-width:160px}
.col-bar{flex:0 0 auto;display:flex;align-items:center;gap:7px;padding:9px 12px;
  border-bottom:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink-dim);
  text-transform:uppercase;letter-spacing:.5px}
.col-x{width:20px;height:20px;flex:0 0 auto;border:1px solid var(--line);background:var(--ctrl);color:var(--ink);
  border-radius:5px;cursor:pointer;font-size:11px;line-height:1;display:grid;place-items:center}
.col-x:hover{border-color:var(--accent)}
.col-body{flex:1 1 auto;overflow-y:auto;padding:14px 14px 24px}
.col.collapsed{flex:0 0 34px!important}
.col.collapsed .col-body{display:none}
.col.collapsed .col-bar span{display:none}
.col.collapsed .col-bar{justify-content:center;padding:9px 4px}

/* Drag handle between columns */
.vdiv{flex:0 0 6px;cursor:col-resize;background:var(--line);position:relative}
.vdiv:hover{background:var(--accent)}

#view{position:absolute;inset:0;overflow:hidden}
#view canvas{display:block}
.stage-foot{position:absolute;left:0;right:0;bottom:8px;text-align:center;
  color:#5a6678;font-size:12px;pointer-events:none}

/* Rail head */
.rail-head h2{margin:0 0 2px;font-size:15px}
.rail-head .hint{margin:0 0 10px;color:var(--ink-dim);font-size:12px}
.usage{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.usage-bar{flex:1;height:6px;border-radius:4px;background:var(--panel2);overflow:hidden}
.usage-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .15s}
.usage span{font-size:11px;color:var(--ink-dim);white-space:nowrap}

/* Workpiece panel */
.workpiece{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.workpiece h3{margin:0 0 6px;font-size:12px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.5px}
.toggle{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--ink);cursor:pointer}
.toggle input{accent-color:var(--accent);width:15px;height:15px}
.locknote{font-size:11px;color:var(--accent2);margin-top:7px}

/* Feature stack (col 2) + parts stack (col 3) — both bottom-to-top (column-reverse) */
#super-col{display:flex;flex-direction:column-reverse;gap:8px;margin-bottom:10px}
#sub-col{display:flex;flex-direction:column-reverse;gap:3px}
.sub-group{display:flex;flex-direction:column-reverse;gap:3px;border-radius:9px;
  border:1px solid transparent;padding:2px;transition:border-color .1s,background .1s}
.sub-group.hl{border-color:var(--accent);background:var(--ctrl-hl)}
.super-card{position:relative;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:22px 6px 8px;cursor:pointer}
.super-card.hl{border-color:var(--accent)}
.super-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset;background:var(--panel)}
.super-card.selected::after{content:'editing inside';position:absolute;top:3px;left:6px;font-size:10.5px;letter-spacing:.04em;color:var(--accent);opacity:.85}
.wp-feat{color:var(--accent)}
#col-3d{position:relative}
.bg-pick{position:absolute;top:10px;right:12px;display:flex;gap:5px;z-index:5;opacity:.55;transition:opacity .15s}
.bg-pick:hover{opacity:1}
.bg-sw{width:16px;height:16px;border-radius:50%;border:1px solid #0006;cursor:pointer;padding:0;box-shadow:0 1px 3px #0006}
.bg-sw.sel{outline:2px solid var(--accent);outline-offset:1px}
/* On-screen zoom (+ / − / fit) for laptops/trackpads with no scroll wheel. Overlays the 3D view. */
.zoom-ctrl{position:absolute;right:12px;bottom:30px;z-index:5;display:flex;flex-direction:column;gap:4px;opacity:.6;transition:opacity .15s}
.zoom-ctrl:hover{opacity:1}
.zoom-ctrl button{width:30px;height:30px;border-radius:7px;border:1px solid #ffffff33;background:#2a3140cc;color:#e7e7ea;cursor:pointer;padding:0;font-size:17px;line-height:1;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);touch-action:none;user-select:none}
.zoom-ctrl button:hover{background:#3a4150;border-color:#ffffff55}
.zoom-ctrl button:active{background:var(--accent);color:#111;border-color:var(--accent)}
.zoom-ctrl #zoom-fit{font-size:14px}
.bg-dark{background:#14171f}
.bg-grey{background:#d2d2d6}
.bg-light{background:#f2f0ea}
.super-swatch{width:80%;height:16px;border:1px solid #0006;border-radius:5px;cursor:pointer;padding:0}
.mini{display:flex;align-items:center;gap:3px}
.mini-btn{width:18px;height:18px;flex:0 0 auto;border:1px solid var(--line);background:var(--ctrl);color:var(--ink);
  border-radius:5px;cursor:pointer;font-size:11px;line-height:1;display:grid;place-items:center;user-select:none}
.mini-btn:hover{border-color:var(--accent)}
.mini-val{min-width:44px;text-align:center;font-size:11px;color:var(--ink-dim);font-variant-numeric:tabular-nums}
.super-ord{display:flex;gap:4px;margin-top:2px}
.ord-btn{width:22px;height:18px;border:1px solid var(--line);background:var(--ctrl);color:var(--ink-dim);
  border-radius:5px;cursor:pointer;font-size:11px;line-height:1;display:grid;place-items:center}
.ord-btn:hover{border-color:var(--accent);color:var(--ink)}
.super-sil{display:block}
.super-name{font-size:11px;font-weight:600;color:var(--ink);text-align:center;line-height:1.15}
.super-del{position:absolute;top:3px;right:5px;background:none;border:none;color:#6a7589;cursor:pointer;font-size:12px;padding:0}
.super-del:hover{color:#d06a6a}
.super-save{position:absolute;top:3px;left:5px;background:none;border:none;color:#6a7589;cursor:pointer;font-size:12px;padding:0}
.super-save:hover{color:var(--accent2)}
.super-pick{position:relative}
.super-pick-del{position:absolute;top:2px;right:4px;background:none;border:none;color:#6a7589;cursor:pointer;font-size:11px;padding:0}
.super-pick-del:hover{color:#d06a6a}
.menu-sel{width:100%;background:var(--ctrl);border:1px solid var(--line);color:var(--ink);border-radius:7px;padding:7px 9px;font-size:13px;margin-bottom:6px}
.menu-thumb{text-align:center}
.menu-thumb img{max-width:90px;max-height:110px;border-radius:6px;margin-top:6px;border:1px solid var(--line)}
.super-thumb{max-width:78px;max-height:78px;border-radius:6px;object-fit:contain;display:block}
.add-box-sub{opacity:.65;font-weight:400;font-size:12px;margin-top:6px}
.bake-btn{margin-top:8px;border-color:var(--accent2);color:var(--accent2);opacity:1;font-weight:600}
.bake-btn:hover{background:var(--accent2);color:#0b0e13;border-color:var(--accent2)}
.bar-act{margin-left:auto;background:var(--ctrl);border:1px solid var(--line);color:var(--ink-dim);
  border-radius:6px;padding:3px 9px;font-size:11px;cursor:pointer;letter-spacing:0;text-transform:none;font-weight:600}
.bar-act:hover{border-color:#d06a6a;color:#d06a6a}

/* Feature pick sheet */
.dialog-card.wide{width:min(700px,94vw)}
.super-sheet{padding:14px 16px;max-height:72vh;overflow-y:auto}
.super-cat{font-size:11px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.6px;margin:12px 0 7px}
.super-cat:first-child{margin-top:0}
.super-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.super-pick{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 6px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:5px}
.super-pick:hover{border-color:var(--accent)}
.super-pick span{font-size:12px;font-weight:600}
.super-pick .pk-cust{display:block;color:var(--ink)}
.super-pick .pk-sys{display:block;font-size:11px;font-weight:400;color:var(--ink-dim);margin-top:1px}
.super-sys{font-size:11px;font-weight:400;color:var(--ink-dim);margin-top:1px}

/* Insert-between affordance */
.ins{display:flex;align-items:center;justify-content:center;width:100%;height:18px;border:none;background:none;
  cursor:pointer;color:#5a6678;font-size:11px;position:relative;padding:0;margin:1px 0}
.ins::before{content:'';position:absolute;left:6px;right:6px;top:50%;border-top:1px dashed var(--line)}
.ins span{position:relative;z-index:1;background:var(--panel);padding:1px 9px;border:1px solid var(--line);
  border-radius:10px;opacity:.45;transition:.12s}
.ins:hover span{opacity:1;border-color:var(--accent);color:var(--ink)}
.ins:disabled{cursor:not-allowed;opacity:.25}
.super-ins{height:20px;margin:3px 0}
.super-ins span{opacity:.7;color:var(--accent2);border-color:var(--accent2)}
.super-ins:hover span{opacity:1;background:var(--accent2);color:#06222c;border-color:var(--accent2)}
.super-ins.armed span{opacity:1;background:var(--accent2);color:#06222c;border-color:var(--accent2);font-weight:600}
.box{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;box-shadow:var(--shadow)}
.box-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.box-idx{width:20px;height:20px;border-radius:6px;background:var(--ctrl);color:var(--ink-dim);
  display:grid;place-items:center;font-size:11px;flex:0 0 auto}
.box-shape{flex:1;text-align:left;background:var(--ctrl);border:1px solid var(--line);color:var(--ink);
  border-radius:7px;padding:6px 9px;cursor:pointer;font-weight:600}
.box-shape:hover{border-color:var(--accent)}
.swatch{position:relative;width:24px;height:24px;border-radius:7px;border:1px solid #0006;cursor:pointer;flex:0 0 auto;overflow:hidden}
.box-del{background:none;border:none;color:#6a7589;cursor:pointer;font-size:16px;padding:2px 4px}
.box-del:hover{color:#d06a6a}
.row{display:flex;align-items:center;gap:8px;margin-top:6px}
.row label{width:52px;flex:0 0 auto;color:var(--ink-dim);font-size:12px}
.stepper{display:flex;align-items:center;gap:6px;flex:1;justify-content:flex-end}
.stepper .val{min-width:64px;text-align:center;font-variant-numeric:tabular-nums;color:var(--ink);font-size:13px}
.step{width:28px;height:26px;flex:0 0 auto;border:1px solid var(--line);background:var(--ctrl);color:var(--ink);
  border-radius:6px;cursor:pointer;font-size:11px;line-height:1;display:grid;place-items:center;user-select:none}
.step:hover{border-color:var(--accent)}
.step:active{background:var(--accent);color:#06222c}
.step:disabled{opacity:.35;cursor:not-allowed}
.row.disabled{opacity:.5}
.ovr{display:flex;align-items:center;gap:7px;margin-top:8px;font-size:11px;color:var(--ink-dim);cursor:pointer}
.ovr input{accent-color:var(--accent);width:14px;height:14px}
.curvesel{flex:1;background:var(--ctrl);border:1px solid var(--line);color:var(--ink);border-radius:6px;
  padding:5px 8px;font-size:12px;cursor:pointer}
.curvesel:hover{border-color:var(--accent)}

/* Color-band editor */
.bandwrap{display:flex;flex:1;gap:6px;align-items:center}
.bandbar{display:flex;flex:1;height:26px;border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.bandcell{position:relative;min-width:6px;cursor:pointer}
.bandcell:hover .bandx{opacity:1}
.bandx{position:absolute;top:-2px;right:2px;font-size:12px;color:#fff;opacity:0;cursor:pointer;
  text-shadow:0 0 3px #000,0 0 3px #000;transition:.1s}
.bandh{width:6px;flex:0 0 6px;cursor:ew-resize;background:rgba(0,0,0,.4);z-index:1}
.bandh:hover{background:var(--accent)}
.bandadd{width:26px;height:26px;flex:0 0 auto;border:1px solid var(--line);background:var(--ctrl);color:var(--ink);
  border-radius:6px;cursor:pointer;font-size:15px;line-height:1;display:grid;place-items:center}
.bandadd:hover{border-color:var(--accent)}

/* In-app color popover */
.cpop{position:fixed;z-index:200;width:206px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow);padding:11px}
.cpop-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink-dim);margin-bottom:9px}
.cpop-x{background:none;border:none;color:var(--ink-dim);cursor:pointer;font-size:13px;padding:0 2px}
.cpop-x:hover{color:var(--ink)}
.cpop-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.cpop-sub{font-size:11px;color:var(--ink-dim);margin:10px 0 6px}
.cpop-sw{width:100%;aspect-ratio:1;border-radius:7px;border:2px solid transparent;cursor:pointer;padding:0}
.cpop-sw:hover{border-color:#ffffff80}
.cpop-sw.sel{border-color:#fff}
.cpop-custom{display:block;position:relative;margin-top:9px;padding:7px;text-align:center;font-size:12px;
  color:var(--ink-dim);border:1px dashed var(--line);border-radius:8px;cursor:pointer}
.cpop-custom:hover{border-color:var(--accent);color:var(--ink)}
.cpop-done{width:100%;margin-top:9px;padding:8px;border:none;border-radius:8px;background:var(--accent);
  color:#06222c;font-weight:700;cursor:pointer}

.add-box{width:100%;margin-top:12px;padding:10px;border:1px dashed var(--line);background:transparent;
  color:var(--ink-dim);border-radius:9px;cursor:pointer;font-weight:600}
.add-box:hover{border-color:var(--accent);color:var(--ink)}
.add-box:disabled{opacity:.4;cursor:not-allowed}

/* Finish */
.finish{margin-top:20px;border-top:1px solid var(--line);padding-top:14px}
.finish h3{margin:0 0 8px;font-size:13px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.5px}
.seg{display:flex;background:var(--panel2);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{flex:1;padding:7px 4px;background:none;border:none;color:var(--ink-dim);cursor:pointer;font-size:12px}
.seg button.active{background:var(--accent);color:#06222c;font-weight:700}
.seg-sm{margin:6px 0}.seg-sm button{padding:5px 4px;font-size:11px}
.workpiece h3.wp-sub{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.cut-block{border:1px solid var(--line);border-radius:9px;padding:8px;margin-bottom:8px;background:var(--panel)}
.cut-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--ink-dim);
  text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.cut-del{background:none;border:none;color:#6a7589;cursor:pointer;font-size:12px;padding:0}
.cut-del:hover{color:#d06a6a}
#finish-detail{margin-top:10px;display:flex;flex-wrap:wrap;gap:7px}
.chip{width:26px;height:26px;border-radius:7px;cursor:pointer;border:2px solid transparent}
.chip.active{border-color:var(--ink)}

/* Dialog */
.dialog{position:fixed;inset:0;background:#0009;display:grid;place-items:center;z-index:50}
.dialog[hidden]{display:none}
.dialog-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;width:min(440px,92vw);box-shadow:var(--shadow)}
.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);font-weight:600}
.dialog-head .x{background:none;border:none;color:var(--ink-dim);font-size:16px;cursor:pointer}
.shape-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:16px}
.shape-card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px;cursor:pointer;text-align:center}
.shape-card:hover{border-color:var(--accent)}
.shape-card svg{display:block;margin:0 auto 6px}
.shape-card span{font-size:13px;font-weight:600}
