/* Shared page loading identity. Invisible unless the early boot script runs. */
.tw-loader {
    --load-bg:#0b101b; --load-ink:#eff3fb; --load-muted:#8290a8;
    --load-line:rgba(151,171,206,.14); --load-accent:#6798ff;
    --load-seal:#101a2b; --load-glow:rgba(65,112,223,.09);
    display:none; position:fixed; inset:0; z-index:1000000;
    place-items:center; background:var(--load-bg); color:var(--load-ink);
    opacity:1; transition:opacity .3s ease,visibility .3s ease;
    isolation:isolate; overflow:hidden; pointer-events:none;
}
html[data-theme="light"] .tw-loader {
    --load-bg:#f7f9fc; --load-ink:#182842; --load-muted:#64748b;
    --load-line:rgba(40,70,118,.12); --load-accent:#315fe2;
    --load-seal:#fff; --load-glow:rgba(56,105,222,.055);
}
.tw-loader::before {
    content:""; position:absolute; inset:0; z-index:-1;
    background:radial-gradient(ellipse at 50% 46%,var(--load-glow),transparent 55%);
}
html.tw-loading .tw-loader {display:grid; pointer-events:auto}
html.tw-loading {overflow:hidden}
.tw-loader.is-leaving {display:grid; opacity:0; visibility:hidden; pointer-events:none!important}

/* ---- the word: T first, then "wstake" written in, letter by letter ----
   Each letter opens from zero width, so the word grows from the centre and the T glides
   left as it is written; nothing jumps. */
.tw-loader__word {
    display:flex; align-items:baseline; padding:.08em .1em .14em; transform:translateY(-3vh);
    font-family:'Plus Jakarta Sans',Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    font-size:clamp(40px,11vw,58px); font-weight:800; line-height:1.05; letter-spacing:-.045em;
    -webkit-font-smoothing:antialiased;
}
.tw-loader__word .t {
    display:inline-block; padding-right:.02em;
    background:linear-gradient(140deg,var(--load-accent) 10%,color-mix(in srgb,var(--load-accent) 45%,var(--load-ink)) 95%);
    -webkit-background-clip:text; background-clip:text; color:transparent;
    filter:drop-shadow(0 6px 22px color-mix(in srgb,var(--load-accent) 40%,transparent));
    animation:twl-t .62s cubic-bezier(.2,.8,.2,1) both;
}
.tw-loader__word .c {
    display:inline-block; overflow:hidden; max-width:0; opacity:0;
    filter:blur(6px); transform:translateY(.12em);
    animation:twl-c .5s cubic-bezier(.22,.61,.36,1) forwards;
    animation-delay:calc(.48s + var(--i) * .085s);
}
@keyframes twl-t {
    0%   {opacity:0; transform:scale(1.9); filter:blur(12px) drop-shadow(0 0 0 transparent)}
    55%  {opacity:1}
    100% {opacity:1; transform:none}
}
@keyframes twl-c {to {max-width:.9em; opacity:1; filter:none; transform:none}}

.tw-page-progress {display:none; position:fixed; inset:0 0 auto; height:2px; overflow:hidden; z-index:1000001; pointer-events:none; background:rgba(70,117,225,.1)}
.tw-page-progress>span {display:block; width:35%; height:100%; background:#4c83f5; animation:tw-loader-track 1.25s ease-in-out infinite}
html.tw-navigating .tw-page-progress {display:block}
@keyframes tw-loader-track {0% {transform:translateX(-120%)} 100% {transform:translateX(350%)}}
@media(prefers-reduced-motion:reduce) {
    .tw-loader,.tw-page-progress>span {animation:none;transition:none}
    .tw-loader__word .t,.tw-loader__word .c {animation:none; opacity:1; max-width:none; filter:none; transform:none}
    .tw-page-progress>span {transform:none;width:55%}
}
