:root:has(.assembler){--sl-content-width:72rem}.assembler{--perf:#ef7a6b;--eff:#86cf74;--qual:#ecc95e;--frame:#714a3c;--wood:#cd774d;--slot:#211c2b;--slot-line:#3d3445;--closed:#b16a43;margin-top:1.5rem;container-type:inline-size}:root[data-theme=light] .assembler{--perf:#b0301f;--eff:#2f7d22;--qual:#8a6400}.assembler *{margin-block-start:0}.assembler h2{font-size:var(--sl-text-lg);margin:0}.assembler h3{font-size:var(--sl-text-base);margin:0 0 .5rem}.assembler button{font:inherit;cursor:pointer}.assembler button:disabled{cursor:not-allowed;opacity:.5}.assembler :is(button,select,input):focus-visible{outline:2px solid var(--sl-color-accent-high);outline-offset:2px}.assembler .primary{background:var(--sl-color-accent);color:var(--sl-color-black);border:0;padding:.45rem .8rem;font-weight:600}.assembler .link{color:var(--sl-color-accent-high);font-size:var(--sl-text-sm);background:0 0;border:0;padding:0;text-decoration:underline}.assembler .danger{color:var(--perf)}.assembler [data-clear-list]{margin-top:.6rem}.assembler .quiet,.assembler .bay-window header button,.assembler .held button,.assembler [data-example],.assembler [data-undo]{background:var(--sl-color-gray-6);color:var(--sl-color-white);border:1px solid var(--sl-color-gray-4);font-size:var(--sl-text-sm);padding:.35rem .6rem}.assembler img{image-rendering:pixelated}.assembler .machines{gap:.5rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.assembler .machines button{background:var(--sl-color-gray-6);color:var(--sl-color-white);border:1px solid var(--sl-color-gray-5);font-size:var(--sl-text-xs);text-align:center;flex-direction:column;flex:1 0 6.5rem;align-items:center;gap:.3rem;padding:.5rem .4rem;line-height:1.2;display:flex}.assembler .machines button[aria-pressed=true]{border-color:var(--sl-color-accent);box-shadow:inset 0 -3px 0 var(--sl-color-accent)}.assembler .machines img{object-fit:contain;width:2.5rem;height:2.5rem}.assembler .bench{grid-template-areas:"bay""inventory""results""optimizer";gap:1rem;margin-top:1rem;display:grid}@container (width>=44rem){.assembler .bench{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-areas:"bay inventory""results optimizer";align-items:start}}.assembler .inventory{grid-area:inventory}.assembler .workbench{flex-direction:column;grid-area:bay;align-items:flex-start;gap:.6rem;display:flex}.assembler .workbench .bay-window{align-self:stretch}.assembler .results{grid-area:results}.assembler .optimizer{grid-area:optimizer}.assembler .bay-window{background:var(--wood);border:4px solid var(--frame);color:#201c23;box-shadow:5px 6px #16151c}.assembler .bay-window header{color:#fff5d8;background:#a94f36;border-bottom:3px solid #85553d;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.6rem .8rem;display:flex}.assembler .bay-window header strong{font-family:var(--sl-font-mono);flex:1}.assembler .bay-window header img{object-fit:contain;width:2.5rem;height:2.5rem}.assembler .kits{align-items:center;gap:.3rem;display:flex}.assembler .kits img{width:1.5rem!important;height:1.5rem!important}.assembler .kits select{font:inherit;font-size:var(--sl-text-sm);color:#352521;background:#efe1b3;border:2px solid #685548;padding:.2rem}.assembler .bay-window header button{color:#352521;background:#efe1b3;border:2px solid #685548}.assembler .bay{grid-template-columns:repeat(var(--columns), 1fr);grid-template-rows:repeat(var(--rows), 1fr);aspect-ratio:7/5;touch-action:none;user-select:none;background:#332632;border:4px solid #664741;width:min(100% - 2rem,26rem);margin:1rem auto;display:grid;position:relative}.assembler .cell{background:var(--slot);box-shadow:inset 0 0 0 1px var(--slot-line);border:0;padding:0;margin:0!important}.assembler .cell.closed{background:var(--closed);cursor:default;box-shadow:inset 0 0 0 1px #8f5234}.assembler .cell.opens{background:repeating-linear-gradient(45deg, var(--closed) 0 6px, #9a5a39 6px 12px)}.assembler .cell:focus-visible{z-index:2;outline-offset:-3px!important;outline:3px solid #fff2af!important}.assembler .bay.show-top:before,.assembler .bay.show-left:after{content:"";pointer-events:none;z-index:1;background:#fff2af;position:absolute;box-shadow:0 0 8px #fff2af}.assembler .bay.show-top:before{height:3px;top:-4px;left:0;right:0}.assembler .bay.show-left:after{width:3px;top:0;bottom:0;left:-4px}.assembler .layer{pointer-events:none;position:absolute;inset:0}.assembler .layer .piece{position:absolute}.assembler .layer .piece img{max-width:none;position:absolute;top:50%;left:50%}.assembler .layer .ghost{opacity:.75}.assembler .layer .ghost.ok{outline-offset:-2px;outline:2px dashed #b6f07a}.assembler .layer .ghost.bad{opacity:.45;outline-offset:-2px;outline:2px dashed #ff6b5b}.assembler .bay.holding{cursor:crosshair}.assembler .held{color:#fff0d7;background:#332632;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 1rem;padding:.4rem;display:flex}.assembler .held[hidden]{display:none}.assembler .held img{object-fit:contain;width:2rem;height:2rem}.assembler .held span{min-width:8rem;font-size:var(--sl-text-sm);flex:1}.assembler .held button{color:#352521;background:#efe1b3;border:2px solid #685548}.assembler .hint{font-size:var(--sl-text-sm);min-height:2.8em;margin:.6rem 1rem 1rem;line-height:1.4}.assembler .results,.assembler .optimizer{border:1px solid var(--sl-color-gray-5);background:var(--sl-color-gray-6);padding:1rem}.assembler .results dl{font-size:var(--sl-text-sm);grid-template-columns:auto 1fr;gap:.35rem .8rem;margin:.8rem 0;display:grid}.assembler .results dt{color:var(--sl-color-gray-2);font-weight:400}.assembler .results dd{margin:0}.assembler .results dd strong{font-family:var(--sl-font-mono);font-size:var(--sl-text-base)}.assembler .results dd small{color:var(--sl-color-gray-2);display:block}.assembler .results dd.good strong{color:var(--eff)}.assembler .results dd.bad strong{color:var(--perf)}.assembler .totals{font-size:var(--sl-text-sm);font-family:var(--sl-font-mono);border-top:1px solid var(--sl-color-gray-5);flex-wrap:wrap;gap:.3rem .8rem;padding-top:.6rem;display:flex}.assembler .totals .performance,.assembler .stats .performance span{color:var(--perf)}.assembler .totals .efficiency,.assembler .stats .efficiency span{color:var(--eff)}.assembler .totals .quality,.assembler .stats .quality span{color:var(--qual)}.assembler .note{font-size:var(--sl-text-sm);margin-top:.6rem}.assembler .note ul{margin:.4rem 0;padding-left:1.2rem}.assembler .note p{color:var(--sl-color-gray-2)}.assembler .optimizer{font-size:var(--sl-text-sm)}.assembler .optimizer h2{margin-bottom:.6rem}.assembler .optimizer fieldset{border:0;flex-direction:column;gap:.25rem;margin:0 0 .6rem;padding:0;display:flex}.assembler .optimizer legend{color:var(--sl-color-gray-2);margin-bottom:.25rem}.assembler .optimizer label{align-items:center;gap:.4rem;display:flex}.assembler .limit input{background:var(--sl-color-black);width:5rem;color:var(--sl-color-white);border:1px solid var(--sl-color-gray-4);font:inherit;padding:.25rem}.assembler .actions{gap:.5rem;margin:.7rem 0 .4rem;display:flex}.assembler .status{min-height:1.4em}.assembler .small{color:var(--sl-color-gray-2);font-size:var(--sl-text-xs)}.assembler .inventory header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.6rem;display:flex}.assembler .empty{border:1px dashed var(--sl-color-gray-4);font-size:var(--sl-text-sm);padding:1rem}.assembler .empty[hidden]{display:none}.assembler .cards{gap:.6rem;max-height:min(32rem,70vh);margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.assembler .card{cursor:grab;user-select:none;background:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-5);gap:.6rem;padding:.6rem;display:flex;margin:0!important}.assembler .card.installed{border-left:4px solid var(--eff)}.assembler .card.installed .where{color:var(--eff);font-weight:600}.assembler .card.picked{border-color:var(--sl-color-accent);box-shadow:0 0 0 1px var(--sl-color-accent)}.assembler .card.unusable{cursor:default}.assembler .card.unusable .card-head strong{opacity:.6}.assembler .grip{background:var(--slot);border:2px solid var(--frame);touch-action:none;cursor:grab;flex:none;place-items:center;width:3.5rem;height:4.5rem;padding:.35rem;display:grid}.assembler .grip img{object-fit:contain;width:100%;height:100%}.assembler .card-body{min-width:0;font-size:var(--sl-text-sm);flex:1;gap:.4rem;display:grid}.assembler .card-head{flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;display:flex}.assembler .card-head strong{font-size:var(--sl-text-base)}.assembler .where{color:var(--sl-color-gray-2);font-size:var(--sl-text-xs)}.assembler .shapes{gap:.3rem;display:flex}.assembler .shapes button{background:var(--slot);border:2px solid #0000;place-items:center;width:2.4rem;height:2.4rem;padding:.15rem;display:grid}.assembler .shapes button[aria-checked=true]{border-color:var(--sl-color-accent)}.assembler .shapes img{max-width:100%;max-height:100%}.assembler .effects{flex-wrap:wrap;gap:.3rem;display:flex}.assembler .chip{border:1px solid var(--sl-color-gray-4);font-size:var(--sl-text-xs);background:var(--sl-color-accent-low);border-color:var(--sl-color-accent);color:var(--sl-color-white);border-radius:999px;padding:.15rem .5rem}.assembler .effects select{border:1px dashed var(--sl-color-gray-4);background:var(--sl-color-black);max-width:100%;color:var(--sl-color-gray-2);font:inherit;font-size:var(--sl-text-xs);padding:.15rem .3rem}.assembler .effect-help{color:var(--sl-color-gray-2);font-size:var(--sl-text-xs);margin:0;padding-left:1rem}.assembler .stats{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:.4rem;display:grid}.assembler .stats>span,.assembler .stats .uses{min-width:0;font-size:var(--sl-text-xs);flex-direction:column;gap:.1rem;display:flex}.assembler .stats>span span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.assembler .stats b{font-family:var(--sl-font-mono);font-size:var(--sl-text-sm)}.assembler .stats .uses{grid-column:1/-1}.assembler .stats select{background:var(--sl-color-black);width:100%;color:var(--sl-color-white);border:1px solid var(--sl-color-gray-4);font-family:var(--sl-font-mono);font-size:var(--sl-text-sm);padding:.2rem .3rem}.assembler .card-actions{gap:.8rem;display:flex}.assembler .picker{background:var(--sl-color-gray-6);width:min(40rem,100vw - 2rem);max-height:calc(100vh - 4rem);color:var(--sl-color-white);border:1px solid var(--sl-color-gray-4);padding:1rem}.assembler .picker::backdrop{background:#0009}.assembler .picker header{justify-content:space-between;align-items:center;margin-bottom:.8rem;display:flex}.assembler .picker header button{color:var(--sl-color-white);background:0 0;border:0;font-size:1.2rem}.assembler .picker section{margin-bottom:1rem}.assembler .choices{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.5rem;display:grid}.assembler .choices button{background:var(--sl-color-black);color:var(--sl-color-white);border:1px solid var(--sl-color-gray-5);text-align:left;font-size:var(--sl-text-xs);align-items:center;gap:.5rem;padding:.4rem;line-height:1.25;display:flex}.assembler .choices button:hover{border-color:var(--sl-color-accent)}.assembler .choices img{object-fit:contain;flex:none;width:2rem;height:2.5rem}.assembler .visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
