.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}html:has(.login-embed),html:has(.login-embed) body{height:100%;margin:0;overflow:hidden;background:#fff}.login-page.login-embed{height:100%;min-height:0;padding:0;overflow:hidden;place-items:start center;background:#fff}.login-standalone{min-height:calc(100vh - var(--header-h));margin-top:var(--header-h);padding:48px 24px 72px}.login-standalone .login-card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 44px rgba(11,18,32,.08)}.login-card{width:min(400px,100%);padding:28px 24px 22px}.login-card h1{margin:0 0 8px;font-family:var(--font-display);font-size:1.6rem;letter-spacing:.06em}.login-card .hint{margin:0 0 18px;color:var(--muted);font-size:14px}.login-card label{display:block;margin:12px 0 6px;font-size:13px;color:var(--ink-soft)}.login-card input{width:100%;height:42px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);font:inherit}.login-code-row{display:flex;gap:8px}.login-code-row input{flex:1 1}.login-code-row button,.login-submit{border:0;border-radius:8px;font:inherit;font-weight:600;cursor:pointer}.login-code-row button{flex:0 0 auto;padding:0 12px;background:var(--paper-deep);color:var(--ink)}.login-code-row button:disabled,.login-submit:disabled{cursor:default;opacity:.6}.login-submit{width:100%;height:44px;margin-top:18px;color:#fff;background:var(--accent)}.login-error{min-height:1.4em;margin:10px 0 0;color:#b42318;font-size:13px}.login-tabs{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin:0 0 12px}.login-tabs button{height:36px;border:0;border-radius:8px;background:var(--paper-deep);color:var(--ink-soft);font:inherit;cursor:pointer}.login-tabs button.is-on{color:#fff;background:var(--accent)}.login-method{min-height:300px}.wx-login-wrap .hint{margin:0 0 8px;text-align:center}.wx-login-box{width:240px;height:220px;margin:0 auto;overflow:hidden}.wx-login-box iframe{width:300px;height:460px;border:0;transform:scale(.8);transform-origin:top left}