/* Decrypted text: headings rest as "?", hover/focus decrypts them plain.
   Real text lives in the markup (data-text); without JS everything reads
   normally. Reduced motion and coarse pointers get plain text instantly.
   Each glyph owns a cell measured from its own advance, so proportional
   letters keep their natural spacing and decoding never shimmies the line. */
.decrypt { white-space: pre-wrap; }
.decrypt .dec-word { display: inline-block; white-space: nowrap; }
.decrypt > span,
.decrypt .dec-word > span { display: inline-block; text-align: center; }
.decrypt .dec-encrypted { color: var(--faint); }
.decrypt .dec-revealed { color: inherit; }
