美化系统设置页,登录页抑制浏览器自动填充账号密码。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-10-03 02:36:53 +08:00
parent af5b9835ba
commit 385f778fb7
3 changed files with 358 additions and 92 deletions
+225 -25
View File
@@ -174,6 +174,18 @@ body.page-login .main {
filter: brightness(1.05);
}
.login-card .login-honeypot {
position: absolute !important;
left: -10000px !important;
top: auto !important;
width: 1px !important;
height: 1px !important;
opacity: 0 !important;
pointer-events: none !important;
overflow: hidden !important;
}
.login-card .login-form { position: relative; }
.stack label, .form-grid label { display: block; margin: 8px 0; }
input[type="text"], input[type="password"], input[type="number"], input:not([type]), select {
width: 100%;
@@ -399,43 +411,231 @@ button, .btn {
box-shadow: var(--shadow);
}
.empty { padding: 40px; color: var(--muted); }
/* —— 系统设置 —— */
.settings-head {
margin-bottom: 8px;
align-items: flex-start;
}
.settings-eyebrow {
margin: 0 0 4px;
font-size: 0.72rem;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--accent);
font-weight: 600;
}
.settings-lead { margin: 6px 0 0; max-width: 520px; line-height: 1.45; }
.settings-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(320px, 480px));
gap: 20px;
align-items: start;
grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
gap: 18px;
align-items: stretch;
max-width: 980px;
}
.settings-card { max-width: 480px; }
.settings-form { max-width: 420px; }
.settings-form .check-row {
display: flex;
.settings-card {
max-width: none;
margin: 0;
padding: 0;
overflow: hidden;
background:
linear-gradient(165deg, rgba(20, 36, 58, 0.92), rgba(10, 16, 28, 0.96));
border: 1px solid var(--line-strong);
box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
.settings-card-head {
padding: 18px 20px 14px;
border-bottom: 1px solid rgba(56, 189, 248, 0.12);
background: linear-gradient(180deg, rgba(34, 211, 238, 0.06), transparent);
}
.settings-card-head h2 {
margin: 8px 0 6px;
font-family: var(--font-display);
font-size: 1.05rem;
font-weight: 600;
letter-spacing: 0.04em;
}
.settings-card-head .muted {
margin: 0;
line-height: 1.45;
font-size: 0.86rem;
}
.settings-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 3px 8px;
border-radius: 999px;
font-size: 0.68rem;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #041018;
background: linear-gradient(90deg, var(--accent-deep), var(--accent));
}
.settings-badge--alert {
background: linear-gradient(90deg, #0d9488, #34d399);
}
.settings-form {
max-width: none;
padding: 16px 20px 20px;
}
.settings-field {
display: block;
margin: 0 0 14px;
font-size: 0.82rem;
color: #b6c7da;
font-weight: 500;
}
.settings-form .check-row input { width: auto; margin: 0; }
.settings-form .field-hint {
.settings-label {
display: block;
margin-bottom: 6px;
font-size: 0.82rem;
color: #b6c7da;
font-weight: 500;
}
.settings-form input[type="text"],
.settings-form input[type="password"],
.settings-form input[type="number"],
.settings-form input[type="url"] {
margin-top: 6px;
padding: 11px 12px;
border-radius: 10px;
border: 1px solid var(--line);
background: rgba(5, 10, 18, 0.85);
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.settings-form input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(34, 211, 238, 0.15);
}
.settings-readonly {
margin-top: 6px;
padding: 11px 12px;
border-radius: 10px;
border: 1px solid rgba(56, 189, 248, 0.14);
background: rgba(8, 14, 24, 0.55);
color: var(--text);
font-weight: 600;
letter-spacing: 0.02em;
}
.settings-divider {
height: 1px;
margin: 4px 0 16px;
background: linear-gradient(90deg, transparent, rgba(56, 189, 248, 0.28), transparent);
}
.settings-row-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
}
.settings-hint {
margin: -4px 0 14px;
line-height: 1.4;
}
.settings-switch {
display: flex !important;
align-items: flex-start;
gap: 12px;
margin: 0 0 16px !important;
padding: 12px 14px;
border-radius: 12px;
border: 1px solid rgba(56, 189, 248, 0.16);
background: rgba(5, 12, 22, 0.55);
cursor: pointer;
}
.settings-switch input {
position: absolute;
opacity: 0;
width: 0;
height: 0;
}
.settings-switch-ui {
flex: 0 0 auto;
width: 42px;
height: 24px;
margin-top: 2px;
border-radius: 999px;
background: #1a2738;
border: 1px solid var(--line);
position: relative;
transition: background 0.18s ease, border-color 0.18s ease;
}
.settings-switch-ui::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 18px;
height: 18px;
border-radius: 50%;
background: #8aa0b8;
transition: transform 0.18s ease, background 0.18s ease;
}
.settings-switch input:checked + .settings-switch-ui {
background: rgba(34, 211, 238, 0.25);
border-color: var(--accent);
}
.settings-switch input:checked + .settings-switch-ui::after {
transform: translateX(18px);
background: var(--accent);
}
.settings-switch-text {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.settings-switch-text strong {
color: var(--text);
font-size: 0.9rem;
}
.settings-switch-text small {
color: var(--muted);
font-size: 0.78rem;
line-height: 1.35;
}
.settings-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 2px;
}
.settings-primary,
.settings-form button.settings-primary {
margin-top: 0;
padding: 11px 16px;
border-radius: 10px;
letter-spacing: 0.04em;
background: linear-gradient(90deg, var(--accent-deep), var(--accent));
color: #041018;
box-shadow: 0 8px 22px rgba(14, 165, 233, 0.22);
}
.settings-actions .btn-secondary,
button.btn-secondary {
margin-top: 0;
padding: 10px 14px;
border-radius: 10px;
background: transparent;
color: var(--text);
border: 1px solid var(--line);
box-shadow: none;
}
.settings-actions .btn-secondary:hover,
button.btn-secondary:hover {
border-color: var(--accent);
filter: none;
}
.field-hint {
display: block;
margin-top: 4px;
font-size: 12px;
color: var(--muted);
font-weight: 400;
}
.settings-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 4px;
}
.settings-actions .btn-secondary,
button.btn-secondary {
background: transparent;
color: var(--text);
border: 1px solid var(--line);
}
.settings-actions .btn-secondary:hover,
button.btn-secondary:hover {
border-color: var(--accent, #60a5fa);
@media (max-width: 720px) {
.settings-row-2 { grid-template-columns: 1fr; }
.settings-grid { grid-template-columns: 1fr; }
}
input.readonly {
opacity: 0.75;