4b04bd017d7a36d460447d8552ecaf9c8a33db4a
max
  Tue Aug 4 02:51:56 2026 -0700
hgLogin: gate email-link sign-in and change-email behind login.emailLink (default off), refs #37929

Also: GitHub/OIDC token-format and robustness fixes, signed pending-identity to close
an account-takeover hole in the OAuth account chooser, account chooser for the email-link
flow, idx-based chooser to avoid a utf8/latin1 collation error on non-ASCII usernames, and
login/signup page UI polish (consistent buttons, fonts, cache-busted stylesheet, forgot
links, wording). refs #37984

diff --git src/hg/htdocs/style/userAccounts.css src/hg/htdocs/style/userAccounts.css
index 605cd48009e..a86f9db3747 100644
--- src/hg/htdocs/style/userAccounts.css
+++ src/hg/htdocs/style/userAccounts.css
@@ -1,46 +1,87 @@
 /* Styles for the login, signup, etc pages */
 
 body.accountScreen {background-color: #fffee8;}
 
+/* Use the same sans-serif font as the rest of the site (the page would otherwise fall back
+ * to the browser default, Times New Roman). */
+body {font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;}
+
 .formBox a {text-decoration: none}
 
 .formBox a:hover {text-decoration: underline;}
 
 .centeredContainer {margin: 0 auto;}
 
 .formBox {
     width: 400px;
     border: 2px solid #eed5b7;
     margin-top: 2.5em;
     padding: 0 30px;
     -webkit-border-radius: 4px;
     -moz-border-radius: 4px;
     border-radius: 4px;
     background-color: #fff9d2;
 }
 
+/* The signup and login pages have more content (form + social buttons), so give them a
+ * little more room than the default 400px formBox. */
+#signUpBox, #loginBox {width: 480px;}
+
 .formBox input {font-size: 1.04em;}
 
 .formBox label {display: block; margin-top: 10px;}
 
 .formBox label.radioLabel {display: inline; margin: 0;}
 
 .formControls {
 	margin: 1em 0;
 }
 
+/* The form submit buttons ("Login", "Sign Up", ...) and the "Cancel" link share one
+ * consistent button style, so Cancel looks like the other buttons rather than a plain link. */
+input.largeButton,
+a.cancelButton {
+    display: inline-block;
+    padding: 4px 8px;
+    font-family: inherit;
+    font-size: 14px;
+    font-weight: 700;
+    line-height: 1.2;
+    border: 1px solid #999;
+    border-radius: 3px;
+    background: #f0f0f0;
+    color: #222 !important;
+    text-decoration: none !important;
+    cursor: pointer;
+    vertical-align: middle;
+}
+
+input.largeButton:hover,
+a.cancelButton:hover {
+    background: #e6e6e6;
+    border-color: #666;
+}
+
+/* Small "Forgot username / password" links under the login form fields. */
+a.forgotLink {
+    display: block;
+    margin-top: 3px;
+    font-size: 0.8em;
+    text-align: left;
+}
+
 #helpBox {
     margin-top: 20px;
     padding: 20px 0 10px 0; 
     border-top: 1px solid #eed5b7;
 }
 
 label small {
     font-style: italic;
     font-size: 0.9em;
 }
 
 .topBarContainer { /* only needed for login screens */
     padding: 6px 0;    
 }