*{box-sizing:border-box;margin:0;padding:0}html,body,#app{min-width:320px;min-height:100vh}body{overflow:hidden;color:#eef6ff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}button{font:inherit}.loading-page{min-height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(circle at 20% 18%,rgba(44,123,229,.18),transparent 28%),radial-gradient(circle at 78% 26%,rgba(18,184,134,.16),transparent 24%),linear-gradient(145deg,#08111f,#111827 52%,#07101b)}.loading-container{width:min(86vw,360px);padding:34px 28px 30px;text-align:center;border:1px solid rgba(148,163,184,.24);border-radius:20px;background:#0c1828c7;box-shadow:0 22px 60px #0000005c;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.spinner{width:54px;height:54px;display:block;margin:0 auto 22px;border:4px solid rgba(148,163,184,.22);border-top-color:#38bdf8;border-right-color:#34d399;border-radius:50%;animation:spin 1s linear infinite}.loading-title{margin-bottom:8px;font-size:20px;font-weight:700;letter-spacing:0}.loading-text{display:block;margin-bottom:22px;color:#b7c6d8;font-size:14px;line-height:1.7}.progress{position:relative;height:6px;overflow:hidden;border-radius:999px;background:#94a3b82e}.progress:before{position:absolute;top:0;left:-42%;width:42%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#38bdf8,#34d399);content:"";animation:progressMove 1.35s ease-in-out infinite}.loading-hint{margin-top:16px;color:#7dd3fc;font-size:12px}.manual-enter{width:100%;min-height:44px;margin-top:18px;border:0;border-radius:999px;background:linear-gradient(135deg,#38bdf8,#34d399);color:#06111f;cursor:pointer;font-size:15px;font-weight:800;box-shadow:0 12px 28px #38bdf838}.manual-enter:active{transform:scale(.98)}.loading-dots:after{content:"";animation:dots 1.5s steps(4,end) infinite}.error-message{margin-top:18px;border:1px solid rgba(248,113,113,.32);border-radius:12px;padding:14px 16px;background:#7f1d1d47;color:#fecaca;font-size:14px;line-height:1.6}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes progressMove{0%{left:-42%}55%{left:54%}to{left:100%}}@keyframes dots{0%,20%{content:""}40%{content:"."}60%{content:".."}80%,to{content:"..."}}@media (prefers-reduced-motion: reduce){.spinner,.progress:before,.loading-dots:after{animation-duration:3s}}
