Brand exploration · 14 October 2026

Components, round 4: account pages

The parts the sign-in and account pages need, built from tokens and the decided form, button and link rules. Six parts had real alternatives: each shows A, B and C, with exact CSS. All six are decided, and components/ builds the decided version, which recipe R7 uses. Simple additions are at the bottom. Recipe: R7 Account pages.

Round 4 choices
ComponentDecidedStatus
1. Auth cardA: bordered card on the white band, H1 at h2 size, no ruleDecided
2. Password toggleB: eye icon inside the field, on every password fieldDecided
3. Form divider and support noteA: hairline, then the note in the card, the lead-in on its own lineDecided
4. Secondary action lineA: centred quiet line under the cardDecided
5. Confirmation panelA: icon disc beside the heading, text below, left-alignedDecided
6. Signed-in noticeA: info callout under the headingDecided
Settled additionsFull-width button, form link, form divider, error summary (existing form alert)Built
New component 1 of 6

Auth card

Decided: A

How does an account page frame its one form on the white content area?

Today on: /user/login and /user/password: Drupal core forms in the theme content area, with the legacy .hs-login-help line in the form suffix. Every account page now uses one centred card: max 560px, 1px border, 8px radius.

A. Card on the white band

Decided

Honor Society® login

Welcome back. Sign in to your account.


Need help signing in? Visit our Help Center or contact Honor Society support.

New to Honor Society? Join now

CSS
.hs-auth max 35rem centred; card white, 1px #E6E8EF, 8px radius, pad 20px (32px from 36rem), no shadow; heading Didot 700 at h2 size, no rule; intro 17px slate
Use
every account page; the card heading is the page h1
Fits house style

B. White card on a soft band

Honor Society® login

Welcome back. Sign in to your account.


Need help signing in? Visit our Help Center or contact Honor Society support.

New to Honor Society? Join now

CSS
as A, band #F7F8FB behind the card
Use
only if the template can paint the content area soft
Fits house style

C. Page head, then a bare form

Members

Honor Society® login

Welcome back. Sign in to your account.

Need help signing in? Visit our Help Center or contact Honor Society support.

CSS
shared page head (soft band, H1 at full size, gold rule), then the form in a 35rem column with no border
Use
a page that needs the shared page head for a breadcrumb or an action row
Fits house style
New component 2 of 6

Password toggle

Decided: B. One toggle pattern across the site.

How does a member see the password they typed?

Today on: /user/{uid}/password uses the round 2b eye icon (hs_user_password element). /user/login has no toggle. B works on this page; A and C are drawn only.

A. The word Show inside the field

CSS
button 4rem x 40px at the end of the field, Mukta 600 16px navy, underline on hover; input padding-end 4.5rem; aria-pressed, aria-controls, aria-label flips; text flips Show / Hide
Use
not used: a second pattern for one control
Fits house style

B. Eye icon inside the field (round 2b)

Decided
CSS
44px square hit area, 20px eye / eye-off icon in slate, navy on hover; aria-pressed, aria-controls, aria-label flips Show password / Hide password
Use
every password field: sign-in, account pages, dialogs
Fits house style

C. Show password check under the field

CSS
native checkbox row (40px) under the control; needs its own script
Use
a form with two password fields that share one switch
Fits house style
New component 3 of 6

Form divider and support note

Decided: A

Where does “Need help signing in?” sit, and how loud is it?

Today on: the form suffix of user_login and user_pass (user_profile_enhancements): “Need help? Visit our knowledge base … or to contact us.” under the button, in .hs-login-help.

A. Hairline, then the note in the card

Decided

Honor Society® login

Welcome back. Sign in to your account.


Need help signing in? Visit our Help Center or contact Honor Society support.

CSS
hr 1px #E6E8EF; note 16px slate, lead-in ink 600 on its own line; links .hs-form-link (navy 600, 1px line-strong underline)
Use
the foot of every account form
Fits house style

B. Neutral callout in the card

Honor Society® login

Welcome back. Sign in to your account.

CSS
base .hs-callout: soft ground, 4px line-strong bar, slate icon
Use
a note the reader must see before submitting
Fits house style

C. Fine print under the card

Honor Society® login

Welcome back. Sign in to your account.

Need help signing in? Visit our Help Center or contact Honor Society support.

CSS
.hs-fine-print, 14px slate, centred under the card
Use
legal or source lines, not help
Fits house style
New component 4 of 6

Secondary action line

Decided: A

How does a visitor with no account find the way to join, without competing with Sign in?

Today on: no join route on /user/login. The sign-in page adds “New to Honor Society? Join now” below the card: a secondary route, with no free-membership promotion.

