feat: implement TASK-WP1-02 login sessions

This commit is contained in:
suyx
2026-07-28 16:28:30 +08:00
parent f467e7c09f
commit ee70001d44
20 changed files with 2480 additions and 28 deletions
+325
View File
@@ -0,0 +1,325 @@
:root {
color: #111111;
background: #f6f6f4;
font-family: "Segoe UI", "Microsoft YaHei", Arial, sans-serif;
font-synthesis: none;
letter-spacing: 0;
}
* {
box-sizing: border-box;
}
body {
min-width: 320px;
min-height: 100vh;
margin: 0;
overflow-x: hidden;
background: #f6f6f4;
}
button,
input {
font: inherit;
letter-spacing: 0;
}
button,
a,
input {
outline-offset: 3px;
}
.auth-page {
min-height: 100vh;
display: grid;
grid-template-rows: 230px minmax(520px, 1fr) 48px;
}
.auth-art {
position: relative;
display: grid;
grid-template-columns: minmax(320px, 30%) 1fr;
overflow: hidden;
border-bottom: 1px solid #c8c8c3;
background: #eeeee9;
}
.auth-wordmark {
display: flex;
align-items: center;
padding: 0 48px;
color: #111111;
background: #f2f500;
font-family: Arial Black, "Segoe UI", sans-serif;
font-size: 96px;
font-weight: 900;
line-height: 1;
}
.auth-art-copy {
z-index: 2;
display: flex;
flex-direction: column;
justify-content: center;
gap: 54px;
padding: 26px 54px 20px;
}
.auth-art-copy span {
font-family: Consolas, monospace;
font-size: 11px;
font-weight: 700;
}
.auth-art-copy strong {
max-width: 520px;
font-size: 27px;
line-height: 1.2;
}
.auth-art-block {
position: absolute;
top: 90px;
right: 16%;
width: 31%;
height: 92px;
background: #b9bab4;
}
.auth-art-line {
position: absolute;
right: 4%;
bottom: 38px;
width: 48%;
height: 48px;
border-right: 1px solid #111111;
border-bottom: 1px solid #111111;
background: #f2f500;
}
.auth-content {
position: relative;
width: min(1180px, 100%);
margin: 0 auto;
padding: 32px 28px 64px;
}
.auth-admin-link {
position: absolute;
top: 34px;
right: 30px;
color: #333333;
font-size: 13px;
text-decoration-thickness: 1px;
text-underline-offset: 4px;
}
.auth-panel {
width: min(480px, 100%);
margin-left: 84px;
}
.auth-tabs {
display: grid;
grid-template-columns: 1fr 1fr;
width: 100%;
height: 50px;
border: 1px solid #8a8a86;
}
.auth-tab {
border: 0;
color: #222222;
background: #f6f6f4;
font-weight: 700;
cursor: pointer;
}
.auth-tab + .auth-tab {
border-left: 1px solid #8a8a86;
}
.auth-tab[aria-selected="true"] {
background: #f2f500;
}
.auth-form {
display: flex;
flex-direction: column;
min-height: 350px;
padding-top: 20px;
}
.auth-form h1 {
margin: 0 0 20px;
font-size: 27px;
line-height: 1.25;
}
.auth-form label {
margin: 0 0 7px;
font-size: 13px;
font-weight: 700;
}
.auth-form input {
width: 100%;
height: 46px;
margin-bottom: 16px;
border: 1px solid #777773;
border-radius: 0;
padding: 0 13px;
color: #111111;
background: #ffffff;
}
.auth-form input:focus {
border-color: #111111;
outline: 2px solid #f2f500;
}
.auth-code-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 142px;
gap: 10px;
}
.auth-code-row input {
margin-bottom: 0;
}
.auth-secondary,
.auth-primary {
height: 46px;
border: 1px solid #777773;
border-radius: 0;
font-weight: 700;
}
.auth-secondary {
background: #ffffff;
}
.auth-primary {
width: 100%;
margin-top: 14px;
color: #111111;
background: #f2f500;
}
.auth-secondary:not(:disabled),
.auth-primary:not(:disabled) {
cursor: pointer;
}
.auth-secondary:disabled,
.auth-primary:disabled {
color: #777773;
background: #deded9;
}
.auth-status,
.auth-error {
min-height: 20px;
margin: 10px 0 0;
font-size: 13px;
line-height: 1.5;
}
.auth-status {
color: #3c5b32;
}
.auth-error {
border-left: 4px solid #c7432f;
padding: 8px 10px;
color: #8d281b;
background: #fff0ed;
}
.auth-local-notice {
display: grid;
place-items: center;
min-width: 0;
padding: 0 18px;
color: #f2f500;
background: #111111;
font-size: 12px;
font-weight: 700;
text-align: center;
}
@media (max-width: 760px) {
.auth-page {
grid-template-rows: 150px minmax(560px, 1fr) auto;
}
.auth-art {
grid-template-columns: 42% 58%;
}
.auth-wordmark {
padding: 0 18px;
font-size: 48px;
}
.auth-art-copy {
gap: 30px;
padding: 18px;
}
.auth-art-copy span {
font-size: 8px;
}
.auth-art-copy strong {
font-size: 18px;
}
.auth-art-block {
top: 54px;
right: 8%;
width: 33%;
height: 52px;
}
.auth-art-line {
right: 2%;
bottom: 20px;
width: 44%;
height: 28px;
}
.auth-content {
padding: 56px 20px 42px;
}
.auth-admin-link {
top: 22px;
right: 20px;
}
.auth-panel {
margin-left: 0;
}
.auth-code-row {
grid-template-columns: minmax(0, 1fr) 126px;
}
.auth-local-notice {
min-height: 56px;
padding-block: 12px;
}
}
@media (max-width: 380px) {
.auth-code-row {
grid-template-columns: 1fr;
}
.auth-secondary {
width: 100%;
}
}