:root{--bg:#edf1f5;--bg-soft:#f6f8fb;--surface:rgba(255,255,255,0.9);--surface-strong:#ffffff;--surface-raised:#f5f7fa;--ink:#172033;--muted:#627089;--line:rgba(98,112,137,0.16);--line-strong:rgba(98,112,137,0.24);--accent:#2563eb;--accent-dark:#1d4ed8;--accent-ink:#ffffff;--danger:#dc2626;--warning:#d97706;--success:#15803d;--shadow:0 24px 48px rgba(15,23,42,0.08)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:radial-gradient(circle at top left,rgba(37,99,235,.08),transparent 24%),radial-gradient(circle at bottom right,rgba(148,163,184,.12),transparent 22%),linear-gradient(180deg,#f7f9fc,#edf2f7);color:var(--ink);font-family:Segoe UI Variable Text,Avenir Next,Inter,Helvetica Neue,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell,main{min-height:100vh}.shell{display:grid;grid-template-columns:280px 1fr}.sidebar{border-right:1px solid var(--line);padding:28px 20px;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(245,247,250,.92));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:inset -1px 0 0 rgba(255,255,255,.4);display:flex;flex-direction:column;gap:18px}.content{padding:28px}.brand{margin:0 0 22px;font-size:1.7rem;letter-spacing:.06em;font-weight:700}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.brand-row .brand{margin:0}.nav{display:grid;gap:10px}.nav a{padding:11px 13px;border-radius:14px;border:1px solid transparent;color:var(--ink);transition:background .14s ease,border-color .14s ease,transform .14s ease}.nav a:hover,.nav a[data-active=true]{background:rgba(37,99,235,.08);border-color:rgba(37,99,235,.14);transform:translateX(2px)}.grid{display:grid;gap:18px}.stats{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.card h2,.card h3,.card h4,.card p{margin-top:0}.card h3{letter-spacing:.01em}.page-header{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:20px}.muted{color:var(--muted)}.stack{display:grid;gap:12px}.row{gap:12px;align-items:flex-start}.inline-heading,.row{display:flex;flex-wrap:wrap}.inline-heading{align-items:center;gap:10px}.inline-heading h3,.inline-heading h4{margin:0}.project-slug{font-size:.92rem;color:var(--muted)}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.project-sections{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start}.field{display:grid;gap:6px}.checkbox-field{display:flex;align-items:flex-start;gap:12px;font-size:1rem;font-weight:600;line-height:1.45}.checkbox-field input{width:20px;height:20px;margin:2px 0 0;flex:0 0 auto}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:rgba(255,255,255,.98);color:var(--ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}.field textarea{min-height:120px}.btn{border:1px solid transparent;border-radius:999px;padding:10px 16px;background:var(--accent);color:var(--accent-ink);cursor:pointer;font-weight:600;transition:transform .14s ease,filter .14s ease,border-color .14s ease;display:inline-flex;align-items:center;justify-content:center;line-height:1.2}.btn.secondary{background:rgba(98,112,137,.08);color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--danger);color:#ffffff}.btn:hover{filter:brightness(1.04);transform:translateY(-1px)}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(37,99,235,.08);font-size:.92rem;color:var(--accent-dark)}.table{width:100%;border-collapse:collapse}.table td,.table th{text-align:left;border-bottom:1px solid var(--line);padding:12px 8px;vertical-align:top}.table th{color:#6b778c;font-size:.84rem;letter-spacing:.04em;text-transform:uppercase}.table tbody tr:hover{background:rgba(37,99,235,.03)}.danger-note,.success-note,.warning-note{border-radius:16px;padding:12px 14px;border:1px solid transparent;white-space:pre-wrap;word-break:break-word}.danger-note{background:rgba(220,38,38,.08);color:#8b1e1e;border-color:rgba(220,38,38,.12)}.warning-note{background:rgba(217,119,6,.09);color:#8f5310;border-color:rgba(217,119,6,.14)}.success-note{background:rgba(21,128,61,.08);color:#176235;border-color:rgba(21,128,61,.12)}.worker-panel{padding:16px;border-radius:18px;border:1px solid var(--line);background:rgba(244,247,251,.92);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}.worker-panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.worker-panel-header h2{margin:0;font-size:1rem}.worker-zone{margin:4px 0 0;font-size:.78rem}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-width:80px;padding:6px 10px;border-radius:999px;font-size:.82rem;font-weight:700;border:1px solid transparent}.status-badge.healthy{color:#176235;background:rgba(21,128,61,.12);border-color:rgba(21,128,61,.18)}.status-badge.stale{color:#8f5310;background:rgba(217,119,6,.12);border-color:rgba(217,119,6,.18)}.status-badge.offline{color:#8b1e1e;background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.16)}.worker-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.worker-stat{padding:10px 8px;border-radius:14px;background:rgba(255,255,255,.88);border:1px solid var(--line);text-align:center}.worker-stat span,.worker-stat strong{display:block}.worker-stat strong{font-size:1.1rem}.worker-stat span{margin-top:2px;font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.worker-meta{display:grid;gap:10px}.worker-meta p{margin:0;display:grid;gap:3px}.worker-meta strong{font-size:.92rem}.worker-error{margin-top:2px;padding:10px 12px;border-radius:12px;background:rgba(220,38,38,.08);border:1px solid rgba(220,38,38,.12);color:#8b1e1e;max-height:140px;overflow:auto}.worker-empty{margin:0}.detail-text{white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,SF Mono,Consolas,monospace;font-size:.9rem}.sync-indicator{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid transparent;font-size:.86rem;font-weight:700}.sync-indicator.ok{color:#176235;background:rgba(21,128,61,.1);border-color:rgba(21,128,61,.16)}.sync-indicator.bad{color:#8b1e1e;background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.14)}.binding-list{display:grid;gap:10px}.binding-item{padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.7)}.binding-row{justify-content:space-between}.binding-main,.binding-row{display:flex;align-items:center;gap:10px}.binding-main{flex-wrap:wrap;min-width:0}.binding-actions{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;margin-left:auto}.icon-btn{width:28px;height:28px;border-radius:999px;border:1px solid var(--line);background:rgba(98,112,137,.08);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;transition:transform .14s ease,filter .14s ease,border-color .14s ease;padding:0}.icon-btn.danger{color:#8b1e1e;background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.14)}.icon-btn:hover{filter:brightness(1.04);transform:translateY(-1px)}.binding-meta{margin-top:6px;color:var(--muted);font-size:.92rem;line-height:1.45}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.artifact-path-cell{max-width:28rem;overflow-wrap:break-word;word-break:normal;white-space:normal;font-family:ui-monospace,SFMono-Regular,SF Mono,Consolas,monospace;font-size:.88rem;line-height:1.45}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%)}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.content{padding:18px}.page-header{flex-direction:column}}.job-toasts{position:fixed;right:16px;bottom:16px;z-index:50;display:grid;gap:8px;max-width:420px}.job-toast{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;box-shadow:0 6px 24px rgba(0,0,0,.25)}.job-toast.success-note{background:#e7f3ec;border-color:rgba(21,128,61,.35)}.job-toast.danger-note{background:#fcebeb;border-color:rgba(220,38,38,.35)}.job-toast a{font-weight:600;text-decoration:underline}.job-toast-dismiss{background:none;border:none;color:inherit;cursor:pointer;font-size:16px;line-height:1;padding:0}.status-badge.succeeded{color:#176235;background:rgba(21,128,61,.12);border-color:rgba(21,128,61,.18)}.status-badge.running{color:#1e4f8b;background:rgba(37,99,235,.1);border-color:rgba(37,99,235,.16)}.status-badge.pending{color:#8f5310;background:rgba(217,119,6,.12);border-color:rgba(217,119,6,.18)}.status-badge.failed,.status-badge.interrupted{color:#8b1e1e;background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.16)}