First commit
This commit is contained in:
119
frontend/app/assets/css/_auth.scss
Normal file
119
frontend/app/assets/css/_auth.scss
Normal file
@@ -0,0 +1,119 @@
|
||||
@use 'mixins' as *;
|
||||
|
||||
// ---------- Sign in ----------
|
||||
// Anyone may read Mathew; writing it takes an account. The gate is what a
|
||||
// signed-out visitor of the editor finds in the form's place (AuthGate.vue), and
|
||||
// the popup is the way in from anywhere (AuthModal.vue). The popup sits above the
|
||||
// fullscreen editor (1000) and its own popups (1100, 1150): a save that comes
|
||||
// back refusing an expired session has to be answered where the editor already
|
||||
// fills the screen.
|
||||
.auth-overlay { @include overlay(1160); }
|
||||
|
||||
.auth-modal {
|
||||
@include sheet(420px);
|
||||
|
||||
&:focus, &:focus-visible { outline: none; }
|
||||
}
|
||||
|
||||
.auth-modal-head { @include sheet-head; }
|
||||
|
||||
.auth-title { @include sheet-title; }
|
||||
|
||||
.auth-modal-body { padding: 18px; }
|
||||
|
||||
// the two ways in, side by side
|
||||
.auth-tabs { @include segmented; margin-bottom: 18px; }
|
||||
|
||||
.auth-tab { @include segmented-tab(7px 14px, 0.84rem); }
|
||||
|
||||
// why the popup turned up on its own — a session that expired mid-draft
|
||||
.auth-notice {
|
||||
margin: -6px 0 16px;
|
||||
padding: 10px 12px;
|
||||
border: 1px solid color-mix(in srgb, var(--danger) 30%, var(--border));
|
||||
border-radius: 10px;
|
||||
background: color-mix(in srgb, var(--danger) 7%, var(--surface));
|
||||
color: var(--muted);
|
||||
font-size: 0.84rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.auth-modal .field input {
|
||||
width: 100%;
|
||||
padding: 12px 14px;
|
||||
border-radius: 11px;
|
||||
border: 1px solid var(--border);
|
||||
background: var(--bg-elev);
|
||||
}
|
||||
|
||||
.auth-submit { width: 100%; margin-top: 2px; }
|
||||
|
||||
.auth-switch {
|
||||
margin: 16px 0 0;
|
||||
text-align: center;
|
||||
font-size: 0.84rem;
|
||||
color: var(--muted);
|
||||
|
||||
button {
|
||||
color: var(--accent);
|
||||
font-weight: 650;
|
||||
|
||||
&:hover { text-decoration: underline; }
|
||||
}
|
||||
}
|
||||
|
||||
@include popup-anim(
|
||||
'auth-popup',
|
||||
'.auth-modal',
|
||||
0.16s,
|
||||
transform 0.2s cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||
-10px
|
||||
);
|
||||
|
||||
// the editor's stand-in until there is a session
|
||||
.auth-gate {
|
||||
max-width: 480px;
|
||||
margin: clamp(36px, 8vh, 92px) auto;
|
||||
padding: 34px 30px 30px;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 18px;
|
||||
background: var(--bg-elev);
|
||||
box-shadow: var(--shadow-lg);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.auth-gate-mark {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
margin: 0 auto 16px;
|
||||
border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
|
||||
border-radius: 50%;
|
||||
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.auth-gate-title {
|
||||
margin: 0 0 8px;
|
||||
font-size: 1.3rem;
|
||||
letter-spacing: -0.01em;
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.auth-gate-text {
|
||||
max-width: 38ch;
|
||||
margin: 0 auto 22px;
|
||||
color: var(--muted);
|
||||
font-size: 0.93rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.auth-gate-actions {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.auth-gate-fine { margin: 18px 0 0; font-size: 0.8rem; color: var(--faint); }
|
||||
Reference in New Issue
Block a user