.constructor{--c-bg:#fff;--c-bg-alt:#f5f5f5;--c-surface:#fff;--c-ink:#151515;--c-ink-soft:#6e6e6e;--c-line:#e6e6e6;--c-accent:#151515;--c-accent-ink:#333;--font-display:var(--font-inter),var(--font-sanslux),system-ui,sans-serif;--text-xs:0.75rem;--text-sm:0.8125rem;--text-lg:1.0625rem;--track-wide:0.2em;--track-label:0.12em;--w-med:500;--sp-2:0.5rem;--sp-3:0.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-8:2rem;--sp-16:4rem;--r:2px;--r-lg:3px;--r-pill:999px;--dur-fast:0.18s;--dur:0.32s;--ease:cubic-bezier(0.4,0,0.2,1);display:grid;gap:var(--sp-8);align-items:start;color:var(--c-ink);font-family:var(--font-inter),system-ui,sans-serif}.builder__preview{position:relative;aspect-ratio:1/1;background:var(--c-bg-alt);border:none;border-radius:var(--r-lg);overflow:hidden;box-shadow:none}.builder__stage{position:absolute;inset:0;transform:scale(1);transition:opacity .26s ease,transform .26s ease;filter:drop-shadow(0 16px 22px rgba(0,0,0,.08))}.builder__stage.is-fading{opacity:0;transform:scale(.97)}.builder__base{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.builder__base,.builder__layer{position:absolute;inset:0}.builder__hint{margin-top:var(--sp-3)}.builder__hint,.builder__note{font-size:var(--text-xs);color:var(--c-ink-soft)}.builder__note{line-height:1.5}.builder-slot{position:absolute;transform:translate(-50%,-50%);aspect-ratio:1;border-radius:var(--r-pill);display:grid;place-items:center}.builder-slot--hang{transform:translate(-50%)}.builder-slot--empty{border:1px dashed transparent;background:transparent;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.builder__preview:hover .builder-slot--empty,.is-dragging .builder-slot--empty{border-color:var(--c-line);background:hsla(0,0%,8%,.05)}.builder-slot--over{border-color:var(--c-ink);background:hsla(0,0%,8%,.08);box-shadow:0 0 0 1px var(--c-ink)}.builder-slot--filled{cursor:pointer}.builder-slot img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;pointer-events:none;transform-origin:center top;filter:drop-shadow(0 3px 4px rgba(0,0,0,.14));transition:filter .3s cubic-bezier(.4,0,.2,1)}.builder-slot--filled:hover img{filter:brightness(1.06) drop-shadow(0 3px 4px rgba(0,0,0,.14))}.builder-slot--filled img.is-drop{animation:builder-charm-in .9s cubic-bezier(.22,.61,.36,1) both}.builder-slot--filled img.is-leaving{animation:builder-charm-out .2s ease forwards}.builder-slot--filled:after{content:"×";position:absolute;top:-8px;right:-8px;width:24px;height:24px;border-radius:var(--r-pill);background:var(--c-ink);color:#fff;font-size:15px;line-height:24px;text-align:center;opacity:0;transition:opacity var(--dur-fast) var(--ease);z-index:3}.builder-slot--filled:focus-visible:after,.builder-slot--filled:hover:after{opacity:1}@media (hover:none){.builder-slot--filled:after{opacity:.9}}.builder__panel{display:grid;gap:var(--sp-5);align-content:start}.builder__group{display:grid;gap:var(--sp-3)}.builder__label{gap:.55rem;font-size:var(--text-xs);letter-spacing:var(--track-wide);text-transform:uppercase;color:var(--c-ink-soft)}.builder__label,.builder__step{display:inline-flex;align-items:center}.builder__step{justify-content:center;width:18px;height:18px;border-radius:var(--r-pill);border:1px solid var(--c-ink);font-size:.625rem;letter-spacing:0;text-transform:none;color:var(--c-ink)}.builder__opts{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.builder__chip{padding:.55em 1.1em;font-size:var(--text-sm);border:1px solid var(--c-line);border-radius:var(--r-pill);background:var(--c-surface);color:var(--c-ink);cursor:pointer;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.builder__chip:hover:not([aria-pressed=true]){border-color:var(--c-ink)}.builder__chip[aria-pressed=true]{background:var(--c-ink);color:#fff;border-color:var(--c-ink)}.builder__bases{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:var(--sp-3)}.builder__base-card{display:grid;gap:2px;justify-items:center;padding:var(--sp-2);text-align:center;background:var(--c-surface);color:var(--c-ink);border:1px solid var(--c-line);border-radius:var(--r);cursor:pointer;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.builder__base-card:hover:not([aria-pressed=true]){border-color:var(--c-ink);transform:translateY(-3px) scale(1.03);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}.builder__base-card[aria-pressed=true]{border-color:var(--c-ink);box-shadow:inset 0 0 0 1px var(--c-ink)}.builder__base-card img{width:100%;aspect-ratio:1;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.1))}.builder__base-card[data-noimg="1"] img{display:none}.builder__base-name{font-size:var(--text-xs);line-height:1.25}.builder__base-price{font-size:var(--text-xs);color:var(--c-ink-soft)}.builder__filter[hidden],.builder__group[hidden]{display:none}.builder__filter{display:flex;gap:var(--sp-4);border-bottom:1px solid var(--c-line)}.builder__tab{padding:var(--sp-2) 0;font-size:var(--text-sm);color:var(--c-ink-soft);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.builder__tab:hover:not([aria-pressed=true]){color:var(--c-ink)}.builder__tab[aria-pressed=true]{color:var(--c-ink);border-color:var(--c-ink)}.builder__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:var(--sp-3)}.builder-comp{display:grid;gap:4px;justify-items:center;cursor:grab;text-align:center;padding:var(--sp-2);border-radius:var(--r);border:1px solid transparent;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.builder-comp:hover{border-color:var(--c-line);transform:translateY(-3px) scale(1.06);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}.builder-comp:active{cursor:grabbing}.builder-comp img{width:56px;height:56px;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.1))}.builder-comp__name{color:var(--c-ink-soft)}.builder-comp__name,.builder-comp__price{font-size:var(--text-xs)}.builder__bar{display:flex;flex-wrap:wrap;gap:var(--sp-4);justify-content:space-between;align-items:center;margin-top:var(--sp-2);padding:var(--sp-5);background:var(--c-bg-alt);border-radius:var(--r-lg)}.builder__total{font-size:var(--text-lg)}.builder__total strong{font-family:var(--font-display);font-weight:600}.builder__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.builder__summary{font-size:var(--text-sm);color:var(--c-ink-soft);min-height:1.2em}@media (min-width:900px){.constructor{grid-template-columns:1.4fr 1fr;gap:var(--sp-16)}}.builder__swatches{gap:var(--sp-3)}.builder__swatch{position:relative;width:28px;height:28px;border-radius:var(--r-pill);padding:0;border:1px solid var(--c-line);cursor:pointer;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.builder__swatch:before{content:"";position:absolute;inset:-9px}.builder__swatch:hover{transform:translateY(-2px) scale(1.08)}.builder__swatch[aria-pressed=true]{box-shadow:0 0 0 2px var(--c-surface),0 0 0 3px var(--c-ink)}.builder__swatch--gold{background:linear-gradient(135deg,#f3e2b8,#c19a55 55%,#9c7a38)}.builder__swatch--silver{background:linear-gradient(135deg,#f6f7f8,#b7bcc2 55%,#868c93)}.builder-connector-wrap{filter:drop-shadow(0 .5px 1.5px rgba(0,0,0,.32))}.builder-connector{display:block;width:100%;height:auto}.builder__list{display:grid;gap:0;margin-top:var(--sp-2);padding:0;list-style:none}.builder__list-empty{font-size:var(--text-sm);color:var(--c-ink-soft);padding:var(--sp-2) 0}.builder__list-item{display:grid;grid-template-columns:28px 1fr auto auto;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--c-line)}.builder__list-item img{width:28px;height:28px;-o-object-fit:contain;object-fit:contain}.builder__list-name,.builder__list-price{font-size:var(--text-sm)}.builder__list-price,.builder__list-rm{color:var(--c-ink-soft)}.builder__list-rm{width:26px;height:26px;border-radius:var(--r-pill);border:1px solid var(--c-line);background:transparent;font-size:16px;line-height:1;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.builder__list-rm:hover{background:var(--c-ink);color:#fff;border-color:var(--c-ink)}.constructor .btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:.85em 1.7em;font-size:.8125rem;font-weight:var(--w-med);letter-spacing:var(--track-label);border-radius:var(--r-pill);cursor:pointer;border:1px solid transparent;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform var(--dur-fast) var(--ease),border-color var(--dur) var(--ease)}.constructor .btn--solid{background:var(--c-ink);color:#fff}.constructor .btn--solid:hover{background:var(--c-accent-ink)}.constructor .btn--outline{border-color:var(--c-line);background:transparent;color:var(--c-ink)}.constructor .btn--outline:hover{border-color:var(--c-ink)}.constructor .btn--light{background:var(--c-surface);color:var(--c-ink);border-color:var(--c-line)}.constructor .btn--light:hover{border-color:var(--c-ink)}.constructor .btn:active{transform:translateY(1px)}.constructor .btn.is-added{animation:builder-btn-pulse .48s var(--ease)}@keyframes builder-charm-in{0%{opacity:0;transform:translateY(-55%) scale(.7) rotate(-7deg)}42%{opacity:1;transform:translateY(6%) scale(1.04) rotate(4deg)}58%{transform:translateY(-2%) scale(.99) rotate(-2.6deg)}70%{transform:translateY(.6%) scale(1.005) rotate(1.6deg)}81%{transform:translateY(-.3%) scale(1) rotate(-.9deg)}90%{transform:translateY(.15%) scale(1) rotate(.5deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0deg)}}@keyframes builder-btn-pulse{0%{transform:scale(1)}35%{transform:scale(.94)}65%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes builder-charm-out{to{opacity:0;transform:scale(.8)}}@media (prefers-reduced-motion:reduce){.constructor *,.constructor :after,.constructor :before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}