:root{--bg: #f4f3f0;--panel: #ffffff;--ink: #1c2130;--muted: #646b7c;--line: #e2e0da;--accent: #e2611a;--accent-ink: #ffffff;--navy: #1f2d5c;--navy-ink: #ffffff;--stage: #e9e7e2;--floor: #f7f5f0;--wallc: #fbfaf7;--grid: #d6d3cc;--plate: #ffffff;--warn: #a15c00;--warn-bg: #fff3df;--font-ui: "Barlow", "Segoe UI", system-ui, sans-serif;--font-display: "Barlow Condensed", "Arial Narrow", "Segoe UI", sans-serif;--font-data: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #13151b;--panel: #1b1e26;--ink: #eceef3;--muted: #9aa1b2;--line: #2b2f3a;--accent: #f07a35;--accent-ink: #1a1206;--navy: #9fb1ef;--navy-ink: #10162b;--stage: #1d2029;--floor: #2a2d35;--wallc: #3a3e48;--grid: #30343e;--plate: #f1efea;--warn: #ffc56b;--warn-bg: #3a2a10;color-scheme:dark}}:root[data-theme=dark]{--bg: #13151b;--panel: #1b1e26;--ink: #eceef3;--muted: #9aa1b2;--line: #2b2f3a;--accent: #f07a35;--accent-ink: #1a1206;--navy: #9fb1ef;--navy-ink: #10162b;--stage: #1d2029;--floor: #2a2d35;--wallc: #3a3e48;--grid: #30343e;--plate: #f1efea;--warn: #ffc56b;--warn-bg: #3a2a10;color-scheme:dark}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:14px;box-sizing:border-box;padding-block:12px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#app{height:100%;display:grid;gap:12px;grid-template-columns:318px minmax(0,1fr) 248px;grid-template-rows:auto minmax(0,1fr);grid-template-areas:"top top top" "side stage parts"}.topbar{grid-area:top;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.brand{display:flex;align-items:baseline;gap:10px;margin-right:auto}.brand h1{font-family:var(--font-display);font-weight:700;font-size:24px;letter-spacing:.01em;margin:0;text-transform:uppercase}.brand h1 b{color:var(--accent);font-weight:700}.chip-proto{font-family:var(--font-data);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:2px 6px}.seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--panel)}.seg button{border:0;background:none;padding:6px 11px;font-weight:500;font-size:13px}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--navy);color:var(--navy-ink)}.label-sm{font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.swatch{width:14px;height:14px;border-radius:3px;display:inline-block;vertical-align:-2px;margin-right:5px;border:1px solid rgba(0,0,0,.2)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;min-width:0;min-height:0;display:flex;flex-direction:column}.side{grid-area:side}.parts{grid-area:parts}.tabs{display:flex;border-bottom:1px solid var(--line)}.tabs button{flex:1;border:0;background:none;padding:11px 8px;font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--accent)}.pane{padding:14px;display:flex;flex-direction:column;gap:12px;overflow:auto;min-height:0;flex:1}.addto{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pill{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:500}.pill[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.groups{display:flex;flex-wrap:wrap;gap:6px}.groups .pill .n{font-family:var(--font-data);font-size:11px;opacity:.7;margin-left:4px}.search{width:100%;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:var(--bg)}.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tile{border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:6px 6px 7px;display:flex;flex-direction:column;gap:3px;text-align:left;transition:border-color .12s}.tile:hover{border-color:var(--accent)}.tile .ph{aspect-ratio:1;background:var(--plate);border-radius:4px;display:grid;place-items:center;overflow:hidden}.tile .ph img{width:82%;height:82%;-o-object-fit:contain;object-fit:contain}.tile .ph span{font-family:var(--font-data);font-size:11px;color:#8a8f99}.tile .sku{font-family:var(--font-data);font-weight:600;font-size:12px}.tile .dim{font-family:var(--font-data);font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums}.note{font-size:12.5px;color:var(--muted);line-height:1.45}.field{display:grid;grid-template-columns:1fr 96px;align-items:center;gap:8px}.field label{font-weight:500}.unit{position:relative}.unit input{width:100%;border:1px solid var(--line);border-radius:6px;padding:7px 26px 7px 9px;background:var(--bg);font-family:var(--font-data);font-variant-numeric:tabular-nums}.unit:after{content:"in";position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--muted)}.layouts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.layout{border:1px solid var(--line);border-radius:6px;background:var(--panel);padding:8px 4px 6px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:12px;font-weight:500}.layout svg{width:40px;height:32px}.layout svg path{stroke:var(--muted)}.layout[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.layout[aria-pressed=true] svg path{stroke:var(--accent)}.btn{border:1px solid var(--line);background:var(--panel);border-radius:6px;padding:7px 12px;font-weight:600;font-size:13px}.btn.primary{background:var(--navy);color:var(--navy-ink);border-color:var(--navy)}.btn.danger{color:#c23b22}.btn.armed{background:#c23b22;color:#fff;border-color:#c23b22}.stage{grid-area:stage;position:relative;border-radius:8px;overflow:hidden;background:var(--stage);border:1px solid var(--line);min-height:0}.stage canvas{display:block;width:100%;height:100%;touch-action:none}.ov{position:absolute}.ov-views{top:10px;left:10px;display:flex;gap:8px;flex-wrap:wrap}.ov-hint{left:12px;bottom:10px;font-size:12px;color:var(--muted);background:color-mix(in srgb,var(--panel) 80%,transparent);padding:4px 8px;border-radius:4px}.ov-example{top:10px;right:10px;font-size:12px;background:var(--warn-bg);color:var(--warn);padding:5px 9px;border-radius:4px;font-weight:500}.toast{top:52px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:6px;font-size:13px;font-weight:500;max-width:90%;text-align:center;transition:opacity .2s}.selcard{left:50%;bottom:12px;transform:translate(-50%);width:min(560px,calc(100% - 24px));background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:grid;gap:10px;box-shadow:0 6px 24px #0000001f}.selhead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.selhead .sku{font-family:var(--font-data);font-weight:600;font-size:18px;color:var(--accent)}.selhead .what{color:var(--muted)}.dims{display:flex;gap:14px;font-family:var(--font-data);font-size:13px;font-variant-numeric:tabular-nums;flex-wrap:wrap}.dims span b{color:var(--muted);font-weight:500;margin-right:4px}.selrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.selrow select,.selrow .unit input{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--bg)}.selrow .unit{width:92px}.parts h2{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:.06em;text-transform:uppercase;margin:0;padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:baseline}.parts h2 small{font-family:var(--font-data);font-size:12px;color:var(--muted);letter-spacing:0;text-transform:none;font-weight:500}.plist{list-style:none;margin:0;padding:6px 14px;overflow:auto;flex:1;min-height:0}.plist li{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:7px 0;border-bottom:1px solid var(--line)}.plist .sku{font-family:var(--font-data);font-weight:600;font-size:13px}.plist .qty{font-family:var(--font-data);font-size:13px;font-variant-numeric:tabular-nums}.plist .meta{grid-column:1 / -1;font-size:11.5px;color:var(--muted);font-family:var(--font-data)}.pfoot{padding:12px 14px;border-top:1px solid var(--line);display:grid;gap:8px}.flag{font-size:12px;line-height:1.4;background:var(--warn-bg);color:var(--warn);border-radius:5px;padding:7px 9px}@media(max-width:1100px){#app{grid-template-columns:290px minmax(0,1fr);grid-template-areas:"top top" "side stage" "parts parts";grid-template-rows:auto minmax(0,1fr) auto}.parts .plist{max-height:220px}}@media(max-width:760px){html,body{height:auto}#app{height:auto;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 62vh auto auto;grid-template-areas:"top" "stage" "side" "parts"}.side .pane{max-height:70vh}.selcard{padding:10px}.ov-example{top:50px;left:10px;right:auto}.toast{top:88px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.tiles .subhead{grid-column:1 / -1;margin:6px 0 0;font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.tiles .subhead:first-child{margin-top:0}.load-error{top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;text-align:center;background:var(--stage);color:var(--ink);font-size:15px;line-height:1.5}.load-error code{font-family:var(--font-data);background:var(--panel);padding:2px 6px;border-radius:4px}.tile .price{font-family:var(--font-data);font-size:11.5px;font-weight:600;color:var(--accent)}.plist li{grid-template-columns:1fr auto}.plist .lp{grid-column:1 / -1;font-family:var(--font-data);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.plist .lp b{color:var(--ink);font-weight:600}.plist .qty.step{display:inline-flex;align-items:center;gap:4px}.plist .qty.step button{border:1px solid var(--line);background:var(--panel);border-radius:4px;width:22px;height:22px;padding:0;line-height:1;font-size:13px}.plist .qty.step button.rm{border-color:transparent;color:var(--muted);margin-left:2px}.qtotals{padding:4px 14px 8px;border-top:1px solid var(--line);display:grid;gap:3px;font-variant-numeric:tabular-nums}.qtotals:empty{display:none}.qtotals div{display:flex;justify-content:space-between;font-size:13px;color:var(--muted)}.qtotals div span:last-child{font-family:var(--font-data);color:var(--ink)}.qtotals .grand{font-size:15px;color:var(--ink);font-weight:600;border-top:1px solid var(--line);padding-top:6px;margin-top:3px}.qtotals .grand span:last-child{font-size:16px}.qtotals .note{margin:4px 0 0}.btn.big{width:100%;padding:11px 12px;font-size:15px;background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.big:disabled{opacity:.45;cursor:not-allowed}.btn.primary:not(.big){background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.other summary{cursor:pointer;font-size:13px;color:var(--navy);font-weight:500}.otherform{display:grid;grid-template-columns:1fr 64px auto;gap:6px;margin-top:8px}.otherform input{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--bg);min-width:0}#quoteDlg{border:0;border-radius:10px;padding:22px;width:min(520px,calc(100% - 32px));background:var(--panel);color:var(--ink);box-shadow:0 20px 60px #0000004d}#quoteDlg::backdrop{background:#0f14238c}#quoteDlg h2{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.03em;font-size:24px;margin:0 0 6px}.qfields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.qfields label{display:grid;gap:4px;font-size:13px;font-weight:500}.qfields .wide{grid-column:1 / -1}.qfields .opt{color:var(--muted);font-weight:400}.qfields input,.qfields textarea{border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:var(--bg);font:inherit;width:100%}.qerror{background:#fde8e4;color:#a12a12;padding:8px 10px;border-radius:6px;font-size:13px;margin:12px 0 0}.qactions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-wrap:wrap}.qactions .btn{text-decoration:none;display:inline-flex;align-items:center}.qnum{font-family:var(--font-data);color:var(--accent)}@media(max-width:520px){.qfields{grid-template-columns:1fr}}.ov-views,.ov-example{z-index:7}.toast{z-index:9}.selcard{z-index:8}.ov-hint{z-index:6}.view2d{top:0;right:0;bottom:0;left:0;z-index:5;background:var(--stage);display:flex;flex-direction:column}.v2bar{position:absolute;top:52px;left:10px;display:flex;gap:6px;flex-wrap:wrap;z-index:1}.v2svg{flex:1;min-height:0;padding:96px 16px 48px;display:flex}.v2svg svg{width:100%;height:100%;background:#fff;border-radius:6px;box-shadow:0 2px 12px #00000014}.v2svg .cab:hover polygon,.v2svg .cab:hover rect{filter:brightness(.96)}.check{display:flex;align-items:center;gap:8px;font-weight:500}.islmore{display:grid;gap:10px}.islmore select,.oprow select{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--bg)}.oplist{display:grid;gap:8px}.oprow{border:1px solid var(--line);border-radius:6px;padding:8px;display:grid;gap:8px}.ophead{display:flex;align-items:center;gap:8px}.ophead b{font-weight:600;margin-right:auto}.ophead .rm{border:0;background:none;color:var(--muted);font-size:14px;padding:2px 6px}.opgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px}.opgrid label{display:grid;gap:3px;font-size:12px;color:var(--muted)}.opgrid .unit input{padding:5px 24px 5px 7px}@media(max-width:760px){.v2svg{padding-top:92px}}.ov-views .btn{padding:6px 11px}.seg button:disabled{color:var(--muted);opacity:.5;cursor:default}.selcard{width:min(640px,calc(100% - 24px));gap:8px}.selhead .price{margin-left:auto;font-family:var(--font-data);font-weight:600;color:var(--ink)}.selrow .lab{font-size:12px;color:var(--muted)}.selrow .grp{display:inline-flex;align-items:center;gap:6px}.selrow .unit{width:84px}.selrow #nudgeL,.selrow #nudgeR{padding:6px 9px}.selrow #selSize{max-width:220px}.btn[aria-pressed=true]{background:var(--navy);color:var(--navy-ink);border-color:var(--navy)}.selrow .unit input{padding-right:24px}
