:root{--bg: #0f1115;--bg-raised: #171a21;--bg-inset: #0b0d11;--border: #262b36;--text: #e6e8ec;--text-muted: #8b93a3;--accent: #5b9dff;--success: #3ecf8e;--error: #f2555a;--warning: #e8b339;--info: #5b9dff;--neutral: #6b7385;--radius: 8px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5}h1,h2,h3,h4{margin:0 0 .5em;font-weight:600}a{color:var(--accent)}button{font-family:inherit;font-size:inherit;cursor:pointer;background:var(--accent);color:#08101f;border:none;border-radius:var(--radius);padding:.5em 1em;font-weight:600}button:disabled{opacity:.6;cursor:not-allowed}.btn--ghost{background:transparent;color:var(--text);border:1px solid var(--border);font-weight:500}input,select{background:var(--bg-inset);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:.4em .6em;font-family:inherit;font-size:inherit}.text-muted{color:var(--text-muted)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-error{color:var(--error)}.full-page-status{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted)}.app-shell{display:flex;flex-direction:column;min-height:100%}.app-header{display:flex;align-items:center;gap:24px;padding:12px 20px;background:var(--bg-raised);border-bottom:1px solid var(--border)}.app-header__brand{font-weight:700;letter-spacing:.02em}.app-nav{display:flex;gap:4px;flex:1}.app-nav__link{padding:6px 12px;border-radius:var(--radius);color:var(--text-muted);text-decoration:none;font-weight:500}.app-nav__link.is-active{background:var(--bg-inset);color:var(--text)}.app-header__user{display:flex;align-items:center;gap:10px;color:var(--text-muted)}.app-header__email{font-size:13px}.ws-dot{width:8px;height:8px;border-radius:50%;background:var(--neutral);display:inline-block}.ws-dot--open{background:var(--success)}.ws-dot--connecting{background:var(--warning)}.ws-dot--closed{background:var(--error)}.app-content{flex:1;padding:20px;max-width:1400px;width:100%;margin:0 auto}.page__main{min-width:0}.pipelines-page{display:flex;gap:20px;align-items:flex-start}.pipelines-page .page__main{flex:1}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.card-grid--wide{grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}.card__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.card__host{color:var(--text-muted);font-weight:400;font-size:12px}.vps-card__updated{color:var(--text-muted);font-size:12px;white-space:nowrap}.vps-card__uptime{color:var(--text-muted);font-size:12px;margin:4px 0 0}.vps-section{border-top:1px solid var(--border);padding-top:10px}.vps-section h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.vps-section__hint{color:var(--text-muted);font-size:12px;margin:6px 0 0}.runner-card__job h4{margin:0 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.runner-card__job p{margin:0}.runner-card__status-row,.runner-card__labels{display:flex;gap:6px;flex-wrap:wrap}.tag{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:11px;color:var(--text-muted)}.kv-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:13px}.kv-grid dt{color:var(--text-muted)}.kv-grid dd{margin:0}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid transparent}.badge--success{background:#3ecf8e26;color:var(--success)}.badge--error{background:#f2555a26;color:var(--error)}.badge--warning{background:#e8b33926;color:var(--warning)}.badge--info{background:#5b9dff26;color:var(--info)}.badge--neutral{background:#6b738533;color:var(--text-muted)}.memory-bar,.bar-track{width:100%}.memory-bar__track,.bar-track{height:8px;border-radius:4px;background:var(--bg-inset);overflow:hidden;border:1px solid var(--border)}.memory-bar__fill,.bar-fill{height:100%;background:var(--accent)}.memory-bar__fill--warning{background:var(--warning)}.memory-bar__caption{display:block;margin-top:4px;font-size:12px;color:var(--text-muted)}.memory-bar--unknown .memory-bar__track{background:repeating-linear-gradient(45deg,var(--bg-inset),var(--bg-inset) 6px,var(--border) 6px,var(--border) 12px)}.core-bars{display:flex;gap:3px;height:32px;align-items:flex-end}.core-bar{width:8px;height:100%;background:var(--bg-inset);border:1px solid var(--border);border-radius:2px;display:flex;align-items:flex-end}.core-bar__fill{width:100%;background:var(--accent);border-radius:2px}.reachable-notice{display:flex;align-items:center;gap:8px;background:#f2555a1a;border:1px solid rgba(242,85,90,.35);color:var(--error);border-radius:var(--radius);padding:8px 10px;font-size:13px}.reachable-notice__dot{width:8px;height:8px;border-radius:50%;background:var(--error);flex-shrink:0}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}.table th{color:var(--text-muted);font-weight:500;font-size:12px}.table--compact th,.table--compact td{padding:4px 8px}.plain-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.plain-list li{display:flex;align-items:center;justify-content:space-between;font-size:13px}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:16px 0;padding:12px;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius)}.filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted)}.queued-section{margin-bottom:16px}.queued-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.queued-list__item{background:var(--bg-raised);border:1px solid var(--border);border-left:3px solid var(--warning);border-radius:var(--radius);padding:10px 12px}.queued-list__reason{color:var(--warning);font-size:12px;margin-top:4px}.run-detail{width:420px;flex-shrink:0;background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:16px;position:sticky;top:20px;max-height:calc(100vh - 40px);overflow-y:auto}.run-detail__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.run-detail__summary{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;margin:10px 0;color:var(--text-muted)}.jobs-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.jobs-list__toggle{width:100%;display:flex;align-items:center;gap:8px;background:var(--bg-inset);border:1px solid var(--border);color:var(--text);font-weight:400;text-align:left}.jobs-list__detail{padding:10px 4px;display:flex;flex-direction:column;gap:8px}.log-viewer{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);padding:10px;font-size:12px;max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-word}.login-page{display:flex;align-items:center;justify-content:center;min-height:100%;padding:20px}.login-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:28px;width:320px;display:flex;flex-direction:column;gap:12px}.login-card label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-muted)}.form-error{color:var(--error);font-size:13px;margin:0}
