.app-preloader{--app-preloader-color:var(--ink,#f0eee8);--c:no-repeat radial-gradient(farthest-side, var(--app-preloader-color) 93%, #0000);background:var(--c) 0 0, var(--c) 50% 0;clip-path:inset(-200% -100% 0 0);background-size:8px 8px;width:40px;height:20px;animation:1.5s linear infinite app-preloader-dots;position:relative}.app-preloader:before{content:"";background:var(--app-preloader-color);width:8px;height:12px;animation:1.5s linear infinite app-preloader-bar,.5s cubic-bezier(0,200,.8,200) infinite app-preloader-bar-top;position:absolute;top:0;left:-16px}.app-preloader:after{content:"";background:var(--app-preloader-color);border-radius:50%;width:8px;height:8px;animation:1.5s linear infinite app-preloader-ball;position:absolute;inset:0 0 auto auto}.app-preloader--indigo{--app-preloader-color:var(--indigo,#6366f1)}.app-preloader--sm{transform-origin:50%;transform:scale(.85)}.app-preloader--lg{transform-origin:50%;transform:scale(1.35)}.app-preloader-overlay{z-index:9999;background:var(--canvas,#080810);flex-direction:column;justify-content:center;align-items:center;gap:1.25rem;transition:opacity .4s,visibility .4s;display:flex;position:fixed;inset:0}.app-preloader-overlay--exit{opacity:0;visibility:hidden;pointer-events:none}.app-preloader-label{letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb, var(--ink,#f0eee8) 55%, transparent);font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:500}.app-preloader-hint{letter-spacing:.02em;text-align:center;max-width:28rem;color:color-mix(in srgb, var(--ink,#f0eee8) 42%, transparent);word-break:break-all;padding:0 1.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;line-height:1.55}.app-preloader-retry{border:1px solid color-mix(in srgb, var(--ink,#f0eee8) 22%, transparent);color:color-mix(in srgb, var(--ink,#f0eee8) 78%, transparent);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:999px;margin-top:.25rem;padding:.45rem 1rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:500}.app-preloader-retry:hover{border-color:color-mix(in srgb, var(--ink,#f0eee8) 45%, transparent);color:var(--ink,#f0eee8)}.app-boot-hidden{visibility:hidden;pointer-events:none;position:fixed;inset:0;overflow:hidden}.app-boot-visible{visibility:visible;pointer-events:auto;position:static;overflow:visible}.backend-connecting{z-index:9999;background:var(--canvas,#080810);flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:1.5rem;display:flex;position:fixed;inset:0}.backend-connecting-title{letter-spacing:-.02em;text-align:center;max-width:28rem;color:var(--ink,#f0eee8);margin:.5rem 0 0;font-family:Space Grotesk,IBM Plex Sans,sans-serif;font-size:1.35rem;font-weight:600}.backend-connecting-body{text-align:center;max-width:26rem;color:color-mix(in srgb, var(--ink,#f0eee8) 62%, transparent);margin:0;font-family:IBM Plex Sans,sans-serif;font-size:.95rem;line-height:1.55}.backend-connecting-meta{letter-spacing:.1em;text-transform:uppercase;color:color-mix(in srgb, var(--ink,#f0eee8) 40%, transparent);margin:0;font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px}.backend-connecting-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem 1.25rem;margin-top:.5rem;display:flex}.backend-connecting-home{letter-spacing:.12em;text-transform:uppercase;color:color-mix(in srgb, var(--ink,#f0eee8) 70%, transparent);font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:500;text-decoration:none}.backend-connecting-home:hover{color:var(--ink,#f0eee8)}@keyframes app-preloader-dots{0%,30%{background-position:0 0,50% 0}33%{background-position:0 100%,50% 0}41%,63%{background-position:0 0,50% 0}66%{background-position:0 0,50% 100%}74%,to{background-position:0 0,50% 0}}@keyframes app-preloader-bar{90%{transform:translateY(0)}95%{transform:translateY(15px)}to{left:calc(100% - 8px);transform:translateY(15px)}}@keyframes app-preloader-bar-top{to{top:-.1px}}@keyframes app-preloader-ball{0%,80%,to{transform:translate(0)}90%{transform:translate(26px)}}
