.tb-brand-mark{display:block;width:38px;height:38px;overflow:hidden;color:inherit}
.tb-mark-top{--mark-x:-64px;--mark-y:0px;--mark-delay:0ms}
.tb-mark-left{--mark-x:0px;--mark-y:-48px;--mark-delay:70ms}
.tb-mark-right{--mark-x:0px;--mark-y:48px;--mark-delay:140ms}
@keyframes tb-mark-enter{
 from{opacity:0;transform:translate(var(--mark-x),var(--mark-y))}
 to{opacity:1;transform:translate(0,0)}
}
@media(hover:hover) and (pointer:fine){
 .tb-logo:hover .tb-mark-part{animation:tb-mark-enter 280ms cubic-bezier(.22,1,.36,1) var(--mark-delay) both}
}
/* A short assembly followed by a quiet hold, while the page is actually pending. */
@keyframes tb-mark-load{
 0%,8%{opacity:0;transform:translate(var(--mark-x),var(--mark-y))}
 30%,78%{opacity:1;transform:translate(0,0)}
 92%,100%{opacity:0;transform:translate(0,0)}
}
.tb-page-loader{position:fixed;inset:0;z-index:80;display:grid;place-items:center;pointer-events:none;color:#141414}
.tb-page-loader[hidden],.tb-loading-backdrop[hidden]{display:none}
.tb-page-loader .tb-brand-mark{width:96px;height:96px;filter:drop-shadow(0 2px 16px var(--tb-loader-bg))}
:is(.tb-page-loader,.tb-inline-loader) .tb-mark-part{animation:tb-mark-load 1600ms cubic-bezier(.22,1,.36,1) var(--mark-delay) both infinite}
.tb-page-loader{--tb-loader-bg:#fff}
:root[data-theme=dark] .tb-page-loader{color:#ededed;--tb-loader-bg:#0b0b0b}
.tb-loading-backdrop{position:fixed;inset:var(--tb-nav-h,80px) 0 0;z-index:79;overflow:hidden;padding:0;box-sizing:border-box;background:var(--tb-loader-bg,#fff);pointer-events:none}
:root[data-theme=dark] .tb-loading-backdrop{--tb-loader-bg:#0b0b0b}
@media(prefers-reduced-motion:reduce){
 .tb-logo .tb-mark-part,:is(.tb-page-loader,.tb-inline-loader) .tb-mark-part{animation:none;transform:none;opacity:1}
}

/* The existing shell waits for the nav's catalog. Keep its loading UI visible meanwhile. */
body.no-sidebar:not(:has(.tb-nav)) > :is(main#content:has(> .list-loading),.tb-page-loader,.tb-loading-backdrop){visibility:visible;animation:none}

.tb-inline-loader{display:inline-grid;justify-items:center;align-content:center;gap:12px;color:inherit;vertical-align:middle;white-space:normal}
.tb-inline-loader .tb-brand-mark{width:64px;height:64px}
.tb-loader-label{font:500 12px/1.5 system-ui,sans-serif;text-align:center}
.cs-loader .tb-brand-mark{width:96px;height:96px}
.cs-isolated-status:has(.tb-inline-loader){inset:0;display:grid;place-items:center}
.cs-isolated-status[hidden]{display:none}
.cs-preview-status:has(.tb-inline-loader){background:transparent;border-radius:0}
.cs-card-loading .tb-brand-mark{width:48px;height:48px}
/* The shelf runs behind the nav; keep its pending state legible in both themes. */
body.articles-mode:has(.tb-loading-backdrop:not([hidden])){--tb-art-fg:#141414!important}
:root[data-theme=dark] body.articles-mode:has(.tb-loading-backdrop:not([hidden])){--tb-art-fg:#ededed!important}
