.tf-loader-overlay{z-index:9999;justify-content:center;align-items:center;gap:var(--space-5);background:var(--loader-overlay-bg);-webkit-backdrop-filter:blur(var(--loader-blur));animation:tf-loader-fadein var(--transition-fast);flex-direction:column;display:flex;position:fixed;inset:0}.tf-loader-inline{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-8);flex-direction:column;display:flex}@keyframes tf-loader-fadein{0%{opacity:0}to{opacity:1}}.tf-loader-label{font-family:var(--font-family);font-size:var(--font-sm);font-weight:var(--font-semibold);color:var(--color-primary);letter-spacing:.025em;animation:1.8s ease-in-out infinite tf-label-pulse}@keyframes tf-label-pulse{0%,to{opacity:.55}50%{opacity:1}}.tf-orbital{flex-shrink:0;position:relative}.tf-orbital.sm{width:48px;height:48px}.tf-orbital.md{width:80px;height:80px}.tf-orbital.lg{width:120px;height:120px}.tf-orbital-ring{border:3px solid #0000;border-radius:50%;position:absolute}.tf-orbital.sm .tf-orbital-ring{border-width:2px}.tf-orbital.lg .tf-orbital-ring{border-width:4px}.tf-orbital-ring-1{border-top-color:var(--color-primary);border-right-color:var(--loader-ring-primary-fade);filter:drop-shadow(0 0 4px var(--loader-glow-primary));animation:1.1s linear infinite tf-orbit;inset:0}.tf-orbital-ring-2{border-top-color:var(--sky);border-left-color:var(--loader-ring-sky-fade);filter:drop-shadow(0 0 3px var(--loader-glow-soft));animation:1.7s linear infinite reverse tf-orbit;inset:11px}.tf-orbital-ring-3{border-top-color:var(--color-primary-light);border-right-color:var(--loader-ring-accent-fade);filter:drop-shadow(0 0 3px var(--loader-glow-soft));animation:2.3s linear infinite tf-orbit;inset:22px}.tf-orbital.sm .tf-orbital-ring-2{inset:7px}.tf-orbital.sm .tf-orbital-ring-3{inset:14px}.tf-orbital.lg .tf-orbital-ring-2{inset:17px}.tf-orbital.lg .tf-orbital-ring-3{inset:34px}.tf-orbital-core{background:var(--gradient-modal-header);box-shadow:0 0 12px var(--loader-glow-primary),0 0 24px var(--loader-glow-soft);border-radius:50%;animation:1.6s ease-in-out infinite tf-core-pulse;position:absolute;inset:33px}.tf-orbital.sm .tf-orbital-core{inset:20px}.tf-orbital.lg .tf-orbital-core{inset:50px}.tf-orbital.sm .tf-orbital-ring-1:after{width:5px;height:5px;top:-3px}.tf-orbital.lg .tf-orbital-ring-1:after{width:10px;height:10px;top:-5px}@keyframes tf-orbit{to{transform:rotate(360deg)}}@keyframes tf-core-pulse{0%,to{opacity:.75;transform:scale(.82)}50%{opacity:1;transform:scale(1.12)}}
