| 1 | .provider-connections { display: grid; grid-template-columns: minmax(180px, 250px) minmax(0, 1fr); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; } |
| 2 | .provider-connections[hidden], .provider-connections [hidden] { display: none !important; } |
| 3 | .provider-connections__nav { padding: 14px; border-right: 1px solid var(--border); display: flex; flex-direction: column; gap: 14px; min-width: 0; } |
| 4 | .provider-connections__nav > input { width: 100%; min-width: 0; flex: none; box-sizing: border-box; } |
| 5 | .provider-connections__list { max-height: 620px; overflow-y: auto; } |
| 6 | .provider-connections__brand { display: flex; align-items: center; gap: 8px; padding: 14px 6px 8px; } |
| 7 | .provider-connections__brand strong { flex: 1; overflow-wrap: anywhere; } |
| 8 | .provider-connections__item { display: flex; align-items: baseline; gap: 9px; width: 100%; border: 1px solid transparent; border-radius: 8px; padding: 10px 12px; color: inherit; background: transparent; text-align: left; font: inherit; cursor: pointer; } |
| 9 | .provider-connections__item strong { font-weight: 500; overflow-wrap: anywhere; } |
| 10 | .provider-connections__item small { display: block; color: var(--fg-faint); margin-top: 4px; } |
| 11 | .provider-connections__item:hover { background: var(--bg-soft); } |
| 12 | .provider-connections__item[aria-current="true"] { background: var(--bg-soft); border-color: var(--accent); } |
| 13 | .provider-connections__item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; } |
| 14 | .provider-connections__status { width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: var(--fg-faint); } |
| 15 | .provider-connections__status--ready { background: var(--success, #23965a); } |
| 16 | .provider-connections__detail { min-width: 0; padding: 20px; } |
| 17 | .provider-connections .provider-access-card--detail { border: 0; box-shadow: none; padding: 0; display: flex; flex-direction: column; } |
| 18 | .provider-access-card--detail > .provider-editor { order: 1; } |
| 19 | .provider-access-card--detail > :not(.provider-access-card__head):not(.provider-access-card__desc):not(.provider-editor) { order: 2; } |
| 20 | .provider-connections .provider-connections__back { display: none; } |
| 21 | @media (max-width: 760px) { |
| 22 | .provider-connections { grid-template-columns: minmax(0, 1fr); } |
| 23 | .provider-connections__nav { border-right: 0; } |
| 24 | .provider-connections__detail { display: none; padding: 12px; } |
| 25 | .provider-connections--detail > .provider-connections__nav { display: none; } |
| 26 | .provider-connections--detail > .provider-connections__detail { display: block; } |
| 27 | .provider-connections .provider-connections__back { display: inline-flex; margin-bottom: 16px; } |
| 28 | } |
| 29 | |
| 30 | .provider-connections .provider-editor { border: 0; padding-inline: 0; box-shadow: none; } |
| 31 | .connection-title { display: inline-flex; align-items: center; gap: 8px; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; overflow-wrap: anywhere; } |
| 32 | .connection-title:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; } |
| 33 | .connection-title svg { flex-shrink: 0; color: var(--fg-faint); } |
| 34 | .connection-title-editor { min-width: 0; max-width: 100%; } |
| 35 | .connection-title-editor__row { display: flex; align-items: center; gap: 6px; } |
| 36 | .connection-title-editor__row .mem-input { width: 220px; min-width: 0; } |
| 37 | .connection-title-editor small { display: block; font-size: 12px; font-weight: normal; } |
| 38 | .provider-model-draft--inline .provider-model-draft__list { display: flex; flex-direction: column; } |
| 39 | .provider-model-draft--inline .provider-model-draft__option { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 10px; } |
| 40 | .provider-model-draft--inline .provider-model-draft__model { flex: 1; min-width: 150px; } |
| 41 | .provider-key-compact__head { display: flex; align-items: center; gap: 8px; } |
| 42 | .provider-key-compact__head > strong, .provider-model-toolbar > strong { margin-right: auto; } |
| 43 | .provider-key-compact__more { position: relative; } |
| 44 | |
| 45 | .provider-key-compact__menu { position: absolute; right: 0; top: 100%; width: min(300px, 70vw); padding: 12px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 8px; z-index: var(--z-popover); } |
| 46 | |
| 47 | .btn.provider-icon-action { min-width: 36px; min-height: 36px; padding: 6px; border: 0; background: transparent; list-style: none; } |
| 48 | .provider-icon-action::-webkit-details-marker { display: none; } |
| 49 | |
| 50 | /* Compact editor: one aligned form and one flat model list. */ |
| 51 | |
| 52 | .provider-editor.provider-editor--compact { gap: 20px; background: var(--bg-elev); border: 0; box-shadow: none; padding: 0; font-size: 14px; } |
| 53 | .provider-connection-fields { display: flex; flex-direction: column; gap: 16px; padding: 12px 0 24px; border-bottom: 1px solid var(--border); } |
| 54 | .provider-connection-fields h3 { margin: 0 0 4px; font-size: var(--font-control); } |
| 55 | .provider-connection-field { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 8px; } |
| 56 | .provider-connection-field > .set-label { margin: 0; } |
| 57 | .provider-connection-field > .mem-input, .provider-connection-field > .mem-select { width: 100%; min-height: 40px; margin: 0; background: var(--bg-elev); border-radius: 8px; } |
| 58 | .provider-field-help { grid-column: 1; color: var(--fg-faint); font-size: var(--font-control-small); } |
| 59 | .provider-key-compact__head > strong { flex: 0 0 130px; margin-right: 8px; font-weight: 500; } |
| 60 | .provider-key-placeholder { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px; color: var(--fg-faint); } |
| 61 | .provider-key-compact .set-key { margin-top: 12px; } |
| 62 | .provider-key-compact__menu { display: flex; flex-direction: column; gap: 8px; box-sizing: border-box; } |
| 63 | .provider-editor--compact .provider-model-draft--inline { border: 0; padding: 0; gap: 16px; } |
| 64 | .provider-model-draft--inline .provider-model-toolbar { justify-content: flex-start; gap: 12px; } |
| 65 | .provider-model-draft--inline .provider-model-toolbar > strong { margin: 0; } |
| 66 | .provider-model-draft--inline .provider-model-draft__tools { margin-left: auto; } |
| 67 | .provider-model-draft--inline .provider-model-draft__list { gap: 0; padding: 0; max-height: 360px; border: 1px solid var(--border); border-radius: 8px; } |
| 68 | .provider-model-draft--inline .provider-model-draft__option { flex-wrap: nowrap; min-height: 56px; box-sizing: border-box; padding: 8px 12px; border: 0; border-bottom: 1px solid var(--border); border-radius: 0; background: transparent; font-family: var(--font-sans); font-size: var(--font-control); } |
| 69 | .provider-model-draft--inline .provider-model-draft__option:last-child { border-bottom: 0; } |
| 70 | .provider-model-draft--inline .provider-model-draft__model { min-width: 0; gap: 12px; } |
| 71 | .provider-model-draft--inline input[type="checkbox"] { accent-color: var(--accent); width: 16px; height: 16px; } |
| 72 | .provider-context-badge { flex-shrink: 0; padding: 4px 8px; border: 1px solid var(--border); border-radius: 6px; color: var(--fg-faint); font-size: var(--font-control-small); } |
| 73 | .provider-editor--compact .provider-capabilities { padding: 0; } |
| 74 | .provider-editor--compact .provider-capabilities > .provider-card-block__label { display: none; } |
| 75 | .provider-editor--compact .provider-capability-row { margin: 0; border: 0; padding: 16px 0; } |
| 76 | .provider-editor--compact .provider-editor-advanced { border: 0; border-top: 1px solid var(--border); border-radius: 0; background: transparent; } |
| 77 | .provider-editor-footer { flex: none; padding: 16px 0; background: var(--bg-elev); border-top: 1px solid var(--border); } |
| 78 | .provider-editor-footer > span { margin-right: auto; color: var(--fg-faint); font-size: var(--font-control-small); } |
| 79 | @media (max-width: 900px) { |
| 80 | .provider-connection-field { grid-template-columns: minmax(0, 1fr); } |
| 81 | .provider-field-help { grid-column: 1; } |
| 82 | .provider-key-compact__head { flex-wrap: wrap; } |
| 83 | .provider-key-compact__head > strong { flex-basis: 100%; } |
| 84 | .provider-model-draft--inline .provider-model-toolbar { flex-wrap: wrap; } |
| 85 | |
| 86 | } |
| 87 | |
| 88 | .provider-editor--compact .set-label, .provider-editor--compact .mem-input, .provider-editor--compact .mem-select { font-size: 14px; } |
| 89 | .provider-editor--compact .set-label { font-weight: 500; } |
| 90 | .provider-editor--compact h3, .provider-editor--compact .provider-model-toolbar > strong { font-size: 16px; } |
| 91 | .provider-editor--compact .provider-model-draft__option { font-size: 14px; } |
| 92 | .provider-editor--compact .provider-editor-advanced__hint { display: none; } |
| 93 | |
| 94 | .provider-connection-field > .mem-select { max-width: none; } |
| 95 | .provider-editor-footer .btn { min-height: 36px; padding-inline: 18px; font-size: 14px; } |
| 96 | |
| 97 | .provider-model-dialog { width: min(900px, calc(100vw - 32px)); max-height: calc(100vh - 40px); box-sizing: border-box; padding: 28px 32px 24px; border: 1px solid var(--border); border-radius: 16px; background: var(--bg-elev); color: var(--fg); font: 14px var(--font-sans); } |
| 98 | .provider-model-dialog::backdrop { background: #0008; } |
| 99 | .provider-model-dialog header, .provider-model-dialog footer { display: flex; align-items: center; gap: 12px; } |
| 100 | .provider-model-dialog h2 { flex: 1; margin: 0; font-size: 21px; } |
| 101 | .provider-model-dialog h3 { margin: 0 0 16px; font-size: 16px; } |
| 102 | .provider-model-dialog__id { display: grid; gap: 12px; margin: 24px 0; } |
| 103 | .provider-model-dialog__id > span { display: flex; align-items: center; gap: 10px; overflow-wrap: anywhere; } |
| 104 | .provider-model-dialog__columns { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(280px, .95fr); gap: 32px; padding: 22px 0 24px; border-block: 1px solid var(--border); } |
| 105 | .provider-model-dialog__columns aside { border-left: 0; border-radius: 12px; background: color-mix(in srgb, var(--bg) 62%, transparent); padding: 18px 20px; } |
| 106 | .provider-model-dialog section label { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; } |
| 107 | .provider-model-dialog .mem-input, .provider-model-dialog .mem-select { width: 100%; box-sizing: border-box; font-size: 14px; min-height: 40px; } |
| 108 | .provider-model-dialog section label .mem-input { grid-column: 1 / -1; } |
| 109 | .provider-model-dialog p, .provider-model-dialog small { color: var(--fg-faint); line-height: 1.5; } |
| 110 | .provider-model-dialog p { margin: 7px 0 16px; font-size: 12px; } |
| 111 | .provider-model-dialog details { margin-top: 24px; } |
| 112 | .provider-model-dialog summary { cursor: pointer; margin-bottom: 12px; } |
| 113 | .provider-model-dialog dl { margin: 0; } |
| 114 | .provider-model-dialog dl > div { display: grid; grid-template-columns: 44px 1fr; gap: 12px; border-bottom: 1px solid var(--border); padding: 18px 0; } |
| 115 | .provider-model-dialog dd { margin: 0; overflow-wrap: anywhere; } |
| 116 | .provider-model-dialog footer { padding-top: 24px; } |
| 117 | .provider-model-dialog footer small { margin-right: auto; } |
| 118 | .provider-model-dialog [role="alert"] { color: var(--danger); } |
| 119 | @media (max-width: 600px) { |
| 120 | .provider-model-dialog { padding: 18px; } |
| 121 | .provider-model-dialog__columns { grid-template-columns: 1fr; gap: 20px; } |
| 122 | .provider-model-dialog__columns aside { padding-left: 0; border-left: 0; } |
| 123 | .provider-model-dialog footer { flex-wrap: wrap; } |
| 124 | } |
| 125 | .provider-model-dialog__capability-title { margin: 18px 0 10px; color: var(--fg-faint); } |
| 126 | .provider-model-dialog__chips { display: flex; flex-wrap: wrap; gap: 8px; } |
| 127 | .provider-model-dialog__chips label { display: inline-flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; } |
| 128 | .provider-model-dialog__chips input { accent-color: var(--accent); margin: 0; } |
| 129 | .provider-model-dialog__chips label:has(input:disabled:not(:checked)) { color: var(--fg-faint); } |
| 130 | .provider-model-dialog__effort-card { margin-top: 18px; padding: 16px; border: 1px solid var(--border); border-radius: 12px; background: color-mix(in srgb, var(--bg) 48%, transparent); } |
| 131 | .provider-model-dialog__effort-card > label { margin-bottom: 9px; } |
| 132 | .provider-model-dialog__effort-card .provider-model-dialog__chips { margin-bottom: 14px; } |
| 133 | .provider-model-dialog__effort-card .provider-model-dialog__chips label { padding: 7px 9px; background: var(--bg-elev); } |
| 134 | .provider-model-dialog__effort-card > p { margin-bottom: 0; } |
| 135 | |
| 136 | .provider-model-dialog .mem-input, .provider-model-dialog .mem-select { background: var(--bg-elev); } |
| 137 | |
| 138 | /* One viewport owner; navigation and editor body scroll independently. */ |
| 139 | .settings-center__content:has(.provider-connections:not([hidden])):not(:has(.model-access-page[hidden])) { display: flex; flex-direction: column; overflow: hidden; } |
| 140 | .settings-page:has(.provider-connections:not([hidden])):not(:has(.model-access-page[hidden])), |
| 141 | .settings-section:has(.provider-connections:not([hidden])), |
| 142 | .settings-section__body:has(.provider-connections:not([hidden])), |
| 143 | .provider-access-grid:has(.provider-connections:not([hidden])) { display: flex; flex-direction: column; flex: 1; min-height: 0; } |
| 144 | .settings-page:has(.provider-connections:not([hidden])):not(:has(.model-access-page[hidden])) > .settings-page__header, |
| 145 | .settings-page:has(.provider-connections:not([hidden])):not(:has(.model-access-page[hidden])) > .settings-subtabs, |
| 146 | .settings-section:has(.provider-connections:not([hidden])) > .settings-section__head { flex: none; } |
| 147 | .provider-connections { flex: 1; min-height: 0; } |
| 148 | .provider-connections__nav { min-height: 0; } |
| 149 | .provider-connections__nav > .btn { flex: none; } |
| 150 | .provider-connections__list { flex: 1; min-height: 0; max-height: none; overscroll-behavior-y: contain; } |
| 151 | .provider-connections__detail { display: flex; flex-direction: column; min-height: 0; } |
| 152 | .provider-connections__detail > div:not([hidden]) { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior-y: contain; } |
| 153 | .provider-connections__detail > div:has(> .provider-access-card > .provider-editor) { overflow: hidden; } |
| 154 | .provider-connections .provider-access-card--detail { flex: 1; min-height: 0; gap: 12px; } |
| 155 | .provider-access-card--detail > .provider-access-card__head, |
| 156 | .provider-access-card--detail > .provider-access-card__desc { flex: none; } |
| 157 | .provider-connections .provider-editor { flex: 1; min-height: 0; gap: 0; } |
| 158 | .provider-editor__body { display: flex; flex-direction: column; gap: 16px; min-width: 0; } |
| 159 | .provider-connections .provider-editor__body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; padding-right: 8px; } |
| 160 | .provider-editor--compact .provider-model-draft__list { max-height: none; overflow: visible; } |
| 161 | .provider-editor--compact .provider-connection-fields { gap: 20px; padding-block: 8px 20px; } |
| 162 | .provider-editor-footer { padding-block: 12px; } |
| 163 | @media (max-width: 760px) { |
| 164 | .provider-connections__detail { display: none; } |
| 165 | .provider-connections--detail > .provider-connections__detail { display: flex; } |
| 166 | .provider-connections__back { flex: none; } |
| 167 | } |
| 168 | |
| 169 | .model-access-page { display: flex; flex-direction: column; flex: 1; min-height: 0; } |
| 170 | .model-access-page[hidden] { display: none; } |
| 171 | |
| 172 | .provider-editor__body > * { flex-shrink: 0; } |
| 173 | |
| 174 | .provider-connections__item--flat { align-items: center; gap: 12px; min-height: 52px; } |
| 175 | .provider-connections__item--flat strong { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } |
| 176 | .provider-connections__item--flat .provider-catalog__icon, .provider-connections__item--flat .provider-catalog__monogram { width: 24px; height: 24px; flex: 0 0 24px; } |
| 177 | |
| 178 | .provider-key-single { display: flex; flex-direction: column; gap: 8px; } |
| 179 | .provider-key-single > label { font-weight: 500; color: var(--fg-dim); } |
| 180 | .provider-key-single__input { position: relative; } |
| 181 | .provider-key-single__input .mem-input { width: 100%; box-sizing: border-box; padding-right: 48px; } |
| 182 | .provider-key-single__input > button { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); border: 0; background: transparent; } |
| 183 | |
| 184 | .provider-connection-fields .set-label, |
| 185 | .provider-connection-fields .provider-key-single > label { |
| 186 | color: var(--fg-dim); |
| 187 | font-size: 14px; |
| 188 | font-weight: 500; |
| 189 | line-height: 1.4; |
| 190 | } |
| 191 | .provider-connection-fields .mem-input, |
| 192 | .provider-connection-fields .mem-select { |
| 193 | min-height: 42px; |
| 194 | box-sizing: border-box; |
| 195 | border-radius: 8px; |
| 196 | background: var(--bg-elev); |
| 197 | } |
| 198 | |
| 199 | /* Model services is a workspace, without duplicate page/card chrome. */ |
| 200 | :root .settings-center__content:has(.model-access-page:not([hidden])) { |
| 201 | padding: 0; |
| 202 | } |
| 203 | :root .settings-page:has(.model-access-page:not([hidden])) { |
| 204 | max-width: none; |
| 205 | margin: 0; |
| 206 | padding: 0; |
| 207 | gap: 0; |
| 208 | } |
| 209 | :root .settings-page:has(.model-access-page:not([hidden])) > .settings-page__header { |
| 210 | display: none; |
| 211 | } |
| 212 | :root .model-access-page > .settings-section { |
| 213 | margin: 0; |
| 214 | padding: 0; |
| 215 | border: 0; |
| 216 | border-radius: 0; |
| 217 | box-shadow: none; |
| 218 | background: transparent; |
| 219 | gap: 0; |
| 220 | } |
| 221 | :root .model-access-page > .settings-section > .settings-section__head { |
| 222 | display: none; |
| 223 | } |
| 224 | :root .model-access-page .settings-section__body { |
| 225 | padding: 0; |
| 226 | gap: 0; |
| 227 | } |
| 228 | :root .model-access-page .provider-connections { |
| 229 | border: 0; |
| 230 | border-radius: 0; |
| 231 | } |
| 232 | |
| 233 | /* Size the connection workspace from the panel, never from its form content. */ |
| 234 | .settings-center:has(.model-access-page:not([hidden]) .provider-connections:not([hidden])) { |
| 235 | grid-template-rows: minmax(0, 1fr); |
| 236 | } |
| 237 | .settings-center__content:has(.model-access-page:not([hidden]) .provider-connections:not([hidden])) { |
| 238 | min-height: 0; |
| 239 | } |
| 240 | .provider-connections { |
| 241 | grid-template-rows: minmax(0, 1fr); |
| 242 | } |
| 243 | .provider-connections__nav { |
| 244 | display: grid; |
| 245 | grid-template-rows: auto minmax(0, 1fr) auto; |
| 246 | overflow: hidden; |
| 247 | } |
| 248 | .provider-connections__list { |
| 249 | overflow-y: auto; |
| 250 | scrollbar-gutter: stable; |
| 251 | } |
| 252 | |
| 253 | /* The real SettingsPanel has a content wrapper between main and the page. |
| 254 | It must participate in the height chain, or long forms expand both columns. */ |
| 255 | .settings-page-content:has(.model-access-page:not([hidden]) .provider-connections:not([hidden])) { |
| 256 | display: flex; |
| 257 | flex-direction: column; |
| 258 | flex: 1; |
| 259 | min-height: 0; |
| 260 | overflow: hidden; |
| 261 | } |
| 262 | .settings-page-content:has(.model-access-page:not([hidden]) .provider-connections:not([hidden])) > .banner { |
| 263 | flex-shrink: 0; |
| 264 | } |
| 265 |