/* === DevServerLogViewer === */ .devserver-log-viewer { display: flex; flex-direction: column; height: 100%; min-height: 0; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); overflow: hidden; } .devserver-log-viewer--fullscreen { position: fixed; inset: 0; z-index: 120; border-radius: 0; } .devserver-log-viewer__toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); border-bottom: 1px solid var(--border); background: var(--card); } .devserver-log-viewer__toolbar-meta { display: flex; align-items: baseline; gap: var(--space-sm); } .devserver-log-viewer__title { color: var(--text); font-weight: 600; } .devserver-log-viewer__count { color: var(--text-muted); font-family: var(--font-mono); font-size: 0.75rem; } .devserver-log-viewer__toolbar-actions { display: flex; align-items: center; gap: var(--space-sm); } .devserver-log-viewer__severity, .devserver-log-viewer__search { display: inline-flex; align-items: center; gap: var(--space-xs); color: var(--text-muted); } .devserver-log-viewer__severity-select { min-height: calc(var(--space-lg) + var(--space-md)); min-width: calc(var(--space-2xl) * 3); font-size: 0.75rem; } .devserver-log-viewer__search-input { min-height: calc(var(--space-lg) + var(--space-md)); min-width: calc(var(--space-2xl) * 4); font-size: 0.75rem; } .devserver-log-viewer__matches { color: var(--text-muted); font-family: var(--font-mono); font-size: 0.6875rem; } .devserver-log-viewer__body { position: relative; display: flex; flex: 1; flex-direction: column; min-height: 0; } .devserver-log-viewer__load-more { display: flex; justify-content: center; padding: var(--space-sm); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--surface) 95%, var(--text)); } .devserver-log-viewer__content { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-sm); font-family: var(--font-mono); font-size: 0.75rem; line-height: 1.5; background: var(--surface); } .devserver-log-viewer__loading, .devserver-log-viewer__empty { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); min-height: calc(var(--space-2xl) * 4); margin: 0; color: var(--text-muted); } .devserver-log-viewer__spinner { animation: dev-server-spin 1s linear infinite; } .devserver-log-line { padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-sm); white-space: pre-wrap; word-break: break-all; } .devserver-log-line:nth-child(even) { background: color-mix(in srgb, var(--surface) 95%, var(--text)); } .devserver-log-timestamp { margin-right: var(--space-sm); color: var(--text-dim); font-size: 0.6875rem; } .devserver-log-stream-badge { margin-right: var(--space-sm); padding: 0 var(--space-xs); border-radius: var(--radius-pill); background: color-mix(in srgb, var(--color-error) 15%, transparent); color: var(--color-error); font-size: 0.625rem; font-weight: 600; } .devserver-log-text { color: var(--text); } .devserver-log-text mark { border-radius: var(--radius-sm); background: color-mix(in srgb, var(--todo) 40%, transparent); color: var(--text); } .devserver-log-viewer__new-logs-button { position: absolute; left: 50%; bottom: var(--space-xl); transform: translateX(-50%); z-index: 10; border-color: var(--border); background: var(--card); box-shadow: var(--shadow-md); } .devserver-log-viewer__new-logs-button:active { transform: translateX(-50%) scale(0.97); } @keyframes dev-server-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @media (max-width: 480px) { .devserver-preview-blocked-actions { width: 100%; flex-direction: column; } .devserver-preview-blocked-actions .btn { width: 100%; min-height: calc(var(--space-lg) + var(--space-lg) + var(--space-xs)); } }