:root{--bg: #030a16;--bg-card-top: rgba(14, 36, 66, .72);--bg-card-bottom: rgba(7, 20, 40, .72);--bg-inset: rgba(3, 12, 26, .85);--bg-inset-soft: rgba(3, 12, 26, .55);--bg-pill: rgba(34, 195, 255, .06);--bg-pill-hover: rgba(34, 195, 255, .16);--border: rgba(64, 160, 255, .26);--border-soft: rgba(64, 160, 255, .14);--border-faint: rgba(64, 160, 255, .1);--border-bright: rgba(79, 212, 255, .4);--text: #e8f1ff;--text-strong: #ffffff;--text-dim: #dbe8ff;--text-muted: #8aa0bf;--text-faint: #7f95b5;--text-placeholder: #4f6585;--accent: #27c6ff;--accent-bright: #4fd4ff;--accent-soft: #6fe0ff;--accent-gradient: linear-gradient(90deg, #1f6bff, #1fc2ff);--success: #3ee6a2;--success-bg: rgba(62, 230, 162, .12);--success-bd: rgba(62, 230, 162, .38);--error: #ff6b7f;--error-bg: rgba(255, 107, 127, .12);--error-bd: rgba(255, 107, 127, .4);--warning: #ffc857;--warning-bg: rgba(255, 200, 87, .12);--warning-bd: rgba(255, 200, 87, .4);--info: #4fd4ff;--info-bg: rgba(79, 212, 255, .12);--info-bd: rgba(79, 212, 255, .42);--neutral: #a3b3cc;--neutral-bg: rgba(150, 170, 200, .1);--neutral-bd: rgba(150, 170, 200, .28);--radius-lg: 16px;--radius-md: 10px;--radius-sm: 8px;--radius-pill: 999px;--font-display: "Montserrat", sans-serif;--font: "Manrope", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--card-shadow: 0 12px 40px rgba(0, 0, 0, .4), inset 0 1px 0 rgba(120, 200, 255, .1)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(900px 520px at 88% -8%,rgba(0,132,255,.16),transparent 60%),radial-gradient(700px 500px at -10% 110%,rgba(0,190,255,.08),transparent 60%),var(--bg);background-attachment:fixed;color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 .5em;font-family:var(--font-display);font-weight:800;color:var(--text-strong)}a{color:var(--accent-bright);text-decoration:none}a:hover{color:var(--accent-soft);text-shadow:0 0 10px rgba(79,212,255,.6)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#40a0ff40;border-radius:8px}::-webkit-scrollbar-track{background:transparent}button{font-family:var(--font);font-size:inherit;cursor:pointer;background:var(--accent-gradient);color:#031022;border:none;border-radius:var(--radius-md);padding:.55em 1.1em;font-weight:800;box-shadow:0 0 20px #1fa0ff59;transition:box-shadow .15s ease}button:hover:not(:disabled){box-shadow:0 0 28px #1fbeff99}button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.btn--ghost{background:var(--bg-pill);color:#bfeaff;border:1px solid var(--border-bright);font-weight:700;box-shadow:none}.btn--ghost:hover:not(:disabled){background:var(--bg-pill-hover);box-shadow:0 0 16px #22c3ff59}.btn--pill{border-radius:var(--radius-pill);padding:6px 14px;font-size:12px}input,select{background:var(--bg-inset);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-md);padding:.55em .75em;font-family:var(--font);font-size:inherit;outline:none;transition:border-color .15s ease,box-shadow .15s ease}input::placeholder{color:var(--text-placeholder)}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #27c6ff26,0 0 18px #27c6ff40}option{background:#07152a;color:var(--text)}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;line-height:1;display:inline-block;-webkit-font-smoothing:antialiased}.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;min-height:100%}.app-sidebar{position:sticky;top:0;height:100vh;width:84px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:10px;padding:20px 0;background:linear-gradient(180deg,#08162cd9,#040c1ad9);border-right:1px solid rgba(64,160,255,.22);box-shadow:inset -1px 0 #78c8ff0d}.app-sidebar__logo{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:14px;background:linear-gradient(135deg,#1f6bff59,#1fc2ff33);border:1px solid rgba(79,212,255,.55);box-shadow:0 0 22px #27c6ff59;font-family:var(--font-display);font-weight:900;font-size:15px;color:var(--text-strong);letter-spacing:.02em}.app-sidebar__link{width:64px;padding:10px 0 8px;display:flex;flex-direction:column;align-items:center;gap:4px;border-radius:12px;font-family:var(--font);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);background:transparent;border:1px solid transparent;box-shadow:none;text-decoration:none}.app-sidebar__link:hover{color:#bfeaff}.app-sidebar__link .material-symbols-rounded{font-size:24px}.app-sidebar__link.is-active{color:var(--accent-soft);background:#22c3ff1f;border-color:#4fd4ff8c;box-shadow:0 0 18px #22c3ff59,inset 0 0 12px #22c3ff1f}.app-sidebar__spacer{flex:1}.app-sidebar__logout{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:transparent;border:1px solid rgba(64,160,255,.22);color:var(--text-faint);box-shadow:none;padding:0}.app-sidebar__logout:hover{color:#ff8a98;border-color:#ff6b7f80;box-shadow:none}.app-sidebar__logout .material-symbols-rounded{font-size:22px}.app-main{flex:1;min-width:0;padding:26px 32px 48px}.app-main__inner{max-width:1440px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:22px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.app-header__brand{font-family:var(--font-display);font-weight:800;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-strong)}.app-header__brand span{color:var(--accent);text-shadow:0 0 14px rgba(39,198,255,.6)}.app-header__user{display:flex;align-items:center;gap:12px;padding:6px 6px 6px 14px;border-radius:var(--radius-pill);background:#081830b3;border:1px solid var(--border)}.app-header__email{font-size:13px;color:var(--text-muted)}.ws-dot{width:8px;height:8px;border-radius:50%;background:var(--neutral);display:inline-block}.ws-dot--open{background:var(--success);box-shadow:0 0 10px var(--success)}.ws-dot--connecting{background:var(--warning);box-shadow:0 0 10px var(--warning)}.ws-dot--closed{background:var(--error);box-shadow:0 0 10px var(--error)}.page h2{margin:0;font-family:var(--font-display);font-weight:900;font-size:44px;line-height:1;letter-spacing:.01em;text-transform:uppercase;color:var(--text-strong);text-shadow:0 0 30px rgba(39,198,255,.25)}.page h2 span{color:var(--accent);text-shadow:0 0 24px rgba(39,198,255,.55)}.page{display:flex;flex-direction:column;gap:22px}.pipelines-page{display:flex;gap:20px;align-items:flex-start}.pipelines-page .page__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:22px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.kpi-tile{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--bg-card-top),var(--bg-card-bottom));border:1px solid var(--border);box-shadow:var(--card-shadow)}.kpi-tile__icon{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(79,212,255,.6);background:#22c3ff14;box-shadow:0 0 18px #22c3ff59,inset 0 0 12px #22c3ff33;color:var(--accent-soft)}.kpi-tile__icon .material-symbols-rounded{font-size:22px}.kpi-tile__label{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#cfe3ff}.kpi-tile__value{font-family:var(--font-display);font-weight:800;font-size:30px;line-height:1;color:var(--text-strong)}.kpi-tile__sub{font-size:12px;font-weight:600}.kpi-tile__sub--success{color:var(--success)}.kpi-tile__sub--error{color:var(--error)}.kpi-tile__sub--warning{color:var(--warning)}.kpi-tile__sub--info{color:var(--info)}.kpi-tile__sub--muted{color:var(--text-muted)}.card{background:linear-gradient(180deg,var(--bg-card-top),var(--bg-card-bottom));border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--card-shadow)}.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(min(100%,460px),1fr));align-items:start}.card__header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.card__header h3{margin:0;font-size:17px}.card__host{color:var(--text-muted);font-weight:500;font-family:var(--font);font-size:12px;text-transform:none}.vps-card__updated{color:var(--text-muted);font-size:12px;white-space:nowrap}.vps-card__uptime{color:var(--text-muted);font-size:12px;margin:0}.vps-section{border-top:1px solid var(--border-soft);padding-top:14px;display:flex;flex-direction:column;gap:10px}.vps-section h4{margin:0;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#cfe3ff}.vps-section__hint{color:var(--text-faint);font-size:12px;margin:0}.vps-card__grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.vps-subcard{padding:14px;border-radius:14px;background:var(--bg-inset-soft);border:1px solid var(--border-soft)}.runner-card__job h4{margin:0 0 4px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--accent-soft)}.runner-card__job{padding:12px;border-radius:12px;background:#22c3ff0f;border:1px solid rgba(79,212,255,.28)}.runner-card__job p{margin:0}.runner-card__status-row,.runner-card__labels{display:flex;gap:6px;flex-wrap:wrap}.runner-card dl.kv-grid{padding-top:12px;border-top:1px solid var(--border-soft)}.tag{background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius-pill);padding:2px 9px;font-size:11px;color:#8fb8e0;font-family:var(--font-mono)}.kv-grid{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:0;font-size:13px}.kv-grid dt{color:var(--text-muted)}.kv-grid dd{margin:0;color:var(--text-strong);font-weight:600}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:700;white-space:nowrap;border:1px solid transparent}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor;flex-shrink:0}.badge--success{color:var(--success);background:var(--success-bg);border-color:var(--success-bd)}.badge--error{color:var(--error);background:var(--error-bg);border-color:var(--error-bd)}.badge--warning{color:var(--warning);background:var(--warning-bg);border-color:var(--warning-bd)}.badge--info{color:var(--info);background:var(--info-bg);border-color:var(--info-bd)}.badge--neutral{color:var(--neutral);background:var(--neutral-bg);border-color:var(--neutral-bd)}.memory-bar,.bar-track{width:100%}.memory-bar__track,.bar-track{height:8px;border-radius:var(--radius-pill);background:#40a0ff1f;overflow:hidden}.memory-bar__fill,.bar-fill{height:100%;border-radius:var(--radius-pill);background:linear-gradient(90deg,#1f6bff,#27c6ff);box-shadow:0 0 10px #27c6ff8c}.memory-bar__fill--warning{background:linear-gradient(90deg,#ff9f40,#ffc857);box-shadow:0 0 10px #ffc85799}.memory-bar__caption{display:block;margin-top:6px;font-size:12px;color:var(--text-muted)}.memory-bar--unknown .memory-bar__track{background:repeating-linear-gradient(45deg,#030c1ae6,#030c1ae6 6px,#40a0ff2e 6px,#40a0ff2e 12px)}.core-bars{display:flex;gap:5px;height:64px;align-items:flex-end}.core-bar{flex:1;max-width:18px;height:100%;background:#40a0ff1a;border:1px solid rgba(64,160,255,.18);border-radius:4px;display:flex;align-items:flex-end;overflow:hidden}.core-bar__fill{width:100%;border-radius:3px;background:linear-gradient(180deg,#4fd8ff,#1f6bff);box-shadow:0 0 12px #27c6ff99}.mem-gauge-row{display:flex;align-items:center;gap:14px}.mem-gauge{width:92px;height:92px;flex-shrink:0;border-radius:50%;box-shadow:0 0 22px #27c6ff59;display:flex;align-items:center;justify-content:center}.mem-gauge__center{width:70px;height:70px;border-radius:50%;background:#061328;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.mem-gauge__pct{font-family:var(--font-display);font-weight:800;font-size:19px;color:var(--text-strong)}.mem-gauge__label{font-size:10px;color:var(--text-muted)}.mem-gauge-kv{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0;font-size:12.5px}.mem-gauge-kv dt{color:var(--text-muted)}.mem-gauge-kv dd{margin:0;color:var(--text-dim)}.mem-gauge-kv dd.mem-gauge-kv__available{color:var(--success);font-weight:700}.disk-rows{display:flex;flex-direction:column;gap:10px}.disk-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,2fr) auto;gap:12px;align-items:center;font-size:12.5px}.disk-row__mount{font-family:var(--font-mono);color:#9fd8ff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disk-row__track{height:8px;border-radius:var(--radius-pill);background:#40a0ff1f;overflow:hidden}.disk-row__fill{height:100%;border-radius:var(--radius-pill);background:linear-gradient(90deg,#1f6bff,#27c6ff);box-shadow:0 0 10px #27c6ff8c}.disk-row__meta{color:var(--text-muted);white-space:nowrap}.disk-row__meta strong{color:var(--text);font-weight:500}.reachable-notice{display:flex;align-items:center;gap:10px;background:var(--error-bg);border:1px solid var(--error-bd);color:#ff8a98;border-radius:var(--radius-md);padding:10px 12px;font-size:13px}.reachable-notice__dot{width:8px;height:8px;border-radius:50%;background:#ff5a6e;box-shadow:0 0 10px #ff5a6e;flex-shrink:0}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--border-faint);white-space:nowrap}.table th{color:var(--text-faint);font-weight:800;font-size:11px;letter-spacing:.1em;text-transform:uppercase;border-bottom-color:var(--border-soft)}.table tbody tr:hover{background:#22c3ff0d}.table--compact th,.table--compact td{padding:5px 6px;font-size:12px}.table--compact th{font-size:10px}.table-wrap{border-radius:var(--radius-lg);overflow-x:auto;background:linear-gradient(180deg,var(--bg-card-top),var(--bg-card-bottom));border:1px solid var(--border);box-shadow:var(--card-shadow)}.table-wrap .table{margin:0}.plain-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.plain-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12.5px}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;padding:16px 18px;background:linear-gradient(180deg,var(--bg-card-top),var(--bg-card-bottom));border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:inset 0 1px #78c8ff1a}.filters label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.filters input,.filters select{width:160px;font-size:13px}.queued-section{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:var(--radius-lg);background:linear-gradient(180deg,var(--bg-card-top),var(--bg-card-bottom));border:1px solid var(--border);box-shadow:var(--card-shadow)}.queued-section h3{margin:0;font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#cfe3ff}.queued-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.queued-list__item{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:12px;background:var(--bg-inset-soft);border:1px solid rgba(255,200,87,.22)}.queued-list__item:before{content:"hourglass_top";font-family:Material Symbols Rounded;font-size:19px;width:36px;height:36px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(255,200,87,.55);background:#ffc85714;box-shadow:0 0 14px #ffc85740;color:var(--warning)}.queued-list__run{color:var(--text-dim)}.queued-list__run strong{color:var(--text-strong)}.queued-list__reason{color:var(--warning);font-size:12px;margin-top:2px}.run-detail{width:420px;flex-shrink:0;display:flex;flex-direction:column;gap:14px;padding:18px;border-radius:var(--radius-lg);background:linear-gradient(180deg,#0e284adb,#061226e6);border:1px solid var(--border-bright);box-shadow:0 0 40px #008cff2e,0 16px 50px #00000080,inset 0 1px #78c8ff24;position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto}.run-detail__header{display:flex;align-items:center;justify-content:space-between;gap:8px}.run-detail__header h3{margin:0;font-size:15px}.run-detail__summary{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;font-size:13px;color:var(--text-muted)}.jobs-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.jobs-list__toggle{width:100%;display:flex;align-items:center;gap:10px;background:var(--bg-inset-soft);border:1px solid var(--border);color:var(--text);font-weight:400;text-align:left;border-radius:var(--radius-md);padding:10px 12px;box-shadow:none}.jobs-list__toggle:hover{border-color:#4fd4ff80;box-shadow:none}.jobs-list__toggle span:not(.badge):not(.material-symbols-rounded){font-weight:700}.jobs-list__toggle .jobs-list__runner{color:var(--text-muted);font-weight:400;margin-left:auto}.jobs-list__toggle .material-symbols-rounded{font-size:18px;color:var(--accent-soft)}.jobs-list__detail{padding:10px 2px 4px;display:flex;flex-direction:column;gap:10px}.log-viewer{margin:0;background:#020812e6;border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;font-family:var(--font-mono);font-size:11.5px;line-height:1.6;color:#9fd8ff;max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-word;box-shadow:inset 0 0 24px #0078ff14}.login-page{display:flex;align-items:center;justify-content:center;min-height:100%;padding:24px}.login-card{width:360px;max-width:100%;display:flex;flex-direction:column;gap:16px;padding:34px 30px;border-radius:20px;background:linear-gradient(180deg,#0e2442c7,#061226c7);border:1px solid rgba(64,160,255,.32);box-shadow:0 0 60px #008cff2e,0 20px 60px #00000080,inset 0 1px #78c8ff1f}.login-card__title{margin:0 0 4px;display:flex;flex-direction:column;gap:2px}.login-card__title span{font-family:var(--font-display);font-weight:900;font-size:40px;line-height:1.05;letter-spacing:.01em;text-transform:uppercase}.login-card__title span:first-child{color:var(--text-strong)}.login-card__title span:last-child{color:var(--accent);text-shadow:0 0 24px rgba(39,198,255,.55)}.login-card>p{margin:0}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.form-error{color:var(--error);font-size:13px;margin:0}