A. Centred line under the card

Decided

Honor Society® login

Welcome back. Sign in to your account.

New to Honor Society? Join now

CSS
.hs-auth__alt 16px slate, centred, 24px under the card; one .hs-form-link
Use
one secondary route on an account page
Fits house style

B. Secondary pill under the card

Honor Society® login

Welcome back. Sign in to your account.

New to Honor Society?

Join now
CSS
label line, then .hs-button--secondary --block
Use
a page where joining is an equal route
Fits house style

C. Inside the card, after the help line

Honor Society® login

Welcome back. Sign in to your account.


Need help signing in? Visit our Help Center or contact Honor Society support.

New to Honor Society? Join now

CSS
a second .hs-form-note in the card
Use
never: it hides the route in the help block
Fits house style
New component 5 of 6

Confirmation panel

Decided: A, with the icon beside the heading

What does the page say after a reset request, and how does it show that it worked?

Today on: core user_pass_submit() redirects to /user/login with the status message “Further instructions have been sent to your e-mail address.” above the login form.

A. Icon disc beside the heading, text below

Decided

Check your email

We sent a link to set a new password to . The link works once and expires in 24 hours.


Did not get the email? Check your spam folder, or send the link again.

Back to sign in

CSS
24px envelope in a 40px #E9F5EE disc, success #0F7A41, centred on the heading’s first line; heading at h2 size beside it; text 17px slate below, full width, the address ink 600
Use
after a form that sent an email
Fits house style

B. Success callout under the old heading

Reset your password


Did not get the email? Check your spam folder, or send the link again.

Back to sign in

CSS
.hs-callout--success inside the card, the page heading unchanged
Use
a message shown in place, without a new page
Fits house style

C. Centred, empty-state style

Check your email

We sent a link to set a new password to . The link works once and expires in 24 hours.


Did not get the email? Check your spam folder, or send the link again.

Back to sign in

CSS
56px navy icon, everything centred
Use
a full-page end state with nothing after it
Fits house style
New component 6 of 6

Signed-in notice

Decided: A

How does /user/password tell a signed-in member which account it will reset?

Today on: core user_pass() for a signed-in user: the field becomes the text “Password reset instructions will be mailed to %email. You must log out to use the password reset link in the e-mail.”

A. Info callout under the heading

Decided

Reset your password

We will email you a link to set a new password. The link works once.

CSS
.hs-callout--info (info surface, blue bar and icon); title ink 600; Sign out .hs-form-link
Use
a page that acts on the signed-in account
Fits house style

B. Account row

Reset your password

We will email you a link to set a new password. The link works once.

Signed in as Sign out

CSS
soft row, 4px radius, 12px 16px; text 14px slate, address ink; Sign out at the end
Use
a header-like identity line on many pages
Fits house style

C. In the intro sentence

Reset your password

You are signed in as avery.example@example.com. We will email a reset link to that address. Sign out to reset another account.

CSS
no new part: the intro carries the state
Use
a page where the state rarely matters
Fits house style
No real alternative

Settled additions

These follow decisions already made. Each is live; open “HTML” for the snippet.

Full-width button

.hs-button--block: display: flex; inline-size: 100%, label centred. Only for the one submit button of a column 35rem or narrower. button.css.

HTML
<button class="hs-button hs-button--block" type="submit">Sign in</button>

Form link

.hs-form-link: navy 600, 1px line-strong underline, navy on hover, as the link list. In the hint slot it gets a 46px tap target. form.css.

HTML
<div class="hs-field"><label class="hs-label" for="s-pass">Password</label><input class="hs-control" id="s-pass" type="password" autocomplete="current-password"><p class="hs-hint"><a class="hs-form-link" href="/user/password">Forgot your password?</a></p></div>

Form divider

hr.hs-form-divider: 1px line, no margin (the card gap spaces it). Between a form and its support note only, never between bands. form.css.

HTML
<hr class="hs-form-divider">

Error summary

No new part: the round 2b form alert already lists each error as a link to its field. Sign-in failure shows it under the head, with the error repeated under the email field. form.css, callout.css.

HTML
<div class="hs-callout hs-callout--danger hs-form-alert" role="alert" tabindex="-1"><svg class="hs-callout__icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9"/><path d="M12 7.5v5.5"/><path d="M12 16.4v.1"/></svg><div class="hs-callout__body"><p class="hs-callout__title">Your email address or password is not correct</p><ul class="hs-form-alert__list"><li><a href="#s-pass">Check your email address and password, then sign in again.</a></li></ul></div></div>