/* A framed text area (IDEA text field frame), with the pickers in its bottom row. */ .composer { container: agent-composer / inline-size; min-width: 0; position: relative; display: flex; flex-direction: column; border-radius: var(--radius-popup); background: var(--bg-field, var(--bg-button)); box-shadow: inset 0 0 0 1px var(--border-button); cursor: text; transition: box-shadow var(--dur-fast) var(--ease); } .composer:focus-within { box-shadow: inset 0 0 0 1px var(--focus-ring), 0 0 0 1px var(--focus-ring); } .textarea { display: block; width: 100%; min-height: 44px; resize: none; border: 0; outline: none; background: transparent; color: var(--fg-strong); font: inherit; font-size: var(--fs-ui); line-height: 1.5; padding: 10px 12px 2px; -webkit-user-select: text; user-select: text; } .textarea:focus-visible { outline: none; } .textarea::placeholder { color: var(--fg-faint); } .bar { display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: 4px 6px 6px; cursor: default; } .toolbar { display: flex; flex: 1; flex-wrap: wrap; align-items: center; min-width: 0; gap: 2px; } .actions { display: flex; flex: none; align-items: center; gap: 2px; margin-left: auto; } .spacer { flex: 1; } .configPicker { display: flex; min-width: 0; } .configPicker > button { max-width: 100%; } .settingsMenu { display: none; } .settingsPopup { width: min(320px, calc(100vw - 24px)); padding: 12px; } .settingsTitle { margin-bottom: 12px; font-weight: 600; } .settingsRow { display: grid; grid-template-columns: minmax(0, 80px) minmax(0, 1fr); align-items: center; gap: 12px; margin-top: 8px; } .settingsLabel { min-width: 0; color: var(--fg-muted); overflow-wrap: anywhere; } @container agent-composer (max-width: 600px) { .bar { flex-direction: column; align-items: stretch; gap: 6px; } .toolbar { flex-wrap: nowrap; } .toolbar > button, .toolbar > .configPicker { flex: 0 1 auto; min-width: 0; max-width: calc((100% - 28px) / 2); } .configPicker > button { width: 100%; } .inlineSetting { display: none; } .settingsMenu { display: flex; flex: none; margin-left: auto; } .actions { width: 100%; margin-left: 0; } } .pickerValue { display: inline-flex; align-items: baseline; gap: 5px; white-space: nowrap; } .pickerName { color: var(--fg-subtle); } .images { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 10px 0; cursor: default; } .image { position: relative; width: 44px; height: 44px; border-radius: var(--radius-small); box-shadow: inset 0 0 0 1px var(--border); overflow: hidden; } .previewImage { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; } .image img { width: 100%; height: 100%; object-fit: cover; } .removeImage { position: absolute; top: 2px; right: 2px; display: grid; place-items: center; width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; background: var(--bg-popup); color: var(--fg); cursor: pointer; opacity: 0; } .image:hover .removeImage, .removeImage:focus-visible { opacity: 1; } /* `@` / `/` completion; Popup keeps the list within the viewport. */ .caretMirror { position: fixed; top: 0; left: 0; box-sizing: border-box; visibility: hidden; pointer-events: none; white-space: pre-wrap; overflow-wrap: break-word; } .popup { width: min(560px, calc(100vw - 12px)); border-radius: var(--radius-popup); cursor: default; } .items { max-height: 300px; overflow: auto; padding: 4px 0; } .item { display: flex; align-items: center; gap: 6px; height: var(--h-row); margin: 0 4px; padding: 0 8px; border-radius: var(--radius-row); white-space: nowrap; } .active { background: var(--bg-list-selected); } .itemName { flex: none; color: var(--fg-strong); } .itemHint { flex: none; color: var(--fg-muted); font-style: italic; } .itemDetail { flex: 1 1 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; color: var(--fg-subtle); }