.view { height: 100%; display: flex; flex-direction: column; min-height: 0; background: var(--bg-editor); } .toolbar { flex: none; display: flex; align-items: center; gap: 6px; padding: 4px 8px; border-bottom: 1px solid var(--border); background: var(--bg-elev); } .device { width: 220px; min-width: 0; } .level { width: 130px; flex: none; } .search { flex: 1; min-width: 80px; } /* The virtual list: rows are absolutely positioned inside a spacer of total height. */ .log { flex: 1; min-height: 0; overflow: auto; font-family: var(--font-mono); font-size: var(--fs-code); line-height: var(--lh-code); color: var(--fg-editor); -webkit-user-select: text; user-select: text; cursor: text; position: relative; } .canvas { position: relative; width: 100%; } .row { position: absolute; top: 0; left: 0; width: 100%; display: flex; gap: 8px; padding: 0 8px; box-sizing: border-box; white-space: pre-wrap; overflow-wrap: anywhere; } .row:hover { background: var(--bg-hover); } .time { flex: none; width: 92px; color: var(--fg-subtle); } .pid { flex: none; width: 44px; text-align: right; color: var(--fg-subtle); } .tag { flex: none; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg-muted); } .message { flex: 1; min-width: 0; } /* Level colours follow Android Studio: errors red, warnings amber, info default, debug/verbose muted, and lines outside the message format dimmed. */ .levelV, .levelD, .levelU { color: var(--fg-subtle); } .levelI { color: var(--fg-editor); } .levelW { color: var(--warning); } .levelE, .levelF { color: var(--danger); } .levelF .message { font-weight: 600; } .empty { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--fg-subtle); font-family: var(--font-ui); font-size: var(--fs-small); pointer-events: none; } .status { flex: none; display: flex; align-items: center; gap: 10px; padding: 2px 8px; border-top: 1px solid var(--border); color: var(--fg-subtle); font-size: var(--fs-small); white-space: nowrap; overflow: hidden; } .count { margin-left: auto; } .warn { color: var(--warning); } .error { color: var(--danger); overflow: hidden; text-overflow: ellipsis; }