/* Settings page — page-specific styles layered over the design system. Chrome tokens only: every surface here should rhyme with the status bar. */ /* Tighter page chrome — reclaim whitespace around title and section padding. */ .settings-page { padding: 10px 24px 24px; } .settings-page h1 { font-size: 1.15rem; margin: 0 0 2px; } .settings-page .settings-subtitle{ font-size: 0.72rem; margin-bottom: 14px; } .settings-tabs-ui { margin-bottom: var(--space-3); } .settings-section--compact { padding: 8px 10px; margin-bottom: 8px; } .settings-row__mono { font-family: var(--chrome-font-mono); color: var(--chrome-fg-muted); } .settings-muted { color: var(--chrome-fg-dim); font-size: var(--text-md); font-family: var(--font-sans); } .settings-prose { margin: 0 0 var(--space-5); color: var(--chrome-fg-muted); line-height: 1.6; font-size: 0.82rem; font-family: var(--font-sans); } .settings-prose strong { color: var(--chrome-fg); font-weight: 600; } .settings-section__head-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); } .settings-section__head-left { display: flex; align-items: center; gap: var(--space-4); } .settings-section__head-actions { display: flex; gap: var(--space-3); } .settings-log-meta { display: flex; align-items: center; gap: var(--space-4); font-size: var(--text-base); color: var(--chrome-fg-dim); margin: var(--space-4) 0; font-family: var(--chrome-font-mono); } .settings-log__empty { color: var(--chrome-fg-dim); font-family: var(--font-sans); } .settings-link-row { margin-top: var(--space-5); display: flex; gap: var(--space-4); flex-wrap: wrap; } /* We're migrating to the ui/ Tabs primitive — keep a thin class so the old .settings-tabs gradient-above space stays; the Tabs primitive itself carries visual styling. */ .settings-tabs-ui { margin-bottom: var(--space-5); } /* ── Engines tab ─────────────────────────────────────────────── */ .engines-family { margin-bottom: var(--space-5); } .engines-family__active { margin-left: var(--space-4); font-weight: 400; color: var(--chrome-fg-dim); font-size: var(--text-xs); font-family: var(--chrome-font-mono); } .engines-family__active code { color: var(--chrome-fg); } .engines-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-2); } .engines-list li { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-3); background: transparent; border: 1px solid var(--chrome-border); border-left: 2px solid var(--chrome-border-strong); border-radius: var(--chrome-radius-pill); font-family: var(--font-sans); font-size: 0.78rem; color: var(--chrome-fg-muted); flex-wrap: wrap; } .engines-list li.is-ok { border-left-color: var(--chrome-severity-ok); background: color-mix(in srgb, var(--chrome-severity-ok) 5%, transparent); } .engines-list li.is-off { border-left-color: var(--chrome-severity-warn); opacity: 0.85; } .engines-list__name { flex: 1; min-width: 240px; color: var(--chrome-fg); } .engines-list__name code { color: var(--chrome-fg); font-family: var(--chrome-font-mono); font-size: var(--text-sm); } .engines-list__reason { flex-basis: 100%; font-size: var(--text-xs); color: var(--chrome-fg-dim); font-family: var(--font-sans); padding-left: var(--space-4); } /* ── Models tab ──────────────────────────────────────────────── */ .reco-banner { display: flex; align-items: center; gap: var(--space-3); padding: 6px var(--space-4); margin-bottom: var(--space-3); border: 1px solid color-mix(in srgb, #8ec07c 30%, transparent); border-left: 2px solid #8ec07c; border-radius: var(--chrome-radius-pill); background: color-mix(in srgb, #8ec07c 5%, transparent); font-family: var(--font-sans); font-size: var(--text-sm); color: var(--chrome-fg-muted); } .reco-banner__text { flex: 1; } .reco-banner__text strong { color: var(--chrome-fg); font-weight: 600; } .reco-banner__size { color: var(--chrome-fg-dim); font-size: var(--text-xs); } .models-row__tag { margin-left: var(--space-2); padding: 1px 6px; font-family: var(--chrome-font-mono); font-size: var(--chrome-label-size); letter-spacing: var(--chrome-label-track); text-transform: uppercase; color: #d3869b; border: 1px solid color-mix(in srgb, #d3869b 40%, transparent); border-radius: var(--chrome-radius-pill); background: color-mix(in srgb, #d3869b 8%, transparent); } /* ── Models tab: toolbar + role tabs + table ─────────────────── */ .models-toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: 2px 2px 6px; font-family: var(--chrome-font-mono); font-size: var(--text-xs); color: var(--chrome-fg-muted); flex-wrap: wrap; } .models-toolbar__stats { display: inline-flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; } .models-toolbar__stats strong { color: var(--chrome-fg); font-weight: 600; } .models-toolbar__sep { color: var(--chrome-fg-dim); } .models-toolbar__cache code { color: var(--chrome-fg); font-family: var(--chrome-font-mono); font-size: var(--text-xs); } .models-roletabs { margin: 4px 0 6px; } /* ── Compact recommendation banner ───────────────────────────────── */ .reco-banner { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; padding: 5px 10px; border-radius: 8px; font-size: var(--text-xs); color: var(--chrome-fg-muted); border: 1px solid; border-left-width: 2px; } .reco-banner--ok { border-color: color-mix(in srgb, #8ec07c 30%, transparent); border-left-color: #8ec07c; background: color-mix(in srgb, #8ec07c 4%, transparent); } .reco-banner--pending { flex-direction: column; align-items: stretch; gap: 4px; padding: 8px 12px 10px; border-color: color-mix(in srgb, #f3a5b6 25%, transparent); border-left-color: #f3a5b6; background: linear-gradient(135deg, color-mix(in srgb, #f3a5b6 4%, transparent), color-mix(in srgb, #d3869b 2%, transparent)); box-shadow: 0 0 12px color-mix(in srgb, #f3a5b6 6%, transparent); } .reco-banner__gb { font-size: var(--text-2xs); color: var(--chrome-fg-dim); } .reco-banner__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .reco-banner__title { font-weight: 600; font-size: 0.76rem; color: var(--chrome-fg); } .reco-banner__btns { display: flex; gap: 4px; flex-shrink: 0; } .reco-banner__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 16px; font-size: 0.68rem; line-height: 1.6; } .reco-banner__model { display: inline-flex; align-items: center; gap: 4px; color: var(--chrome-fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .reco-banner__model--ok { color: var(--chrome-fg); } .reco-banner__model-size { font-family: var(--chrome-font-mono); font-size: 0.6rem; color: var(--chrome-fg-dim); } .reco-banner__req { font-size: 0.54rem; text-transform: uppercase; letter-spacing: 0.04em; color: #d3869b; padding: 0 3px; border: 1px solid color-mix(in srgb, #d3869b 30%, transparent); border-radius: 999px; line-height: 1.5; } /* Table — dense rows, fixed-width action column. */ .models-table { border-radius: 8px; } .models-table .ui-table-header { padding: 5px var(--space-3); } .models-table__body { max-height: 560px; overflow-y: auto; position: relative; } .models-table__header { align-items: center; } .models-table__sort { border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; min-width: 0; } .models-table__sort:hover { color: var(--chrome-fg); } .models-table__sort:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--chrome-radius-pill); } .models-table__sort--off { border: 0; background: transparent; color: inherit; font: inherit; cursor: default; display: inline-flex; align-items: center; } .models-table__sortmark { color: var(--chrome-accent); font-family: var(--chrome-font-mono); font-size: var(--text-2xs); } .models-table__virtual { position: relative; width: 100%; } .models-table__empty { padding: 18px var(--space-4); color: var(--chrome-fg-dim); font-size: var(--text-sm); font-family: var(--font-sans); } /* Inside the wizard embed the table stretches to fill — no fixed cap. */ .setup-wizard__embed .settings-section--compact { display: flex; flex-direction: column; height: 100%; min-height: 0; } .setup-wizard__embed .models-table { flex: 1 1 0; display: flex; flex-direction: column; min-height: 0; } .setup-wizard__embed .models-table__body { max-height: none; flex: 1 1 0; min-height: 0; } .models-row { display: flex; align-items: center; gap: var(--space-2); position: absolute; left: 0; right: 0; top: 0; width: 100%; padding: 10px var(--space-3); border-bottom: 1px solid var(--chrome-border); font-family: var(--font-sans); font-size: var(--text-sm); color: var(--chrome-fg); border-left: 2px solid transparent; } .models-row:last-child { border-bottom: none; } .models-row.is-ok { border-left-color: var(--chrome-severity-ok); } .models-row.is-off { border-left-color: var(--chrome-border-strong); opacity: 0.92; } .models-row.is-unsupported { opacity: 0.4; pointer-events: none; } .models-row.is-unsupported .models-row__actions { pointer-events: auto; } .models-row:hover { background: var(--chrome-hover-bg); } .models-row__cell { min-width: 0; } .models-row__name { display: flex; flex-direction: column; gap: 3px; overflow: hidden; } .models-row__title { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--chrome-fg); font-weight: 500; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .models-row__avatar { flex-shrink: 0; width: 22px; height: 22px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; font-size: 0.54rem; font-weight: 700; color: rgba(255, 255, 255, 0.75); letter-spacing: 0.02em; } .models-row__repo { color: var(--chrome-fg-muted); font-size: var(--text-xs); font-family: var(--chrome-font-mono); line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .models-row__repo code{ color: var(--chrome-fg-muted); } .models-row__note { color: var(--chrome-fg-dim); } .models-row__hint { display: flex; align-items: center; gap: 4px; color: var(--chrome-fg-dim); font-size: var(--text-2xs, 0.62rem); font-family: var(--chrome-font-mono); line-height: 1.4; margin-top: 1px; cursor: help; opacity: 0.7; transition: opacity 150ms ease; } .models-row:hover .models-row__hint { opacity: 1; } .models-row__role { color: var(--chrome-fg-muted); font-size: var(--text-xs); font-family: var(--chrome-font-mono); text-transform: uppercase; letter-spacing: 0.03em; } .models-row__progress { color: var(--chrome-accent); font-size: var(--text-xs); font-family: var(--chrome-font-mono); margin-top: 2px; } .models-row__progressline { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; } .models-row__progresstext { color: var(--chrome-fg-muted); font-size: var(--text-xs); font-family: var(--chrome-font-mono); font-variant-numeric: tabular-nums; line-height: 1.4; } .models-row__size-live { font-family: var(--chrome-font-mono); font-variant-numeric: tabular-nums; font-size: var(--text-2xs); color: var(--chrome-accent, #fe8019); } .models-row__size-sep { color: var(--chrome-fg-dim); margin: 0 1px; } .models-row__error { color: var(--chrome-danger, #fb4934); font-size: var(--text-xs); margin-top: 4px; } .models-controls { display: flex; align-items: center; gap: var(--space-2); margin: var(--space-2) 0; } .models-search { flex: 1; min-width: 120px; background: var(--chrome-bg-2, #1d1d1d); border: 1px solid var(--chrome-border, #2a2a2a); border-radius: var(--radius-sm, 6px); color: var(--chrome-fg); padding: 6px 10px; font-size: var(--text-xs); } .models-search:focus { outline: none; border-color: var(--chrome-accent, #fabd2f); } .models-row__size { font-family: var(--chrome-font-mono); font-size: var(--text-xs); color: var(--chrome-fg-muted); font-variant-numeric: tabular-nums; } .models-row__actions { justify-content: flex-end; display: inline-flex; gap: 4px; opacity: 0.55; transition: opacity var(--dur-fast, 120ms) ease; } .models-row:hover .models-row__actions { opacity: 1; } /* ── Responsive: narrow windows stack row cells ─────────────── */ @media (max-width: 580px) { .models-row { flex-wrap: wrap; gap: var(--space-3); } .models-row__name { flex: 1 1 100%; } .models-row__size { width: auto !important; text-align: left !important; } .models-row__actions { margin-left: auto; } .models-toolbar { flex-direction: column; align-items: flex-start; } .models-controls { flex-direction: column; align-items: stretch; } } /* ── Engines tab: rows are NOT virtualised, so override the absolute positioning that .models-row inherits from the Models tab. ───── */ .settings-section--compact > .models-table > .models-table__body > .models-row { position: relative; top: auto; } /* ── Credentials tab ────────────────────────────────────────── */ .settings-credential { margin-bottom: var(--space-5); padding-bottom: var(--space-5); border-bottom: 1px solid var(--chrome-border); } .settings-credential:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .settings-credential__header { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-2); } .settings-credential__label { font-size: var(--text-sm); font-weight: 600; color: var(--chrome-fg); font-family: var(--font-sans); } .settings-credential__row { display: flex; gap: var(--space-2); align-items: center; } .settings-credential__input { flex: 1; max-width: 380px; background: var(--chrome-bg-2, #1d1d1d); border: 1px solid var(--chrome-border); border-radius: var(--radius-sm, 6px); color: var(--chrome-fg); font-size: var(--text-sm); font-family: var(--chrome-font-mono); padding: 6px 10px; } .settings-credential__input:focus { outline: none; border-color: var(--chrome-accent, #fabd2f); } .settings-credential__help { margin: var(--space-2) 0 0; font-size: var(--text-xs); color: var(--chrome-fg-dim); font-family: var(--font-sans); line-height: 1.6; } .settings-credential__help a { color: var(--chrome-accent, #d3869b); text-decoration: none; } .settings-credential__help a:hover { text-decoration: underline; }