286 lines
24 KiB
CSS
286 lines
24 KiB
CSS
:root {
|
|
--ink: #e6edf4;
|
|
--muted: #8494a4;
|
|
--faint: #5d6e7f;
|
|
--base: #0b1119;
|
|
--panel: #111b27;
|
|
--panel-raised: #172331;
|
|
--panel-soft: #0f1925;
|
|
--line: #263544;
|
|
--line-strong: #34485c;
|
|
--lime: #c5ef91;
|
|
--lime-ink: #142014;
|
|
--blue: #8fc7ef;
|
|
--yellow: #d8b86c;
|
|
--good: #8ed7ad;
|
|
--bad: #ee9292;
|
|
--radius: 8px;
|
|
--sans: "Manrope", "Segoe UI", sans-serif;
|
|
--mono: "DM Mono", "Cascadia Mono", Consolas, monospace;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
[hidden] { display: none !important; }
|
|
body { margin: 0; min-width: 320px; min-height: 100vh; color: var(--ink); background: var(--base); font-family: var(--sans); }
|
|
button, input, textarea { font: inherit; }
|
|
button { cursor: pointer; color: inherit; border-radius: var(--radius); }
|
|
a { color: inherit; }
|
|
.chat-shell { min-height: 100vh; display: grid; }
|
|
.login-panel { width: min(100% - 32px, 420px); margin: auto; padding: 40px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); box-shadow: 0 24px 80px rgba(0,0,0,.28); }
|
|
.brand-mark { width: 42px; height: 42px; display: grid; place-items: center; color: var(--lime-ink); background: var(--lime); border-radius: 10px; font: 700 22px/1 var(--sans); }
|
|
h1, h2 { margin: 0; letter-spacing: -.03em; }
|
|
.login-panel h1 { margin: 26px 0; font-size: 42px; font-weight: 650; }
|
|
label { display: block; margin: 16px 0 8px; color: var(--muted); font: 600 10px/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; }
|
|
input, textarea { width: 100%; border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink); background: var(--panel-soft); outline: none; }
|
|
input:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(143,199,239,.12); }
|
|
input { height: 46px; padding: 0 12px; }
|
|
textarea { resize: vertical; min-height: 84px; max-height: 240px; padding: 13px; line-height: 1.45; }
|
|
.login-form button, .composer button { border: 0; color: var(--lime-ink); background: var(--lime); font-weight: 750; }
|
|
.login-form button { width: 100%; height: 46px; margin-top: 18px; }
|
|
#login-error { min-height: 20px; color: var(--bad); font-size: 13px; }
|
|
.chat-view { width: 100%; min-width: 0; height: 100vh; min-height: 0; display: grid; grid-template-rows: 60px minmax(0, 1fr); overflow: hidden; }
|
|
.chat-header { min-width: 0; display: flex; align-items: center; gap: 14px; padding: 0 20px; border-bottom: 1px solid var(--line); background: rgba(17,27,39,.97); }
|
|
.chat-header > a:first-child { color: var(--ink); text-decoration: none; font-size: 18px; font-weight: 750; letter-spacing: -.02em; }
|
|
.cognitive-status { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
|
|
.chat-header .cognitive-status { width: auto; height: auto; max-width: min(30vw, 340px); margin-left: auto; padding: 0; overflow: hidden; border: 0; background: transparent; color: var(--muted); font: 10px/1 var(--mono); letter-spacing: .04em; text-overflow: ellipsis; text-transform: uppercase; }
|
|
.cognitive-status::before { content: ""; width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%; background: var(--yellow); }
|
|
.cognitive-status[data-state="available"] { color: var(--good); }
|
|
.cognitive-status[data-state="available"]::before { background: var(--good); }
|
|
.cognitive-status[data-state="unavailable"] { color: var(--bad); }
|
|
.cognitive-status[data-state="unavailable"]::before { background: var(--bad); }
|
|
.cognitive-console-link { color: var(--blue); font: 10px/1 var(--mono); letter-spacing: .04em; white-space: nowrap; }
|
|
.build-meta { display: grid; gap: 3px; flex: 0 0 auto; color: var(--muted); font: 9px/1 var(--mono); letter-spacing: .04em; text-align: right; text-transform: uppercase; white-space: nowrap; }
|
|
.build-meta time { color: var(--faint); font-size: 8px; }
|
|
.chat-header button { width: 34px; height: 34px; border: 1px solid var(--line); background: transparent; }
|
|
.operator-link { height: 32px; padding: 0 11px; display: inline-flex; align-items: center; border: 1px solid var(--line); color: var(--blue); background: transparent; text-decoration: none; font: 10px/1 var(--mono); letter-spacing: .04em; text-transform: uppercase; }
|
|
.chat-layout { min-height: 0; height: 100%; display: grid; grid-template-columns: minmax(220px, 258px) minmax(0, 1fr) minmax(270px, 320px); }
|
|
.chat-side { min-width: 0; min-height: 0; padding: 22px 18px; overflow-y: auto; background: var(--panel); scrollbar-color: var(--line-strong) transparent; }
|
|
.chat-left { border-right: 1px solid var(--line); }
|
|
.chat-right { border-left: 1px solid var(--line); }
|
|
.side-intro h1, .side-intro h2 { margin: 9px 0 10px; font-size: clamp(25px, 2.4vw, 34px); line-height: 1.05; font-weight: 680; }
|
|
.side-intro p:not(.side-index) { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
|
|
.side-index, .section-label, .ai-info-card span, .insight-card span { color: var(--faint); font: 600 9px/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; }
|
|
.side-section, .side-note, .ai-info-card { margin-top: 20px; padding: 13px 0; border-top: 1px solid var(--line); }
|
|
.side-focus strong, .side-note strong { display: block; margin-top: 8px; color: var(--blue); font-size: 13px; font-weight: 650; line-height: 1.35; }
|
|
.side-note { border-bottom: 0; }
|
|
.side-note strong { color: var(--good); }
|
|
.side-note small, .ai-info-card p, .ai-data-form small { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; line-height: 1.45; }
|
|
.context-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
|
|
.context-list span { padding: 5px 8px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); font-size: 11px; }
|
|
.quick-context { padding-bottom: 3px; }
|
|
.human-nav { display: grid; gap: 6px; margin-top: 8px; }
|
|
.nav-tab { width: 100%; min-height: 50px; padding: 8px 10px; display: grid; grid-template-columns: 26px 1fr; gap: 2px 7px; align-items: center; border: 1px solid transparent; color: var(--muted); background: transparent; text-align: left; }
|
|
.chat-left .nav-tab b { grid-row: span 2; color: var(--faint); font: 10px/1 var(--mono); }
|
|
.chat-left .nav-tab span { color: var(--ink); font-size: 12px; font-weight: 650; }
|
|
.chat-left .nav-tab small { color: var(--faint); font: 10px/1 var(--mono); }
|
|
.nav-tab:hover, .nav-tab:focus-visible { border-color: var(--line-strong); outline: none; }
|
|
.nav-tab.active { border-color: rgba(197,239,145,.42); background: rgba(197,239,145,.1); }
|
|
.nav-tab.active b { color: var(--lime); }
|
|
.quiet-state { margin: 9px 0 0; color: var(--faint); font-size: 11px; }
|
|
.new-conversation { width: 100%; min-height: 34px; margin-top: 9px; border: 1px solid var(--line-strong); color: var(--ink); background: transparent; font-size: 11px; }
|
|
.new-conversation:hover, .new-conversation:focus-visible { border-color: var(--lime); color: var(--lime); outline: none; }
|
|
.side-build { margin-top: 14px; padding-top: 14px; text-align: left; }
|
|
.chat-main { min-width: 0; min-height: 0; overflow: hidden; display: grid; background: var(--base); }
|
|
.surface-panel { min-height: 0; position: relative; overflow-y: auto; }
|
|
.active-panel { display: grid; grid-template-rows: minmax(0, 1fr) auto auto; min-height: 0; }
|
|
.messages { width: min(100%, 900px); min-height: 0; margin: 0 auto; padding: clamp(24px, 5vh, 52px) 22px 20px; display: flex; flex-direction: column; gap: 10px; overflow-y: auto; scrollbar-color: var(--line-strong) transparent; }
|
|
.message { max-width: min(700px, 92%); padding: 11px 14px 12px; border: 1px solid var(--line); border-radius: 10px; line-height: 1.5; }
|
|
.message.user { align-self: flex-end; background: #162231; border-color: #30465b; }
|
|
.message.assistant { align-self: flex-start; background: #121d2a; }
|
|
.message-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 6px; }
|
|
.message-role { color: var(--blue); font: 650 9px/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
|
|
.message.user .message-role { color: var(--lime); }
|
|
.message-time { color: var(--faint); font: 9px/1 var(--mono); }
|
|
.message-content { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; }
|
|
.message small { display: block; margin-top: 8px; color: var(--faint); font: 9px/1.2 var(--mono); letter-spacing: .03em; text-transform: none; }
|
|
.composer { width: min(100%, 900px); margin: 0 auto; padding: 10px 22px 7px; display: grid; grid-template-columns: minmax(0, 1fr) 106px; gap: 9px; border-top: 1px solid var(--line); background: var(--base); }
|
|
.composer-input-wrap { min-width: 0; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--panel-soft); transition: border-color .15s ease, box-shadow .15s ease; }
|
|
.composer-input-wrap:focus-within { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(143,199,239,.1); }
|
|
.composer textarea { min-height: 46px; max-height: 200px; resize: none; border: 0; background: transparent; }
|
|
.composer-hint { display: flex; justify-content: space-between; gap: 12px; padding: 0 12px 7px; color: var(--faint); font: 9px/1 var(--mono); }
|
|
.composer-hint output { color: var(--muted); white-space: nowrap; }
|
|
.composer button { height: 46px; align-self: end; display: inline-flex; align-items: center; justify-content: space-between; gap: 7px; padding: 0 13px; }
|
|
.composer button[aria-busy="true"] { color: #384529; background: #a6ca7a; }
|
|
.composer button span:last-child { opacity: .65; font: 15px/1 var(--mono); }
|
|
.composer button:disabled { cursor: wait; filter: saturate(.35); }
|
|
.media-tools { width: min(100%, 900px); margin: 0 auto; padding: 0 22px 9px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--muted); font: 9px/1 var(--mono); letter-spacing: .03em; text-transform: uppercase; }
|
|
.media-tools label { display: inline-flex; align-items: center; gap: 5px; min-height: 28px; margin: 0; padding: 0 7px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); cursor: pointer; }
|
|
.media-tools input { max-width: 125px; font: 9px var(--mono); }
|
|
.media-tools span { color: var(--yellow); }
|
|
.insight-grid { display: grid; gap: 7px; margin-top: 19px; }
|
|
.insight-card { padding: 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
|
|
.insight-card strong { display: block; margin-top: 7px; color: var(--ink); font-size: 12px; font-weight: 650; line-height: 1.3; }
|
|
.insight-card small { display: block; margin-top: 5px; color: var(--faint); font-size: 10px; line-height: 1.35; }
|
|
.ai-info-card { padding-bottom: 0; }
|
|
.ai-info-card strong { display: block; margin-top: 8px; font-size: 12px; }
|
|
.ai-data-form { margin-top: 18px; }
|
|
.ai-data-form textarea { min-height: 126px; }
|
|
.ai-data-form button { width: 100%; min-height: 38px; margin-top: 9px; border: 1px solid rgba(197,239,145,.3); border-radius: 7px; color: var(--lime); background: rgba(197,239,145,.1); font-size: 11px; font-weight: 700; }
|
|
.ai-data-form button:hover { background: rgba(197,239,145,.16); }
|
|
.ai-data-error { margin: 9px 0 0; color: var(--bad); font-size: 11px; line-height: 1.4; }
|
|
.side-console-link { display: flex; justify-content: space-between; margin-top: 20px; padding-top: 13px; border-top: 1px solid var(--line); color: var(--blue) !important; font: 10px/1.3 var(--mono) !important; text-decoration: none; letter-spacing: .03em; text-transform: uppercase; }
|
|
.attention-surface, .history-surface { width: min(100%, 900px); margin: 0 auto; padding: 28px 22px; align-content: start; gap: 15px; }
|
|
.surface-heading { display: flex; align-items: end; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--line); padding-bottom: 13px; }
|
|
.surface-heading p { margin: 0; font-size: 27px; font-weight: 680; }
|
|
.surface-heading span, .attention-card small, .history-item span { color: var(--muted); font: 9px/1 var(--mono); text-transform: uppercase; letter-spacing: .08em; }
|
|
.surface-heading button { height: 31px; padding: 0 10px; border: 1px solid var(--line); background: transparent; font-size: 11px; }
|
|
.attention-list, .history-list { display: grid; gap: 9px; }
|
|
.attention-card, .history-item { border: 1px solid var(--line); border-radius: 8px; background: var(--panel); padding: 13px; }
|
|
.attention-card time { color: var(--yellow); font: 10px/1 var(--mono); }
|
|
.attention-card h2 { margin: 8px 0 6px; font-size: 18px; font-weight: 650; }
|
|
.attention-card p, .history-item p { margin: 0 0 8px; color: var(--ink); font-size: 12px; line-height: 1.5; }
|
|
.attention-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 11px; }
|
|
.attention-actions button { height: 30px; padding: 0 10px; border: 1px solid var(--line); background: var(--panel-raised); color: var(--ink); font: 10px/1 var(--mono); }
|
|
.attention-actions button:first-child { border-color: rgba(142,215,173,.5); color: var(--good); }
|
|
.history-item.user { border-color: #30465b; background: #162231; }
|
|
.history-item strong { display: block; margin-bottom: 6px; color: var(--blue); font-size: 12px; }
|
|
.empty-state { margin: 20px 0 0; color: var(--muted); font-size: 12px; }
|
|
.empty-state.error { color: var(--bad); }
|
|
@media (max-width: 780px) {
|
|
.chat-view { height: auto; min-height: 100vh; overflow: visible; display: block; }
|
|
.chat-header { position: sticky; top: 0; z-index: 3; min-height: 58px; padding: 0 12px; }
|
|
.chat-header .cognitive-status { flex: 1 1 100px; min-width: 0; max-width: 150px; }
|
|
.chat-header .cognitive-console-link, .chat-header > .operator-link, .chat-header .build-meta { display: none; }
|
|
.chat-header > #logout { flex: 0 0 34px; }
|
|
.chat-layout { height: auto; display: flex; flex-direction: column; }
|
|
.chat-main { order: 1; height: 72vh; min-height: 530px; }
|
|
.chat-side { min-height: auto; max-height: none; overflow: visible; }
|
|
.chat-left { order: 2; border: 0; border-top: 1px solid var(--line); }
|
|
.chat-right { order: 3; border: 0; border-top: 1px solid var(--line); }
|
|
.messages { padding-inline: 12px; }
|
|
.composer { grid-template-columns: 1fr; padding-inline: 12px; }
|
|
.composer button { width: 100%; }
|
|
.composer-hint { font-size: 8px; }
|
|
.media-tools { padding-inline: 12px; }
|
|
.side-build { display: none; }
|
|
}
|
|
@media (max-width: 640px) {
|
|
.chat-layout { height: auto; display: block; }
|
|
.chat-header > .operator-link, .build-meta { display: none; }
|
|
.chat-header .cognitive-console-link { flex: 0 1 110px; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
|
|
}
|
|
@media (min-width: 781px) and (max-width: 1100px) {
|
|
.chat-layout { grid-template-columns: 218px minmax(0, 1fr) 260px; }
|
|
.chat-side { padding-inline: 14px; }
|
|
}
|
|
|
|
/* Chat-first pass: navigation and context stay out of the conversation's way. */
|
|
.chat-header { gap: 10px; padding-inline: 18px; }
|
|
.header-icon, .header-control, .profile-button { height: 32px; border: 1px solid var(--line); background: transparent; font: 10px/1 var(--mono); }
|
|
.header-icon { width: 32px; padding: 0; color: var(--muted); font-size: 15px; }
|
|
.header-control, .profile-button { padding: 0 10px; color: var(--muted); }
|
|
.header-control { color: var(--ink); }
|
|
.header-icon:hover, .header-icon:focus-visible, .header-control:hover, .header-control:focus-visible, .profile-button:hover, .profile-button:focus-visible { border-color: var(--blue); color: var(--blue); outline: none; }
|
|
.header-focus { min-width: 0; overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
|
|
.chat-header .cognitive-status { margin-left: auto; max-width: 250px; }
|
|
.chat-header .cognitive-console-link { display: none; }
|
|
.chat-layout { grid-template-columns: 242px minmax(0, 1fr); }
|
|
.chat-layout.nav-collapsed { grid-template-columns: 0 minmax(0, 1fr); }
|
|
.chat-left { padding: 24px 16px; transition: opacity .18s ease, padding .18s ease, transform .18s ease; }
|
|
.chat-layout.nav-collapsed .chat-left { padding-inline: 0; overflow: hidden; opacity: 0; border-right: 0; }
|
|
.side-intro h1 { font-size: 26px; }
|
|
.side-section { margin-top: 18px; }
|
|
.human-nav { margin-top: 12px; }
|
|
.nav-tab { grid-template-columns: 1fr; min-height: 44px; padding-inline: 10px; }
|
|
.chat-left .nav-tab b { display: none; }
|
|
.new-conversation { margin-top: 16px; }
|
|
.chat-main { min-width: 0; }
|
|
.messages { width: min(100%, 1040px); padding: 32px 30px 22px; gap: 14px; }
|
|
.message { max-width: min(760px, 88%); padding: 14px 17px 15px; border-radius: 12px; }
|
|
.message-content { font-size: 15px; line-height: 1.55; }
|
|
.message-role { font-size: 10px; }
|
|
.message-time { font-size: 10px; }
|
|
.message small { font-size: 10px; }
|
|
.composer { width: min(100%, 1040px); padding-inline: 30px; }
|
|
.composer-input-wrap { min-height: 64px; padding: 0 12px 36px; border-radius: 14px; }
|
|
.composer textarea { min-height: 56px; max-height: 180px; padding: 13px 0 8px; font-size: 15px; }
|
|
.composer-actions { right: 9px; bottom: 8px; left: 9px; height: 28px; }
|
|
.composer-tool { width: 29px; height: 29px; padding: 0; border: 0; color: var(--muted); background: transparent !important; }
|
|
.composer-tool svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; }
|
|
.composer-tool:hover, .composer-tool:focus-visible { border: 0; color: var(--blue); box-shadow: none; }
|
|
.composer-hint { font-size: 10px; }
|
|
.send-button { width: 33px; height: 33px; flex-basis: 33px; }
|
|
.composer-runtime { height: 0; min-height: 0; padding: 0; overflow: visible; }
|
|
.attachment-menu { bottom: 42px; left: 8px; }
|
|
.context-indicator { display: none; }
|
|
.technical-meta { display: none !important; }
|
|
.context-backdrop { position: fixed; z-index: 8; inset: 60px 0 0; border: 0; background: rgba(4,9,15,.58); }
|
|
.context-drawer { position: fixed; z-index: 9; top: 60px; right: 0; bottom: 0; width: min(360px, 92vw); padding: 24px 20px; border-left: 1px solid var(--line-strong); box-shadow: -20px 0 50px rgba(0,0,0,.28); transform: translateX(105%); transition: transform .2s ease; }
|
|
.password-dialog { width: min(420px, calc(100vw - 32px)); padding: 0; color: var(--ink); background: var(--panel); border: 1px solid var(--line-strong); border-radius: var(--radius); box-shadow: 0 24px 80px rgba(0,0,0,.45); }
|
|
.password-dialog::backdrop { background: rgba(3,8,14,.68); }
|
|
.password-dialog form { padding: 22px; }
|
|
.dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
|
|
.dialog-heading h2 { margin: 0; font-size: 20px; }
|
|
.dialog-heading button { width: 30px; height: 30px; border: 1px solid var(--line); background: transparent; }
|
|
.password-dialog label { display: block; margin: 14px 0 7px; color: var(--muted); font: 11px/1 var(--mono); }
|
|
.password-dialog input { width: 100%; height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink); background: var(--panel-raised); }
|
|
.password-dialog input:focus { outline: 2px solid var(--blue); outline-offset: 1px; }
|
|
.dialog-actions { display: flex; justify-content: space-between; gap: 10px; margin-top: 20px; }
|
|
.dialog-actions button { min-height: 38px; padding: 0 14px; border: 1px solid var(--line); background: transparent; }
|
|
.dialog-actions button:first-child { border-color: var(--lime); color: var(--lime-ink); background: var(--lime); }
|
|
.dialog-actions button:disabled { opacity: .55; cursor: wait; }
|
|
#password-status { min-height: 18px; margin: 12px 0 0; color: var(--muted); font-size: 12px; }
|
|
.context-drawer.drawer-open { transform: translateX(0); }
|
|
.drawer-heading { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
|
|
.drawer-heading h2 { margin-top: 9px; font-size: 26px; }
|
|
.drawer-copy { margin: 12px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
|
|
.drawer-close { width: 30px; height: 30px; border: 1px solid var(--line); color: var(--muted); background: transparent; font-size: 20px; line-height: 1; }
|
|
.drawer-close:hover, .drawer-close:focus-visible { border-color: var(--blue); color: var(--blue); outline: none; }
|
|
.insight-grid { margin-top: 20px; }
|
|
@media (max-width: 780px) {
|
|
.chat-header { padding-inline: 10px; }
|
|
.header-focus { display: none; }
|
|
.chat-header .cognitive-status { max-width: 145px; }
|
|
.profile-button { width: 32px; overflow: hidden; padding: 0; font-size: 0; }
|
|
.profile-button::before { content: "●"; font-size: 12px; }
|
|
.chat-layout { display: block; }
|
|
.chat-main { height: calc(100vh - 58px); min-height: 520px; }
|
|
.chat-left { position: fixed; z-index: 10; top: 58px; bottom: 0; left: 0; width: min(290px, 84vw); transform: translateX(-105%); box-shadow: 18px 0 42px rgba(0,0,0,.3); }
|
|
.chat-layout.nav-open .chat-left { transform: translateX(0); opacity: 1; overflow-y: auto; }
|
|
.chat-layout.nav-collapsed .chat-left { padding-inline: 16px; }
|
|
.messages { padding: 22px 12px 16px; }
|
|
.message { max-width: 94%; }
|
|
.message-content { font-size: 14px; }
|
|
.composer { width: 100%; padding-inline: 12px; }
|
|
.composer-input-wrap { padding-right: 10px; }
|
|
.composer-hint { display: none; }
|
|
.attachment-menu { bottom: 42px; left: 5px; }
|
|
.context-backdrop { inset: 58px 0 0; }
|
|
.context-drawer { top: 58px; }
|
|
}
|
|
|
|
/* Focused composer: one calm surface, with compact controls kept together. */
|
|
.active-panel { grid-template-rows: minmax(0, 1fr) auto auto auto; }
|
|
.composer { width: min(100%, 900px); margin: 0 auto; padding: 0 22px 7px; display: block; border-top: 0; background: transparent; }
|
|
.composer-input-wrap { position: relative; min-height: 62px; padding: 0 58px 32px 12px; border: 1px solid var(--line-strong); border-radius: 12px; background: var(--panel); }
|
|
.composer textarea { display: block; min-height: 54px; max-height: 178px; height: 54px; padding: 12px 0 8px; overflow-y: hidden; line-height: 1.4; }
|
|
.composer-actions { position: absolute; right: 8px; bottom: 7px; left: 8px; height: 27px; display: flex; align-items: center; gap: 8px; }
|
|
.composer-hint { order: 3; padding: 0; color: var(--faint); font: 9px/1 var(--mono); }
|
|
.composer-tool { width: 27px; height: 27px; flex: 0 0 27px; border: 1px solid var(--line-strong); border-radius: 7px; color: var(--muted); background: transparent; font-size: 18px; line-height: 1; }
|
|
.composer-tool:has(.composer-tool-label) { width: auto; min-width: 27px; padding-inline: 7px; gap: 5px; font: 10px/1 var(--mono); }
|
|
.composer-tool-label { font-size: 10px; }
|
|
.composer-tool:hover, .composer-tool:focus-visible { border-color: var(--blue); color: var(--blue); outline: none; }
|
|
.context-indicator { display: inline-flex; align-items: center; gap: 5px; color: var(--faint); font: 9px/1 var(--mono); white-space: nowrap; }
|
|
.context-indicator output { color: var(--muted); }
|
|
.send-button { order: 5; width: 32px; height: 32px; flex: 0 0 32px; margin-left: auto; display: grid; place-items: center; padding: 0; border: 1px solid rgba(197,239,145,.48); border-radius: 50%; color: var(--lime-ink); background: var(--lime); font-size: 17px; line-height: 1; }
|
|
.send-button:hover, .send-button:focus-visible { box-shadow: 0 0 0 3px rgba(197,239,145,.12); outline: none; }
|
|
.send-button[aria-busy="true"] { border-color: rgba(238,146,146,.55); color: var(--bad); background: rgba(238,146,146,.12); }
|
|
.send-button[aria-busy="true"]:hover { background: rgba(238,146,146,.2); }
|
|
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
|
|
.composer-toolbar { width: min(100%, 900px); min-height: 30px; margin: 0 auto; padding: 0 22px 8px; position: relative; display: flex; align-items: center; gap: 6px; }
|
|
.toolbar-button { min-height: 27px; padding: 0 9px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); background: transparent; font: 9px/1 var(--mono); text-transform: uppercase; }
|
|
.toolbar-button:hover, .toolbar-button:focus-visible { border-color: var(--blue); color: var(--blue); outline: none; }
|
|
.attachment-menu { position: absolute; z-index: 4; bottom: 37px; left: 22px; display: grid; min-width: 145px; padding: 5px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--panel-raised); box-shadow: 0 14px 34px rgba(0,0,0,.35); }
|
|
.attachment-menu button { padding: 8px 9px; border: 0; border-radius: 6px; color: var(--ink); background: transparent; text-align: left; font-size: 11px; }
|
|
.attachment-menu button:hover, .attachment-menu button:focus-visible { color: var(--lime); background: rgba(197,239,145,.1); outline: none; }
|
|
.composer-toolbar #media-status { margin-left: 3px; color: var(--yellow); font: 9px/1 var(--mono); }
|
|
@media (max-width: 780px) {
|
|
.composer { width: 100%; padding-inline: 12px; }
|
|
.composer-input-wrap { padding-right: 50px; }
|
|
.composer-toolbar { width: 100%; padding-inline: 12px; }
|
|
.attachment-menu { left: 12px; }
|
|
.composer-hint { display: none; }
|
|
.composer-tool:has(.composer-tool-label) { padding-inline: 5px; }
|
|
.composer-tool-label { font-size: 9px; }
|
|
.context-indicator { font-size: 8px; }
|
|
}
|