.g-block-puzzle{--bp-gap:3px;--bp-empty:#e9e6dd;--bp-empty-alt:#dedacf;--bp-frame:#cfcabb;--bp-1:#e0a030;--bp-2:#3d8fd6;--bp-3:#d9534f;--bp-4:#3fa66b;--bp-5:#8a5fd1;--bp-6:#e0699f;--bp-7:#2fb5b0;margin:0 auto;max-width:100%;outline:none;user-select:none;-webkit-user-select:none}:root[data-theme=dark] .g-block-puzzle{--bp-empty:#262c29;--bp-empty-alt:#2f3632;--bp-frame:#3a423e}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .g-block-puzzle{--bp-empty:#262c29;--bp-empty-alt:#2f3632;--bp-frame:#3a423e}}.g-block-puzzle:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:8px}.g-block-puzzle .gbp-grid{display:grid;gap:var(--bp-gap);padding:var(--bp-gap);background:var(--bp-frame);border-radius:8px;touch-action:manipulation}.g-block-puzzle .gbp-cell{aspect-ratio:1;border-radius:4px;background:var(--bp-empty);position:relative}.g-block-puzzle .gbp-cell.is-alt{background:var(--bp-empty-alt)}.g-block-puzzle .gbp-cell[data-v="1"],.g-block-puzzle .gbp-mini[data-v="1"]{background:var(--bp-1)}.g-block-puzzle .gbp-cell[data-v="2"],.g-block-puzzle .gbp-mini[data-v="2"]{background:var(--bp-2)}.g-block-puzzle .gbp-cell[data-v="3"],.g-block-puzzle .gbp-mini[data-v="3"]{background:var(--bp-3)}.g-block-puzzle .gbp-cell[data-v="4"],.g-block-puzzle .gbp-mini[data-v="4"]{background:var(--bp-4)}.g-block-puzzle .gbp-cell[data-v="5"],.g-block-puzzle .gbp-mini[data-v="5"]{background:var(--bp-5)}.g-block-puzzle .gbp-cell[data-v="6"],.g-block-puzzle .gbp-mini[data-v="6"]{background:var(--bp-6)}.g-block-puzzle .gbp-cell[data-v="7"],.g-block-puzzle .gbp-mini[data-v="7"]{background:var(--bp-7)}.g-block-puzzle .gbp-cell:not([data-v="0"]),.g-block-puzzle .gbp-mini{box-shadow:inset 0 -3px rgba(0,0,0,.18),inset 0 2px rgba(255,255,255,.25)}.g-block-puzzle .gbp-cell.is-ghost-ok::after,.g-block-puzzle .gbp-cell.is-ghost-bad::after{content:"";position:absolute;inset:0;border-radius:4px}.g-block-puzzle .gbp-cell.is-ghost-ok::after{background:var(--accent);opacity:.55}.g-block-puzzle .gbp-cell.is-ghost-bad::after{background:var(--danger);opacity:.6}.g-block-puzzle .gbp-cell.is-clearing{animation:gbp-clear 240ms ease-in forwards}@keyframes gbp-clear{0%{filter:brightness(1.5);scale:1;opacity:1}60%{filter:brightness(2);scale:1.06;opacity:1}100%{scale:.3;opacity:0}}.g-block-puzzle .gbp-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.g-block-puzzle .gbp-slot{position:relative;display:grid;place-items:center;height:var(--slot-h,90px);background:var(--surface-2);border:2px solid transparent;border-radius:10px;touch-action:none;cursor:grab}.g-block-puzzle .gbp-slot.is-empty{cursor:default;opacity:.35}.g-block-puzzle .gbp-slot.is-selected{border-color:var(--accent);background:var(--accent-soft)}.g-block-puzzle .gbp-slot.is-dragging .gbp-piece{opacity:.3}.g-block-puzzle .gbp-slot .gbp-key{position:absolute;left:6px;top:3px;font:600 .7rem var(--mono);color:var(--muted);pointer-events:none}.g-block-puzzle .gbp-piece{display:grid;gap:2px;pointer-events:none}.g-block-puzzle .gbp-mini{border-radius:3px}.g-block-puzzle .gbp-hole{visibility:hidden}.gbp-drag{position:fixed;z-index:2000;pointer-events:none;display:grid;gap:var(--bp-gap,3px);opacity:.85;filter:drop-shadow(0 6px 8px rgba(0,0,0,.35))}.gbp-drag .gbp-mini{border-radius:4px}.gbp-drag .gbp-hole{visibility:hidden}.gbp-drag{--bp-1:#e0a030;--bp-2:#3d8fd6;--bp-3:#d9534f;--bp-4:#3fa66b;--bp-5:#8a5fd1;--bp-6:#e0699f;--bp-7:#2fb5b0}.gbp-drag .gbp-mini[data-v="1"]{background:var(--bp-1)}.gbp-drag .gbp-mini[data-v="2"]{background:var(--bp-2)}.gbp-drag .gbp-mini[data-v="3"]{background:var(--bp-3)}.gbp-drag .gbp-mini[data-v="4"]{background:var(--bp-4)}.gbp-drag .gbp-mini[data-v="5"]{background:var(--bp-5)}.gbp-drag .gbp-mini[data-v="6"]{background:var(--bp-6)}.gbp-drag .gbp-mini[data-v="7"]{background:var(--bp-7)}.gbp-drag .gbp-mini{box-shadow:inset 0 -3px rgba(0,0,0,.18),inset 0 2px rgba(255,255,255,.25)}.g-block-puzzle .gbp-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){.g-block-puzzle .gbp-cell.is-clearing{animation:none;opacity:.2}}