/* Secondary pages — visual language shared with the conversation workspace. */ :root { --st-bg: #f8f8f8; --st-surface: #ffffff; --st-border: #e0e0e0; --st-border-strong: #cfcfcf; --st-text: #2c2c2c; --st-muted: #767676; --st-faint: #999999; --st-accent: #4a9fb0; --st-accent-soft: rgba(74, 159, 176, 0.12); --st-ok: #16a34a; --st-danger: #dc2626; --st-rail-w: 200px; --st-top-h: 40px; --st-radius: 8px; --st-font-ui: "Noto Sans SC", "PingFang SC", "Microsoft YaHei UI", system-ui, sans-serif; --st-font-read: "Noto Serif SC", "Songti SC", "STSong", Georgia, serif; --ui-font-scale: 1; font-family: var(--st-font-ui); font-size: 14px; color: var(--st-text); line-height: 1.45; } html[data-color-theme="paper"] { --st-bg: #f5ecd7; --st-surface: #fbf8f2; --st-border: #d9d0c1; --st-border-strong: #c8bcaa; --st-text: #3e3a35; --st-muted: #746e67; --st-faint: #8b8580; --st-accent: #8b9a6b; --st-accent-soft: rgba(139, 154, 107, 0.15); } html[data-color-theme="dark"] { color-scheme: dark; --st-bg: #1e1e1e; --st-surface: #2d2d30; --st-border: #3e3e40; --st-border-strong: #525254; --st-text: #d0cec9; --st-muted: #a09e99; --st-faint: #757575; --st-accent: #d4a76a; --st-accent-soft: rgba(212, 167, 106, 0.15); --st-ok: #4ade80; --st-danger: #f87171; } html[data-color-theme="green"] { --st-bg: #dce5d9; --st-surface: #f4f9f2; --st-border: #c0cfbb; --st-border-strong: #a8bca2; --st-text: #2b3330; --st-muted: #65716c; --st-faint: #7a8580; --st-accent: #6f8e6c; --st-accent-soft: rgba(125, 155, 122, 0.15); } html { zoom: var(--ui-font-scale); background: var(--st-bg); color: var(--st-text); } @supports not (zoom: 1) { html { zoom: normal; font-size: calc(14px * var(--ui-font-scale, 1)); } } * { box-sizing: border-box; } html, body.settings-page { height: 100%; margin: 0; overflow: hidden; background: var(--st-bg); color: var(--st-text); } body.settings-page { display: flex; flex-direction: column; min-height: 0; } button, input, textarea { font: inherit; } code { font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: 0.85em; background: #f4f4f5; padding: 0.1em 0.35em; border-radius: 4px; } /* —— Top bar —— */ .st-top { min-height: var(--st-top-h); flex-shrink: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: 4px 12px; background: color-mix(in srgb, var(--st-bg) 92%, transparent); border-bottom: 1px solid var(--st-border); position: relative; z-index: 20; backdrop-filter: blur(8px); } .st-brand { font-weight: 650; font-size: 15px; letter-spacing: -0.02em; color: var(--st-text); text-decoration: none; } .st-brand:hover { color: var(--st-accent); } .st-nav { display: flex; align-items: center; justify-content: center; gap: 2px; flex-wrap: wrap; } .st-nav a { padding: 5px 10px; border-radius: 6px; text-decoration: none; color: var(--st-muted); font-size: 13px; font-weight: 500; } .st-nav a:hover { color: var(--st-text); background: var(--st-accent-soft); } .st-nav a[aria-current="page"] { color: var(--st-text); background: var(--st-accent-soft); 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; grid-template-columns: var(--st-rail-w) minmax(0, 1fr); flex: 1; min-height: 0; width: 100%; max-width: none; margin: 0; overflow: hidden; } .st-rail { padding: 20px 12px; border-right: 1px solid var(--st-border); background: var(--st-surface); display: flex; flex-direction: column; gap: 4px; min-height: 0; min-width: 0; overflow: auto; } .st-rail-label { margin: 0 8px 8px; font-size: 11px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--st-faint); } .st-rail-item { display: block; width: 100%; text-align: left; border: none; background: transparent; padding: 9px 12px; border-radius: 6px; color: var(--st-muted); font-weight: 500; font-size: 13px; cursor: pointer; } .st-rail-item:hover { background: #f4f4f5; color: var(--st-text); } .st-rail-item.active { background: var(--st-accent-soft); color: var(--st-accent); } .st-rail-note { margin-top: auto; padding: 12px 8px 4px; font-size: 11px; line-height: 1.5; color: var(--st-faint); } /* —— Main —— */ .st-main { display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; } .st-main-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 22px 28px 12px; } .st-main-head h1 { margin: 0; font-size: 22px; font-weight: 650; letter-spacing: -0.02em; } .st-sub { margin: 4px 0 0; font-size: 13px; color: var(--st-muted); } .st-main-actions { display: flex; gap: 8px; flex-shrink: 0; } .active-settings-bar, .st-status { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 28px; padding: 10px 12px; background: var(--st-surface); border: 1px solid var(--st-border); border-radius: var(--st-radius); font-size: 12px; } .active-settings-bar .label, .st-status .label { color: var(--st-faint); margin-right: 2px; } .active-settings-bar .active-tag, .st-status .active-tag { padding: 3px 10px; border-radius: 999px; background: #f4f4f5; border: 1px solid var(--st-border); color: var(--st-text); font-weight: 500; } .active-settings-bar .active-tag.missing, .st-status .active-tag.missing { color: var(--st-danger); border-color: #fecaca; background: #fef2f2; } .st-body { flex: 1; min-height: 0; padding: 16px 28px 40px; overflow-x: hidden; overflow-y: auto; } .settings-section.hidden { display: none; } /* —— Buttons —— */ .btn-primary, .btn-secondary, .btn-danger, .config-card-actions button { border-radius: 6px; padding: 7px 14px; font-size: 13px; font-weight: 500; cursor: pointer; border: 1px solid transparent; } .btn-primary { background: var(--st-accent); color: #fff; border-color: var(--st-accent); } .btn-primary:hover { background: color-mix(in srgb, var(--st-accent) 84%, var(--st-text)); border-color: color-mix(in srgb, var(--st-accent) 84%, var(--st-text)); } .btn-secondary { background: var(--st-surface); color: var(--st-text); border-color: var(--st-border-strong); } .btn-secondary:hover { background: color-mix(in srgb, var(--st-surface) 62%, var(--st-bg)); } .btn-danger { background: transparent; color: var(--st-danger); border-color: #fecaca; } .btn-danger:hover { background: #fef2f2; } .danger-outline { border-color: #fecaca !important; color: var(--st-danger) !important; } /* —— Cards —— */ .card-list { display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: none; } .profiles-toolbar { width: 100%; max-width: none; margin-bottom: 12px; } .profiles-search { display: block; } .profiles-search input { width: 100%; box-sizing: border-box; padding: 8px 12px; border: 1px solid var(--st-border-strong); border-radius: 6px; background: var(--st-surface); color: var(--st-text); font-size: 13px; } .profiles-search input:focus-visible { border-color: var(--st-accent); } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .profile-group-card { display: flex; flex-direction: column; gap: 0; padding: 0; overflow: hidden; } .profile-group-card.active { border-color: #93c5fd; box-shadow: inset 3px 0 0 var(--st-accent); } .profile-group-card-head { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px 12px; } .profile-group-card-info { flex: 1; min-width: 0; } .profile-group-card-title-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } .profile-group-card-title-row .profile-group-name { flex: 1 1 160px; min-width: 0; margin: 0; } .profile-group-card-title-row .profile-group-name input { font-size: 14px; font-weight: 600; padding: 4px 8px; } .profile-group-meta { margin-top: 4px; color: var(--st-muted); font-size: 12px; line-height: 1.45; word-break: break-all; } .profile-group-count { flex: 0 0 auto; font-size: 12px; color: var(--st-muted); font-weight: 500; white-space: nowrap; } .profile-group-toggle { flex: 0 0 auto; padding: 4px 8px; border-radius: 6px; border: 1px solid var(--st-border-strong); background: var(--st-bg); color: var(--st-text); font-size: 12px; font-weight: 500; cursor: pointer; } .profile-group-toggle:hover { background: var(--st-accent-soft); color: var(--st-accent); } .profile-group-toggle:focus-visible { outline: 2px solid var(--st-accent); outline-offset: 1px; } .profile-model-rows { display: flex; flex-direction: column; border-top: 1px solid var(--st-border); } .profile-model-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 10px 16px; border-top: 1px solid var(--st-border); } .profile-model-row:first-child { border-top: none; } .profile-model-row:hover { background: var(--st-bg); } .profile-model-row.is-active { background: color-mix(in srgb, var(--st-accent-soft) 55%, transparent); } .profile-model-row-main { flex: 1; min-width: 0; } .profile-model-row-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; font-weight: 600; line-height: 1.35; word-break: break-all; } .profile-model-row-meta { margin-top: 2px; font-size: 12px; color: var(--st-muted); line-height: 1.4; word-break: break-all; } .profile-model-row-actions { display: flex; flex-wrap: wrap; gap: 4px; flex: 0 0 auto; justify-content: flex-end; max-width: 100%; } .profile-model-row-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label) { background: #f4f4f5; color: var(--st-text); border: 1px solid transparent; border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer; } .profile-model-row-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label):hover { background: var(--st-accent-soft); color: var(--st-accent); } .profile-model-row-actions .btn-activate { background: var(--st-text) !important; color: #fff !important; border: none !important; border-radius: 6px; padding: 4px 12px; font-size: 12px; font-weight: 500; cursor: pointer; } .profile-model-row-actions .btn-activate:hover { background: #000 !important; } .profile-model-row-actions .btn-active-label { background: var(--st-accent-soft); color: var(--st-accent); border: none; border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: default; } .profile-model-row-actions .btn-danger { padding: 4px 8px; font-size: 12px; } .profile-model-row .test-result { padding-left: 0; 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; align-items: stretch; } .profile-model-row-actions { justify-content: flex-start; } } .profile-group { display: flex; flex-direction: column; gap: 8px; } .profile-group-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .profile-group-name { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1; font-size: 12px; color: var(--st-muted); font-weight: 600; } .profile-group-name input { flex: 1; min-width: 0; padding: 6px 8px; border-radius: 6px; border: 1px solid var(--st-border-strong); background: var(--st-surface); color: var(--st-text); font-size: 13px; font-weight: 600; } .profile-group-name input:focus { outline: none; border-color: var(--st-accent); box-shadow: 0 0 0 3px var(--st-accent-soft); } .profile-group-list { display: flex; flex-direction: column; gap: 8px; } .empty-hint { margin: 24px 0; color: var(--st-muted); font-size: 13px; } .config-card { display: flex; flex-direction: column; gap: 12px; padding: 16px; background: var(--st-surface); border: 1px solid var(--st-border); border-radius: var(--st-radius); } .config-card:hover { border-color: var(--st-border-strong); } .config-card.active { border-color: #93c5fd; box-shadow: inset 3px 0 0 var(--st-accent); } .config-card-head { display: flex; align-items: flex-start; gap: 12px; } .config-card-icon { width: 36px; height: 36px; border-radius: 8px; display: grid; place-items: center; font-size: 13px; font-weight: 700; flex-shrink: 0; color: #fff; } .config-card-icon.api { background: #3b82f6; } .config-card-icon.preset { background: #0f766e; } .config-card-info { flex: 1; min-width: 0; } .config-card-title { font-weight: 600; font-size: 14px; display: flex; align-items: center; gap: 8px; } .badge { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: var(--st-accent-soft); color: var(--st-accent); } .config-card-meta { color: var(--st-muted); font-size: 12px; word-break: break-all; margin-top: 4px; line-height: 1.5; } .config-card-actions { display: flex; flex-wrap: wrap; gap: 6px; padding-left: 48px; } .config-card-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label) { background: #f4f4f5; color: var(--st-text); border: 1px solid transparent; } .config-card-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label):hover { background: var(--st-accent-soft); color: var(--st-accent); } .config-card-actions .btn-activate { background: var(--st-text) !important; color: #fff !important; border: none !important; border-radius: 6px; padding: 6px 14px; font-size: 12px; font-weight: 500; cursor: pointer; } .config-card-actions .btn-activate:hover { background: #000 !important; } .config-card-actions .btn-active-label { background: var(--st-accent-soft); color: var(--st-accent); border: none; border-radius: 6px; padding: 6px 12px; font-size: 12px; cursor: default; } .config-card-actions .btn-active-label.is-toggle { cursor: pointer; } .config-card-actions .btn-active-label.is-toggle:hover { background: #e4e4e7; color: var(--st-text); } .test-result { font-size: 12px; padding-left: 48px; } .test-result.ok { color: var(--st-ok); } .test-result.fail { color: var(--st-danger); } .cap-row { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 4px; } .cap-unknown { color: var(--muted, #888); } .cap-chip { font-size: 11px; padding: 1px 6px; border-radius: 4px; border: 1px solid var(--border, #ddd); } .cap-chip.cap-ok { color: #067647; background: #ecfdf3; border-color: #abefc6; } .cap-chip.cap-fail { color: #b42318; background: #fef3f2; border-color: #fecdca; } .cap-chip.cap-unk { color: #667085; background: #f9fafb; } /* —— Toast —— */ .settings-toast { margin: 10px 28px 0; padding: 10px 14px; border-radius: var(--st-radius); background: #ecfdf5; color: var(--st-ok); font-size: 13px; border: 1px solid #bbf7d0; } .settings-toast.error { background: #fef2f2; color: var(--st-danger); border-color: #fecaca; } /* —— Preset entries —— */ .import-report { margin-top: 16px; padding: 14px 16px; background: var(--st-surface); border: 1px solid var(--st-border); border-radius: var(--st-radius); font-size: 12px; overflow-x: auto; white-space: pre-wrap; color: var(--st-muted); max-width: none; line-height: 1.6; font-family: inherit; } .import-report-actions { margin-top: 10px; display: flex; gap: 8px; } .preset-entries-panel { margin-top: 4px; padding-left: 48px; } .preset-entries-inner { border: 1px solid var(--st-border); border-radius: var(--st-radius); background: #fafafa; padding: 12px; } .preset-gen-params { font-size: 12px; color: var(--st-muted); margin-bottom: 10px; line-height: 1.5; } .preset-gen-editor { margin-bottom: 12px; padding: 10px 12px; background: var(--st-surface); border: 1px solid var(--st-border); border-radius: 6px; } .preset-gen-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-bottom: 10px; font-size: 12px; color: var(--st-text); } .preset-gen-hint { color: var(--st-faint); font-weight: 400; } .preset-gen-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 10px; } .preset-gen-grid .gen-field { margin: 0; } .preset-gen-grid .gen-field-check { flex-direction: row; align-items: center; gap: 8px; padding-top: 18px; } .preset-gen-grid .gen-field-check input { width: auto; margin: 0; } .preset-gen-actions { display: flex; justify-content: flex-end; margin-top: 10px; } @media (max-width: 900px) { .preset-gen-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 560px) { .preset-gen-grid { grid-template-columns: 1fr; } .preset-entries-panel { padding-left: 0; } } .preset-entries-summary { font-size: 12px; color: var(--st-faint); margin: 0 0 10px; } .preset-entry { background: var(--st-surface); border: 1px solid var(--st-border); border-radius: 6px; padding: 0; margin-bottom: 8px; overflow: hidden; } .preset-entry:last-child { margin-bottom: 0; } .preset-entry.skipped { opacity: 1; } .preset-entry.disabled { opacity: 0.72; } .preset-entry.is-open { border-color: #93c5fd; box-shadow: 0 0 0 1px var(--st-accent-soft); } .preset-entry-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 10px 12px; font-size: 12px; cursor: pointer; user-select: none; } .preset-entry-head:hover { background: #fafafa; } .preset-entry.is-open .preset-entry-head { background: #f8fafc; border-bottom: 1px solid var(--st-border); } .entry-enable { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 500; color: var(--st-muted); cursor: pointer; user-select: none; } .entry-enable input { accent-color: var(--st-accent); } .entry-name { flex: 1; min-width: 6rem; font-weight: 600; color: var(--st-text); } .entry-chevron { margin-left: auto; color: var(--st-faint); font-size: 11px; } .entry-preview { margin: 0; padding: 0 12px 10px 48px; font-size: 11px; color: var(--st-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.4; cursor: pointer; } .preset-entry.is-open .entry-preview { display: none; } .preset-entry-body { padding: 12px; display: flex; flex-direction: column; gap: 10px; background: #fafafa; } .preset-entry-body[hidden] { display: none; } .entry-field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 500; color: var(--st-muted); } .entry-name-input { width: 100%; border: 1px solid var(--st-border); border-radius: 6px; padding: 6px 10px; font-size: 13px; font-weight: 600; background: var(--st-surface); color: var(--st-text); } .entry-name-input:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 2px var(--st-accent-soft); } .preset-entry-editor { display: block; width: 100%; margin: 0; padding: 10px 12px; background: var(--st-surface); border: 1px solid var(--st-border); border-radius: 6px; font-size: 12px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; resize: vertical; min-height: 5rem; font-family: ui-monospace, Consolas, monospace; color: var(--st-text); } .preset-entry-editor:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 2px var(--st-accent-soft); } .preset-entry-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 2px; } .entry-skip.ok { color: var(--st-ok); } .entry-index { width: 20px; height: 20px; border-radius: 50%; background: var(--st-accent-soft); color: var(--st-accent); display: grid; place-items: center; font-size: 11px; font-weight: 700; flex-shrink: 0; } .entry-role { padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; text-transform: uppercase; } .entry-role.role-system { background: #dbeafe; color: #1d4ed8; } .entry-role.role-user { background: #dcfce7; color: #15803d; } .entry-role.role-assistant { background: #f4f4f5; color: #52525b; } .entry-name { font-weight: 600; } .entry-skip { font-size: 11px; color: var(--st-faint); } .preset-entry-content { margin: 0; padding: 10px 12px; background: #f4f4f5; border-radius: 6px; font-size: 12px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; max-height: 240px; overflow: auto; font-family: ui-monospace, Consolas, monospace; } .preset-entry-empty { margin: 0; font-size: 12px; color: var(--st-faint); font-style: italic; } /* —— Storage —— */ .storage-card { width: 100%; max-width: none; padding: 20px; border: 1px solid var(--st-border); border-radius: var(--st-radius); background: var(--st-surface); } .storage-card h3 { margin: 0 0 8px; font-size: 15px; } .settings-help { margin: 0 0 14px; font-size: 13px; color: var(--st-muted); line-height: 1.55; } .settings-help.muted { margin-top: -6px; font-size: 12px; color: var(--st-faint); } .storage-card .field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; font-size: 13px; font-weight: 500; } .storage-card .field input { max-width: 120px; padding: 8px 10px; border: 1px solid var(--st-border-strong); border-radius: 6px; background: var(--st-surface); color: inherit; } .storage-card .field input:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 3px var(--st-accent-soft); } .storage-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; } /* —— Dialog —— */ .profile-dialog { border: none; border-radius: 10px; padding: 0; background: var(--st-surface); color: var(--st-text); max-width: 420px; width: calc(100% - 32px); box-shadow: 0 20px 50px rgba(0, 0, 0, 0.18); } .profile-dialog::backdrop { background: rgba(24, 24, 27, 0.4); } /* —— Preset probe —— */ .probe-dialog { border: none; border-radius: 10px; padding: 0; background: var(--st-surface); color: var(--st-text); width: min(1080px, calc(100% - 24px)); height: min(780px, calc(100% - 24px)); max-width: none; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.18); } .probe-dialog[open] { display: flex; flex-direction: column; overflow: hidden; } .probe-dialog::backdrop { background: rgba(24, 24, 27, 0.45); } .probe-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 18px 12px; border-bottom: 1px solid var(--st-border); flex-shrink: 0; } .probe-head h3 { margin: 0; font-size: 16px; font-weight: 650; } .probe-sub { margin: 4px 0 0; font-size: 12px; color: var(--st-muted); } .probe-body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(260px, 320px) minmax(0, 1fr); } .probe-composer, .probe-inspect { min-height: 0; overflow: auto; padding: 16px 18px 20px; } .probe-composer { border-right: 1px solid var(--st-border); display: flex; flex-direction: column; gap: 12px; } .probe-composer label, .probe-extras label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--st-muted); font-weight: 500; } .probe-composer textarea, .probe-extras textarea { width: 100%; resize: vertical; padding: 9px 12px; border-radius: 6px; border: 1px solid var(--st-border-strong); background: var(--st-bg); color: var(--st-text); font-size: 13px; line-height: 1.5; } .probe-composer textarea:focus, .probe-extras textarea:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 3px var(--st-accent-soft); background: var(--st-surface); } .probe-extras { border: 1px solid var(--st-border); border-radius: 8px; padding: 8px 10px 10px; background: var(--st-bg); } .probe-extras summary { cursor: pointer; font-size: 12px; font-weight: 600; color: var(--st-text); margin-bottom: 8px; } .probe-extras[open] summary { margin-bottom: 10px; } .probe-composer-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; margin-top: auto; } .probe-status { margin: 0; font-size: 12px; color: var(--st-muted); } .probe-inspect h4 { margin: 0 0 10px; font-size: 12px; font-weight: 650; color: var(--st-muted); letter-spacing: 0.02em; } .probe-empty { margin: 8px 0; color: var(--st-faint); font-size: 13px; } .probe-messages { display: flex; flex-direction: column; gap: 10px; } .probe-msg { border: 1px solid var(--st-border); border-radius: 8px; background: var(--st-bg); overflow: hidden; } .probe-msg header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 10px; border-bottom: 1px solid var(--st-border); background: var(--st-surface); } .probe-role { font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--st-accent); } .probe-role.user { color: #0f766e; } .probe-role.assistant { color: #7c3aed; } .probe-index { font-size: 11px; color: var(--st-faint); } .probe-msg pre, .probe-reply pre { margin: 0; padding: 10px 12px; white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: 12px; line-height: 1.55; } .probe-reply { margin-top: 18px; } @media (max-width: 800px) { .probe-dialog { height: calc(100% - 16px); } .probe-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; } .probe-composer { border-right: none; border-bottom: 1px solid var(--st-border); max-height: 42vh; } } /* —— Shared workspace finish —— */ .st-brand:focus-visible, .st-nav a:focus-visible, .st-rail-item:focus-visible, .btn-primary:focus-visible, .btn-secondary:focus-visible, .btn-danger:focus-visible, .config-card-actions button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid color-mix(in srgb, var(--st-accent) 70%, transparent); outline-offset: 2px; } .st-rail-item:hover, .profile-model-row-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label), .config-card-actions button:not(.btn-danger):not(.btn-activate):not(.btn-active-label), .active-settings-bar .active-tag, .st-status .active-tag, code { background: color-mix(in srgb, var(--st-surface) 62%, var(--st-bg)); } .profile-model-row:hover, .preset-entries-inner, .preset-entry-head:hover, .preset-entry-body, .preset-entry-content, .probe-composer textarea, .probe-extras textarea, .probe-extras, .probe-msg { background: var(--st-bg); } .config-card.active, .config-card.is-active, .profile-group-card.active { border-color: color-mix(in srgb, var(--st-accent) 58%, var(--st-border)); box-shadow: inset 3px 0 0 var(--st-accent); } .profile-model-row-actions .btn-activate, .config-card-actions .btn-activate { background: var(--st-text) !important; color: var(--st-surface) !important; } .profile-model-row-actions .btn-activate:hover, .config-card-actions .btn-activate:hover { background: color-mix(in srgb, var(--st-text) 86%, var(--st-accent)) !important; } @media (max-width: 720px) { .st-top { grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; gap: 2px; padding: 6px 10px; } .st-brand { padding: 2px 4px; } .st-nav { grid-column: 1 / -1; grid-row: 2; justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; scrollbar-width: thin; } .st-top-actions { grid-column: 2; grid-row: 1; } .st-nav a { flex: 0 0 auto; } } .profile-dialog form { padding: 22px; display: flex; flex-direction: column; gap: 14px; max-height: min(90vh, 760px); overflow: auto; } .profile-dialog h3 { margin: 0 0 2px; font-size: 16px; font-weight: 650; } .profile-dialog label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--st-muted); font-weight: 500; } .profile-dialog input, .profile-dialog select { padding: 9px 12px; border-radius: 6px; border: 1px solid var(--st-border-strong); background: var(--st-surface); color: var(--st-text); font-size: 14px; } .profile-dialog select { cursor: pointer; } .profile-dialog input:focus, .profile-dialog select:focus { outline: none; border-color: #93c5fd; box-shadow: 0 0 0 3px var(--st-accent-soft); } .profile-dialog .field-hint.is-error { color: var(--st-danger); } .model-lock { display: flex; flex-direction: column; gap: 6px; } .model-lock-value { margin: 0; padding: 9px 12px; border-radius: 6px; border: 1px solid var(--st-border); background: var(--st-bg); color: var(--st-text); font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size: 13px; word-break: break-all; } .model-field { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: var(--st-muted); font-weight: 500; } .model-field-row { display: flex; gap: 8px; align-items: stretch; } .model-field-row input { flex: 1; min-width: 0; } .model-field-row .btn-secondary { flex: 0 0 auto; } .model-field-row .btn-secondary:disabled { opacity: 0.6; cursor: progress; } .model-pick { display: flex; flex-direction: column; gap: 6px; } .model-pick-list { max-height: 220px; overflow: auto; border: 1px solid var(--st-border); border-radius: 6px; background: var(--st-bg); } .model-pick-item { display: block; width: 100%; text-align: left; padding: 6px 10px; border: none; border-bottom: 1px solid var(--st-border); background: transparent; color: var(--st-text); font-size: 12px; font-family: ui-monospace, "Cascadia Code", Consolas, monospace; cursor: pointer; } .model-pick-item:last-child { border-bottom: none; } .model-pick-item[hidden] { display: none; } .used-model-label { font-size: 11px; font-weight: 500; color: var(--st-muted); } .used-model-row { display: flex; align-items: stretch; border-bottom: 1px solid var(--st-border); } .used-model-row:last-child { border-bottom: none; } .used-model-row .model-pick-item { flex: 1 1 auto; width: auto; min-width: 0; border-bottom: none; word-break: break-all; } .used-model-note { display: block; margin-top: 2px; font-family: inherit; font-size: 11px; font-weight: 400; color: var(--st-muted); } .model-pick-item.is-current .used-model-note { color: inherit; opacity: 0.8; } .used-model-forget { flex: 0 0 auto; margin: 0; padding: 0 10px; border: none; border-left: 1px solid var(--st-border); background: transparent; color: var(--st-muted); font-size: 11px; cursor: pointer; } .used-model-forget:hover { color: var(--st-danger); background: var(--st-bg); } .used-model-forget:focus-visible { outline: 2px solid var(--st-accent); outline-offset: -2px; } .model-pick-item:hover, .model-pick-item.is-current { background: var(--st-accent-soft); color: var(--st-accent); } .model-pick-item:focus-visible, .profile-model-select:focus-visible, .model-field-row .btn-secondary:focus-visible { outline: 2px solid var(--st-accent); outline-offset: -2px; } .model-pick-empty { margin: 0; font-size: 12px; font-weight: 400; color: var(--st-muted); } .profile-model-switch { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; font-size: 11px; color: var(--st-muted); font-weight: 500; } .profile-model-select { width: 100%; max-width: 100%; padding: 6px 8px; border-radius: 6px; border: 1px solid var(--st-border-strong); background: var(--st-surface); color: var(--st-text); font-size: 12px; font-family: ui-monospace, "Cascadia Code", Consolas, monospace; } .profile-model-select:disabled { opacity: 0.6; cursor: progress; } .profile-dialog .field-hint { margin-top: 2px; font-size: 11px; font-weight: 400; color: var(--st-muted); line-height: 1.35; } .profile-dialog label.check-label { flex-direction: row; align-items: flex-start; gap: 8px; color: var(--st-text); font-size: 13px; font-weight: 500; } .profile-dialog label.check-label input { width: auto; margin-top: 3px; flex-shrink: 0; } .profile-dialog label.check-label .field-hint { display: block; margin-top: 4px; } .persona-card-check { display: inline-flex; align-items: center; gap: 6px; margin-right: auto; font-size: 12px; color: var(--st-muted); font-weight: 500; cursor: pointer; user-select: none; } .persona-card-check input { width: auto; margin: 0; accent-color: var(--st-accent); } .persona-card-check:hover { color: var(--st-text); } .config-card.is-active { border-color: #93c5fd; box-shadow: inset 3px 0 0 var(--st-accent); } .persona-config-card .config-card-actions { padding-left: 0; align-items: center; } .dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; } /* —— Compat aliases used by settings.js —— */ .sidebar-nav-item { /* JS still toggles .active on these; map to rail items */ } .active-settings-bar { /* id used; styled via .st-status on same element — keep both */ } @media (max-width: 800px) { .st-shell { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); } .st-rail { flex-direction: row; flex-wrap: wrap; align-items: center; align-content: flex-start; border-right: none; border-bottom: 1px solid var(--st-border); padding: 12px; gap: 6px; max-height: 36%; overflow: auto; } .st-rail-label, .st-rail-note { display: none; } .st-rail-item { width: auto; } .st-main-head, .st-status, .active-settings-bar, .settings-toast, .st-body { padding-left: 16px; padding-right: 16px; } .st-status, .active-settings-bar, .settings-toast { margin-left: 16px; margin-right: 16px; } .config-card-actions, .test-result, .preset-entries-panel { padding-left: 0; } }