@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--c-ink:#141414;--c-ink-2:#4a4a4a;--c-ink-3:#8d8d8a;--c-gray:#6d6e71;--c-paper:#f3f2ee;--c-surface:#fff;--c-accent:#2b5ce6;--c-accent-deep:#1d46c2;--c-on-accent:#fff;--bg:var(--c-paper);--surface:var(--c-surface);--fg:var(--c-ink);--fg-soft:var(--c-ink-2);--fg-muted:var(--c-ink-3);--fg-inverse:var(--c-paper);--rule:#6d6e7152;--rule-strong:#6d6e718c;--rule-ink:var(--c-gray);--accent:var(--c-accent);--accent-deep:var(--c-accent-deep);--on-accent:var(--c-on-accent);--w-hair:1px;--w-thin:1px;--w-med:2px;--w-bold:3px;--shadow-sm:0 1px 3px #1414140f, 0 1px 2px #1414140d;--shadow-md:0 8px 22px -10px #14141433, 0 2px 6px -2px #14141414;--shadow-lg:0 22px 48px -18px #1414144d, 0 6px 14px -8px #1414141f;--shadow-accent:0 10px 28px -10px #2b5ce66b, 0 2px 8px -2px #2b5ce647;--s-0:0;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:128px;--r-0:0;--ease-out:cubic-bezier(.22, .61, .36, 1);--dur-fast:.12s;--dur-base:.2s;--dur-slow:.42s;--font-display:"Space Grotesk", "Arial Narrow", system-ui, sans-serif;--font-body:"Space Grotesk", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-body);background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}#app{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);height:100vh;display:grid;overflow:hidden}.rule-fade{width:100%;height:var(--w-bold);background:linear-gradient(to right, var(--rule-ink) 0%, var(--rule-ink) 28%, transparent 100%);display:block}.eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.22em;color:var(--fg-muted);margin:0;font-size:11px;font-weight:600}.eyebrow--accent{color:var(--accent-deep)}.brandbar{z-index:2;background:var(--bg);box-shadow:var(--shadow-md);position:relative}.brandbar-row{justify-content:space-between;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--s-6);display:flex}.ink-stamp{background:var(--c-ink);align-items:center;padding:11px 18px;display:inline-flex}.brand-word{font-family:var(--font-display);letter-spacing:.16em;text-transform:uppercase;color:#fff;font-size:17px;font-weight:700;line-height:22px;display:block}.brandbar-right{align-items:center;gap:var(--s-4);display:inline-flex}.back-to-sb{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg);border:var(--w-hair) solid var(--c-ink);white-space:nowrap;padding:8px 14px;font-size:10.5px;font-weight:600;text-decoration:none;transition:background .12s,color .12s}.back-to-sb:hover{background:var(--c-ink);color:#fff}.powered{align-items:center;gap:var(--s-2);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);padding-left:var(--s-4);border-left:var(--w-hair) solid var(--rule);white-space:nowrap;font-size:10.5px;font-weight:500;display:inline-flex}.powered strong{color:var(--fg);font-weight:700}.powered-bird{width:15px;height:15px;display:block}@media (max-width:560px){.brandbar-right .powered{display:none}}.stage{padding:var(--s-5) var(--s-7);flex-direction:column;align-items:center;min-height:0;display:flex;overflow:hidden}.step{flex:1;width:100%;max-width:1180px;min-height:0}.step-head{max-width:760px;margin-bottom:var(--s-6)}.step-title{font-family:var(--font-display);letter-spacing:-.012em;text-transform:uppercase;margin:var(--s-3) 0 0;color:var(--fg);font-size:clamp(30px,3.6vw,52px);font-weight:700;line-height:1}.step-sub{color:var(--fg-soft);margin:var(--s-4) 0 0;max-width:60ch;font-size:15px;line-height:1.6}.step-head .rule-fade{margin-top:var(--s-5)}.step-shape{gap:var(--s-6);grid-template-columns:1fr 320px;align-items:start;display:grid}.step-shape .step-head{grid-column:1/-1}.shape-grid{gap:var(--s-5);grid-template-columns:repeat(4,1fr);display:grid}@media (max-width:1024px){.step-shape{grid-template-columns:1fr}.shape-grid{grid-template-columns:repeat(3,1fr)}}.shape-card{gap:var(--s-3);padding:var(--s-4);background:var(--surface);border:var(--w-thin) solid var(--rule);border-radius:var(--r-0);box-shadow:var(--shadow-sm);cursor:pointer;text-align:left;color:inherit;font:inherit;transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);flex-direction:column;display:flex;position:relative}.shape-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.shape-card:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.shape-card.is-selected{border-color:var(--accent);box-shadow:var(--shadow-accent)}.card-art{aspect-ratio:3/2;background-color:var(--c-paper);border:var(--w-hair) solid var(--rule);background-image:linear-gradient(90deg,#1414140b 1px,#0000 1px),linear-gradient(#1414140b 1px,#0000 1px);background-size:12px 12px;place-items:center;width:100%;display:grid}.card-art svg{width:78%;height:78%}.card-art path{fill:none;stroke:var(--c-gray);stroke-width:2.4px;stroke-linejoin:miter;vector-effect:non-scaling-stroke;transition:stroke var(--dur-base) var(--ease-out)}.shape-card:hover .card-art path{stroke:var(--c-ink)}.shape-card.is-selected .card-art path{stroke:var(--accent-deep)}.card-meta{flex-direction:column;gap:3px;display:flex}.card-name{font-family:var(--font-display);letter-spacing:-.005em;color:var(--fg);font-size:14px;font-weight:700}.card-code{font-family:var(--font-mono);color:var(--fg-muted);letter-spacing:.04em;font-size:10.5px}.shape-readout{padding:var(--s-5);background:var(--surface);border:var(--w-thin) solid var(--rule);box-shadow:var(--shadow-sm);position:sticky;top:0}.readout-hint{color:var(--fg-muted);font-family:var(--font-mono);margin:0;font-size:12px;line-height:1.6}.readout-name{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.01em;margin:var(--s-2) 0 var(--s-4);color:var(--fg);font-size:22px;font-weight:700}.readout-specs{gap:0;margin:0;display:grid}.spec-row{gap:var(--s-3);padding:var(--s-2) 0;border-top:var(--w-hair) solid var(--rule);grid-template-columns:84px 1fr;display:grid}.spec-row:last-child{border-bottom:var(--w-hair) solid var(--rule)}.spec-row dt{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fg-muted);align-self:center;font-size:10.5px}.spec-row dd{font-family:var(--font-mono);color:var(--fg);margin:0;font-size:13px}.readout-notes{margin:var(--s-4) 0 0;padding-left:var(--s-4);color:var(--fg-soft);font-size:12px;line-height:1.55}.readout-notes li{margin-bottom:var(--s-1)}.step-configure{gap:var(--s-4) 0;grid-template-rows:auto minmax(0,1fr);max-width:1280px;height:100%;display:grid}.step-configure .step-head{margin-bottom:0}.step-build{gap:var(--s-4) 0;grid-template-rows:auto minmax(0,1fr);max-width:1280px;height:100%;display:grid}.step-build .step-head{margin-bottom:0}.step-build .cfg-stage{grid-row:2}.step-build .cfg-build{opacity:1;pointer-events:auto;height:100%;position:static;transform:none}.cfg-stage{grid-row:2;min-height:0;position:relative}.cfg-browse,.cfg-build{opacity:0;pointer-events:none;transition:opacity .36s var(--ease-out), transform .36s var(--ease-out);position:absolute;inset:0;transform:translateY(10px)}.step-configure[data-view=profiles] .cfg-browse,.step-configure[data-view=controls] .cfg-build{opacity:1;pointer-events:auto;transform:none}@media (prefers-reduced-motion:reduce){.cfg-browse,.cfg-build{transition-duration:1ms;transform:none}}.cfg-browse{flex-direction:column;min-height:0;display:flex}.cfg-browse>.eyebrow{margin-bottom:var(--s-3);flex:none}.cfg-grid{gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-content:start;min-height:0;padding:2px;overflow-y:auto}.cfg-grid,.cfg-rail{scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent}.cfg-grid::-webkit-scrollbar{width:11px}.cfg-rail::-webkit-scrollbar{width:11px}.cfg-grid::-webkit-scrollbar-track{background:0 0}.cfg-rail::-webkit-scrollbar-track{background:0 0}.cfg-grid::-webkit-scrollbar-thumb{background:var(--rule-strong);background-clip:padding-box;border:3px solid #0000}.cfg-rail::-webkit-scrollbar-thumb{background:var(--rule-strong);background-clip:padding-box;border:3px solid #0000}.cfg-grid::-webkit-scrollbar-thumb:hover{background:var(--c-gray);background-clip:padding-box}.cfg-rail::-webkit-scrollbar-thumb:hover{background:var(--c-gray);background-clip:padding-box}.cfg-build{gap:var(--s-6);grid-template-columns:300px minmax(0,1fr);display:grid}.cfg-rail{min-height:0;padding-right:var(--s-5);border-right:var(--w-thin) solid var(--rule);flex-direction:column;display:flex;overflow-y:auto}.cfg-back{margin-bottom:var(--s-5);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--fg-muted);transition:color var(--dur-fast) var(--ease-out);background:0 0;border:none;flex:none;align-self:flex-start;padding:0;font-size:11px;font-weight:600}.cfg-back:hover{color:var(--accent-deep)}.cfg-controls-body{min-height:0}.cfg-config-label{margin-bottom:0}.cfg-name{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.01em;margin:var(--s-1) 0 0;color:var(--fg);font-size:22px;font-weight:700}.summary-code{font-family:var(--font-mono);color:var(--fg-muted);letter-spacing:.04em;margin:var(--s-1) 0 var(--s-5);font-size:11px}.cfg-preview{flex-direction:column;min-height:0;display:flex}.cfg-preview>.eyebrow{margin-bottom:var(--s-3);flex:none}.viewer-stage{flex:1;place-items:center;min-height:0;display:grid;position:relative}.viewer-stage.is-engine{background:0 0;overflow:visible}.viewer-svg{width:100%;height:100%;display:block}.viewer-shape path{fill:#1414140d;stroke:var(--c-ink);stroke-width:2px;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.viewer-svg .dim-line{stroke:var(--accent);stroke-width:1.25px}.viewer-svg .dim-label{fill:var(--accent-deep);font-family:var(--font-mono);letter-spacing:.03em;font-size:9px;font-weight:600}.axis{gap:var(--s-2);margin-bottom:var(--s-4);display:grid}.axis:last-child{margin-bottom:0}.axis-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--fg-muted);font-size:10.5px}.axis-options{gap:var(--s-2);flex-wrap:wrap;display:flex}.axis-range{align-items:center;gap:var(--s-3);grid-template-columns:minmax(0,1fr) auto;display:grid}.axis-track{--thumb-w:16px;--cap-x:calc(var(--thumb-w) / 2 + (100% - var(--thumb-w)) * var(--cap-pct,1));min-width:0;display:block;position:relative}.axis-slider{cursor:pointer;-webkit-appearance:none;appearance:none;background:0 0;width:100%;height:28px;margin:0}.axis-slider::-webkit-slider-runnable-track{background:var(--rule-strong);border-radius:3px;height:6px}.axis-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--accent);border:var(--w-med) solid var(--surface);width:16px;height:16px;box-shadow:var(--shadow-sm);border-radius:50%;margin-top:-5px}.axis-slider::-moz-range-track{background:var(--rule-strong);border-radius:3px;height:6px}.axis-slider::-moz-range-progress{background:var(--accent);border-radius:3px;height:6px}.axis-slider::-moz-range-thumb{border:var(--w-med) solid var(--surface);background:var(--accent);width:16px;height:16px;box-shadow:var(--shadow-sm);border-radius:50%}.axis-track.is-capped .axis-slider::-webkit-slider-runnable-track{background:linear-gradient(var(--rule-strong), var(--rule-strong)) 0 0 / var(--cap-x) 100% no-repeat, linear-gradient(90deg, #14141438, #14141408) var(--cap-x) 50% / calc(100% - var(--cap-x)) 1.5px no-repeat;background-color:#0000}.axis-track.is-capped .axis-slider::-moz-range-track{background:linear-gradient(var(--rule-strong), var(--rule-strong)) 0 0 / var(--cap-x) 100% no-repeat, linear-gradient(90deg, #14141438, #14141408) var(--cap-x) 50% / calc(100% - var(--cap-x)) 1.5px no-repeat;background-color:#0000}.axis-cap-tick{top:50%;left:var(--cap-x);background:var(--c-ink);pointer-events:none;width:2px;height:12px;position:absolute;transform:translate(-50%,-50%)}.axis-output{min-width:38px;font-family:var(--font-mono);color:var(--accent-deep);text-align:right;font-size:12px;font-weight:700}.axis-sub{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);font-size:10.5px}.axis-chip{font-family:var(--font-mono);cursor:pointer;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);color:var(--fg);border-radius:var(--r-0);box-shadow:var(--shadow-sm);transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);padding:8px 13px;font-size:12px;font-weight:600}.axis-chip:hover{border-color:var(--c-gray)}.axis-chip.is-selected{border-color:var(--accent);color:var(--accent-deep);box-shadow:var(--shadow-accent);background:#2b5ce614}.axis-chip:disabled,.axis-chip.is-locked{cursor:not-allowed;color:var(--fg-muted);background:var(--surface);border-color:var(--rule);box-shadow:none;opacity:.55;border-style:dashed}.axis-chip.is-locked:after{content:" 🔒";font-size:9px}.axis-chip:disabled:hover{border-color:var(--rule)}.axis-slider.is-locked{cursor:not-allowed}.axis-slider.is-locked::-webkit-slider-thumb{background:var(--fg-muted)}.axis-slider.is-locked::-moz-range-thumb{background:var(--fg-muted)}.axis-slider.is-locked::-moz-range-progress{background:var(--fg-muted)}.axis-sub--lock{color:var(--accent-deep);font-weight:700}@media (max-width:1024px){.stage{overflow-y:auto}.step{flex:none}.step-configure{height:auto}.cfg-stage{min-height:72vh}.cfg-build{grid-template-rows:auto minmax(320px,1fr);grid-template-columns:1fr}.cfg-rail{border-right:none;border-bottom:var(--w-thin) solid var(--rule);padding-right:0;padding-bottom:var(--s-5)}}@media (max-width:680px){.stage{padding:var(--s-4) var(--s-3)}.step-configure[data-view=profiles]{flex:1;height:100%;min-height:0}.step-configure[data-view=profiles] .cfg-stage{min-height:0}.step-configure[data-view=profiles] .cfg-grid{gap:var(--s-4);scroll-snap-type:x proximity;padding-bottom:var(--s-2);grid-template-rows:repeat(2,1fr);grid-template-columns:none;grid-auto-columns:42vw;grid-auto-flow:column;overflow:auto hidden}.step-configure[data-view=profiles] .cfg-grid .shape-card{scroll-snap-align:start;padding:var(--s-3);gap:var(--s-2)}.step-configure[data-view=profiles] .cfg-grid .card-art{aspect-ratio:auto;flex:1;min-height:0}.step-configure[data-view=profiles] .cfg-grid .card-name{font-size:12px}.step-configure[data-view=profiles] .cfg-grid .card-code{display:none}.step-configure[data-view=profiles] .cfg-browse:after{content:"";background:linear-gradient(to right, transparent, var(--bg));pointer-events:none;width:36px;position:absolute;top:0;bottom:0;right:0}}.tracker{z-index:2;background:var(--bg);box-shadow:var(--shadow-md);position:relative}.tracker-body{justify-content:space-between;align-items:center;gap:var(--s-5);padding:var(--s-4) var(--s-6);display:flex}.track-rail{align-items:center;gap:var(--s-4);flex:1;min-width:0;display:flex}.track-node{align-items:center;gap:var(--s-2);padding:var(--s-2) 0;border:none;border-bottom:var(--w-med) solid transparent;cursor:pointer;color:var(--fg-muted);font:inherit;background:0 0;display:inline-flex}.track-num{font-family:var(--font-mono);font-size:12px;font-weight:700}.track-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:600}.track-node.is-done{color:var(--fg-soft)}.track-node.is-active{color:var(--accent-deep);border-bottom-color:var(--accent)}.track-node.is-future{color:var(--fg-muted);cursor:default}.track-link{min-width:20px;max-width:96px;height:var(--w-hair);background:var(--rule);flex:1}.track-actions{gap:var(--s-3);flex:none;display:flex}.btn{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;border-radius:var(--r-0);border:var(--w-thin) solid var(--rule-strong);background:var(--surface);color:var(--fg);box-shadow:var(--shadow-sm);transition:transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);padding:12px 22px;font-size:12px;font-weight:600}.btn:disabled{border-color:var(--rule);color:var(--fg-muted);cursor:not-allowed;box-shadow:none;background:0 0;transform:none}.btn-ghost:not(:disabled):hover{box-shadow:var(--shadow-md);border-color:var(--c-gray);transform:translateY(-2px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent)}.btn-primary:not(:disabled):hover{background:var(--accent-deep);border-color:var(--accent-deep);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.btn-primary:not(:disabled):active{box-shadow:var(--shadow-sm);transform:translateY(0)}.home{height:100%;padding:var(--s-7) var(--s-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.home-head{max-width:640px;margin-bottom:var(--s-7)}.home-head .eyebrow{margin-bottom:var(--s-3)}.home-title{font-family:var(--font-display);letter-spacing:-.014em;text-transform:uppercase;margin:var(--s-3) 0 0;color:var(--fg);font-size:clamp(30px,4vw,56px);font-weight:700;line-height:1}.home-head .rule-fade{margin:var(--s-5) auto 0;max-width:200px}.home-cards{gap:var(--s-6);grid-template-columns:minmax(240px,360px);justify-content:center;display:grid}@media (max-width:680px){.home{padding:var(--s-5) var(--s-4)}.home-head{max-width:none;margin-bottom:var(--s-5)}.home-title{font-size:clamp(28px,8vw,34px)}.home-head .rule-fade{margin-top:var(--s-4)}.home-cards{gap:var(--s-3);grid-template-columns:1fr;width:100%;max-width:440px}.home-card{padding:var(--s-4) var(--s-5) var(--s-5);gap:var(--s-2)}.home-card:before{margin-bottom:var(--s-1)}.home-card-title{font-size:20px}.home-card-sub{font-size:13px;line-height:1.5}}.home-card{gap:var(--s-3);padding:var(--s-6) var(--s-6) var(--s-7);text-align:left;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);border-radius:var(--r-0);box-shadow:var(--shadow-sm);cursor:pointer;color:inherit;font:inherit;transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);flex-direction:column;display:flex}.home-card:hover{box-shadow:var(--shadow-md);border-color:var(--c-gray);transform:translateY(-4px)}.home-card:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.home-card:before{content:"";width:40px;height:var(--w-bold);background:var(--accent);margin-bottom:var(--s-2);transition:width var(--dur-base) var(--ease-out);display:block}.home-card:hover:before{width:64px}.home-card-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.01em;color:var(--fg);font-size:clamp(18px,2vw,24px);font-weight:700;display:block}.home-card-sub{color:var(--fg-soft);font-size:14px;line-height:1.6;display:block}.step-assemble{gap:var(--s-4) 0;grid-template-rows:auto minmax(0,1fr);max-width:1280px;height:100%;display:grid}.step-assemble .step-head{margin-bottom:0}.asm-stage{grid-row:2;min-height:0;position:relative}.asm-build{gap:var(--s-6);grid-template-columns:300px minmax(0,1fr);display:grid;position:absolute;inset:0}.step-assemble[data-view=empty] .asm-build{grid-template-rows:1fr;grid-template-columns:1fr}.step-assemble[data-view=empty] .asm-rail{display:none}.asm-rail{scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent}.asm-rail::-webkit-scrollbar{width:11px}.asm-rail::-webkit-scrollbar-track{background:0 0}.asm-rail::-webkit-scrollbar-thumb{background:var(--rule-strong);background-clip:padding-box;border:3px solid #0000}.asm-rail::-webkit-scrollbar-thumb:hover{background:var(--c-gray);background-clip:padding-box}.asm-rail{min-height:0;padding-right:var(--s-5);border-right:var(--w-thin) solid var(--rule);flex-direction:column;display:flex;overflow-y:auto}#asm-controls{transition:opacity .45s var(--ease-out)}#asm-controls.is-revealing{opacity:0;transition:none}.asm-parts{margin-top:var(--s-5);padding-top:var(--s-5);border-top:var(--w-hair) solid var(--rule)}.asm-remove{margin-top:var(--s-4);color:var(--fg-muted)}.asm-remove:hover{color:var(--accent-deep)}.asm-canvas{flex-direction:column;min-height:0;display:flex}.asm-canvas>.eyebrow{margin-bottom:var(--s-3);flex:none}.asm-canvas .viewer-stage{flex:1;place-items:center;min-height:0;display:grid;position:relative}.asm-canvas .viewer-stage.is-engine{background:0 0;overflow:visible}.asm-canvas .viewer-stage.is-base-add-open:before{content:"";z-index:0;background-color:var(--surface);background-image:linear-gradient(90deg,#1414140b 1px,#0000 1px),linear-gradient(#1414140b 1px,#0000 1px);background-size:12px 12px;position:absolute;inset:0 0 0 364px}.asm-canvas .viewer-stage.is-base-add-open .viewport-3d{inset:0 0 0 364px!important}.asm-canvas .viewer-stage.is-base-add-open .asm-seed{display:none}.asm-seed{z-index:2;align-items:center;gap:var(--s-4);padding:var(--s-5);cursor:pointer;background:0 0;border:none;flex-direction:column;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.asm-seed-mark{border:var(--w-med) dashed var(--rule-strong);background:var(--surface);width:72px;height:72px;box-shadow:var(--shadow-sm);color:var(--fg-muted);font-family:var(--font-mono);transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;font-size:34px;font-weight:700;line-height:1;display:grid}:is(.asm-seed:hover .asm-seed-mark,.asm-seed:focus-visible .asm-seed-mark){background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent);border-style:solid}.asm-seed-text{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.22em;color:var(--fg-muted);font-size:11px;font-weight:600}.asm-seed:focus-visible{outline:none}.asm-seed:focus-visible .asm-seed-mark{outline:var(--w-med) solid var(--accent);outline-offset:3px}.step-assemble[data-view=build] .asm-seed{display:none}@media (max-width:1024px){.step-assemble{height:auto}.asm-stage{min-height:72vh}.asm-build{grid-template-rows:auto minmax(320px,1fr);grid-template-columns:1fr}.asm-rail{border-right:none;border-bottom:var(--w-thin) solid var(--rule);padding-right:0;padding-bottom:var(--s-5)}}.layout-markers{pointer-events:none;position:absolute;inset:0}.port-add,.view-rotate button,.support-add{-webkit-appearance:none;appearance:none}.port-add{pointer-events:auto;border:var(--w-thin) solid var(--rule-strong);background:var(--surface);width:24px;height:24px;box-shadow:var(--shadow-sm);color:var(--fg-muted);font-family:var(--font-mono);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;font-size:14px;font-weight:700;line-height:1;display:grid;position:absolute;transform:translate(-50%,-50%)}:is(.port-add:hover,.port-add:focus-visible){background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent)}.port-add:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.view-rotate{left:var(--s-4);bottom:var(--s-4);gap:var(--s-2);z-index:5;pointer-events:auto;display:flex;position:absolute}.view-rotate button{border:var(--w-thin) solid var(--rule-strong);background:var(--surface);width:32px;height:32px;box-shadow:var(--shadow-sm);color:var(--fg);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;font-size:16px;line-height:1;display:grid}.view-rotate button:hover{border-color:var(--c-gray);background:var(--c-gray)}.view-rotate button:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.step-assemble[data-view=empty] .view-rotate{display:none}.view-toggle{left:var(--s-4);top:var(--s-4);z-index:5;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);box-shadow:var(--shadow-sm);display:flex;position:absolute}.view-toggle-cube{display:none}.view-toggle-menu{display:flex}.view-toggle-menu button{cursor:pointer;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);background:0 0;border:none;padding:8px 14px;font-size:11px;font-weight:600}.view-toggle-menu button+button{border-left:var(--w-hair) solid var(--rule)}.view-toggle-menu button:hover{color:var(--fg)}.view-toggle-menu button.is-selected{background:var(--accent);color:var(--on-accent)}.view-toggle-menu button:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:-2px}.step-assemble[data-view=empty] .view-toggle,.bom--fab{display:none}.step-assemble.is-plan .bom--fab{display:block}.step-assemble.is-plan .bom--price{display:none!important}.step-assemble.is-plan .view-rotate{display:none}.viewport-3d:before{content:"";opacity:0;pointer-events:none;background-color:var(--surface);transition:opacity .7s var(--ease-out);background-image:linear-gradient(90deg,#1414140b 1px,#0000 1px),linear-gradient(#1414140b 1px,#0000 1px);background-size:12px 12px;position:absolute;inset:0}.step-assemble.is-plan .viewport-3d:before{opacity:1}.viewport-3d canvas{position:relative}.plan-svg .plan-dim{stroke:var(--c-ink);stroke-width:1.25px;opacity:.8}.plan-svg .plan-dim-label{fill:var(--c-ink);font-family:var(--font-mono);letter-spacing:.03em;font-weight:600}.plan-svg .plan-hole{fill:none;stroke:var(--c-ink);stroke-width:1.4px}.plan-svg .plan-hole-cross{stroke:var(--c-ink);stroke-width:.9px;opacity:.65}.plan-svg .plan-balloon{fill:var(--surface);stroke:var(--c-ink);stroke-width:1.4px}.plan-svg .plan-balloon-text{fill:var(--c-ink);font-family:var(--font-mono);font-size:12px;font-weight:700}.bom--fab .bom__name small{word-break:normal;overflow-wrap:break-word}.fab-tag{border:var(--w-thin) solid var(--c-ink);border-radius:50%;place-items:center;width:16px;height:16px;margin-right:4px;font-size:9.5px;font-weight:700;line-height:1;display:inline-grid}.asm-export{background:var(--c-ink)}.asm-export:hover{background:#000}.files-card{background:var(--surface);border:var(--w-thin) solid var(--rule-strong);width:100%;max-width:460px;max-height:82vh;box-shadow:var(--shadow-lg);padding:var(--s-6);text-align:left;overflow-y:auto}.files-title{font-family:var(--font-display);text-transform:uppercase;letter-spacing:-.01em;margin:var(--s-2) 0 0;color:var(--fg);font-size:24px;font-weight:700}.files-sub{color:var(--fg-soft);margin:var(--s-2) 0 var(--s-5);font-size:13px;line-height:1.55}.files-list{border:var(--w-thin) solid var(--rule-strong);background:var(--surface)}.doc-name--mono{font-family:var(--font-mono);letter-spacing:.02em;font-size:12.5px;font-weight:700}.files-close{margin:var(--s-4) 0 0}.order-head{justify-content:space-between;align-items:center;gap:var(--s-4);margin:calc(-1 * var(--s-6)) calc(-1 * var(--s-6)) var(--s-5);padding:var(--s-4) var(--s-6);background:var(--c-ink);display:flex}.order-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:#ffffff9e;font-size:12px;font-weight:500}.order-title b{color:#fff;font-weight:700}.order-chip{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--c-ink);background:var(--c-paper);white-space:nowrap;padding:4px 9px;font-size:10px;font-weight:700}.manifest-row{align-items:center;gap:var(--s-4);padding:var(--s-3) var(--s-4);border-bottom:var(--w-hair) solid var(--rule);grid-template-columns:auto 1fr auto;display:grid}.manifest-row:last-child{border-bottom:none}.manifest-size{font-family:var(--font-mono);color:var(--fg-muted);white-space:nowrap;font-size:10.5px}.order-status{align-items:center;gap:var(--s-2);margin:var(--s-4) 0 0;font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-soft);font-size:11px;display:flex}.order-dot{background:var(--accent);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 3px #2b5ce62e}.conn-dot{background:var(--accent);border:var(--w-med) solid var(--surface);width:12px;height:12px;box-shadow:var(--shadow-sm);pointer-events:none;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.viewer-shape.is-selected path{stroke:var(--accent);fill:#2b5ce612}.support-overlay{pointer-events:none;position:absolute;inset:0}.support-add{pointer-events:auto;border:var(--w-thin) solid var(--accent-deep);background:var(--accent);width:26px;height:26px;color:var(--on-accent);box-shadow:var(--shadow-accent);font-family:var(--font-mono);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);border-radius:50%;justify-content:center;align-items:center;font-size:15px;font-weight:700;line-height:1;display:flex;position:absolute;transform:translate(-50%,-50%)}.support-add:hover{background:var(--accent-deep);transform:translate(-50%,-50%)scale(1.12)}.support-add:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.support-add.is-filled{background:var(--surface);border:var(--w-med) solid var(--accent);color:var(--accent-deep);box-shadow:var(--shadow-sm)}.support-add.is-filled:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.support-add svg{pointer-events:none;display:block}.support-popup{pointer-events:auto;z-index:20;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);min-width:196px;max-width:248px;box-shadow:var(--shadow-lg);font-family:var(--font-mono);color:var(--fg);position:absolute;transform:translate(-50%,calc(-100% - 16px))}.support-popup__head{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-bottom:var(--w-thin) solid var(--rule);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-muted);font-size:11px;display:flex}.support-popup__back{cursor:pointer;color:var(--fg-soft);background:0 0;border:none;padding:0 2px;font-size:16px;line-height:1}.support-popup__back:hover{color:var(--accent-deep)}.support-popup__list{flex-direction:column;display:flex}.support-popup__item{justify-content:space-between;align-items:baseline;gap:var(--s-2);padding:var(--s-2) var(--s-3);text-align:left;cursor:pointer;color:var(--fg);border:none;border-bottom:var(--w-hair) solid var(--rule);transition:background var(--dur-fast) var(--ease-out);background:0 0;font-family:inherit;font-size:12.5px;display:flex}.support-popup__item:last-child{border-bottom:none}.support-popup__item:hover{background:#2b5ce61a}.support-popup__item small{color:var(--fg-muted);font-size:10.5px}.support-popup__item--danger{color:var(--accent-deep)}.support-popup__item--go{background:var(--accent);color:var(--on-accent);margin:var(--s-2);justify-content:center;font-weight:600}.support-popup__item--go:hover{background:var(--accent-deep)}.support-popup__sizes{padding:var(--s-2) var(--s-3);gap:var(--s-2);flex-direction:column;display:flex}.support-popup__chiprow{flex-direction:column;gap:4px;display:flex}.support-popup__chiprow label{text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);font-size:10px}.support-popup__chips{flex-wrap:wrap;gap:4px;display:flex}.support-chip{border:var(--w-thin) solid var(--rule-strong);background:var(--surface);color:var(--fg-soft);font-family:var(--font-mono);cursor:pointer;padding:3px 7px;font-size:11px}.support-chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.support-popup__note{color:var(--fg-muted);margin:2px 0 0;font-size:10.5px}.finish-chips{gap:var(--s-2);margin-top:var(--s-3);flex-direction:column;display:flex}.finish-chip{text-align:left;padding:var(--s-2) var(--s-3);border:var(--w-thin) solid var(--rule-strong);background:var(--surface);color:var(--fg-soft);font-family:var(--font-mono);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);font-size:12.5px}.finish-chip:hover{border-color:var(--accent);color:var(--fg)}.finish-chip.is-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.finish-chip:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:2px}.bom{z-index:30;width:268px;max-width:calc(100% - 2 * var(--s-4));background:var(--surface);border:var(--w-thin) solid var(--rule-strong);box-shadow:var(--shadow-lg);font-family:var(--font-mono);color:var(--fg);pointer-events:auto;position:fixed;top:96px;right:28px}.bom__head{padding:var(--s-2) var(--s-3);border-bottom:var(--w-thin) solid var(--rule);letter-spacing:.07em;text-transform:uppercase;color:var(--fg-muted);font-size:10.5px}.bom__group{flex-direction:column;display:flex}.bom__line{justify-content:space-between;align-items:baseline;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-bottom:var(--w-hair) solid var(--rule);display:flex}.bom__line--sub{padding-left:var(--s-5);background:#6d6e710d}.bom__line--sub .bom__name span{color:var(--fg-soft);font-size:11.5px}.bom__name{flex-direction:column;gap:2px;min-width:0;display:flex}.bom__name span{font-size:12.5px}.bom__name small{color:var(--fg-muted);word-break:break-all;font-size:10px}.bom__price{white-space:nowrap;font-size:12.5px}.bom__total{padding:var(--s-3);border-top:var(--w-med) solid var(--rule-ink);justify-content:space-between;font-size:13.5px;font-weight:700;display:flex}.bom__note{padding:0 var(--s-3) var(--s-3);color:var(--fg-muted);font-size:10px;line-height:1.4}.flyout-scrim{z-index:200;padding:var(--s-5);background:#1414147a;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.flyout{background:var(--surface);border:var(--w-thin) solid var(--rule-strong);box-shadow:var(--shadow-lg);padding:var(--s-6);gap:var(--s-5);flex-direction:column;width:100%;max-width:680px;max-height:80vh;display:flex;overflow-y:auto}.flyout>.eyebrow{flex:none}.flyout-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));align-content:start;display:grid}.flyout-card{gap:var(--s-3);padding:var(--s-4);background:var(--surface);border:var(--w-thin) solid var(--rule);border-radius:var(--r-0);box-shadow:var(--shadow-sm);cursor:pointer;text-align:left;color:inherit;font:inherit;transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);flex-direction:column;display:flex;position:relative}.flyout-card:not(.is-disabled):hover{box-shadow:var(--shadow-md);border-color:var(--c-gray);transform:translateY(-3px)}.flyout-card:not(.is-disabled):focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.flyout-card.is-selected{border-color:var(--accent);box-shadow:var(--shadow-accent)}.flyout-card.is-selected .card-art path{stroke:var(--accent-deep)}.flyout-card .card-art{aspect-ratio:3/2;background-color:var(--c-paper);border:var(--w-hair) solid var(--rule);background-image:linear-gradient(90deg,#1414140b 1px,#0000 1px),linear-gradient(#1414140b 1px,#0000 1px);background-size:12px 12px;place-items:center;display:grid;position:relative;overflow:hidden}.flyout-card .card-art svg{width:78%;height:78%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.flyout-card .card-art path{fill:none;stroke:var(--c-gray);stroke-width:2.4px;stroke-linejoin:miter;vector-effect:non-scaling-stroke;transition:stroke var(--dur-base) var(--ease-out)}.flyout-card:not(.is-disabled):hover .card-art path{stroke:var(--c-ink)}.flyout-card .card-name{font-family:var(--font-display);letter-spacing:-.005em;color:var(--fg);font-size:13px;font-weight:700}.flyout-card.is-disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.card-soon{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);font-size:10px;font-weight:500;display:block}.add-flyout-scrim{z-index:40;background:0 0;position:absolute;inset:0}.add-flyout{z-index:41;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);width:340px;max-height:calc(100% - 24px);box-shadow:var(--shadow-lg);padding:var(--s-5);gap:var(--s-4);flex-direction:column;display:flex;position:absolute;overflow-y:auto}.add-flyout.is-base-add{height:100%;max-height:none;padding:var(--s-5) var(--s-5) 0 0;box-shadow:none;background:0 0;border:0}.add-flyout .flyout-grid{gap:var(--s-3);grid-template-columns:repeat(2,minmax(0,1fr))}.add-flyout-selected{align-items:center;gap:var(--s-3);display:flex}.add-flyout-thumb{background-color:var(--c-paper);border:var(--w-hair) solid var(--rule);background-image:linear-gradient(90deg,#1414140b 1px,#0000 1px),linear-gradient(#1414140b 1px,#0000 1px);background-size:8px 8px;flex:none;place-items:center;width:40px;height:40px;display:grid}.add-flyout-thumb svg{width:78%;height:78%}.add-flyout-thumb path{fill:none;stroke:var(--accent-deep);stroke-width:2.4px;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.add-flyout-selected-name{min-width:0;font-family:var(--font-display);letter-spacing:-.005em;color:var(--fg);flex:auto;font-size:15px;font-weight:700}.add-flyout-change{flex:none;align-self:center;margin:0}.add-flyout .axis{gap:var(--s-2);flex-direction:column;display:flex}.rot-arrow{justify-content:space-between;align-items:center;gap:var(--s-2);font-family:var(--font-mono);background:var(--surface);border:var(--w-thin) solid var(--rule-strong);cursor:pointer;box-shadow:var(--shadow-sm);padding:8px 13px;font-size:12px;font-weight:600;display:flex}.rot-arrow:hover{border-color:var(--c-gray)}.add-flyout-add{margin-top:var(--s-2);cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent);border:none;padding:10px;font-weight:700}.add-flyout-add[disabled]{background:var(--rule-strong);color:var(--fg-muted);box-shadow:none;cursor:not-allowed}.add-flyout-cancel{margin-top:var(--s-1);cursor:pointer;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);background:0 0;border:none;padding:8px;font-size:11px;font-weight:600}.add-flyout-cancel:hover{color:var(--fg);text-decoration:underline}.cfg-section{margin-top:var(--s-5);padding-top:var(--s-5);border-top:var(--w-hair) solid var(--rule)}.cfg-section:first-of-type{border-top:none;margin-top:0;padding-top:0}.cfg-section>.axis-label{margin-bottom:var(--s-4);font-family:var(--font-display);text-transform:uppercase;letter-spacing:0;color:var(--fg);font-size:16px;font-weight:700;line-height:1;display:block}.cfg-section[data-size] .axis:last-child{margin-bottom:0}.wood-grid{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.wood-swatch{border:var(--w-thin) solid var(--rule);background:var(--surface);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);gap:5px;padding:5px 5px 6px;display:grid}.wood-swatch:hover{border-color:var(--c-gray)}.wood-swatch.is-selected{border-color:var(--accent);box-shadow:var(--shadow-accent)}.wood-swatch:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:2px}.wood-chip{border:var(--w-hair) solid var(--rule);background-color:var(--surface);background-position:50%;background-size:300%;width:100%;height:34px;display:block}.wood-chip--wire{background-image:linear-gradient(135deg, transparent 46%, var(--fg) 46%, var(--fg) 54%, transparent 54%);background-position:50%;background-repeat:no-repeat;background-size:18px 18px}.wood-name{font-family:var(--font-mono);color:var(--fg-muted);text-align:center;overflow-wrap:anywhere;font-size:9px;line-height:1.1}.wood-swatch.is-selected .wood-name{color:var(--accent-deep)}.shape-mini{gap:var(--s-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.shape-mini button{border:var(--w-thin) solid var(--rule);background:var(--surface);cursor:pointer;min-height:84px;transition:border-color var(--dur-fast) var(--ease-out);grid-template-rows:minmax(30px,1fr) auto;place-items:center;padding:5px 4px 6px;display:grid}.shape-mini button:hover{border-color:var(--c-gray)}.shape-mini button.is-selected{border-color:var(--accent);box-shadow:var(--shadow-accent)}.shape-mini svg{width:100%;height:auto;max-height:38px}.shape-mini path{fill:none;stroke:var(--c-gray);stroke-width:3px;stroke-linejoin:miter;vector-effect:non-scaling-stroke}.shape-mini button.is-selected path{stroke:var(--accent-deep)}.shape-mini-label{width:100%;font-family:var(--font-mono);color:var(--fg-muted);text-align:center;overflow-wrap:anywhere;word-break:normal;font-size:9px;line-height:1.08}.shape-mini button.is-selected .shape-mini-label{color:var(--accent-deep)}.leg-types{gap:var(--s-2);flex-wrap:wrap;display:flex}.leg-list{gap:var(--s-2);flex-direction:column;display:flex}.leg-row{text-align:left}.cfg-hint{font-family:var(--font-mono);color:var(--fg-muted);margin:var(--s-2) 0 0;font-size:10.5px}.cfg-prompt{font-family:var(--font-mono);color:var(--fg-muted);margin:0;font-size:12px;line-height:1.5}.parts-list{margin:var(--s-3) 0 0;flex-direction:column;padding:0;list-style:none;display:flex}.part-row{align-items:baseline;gap:var(--s-3);padding:var(--s-2) 0;border-bottom:var(--w-hair) solid var(--rule);grid-template-columns:auto 1fr auto;display:grid}.part-row:first-child{border-top:var(--w-hair) solid var(--rule)}.part-code{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);white-space:nowrap;font-size:10.5px;font-weight:600}.part-name{font-family:var(--font-body);color:var(--fg);font-size:13px;font-weight:600}.part-dims{font-family:var(--font-mono);color:var(--fg-muted);text-align:right;white-space:nowrap;font-size:11px}.asm-review{z-index:31;cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent);transition:background var(--dur-fast) var(--ease-out);border:none;padding:11px 18px;font-size:12px;font-weight:700;position:fixed;bottom:28px;right:28px}.asm-review:hover{background:var(--accent-deep)}.asm-review:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.review{height:100%;padding:var(--s-7) var(--s-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.review-head{max-width:640px;margin-bottom:var(--s-6)}.review-head .eyebrow{margin-bottom:var(--s-3)}.review-title{font-family:var(--font-display);letter-spacing:-.012em;text-transform:uppercase;margin:var(--s-3) 0 0;color:var(--fg);font-size:clamp(28px,3.4vw,48px);font-weight:700;line-height:1}.review-head .rule-fade{margin:var(--s-5) auto 0;max-width:200px}.review-summary{color:var(--fg-soft);margin:0 0 var(--s-6);font-size:14px}.review-summary strong{color:var(--fg);font-weight:700}.review-form{gap:var(--s-5);text-align:left;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);width:100%;max-width:420px;box-shadow:var(--shadow-md);padding:var(--s-6);flex-direction:column;display:flex}.review-field{gap:var(--s-2);flex-direction:column;display:flex}.review-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.16em;color:var(--fg-muted);font-size:11px;font-weight:600}.review-input{font-family:var(--font-body);color:var(--fg);background:var(--surface);border:var(--w-thin) solid var(--rule-strong);border-radius:var(--r-0);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);padding:10px 12px;font-size:15px}.review-input::placeholder{color:var(--fg-muted)}.review-input:focus{border-color:var(--accent);box-shadow:0 0 0 var(--w-med) #2b5ce647;outline:none}.review-submit{margin-top:var(--s-2);cursor:pointer;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent);transition:background var(--dur-fast) var(--ease-out);border:none;padding:12px;font-size:13px;font-weight:700}.review-submit:hover:not([disabled]){background:var(--accent-deep)}.review-submit:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:3px}.review-submit[disabled]{background:var(--rule-strong);color:var(--fg-muted);box-shadow:none;cursor:not-allowed}.review-back{margin:var(--s-1) 0 0;align-self:center}.review-docs{width:100%;max-width:420px;margin:0 0 var(--s-5);text-align:left;background:var(--surface);border:var(--w-thin) solid var(--rule-strong);box-shadow:var(--shadow-md)}.review-docs-head{padding:var(--s-2) var(--s-4);border-bottom:var(--w-thin) solid var(--rule);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin:0;font-size:10.5px;font-weight:600}.doc-row{align-items:center;gap:var(--s-4);width:100%;padding:var(--s-3) var(--s-4);border:none;border-bottom:var(--w-hair) solid var(--rule);cursor:pointer;text-align:left;color:inherit;font:inherit;transition:background var(--dur-fast) var(--ease-out);background:0 0;grid-template-columns:auto 1fr auto;display:grid}.doc-row:last-child{border-bottom:none}.doc-row:hover{background:#2b5ce60f}.doc-row:focus-visible{outline:var(--w-med) solid var(--accent);outline-offset:-2px}.doc-icon{color:var(--fg-soft);place-items:center;display:grid}.doc-icon svg{width:26px;height:26px;display:block}.doc-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.doc-name{font-family:var(--font-display);letter-spacing:-.005em;color:var(--fg);font-size:13.5px;font-weight:700}.doc-sub{font-family:var(--font-mono);color:var(--fg-muted);font-size:10.5px}.doc-dl{border:var(--w-thin) solid var(--rule-strong);background:var(--surface);width:32px;height:32px;color:var(--fg);box-shadow:var(--shadow-sm);transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;display:grid}.doc-dl svg{width:15px;height:15px;display:block}.doc-dl svg.doc-dl-check{display:none}.doc-row:hover .doc-dl{background:var(--accent);border-color:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent)}.doc-row.is-saved .doc-dl{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.doc-row.is-saved .doc-dl svg.doc-dl-arrow{display:none}.doc-row.is-saved .doc-dl svg.doc-dl-check{display:block}.doc-row.is-saved .doc-sub{color:var(--accent-deep);font-weight:600}.success{height:100%;padding:var(--s-7) var(--s-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.success-mark{width:72px;height:72px;margin-bottom:var(--s-6);background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-accent);border-radius:50%;justify-content:center;align-items:center;font-size:36px;font-weight:700;line-height:1;display:flex}.success-mark svg{width:34px;height:34px;display:block}.success-title{font-family:var(--font-display);letter-spacing:-.012em;text-transform:uppercase;max-width:18ch;color:var(--fg);margin:0;font-size:clamp(26px,3.2vw,44px);font-weight:700;line-height:1.05}.success-sub{color:var(--fg-soft);margin:var(--s-4) 0 var(--s-7);max-width:48ch;font-size:15px;line-height:1.6}.success-done{max-width:280px;padding-left:var(--s-6);padding-right:var(--s-6)}.asm-bom-toggle,.asm-shelf-grip{display:none}@media (max-width:680px){#app{height:100vh;height:100dvh}#app[data-mode=builder] .stage{padding:var(--s-4) var(--s-3);overflow:hidden}.step-assemble{height:100%}.asm-stage{min-height:0}.step-assemble[data-view=build] .step-head,.step-assemble.is-adding .step-head{display:none}.asm-build{grid-template-rows:1fr;grid-template-columns:1fr;gap:0}.asm-canvas>.eyebrow{display:none}.view-toggle{box-shadow:none;background:0 0;border:none}.view-toggle-cube{background:var(--surface);border:var(--w-thin) solid var(--rule-strong);width:40px;height:40px;box-shadow:var(--shadow-sm);color:var(--fg);cursor:pointer;place-items:center;padding:0;display:grid}.view-toggle-cube svg{width:20px;height:20px;display:block}.view-toggle.is-open .view-toggle-cube{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.view-toggle-menu{display:none}.view-toggle.is-open .view-toggle-menu{background:var(--surface);border:var(--w-thin) solid var(--rule-strong);min-width:140px;box-shadow:var(--shadow-md);flex-direction:column;align-items:stretch;display:flex;position:absolute;top:calc(100% + 6px);left:0}.view-toggle.is-open .view-toggle-menu button{text-align:left;padding:12px 14px}.view-toggle.is-open .view-toggle-menu button+button{border-left:none;border-top:var(--w-hair) solid var(--rule)}.step-assemble.is-shelf-open .asm-canvas,.step-assemble.is-adding .asm-canvas{padding-bottom:52vh;padding-bottom:52dvh}.asm-rail{z-index:60;height:52vh;height:52dvh;padding:0 var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom,0px));border:none;border-top:var(--w-med) solid var(--rule-strong);background:var(--surface);box-shadow:var(--shadow-lg);transition:transform var(--dur-slow) var(--ease-out);overscroll-behavior:contain;border-radius:14px 14px 0 0;position:fixed;bottom:0;left:0;right:0;transform:translateY(105%)}.step-assemble.is-shelf-open .asm-rail{transform:translateY(0)}.step-assemble[data-view=empty] .asm-rail,.step-assemble.is-adding .asm-rail{display:none}.asm-shelf-grip{z-index:1;margin:0 calc(-1 * var(--s-5));padding:var(--s-2) 0 0;background:var(--surface);border-bottom:var(--w-hair) solid var(--rule);justify-content:center;display:flex;position:sticky;top:0}.asm-shelf-dismiss{width:64px;height:32px;color:var(--fg-muted);cursor:pointer;background:0 0;border:none;place-items:center;font-size:24px;line-height:1;display:grid}.asm-shelf-dismiss:active{color:var(--fg)}#asm-controls{padding-top:var(--s-3)}.axis-range{gap:var(--s-4)}.axis-track{--thumb-w:28px}.axis-slider{touch-action:pan-x;height:44px}.axis-slider::-webkit-slider-thumb{width:28px;height:28px;margin-top:-11px}.axis-slider::-moz-range-thumb{width:28px;height:28px}.asm-bom-toggle{z-index:62;-webkit-appearance:none;appearance:none;border:var(--w-thin) solid var(--rule-strong);background:var(--surface);width:44px;height:44px;color:var(--fg);box-shadow:var(--shadow-md);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);border-radius:50%;place-items:center;display:grid;position:fixed;top:70px;right:12px}.step-assemble[data-view=empty] .asm-bom-toggle{display:none}.step-assemble.is-bom-open .asm-bom-toggle{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.bom{z-index:61;transform-origin:100% 0;opacity:0;visibility:hidden;width:min(300px,100vw - 24px);max-width:none;transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), visibility 0s linear var(--dur-base);top:122px;right:12px;transform:scale(.96)}.step-assemble.is-bom-open .bom{opacity:1;visibility:visible;transition:opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out);transform:scale(1)}.asm-review{bottom:16px;right:12px}.step-assemble.is-shelf-open .asm-review,.step-assemble.is-adding .asm-review{display:none}.add-flyout,.add-flyout.is-base-add{width:auto;height:52vh;z-index:60;height:52dvh;max-height:none;padding:var(--s-3) var(--s-5) calc(var(--s-5) + env(safe-area-inset-bottom,0px));background:var(--surface);border:none;border-top:var(--w-med) solid var(--rule-strong);box-shadow:var(--shadow-lg);overscroll-behavior:contain;border-radius:14px 14px 0 0;position:fixed;bottom:0;right:0;overflow-y:auto;top:auto!important;left:0!important}.asm-canvas .viewer-stage.is-base-add-open:before,.asm-canvas .viewer-stage.is-base-add-open .viewport-3d{inset:0!important}#app[data-mode=review] .stage{overflow-y:auto}.review{height:auto;min-height:100%;padding:var(--s-5) var(--s-4) var(--s-6);justify-content:flex-start}.review-head,.review-summary{margin-bottom:var(--s-5)}.review-form{padding:var(--s-5);gap:var(--s-4)}}
