/* A single, quiet brand entrance. CSS also dismisses it if JS is interrupted. */
.terral-preloader{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:#F3F2EF;color:#141310;pointer-events:none;animation:terral-curtain .75s cubic-bezier(.65,0,.25,1) 2.05s both;}
.terral-preloader__logo{display:flex;align-items:baseline;font-family:'Zodiak',Georgia,serif;font-weight:600;font-size:clamp(2.7rem,7.2vw,6rem);line-height:1.3;letter-spacing:-.02em;white-space:nowrap;}
.terral-preloader__mask{overflow:hidden;padding:.12em .025em;}
.terral-preloader__word{display:block;}
.terral-preloader__dot{display:block;transform-origin:50% 78%;animation:terral-dot .45s cubic-bezier(.22,1,.36,1) 1.25s both;}
/* Reveal whole glyphs so the proportional serif never gets sliced mid-letter. */
.terral-preloader__letter{animation:terral-type .18s ease-out both;animation-delay:calc(.24s + var(--letter) * .145s);}
/* Hold the first frame until the font and page are ready to paint. */
.terral-preloader,.terral-preloader *{animation-play-state:paused;}
.terral-preloader.is-playing,.terral-preloader.is-playing *{animation-play-state:running;}
@keyframes terral-type{from{opacity:0}to{opacity:1}}
@keyframes terral-dot{0%{opacity:0;transform:translateY(-.2em) scale(2)}55%{opacity:1}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes terral-curtain{0%{transform:translateY(0);visibility:visible}100%{transform:translateY(-101%);visibility:hidden}}
@media(prefers-reduced-motion:reduce){.terral-preloader{display:none;animation:none}.terral-preloader *{animation:none}}
