1352 lines
24 KiB
CSS
1352 lines
24 KiB
CSS
:root {
|
|
--motion-emphasized: cubic-bezier(0.22, 1, 0.36, 1);
|
|
--motion-snappy: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
--motion-soft: cubic-bezier(0.25, 0.8, 0.25, 1);
|
|
}
|
|
|
|
.app-shell {
|
|
display: flex;
|
|
height: 100%;
|
|
min-height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.sidebar {
|
|
width: 18rem;
|
|
flex: 0 0 18rem;
|
|
height: 100%;
|
|
min-height: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
padding: 0.875rem;
|
|
border-right: 1px solid var(--line);
|
|
background: var(--sidebar);
|
|
transition:
|
|
width 320ms var(--motion-emphasized),
|
|
flex-basis 320ms var(--motion-emphasized),
|
|
padding 320ms var(--motion-emphasized),
|
|
border-color 220ms var(--motion-soft);
|
|
}
|
|
|
|
.sidebar.is-collapsed {
|
|
width: 4.5rem;
|
|
flex-basis: 4.5rem;
|
|
padding-inline: 0.5rem;
|
|
}
|
|
|
|
.sidebar-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.sidebar-title-block {
|
|
min-width: 0;
|
|
}
|
|
|
|
.sidebar-title {
|
|
margin: 0;
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.sidebar-caption,
|
|
.panel-caption,
|
|
.bubble-role,
|
|
.tool-card-label,
|
|
.code-line-number,
|
|
.conversation-item-primary span,
|
|
.conversation-item-secondary {
|
|
color: var(--muted);
|
|
}
|
|
|
|
.sidebar-caption,
|
|
.panel-caption,
|
|
.conversation-item-secondary,
|
|
.conversation-item-primary span,
|
|
.tool-card-label {
|
|
font-size: 0.78rem;
|
|
}
|
|
|
|
.sidebar-header-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.toolbar-button,
|
|
.send-button,
|
|
.download-link,
|
|
.conversation-item,
|
|
.rail-item,
|
|
.chat-composer,
|
|
.model-select select {
|
|
border: 1px solid var(--line);
|
|
background: var(--surface);
|
|
color: var(--ink);
|
|
transition: border-color 140ms ease, background-color 140ms ease;
|
|
}
|
|
|
|
.toolbar-button,
|
|
.send-button,
|
|
.rail-item {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
padding: 0;
|
|
border-radius: 0.45rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.toolbar-button:hover,
|
|
.send-button:hover,
|
|
.download-link:hover,
|
|
.conversation-item:hover,
|
|
.rail-item:hover,
|
|
.chat-composer:hover,
|
|
.model-select select:hover,
|
|
.tool-card:hover {
|
|
border-color: var(--line-strong);
|
|
}
|
|
|
|
.toolbar-button:disabled,
|
|
.send-button:disabled,
|
|
.conversation-item:disabled,
|
|
.rail-item:disabled {
|
|
opacity: 0.55;
|
|
cursor: default;
|
|
}
|
|
|
|
.conversation-list,
|
|
.rail-list,
|
|
.chat-timeline {
|
|
min-height: 0;
|
|
overflow: auto;
|
|
}
|
|
|
|
.conversation-list {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.conversation-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 0.4rem;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.conversation-item {
|
|
padding: 0.75rem;
|
|
border-radius: 0.55rem;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.conversation-delete-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.55rem;
|
|
background: var(--surface);
|
|
color: var(--muted);
|
|
cursor: pointer;
|
|
opacity: 0;
|
|
transition:
|
|
border-color 140ms ease,
|
|
background-color 140ms ease,
|
|
color 140ms ease,
|
|
opacity 140ms ease;
|
|
}
|
|
|
|
.conversation-row:hover .conversation-delete-button,
|
|
.conversation-row:focus-within .conversation-delete-button,
|
|
.conversation-row.is-active .conversation-delete-button {
|
|
opacity: 1;
|
|
}
|
|
|
|
.conversation-delete-button:hover {
|
|
border-color: #6e4b49;
|
|
color: #efac9e;
|
|
}
|
|
|
|
.conversation-delete-button:disabled {
|
|
opacity: 0.55;
|
|
cursor: default;
|
|
}
|
|
|
|
.conversation-item.is-active,
|
|
.rail-item.is-active {
|
|
border-color: var(--accent-line);
|
|
background: var(--surface-active);
|
|
}
|
|
|
|
.conversation-item-primary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.conversation-item-primary strong {
|
|
font-size: 0.84rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.conversation-item-secondary {
|
|
margin-top: 0.2rem;
|
|
}
|
|
|
|
.empty-card {
|
|
padding: 0.85rem;
|
|
border: 1px dashed var(--line);
|
|
border-radius: 0.55rem;
|
|
color: var(--muted);
|
|
font-size: 0.84rem;
|
|
}
|
|
|
|
.rail-list {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.rail-item {
|
|
width: 100%;
|
|
height: 2.25rem;
|
|
font-size: 0.78rem;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.workspace-shell {
|
|
flex: 1;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
height: 100%;
|
|
padding: 0.875rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.workspace-panels,
|
|
.main-panel-group,
|
|
.workbench-group,
|
|
.panel-shell,
|
|
.chat-panel-shell,
|
|
.workbench-panel,
|
|
.workbench-content,
|
|
.viewport-panel-content,
|
|
.code-panel-content,
|
|
.model-canvas-shell {
|
|
min-height: 0;
|
|
}
|
|
|
|
.workspace-panels,
|
|
.main-panel-group,
|
|
.workbench-group,
|
|
.chat-panel-shell {
|
|
height: 100%;
|
|
}
|
|
|
|
.panel-shell {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.75rem;
|
|
height: 100%;
|
|
padding: 0.875rem;
|
|
border: 1px solid var(--line);
|
|
background: var(--surface);
|
|
}
|
|
|
|
.panel-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.panel-header-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 0.5rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.panel-title-group {
|
|
min-width: 0;
|
|
}
|
|
|
|
.panel-title-group h2 {
|
|
margin: 0;
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.panel-caption {
|
|
margin: 0.1rem 0 0;
|
|
}
|
|
|
|
.model-select {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
font-size: 0.8rem;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.artifact-picker {
|
|
min-width: 0;
|
|
}
|
|
|
|
.model-select select {
|
|
padding: 0.45rem 0.6rem;
|
|
border-radius: 0.45rem;
|
|
appearance: none;
|
|
font: inherit;
|
|
}
|
|
|
|
.artifact-picker select {
|
|
max-width: min(22rem, 46vw);
|
|
}
|
|
|
|
.download-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.45rem 0.65rem;
|
|
border-radius: 0.45rem;
|
|
text-decoration: none;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.chat-timeline {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
padding-right: 0.1rem;
|
|
}
|
|
|
|
.turn {
|
|
display: grid;
|
|
gap: 0.65rem;
|
|
}
|
|
|
|
.bubble,
|
|
.tool-card,
|
|
.chat-composer,
|
|
.error-banner,
|
|
.code-scroll-shell,
|
|
.empty-state {
|
|
border: 1px solid var(--line);
|
|
background: var(--surface-soft);
|
|
}
|
|
|
|
.bubble,
|
|
.tool-card,
|
|
.chat-composer,
|
|
.error-banner,
|
|
.empty-state,
|
|
.code-scroll-shell {
|
|
border-radius: 0.55rem;
|
|
}
|
|
|
|
.bubble {
|
|
padding: 0.8rem 0.9rem;
|
|
transition:
|
|
border-color 220ms var(--motion-soft),
|
|
background-color 220ms var(--motion-soft),
|
|
transform 260ms var(--motion-emphasized),
|
|
box-shadow 260ms var(--motion-soft);
|
|
}
|
|
|
|
.bubble-user {
|
|
max-width: min(40rem, 84%);
|
|
justify-self: end;
|
|
background: #161c24;
|
|
}
|
|
|
|
.bubble-assistant {
|
|
max-width: min(46rem, 92%);
|
|
}
|
|
|
|
.bubble-thinking {
|
|
border-style: dashed;
|
|
position: relative;
|
|
overflow: hidden;
|
|
background:
|
|
radial-gradient(circle at top left, rgba(143, 197, 255, 0.12), transparent 46%),
|
|
linear-gradient(180deg, rgba(18, 24, 31, 0.92), rgba(14, 19, 25, 0.88));
|
|
animation: thinking-breath 1800ms var(--motion-soft) infinite;
|
|
}
|
|
|
|
.bubble-thinking::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: -1px;
|
|
background: linear-gradient(
|
|
105deg,
|
|
transparent 0%,
|
|
transparent 34%,
|
|
rgba(255, 255, 255, 0.03) 48%,
|
|
transparent 62%,
|
|
transparent 100%
|
|
);
|
|
transform: translateX(-120%);
|
|
animation: thinking-sheen 2400ms var(--motion-emphasized) infinite;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.thinking-indicator {
|
|
display: grid;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.thinking-indicator-line {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.thinking-indicator-text {
|
|
font-weight: 500;
|
|
letter-spacing: 0.01em;
|
|
}
|
|
|
|
.thinking-indicator-dots {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.28rem;
|
|
}
|
|
|
|
.thinking-indicator-dot {
|
|
width: 0.38rem;
|
|
height: 0.38rem;
|
|
border-radius: 999px;
|
|
background: rgba(184, 220, 255, 0.92);
|
|
box-shadow: 0 0 0.55rem rgba(143, 197, 255, 0.35);
|
|
animation: thinking-dot-pulse 960ms var(--motion-snappy) infinite;
|
|
}
|
|
|
|
.thinking-indicator-dot:nth-child(2) {
|
|
animation-delay: 120ms;
|
|
}
|
|
|
|
.thinking-indicator-dot:nth-child(3) {
|
|
animation-delay: 240ms;
|
|
}
|
|
|
|
.thinking-indicator p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: 0.82rem;
|
|
line-height: 1.6;
|
|
max-width: 34rem;
|
|
}
|
|
|
|
.bubble-role {
|
|
display: inline-block;
|
|
margin-bottom: 0.4rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
font-size: 0.68rem;
|
|
}
|
|
|
|
.bubble p {
|
|
margin: 0;
|
|
line-height: 1.65;
|
|
}
|
|
|
|
.assistant-sequence {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.55rem;
|
|
}
|
|
|
|
.markdown-body {
|
|
line-height: 1.7;
|
|
transform-origin: left top;
|
|
}
|
|
|
|
.markdown-body p,
|
|
.markdown-body ul,
|
|
.markdown-body ol,
|
|
.markdown-body pre,
|
|
.markdown-body blockquote {
|
|
margin: 0 0 0.85rem;
|
|
}
|
|
|
|
.markdown-body > :last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.markdown-body pre,
|
|
.tool-card-body pre {
|
|
margin: 0;
|
|
padding: 0.75rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.45rem;
|
|
background: #0f141a;
|
|
overflow: auto;
|
|
font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.tool-card-body pre {
|
|
font-size: 0.74rem;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
.tool-card {
|
|
max-width: min(46rem, 92%);
|
|
overflow: hidden;
|
|
transform-origin: top left;
|
|
transition:
|
|
border-color 240ms var(--motion-soft),
|
|
background-color 240ms var(--motion-soft),
|
|
transform 300ms var(--motion-emphasized),
|
|
box-shadow 300ms var(--motion-soft);
|
|
}
|
|
|
|
.reasoning-card {
|
|
max-width: min(46rem, 92%);
|
|
overflow: hidden;
|
|
border: 1px dashed rgba(143, 197, 255, 0.42);
|
|
border-radius: 0.55rem;
|
|
background: rgba(143, 197, 255, 0.08);
|
|
transform-origin: top left;
|
|
transition:
|
|
border-color 240ms var(--motion-soft),
|
|
background-color 240ms var(--motion-soft),
|
|
transform 300ms var(--motion-emphasized),
|
|
box-shadow 300ms var(--motion-soft);
|
|
}
|
|
|
|
.reasoning-card-summary,
|
|
.tool-card-summary,
|
|
.tool-nested-summary {
|
|
width: 100%;
|
|
border: 0;
|
|
background: transparent;
|
|
color: inherit;
|
|
font: inherit;
|
|
text-align: left;
|
|
}
|
|
|
|
.reasoning-card-summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
list-style: none;
|
|
cursor: pointer;
|
|
padding: 0.7rem 0.85rem;
|
|
transition: padding 260ms var(--motion-emphasized);
|
|
}
|
|
|
|
.reasoning-card-title {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.55rem;
|
|
}
|
|
|
|
.reasoning-card-title strong {
|
|
font-size: 0.8rem;
|
|
color: #b8dcff;
|
|
}
|
|
|
|
.reasoning-card-body-wrap {
|
|
height: 0;
|
|
opacity: 0;
|
|
transform: translateY(-0.25rem) scaleY(0.985);
|
|
transform-origin: top;
|
|
overflow: hidden;
|
|
will-change: height, opacity, transform;
|
|
transition:
|
|
height 420ms var(--motion-emphasized),
|
|
opacity 260ms var(--motion-soft),
|
|
transform 420ms var(--motion-emphasized);
|
|
}
|
|
|
|
.reasoning-card.is-open .reasoning-card-body-wrap {
|
|
opacity: 1;
|
|
transform: translateY(0) scaleY(1);
|
|
}
|
|
|
|
.reasoning-card-body {
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
padding: 0 0.85rem 0.85rem;
|
|
}
|
|
|
|
.tool-card-summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
list-style: none;
|
|
cursor: pointer;
|
|
padding: 0.75rem 0.85rem;
|
|
transition: padding 280ms var(--motion-emphasized);
|
|
}
|
|
|
|
.tool-card.is-open {
|
|
border-color: var(--line-strong);
|
|
box-shadow: 0 18px 36px rgba(6, 10, 14, 0.16);
|
|
transform: translateY(-0.05rem);
|
|
}
|
|
|
|
.tool-card-title-row,
|
|
.tool-card-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.tool-card-title-row {
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.tool-card-title strong {
|
|
font-size: 0.84rem;
|
|
}
|
|
|
|
.tool-status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.35rem;
|
|
padding: 0.2rem 0.45rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.4rem;
|
|
font-size: 0.74rem;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.tool-status-pill.is-running,
|
|
.tool-status-pill.is-pending {
|
|
color: #8fc5ff;
|
|
}
|
|
|
|
.tool-status-pill.is-completed {
|
|
color: #96d7b5;
|
|
}
|
|
|
|
.tool-status-pill.is-error {
|
|
color: #efac9e;
|
|
}
|
|
|
|
.tool-card-chevron {
|
|
color: var(--muted);
|
|
transition: transform 260ms var(--motion-snappy), color 180ms var(--motion-soft);
|
|
}
|
|
|
|
.tool-card.is-open .tool-card-chevron {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.tool-card-body {
|
|
display: grid;
|
|
gap: 0.75rem;
|
|
padding: 0 0.85rem 0.85rem;
|
|
}
|
|
|
|
.tool-card-body-wrap {
|
|
height: 0;
|
|
opacity: 0;
|
|
transform: translateY(-0.25rem) scaleY(0.985);
|
|
transform-origin: top;
|
|
overflow: hidden;
|
|
will-change: height, opacity, transform;
|
|
transition:
|
|
height 420ms var(--motion-emphasized),
|
|
opacity 240ms var(--motion-soft),
|
|
transform 420ms var(--motion-emphasized);
|
|
}
|
|
|
|
.tool-card.is-open .tool-card-body-wrap {
|
|
opacity: 1;
|
|
transform: translateY(0) scaleY(1);
|
|
}
|
|
|
|
.tool-card-body-wrap > .tool-card-body {
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tool-card-section {
|
|
display: grid;
|
|
gap: 0.35rem;
|
|
}
|
|
|
|
.tool-nested-list {
|
|
display: grid;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.tool-card-middle-sequence {
|
|
display: grid;
|
|
gap: 0.55rem;
|
|
}
|
|
|
|
.bubble-tool-inline,
|
|
.tool-inline-reasoning {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.bubble-tool-inline {
|
|
background: #12171d;
|
|
}
|
|
|
|
.bubble-tool-inline .bubble-role {
|
|
color: #96d7b5;
|
|
}
|
|
|
|
.bubble-tool-inline .markdown-body > :first-child,
|
|
.tool-inline-reasoning .markdown-body > :first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.stream-delta {
|
|
display: inline;
|
|
animation: stream-delta-in 900ms var(--motion-emphasized) both;
|
|
will-change: opacity, filter;
|
|
}
|
|
|
|
.tool-nested-item {
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.45rem;
|
|
background: #12171d;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tool-nested-item.is-response {
|
|
border-color: rgba(150, 215, 181, 0.32);
|
|
background: rgba(150, 215, 181, 0.08);
|
|
}
|
|
|
|
.tool-nested-item.is-reasoning {
|
|
border-color: rgba(143, 197, 255, 0.34);
|
|
background: rgba(143, 197, 255, 0.08);
|
|
}
|
|
|
|
.tool-nested-item.is-progress {
|
|
border-color: rgba(255, 196, 107, 0.28);
|
|
background: rgba(255, 196, 107, 0.07);
|
|
}
|
|
|
|
.tool-nested-item.is-error {
|
|
border-color: rgba(239, 172, 158, 0.3);
|
|
background: rgba(239, 172, 158, 0.08);
|
|
}
|
|
|
|
.tool-nested-item.is-result {
|
|
border-color: rgba(154, 168, 183, 0.24);
|
|
background: rgba(154, 168, 183, 0.05);
|
|
}
|
|
|
|
.tool-nested-item-topline {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.tool-nested-item-actions {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
}
|
|
|
|
.tool-nested-summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.75rem;
|
|
padding: 0.6rem 0.7rem;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tool-nested-body-wrap {
|
|
height: 0;
|
|
opacity: 0;
|
|
transform: translateY(-0.2rem) scaleY(0.985);
|
|
transform-origin: top;
|
|
overflow: hidden;
|
|
will-change: height, opacity, transform;
|
|
transition:
|
|
height 360ms var(--motion-emphasized),
|
|
opacity 220ms var(--motion-soft),
|
|
transform 360ms var(--motion-emphasized);
|
|
}
|
|
|
|
.tool-nested-item.is-open .tool-nested-body-wrap {
|
|
opacity: 1;
|
|
transform: translateY(0) scaleY(1);
|
|
}
|
|
|
|
.tool-nested-body {
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
display: grid;
|
|
gap: 0.45rem;
|
|
padding: 0 0.7rem 0.7rem;
|
|
}
|
|
|
|
.tool-nested-chevron {
|
|
color: var(--muted);
|
|
transition: transform 220ms var(--motion-snappy), color 180ms var(--motion-soft);
|
|
}
|
|
|
|
.tool-nested-item.is-open .tool-nested-chevron {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.tool-nested-item-topline strong {
|
|
font-size: 0.78rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.tool-nested-item p {
|
|
margin: 0.35rem 0 0;
|
|
font-size: 0.74rem;
|
|
line-height: 1.45;
|
|
color: var(--muted);
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.tool-nested-block {
|
|
display: grid;
|
|
gap: 0.3rem;
|
|
margin-top: 0.45rem;
|
|
}
|
|
|
|
.tool-nested-block.is-response .tool-card-label {
|
|
color: #96d7b5;
|
|
}
|
|
|
|
.tool-nested-block.is-reasoning .tool-card-label {
|
|
color: #8fc5ff;
|
|
}
|
|
|
|
.tool-nested-block.is-progress .tool-card-label {
|
|
color: #ffc46b;
|
|
}
|
|
|
|
.tool-nested-block.is-error .tool-card-label {
|
|
color: #efac9e;
|
|
}
|
|
|
|
.tool-nested-block pre {
|
|
margin: 0;
|
|
padding: 0.65rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.45rem;
|
|
background: #0f141a;
|
|
overflow: auto;
|
|
font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
|
|
font-size: 0.72rem;
|
|
line-height: 1.45;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
.tool-nested-status {
|
|
font-size: 0.72rem;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.tool-nested-status.is-running {
|
|
color: #8fc5ff;
|
|
}
|
|
|
|
.tool-nested-status.is-completed {
|
|
color: #96d7b5;
|
|
}
|
|
|
|
.tool-nested-status.is-error {
|
|
color: #efac9e;
|
|
}
|
|
|
|
.tool-card-label {
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
}
|
|
|
|
.chat-composer-shell {
|
|
display: grid;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.chat-composer-shell.is-dragging-files {
|
|
outline: 1px dashed var(--accent-line);
|
|
outline-offset: 0.25rem;
|
|
}
|
|
|
|
.chat-composer-row {
|
|
display: flex;
|
|
align-items: stretch;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.composer-attach-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2.75rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.55rem;
|
|
background: var(--surface);
|
|
color: var(--ink);
|
|
cursor: pointer;
|
|
transition: border-color 140ms ease, background-color 140ms ease;
|
|
}
|
|
|
|
.composer-attach-button:hover {
|
|
border-color: var(--line-strong);
|
|
}
|
|
|
|
.composer-attach-button input {
|
|
display: none;
|
|
}
|
|
|
|
.composer-image-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.composer-image-item {
|
|
width: 7rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.55rem;
|
|
background: var(--surface-soft);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.composer-image-item img,
|
|
.user-image-preview {
|
|
display: block;
|
|
width: 100%;
|
|
object-fit: cover;
|
|
cursor: zoom-in;
|
|
}
|
|
|
|
.composer-image-item img {
|
|
height: 5rem;
|
|
}
|
|
|
|
.composer-image-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 0.35rem;
|
|
padding: 0.45rem 0.5rem;
|
|
}
|
|
|
|
.composer-image-meta span {
|
|
min-width: 0;
|
|
font-size: 0.72rem;
|
|
color: var(--muted);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.composer-image-remove {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 1.5rem;
|
|
height: 1.5rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.4rem;
|
|
background: var(--surface);
|
|
color: var(--muted);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.composer-image-remove:hover {
|
|
border-color: var(--line-strong);
|
|
color: var(--ink);
|
|
}
|
|
|
|
.user-image-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(6.5rem, 1fr));
|
|
gap: 0.5rem;
|
|
margin-bottom: 0.65rem;
|
|
}
|
|
|
|
.user-image-preview {
|
|
max-height: 10rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 0.45rem;
|
|
background: #10151b;
|
|
}
|
|
|
|
.image-lightbox {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 30;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 1.5rem;
|
|
background: rgba(9, 12, 16, 0.82);
|
|
backdrop-filter: blur(6px);
|
|
}
|
|
|
|
.image-lightbox-content {
|
|
position: relative;
|
|
max-width: min(92vw, 72rem);
|
|
max-height: min(92vh, 56rem);
|
|
display: grid;
|
|
gap: 0.65rem;
|
|
padding: 0.85rem;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 0.75rem;
|
|
background: #12161c;
|
|
}
|
|
|
|
.image-lightbox-close {
|
|
position: absolute;
|
|
top: 0.75rem;
|
|
right: 0.75rem;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 2rem;
|
|
height: 2rem;
|
|
border: 1px solid var(--line);
|
|
border-radius: 999px;
|
|
background: rgba(18, 22, 28, 0.92);
|
|
color: var(--ink);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.image-lightbox-image {
|
|
max-width: 100%;
|
|
max-height: min(80vh, 48rem);
|
|
border-radius: 0.45rem;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.image-lightbox-caption {
|
|
margin: 0;
|
|
font-size: 0.82rem;
|
|
color: var(--muted);
|
|
text-align: center;
|
|
}
|
|
|
|
.chat-composer {
|
|
flex: 1;
|
|
resize: none;
|
|
min-height: 4.1rem;
|
|
padding: 0.6rem 0.75rem;
|
|
line-height: 1.45;
|
|
font: inherit;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.send-button {
|
|
flex: 0 0 2.75rem;
|
|
width: 2.75rem;
|
|
height: auto;
|
|
}
|
|
|
|
.error-banner {
|
|
padding: 0.7rem 0.8rem;
|
|
color: #f0c0b5;
|
|
background: #211716;
|
|
border-color: #3b2421;
|
|
}
|
|
|
|
.resize-handle {
|
|
position: relative;
|
|
background: transparent;
|
|
}
|
|
|
|
.resize-handle::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
margin: auto;
|
|
background: var(--line-strong);
|
|
}
|
|
|
|
.resize-handle-vertical {
|
|
width: 0.625rem;
|
|
}
|
|
|
|
.resize-handle-vertical::before {
|
|
width: 1px;
|
|
height: 100%;
|
|
}
|
|
|
|
.resize-handle-horizontal {
|
|
height: 0.625rem;
|
|
}
|
|
|
|
.resize-handle-horizontal::before {
|
|
width: 100%;
|
|
height: 1px;
|
|
}
|
|
|
|
.viewport-panel-content,
|
|
.code-panel-content {
|
|
flex: 1;
|
|
}
|
|
|
|
.code-scroll-shell {
|
|
height: 100%;
|
|
overflow: auto;
|
|
}
|
|
|
|
.code-scroll-view {
|
|
margin: 0;
|
|
min-height: 100%;
|
|
padding: 0.75rem 0;
|
|
font-size: 0.82rem;
|
|
font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
|
|
}
|
|
|
|
.code-syntax-view {
|
|
min-height: 100%;
|
|
}
|
|
|
|
.code-syntax-view pre,
|
|
.code-syntax-view code {
|
|
font-family: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace !important;
|
|
}
|
|
|
|
.code-syntax-view .linenumber {
|
|
min-width: 2.4rem !important;
|
|
}
|
|
|
|
.model-canvas-shell,
|
|
.code-panel-content > div {
|
|
height: 100%;
|
|
}
|
|
|
|
.viewport-empty-state,
|
|
.code-empty-state,
|
|
.chat-empty-state {
|
|
height: 100%;
|
|
}
|
|
|
|
.empty-state {
|
|
display: grid;
|
|
place-items: center;
|
|
gap: 0.4rem;
|
|
padding: 1.25rem;
|
|
text-align: center;
|
|
}
|
|
|
|
.empty-state.is-clickable {
|
|
width: 100%;
|
|
font: inherit;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
transition: border-color 140ms ease, background-color 140ms ease;
|
|
}
|
|
|
|
.empty-state.is-clickable:hover {
|
|
border-color: var(--line-strong);
|
|
background: var(--surface-active);
|
|
}
|
|
|
|
.empty-state.is-clickable h3,
|
|
.empty-state.is-clickable p {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.empty-state h3 {
|
|
margin: 0;
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.empty-state p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.hidden-file-input {
|
|
display: none;
|
|
}
|
|
|
|
.toolbar-button:focus-visible,
|
|
.send-button:focus-visible,
|
|
.conversation-item:focus-visible,
|
|
.conversation-delete-button:focus-visible,
|
|
.composer-attach-button:focus-visible,
|
|
.composer-image-remove:focus-visible,
|
|
.image-lightbox-close:focus-visible,
|
|
.rail-item:focus-visible,
|
|
.chat-composer:focus-visible,
|
|
.tool-card-summary:focus-visible,
|
|
.reasoning-card-summary:focus-visible,
|
|
.tool-nested-summary:focus-visible,
|
|
.model-select select:focus-visible,
|
|
.download-link:focus-visible {
|
|
outline: 2px solid var(--focus);
|
|
outline-offset: 1px;
|
|
}
|
|
|
|
.empty-state.is-clickable:focus-visible {
|
|
outline: 2px solid var(--focus);
|
|
outline-offset: 1px;
|
|
}
|
|
|
|
.spin {
|
|
animation: spin 1.1s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes stream-delta-in {
|
|
0% {
|
|
opacity: 0;
|
|
filter: blur(9px);
|
|
}
|
|
|
|
18% {
|
|
opacity: 0.04;
|
|
filter: blur(8.4px);
|
|
}
|
|
|
|
42% {
|
|
opacity: 0.18;
|
|
filter: blur(6.4px);
|
|
}
|
|
|
|
72% {
|
|
opacity: 0.64;
|
|
filter: blur(2.6px);
|
|
}
|
|
|
|
100% {
|
|
opacity: 1;
|
|
filter: blur(0);
|
|
}
|
|
}
|
|
|
|
@keyframes thinking-breath {
|
|
0%,
|
|
100% {
|
|
border-color: rgba(143, 197, 255, 0.28);
|
|
box-shadow: 0 0 0 rgba(143, 197, 255, 0);
|
|
}
|
|
|
|
50% {
|
|
border-color: rgba(143, 197, 255, 0.5);
|
|
box-shadow: 0 0 1.2rem rgba(143, 197, 255, 0.08);
|
|
}
|
|
}
|
|
|
|
@keyframes thinking-dot-pulse {
|
|
0%,
|
|
100% {
|
|
opacity: 0.28;
|
|
transform: translateY(0) scale(0.82);
|
|
filter: blur(0.6px);
|
|
}
|
|
|
|
45% {
|
|
opacity: 1;
|
|
transform: translateY(-0.08rem) scale(1.08);
|
|
filter: blur(0);
|
|
}
|
|
}
|
|
|
|
@keyframes thinking-sheen {
|
|
0% {
|
|
transform: translateX(-120%);
|
|
opacity: 0;
|
|
}
|
|
|
|
18% {
|
|
opacity: 1;
|
|
}
|
|
|
|
58% {
|
|
transform: translateX(120%);
|
|
opacity: 0.7;
|
|
}
|
|
|
|
100% {
|
|
transform: translateX(120%);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.sidebar,
|
|
.bubble,
|
|
.tool-card,
|
|
.reasoning-card,
|
|
.tool-card-summary,
|
|
.reasoning-card-summary,
|
|
.tool-nested-summary,
|
|
.tool-card-chevron,
|
|
.tool-nested-chevron,
|
|
.tool-card-body-wrap,
|
|
.reasoning-card-body-wrap,
|
|
.tool-nested-body-wrap,
|
|
.bubble-thinking,
|
|
.bubble-thinking::after,
|
|
.thinking-indicator-dot,
|
|
.stream-delta {
|
|
transition: none !important;
|
|
animation: none !important;
|
|
transform: none !important;
|
|
filter: none !important;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1080px) {
|
|
.app-shell {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.sidebar,
|
|
.sidebar.is-collapsed {
|
|
width: auto;
|
|
flex-basis: auto;
|
|
height: auto;
|
|
}
|
|
|
|
.workspace-shell {
|
|
padding-top: 0;
|
|
}
|
|
|
|
.panel-header,
|
|
.chat-composer-row {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.send-button {
|
|
width: 100%;
|
|
flex-basis: auto;
|
|
}
|
|
}
|