Turing-complete
When someone says a programming language, a board game, or even a spreadsheet is 'Turing-complete', they are paying it the highest computational compliment: it is as powerful as computation gets. The word means that the system can, in principle, simulate a Turing machine, and therefore compute anything that any computer could ever compute. Nothing computable lies beyond it.
Precisely, a system is Turing-complete if it can simulate any Turing machine (equivalently, compute every Turing-computable, mu-recursive function). In practice you prove this by showing the system can simulate some model already known to be universal, or by building one inside it. The recurring requirement is the ability to express arbitrary loops or recursion together with conditional branching and unbounded memory, exactly the ingredients that allow a computation to run for an unpredictable number of steps. A system that lacks unbounded iteration (for example, a language with only fixed, bounded loops) is typically NOT Turing-complete, because every program is guaranteed to halt, which is strictly weaker.
Turing-completeness shows up everywhere and sometimes by accident: C, Python, and Lisp are Turing-complete, but so are the lambda calculus, Conway's Game of Life, certain card games, the redstone in Minecraft, even some configuration formats and the x86 page-fault mechanism. Two crucial honest caveats. First, being Turing-complete is not always good news: it means the system inherits all of computation's undecidability, so for a Turing-complete configuration language you cannot in general decide whether a config even halts. Second, real computers are technically only finite-state (they have bounded memory), so 'Turing-complete' is an idealization, true in the limit of unbounded memory; and it says nothing about efficiency, a Turing-complete system can be agonizingly slow.
People keep discovering 'accidental' Turing-completeness. PowerPoint animations, the card game Magic: The Gathering, and CSS plus HTML (with user clicks) have all been shown able to simulate computation. Each result is proved the same way: build the pieces of a known universal model, like a counter machine or Rule 110, inside the system.
To call X Turing-complete you embed a known universal model inside X; many everyday systems qualify, sometimes unintentionally.
Turing-complete means full computational power, but it does not mean efficient, and for languages it is often a curse: it makes basic questions (does this program halt?) undecidable. Bounded-loop systems that always halt are deliberately not Turing-complete.