/* The Protocol global safety + shared layer. Fail-open: if JS is broken or absent, content must always be visible. */
html:not(.js) .reveal{opacity:1 !important;transform:none !important;visibility:visible !important}
html:not(.js) #preloader{display:none !important}
/* Preloader failsafe: even if every script on the page throws, the overlay can never trap the page beyond ~4s */
html.js #preloader{animation:tp-preloader-failsafe .8s ease 4s forwards}
@keyframes tp-preloader-failsafe{to{opacity:0;visibility:hidden;pointer-events:none}}
/* Repeat pages within a session skip the preloader entirely */
html.tp-seen #preloader{display:none !important}
/* body.loading sets overflow:hidden; neutralise when JS absent or already seen so content is never blocked */
html:not(.js) body.loading{overflow:visible !important}
html.tp-seen body.loading{overflow:visible !important}
/* Global heading widow rule: no orphaned single/double words on a heading's last line */
h1,h2,h3{text-wrap:balance;text-wrap:pretty}
