.fy-login{--fy-bg:#0a0c12;--fy-panel:#131722;--fy-panel-2:#181d2b;--fy-line:#262d3d;--fy-line-soft:#1e2432;--fy-text:#f2f5f9;--fy-text-2:#a8b1c2;--fy-text-3:#667085;--fy-brand:#8b96ff;--fy-brand-2:#38bdf8;--fy-radius:14px;background:var(--fy-bg);width:100%;height:100vh;color:var(--fy-text);grid-template-columns:42% 58%;font-family:PingFang SC,Microsoft YaHei,Segoe UI,system-ui,-apple-system,sans-serif;display:grid;overflow:hidden}.fy-login *{box-sizing:border-box;margin:0;padding:0}.fy-hero{min-height:100%;position:relative;overflow:hidden}.fy-hero-bg{background:url(/assets/login-hero.jpg) 50%/cover no-repeat;position:absolute;inset:0;transform:scale(1.03)}.fy-hero-mask{background:linear-gradient(#07090f8c 0%,#07090f1f 35%,#07090fe0 78%,#07090ff5 100%),linear-gradient(90deg,#07090f47 0%,#07090f00 40%);position:absolute;inset:0}.fy-hero-inner{z-index:2;flex-direction:column;justify-content:space-between;height:100%;padding:40px 44px;display:flex;position:relative}.fy-brand{align-items:center;gap:10px;display:flex}.fy-brand img{object-fit:contain;width:38px;height:22px;display:block}.fy-brand-name{letter-spacing:1px;font-size:20px;font-weight:700}.fy-hero-copy{padding-bottom:8px}.fy-hero-copy h1{letter-spacing:1px;margin-bottom:16px;font-size:34px;font-weight:700;line-height:1.3}.fy-hero-copy p{color:#c2cad8;max-width:340px;font-size:15px;line-height:1.9}.fy-hero-tags{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.fy-hero-tags span{color:#dde4ee;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff0f;border:1px solid #ffffff2e;border-radius:999px;padding:7px 14px;font-size:13px}.fy-side{background:radial-gradient(1200px 700px at 80% -10%,#8b96ff14,#0000 60%),linear-gradient(160deg,#10131d 0%,#0a0c12 60%,#080a0f 100%);justify-content:center;align-items:safe center;padding:32px;display:flex;position:relative;overflow:hidden auto}.fy-panel{width:100%;max-width:440px;margin:auto 0;position:relative}.fy-panel-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.fy-panel-head h2{letter-spacing:.5px;font-size:28px;font-weight:700}.fy-panel-head .sub{color:var(--fy-text-3);margin-top:10px;font-size:14px;line-height:1.6}.fy-close{border:1px solid var(--fy-line);width:34px;height:34px;color:var(--fy-text-2);cursor:pointer;background:0 0;border-radius:10px;flex:none;justify-content:center;align-items:center;transition:all .2s;display:flex}.fy-close:hover{color:#fff;border-color:var(--fy-text-3);background:#1a2030}.fy-tabs{border-bottom:1px solid var(--fy-line-soft);gap:28px;margin:24px 0;display:flex}.fy-tab{color:var(--fy-text-3);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:0;padding:10px 2px;font-family:inherit;font-size:16px;transition:color .2s;position:relative}.fy-tab.active{color:var(--fy-text);font-weight:600}.fy-tab.active:after{content:"";background:linear-gradient(90deg, var(--fy-brand), var(--fy-brand-2));border-radius:2px;height:2px;position:absolute;bottom:-1px;left:0;right:0}.fy-tab:hover:not(.active){color:var(--fy-text-2)}.fy-tab .soon{color:var(--fy-brand);vertical-align:middle;white-space:nowrap;background:#8b96ff29;border-radius:4px;margin-left:5px;padding:1px 5px;font-size:10px}.fy-field{margin-bottom:18px}.fy-field label{color:var(--fy-text-2);margin-bottom:9px;font-size:13px;display:block}.fy-input-row{gap:12px;display:flex}.fy-input-box{background:var(--fy-panel-2);border:1px solid var(--fy-line);border-radius:var(--fy-radius);flex:1;align-items:center;transition:border-color .2s,box-shadow .2s;display:flex;position:relative}.fy-input-box:focus-within{border-color:var(--fy-brand);box-shadow:0 0 0 3px #8b96ff24,0 0 14px #8b96ff1f}.fy-prefix{color:var(--fy-text-2);border-right:1px solid var(--fy-line);cursor:pointer;background:0 0;flex:none;align-items:center;gap:6px;height:52px;padding:0 14px;font-family:inherit;font-size:15px;display:flex}.fy-prefix svg{opacity:.7}.fy-input-box input{width:100%;height:52px;color:var(--fy-text);background:0 0;border:none;outline:none;padding:0 16px;font-family:inherit;font-size:15px}.fy-input-box input::placeholder{color:var(--fy-text-3)}.fy-icon-end{color:var(--fy-text-3);cursor:pointer;background:0 0;border:0;padding:4px;display:flex;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.fy-icon-end:hover{color:var(--fy-brand)}.fy-code-btn{border-radius:var(--fy-radius);background:var(--fy-panel-2);border:1px solid var(--fy-line);width:150px;height:52px;color:var(--fy-brand);cursor:pointer;white-space:nowrap;flex:none;font-family:inherit;font-size:15px;transition:all .2s}.fy-code-btn:hover:not(:disabled){border-color:var(--fy-brand);background:#1c2233}.fy-code-btn:disabled{color:var(--fy-text-3);cursor:not-allowed;border-color:var(--fy-line-soft)}.fy-captcha-box{border-radius:var(--fy-radius);border:1px solid var(--fy-line);cursor:pointer;background:linear-gradient(135deg,#1c2233,#141926);flex:none;justify-content:center;align-items:center;width:120px;height:52px;padding:0;transition:border-color .2s;display:flex;overflow:hidden}.fy-captcha-box:hover{border-color:var(--fy-brand)}.fy-captcha-box img{object-fit:cover;width:100%;height:100%;display:block}.fy-alert{border-radius:12px;align-items:flex-start;gap:9px;margin-bottom:18px;padding:11px 14px;font-size:13px;line-height:1.55;display:flex}.fy-alert.err{color:#ff8f8f;background:#ff63631a;border:1px solid #ff636366}.fy-alert.ok{color:#7dd3fc;background:#38bdf81a;border:1px solid #38bdf866}.fy-alert.warn{color:#e8b45a;background:#e8b45a1a;border:1px solid #e8b45a66}.fy-alert svg{flex-shrink:0;margin-top:1px}.fy-agree{color:var(--fy-text-2);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:9px;margin:20px 0 18px;font-size:13px;line-height:1.6;display:flex}.fy-agree input{width:16px;height:16px;accent-color:var(--fy-brand);cursor:pointer;flex:none;margin-top:3px}.fy-agree a{color:var(--fy-brand);text-decoration:none}.fy-agree a:hover{text-decoration:underline}.fy-submit{border-radius:var(--fy-radius);background:linear-gradient(90deg, var(--fy-brand) 0%, var(--fy-brand-2) 100%);color:#0a0d18;letter-spacing:2px;cursor:pointer;border:none;width:100%;height:54px;font-family:inherit;font-size:17px;font-weight:700;transition:filter .2s,transform .15s,box-shadow .2s;box-shadow:0 10px 26px #8b96ff33}.fy-submit:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.fy-submit:active:not(:disabled){transform:translateY(0)}.fy-submit:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.fy-submit .spin{justify-content:center;align-items:center;gap:8px;display:inline-flex}.fy-divider{color:var(--fy-text-3);align-items:center;gap:14px;margin:26px 0 18px;font-size:13px;display:flex}.fy-divider:before,.fy-divider:after{content:"";background:var(--fy-line-soft);flex:1;height:1px}.fy-oauth{justify-content:center;gap:22px;display:flex}.fy-oauth-btn{background:var(--fy-panel-2);border:1px solid var(--fy-line);width:48px;height:48px;color:var(--fy-text-2);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:all .22s;display:flex}.fy-oauth-btn:hover{color:var(--fy-brand);border-color:#8b96ff80;transform:translateY(-3px);box-shadow:0 0 16px #8b96ff33}.fy-oauth-btn svg{width:22px;height:22px}.fy-foot{text-align:center;color:var(--fy-text-3);margin-top:24px;font-size:14px}.fy-foot button{color:var(--fy-brand);cursor:pointer;background:0 0;border:0;margin-left:6px;padding:0;font-family:inherit;font-size:14px;text-decoration:none}.fy-foot button:hover{text-decoration:underline}.fy-back{color:var(--fy-text-3);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;margin-bottom:14px;padding:0;font-family:inherit;font-size:14px;display:inline-flex}.fy-back:hover{color:var(--fy-brand)}@media (max-width:900px){.fy-login{grid-template-columns:1fr;height:auto;min-height:100vh;overflow:visible}.fy-hero{min-height:240px}.fy-hero-inner{padding:24px}.fy-hero-copy h1{font-size:24px}.fy-hero-copy p{max-width:none;font-size:13px}.fy-side{padding:28px 22px 40px;overflow:visible}.fy-prefix{padding:0 10px}.fy-code-btn{width:128px}.fy-input-box input{font-size:16px}}
