*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--base);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:15px/1.7 -apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}.login-page{background-image:radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--overlay0) 12%, transparent) 1px, transparent 0);background-size:22px 22px;flex-direction:column;justify-content:center;align-items:center;gap:22px;min-height:100dvh;padding:24px 24px 20px;animation:.5s both login-page-in;display:flex}.login-brand{text-align:center;flex-direction:column;align-items:center;gap:6px;animation:.55s cubic-bezier(.22,1,.36,1) both login-rise;display:flex}.login-logo{width:48px;height:48px;box-shadow:0 10px 28px color-mix(in srgb, var(--blue) 22%, transparent), 0 0 0 1px color-mix(in srgb, var(--surface0) 50%, transparent);border-radius:12px}.login-brand-title{letter-spacing:-.4px;margin:2px 0 0;font-size:24px;font-weight:700;line-height:1.2}.login-brand-tagline{color:var(--subtext0);margin:0;font-size:13px}.login-card{border:1px solid var(--glass-border);background:color-mix(in srgb, var(--base) 92%, transparent);-webkit-backdrop-filter:blur(20px);width:min(100%,480px);box-shadow:0 0 0 1px color-mix(in srgb, var(--lavender) 6%, transparent) inset, var(--shadow), 0 20px 44px color-mix(in srgb, var(--crust) 10%, transparent);border-radius:20px;padding:28px 32px 24px;animation:.6s cubic-bezier(.22,1,.36,1) 60ms both login-rise}.login-card.is-error-state{padding-bottom:28px}.login-card-title{text-align:center;letter-spacing:-.2px;margin:0;font-size:20px;font-weight:650;line-height:1.3}.login-card-subtitle{color:var(--subtext0);text-align:center;margin:6px 0 0;font-size:14px}.login-qr-section{flex-direction:column;justify-content:center;align-items:center;min-height:308px;margin-top:22px;display:flex}.login-qr-stage{width:308px;height:308px;position:relative}.login-qr-skeleton{z-index:2;background:color-mix(in srgb, var(--mantle) 80%, var(--surface0));border:1px solid var(--glass-border);border-radius:12px;position:absolute;inset:0;overflow:hidden}.login-qr-interactive.is-loading{visibility:hidden;pointer-events:none}.login-qr-loading{margin:14px 0 0;font-size:13px}.login-qr-skeleton-grid{background-image:linear-gradient(color-mix(in srgb, var(--surface0) 35%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--surface0) 35%, transparent) 1px, transparent 1px);opacity:.45;background-size:24px 24px;position:absolute;inset:0}.login-qr-skeleton-shimmer{background:linear-gradient(105deg, transparent 42%, color-mix(in srgb, var(--base) 55%, transparent) 50%, transparent 58%);animation:1.4s ease-in-out infinite qr-shimmer;position:absolute;inset:0}.login-qr-interactive{border-radius:12px;transition:transform .28s cubic-bezier(.22,1,.36,1);position:relative}.login-qr-glow{background:radial-gradient(ellipse at center, color-mix(in srgb, var(--blue) 16%, transparent), transparent 70%);opacity:.55;pointer-events:none;border-radius:16px;animation:3s ease-in-out infinite qr-glow-pulse;position:absolute;inset:-8px}.login-qr-interactive:hover:not(.is-busy),.login-qr-interactive.is-expired:not(.is-busy){transform:translateY(-3px)}.login-qr-interactive.is-fresh .login-qr-glow{animation:.7s ease-out qr-fresh-flash}.login-qr-frame{padding:14px;transition:transform .28s cubic-bezier(.22,1,.36,1),filter .28s;position:relative}.login-qr-interactive:hover:not(.is-busy) .login-qr-frame,.login-qr-interactive.is-expired:not(.is-busy) .login-qr-frame{filter:drop-shadow(0 14px 32px color-mix(in srgb, var(--blue) 22%, transparent));transform:scale(1.015)}.qr-corner{border:3px solid var(--blue);pointer-events:none;width:22px;height:22px;transition:width .28s cubic-bezier(.22,1,.36,1),height .28s cubic-bezier(.22,1,.36,1),border-color .28s;position:absolute}.login-qr-interactive:hover:not(.is-busy) .qr-corner,.login-qr-interactive.is-expired:not(.is-busy) .qr-corner{border-color:var(--lavender);width:28px;height:28px}.qr-corner-tl{border-bottom:none;border-right:none;border-radius:6px 0 0;top:0;left:0}.qr-corner-tr{border-bottom:none;border-left:none;border-radius:0 6px 0 0;top:0;right:0}.qr-corner-bl{border-top:none;border-right:none;border-radius:0 0 0 6px;bottom:0;left:0}.qr-corner-br{border-top:none;border-left:none;border-radius:0 0 6px;bottom:0;right:0}.login-qr{background:#fff;border-radius:8px;width:280px;height:280px;transition:opacity .25s,filter .28s,transform .28s cubic-bezier(.22,1,.36,1);overflow:hidden}.login-qr-interactive:hover:not(.is-busy) .login-qr,.login-qr-interactive.is-expired:not(.is-busy) .login-qr{filter:blur(1.5px)brightness(.92);transform:scale(.985)}.login-qr-interactive.is-busy .login-qr{opacity:.5;filter:blur(2px)}.login-qr-scanline{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--blue) 80%, transparent), transparent);height:2px;box-shadow:0 0 12px color-mix(in srgb, var(--blue) 45%, transparent);pointer-events:none;opacity:.85;border-radius:1px;animation:2.6s ease-in-out infinite qr-scan;position:absolute;top:14px;left:14px;right:14px}.login-qr-interactive:hover .login-qr-scanline,.login-qr-interactive.is-expired .login-qr-scanline,.login-qr-interactive.is-busy .login-qr-scanline{opacity:0;animation:none}.login-qr-overlay{background:color-mix(in srgb, var(--base) 42%, transparent);-webkit-backdrop-filter:blur(8px);color:var(--blue);cursor:pointer;opacity:0;border:0;border-radius:8px;place-items:center;padding:0;transition:opacity .26s;display:grid;position:absolute;inset:14px}.login-qr-overlay:disabled{cursor:default}.login-qr-overlay.is-visible,.login-qr-interactive:hover .login-qr-overlay,.login-qr-interactive:focus-within .login-qr-overlay,.login-qr-interactive.is-expired .login-qr-overlay{opacity:1}.login-qr-overlay .login-qr-refresh-icon{filter:drop-shadow(0 3px 10px color-mix(in srgb, var(--blue) 40%, transparent));transition:transform .32s cubic-bezier(.22,1,.36,1);transform:scale(.86)rotate(-22deg)}.login-qr-interactive:hover .login-qr-refresh-icon,.login-qr-interactive.is-expired .login-qr-refresh-icon,.login-qr-overlay.is-visible .login-qr-refresh-icon{transform:scale(1)rotate(0)}.login-qr-overlay:active:not(:disabled) .login-qr-refresh-icon{transform:scale(.9)rotate(0)}.login-qr-refresh-icon{flex:none;display:block}.login-qr-refresh-icon.spinning{animation:.8s linear infinite qr-refresh-spin}@keyframes qr-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes qr-scan{0%,to{opacity:0;top:14px}8%{opacity:.85}50%{opacity:.85;top:calc(100% - 16px)}58%{opacity:0}}@keyframes qr-glow-pulse{0%,to{opacity:.45;transform:scale(1)}50%{opacity:.75;transform:scale(1.03)}}@keyframes qr-fresh-flash{0%{opacity:.9;transform:scale(1.06)}to{opacity:.55;transform:scale(1)}}@keyframes login-page-in{0%{opacity:0}}@keyframes login-rise{0%{opacity:0;transform:translateY(14px)}}@keyframes login-step-in{0%{opacity:0;transform:translateY(8px)}}@keyframes qr-refresh-spin{to{transform:rotate(360deg)}}.login-steps{grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0 0;padding:0;list-style:none;display:grid;position:relative}.login-steps:before{content:"";background:linear-gradient(90deg, transparent, var(--glass-border), var(--glass-border), transparent);pointer-events:none;height:1px;position:absolute;top:28px;left:18%;right:18%}.login-step{text-align:center;animation:.5s cubic-bezier(.22,1,.36,1) both login-step-in;animation-delay:calc(.12s + var(--step-i,0) * 70ms);border-radius:12px;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;transition:background .2s,transform .2s cubic-bezier(.22,1,.36,1);display:flex;position:relative}.login-step:hover{background:color-mix(in srgb, var(--blue) 6%, transparent);transform:translateY(-2px)}.login-step-index{color:color-mix(in srgb, var(--blue) 55%, var(--overlay0));font-variant-numeric:tabular-nums;font-size:10px;font-weight:700;position:absolute;top:4px;right:8px}.login-step-icon{background:color-mix(in srgb, var(--blue) 10%, var(--mantle));width:44px;height:44px;color:var(--blue);box-shadow:0 0 0 1px color-mix(in srgb, var(--blue) 12%, transparent);border-radius:50%;place-items:center;transition:background .2s,box-shadow .2s,transform .2s;display:grid}.login-step:hover .login-step-icon{background:color-mix(in srgb, var(--blue) 16%, var(--mantle));box-shadow:0 4px 14px color-mix(in srgb, var(--blue) 18%, transparent);transform:scale(1.05)}.login-step-title{font-size:13px;font-weight:600;line-height:1.35}.login-step-hint{color:var(--overlay0);font-size:11.5px;line-height:1.35}.login-card-note{border-top:1px solid var(--glass-border);color:var(--overlay0);text-align:center;margin:18px 0 0;padding-top:14px;font-size:12px;line-height:1.5}.login-result{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:308px;margin-top:24px;animation:.45s cubic-bezier(.22,1,.36,1) both login-rise;display:flex}.login-result-icon{width:72px;height:72px;color:var(--yellow);background:color-mix(in srgb, var(--yellow) 12%, var(--mantle));box-shadow:0 0 0 1px color-mix(in srgb, var(--yellow) 18%, transparent);border-radius:50%;place-items:center;display:grid}.login-result-title{margin:6px 0 0;font-size:18px;font-weight:650;line-height:1.35}.login-result-message{max-width:30em;color:var(--subtext0);margin:0;font-size:14px;line-height:1.6}.login-result-retry{border:1px solid color-mix(in srgb, var(--blue) 35%, transparent);background:color-mix(in srgb, var(--blue) 12%, var(--mantle));color:var(--blue);font:inherit;cursor:pointer;border-radius:10px;margin-top:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:background .2s,border-color .2s,transform .2s}.login-result-retry:hover{background:color-mix(in srgb, var(--blue) 18%, var(--mantle));border-color:color-mix(in srgb, var(--blue) 50%, transparent)}.login-result-retry:active{transform:scale(.98)}.login-result-hint{color:var(--overlay0);margin:4px 0 0;font-size:12px;line-height:1.5}.login-loading{color:var(--subtext0)}.login-footer{color:var(--overlay0);margin-top:auto;font-size:12px}@media (width<=520px){.login-page{gap:22px;padding:24px 16px 20px}.login-brand-title{font-size:24px}.login-card{border-radius:18px;padding:26px 20px 22px}.login-steps{gap:6px}.login-step-icon{width:36px;height:36px}.login-step-title{font-size:12px}.login-step-hint{font-size:10.5px}}@media (prefers-reduced-motion:reduce){.login-page,.login-brand,.login-card,.login-step,.login-result{animation:none}.login-logo{box-shadow:0 0 0 1px color-mix(in srgb, var(--surface0) 50%, transparent)}.login-qr-interactive,.login-qr-frame,.qr-corner,.login-qr,.login-qr-overlay,.login-qr-refresh-icon,.login-step,.login-step-icon{transition:none}.login-qr-interactive:hover:not(.is-busy){transform:none}.login-qr-interactive:hover:not(.is-busy) .login-qr-frame,.login-qr-interactive:hover:not(.is-busy) .login-qr,.login-qr-interactive.is-expired:not(.is-busy) .login-qr{filter:none;transform:none}.login-qr-glow,.login-qr-scanline,.login-qr-skeleton-shimmer,.login-qr-refresh-icon.spinning{animation:none}.login-step:hover,.login-step:hover .login-step-icon{transform:none}}
