:root{--bg:#f5f7fa;--surface:#fff;--surface-2:#f0f3f7;--border:#dde3ea;--text:#1b2430;--muted:#64707d;--primary:#1f5fd1;--primary-ink:#fff;--ok:#17803d;--ok-bg:#e5f5ea;--warn:#a15c00;--warn-bg:#fff3dc;--danger:#c0262d;--danger-bg:#fde8e8;--info:#1f5fd1;--info-bg:#e6eefc;--accent:#7a3fc4;--accent-bg:#f1e9fc;--sidebar:#14213d;--sidebar-ink:#c9d3e3;--radius:10px;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f141b;--surface:#171e27;--surface-2:#1e2732;--border:#2a3542;--text:#e3e8ef;--muted:#8e9aa8;--primary:#5b8ef0;--primary-ink:#0b1220;--ok:#4cc77a;--ok-bg:#12301f;--warn:#f0b04a;--warn-bg:#33270f;--danger:#f2676c;--danger-bg:#3a1618;--info:#79a6f5;--info-bg:#15243f;--accent:#b48bf0;--accent-bg:#2a1d3f;--sidebar:#0b1017;--sidebar-ink:#aab6c6;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}h1{margin:0;font-size:22px}h2{margin:0;font-size:17px}h3{margin:0 0 12px;font-size:15px}h4{margin:14px 0 6px;font-size:13px}.muted{color:var(--muted)}.small{font-size:12px}.num{text-align:right;font-variant-numeric:tabular-nums}.center{text-align:center}.right{text-align:right}.nowrap{white-space:nowrap}.warn{color:var(--warn)}.danger{color:var(--danger)}.shell{grid-template-columns:228px 1fr;min-height:100%;display:grid}.sidebar{background:var(--sidebar);color:var(--sidebar-ink);flex-direction:column;height:100vh;padding:18px 12px;display:flex;position:sticky;top:0}.sidebar nav{flex-direction:column;flex:1;gap:2px;margin-top:22px;display:flex}.sidebar nav a{color:var(--sidebar-ink);border-radius:8px;padding:8px 12px}.sidebar nav a:hover{background:#ffffff0f;text-decoration:none}.sidebar nav a.active{color:#fff;background:#ffffff1f;font-weight:600}.brand{align-items:center;gap:10px;padding:0 8px;display:flex}.brand-mark{background:var(--primary);color:#fff;border-radius:9px;place-items:center;width:36px;height:36px;font-size:22px;display:grid}.brand-name{font-size:16px;font-weight:700}.sidebar .brand-name{color:#fff}.brand-sub{opacity:.75;font-size:11px}.sidebar-foot{border-top:1px solid #ffffff1a;justify-content:space-between;align-items:center;gap:8px;padding-top:12px;display:flex}.sidebar-foot .me{color:var(--sidebar-ink);border-radius:8px;min-width:0;padding:4px 8px}.sidebar-foot .me:hover{background:#ffffff0f;text-decoration:none}.me-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.me-role{font-size:11px}.sidebar .btn-ghost{color:var(--sidebar-ink);border-color:#fff3}.content{min-width:0;max-width:1440px;padding:24px 32px 48px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.page-header .subtitle{color:var(--muted);margin-top:4px}.page-header .actions{flex-wrap:wrap;gap:8px;display:flex}.crumbs{color:var(--muted);margin-bottom:6px;font-size:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;margin-bottom:16px;padding:16px 18px;overflow-x:auto}.card.narrow{max-width:480px}.cards{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;display:grid}.cards .card{margin:0}.card-link{color:inherit;flex-direction:column;gap:6px;transition:border-color .15s,transform .15s;display:flex}.card-link:hover{border-color:var(--primary);text-decoration:none;transform:translateY(-1px)}.card-link h3{margin:0}.card-top{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.mini-metrics{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:6px;font-size:13px;display:flex}.mini-metrics .warn{color:var(--warn);font-weight:600}.mini-metrics .danger{color:var(--danger);font-weight:600}.flow-inline{color:var(--muted);font-size:12px}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.grid-2 .card{margin:0}.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px}.kpi-value{font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.kpi-label{color:var(--muted);font-size:12px}.kpi-warn .kpi-value{color:var(--warn)}.kpi-danger .kpi-value{color:var(--danger)}.kpi-ok .kpi-value{color:var(--ok)}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.toolbar .input{width:auto;min-width:180px}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:600}.table td{border-bottom:1px solid var(--border);vertical-align:top;padding:8px 10px}.table tr:last-child td{border-bottom:none}.table th.num,.table td.num{text-align:right}.table td.ellipsis{white-space:nowrap;text-overflow:ellipsis;max-width:320px;overflow:hidden}.matrix td,.matrix th{font-size:13px}.yes{color:var(--ok);font-weight:700}.no{color:var(--muted)}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:7px 14px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--primary)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink);font-weight:600}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-danger{color:var(--danger)}.btn-danger:hover:not(:disabled){border-color:var(--danger);background:var(--danger-bg)}.btn-ghost{background:0 0}.btn-sm{padding:3px 10px;font-size:13px}.icon-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;font-size:22px;line-height:1}.link{color:var(--primary);cursor:pointer;font:inherit;background:0 0;border:none;padding:0}.input{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:8px;padding:8px 10px}.input:focus{outline:2px solid color-mix(in srgb, var(--primary) 35%, transparent);border-color:var(--primary)}.input-sm{width:auto;padding:3px 8px}textarea.input{resize:vertical}.filter{max-width:320px;margin-bottom:6px}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.field-label{color:var(--muted);font-size:12px;font-weight:600}.field-hint{color:var(--muted);font-size:12px}.row{flex-wrap:wrap;gap:14px;display:flex}.row-inline{align-items:center;gap:8px;display:flex}.form-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.check{align-items:center;gap:8px;display:flex}.badge{background:var(--surface-2);color:var(--muted);white-space:nowrap;vertical-align:middle;border-radius:999px;padding:1px 8px;font-size:11.5px;font-weight:600;display:inline-block}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}.badge-accent{background:var(--accent-bg);color:var(--accent)}.chips{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.chip{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12.5px;display:inline-flex}.chip-icon{opacity:.8}.error-box{background:var(--danger-bg);color:var(--danger);border-radius:8px;padding:10px 12px}.ok-box{background:var(--ok-bg);color:var(--ok);border-radius:8px;padding:10px 12px}.error-inline{color:var(--danger)}.empty{color:var(--muted);text-align:center;border:1px dashed var(--border);border-radius:var(--radius);padding:28px}.loading{color:var(--muted);text-align:center;padding:40px}.sync-line{color:var(--muted);margin:-8px 0 14px;font-size:13px}.tabs{border-bottom:1px solid var(--border);gap:2px;margin:6px 0 14px;display:flex;overflow-x:auto}.tabs button{cursor:pointer;color:var(--muted);font:inherit;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 14px}.tabs button.active{color:var(--text);border-bottom-color:var(--primary);font-weight:600}.modal-backdrop{z-index:50;background:#0a0f1980;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:12px;width:min(520px,100%);max-height:92vh;overflow:auto;box-shadow:0 20px 50px #0000004d}.modal-wide{width:min(760px,100%)}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-body{padding:18px}.pipeline{flex-wrap:wrap;align-items:center;gap:12px 0;display:flex}.pipeline-seg{align-items:center;display:flex}.pipeline-node{border:2px solid var(--border);background:var(--surface-2);border-radius:999px;padding:8px 14px;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700}.pipeline-edge{cursor:pointer;min-width:140px;color:var(--muted);font:inherit;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:center;margin:0 6px;padding:6px 12px;display:flex;position:relative}.pipeline-edge:before{content:"";opacity:.35;border-top:3px solid;position:absolute;top:50%;left:0;right:10px}.pipeline-edge:after{content:"";opacity:.35;border:6px solid #0000;border-left:10px solid;border-right:0;position:absolute;top:calc(50% - 6px);right:0}.pipeline-edge>*{background:var(--surface);padding:0 6px;position:relative}.pipeline-edge:hover,.edge-selected,.pipeline-edge:hover>*,.edge-selected>*{background:var(--surface-2)}.edge-count{font-size:22px;font-weight:800;line-height:1.1}.edge-label{font-size:11px}.edge-behind{color:var(--danger);font-size:11px;font-weight:700}.edge-pr{color:var(--info);font-size:11px}.edge-ok{color:var(--ok)}.edge-pending{color:var(--warn)}.edge-danger,.edge-error{color:var(--danger)}.step-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.file-group h4{border-bottom:1px solid var(--border);padding-bottom:4px}.file-list{margin:0;padding:0;list-style:none}.file-list li{border-bottom:1px dashed var(--border);grid-template-columns:minmax(160px,260px) 1fr;gap:12px;padding:6px 0;display:grid}.file-list li:last-child{border-bottom:none}.obj-name{word-break:break-word;font-weight:600}.obj-files{flex-direction:column;gap:3px;min-width:0;display:flex}.file-path{word-break:break-all;font-size:12.5px}.diffstat{margin-left:8px;font-size:11.5px}.diffstat .add{color:var(--ok)}.diffstat .del{color:var(--danger)}.flow-editor{border:1px dashed var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;display:flex}.flow-item{align-items:center;gap:6px;display:inline-flex}.flow-item .arrow{color:var(--muted)}.flow-tools button{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:0 0;border-radius:4px;margin-left:2px;padding:0 5px}.alerts{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.alert{background:var(--surface-2);border-radius:8px;align-items:flex-start;gap:10px;padding:8px 10px;display:flex}.alert-dot{border-radius:50%;flex:none;width:8px;height:8px;margin-top:7px}.alert-danger .alert-dot{background:var(--danger)}.alert-warn .alert-dot{background:var(--warn)}.alert-info .alert-dot{background:var(--info)}.alert-ctx{font-weight:600}ul.plain{flex-direction:column;gap:6px;margin:0;padding-left:18px;display:flex}.login-wrap{background:linear-gradient(135deg, var(--sidebar), #1f5fd1);place-items:center;min-height:100%;padding:16px;display:grid}.login-card{background:var(--surface);border-radius:14px;flex-direction:column;gap:16px;width:min(380px,100%);padding:28px;display:flex;box-shadow:0 20px 50px #0000004d}.login-card .brand{padding:0 0 8px}@media (width<=960px){.grid-2{grid-template-columns:1fr}}@media (width<=760px){.shell{grid-template-columns:1fr}.sidebar{height:auto;padding:12px 16px;position:static}.sidebar nav{flex-flow:wrap;margin-top:10px}.sidebar-foot{margin-top:8px}.content{padding:16px}.file-list li{grid-template-columns:1fr;gap:2px}.toolbar .input{flex:1;min-width:0}}.provider-notes{margin:6px 0 10px;font-size:13px}
