style(agent-office): designer 마감 — 타임라인 스파인·신호등 도트·level 색·펄스 강조

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-11 09:17:32 +09:00
parent 833b590afb
commit f6b8badd12

View File

@@ -448,49 +448,101 @@
} }
} }
/* ── 횡단 오버사이트 타임라인 ── */ /* ── 횡단 오버사이트 타임라인 (mission-control activity log) ── */
.ao-activity { display: flex; flex-direction: column; min-height: 0; } .ao-activity { display: flex; flex-direction: column; min-height: 0; height: 100%; }
.ao-activity-header { display: flex; align-items: center; }
/* 헤더 — 섹션 타이틀 톤 (퍼플 액센트 + 트래킹) */
.ao-activity-header { align-items: center; }
.ao-activity-header .ao-sidepanel-name {
color: #8b5cf6; letter-spacing: 0.6px; text-transform: uppercase; font-size: 13px;
}
/* 필터 바 — 다크 슬레이트 셀렉트 */
.ao-activity-filters { .ao-activity-filters {
display: flex; flex-wrap: wrap; gap: 6px; display: flex; flex-wrap: wrap; gap: 6px;
padding: 8px 12px; border-bottom: 1px solid #1f2937; padding: 8px 12px; border-bottom: 1px solid #333;
background: rgba(15, 23, 42, 0.6);
} }
.ao-activity-select { .ao-activity-select {
background: #111827; color: #e5e7eb; background: #1e293b; color: #e2e8f0;
border: 1px solid #374151; border-radius: 6px; border: 1px solid #334155; border-radius: 4px;
padding: 4px 8px; font-size: 12px; padding: 4px 8px; font-family: inherit; font-size: 11px; cursor: pointer;
transition: border-color .12s, box-shadow .12s;
} }
.ao-activity-select:disabled { opacity: .4; cursor: not-allowed; } .ao-activity-select:hover { border-color: #475569; }
.ao-activity-select:focus { outline: none; border-color: #8b5cf6; box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.3); }
.ao-activity-select:disabled { opacity: .35; cursor: not-allowed; }
.ao-activity-content { flex: 1; overflow-y: auto; min-height: 0; } .ao-activity-content { flex: 1; overflow-y: auto; min-height: 0; padding: 0; }
/* 활동 행 — 타임라인 스파인(수직 레일) + 신호등 도트 */
.ao-activity-item { .ao-activity-item {
position: relative;
display: flex; align-items: flex-start; gap: 10px; display: flex; align-items: flex-start; gap: 10px;
padding: 10px 12px; border-bottom: 1px solid #161b25; padding: 10px 12px; border-bottom: 1px solid #1a2233;
cursor: pointer; transition: background .12s; cursor: pointer; transition: background .12s;
animation: ao-activity-in .18s ease-out both;
} }
.ao-activity-item:hover { background: #161b25; } .ao-activity-item::before {
.ao-activity-item.is-highlight { background: rgba(245, 158, 11, .08); } content: ''; position: absolute; left: 16px; top: 0; bottom: 0;
.ao-activity-dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; margin-top: 5px; } width: 1px; background: #1e293b; z-index: 0;
}
.ao-activity-item:hover { background: #161b2e; }
.ao-activity-item:focus-visible { outline: none; background: #161b2e; box-shadow: inset 2px 0 0 #8b5cf6; }
/* 진행/대기 강조 — 앰버 인셋 + 도트 펄스 */
.ao-activity-item.is-highlight { background: rgba(245, 158, 11, 0.06); box-shadow: inset 2px 0 0 #f59e0b; }
.ao-activity-item.is-highlight .ao-activity-dot { animation: ao-pulse 1.6s ease-in-out infinite; }
/* 에이전트 색 = 신호등. 링(#111)으로 뒤 레일을 끊어 점처럼 떠 보이게 */
.ao-activity-dot {
position: relative; z-index: 1; flex: 0 0 auto;
width: 9px; height: 9px; border-radius: 50%; margin-top: 4px;
box-shadow: 0 0 0 3px #111;
}
.ao-activity-body { flex: 1; min-width: 0; } .ao-activity-body { flex: 1; min-width: 0; }
.ao-activity-line { display: flex; align-items: center; gap: 8px; } .ao-activity-line { display: flex; align-items: center; gap: 8px; }
.ao-activity-agent { font-size: 12px; font-weight: 600; } .ao-activity-agent { font-size: 11px; font-weight: bold; letter-spacing: 0.3px; }
.ao-activity-badge { font-size: 11px; padding: 1px 7px; border-radius: 10px; white-space: nowrap; }
.ao-activity-level { font-size: 12px; } /* 상태 뱃지 — 터미널 톤(각진 모서리, 모노) */
.ao-activity-badge {
font-size: 10px; font-weight: bold; letter-spacing: 0.3px;
padding: 1px 7px; border-radius: 4px; white-space: nowrap;
}
/* 로그 레벨 표식 */
.ao-activity-level { font-size: 12px; line-height: 1; }
.ao-activity-level.level-info { color: #475569; font-size: 15px; font-weight: bold; }
.ao-activity-level.level-warning,
.ao-activity-level.level-error { font-size: 12px; }
.ao-activity-msg { .ao-activity-msg {
font-size: 13px; color: #cbd5e1; margin-top: 2px; font-size: 12.5px; color: #cbd5e1; margin-top: 3px;
overflow: hidden; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
} }
.ao-activity-item.is-log .ao-activity-msg { color: #94a3b8; }
.ao-activity-meta { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; } .ao-activity-meta { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.ao-activity-time { font-size: 11px; color: #6b7280; } .ao-activity-time { font-size: 10px; color: #64748b; }
.ao-activity-dur { font-size: 10px; color: #475569; } .ao-activity-dur { font-size: 10px; color: #475569; }
.ao-activity-loading, .ao-activity-loading,
.ao-activity-end { text-align: center; padding: 12px; font-size: 12px; color: #6b7280; } .ao-activity-end {
.ao-activity-sentinel { height: 1px; } text-align: center; padding: 12px; font-size: 10px;
.ao-activity-error { padding: 12px; font-size: 13px; color: #fca5a5; } color: #475569; letter-spacing: 0.6px; text-transform: uppercase;
.ao-activity-error button { }
margin-left: 8px; background: #374151; color: #e5e7eb; .ao-activity-sentinel { height: 1px; }
border: none; border-radius: 6px; padding: 2px 10px; cursor: pointer;
.ao-activity-error { padding: 12px; font-size: 12px; color: #fca5a5; }
.ao-activity-error button {
margin-left: 8px; background: #2a2a4e; color: #8b5cf6;
border: 1px solid #4c1d95; border-radius: 4px;
padding: 3px 10px; font-family: inherit; font-size: 11px; cursor: pointer;
}
.ao-activity-error button:hover { background: #3a3a5e; }
@keyframes ao-activity-in {
from { opacity: 0; transform: translateY(2px); }
to { opacity: 1; transform: none; }
} }