.knack{display:flex;flex-direction:column;gap:var(--space-4);align-items:center;width:100%}.knack__target{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);width:100%;text-align:center;background:var(--block-gold);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm);padding:var(--space-4)}.knack__target-label{text-transform:uppercase;letter-spacing:.1em;font-weight:var(--weight-black);font-size:var(--text-sm)}.knack__target-num{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-black);letter-spacing:var(--tracking-tight);line-height:1}.knack__status{margin:0;font-weight:var(--weight-medium);min-height:1.5em}.knack__tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);list-style:none;margin:0;padding:0;width:100%}.knack__tile{display:inline-flex;align-items:center;justify-content:center;min-width:3.5rem;min-height:3.5rem;padding:var(--space-2) var(--space-3);font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-black);color:var(--tile-ink);background:var(--tile-bg);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm);cursor:pointer;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.knack__tile:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-hard)}.knack__tile.is-selected{background:var(--tile-active);transform:translate(2px,2px);box-shadow:none}.knack__ops{display:flex;gap:var(--space-3);justify-content:center}.knack__op{width:3.5rem;height:3.5rem;font-size:var(--text-xl);font-weight:var(--weight-black);background:var(--surface);color:var(--ink);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm);cursor:pointer}.knack__op.is-selected{background:var(--block-teal);transform:translate(2px,2px);box-shadow:none}.knack__op:disabled{opacity:.45;cursor:not-allowed}.knack__feedback{margin:0;min-height:1.5em;font-weight:var(--weight-bold);color:var(--warning);text-align:center}.knack__controls{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:center}.knack__hint{text-align:center;font-size:var(--text-sm);max-width:28rem}.bridge{display:flex;flex-direction:column;gap:var(--space-4);align-items:center;width:100%}.bridge__counter{margin:0;font-family:var(--font-display);font-weight:var(--weight-black);font-size:var(--text-lg);color:var(--primary)}.bridge__ladder{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);width:100%;max-width:22rem}.bridge__rung{display:flex;align-items:center;gap:var(--space-3)}.bridge__tag{flex:none;width:2.5rem;text-align:right;font-size:var(--text-xs);font-weight:var(--weight-bold);color:var(--ink-subtle);text-transform:uppercase;letter-spacing:.06em}.bridge__word{display:flex;gap:var(--space-2);flex:1}.bridge__cell{display:inline-flex;align-items:center;justify-content:center;flex:1;aspect-ratio:1 / 1;max-width:3.25rem;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-black);background:var(--tile-bg);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm);color:var(--ink)}.bridge__cell.is-match{background:var(--block-teal)}.bridge__word--start .bridge__cell,.bridge__word--end .bridge__cell,.bridge__word--end .bridge__cell.is-match{background:var(--block-gold)}.bridge__rung--solved .bridge__cell{background:var(--block-teal)}.bridge__rung--input{gap:var(--space-3)}.bridge__input{flex:1;min-width:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--weight-black);letter-spacing:.5em;text-align:center;text-transform:uppercase;padding:var(--space-2);background:var(--surface);color:var(--ink);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm)}.bridge__add{flex:none}.bridge__feedback{margin:0;min-height:1.5em;font-weight:var(--weight-bold);color:var(--warning);text-align:center}.bridge__controls{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:center}.bridge__hint{text-align:center;font-size:var(--text-sm);max-width:26rem}.tessera{display:flex;flex-direction:column;gap:var(--space-4);align-items:center;width:100%}.tessera__status{margin:0;font-family:var(--font-display);font-weight:var(--weight-black);font-size:var(--text-lg);color:var(--primary)}.tessera__board{display:grid;gap:4px;width:100%;padding:var(--space-3);background:var(--board-bg);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard)}.tessera__board:focus-visible{outline:none;box-shadow:var(--focus-ring),var(--shadow-hard)}.tessera__cell{aspect-ratio:1 / 1;background:var(--surface);border:2px solid var(--board-grid);border-radius:var(--radius-sm);cursor:pointer}.tessera__cell.is-void{background:transparent;border-color:transparent;cursor:default}.tessera__cell.is-filled{border-color:var(--ink)}.tessera__cell.is-ghost{outline:3px solid var(--primary);outline-offset:-3px}.tessera__cell.is-ghost-bad{outline:3px solid var(--warning);outline-offset:-3px}.tessera__cell.is-cursor{box-shadow:inset 0 0 0 3px var(--ink)}.tessera__tray{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;align-items:flex-end;min-height:3rem}.tessera__piece{background:var(--surface);border:var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-hard-sm);padding:var(--space-2);cursor:pointer}.tessera__piece.is-selected{background:var(--primary-soft);transform:translate(2px,2px);box-shadow:none}.tessera__shape{display:grid;gap:2px}.tessera__mini{width:.9rem;height:.9rem;border-radius:2px}.tessera__mini.is-on{border:1px solid var(--ink)}.tessera__feedback{margin:0;min-height:1.5em;font-weight:var(--weight-bold);color:var(--warning);text-align:center}.tessera__controls{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.tessera__timer{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--ink-muted)}.tessera__clock{font-family:var(--font-mono);font-weight:var(--weight-bold);color:var(--ink)}.tessera__hint{text-align:center;font-size:var(--text-sm);max-width:28rem}
