:root{--brand: #1a6ff5;--brand-deep: #0b57d0;--brand-light: #eaf2ff;--text: #1a1d24;--text-sub: #8a90a0;--line: #eef0f4;--bg: #f4f6fa;--radius-card: 28px;--radius-btn: 10px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}input,button{font-family:inherit;font-size:inherit;color:inherit;outline:none}input[type=password]::-ms-reveal,input[type=password]::-ms-clear{display:none}button{border:none;background:none;cursor:pointer}a{color:var(--brand);text-decoration:none}.screen{min-height:100%;max-width:480px;margin:0 auto;background:var(--bg);position:relative;overflow-x:hidden}.hero{background:linear-gradient(160deg,#2f86ff,#1a6ff5 45%,#0b57d0);padding:calc(var(--safe-top) + 54px) 24px 98px;text-align:center;color:#fff;position:relative}.hero:after{content:"";position:absolute;top:-60px;right:-40px;width:220px;height:220px;background:radial-gradient(circle,rgba(255,255,255,.22),transparent 65%);pointer-events:none}.hero-logo{width:66px;height:66px;margin:0 auto 18px;display:flex;align-items:center;justify-content:center}.hero-title{font-size:28px;font-weight:700;letter-spacing:2px;margin:0 0 10px}.hero-sub{font-size:13.5px;color:#ffffffd1;margin:0;letter-spacing:.5px}.sheet{background:#fff;border-radius:var(--radius-card) var(--radius-card) 0 0;margin-top:-54px;padding:32px 26px calc(var(--safe-bottom) + 24px);position:relative;min-height:calc(100vh - 270px);display:flex;flex-direction:column}.sheet-title{font-size:25px;font-weight:700;margin:0 0 8px;letter-spacing:.5px}.sheet-sub{font-size:13px;color:var(--text-sub);margin:0 0 28px}.field{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:15px 0}.field:focus-within{border-bottom-color:var(--brand)}.field-icon{width:22px;height:22px;flex:0 0 22px;color:#b8bfcc;display:flex;align-items:center;justify-content:center}.field-prefix{font-size:16px;color:var(--text);padding-right:12px;margin-right:2px;border-right:1px solid var(--line);line-height:1}.field input{flex:1;min-width:0;border:none;background:transparent;font-size:16px;padding:0}.field input::placeholder{color:#bfc5d0}.field-action{flex:0 0 auto;font-size:13.5px;color:var(--brand);font-weight:500;padding:4px 0 4px 8px}.field-action:disabled{color:#c2c8d4}.btn-primary{width:100%;height:50px;border-radius:var(--radius-btn);background:linear-gradient(90deg,#3585ff,#1a6ff5);color:#fff;font-size:16.5px;font-weight:600;letter-spacing:1px;box-shadow:0 10px 22px #1a6ff547;transition:transform .12s,box-shadow .12s,opacity .2s}.btn-primary:active{transform:translateY(1px) scale(.995);box-shadow:0 6px 14px #1a6ff53d}.btn-primary:disabled{opacity:.55;box-shadow:none}.btn-block{margin-top:30px}.agreement{margin-top:auto;padding-top:28px;text-align:center;font-size:11.5px;color:#a7adba;line-height:1.9}.agreement a{color:var(--brand)}.switch-line{margin-top:18px;text-align:center;font-size:13.5px;color:var(--text-sub)}.switch-line a{font-weight:600}.forgot{display:block;margin-top:16px;font-size:13px;color:var(--text-sub)}.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);max-width:78vw;padding:11px 18px;background:#141820db;color:#fff;font-size:13.5px;line-height:1.6;border-radius:10px;z-index:99;text-align:center}.navbar{height:calc(var(--safe-top) + 46px);padding-top:var(--safe-top);display:flex;align-items:center;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.navbar-back{width:46px;height:46px;display:flex;align-items:center;justify-content:center;color:#333}.navbar-title{font-size:16px;font-weight:600;flex:1;text-align:center;margin-right:46px}.empty{padding:64px 24px;text-align:center;color:var(--text-sub);font-size:13.5px;line-height:1.9}.fade-enter-active,.fade-leave-active{transition:opacity .16s ease}.fade-enter-from,.fade-leave-to{opacity:0}
