/* Fit the pieces. Every class is prefixed la-. */
.la-stage{position:relative;width:100%;aspect-ratio:5/4;border-radius:20px;border:1px solid var(--line);background-color:var(--white);background-image:radial-gradient(var(--line-2) 1px,transparent 1.4px);background-size:22px 22px;overflow:hidden}
.la-svg{display:block;width:100%;height:100%}
.la-ink{fill:var(--ink)}
.la-blue{fill:var(--blue)}
.la-white{fill:#fff}
/* Ghost silhouettes mark each target; construction lines stay 1px at any size. */
.la-ghost{opacity:.06;transition:opacity 240ms ease-out}
.la-ghost.la-hot{opacity:.2}
.la-cons{transition:opacity 400ms ease-out}
.la-cons circle,.la-cons path{fill:none;stroke:var(--line-2);stroke-width:1px;vector-effect:non-scaling-stroke}
.la-cons .la-dash{stroke-dasharray:3 4}
.la-cons .la-ctr circle{fill:var(--line-2);stroke:none}
.la-done .la-cons,.la-done .la-ghost{opacity:0}
.la-piece{cursor:grab;touch-action:none;outline:none;transform-box:view-box;transition:transform 240ms ease-out,filter 240ms ease-out}
.la-piece.la-drag{cursor:grabbing;transition:none}
.la-piece.la-lift{filter:drop-shadow(0 6px 8px rgba(13,15,19,.10))}
.la-piece.la-placed{cursor:default;touch-action:auto;pointer-events:none}
.la-hit{fill:transparent;stroke:none;pointer-events:all}
.la-placed .la-hit{pointer-events:none}
.la-piece:focus-visible .la-hit{fill:var(--blue-100);fill-opacity:.45;stroke:var(--blue-100);stroke-width:4px;vector-effect:non-scaling-stroke}
.la-face{transform-box:view-box;transform-origin:0 0;transition:transform 700ms var(--spring)}
.la-tip{left:0;top:0;position:absolute;z-index:2;width:max-content;max-width:calc(100% - 16px);padding:6px 10px;border-radius:12px;background:var(--white);border:1px solid var(--line-2);font:500 11px/1.35 "DM Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);pointer-events:none;box-shadow:0 8px 24px -8px rgba(13,15,19,.12)}
.la-tip[hidden]{display:none}
.la-row{display:flex;flex-wrap:wrap;gap:10px}
.la-row .btn[disabled]{cursor:default;opacity:.45}
.la-status{margin:0;min-height:1.4em;font:500 12px/1.4 "DM Mono",monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-400)}
@media (prefers-reduced-motion:reduce){
  .la-piece,.la-face,.la-ghost,.la-cons{transition:none}
}
