主题与字号从页面顶栏搬进设置页的「外观」,顶部导航加上预设入口。

顶栏那套汉堡菜单在每页都要单独挂载、样式也重复,收进设置页后只剩一处改;顺手把「整组都没有曾用型号」的配置组整组收起,不再留空卡片。
This commit is contained in:
2026-10-26 01:09:43 +08:00
parent f3303038fe
commit e2413b0677
11 changed files with 251 additions and 462 deletions
+89 -201
View File
@@ -165,194 +165,6 @@ code {
font-weight: 600;
}
.st-top-actions {
display: flex;
align-items: center;
justify-content: flex-end;
min-width: 0;
}
.st-theme-menu {
position: relative;
}
.st-theme-summary {
width: 32px;
height: 32px;
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid var(--st-border-strong);
border-radius: 8px;
background: var(--st-surface);
color: var(--st-muted);
cursor: pointer;
list-style: none;
}
.st-theme-summary::-webkit-details-marker {
display: none;
}
.st-theme-summary:hover,
.st-theme-menu[open] .st-theme-summary {
color: var(--st-text);
border-color: var(--st-accent);
background: var(--st-accent-soft);
}
.st-theme-summary:focus-visible,
.st-theme-item:focus-visible,
.st-font-scale button:focus-visible {
outline: 2px solid color-mix(in srgb, var(--st-accent) 70%, transparent);
outline-offset: 2px;
}
.st-hamburger,
.st-hamburger::before,
.st-hamburger::after {
width: 16px;
height: 1.5px;
display: block;
border-radius: 2px;
background: currentColor;
}
.st-hamburger {
position: relative;
}
.st-hamburger::before,
.st-hamburger::after {
content: "";
position: absolute;
left: 0;
}
.st-hamburger::before {
top: -5px;
}
.st-hamburger::after {
top: 5px;
}
.st-theme-panel {
position: absolute;
top: calc(100% + 8px);
right: 0;
z-index: 100;
width: 258px;
padding: 10px;
border: 1px solid var(--st-border-strong);
border-radius: 12px;
background: var(--st-surface);
color: var(--st-text);
box-shadow: 0 12px 32px color-mix(in srgb, var(--st-text) 12%, transparent);
}
.st-theme-label {
padding: 4px 10px 7px;
color: var(--st-muted);
font-size: 12px;
font-weight: 600;
}
.st-theme-item {
width: 100%;
min-height: 54px;
display: grid;
grid-template-columns: 26px minmax(0, 1fr);
align-items: center;
gap: 10px;
padding: 7px 10px;
border: 0;
border-radius: 8px;
background: transparent;
color: var(--st-text);
text-align: left;
cursor: pointer;
}
.st-theme-item:hover {
background: color-mix(in srgb, var(--st-surface) 58%, var(--st-bg));
}
.st-theme-item.is-active {
background: var(--st-accent-soft);
color: var(--st-accent);
}
.st-theme-icon {
font-size: 18px;
line-height: 1;
text-align: center;
}
.st-theme-copy {
display: flex;
flex-direction: column;
min-width: 0;
line-height: 1.35;
}
.st-theme-name {
font-size: 14px;
font-weight: 650;
}
.st-theme-desc {
color: var(--st-muted);
font-size: 12px;
}
.st-theme-item.is-active .st-theme-desc {
color: color-mix(in srgb, var(--st-accent) 72%, var(--st-muted));
}
.st-theme-separator {
height: 1px;
margin: 8px 4px;
background: var(--st-border);
}
.st-font-scale {
display: grid;
grid-template-columns: 38px minmax(0, 1fr) 38px;
align-items: center;
gap: 8px;
padding: 0 10px 2px;
}
.st-font-scale button {
height: 38px;
border: 1px solid var(--st-border-strong);
border-radius: 8px;
background: var(--st-surface);
color: var(--st-text);
cursor: pointer;
font-size: 18px;
line-height: 1;
}
.st-font-scale button:hover:not(:disabled) {
border-color: var(--st-accent);
background: var(--st-accent-soft);
}
.st-font-scale button:disabled {
cursor: not-allowed;
opacity: 0.4;
}
.st-font-value {
color: var(--st-text);
font-size: 16px;
font-variant-numeric: tabular-nums;
font-weight: 600;
text-align: center;
}
/* —— Shell —— */
.st-shell {
display: grid;
@@ -804,14 +616,6 @@ code {
margin-top: 4px;
}
.profile-group-empty {
margin: 0;
padding: 12px 16px 14px;
font-size: 12px;
color: var(--st-muted);
border-top: 1px solid var(--st-border);
}
@media (max-width: 640px) {
.profile-model-row {
flex-direction: column;
@@ -1583,6 +1387,95 @@ code {
margin-top: 16px;
}
/* —— Appearance (设置 · 外观) —— */
.appearance-themes {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 10px;
}
.appearance-theme {
display: grid;
grid-template-columns: 26px minmax(0, 1fr);
align-items: center;
gap: 10px;
padding: 9px 12px;
border: 1px solid var(--st-border-strong);
border-radius: var(--st-radius);
background: var(--st-surface);
color: var(--st-text);
font: inherit;
text-align: left;
cursor: pointer;
}
.appearance-theme:hover {
border-color: var(--st-accent);
background: color-mix(in srgb, var(--st-surface) 62%, var(--st-bg));
}
.appearance-theme.is-active {
border-color: var(--st-accent);
background: var(--st-accent-soft);
color: var(--st-accent);
}
.appearance-theme:focus-visible,
.appearance-scale button:focus-visible {
outline: 2px solid color-mix(in srgb, var(--st-accent) 70%, transparent);
outline-offset: 2px;
}
.appearance-theme-icon {
font-size: 18px;
line-height: 1;
text-align: center;
}
.appearance-theme-copy {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
line-height: 1.35;
}
.appearance-theme-name {
font-size: 14px;
font-weight: 650;
}
.appearance-theme-desc {
font-size: 12px;
color: var(--st-muted);
}
.appearance-theme.is-active .appearance-theme-desc {
color: color-mix(in srgb, var(--st-accent) 70%, var(--st-muted));
}
.appearance-scale {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
}
.appearance-scale button {
min-width: 44px;
font-size: 15px;
line-height: 1;
}
.appearance-scale-value {
min-width: 4.5em;
padding: 0 2px;
font-size: 15px;
font-variant-numeric: tabular-nums;
font-weight: 600;
text-align: center;
}
/* —— Dialog —— */
.profile-dialog {
border: none;
@@ -1895,11 +1788,6 @@ code {
scrollbar-width: thin;
}
.st-top-actions {
grid-column: 2;
grid-row: 1;
}
.st-nav a {
flex: 0 0 auto;
}