@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap";*,:before,:after{box-sizing:border-box}body{margin:0}#root{min-height:100%}:root{--bg:#0a0b12;--bg-glow:radial-gradient(ellipse 80% 50% at 50% -20%, #7c5cff2e, transparent 70%);--panel:#12131c;--panel-raised:#181926;--panel-border:#ffffff12;--panel-border-strong:#ffffff1f;--text:#eceaf4;--text-dim:#9b97ad;--text-faint:#6b677c;--accent:#7c5cff;--accent-soft:#7c5cff24;--accent-glow:#7c5cff59;--c-pending:#f5a623;--c-running:#5b9dff;--c-completed:#3dd68c;--c-failed:#ff5c6a;--c-dead:#7a768a;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-panel:0 1px 0 #ffffff0a inset, 0 12px 40px #00000059}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);background-image:var(--bg-glow);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:DM Sans,sans-serif}.mono{font-family:IBM Plex Mono,monospace}.app-shell{min-height:100vh;display:flex}.sidebar{border-right:1px solid var(--panel-border);background:linear-gradient(#141522 0%,#10111a 100%);flex-direction:column;flex-shrink:0;width:232px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0;box-shadow:4px 0 24px #0003}.sidebar-brand{align-items:center;gap:10px;padding:2px 10px 24px;display:flex}.brand-dot{background:linear-gradient(135deg, var(--accent) 0%, #b794ff 100%);width:11px;height:11px;box-shadow:0 0 12px var(--accent-glow);border-radius:3px;transform:rotate(45deg)}.brand-name{letter-spacing:-.02em;background:linear-gradient(90deg, var(--text) 0%, #c4b5fd 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.nav-item{border-radius:var(--radius-sm);width:100%;color:var(--text-dim);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:10px 12px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;transition:background .15s,color .15s,transform .15s;display:flex;position:relative}.nav-item:hover{color:var(--text);background:#ffffff0d}.nav-item-active{background:var(--accent-soft);color:#c4b5fd}.nav-item-active:before{content:"";background:linear-gradient(180deg, var(--accent), #b794ff);border-radius:0 3px 3px 0;width:3px;height:18px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.nav-icon{flex-shrink:0;align-items:center;display:flex}.nav-badge{color:var(--c-failed);background:#ff5c6a29;border:1px solid #ff5c6a40;border-radius:20px;margin-left:auto;padding:2px 8px;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:600}.sidebar-footer{border-top:1px solid var(--panel-border);margin-top:auto;padding:12px 10px 4px}.sidebar-footer-text{color:var(--text-faint);letter-spacing:.04em;text-transform:uppercase;font-size:11px}.app-content{flex:1;max-width:1040px;padding:32px 40px 88px}.page-head{border-bottom:1px solid var(--panel-border);justify-content:space-between;align-items:center;margin-bottom:26px;padding-bottom:18px;display:flex}.page-head h1{letter-spacing:-.03em;margin:0;font-size:22px;font-weight:600}.page-head-actions{align-items:center;gap:14px;display:flex}.page-sub{color:var(--text-faint);font-size:12px}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:14px;display:grid}.stat-card{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);padding:16px 18px;transition:border-color .2s,transform .2s;position:relative;overflow:hidden}.stat-card:after{content:"";background:linear-gradient(90deg, transparent, var(--pill-color,var(--accent)), transparent);opacity:.7;height:2px;position:absolute;top:0;left:0;right:0}.stat-card:hover{border-color:var(--panel-border-strong);transform:translateY(-2px)}.stat-top{align-items:center;gap:8px;margin-bottom:12px;display:flex}.stat-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:500}.stat-value{letter-spacing:-.04em;font-family:IBM Plex Mono,monospace;font-size:30px;font-weight:600}.led{background:var(--pill-color,var(--text-dim));width:7px;height:7px;box-shadow:0 0 6px color-mix(in srgb, var(--pill-color,var(--text-dim)) 60%, transparent);border-radius:50%;flex-shrink:0;display:inline-block}.led-pulse{animation:1.8s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 0 0 color-mix(in srgb, var(--pill-color,var(--c-running)) 50%, transparent)}50%{opacity:.55;box-shadow:0 0 0 5px #0000}}.pill{color:var(--pill-color,var(--text-dim));background:color-mix(in srgb, var(--pill-color,var(--text-dim)) 10%, transparent);border:1px solid color-mix(in srgb, var(--pill-color,var(--text-dim)) 22%, transparent);border-radius:20px;align-items:center;gap:6px;padding:3px 10px 3px 8px;font-family:IBM Plex Mono,monospace;font-size:12px;display:inline-flex}.prio{background:color-mix(in srgb, currentColor 12%, transparent);border:none;border-radius:6px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500}.prio-1{color:var(--c-failed)}.prio-2{color:var(--c-pending)}.prio-3{color:var(--text-dim)}.table-wrap{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{text-align:left;text-transform:uppercase;letter-spacing:.1em;color:var(--text-faint);border-bottom:1px solid var(--panel-border);white-space:nowrap;background:var(--panel-raised);padding:14px;font-size:10px;font-weight:600}tbody td{border-bottom:1px solid var(--panel-border);white-space:nowrap;padding:11px 14px}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#7c5cff0a}.btn-primary{background:linear-gradient(135deg, var(--accent) 0%, #9b7bff 100%);color:#fff;border-radius:var(--radius-sm);cursor:pointer;box-shadow:0 4px 14px var(--accent-glow);border:none;padding:10px 18px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s,opacity .15s}.btn-primary:hover{box-shadow:0 6px 20px var(--accent-glow);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{border:1px solid var(--panel-border-strong);color:var(--text-dim);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:10px 18px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s}.btn-ghost:hover{color:var(--text);background:#ffffff0a;border-color:#ffffff2e}.modal-backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:100;background:#06070eb8;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:linear-gradient(180deg, #1a1b28 0%, var(--panel) 100%);border:1px solid var(--panel-border-strong);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:90vh;padding:22px 24px;overflow-y:auto;box-shadow:0 24px 80px #0000008c,inset 0 0 0 1px #7c5cff14}.modal-head{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-head h2{letter-spacing:-.02em;margin:0;font-size:16px;font-weight:600}.modal-close{border:1px solid var(--panel-border);color:var(--text-dim);cursor:pointer;border-radius:var(--radius-sm);background:#ffffff0a;align-items:center;padding:6px;transition:color .15s,background .15s;display:flex}.modal-close:hover{color:var(--text);background:#ffffff14}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.job-form{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.field{flex-direction:column;gap:7px;display:flex}.field-wide{grid-column:1/-1}.field label,.field .field-label{color:var(--text-dim);font-size:12px;font-weight:500}.field-hint{color:var(--text-dim);margin:0;font-size:11px;line-height:1.4}.dependency-list{background:var(--bg);border:1px solid var(--panel-border);border-radius:var(--radius-sm);flex-direction:column;gap:8px;max-height:140px;padding:10px 12px;display:flex;overflow-y:auto}.dependency-option{cursor:pointer;align-items:center;gap:10px;font-size:12px;display:flex}.dependency-option input{flex-shrink:0;margin:0}.dependency-status{color:var(--text-dim);text-transform:lowercase;margin-left:auto;font-size:11px}.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--panel-border);border-radius:var(--radius-sm);color:var(--text);padding:10px 12px;font-family:IBM Plex Mono,monospace;font-size:13px;transition:border-color .15s,box-shadow .15s}.field textarea{resize:vertical;min-height:80px}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.field input::placeholder,.field textarea::placeholder{color:var(--text-faint)}.form-error{color:var(--c-failed);border-radius:var(--radius-sm);background:#ff5c6a14;border:1px solid #ff5c6a33;grid-column:1/-1;padding:8px 12px;font-family:IBM Plex Mono,monospace;font-size:12px}.logs-toolbar{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.logs-filter{flex-direction:column;gap:6px;min-width:160px;display:flex}.logs-filter span{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:500}.logs-filter select{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius-sm);color:var(--text);padding:8px 10px;font-family:IBM Plex Mono,monospace;font-size:12px}.logs-error{margin-bottom:14px}.logs-table-wrap{max-height:calc(100vh - 220px);overflow:auto}.logs-table .log-time{white-space:nowrap;color:var(--text-dim);font-size:12px}.logs-table .log-job{color:var(--text-dim);font-size:12px}.log-event{background:var(--accent-soft);color:#c4b5fd;border-radius:4px;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:11px}.log-level{text-transform:uppercase;letter-spacing:.03em;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600}.log-level-info{color:var(--c-running)}.log-level-warn{color:var(--c-pending)}.log-level-error{color:var(--c-failed)}.log-message{max-width:360px;font-size:13px;line-height:1.45}.log-metadata-cell{min-width:72px}.log-metadata summary{cursor:pointer;color:var(--accent);-webkit-user-select:none;user-select:none;font-size:11px}.log-metadata pre{background:var(--bg);border:1px solid var(--panel-border);border-radius:var(--radius-sm);white-space:pre-wrap;word-break:break-word;max-width:280px;margin:8px 0 0;padding:10px;font-size:11px;overflow:auto}.log-metadata-empty{color:var(--text-faint)}.log-row-error{background:#ff5c6a0a}.log-row-warn{background:#f5a62308}.empty-state{color:var(--text-dim);background:var(--panel);border:1px dashed var(--panel-border-strong);border-radius:var(--radius-md);text-align:center;padding:20px;font-size:13px}.dlq-list{flex-direction:column;gap:14px;display:flex}.dlq-card{background:var(--panel);border:1px solid #ff5c6a33;border-left:3px solid var(--c-failed);border-radius:var(--radius-md);box-shadow:var(--shadow-panel);padding:16px 18px}.dlq-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.dlq-id{margin-right:10px;font-size:13px}.dlq-type{color:var(--text-dim);font-size:12px}.retry-btn{border:1px solid var(--c-running);color:var(--c-running);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:7px 14px;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:500;transition:background .15s,transform .15s}.retry-btn:hover{background:#5b9dff1f;transform:translateY(-1px)}.cancel-btn{border:1px solid var(--text-faint);color:var(--text-dim);border-radius:var(--radius-sm);cursor:pointer;background:0 0;padding:5px 10px;font-family:IBM Plex Mono,monospace;font-size:11px;transition:background .15s,color .15s,border-color .15s}.cancel-btn:hover{border-color:var(--c-failed);color:var(--c-failed);background:#ff5c6a1a}.dlq-error{color:var(--c-failed);border-radius:var(--radius-sm);border-left:2px solid var(--c-failed);background:#ff5c6a14;margin-bottom:12px;padding:10px 12px;font-family:IBM Plex Mono,monospace;font-size:12px}.dlq-meta{color:var(--text-dim);gap:16px;margin-bottom:10px;font-family:IBM Plex Mono,monospace;font-size:12px;display:flex}.dlq-payload summary{color:var(--text-dim);cursor:pointer;font-size:12px;font-weight:500}.dlq-payload summary:hover{color:var(--text)}.dlq-payload pre{background:var(--bg);border:1px solid var(--panel-border);border-radius:var(--radius-sm);margin-top:8px;padding:12px;font-family:IBM Plex Mono,monospace;font-size:12px;overflow-x:auto}.toast{background:var(--panel-raised);border:1px solid var(--panel-border-strong);border-radius:var(--radius-md);box-shadow:0 8px 32px #00000073, 0 0 0 1px var(--accent-soft) inset;z-index:200;padding:12px 20px;font-family:IBM Plex Mono,monospace;font-size:13px;animation:.3s toast-in;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@media (width<=720px){.app-shell{flex-direction:column}.sidebar{flex-direction:row;align-items:center;gap:14px;width:100%;height:auto;padding:14px 16px;position:static;box-shadow:0 4px 24px #0003}.sidebar-brand{padding:0}.sidebar-nav{flex-direction:row;flex:1}.nav-item span:not(.nav-icon):not(.nav-badge),.nav-item-active:before,.sidebar-footer{display:none}.app-content{padding:20px 16px 88px}.page-head{flex-wrap:wrap;gap:12px}.dlq-meta{flex-wrap:wrap;gap:8px}}
