.canvas-output-log { position: absolute; z-index: 72; right: 14px; bottom: 14px; display: inline-flex; align-items: center; gap: 7px; height: 34px; padding: 0 12px; border: 1px solid var(--line); border-radius: 7px; background: var(--panel); color: var(--muted); font-size: 12px; cursor: pointer; }
.canvas-output-log svg { width: 15px; height: 15px; }
.canvas-output-log:hover, .canvas-output-log.active { color: var(--text); background: var(--panel-2); }
.canvas-output-log[hidden] { display: none; }
.canvas-output-log.is-converted { visibility: hidden; pointer-events: none; }
.global-log-panel { --console-font: 'Cascadia Mono','Cascadia Code',Consolas,'Microsoft YaHei UI',monospace; --console-bg: #16181b; --console-text: #d9dfe7; --console-dim: #919da9; --console-cyan: #83d4da; --console-green: #8dd6a9; --console-red: #f29b9e; --console-amber: #ebc583; position: absolute; z-index: 71; left: 0; top: 0; right: auto; bottom: auto; transform-origin: top left; contain: layout style; display: grid; grid-template-rows: auto auto minmax(0,1fr); width: min(860px,calc(100vw - 28px)); height: min(360px,calc(100dvh - 86px)); overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--console-bg); color: var(--console-text); box-shadow: 0 12px 40px #00000024; cursor: default; }
:root[data-theme="light"] .global-log-panel { --console-bg: #fbfcfe; --console-text: #263340; --console-dim: #637182; --console-cyan: #146872; --console-green: #27733f; --console-red: #b23843; --console-amber: #82601b; }
.global-log-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 43px; padding: 7px 13px; border-bottom: 1px solid var(--line); background: var(--panel); }
.global-log-panel > header > span { display: flex; flex: 1; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 0; }
.global-log-panel > header > span > i { width: 6px; height: 6px; border-radius: 50%; background: var(--console-green); }
.global-log-panel > header strong { font-size: 13px; font-weight: 500; }
.global-log-panel > header small { margin-left: 7px; color: var(--console-dim); font-size: 11px; }
.global-log-panel > header > div { display: flex; flex-shrink: 0; gap: 3px; align-items: center; }
.global-log-panel > header button { min-width: 26px; height: 28px; padding: 0 5px; border: 0; border-radius: 5px; background: transparent; color: var(--console-dim); cursor: pointer; font-size: 12px; }
.global-log-panel > header button svg { width: 14px; height: 14px; }
.global-log-panel > header button:hover { background: var(--panel-2); color: var(--text); }
.global-log-panel button:disabled { opacity: .5; cursor: default; }
.global-log-panel > header { grid-row: 1; }
.global-log-panel > #global-log-notice { grid-row: 2; }
.global-log-panel > .activity-view { grid-row: 3; }
#global-log-notice { color: var(--console-red); font-size: 12px; padding: 8px 14px; }
#global-log-notice:empty { display: none; }
.activity-view { container-type: inline-size; min-height: 0; overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; padding: 12px 14px 16px; }
.activity-empty { color: var(--console-dim); margin: 10px 2px; font: 12px/1.7 var(--console-font); }
#global-log-list, .activity-task-log-list { margin: 0; padding: 0; list-style: none; font: 12px/1.75 var(--console-font); font-variant-numeric: tabular-nums; user-select: text; }
.activity-entry { margin: 0; padding: 0; }
.activity-log-line { display: grid; grid-template-columns: 110px 19px minmax(0,1fr); column-gap: 7px; align-items: baseline; padding: 2px 0; }
.activity-log-line time { color: var(--console-dim); font: inherit; white-space: nowrap; }
.activity-log-line > i { font-size: 13px; font-style: normal; }
.activity-log-line > span { min-width: 0; overflow-wrap: anywhere; white-space: pre-wrap; user-select: text; }
.activity-phase { display: flex; align-items: center; gap: 10px; margin: 12px 0 5px; color: var(--console-cyan); font: inherit; }
.activity-entry:first-child .activity-phase { margin-top: 2px; }
.activity-phase::before { content: ''; flex-shrink: 0; width: 18px; height: 2px; background: currentColor; opacity: .45; }
.activity-phase strong { font: inherit; font-weight: 500; overflow-wrap: anywhere; }
.activity-phase > i { flex: 1; min-width: 12px; height: 1px; background: currentColor; opacity: .3; }
.activity-phase small { min-width: 0; max-width: 35%; color: var(--console-dim); font: 10px var(--console-font); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.activity-entry.error .activity-log-line > span { color: var(--console-red); }
.activity-entry.warning .activity-log-line > span { color: var(--console-amber); }
.activity-entry.success .activity-log-line > span { color: var(--console-green); }
.activity-entry.sample .activity-log-line > span { color: var(--console-cyan); }
#global-task-list { display: grid; gap: 10px; align-content: start; }
.activity-task { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 5px 16px; padding: 11px 12px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); min-width: 0; }
.activity-task-heading { grid-column: 1; display: flex; align-items: center; flex-wrap: wrap; gap: 5px 11px; min-width: 0; }
.activity-task-name { min-width: 0; padding: 0; border: 0; background: transparent; color: var(--console-text); font-size: 12px; font-weight: 600; cursor: pointer; text-align: left; overflow-wrap: anywhere; }
.activity-task-name:hover { text-decoration: underline; }
.activity-task-name:disabled { opacity: 1; cursor: default; text-decoration: none; }
.activity-task-state { display: inline-flex; align-items: center; flex-shrink: 0; gap: 5px; color: var(--console-cyan); font-size: 11px; }
.activity-task-state::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.activity-task[data-status="queued"] .activity-task-state { color: var(--console-dim); }
.activity-task[data-status="paused"] .activity-task-state, .activity-task[data-status="cancelling"] .activity-task-state { color: var(--console-amber); }
.activity-task[data-status="failed"] .activity-task-state { color: var(--console-red); }
.activity-task[data-status="completed"] .activity-task-state { color: var(--console-green); }
.activity-task[data-status="cancelled"] .activity-task-state { color: var(--console-dim); }
.activity-task-context { grid-column: 1; color: var(--console-dim); font: 11px/1.5 var(--console-font); overflow-wrap: anywhere; }
.activity-task-detail { grid-column: 1/-1; display: flex; justify-content: space-between; gap: 14px; margin: 2px 0 0; font: 12px/1.6 var(--console-font); }
.activity-task-detail span { min-width: 0; overflow-wrap: anywhere; }
.activity-task-detail b { flex-shrink: 0; font-weight: 500; font-variant-numeric: tabular-nums; }
.activity-task progress { grid-column: 1/-1; display: block; width: 100%; height: 4px; margin: 2px 0; border: 0; border-radius: 4px; overflow: hidden; accent-color: var(--console-cyan); background: var(--line); }
.activity-task progress::-webkit-progress-bar { background: var(--line); }
.activity-task progress::-webkit-progress-value { background: var(--console-cyan); border-radius: 3px; }
.activity-task progress::-moz-progress-bar { background: var(--console-cyan); border-radius: 3px; }
.activity-task-actions { grid-column: 2; grid-row: 1/3; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.activity-task-actions small { color: var(--console-dim); font: 11px var(--console-font); }
.activity-cancel { padding: 3px 7px; border: 1px solid var(--line); border-radius: 4px; background: transparent; color: var(--console-dim); cursor: pointer; font-size: 11px; }
.activity-cancel:hover { color: var(--text); background: var(--panel); }
.activity-task-toggle { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; padding: 5px 4px 2px; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--console-dim); font-size: 11px; cursor: pointer; text-align: left; }
.activity-task-toggle:hover { color: var(--console-text); }
.activity-task-toggle[aria-expanded="true"] { color: var(--console-text); }
.activity-task-toggle small { color: var(--console-dim); font: inherit; }
.activity-task-chevron { margin-left: auto; font-size: 16px; line-height: 1; transition: transform 160ms ease; }
.activity-task-toggle[aria-expanded="true"] .activity-task-chevron { transform: rotate(180deg); }
.activity-task > .activity-task-toggle { grid-column: 1/-1; justify-self: stretch; margin-top: 3px; }
.activity-task-log-section { grid-column: 1/-1; min-width: 0; margin-top: 0; }
.activity-task-log-empty { margin: 4px 0; color: var(--console-dim); font: 11px/1.6 var(--console-font); }
.activity-other-logs { margin-top: 15px; padding-top: 11px; border-top: 1px solid var(--line); }
.activity-other-logs:has(#global-log-list:empty) { display: none; }
.activity-other-logs > h2 { margin: 0 0 6px; color: var(--console-dim); font-size: 11px; font-weight: 500; }
.node-task-status { position: absolute; top: 10px; right: 12px; z-index: 8; padding: 4px 7px; border-radius: 5px; background: var(--panel); color: var(--text); font-size: 12px; line-height: 1.4; transform: scale(clamp(1,var(--inverse-zoom),2)); transform-origin: top right; pointer-events: none; }
.global-log-panel [hidden] { display: none !important; }
.global-log-panel.is-moving, .global-log-panel.is-animating { will-change: transform; }
.global-log-panel.is-animating { pointer-events: none; }
.global-log-panel.is-moving, .global-log-panel.is-moving > header { cursor: grabbing; }
.global-log-panel.is-moving *, .global-log-panel.is-resizing * { user-select: none !important; }
.global-log-panel:focus { outline: none; }
.global-log-panel .activity-view { margin: 0 5px; }
.activity-task-detail, .activity-task-context { user-select: text; }
.global-log-panel .log-resize { position: absolute; z-index: 4; display: block; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; touch-action: none; }
.log-resize[data-log-resize="n"], .log-resize[data-log-resize="s"] { height: 6px; left: 12px; right: 12px; cursor: ns-resize; }
.log-resize[data-log-resize="n"] { top: 0; }
.log-resize[data-log-resize="s"] { bottom: 0; }
.log-resize[data-log-resize="w"], .log-resize[data-log-resize="e"] { width: 6px; top: 12px; bottom: 12px; cursor: ew-resize; }
.log-resize[data-log-resize="w"] { left: 0; }
.log-resize[data-log-resize="e"] { right: 0; }
.log-resize[data-log-resize="nw"], .log-resize[data-log-resize="ne"], .log-resize[data-log-resize="sw"], .log-resize[data-log-resize="se"] { width: 14px; height: 14px; }
.log-resize[data-log-resize="nw"] { left: 0; top: 0; cursor: nwse-resize; }
.log-resize[data-log-resize="ne"] { right: 0; top: 0; cursor: nesw-resize; }
.log-resize[data-log-resize="sw"] { left: 0; bottom: 0; cursor: nesw-resize; }
.log-resize[data-log-resize="se"] { right: 0; bottom: 0; cursor: nwse-resize; }
.log-resize[data-log-resize="se"]::after { content: ''; position: absolute; right: 4px; bottom: 4px; width: 7px; height: 7px; background: repeating-linear-gradient(135deg,transparent 0 2px,var(--console-dim) 2px 3px); clip-path: polygon(100% 0,100% 100%,0 100%); opacity: .7; }
.global-log-panel .log-resize:focus-visible { outline-offset: -3px; }
.global-log-panel button:focus-visible, .activity-view:focus-visible, .canvas-output-log:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
@container (max-width: 440px) { .activity-task { gap: 4px 8px; padding: 9px; } #global-log-list, .activity-task-log-list { font-size: 11px; } .activity-log-line { grid-template-columns: 100px 16px minmax(0,1fr); column-gap: 4px; } }
@media (max-width: 560px) { .global-log-panel > header { padding: 6px 9px; gap: 4px; } .global-log-panel > header small { margin-left: 0; } .activity-view { padding: 8px; } }
@media (prefers-reduced-motion: reduce) { .activity-task-chevron { transition: none; } }


