/* Vendored local Tailwind-style utility subset for webtest. */ *, ::before, ::after { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; line-height: 1.5; } .min-h-screen { min-height: 100vh; } .mx-auto { margin-left: auto; margin-right: auto; } .max-w-7xl { max-width: 80rem; } .p-4 { padding: 1rem; } .md\:p-6 { padding: 1rem; } .mb-4 { margin-bottom: 1rem; } .text-xl { font-size: 1.25rem; line-height: 1.75rem; } .font-semibold { font-weight: 600; } .font-medium { font-weight: 500; } .tracking-tight { letter-spacing: -0.025em; } .grid { display: grid; } .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .md\:grid-cols-2 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .gap-4 { gap: 1rem; } .h-\[80vh\] { height: 80vh; } .flex { display: flex; } .flex-col { flex-direction: column; } .flex-1 { flex: 1 1 0%; } .min-h-0 { min-height: 0; } .rounded-lg { border-radius: 0.5rem; } .border { border-width: 1px; border-style: solid; } .border-b { border-bottom-width: 1px; border-bottom-style: solid; } .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; } .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; } .p-3 { padding: 0.75rem; } .overflow-auto { overflow: auto; } .text-sm { font-size: 0.875rem; line-height: 1.25rem; } .bg-slate-950 { background-color: #020617; } .bg-slate-900 { background-color: #0f172a; } .text-slate-100 { color: #f1f5f9; } .border-slate-700 { border-color: #334155; } .layout { display: grid; grid-template-columns: 1fr; gap: 1rem; } .clients-header { display: flex; justify-content: space-between; align-items: center; } .pane-tabs { display: flex; gap: 0.5rem; align-items: center; } .pane-tab { border: 1px solid #334155; border-radius: 0.5rem; background: #1e293b; color: #cbd5e1; padding: 0.28rem 0.65rem; cursor: pointer; } .pane-tab.active { background: #334155; color: #f8fafc; } .btn-add { border: 1px solid #334155; border-radius: 0.5rem; background: #1e293b; color: #e2e8f0; padding: 0.3rem 0.7rem; cursor: pointer; } .client-tabs { display: flex; gap: 0.5rem; overflow-x: auto; padding: 0.75rem; border-bottom: 1px solid #334155; } .client-tab { display: inline-flex; align-items: center; gap: 0.4rem; } .client-tab-select { border: 1px solid #334155; border-radius: 0.5rem; background: #1e293b; color: #cbd5e1; padding: 0.28rem 0.65rem; cursor: pointer; white-space: nowrap; } .client-tab.active .client-tab-select { background: #334155; color: #f8fafc; } .client-panels { flex: 1; min-height: 0; overflow: auto; padding: 0.75rem; } .client-card { min-height: 0; display: flex; flex-direction: column; } .client-card[hidden] { display: none !important; } .client-card-header { display: flex; justify-content: space-between; align-items: center; } .client-actions { display: inline-flex; gap: 0.45rem; } .btn-close-tab { border: 1px solid #475569; border-radius: 0.45rem; background: transparent; color: #cbd5e1; padding: 0.2rem 0.6rem; cursor: pointer; } .btn-kill { border: 1px solid #7f1d1d; border-radius: 0.45rem; background: #991b1b; color: #fee2e2; padding: 0.2rem 0.6rem; cursor: pointer; } .stdout { color: #a5d6ff; } .stderr { color: #cbd5e1; } .status { color: #7ee787; } .stderr-default { color: #cbd5e1; } .stderr-warning { color: #facc15; background: rgba(250, 204, 21, 0.12); } .stderr-error { color: #f87171; background: rgba(248, 113, 113, 0.12); } @media (min-width: 768px) { .layout { grid-template-columns: minmax(360px, 0.9fr) minmax(520px, 1.1fr); } .md\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .md\:p-6 { padding: 1.5rem; } }