humainflow-web/src/app/shared/flow-assistant/flow-assistant.css

365 lines
6.4 KiB
CSS

.assistant-shell {
display: flex;
flex-direction: column;
height: 100%;
min-height: 0;
overflow: hidden;
background:
radial-gradient(circle at top right, rgba(251, 191, 36, 0.18), transparent 26%),
radial-gradient(circle at bottom left, rgba(14, 165, 233, 0.14), transparent 30%),
linear-gradient(180deg, #fffdf7 0%, #f8fafc 100%);
border-left: 1px solid #dbe4ee;
}
.assistant-scroll {
display: flex;
flex: 1 1 auto;
min-height: 0;
flex-direction: column;
gap: 10px;
padding: 18px 18px 10px;
overflow-y: auto;
overflow-x: hidden;
}
.assistant-header {
display: flex;
align-items: flex-start;
justify-content: flex-start;
}
.assistant-eyebrow {
margin: 0 0 4px;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #b45309;
}
.assistant-title {
margin: 0;
font-size: 28px;
line-height: 1;
font-weight: 800;
color: #0f172a;
}
.assistant-intent {
padding: 6px 10px;
border-radius: 999px;
background: #0f172a;
color: #f8fafc;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
}
.assistant-intent-row {
display: flex;
justify-content: flex-start;
}
.assistant-card {
padding: 12px;
border: 1px solid rgba(148, 163, 184, 0.24);
border-radius: 16px;
background: rgba(255, 255, 255, 0.82);
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.06);
}
.assistant-busy-card {
border-color: rgba(15, 118, 110, 0.28);
background:
linear-gradient(180deg, rgba(240, 253, 250, 0.96), rgba(248, 250, 252, 0.96));
}
.assistant-busy-row {
display: flex;
align-items: flex-start;
gap: 12px;
}
.assistant-busy-spinner {
width: 18px;
height: 18px;
flex: 0 0 auto;
margin-top: 2px;
border-radius: 999px;
border: 2px solid rgba(15, 118, 110, 0.18);
border-top-color: #0f766e;
animation: assistant-spin 0.85s linear infinite;
}
.assistant-busy-title {
font-size: 14px;
font-weight: 700;
color: #0f172a;
}
.assistant-busy-copy {
margin: 4px 0 0;
font-size: 12px;
line-height: 1.45;
color: #475569;
}
.assistant-progress {
display: grid;
gap: 6px;
margin-top: 12px;
}
.assistant-progress-step {
position: relative;
display: block;
padding-left: 18px;
font-size: 12px;
color: #64748b;
}
.assistant-progress-step::before {
content: '';
position: absolute;
left: 0;
top: 6px;
width: 8px;
height: 8px;
border-radius: 999px;
background: #cbd5e1;
}
.assistant-progress-step-active {
color: #0f172a;
font-weight: 600;
}
.assistant-progress-step-active::before {
background: #0f766e;
box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
}
.assistant-copy,
.assistant-meta,
.assistant-error,
.assistant-label {
margin: 0;
}
.assistant-copy {
color: #334155;
font-size: 13px;
line-height: 1.45;
margin-bottom: 8px;
}
.assistant-label {
display: block;
margin-bottom: 8px;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #64748b;
}
.assistant-select,
.assistant-input,
.assistant-send,
.assistant-chip {
font: inherit;
}
.assistant-select,
.assistant-input {
width: 100%;
border: 1px solid #cbd5e1;
border-radius: 12px;
background: #fff;
color: #0f172a;
}
.assistant-select {
padding: 10px 12px;
}
.assistant-meta {
margin-top: 8px;
color: #475569;
font-size: 12px;
}
.assistant-error {
margin-top: 8px;
color: #b91c1c;
font-size: 12px;
}
.assistant-chip-grid {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.assistant-section-head,
.assistant-starters-head {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
margin-bottom: 8px;
}
.assistant-section-toggle {
width: 24px;
height: 24px;
border: 0;
border-radius: 999px;
background: transparent;
color: #64748b;
font-size: 16px;
line-height: 1;
font-weight: 700;
}
.assistant-chip {
padding: 9px 12px;
border: 1px solid #d6d3d1;
border-radius: 999px;
background: linear-gradient(180deg, #fff, #fff7ed);
color: #7c2d12;
font-size: 11px;
line-height: 1.35;
text-align: left;
cursor: pointer;
transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}
.assistant-chip:hover {
transform: translateY(-1px);
border-color: #fb923c;
box-shadow: 0 8px 18px rgba(249, 115, 22, 0.16);
}
.assistant-thread {
min-height: 120px;
overflow: visible;
display: flex;
flex-direction: column;
gap: 8px;
padding-right: 2px;
}
.assistant-message {
padding: 12px 14px;
border-radius: 16px 16px 16px 6px;
background: #fff;
border: 1px solid rgba(226, 232, 240, 0.95);
}
.assistant-message-user {
align-self: flex-end;
max-width: 92%;
border-radius: 16px 16px 6px 16px;
background: linear-gradient(180deg, #fef3c7, #fffbeb);
border-color: #f59e0b;
}
.assistant-message-system {
background: #eff6ff;
border-color: #bfdbfe;
}
.assistant-message-role {
margin-bottom: 6px;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #64748b;
}
.assistant-message-body {
margin: 0;
white-space: pre-wrap;
color: #0f172a;
line-height: 1.45;
font-size: 13px;
}
.assistant-list {
margin-top: 10px;
display: grid;
gap: 6px;
font-size: 12px;
}
.assistant-list-warning {
color: #92400e;
}
.assistant-list-error {
color: #991b1b;
}
.assistant-composer {
display: grid;
gap: 8px;
padding: 12px;
margin: 0 18px 18px;
border: 1px solid rgba(148, 163, 184, 0.24);
border-radius: 16px;
background: rgba(255, 255, 255, 0.92);
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.06);
flex: 0 0 auto;
}
.assistant-input {
resize: vertical;
min-height: 88px;
max-height: 160px;
padding: 12px 14px;
line-height: 1.45;
}
.assistant-input:disabled,
.assistant-send:disabled {
cursor: not-allowed;
opacity: 0.65;
}
.assistant-send {
display: inline-flex;
align-items: center;
justify-content: center;
width: 100%;
min-height: 44px;
padding: 10px 16px;
border: 0;
border-radius: 999px;
background: linear-gradient(135deg, #0f766e, #0f172a);
color: #fff;
box-shadow: 0 12px 22px rgba(15, 23, 42, 0.18);
font-weight: 700;
letter-spacing: 0.03em;
line-height: 1;
flex-shrink: 0;
}
.assistant-send:not(:disabled):hover {
filter: brightness(1.05);
}
@keyframes assistant-spin {
to {
transform: rotate(360deg);
}
}
@media (max-width: 1100px) {
.assistant-shell {
border-left: 0;
border-top: 1px solid #dbe4ee;
}
}