:root{--accent: #2f6feb;--accent-fg: #ffffff;--bg: #f6f7f9;--fg: #14171a;--fg-muted: #5b636b;--surface: #ffffff;--surface-hover: #f0f1f3;--border: #dde1e6;--border-strong: #c3c9d0;--danger: #d1373f;--danger-bg: #fdecee;--success: #1a7f4e;--success-bg: #e9f8f0;--warn: #9a6700;--warn-bg: #fff3d6;--muted-bg: #eef0f2;--focus-ring: #2f6feb;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--shadow-sm: 0 1px 2px rgba(20, 23, 26, .06);--shadow-md: 0 4px 12px rgba(20, 23, 26, .1);--sidebar-width: 220px;--header-height: 56px;--lang-python-fg: #2f6feb;--lang-python-bg: #e8f0fe;--lang-javascript-fg: #8a6d00;--lang-javascript-bg: #fff6d8;--lang-go-fg: #0f766e;--lang-go-bg: #e1f7f4;color-scheme:light}@media(prefers-color-scheme:dark){:root{--accent: #5b9dff;--accent-fg: #0b1220;--bg: #0f1216;--fg: #e7eaee;--fg-muted: #9aa4ae;--surface: #171b20;--surface-hover: #1e2329;--border: #2a2f36;--border-strong: #3a4149;--danger: #ff6b70;--danger-bg: #2c1416;--success: #4fd18b;--success-bg: #0f2a1d;--warn: #e0ac41;--warn-bg: #2c2210;--muted-bg: #1e2329;--focus-ring: #5b9dff;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--lang-python-fg: #7fb0ff;--lang-python-bg: #142238;--lang-javascript-fg: #e3c76a;--lang-javascript-bg: #2e2712;--lang-go-fg: #4fd1c7;--lang-go-bg: #0d2a28;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p{margin:0 0 var(--space-3)}code,pre{font-family:var(--font-mono)}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}ul{margin:0;padding:0;list-style:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:var(--header-height) 1fr;grid-template-areas:"sidebar header" "sidebar main";min-height:100%}.app-sidebar{grid-area:sidebar;background:var(--surface);border-right:1px solid var(--border);padding:var(--space-4) var(--space-2);display:flex;flex-direction:column;gap:var(--space-1)}.app-sidebar__brand{font-weight:600;padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3)}.app-nav-link{display:block;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--fg-muted);text-decoration:none;font-weight:500}.app-nav-link:hover{background:var(--surface-hover);color:var(--fg)}.app-nav-link.is-active{background:var(--accent);color:var(--accent-fg)}.app-header{grid-area:header;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:0 var(--space-4)}.app-header__user{color:var(--fg-muted);font-size:13px}.app-main{grid-area:main;padding:var(--space-5);overflow:auto}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}.field label{font-weight:500;font-size:13px}.input{padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--fg)}.input:focus-visible{border-color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--fg);font-weight:500;cursor:pointer}.btn:hover{background:var(--surface-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-primary:hover{filter:brightness(1.05)}.alert{padding:var(--space-3);border-radius:var(--radius-sm);font-size:13px}.alert-danger{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4)}.login-page{min-height:100%;display:grid;place-items:center;background:var(--bg);padding:var(--space-4)}.login-card{width:100%;max-width:360px}.toast-region{position:fixed;bottom:var(--space-4);right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000}.toast{min-width:220px;max-width:360px;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);background:var(--surface);border:1px solid var(--border);font-size:13px}.toast-error{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.toast-success{background:var(--success-bg);color:var(--success);border-color:var(--success)}.alert-success{background:var(--success-bg);color:var(--success);border:1px solid var(--success)}.alert-warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--accent-fg)}.btn-danger:hover{filter:brightness(1.05)}.btn-danger-outline{background:var(--surface);border-color:var(--danger);color:var(--danger)}.btn-danger-outline:hover{background:var(--danger-bg)}.badge,.pill{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:999px;font-size:12px;font-weight:600;line-height:1.6;white-space:nowrap}.badge-success,.pill-success{background:var(--success-bg);color:var(--success)}.badge-danger,.pill-danger{background:var(--danger-bg);color:var(--danger)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.pill-accent{background:var(--accent);color:var(--accent-fg)}.pill-muted{background:var(--muted-bg);color:var(--fg-muted)}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border)}.table th{color:var(--fg-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.dialog-backdrop{position:fixed;inset:0;background:#00000073;display:grid;place-items:center;padding:var(--space-4);z-index:1100}.dialog{width:100%;max-width:420px;box-shadow:var(--shadow-md)}.dialog__title{margin-bottom:var(--space-2)}.dialog__description{color:var(--fg-muted);margin-bottom:var(--space-4)}.dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.stat-row{display:flex;gap:var(--space-5)}.stat-tile{display:flex;flex-direction:column;gap:var(--space-1)}.stat-tile__label{color:var(--fg-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.stat-tile__value{font-size:28px;font-weight:700}.health-list,.run-list{display:flex;flex-direction:column;gap:var(--space-2)}.health-list__item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--warn-bg);color:var(--warn);border-radius:var(--radius-sm);font-size:13px}.run-list__item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.run-list__job{font-weight:500}.run-list__time{color:var(--fg-muted);font-size:12px;margin-left:auto}.bots-page section+section,.dashboard-page section+section{margin-top:var(--space-5)}.badge-lang-python{background:var(--lang-python-bg);color:var(--lang-python-fg)}.badge-lang-javascript{background:var(--lang-javascript-bg);color:var(--lang-javascript-fg)}.badge-lang-go{background:var(--lang-go-bg);color:var(--lang-go-fg)}.toggle{position:relative;width:36px;height:20px;padding:0;border-radius:999px;border:1px solid var(--border-strong);background:var(--muted-bg);cursor:pointer;flex:none}.toggle:disabled{opacity:.6;cursor:not-allowed}.toggle__thumb{position:absolute;top:1px;left:1px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .12s ease}.toggle.is-on{background:var(--accent);border-color:var(--accent)}.toggle.is-on .toggle__thumb{transform:translate(16px)}.jobs-page__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.jobs-page__last-run-time{color:var(--fg-muted);font-size:12px}.job-create-page .card{max-width:640px}.job-create__method-label{font-weight:500;font-size:13px;display:block;margin-bottom:var(--space-2)}.job-create__method-options{display:flex;gap:var(--space-4)}.job-create__method-options label{display:flex;align-items:center;gap:var(--space-1);font-weight:400}.code-editor{margin-bottom:var(--space-4)}.code-editor__tabs{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1);border-bottom:1px solid var(--border);margin-bottom:var(--space-3);padding-bottom:var(--space-2)}.code-editor__tab{display:flex;align-items:center;gap:2px}.code-editor__tab button[role=tab]{padding:var(--space-1) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--fg-muted);cursor:pointer;font-family:var(--font-mono);font-size:12px}.code-editor__tab.is-active button[role=tab]{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.code-editor__remove-tab{border:none;background:transparent;color:var(--fg-muted);cursor:pointer;font-size:14px;line-height:1;padding:0 var(--space-1)}.code-editor__remove-tab:hover{color:var(--danger)}.code-editor__add-tab{padding:var(--space-1) var(--space-2);font-size:12px}.code-editor__filename{max-width:320px}.code-editor__loading{display:grid;place-items:center;height:420px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--fg-muted)}.trigger-editor{display:flex;flex-direction:column;gap:var(--space-1)}.trigger-editor__type-label{font-weight:500;font-size:13px;display:block;margin-bottom:var(--space-2)}.trigger-editor__type-options{display:flex;gap:var(--space-4)}.trigger-editor__type-options label{display:flex;align-items:center;gap:var(--space-1);font-weight:400}.trigger-editor__hint{color:var(--fg-muted);font-size:13px}.trigger-editor__webhook-row{display:flex;gap:var(--space-2)}.trigger-editor__webhook-row .input{flex:1;font-family:var(--font-mono)}.trigger-list{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-4)}.trigger-list__item-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.trigger-list__item-header strong{text-transform:capitalize;margin-right:auto}.version-list__actions{display:flex;gap:var(--space-2)}.version-list__active-pill{margin-left:var(--space-2)}.version-list__log-dialog{max-width:720px}.version-list__log{max-height:360px;overflow:auto;background:var(--muted-bg);padding:var(--space-3);border-radius:var(--radius-sm);font-size:12px;white-space:pre-wrap;word-break:break-word}.job-detail__header{margin-bottom:var(--space-4)}.job-detail__title-row{display:flex;align-items:center;gap:var(--space-3)}.job-detail__title-row h1{margin:0}.job-detail__controls{display:flex;align-items:flex-end;gap:var(--space-4);margin-top:var(--space-3)}.job-detail__controls label{display:flex;flex-direction:column;gap:var(--space-1);font-size:13px;font-weight:500}.job-detail__tabs{display:flex;gap:var(--space-1);border-bottom:1px solid var(--border);margin-bottom:var(--space-4)}.job-detail__tab{padding:var(--space-2) var(--space-4);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--fg-muted);font-weight:500;cursor:pointer}.job-detail__tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.job-detail__settings-tab section+section,.job-detail__runs-tab .run-list{margin-top:var(--space-4)}.job-detail__settings-tab label{display:flex;flex-direction:column;gap:var(--space-1);font-size:13px;font-weight:500;margin-bottom:var(--space-3)}.job-detail__hint{color:var(--fg-muted);font-size:13px}.job-detail__git-actions{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap}.env-row{display:flex;gap:var(--space-2);margin-bottom:var(--space-2)}.env-row .input{flex:1}.run-detail__back-link{margin-bottom:var(--space-3)}.run-detail__header{margin-bottom:var(--space-4)}.run-detail__title-row{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-3)}.run-detail__title-row h1{margin:0;font-size:18px;font-family:var(--font-mono);word-break:break-all}.run-detail__meta{display:flex;flex-wrap:wrap;gap:var(--space-5);margin:0}.run-detail__meta-item{display:flex;flex-direction:column;gap:2px}.run-detail__meta-item dt{color:var(--fg-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.run-detail__meta-item dd{margin:0;font-weight:500}.run-detail__payload{margin-top:var(--space-4)}.run-detail__payload summary{cursor:pointer;font-weight:500;color:var(--fg-muted)}.run-detail__payload-json{margin-top:var(--space-2);padding:var(--space-3);background:var(--muted-bg);border-radius:var(--radius-sm);font-size:12px;overflow:auto;max-height:320px}.log-viewer{display:flex;flex-direction:column;gap:var(--space-2)}.log-viewer__toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.log-viewer__toolbar-label{font-size:13px;font-weight:500;margin-right:var(--space-2)}.log-viewer__truncated-note{color:var(--fg-muted);font-size:12px;margin-left:auto}.log-viewer__show-all{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;font:inherit;text-decoration:underline}.log-viewer__body{height:480px;overflow:auto;background:var(--muted-bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3)}.log-viewer__pre{margin:0;font-family:var(--font-mono);font-size:12px;white-space:pre-wrap;word-break:break-word}.log-viewer__empty{margin:0;color:var(--fg-muted)}.field__hint{margin:var(--space-1) 0 0;color:var(--danger);font-size:12px}.settings-page section+section{margin-top:var(--space-5)}.settings-about{margin:0;display:flex;flex-direction:column;gap:var(--space-3)}.settings-about__row dt{color:var(--fg-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.settings-about__row dd{margin:2px 0 0}.not-found-page{display:grid;place-items:center;min-height:60vh;text-align:center;gap:var(--space-3)}
