:root{--ink:#14181a;--ink-soft:#454f52;--paper:#f6f6f3;--paper-raised:#fff;--line:#dcdfd9;--accent:#24514c;--accent-soft:#e4ede9;--status-pending-fg:#6b5a1e;--status-pending-bg:#f7edcf;--status-success-fg:#1e5c3a;--status-success-bg:#dcefe1;--status-error-fg:#7a2a20;--status-error-bg:#f6dfd8;--status-stuck-fg:#7a2a20;--status-stuck-bg:#f2c9be;--status-processing-fg:#24514c;--status-processing-bg:#e4ede9;--font-body:-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;--font-mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;--sidebar-width:220px;--radius:3px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:14px;cursor:pointer}.mono,code{font-family:var(--font-mono);font-size:.92em}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--paper-raised);border-right:1px solid var(--line);padding:24px 0;display:flex;flex-direction:column}.sidebar-brand{font-weight:600;font-size:15px;padding:0 20px 20px;border-bottom:1px solid var(--line);margin-bottom:16px;color:var(--accent)}.sidebar-nav a{display:block;padding:9px 20px;color:var(--ink-soft);font-size:14px;border-left:2px solid transparent}.sidebar-nav a:hover{color:var(--ink);text-decoration:none;background:var(--accent-soft)}.sidebar-nav a.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-soft);font-weight:600}.sidebar-footer{margin-top:auto;padding:16px 20px 0;border-top:1px solid var(--line)}.main{flex:1 1;padding:32px 40px;max-width:1100px}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:24px}.page-header h1{font-size:20px;font-weight:600;margin:0}.page-header .sub{color:var(--ink-soft);font-size:13px;margin-top:4px}table{width:100%;border-collapse:collapse;background:var(--paper-raised)}td,th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line);font-size:13.5px}th{color:var(--ink-soft);font-weight:600;font-size:12px;border-bottom:2px solid var(--line)}tr:hover td{background:var(--accent-soft)}.badge{display:inline-block;padding:2px 8px;border-radius:var(--radius);font-size:12px;font-weight:600}.badge-pending{color:var(--status-pending-fg);background:var(--status-pending-bg)}.badge-success{color:var(--status-success-fg);background:var(--status-success-bg)}.badge-error{color:var(--status-error-fg);background:var(--status-error-bg)}.badge-stuck{color:var(--status-stuck-fg);background:var(--status-stuck-bg)}.badge-processing{color:var(--status-processing-fg);background:var(--status-processing-bg)}.btn{display:inline-block;padding:7px 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);font-weight:500}.btn:hover{text-decoration:none}.btn-primary,.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#1c3f3b}.btn-danger{background:#b3261e;color:#fff;border-color:#b3261e}.btn-danger:hover{background:#8c1d17}.btn-sm{padding:4px 10px;font-size:12.5px}.btn:disabled{opacity:.5;cursor:not-allowed}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:5px}.field input,.field select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);font-size:14px;background:var(--paper-raised)}.field-hint{font-size:12px;color:var(--ink-soft);margin-top:4px}.card{background:var(--paper-raised);border:1px solid var(--line);border-radius:var(--radius);padding:20px}.empty-state{padding:48px 24px;text-align:center;color:var(--ink-soft)}.error-banner{background:var(--status-error-bg);color:var(--status-error-fg);padding:10px 14px;font-size:13.5px;margin-bottom:16px}.error-banner,.raw-json{border-radius:var(--radius)}.raw-json{background:var(--ink);color:#d9e2e0;padding:14px;font-family:var(--font-mono);font-size:12.5px;overflow-x:auto;white-space:pre-wrap;word-break:break-all}