Spaces:
Sleeping
Sleeping
| html.aj-hide-pointer, | |
| html.aj-hide-pointer * { | |
| cursor: none ; | |
| } | |
| .aj-app { | |
| flex: 1 1 0; | |
| min-height: 0; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| background: var(--lc-bg); | |
| color: var(--lc-text); | |
| } | |
| /* Matches Version B: single row, three columns — brand | title | actions */ | |
| .aj-header { | |
| display: grid; | |
| grid-template-columns: 1fr auto 1fr; | |
| align-items: center; | |
| padding: 12px 24px; | |
| background: var(--lc-bg2); | |
| border-bottom: 1px solid var(--lc-border); | |
| box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06); | |
| position: relative; | |
| z-index: 50; | |
| } | |
| /* Neon.ai header brand */ | |
| .aj-header-brand-link { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| justify-self: start; | |
| text-decoration: none; | |
| color: inherit; | |
| transition: opacity 0.15s; | |
| font-size: 16px; | |
| } | |
| .aj-header-brand-link:hover { | |
| opacity: 0.8; | |
| } | |
| .aj-header-logo { | |
| height: 32px; | |
| width: auto; | |
| display: block; | |
| } | |
| .aj-header-brand-name { | |
| font-size: 16px; | |
| font-weight: 700; | |
| color: var(--lc-text); | |
| } | |
| .aj-header-title-wrap { | |
| text-align: center; | |
| } | |
| .aj-header-title { | |
| margin: 0; | |
| font-size: 20px; | |
| font-weight: 700; | |
| letter-spacing: -0.02em; | |
| line-height: 1.2; | |
| text-align: center; | |
| white-space: nowrap; | |
| background: linear-gradient(135deg, #6366f1, #8b5cf6); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| background-clip: text; | |
| } | |
| .aj-sub { | |
| font-size: 12px; | |
| color: var(--lc-muted); | |
| margin: 0; | |
| } | |
| /* Version B: actions live in aj-options-wrap (flex row, right-aligned) */ | |
| .aj-options-wrap { | |
| position: relative; | |
| justify-self: end; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| /* Header icon buttons — compact; overflow / composer use different rules below */ | |
| .aj-header .aj-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 36px; | |
| height: 36px; | |
| padding: 0; | |
| gap: 0; | |
| border-radius: 8px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-bg); | |
| color: var(--lc-muted); | |
| cursor: pointer; | |
| font-size: 0; | |
| } | |
| .aj-header .aj-btn:hover:not(:disabled) { | |
| background: var(--lc-hover); | |
| color: var(--lc-text); | |
| border-color: var(--lc-accent); | |
| } | |
| .aj-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 8px 14px; | |
| border-radius: 10px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-elevated); | |
| color: inherit; | |
| cursor: pointer; | |
| font-size: 13px; | |
| font-weight: 500; | |
| } | |
| .aj-btn:hover:not(:disabled) { | |
| border-color: var(--lc-accent); | |
| background: var(--lc-hover); | |
| } | |
| .aj-btn:disabled { | |
| opacity: 0.45; | |
| cursor: not-allowed; | |
| } | |
| .aj-btn.primary { | |
| background: linear-gradient(135deg, #6366f1, #8b5cf6); | |
| border-color: transparent; | |
| color: #fff; | |
| } | |
| .aj-btn.primary:hover:not(:disabled) { | |
| filter: brightness(1.05); | |
| } | |
| .aj-btn.danger { | |
| border-color: rgba(220, 38, 38, 0.28); | |
| color: #b91c1c; | |
| } | |
| .aj-header .aj-btn.danger { | |
| color: #dc2626; | |
| border-color: #fca5a5; | |
| } | |
| .aj-header .aj-btn.danger:hover:not(:disabled) { | |
| background: #fef2f2; | |
| border-color: #dc2626; | |
| } | |
| .aj-btn.ghost { | |
| border-color: transparent; | |
| background: transparent; | |
| } | |
| .aj-btn.ghost:hover:not(:disabled) { | |
| background: var(--lc-hover); | |
| } | |
| .aj-options-panel { | |
| position: absolute; | |
| right: 0; | |
| top: calc(100% + 8px); | |
| z-index: 200; | |
| width: min(400px, calc(100vw - 32px)); | |
| max-height: min(70vh, 520px); | |
| overflow-y: auto; | |
| padding: 14px 16px 16px; | |
| border-radius: 12px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-elevated); | |
| box-shadow: var(--lc-shadow); | |
| } | |
| .aj-options-hint { | |
| margin: 10px 0 0; | |
| font-size: 12px; | |
| color: var(--lc-muted); | |
| line-height: 1.45; | |
| } | |
| .aj-field span { | |
| display: block; | |
| font-size: 11px; | |
| color: var(--lc-muted); | |
| margin-bottom: 6px; | |
| } | |
| .aj-field textarea { | |
| width: 100%; | |
| box-sizing: border-box; | |
| padding: 12px 14px; | |
| border-radius: 10px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-input); | |
| color: var(--lc-text); | |
| font-size: 13px; | |
| line-height: 1.5; | |
| resize: vertical; | |
| min-height: 120px; | |
| } | |
| .aj-field textarea::placeholder { | |
| color: var(--lc-placeholder); | |
| opacity: 0.85; | |
| } | |
| .aj-chat-wrap { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 0; | |
| } | |
| .aj-messages { | |
| flex: 1; | |
| overflow-y: auto; | |
| padding: 20px; | |
| background: linear-gradient(180deg, var(--lc-bg2) 0%, var(--lc-bg) 100%); | |
| } | |
| /* Fixed above composer — jump to bottom when chat list is scrolled up */ | |
| .aj-jump-bottom-btn { | |
| position: fixed; | |
| right: 24px; | |
| bottom: calc(96px + env(safe-area-inset-bottom, 0px)); | |
| z-index: 55; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 48px; | |
| height: 48px; | |
| padding: 0; | |
| border-radius: 50%; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-elevated); | |
| color: var(--lc-accent); | |
| box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12); | |
| cursor: pointer; | |
| transition: transform 0.15s ease, box-shadow 0.15s ease; | |
| } | |
| .aj-jump-bottom-btn:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 24px rgba(124, 58, 237, 0.2); | |
| border-color: var(--lc-accent); | |
| } | |
| .aj-jump-bottom-btn:focus-visible { | |
| outline: 2px solid var(--lc-accent); | |
| outline-offset: 2px; | |
| } | |
| @media (max-width: 520px) { | |
| .aj-jump-bottom-btn { | |
| right: 16px; | |
| bottom: calc(88px + env(safe-area-inset-bottom, 0px)); | |
| width: 44px; | |
| height: 44px; | |
| } | |
| } | |
| .aj-msg-row { | |
| display: flex; | |
| align-items: flex-end; | |
| gap: 10px; | |
| margin-bottom: 16px; | |
| } | |
| .aj-msg-row.user { | |
| flex-direction: row-reverse; | |
| } | |
| .aj-shape { | |
| flex-shrink: 0; | |
| width: 14px; | |
| height: 14px; | |
| border-radius: 50%; | |
| background: var(--lc-accent); | |
| } | |
| .aj-bubble-wrap { | |
| max-width: min(560px, 88%); | |
| position: relative; | |
| z-index: 0; | |
| } | |
| .aj-bubble-name { | |
| font-size: 11px; | |
| color: var(--lc-muted); | |
| margin-bottom: 4px; | |
| padding: 0 4px; | |
| } | |
| .aj-msg-row.user .aj-bubble-name { | |
| text-align: right; | |
| } | |
| .aj-bubble { | |
| padding: 12px 16px; | |
| border-radius: 16px; | |
| line-height: 1.55; | |
| font-size: 14px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-bubble); | |
| box-shadow: var(--lc-shadow); | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| } | |
| /* Speech-bubble tails: one corner tighter for a natural bubble shape */ | |
| .aj-msg-row:not(.user) .aj-bubble { | |
| border-bottom-left-radius: 4px; | |
| } | |
| .aj-msg-row.user .aj-bubble { | |
| border-radius: 16px; | |
| border-bottom-right-radius: 4px; | |
| background: linear-gradient(135deg, var(--lc-accent), #6366f1); | |
| color: #fff; | |
| border-color: transparent; | |
| } | |
| /* Assistant replies: render markdown as formatted text (not raw syntax) */ | |
| .aj-bubble--assistant-md { | |
| white-space: normal; | |
| } | |
| .aj-bubble-md { | |
| line-height: 1.55; | |
| } | |
| .aj-bubble-md p { | |
| margin: 0 0 0.65em; | |
| } | |
| .aj-bubble-md p:last-child { | |
| margin-bottom: 0; | |
| } | |
| .aj-bubble-md h1, | |
| .aj-bubble-md h2, | |
| .aj-bubble-md h3, | |
| .aj-bubble-md h4 { | |
| margin: 0.85em 0 0.4em; | |
| line-height: 1.25; | |
| font-weight: 600; | |
| } | |
| .aj-bubble-md h1:first-child, | |
| .aj-bubble-md h2:first-child, | |
| .aj-bubble-md h3:first-child, | |
| .aj-bubble-md h4:first-child { | |
| margin-top: 0; | |
| } | |
| .aj-bubble-md h1 { | |
| font-size: 1.2em; | |
| } | |
| .aj-bubble-md h2 { | |
| font-size: 1.1em; | |
| } | |
| .aj-bubble-md h3, | |
| .aj-bubble-md h4 { | |
| font-size: 1.05em; | |
| } | |
| .aj-bubble-md ul, | |
| .aj-bubble-md ol { | |
| margin: 0 0 0.65em; | |
| padding-left: 1.35em; | |
| } | |
| .aj-bubble-md li { | |
| margin: 0.2em 0; | |
| } | |
| .aj-bubble-md li > p { | |
| margin: 0.25em 0; | |
| } | |
| .aj-bubble-md blockquote { | |
| margin: 0.5em 0; | |
| padding: 0 0 0 0.75em; | |
| border-left: 3px solid var(--lc-accent); | |
| color: var(--lc-muted); | |
| } | |
| .aj-bubble-md hr { | |
| margin: 0.85em 0; | |
| border: none; | |
| border-top: 1px solid var(--lc-border); | |
| } | |
| .aj-bubble-md pre { | |
| margin: 0.5em 0; | |
| padding: 10px 12px; | |
| border-radius: 10px; | |
| background: rgba(15, 23, 42, 0.06); | |
| overflow-x: auto; | |
| font-size: 13px; | |
| } | |
| .aj-bubble-md code { | |
| font-family: ui-monospace, 'Cascadia Code', 'Segoe UI Mono', monospace; | |
| font-size: 0.92em; | |
| padding: 0.1em 0.35em; | |
| border-radius: 4px; | |
| background: rgba(15, 23, 42, 0.07); | |
| } | |
| .aj-bubble-md pre code { | |
| padding: 0; | |
| background: none; | |
| font-size: inherit; | |
| } | |
| .aj-bubble-md a { | |
| color: var(--lc-accent); | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| } | |
| .aj-bubble-md table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 0.5em 0; | |
| font-size: 13px; | |
| } | |
| .aj-bubble-md th, | |
| .aj-bubble-md td { | |
| border: 1px solid var(--lc-border); | |
| padding: 6px 8px; | |
| text-align: left; | |
| } | |
| .aj-bubble-md th { | |
| background: rgba(15, 23, 42, 0.04); | |
| } | |
| .aj-typing { | |
| display: inline-block; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| background: var(--lc-accent); | |
| animation: aj-pulse 1s ease-in-out infinite; | |
| } | |
| @keyframes aj-pulse { | |
| 0%, | |
| 100% { | |
| opacity: 0.35; | |
| } | |
| 50% { | |
| opacity: 1; | |
| } | |
| } | |
| /* Context meter bar — sticks at top when scrolling */ | |
| .aj-context-bar { | |
| position: sticky; | |
| top: 0; | |
| z-index: 49; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 6px 20px; | |
| border-bottom: 1px solid var(--lc-border); | |
| background: var(--lc-sidebar); | |
| } | |
| .aj-context-meter { | |
| flex: 1; | |
| height: 4px; | |
| border-radius: 2px; | |
| background: var(--lc-border); | |
| overflow: hidden; | |
| max-width: 180px; | |
| } | |
| .aj-context-fill { | |
| height: 100%; | |
| border-radius: 2px; | |
| background: var(--lc-accent); | |
| transition: width 0.3s; | |
| } | |
| .aj-context-fill[data-hot] { | |
| background: #ef4444; | |
| } | |
| .aj-context-label { | |
| font-size: 11px; | |
| color: var(--lc-muted); | |
| white-space: nowrap; | |
| } | |
| /* Summary banner */ | |
| .aj-summary-banner { | |
| margin: 16px auto; | |
| max-width: 560px; | |
| padding: 14px 18px; | |
| border-radius: 12px; | |
| border: 1px solid var(--lc-accent); | |
| background: var(--lc-hover); | |
| } | |
| .aj-summary-banner p { | |
| margin: 0 0 6px; | |
| font-size: 13px; | |
| line-height: 1.5; | |
| } | |
| .aj-summary-banner p:last-child { | |
| margin-bottom: 0; | |
| } | |
| .aj-summary-text { | |
| color: var(--lc-muted); | |
| font-size: 12px ; | |
| } | |
| /* Context overflow banner */ | |
| .aj-overflow-banner { | |
| display: flex; | |
| gap: 12px; | |
| padding: 16px 20px; | |
| background: #fef2f2; | |
| border-top: 1px solid #fca5a5; | |
| } | |
| .aj-overflow-icon { | |
| flex-shrink: 0; | |
| color: #dc2626; | |
| margin-top: 2px; | |
| } | |
| .aj-overflow-body { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .aj-overflow-title { | |
| margin: 0 0 4px; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: #991b1b; | |
| } | |
| .aj-overflow-detail { | |
| margin: 0 0 12px; | |
| font-size: 13px; | |
| color: #7f1d1d; | |
| line-height: 1.5; | |
| } | |
| .aj-overflow-actions { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| } | |
| .aj-overflow-actions .aj-btn { | |
| font-size: 12px; | |
| padding: 6px 12px; | |
| } | |
| .aj-composer { | |
| padding: 14px 20px 20px; | |
| border-top: 1px solid var(--lc-border); | |
| background: var(--lc-sidebar); | |
| } | |
| .aj-composer-inner { | |
| display: flex; | |
| gap: 10px; | |
| align-items: flex-end; | |
| max-width: 880px; | |
| margin: 0 auto; | |
| } | |
| .aj-composer textarea { | |
| flex: 1; | |
| box-sizing: border-box; | |
| min-height: 44px; | |
| max-height: 50vh; | |
| padding: 12px 14px; | |
| border-radius: 12px; | |
| border: 1px solid #94a3b8; | |
| background: var(--lc-input); | |
| color: var(--lc-text); | |
| font-size: 14px; | |
| resize: none; | |
| line-height: 1.45; | |
| overflow-y: hidden; | |
| } | |
| .aj-composer textarea:focus { | |
| outline: none; | |
| border-color: var(--lc-accent); | |
| box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15); | |
| } | |
| .aj-composer textarea::placeholder { | |
| color: var(--lc-placeholder); | |
| } | |
| .aj-composer .aj-btn { | |
| width: 44px; | |
| height: 44px; | |
| padding: 0; | |
| justify-content: center; | |
| flex-shrink: 0; | |
| } | |
| .aj-share-wrap { | |
| position: relative; | |
| flex-shrink: 0; | |
| } | |
| .aj-share-panel { | |
| position: absolute; | |
| right: 0; | |
| bottom: calc(100% + 8px); | |
| z-index: 200; | |
| min-width: 200px; | |
| max-width: min(280px, calc(100vw - 40px)); | |
| padding: 8px; | |
| border-radius: 12px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-elevated); | |
| box-shadow: var(--lc-shadow); | |
| } | |
| .aj-share-item { | |
| display: block; | |
| width: 100%; | |
| margin: 0; | |
| padding: 10px 12px; | |
| border: none; | |
| border-radius: 8px; | |
| background: transparent; | |
| color: var(--lc-text); | |
| font-size: 14px; | |
| font-weight: 500; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .aj-share-item:hover { | |
| background: var(--lc-hover); | |
| } | |
| .aj-share-hint { | |
| margin: 6px 4px 2px; | |
| font-size: 11px; | |
| line-height: 1.4; | |
| color: var(--lc-muted); | |
| } | |
| /* Per-message search (assistant) — popover right or below bubble */ | |
| .aj-msg-search-anchor { | |
| width: 100%; | |
| margin-top: 8px; | |
| } | |
| .aj-msg-search-wrap { | |
| display: flex; | |
| justify-content: flex-end; | |
| } | |
| .aj-msg-search-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 32px; | |
| height: 32px; | |
| padding: 0; | |
| border-radius: 8px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-input); | |
| color: var(--lc-muted); | |
| cursor: pointer; | |
| } | |
| .aj-msg-search-btn:hover { | |
| border-color: var(--lc-accent); | |
| color: var(--lc-accent); | |
| background: var(--lc-hover); | |
| } | |
| /* position: fixed + top/left/width set inline (escapes .aj-messages overflow) */ | |
| .aj-msg-search-popover { | |
| position: fixed; | |
| visibility: hidden; | |
| z-index: 250; | |
| box-sizing: border-box; | |
| min-width: 280px; | |
| padding: 12px 14px; | |
| border-radius: 12px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-sidebar); | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12); | |
| max-height: min(70vh, 520px); | |
| overflow-y: auto; | |
| } | |
| .aj-msg-search-popover-head { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| margin-bottom: 10px; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--lc-text); | |
| } | |
| .aj-msg-search-close { | |
| border: none; | |
| background: none; | |
| cursor: pointer; | |
| font-size: 18px; | |
| line-height: 1; | |
| color: var(--lc-muted); | |
| padding: 0 4px; | |
| } | |
| .aj-msg-search-close:hover { | |
| color: var(--lc-text); | |
| } | |
| .aj-msg-search-loading { | |
| font-size: 12px; | |
| color: var(--lc-muted); | |
| } | |
| .aj-msg-search-input { | |
| width: 100%; | |
| box-sizing: border-box; | |
| margin-bottom: 10px; | |
| padding: 8px 10px; | |
| border-radius: 8px; | |
| border: 1px solid var(--lc-border); | |
| background: var(--lc-input); | |
| color: var(--lc-text); | |
| font-size: 12px; | |
| line-height: 1.45; | |
| resize: vertical; | |
| min-height: 64px; | |
| font-family: inherit; | |
| } | |
| .aj-msg-search-input:focus { | |
| outline: none; | |
| border-color: var(--lc-accent); | |
| box-shadow: 0 0 0 2px rgba(124, 58, 237, 0.12); | |
| } | |
| .aj-msg-search-actions { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .aj-msg-search-actions .aj-btn { | |
| width: auto; | |
| height: auto; | |
| padding: 6px 12px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| } | |