*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#07070f;--bg-1:#0c0c1a;--bg-2:#111128;--bg-3:#161638;--border:#1c1c3a;--border-dim:#141430;--border-hi:#2e2e60;--green:#00f57c;--green-dim:#00f57c14;--green-glow:#00f57c40;--amber:#fa0;--amber-dim:#ffaa001a;--red:#f45;--red-dim:#ff44551a;--blue:#48f;--blue-dim:#4488ff1a;--text:#9090b8;--text-dim:#48486a;--text-hi:#d0d0f0;--text-bright:#eeeef8;--font:"JetBrains Mono", monospace;--r:2px;--nav-h:52px}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.6}body:before{content:"";z-index:0;pointer-events:none;background-image:radial-gradient(circle,#5050a00e 1px,#0000 1px);background-size:28px 28px;position:fixed;inset:0}#root{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}a{color:inherit;text-decoration:none}button{font-family:var(--font);cursor:pointer;border:none;outline:none}input,textarea,select{font-family:var(--font);outline:none}.nav{height:var(--nav-h);border-bottom:1px solid var(--border);background:var(--bg-1);z-index:100;align-items:center;gap:0;padding:0 24px;display:flex;position:sticky;top:0}.nav-logo{letter-spacing:.15em;color:var(--green);text-transform:uppercase;align-items:center;gap:8px;margin-right:32px;font-size:13px;font-weight:700;display:flex}.nav-logo-dot{background:var(--green);width:6px;height:6px;box-shadow:0 0 8px var(--green-glow);border-radius:50%;animation:2s ease-in-out infinite pulse}.nav-links{flex:1;align-items:center;gap:2px;display:flex}.nav-link{border-radius:var(--r);letter-spacing:.08em;color:var(--text-dim);text-transform:uppercase;border:1px solid #0000;padding:6px 14px;font-size:12px;transition:color .15s,background .15s}.nav-link:hover{color:var(--text);background:var(--bg-2)}.nav-link.active{color:var(--text-hi);background:var(--bg-3);border-color:var(--border-hi)}.nav-key{color:var(--text-dim);align-items:center;gap:6px;margin-left:auto;font-size:11px;display:flex}.nav-key-btn{color:var(--text-dim);border:1px solid var(--border);border-radius:var(--r);background:0 0;padding:4px 10px;font-size:11px;transition:color .15s,border-color .15s}.nav-key-btn:hover{color:var(--text);border-color:var(--border-hi)}.main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:32px 24px}.page-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.page-title{letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);font-size:11px;font-weight:600}.page-title span{color:var(--text-hi)}.btn{border-radius:var(--r);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary{background:var(--green-dim);color:var(--green);border:1px solid #00f57c40}.btn-primary:hover{box-shadow:0 0 12px var(--green-glow);background:#00f57c24;border-color:#00f57c73}.btn-primary:active{transform:translateY(1px)}.btn-ghost{color:var(--text);border:1px solid var(--border);background:0 0}.btn-ghost:hover{border-color:var(--border-hi);color:var(--text-hi);background:var(--bg-2)}.btn-danger{background:var(--red-dim);color:var(--red);border:1px solid #f453}.btn-danger:hover{background:#ff44552e}.btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.badge{border-radius:var(--r);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-success{background:var(--green-dim);color:var(--green);border:1px solid #00f57c33}.badge-running{background:var(--amber-dim);color:var(--amber);border:1px solid #ffaa0040}.badge-failed{background:var(--red-dim);color:var(--red);border:1px solid #f453}.badge-pending,.badge-idle{background:var(--bg-2);color:var(--text-dim);border:1px solid var(--border)}.badge-NEST{color:var(--blue);background:#4488ff14;border:1px solid #48f3}.badge-NEXT{color:#c0c0d0;background:#ffffff0a;border:1px solid #2a2a40}.badge-VITE{color:#b060ff;background:#a050ff14;border:1px solid #a050ff33}.badge-STATIC{background:var(--amber-dim);color:var(--amber);border:1px solid #fa03}.badge-CUSTOM{background:var(--bg-2);color:var(--text);border:1px solid var(--border)}.pulse-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:1.4s ease-in-out infinite pulse;display:inline-block}.pulse-amber{background:var(--amber);box-shadow:0 0 6px var(--amber)}.pulse-green{background:var(--green);box-shadow:0 0 6px var(--green)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.projects-grid{flex-direction:column;gap:8px;display:flex}.project-card{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--r);cursor:pointer;align-items:center;gap:20px;padding:16px 20px;transition:border-color .15s,background .15s;display:flex}.project-card:hover{border-color:var(--border-hi);background:var(--bg-2)}.project-card-inactive{opacity:.4}.project-card-left{flex:1;min-width:0}.project-card-name{color:var(--text-bright);white-space:nowrap;text-overflow:ellipsis;margin-bottom:6px;font-size:15px;font-weight:600;overflow:hidden}.project-card-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.project-card-repo{color:var(--text-dim);font-size:11px}.project-card-right{flex-shrink:0;align-items:center;gap:10px;display:flex}.detail-back{color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:6px;margin-bottom:12px;font-size:11px;transition:color .15s;display:inline-flex}.detail-back:hover{color:var(--text)}.detail-title{color:var(--text-bright);align-items:center;gap:12px;margin-bottom:20px;font-size:22px;font-weight:700;display:flex}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-bottom:28px;display:grid}.info-cell{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--r);padding:12px 16px}.info-cell-label{letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);margin-bottom:4px;font-size:10px}.info-cell-value{color:var(--text-hi);word-break:break-all;font-size:13px}.section-title{letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);margin-bottom:10px;font-size:10px}.log-list{flex-direction:column;gap:4px;display:flex}.log-entry{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--r);cursor:pointer;align-items:center;gap:10px;padding:9px 14px;font-size:11px;transition:border-color .15s;display:flex}.log-entry:hover{border-color:var(--border-hi)}.log-entry-active{background:var(--amber-dim);border-color:#fa06!important}.log-entry-id,.log-entry-trigger{color:var(--text-dim);flex-shrink:0}.log-entry-commit{color:var(--blue);flex-shrink:0}.log-entry-time{color:var(--text-dim);flex-shrink:0;margin-left:auto}.log-viewer{border:1px solid var(--border);border-radius:var(--r);background:#020208;overflow:hidden}.log-viewer-header{border-bottom:1px solid var(--border);background:#08080f;justify-content:space-between;align-items:center;padding:8px 14px;font-size:11px;display:flex}.log-viewer-title{color:var(--text-dim)}.lv-running{color:var(--amber);align-items:center;gap:6px;display:flex}.lv-success{color:var(--green)}.lv-failed{color:var(--red)}.log-viewer-body{color:#7dff8a;white-space:pre-wrap;word-break:break-all;max-height:480px;padding:14px;font-size:12px;line-height:1.75;overflow-y:auto}.log-viewer-body::-webkit-scrollbar{width:5px}.log-viewer-body::-webkit-scrollbar-track{background:#020208}.log-viewer-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.log-cursor{vertical-align:text-bottom;background:#7dff8a;width:7px;height:13px;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.system-grid{flex-direction:column;gap:6px;display:flex}.check-row{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--r);border-left-width:3px;align-items:center;gap:14px;padding:14px 18px;display:flex}.check-ok{border-left-color:var(--green)}.check-fail{border-left-color:var(--red)}.check-warn{border-left-color:var(--amber)}.check-icon{text-align:center;flex-shrink:0;width:20px;font-size:15px}.check-label{color:var(--text-hi);flex:1;font-size:12px}.check-detail{color:var(--text-dim);text-align:right;font-size:11px}.modal-overlay{z-index:999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#07070feb;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-1);border:1px solid var(--border-hi);border-radius:var(--r);width:100%;max-width:440px;padding:32px;animation:.2s fade-up}.modal-title{letter-spacing:.15em;color:var(--green);margin-bottom:8px;font-size:13px;font-weight:700}.modal p{color:var(--text-dim);margin-bottom:20px;font-size:12px}.modal form{flex-direction:column;gap:10px;display:flex}.form-row{flex-direction:column;gap:4px;display:flex}.form-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);font-size:10px}.form-input{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);color:var(--text-hi);width:100%;padding:8px 10px;font-size:12px;transition:border-color .15s}.form-input:focus{border-color:var(--green)}.form-input::placeholder{color:var(--text-dim)}.form-grid-2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.add-modal{max-width:520px;max-height:90vh;overflow-y:auto}.add-modal::-webkit-scrollbar{width:5px}.add-modal::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.separator{background:var(--border);height:1px;margin:20px 0}.empty-state{text-align:center;color:var(--text-dim);padding:60px 20px;font-size:12px}.flex-gap{align-items:center;gap:10px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--green);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.error-msg{color:var(--red);background:var(--red-dim);border-radius:var(--r);border:1px solid #f453;padding:10px 14px;font-size:12px}
