.dropdown[data-v-1334eb82]{position:relative;display:inline-flex}.dropdown-menu{z-index:var(--z-popover);animation:dropdown-in var(--t-fast)}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px)}}.cmd-overlay[data-v-1f7a0534]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;justify-content:center;align-items:flex-start;padding:12vh var(--s-4) var(--s-4);animation:fade var(--t-base)}.cmd[data-v-1f7a0534]{width:100%;max-width:620px;max-height:62vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--sh-xl);overflow:hidden;animation:pop var(--t-base)}.cmd-search[data-v-1f7a0534]{display:flex;align-items:center;gap:var(--s-3);padding:0 var(--s-4);height:52px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.cmd-search input[data-v-1f7a0534]{flex:1;min-width:0;height:100%;border:none;background:none;font-size:var(--fs-lg);color:var(--text);padding:0;outline:none}.cmd-search input[data-v-1f7a0534]:focus{box-shadow:none;border:none}.cmd-search input[data-v-1f7a0534]::placeholder{color:var(--text-muted)}.cmd-list[data-v-1f7a0534]{overflow-y:auto;padding:var(--s-2);flex:1}.cmd-group[data-v-1f7a0534]{padding:var(--s-2) var(--s-2) var(--s-1);font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.cmd-item[data-v-1f7a0534]{display:flex;align-items:center;gap:var(--s-3);width:100%;padding:var(--s-2);font:inherit;font-size:var(--fs-md);color:var(--text);background:none;border:none;border-radius:var(--r-sm);cursor:pointer;text-align:left}.cmd-item.on[data-v-1f7a0534]{background:var(--accent-bg)}.cmd-icon[data-v-1f7a0534]{width:26px;height:26px;flex-shrink:0;display:grid;place-items:center;color:var(--text-2);background:var(--surface-3);border-radius:var(--r-xs)}.cmd-item.on .cmd-icon[data-v-1f7a0534]{background:var(--surface);color:var(--text-brand)}.cmd-label[data-v-1f7a0534]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmd-hint[data-v-1f7a0534]{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}.cmd-none[data-v-1f7a0534]{display:flex;flex-direction:column;align-items:center;gap:var(--s-2);padding:var(--s-10) var(--s-4);color:var(--text-3);font-size:var(--fs-md);text-align:center}.cmd-foot[data-v-1f7a0534]{display:flex;gap:var(--s-4);padding:var(--s-2) var(--s-4);border-top:1px solid var(--border-subtle);background:var(--surface-2);font-size:var(--fs-xs);color:var(--text-3);flex-shrink:0}.cmd-foot span[data-v-1f7a0534]{display:inline-flex;align-items:center;gap:5px}@media(max-width:620px){.cmd-overlay[data-v-1f7a0534]{padding:var(--s-4);align-items:stretch}.cmd[data-v-1f7a0534]{max-height:none}.cmd-hint[data-v-1f7a0534]{display:none}}.dock[data-v-e832dae4]{position:fixed;right:var(--s-5);bottom:var(--s-5);z-index:calc(var(--z-toast) - 1);width:320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);overflow:hidden}.dock-head[data-v-e832dae4]{display:flex;align-items:center;gap:var(--s-2);width:100%;padding:var(--s-3) var(--s-4);font:inherit;font-size:var(--fs-md);font-weight:600;color:var(--text);background:var(--surface-2);border:none;border-bottom:1px solid var(--border-subtle);cursor:pointer;text-align:left}.dock.collapsed .dock-head[data-v-e832dae4]{border-bottom:none}.dock-title[data-v-e832dae4]{flex:1}.pulse[data-v-e832dae4]{width:8px;height:8px;flex-shrink:0;background:var(--accent);border-radius:50%;animation:pulse-e832dae4 1.6s ease-in-out infinite}@keyframes pulse-e832dae4{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.75)}}.dock-body[data-v-e832dae4]{max-height:300px;overflow-y:auto}.job[data-v-e832dae4]{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--border-subtle)}.job[data-v-e832dae4]:last-child{border-bottom:none}.job-row[data-v-e832dae4]{display:flex;align-items:center;gap:var(--s-2)}.job-label[data-v-e832dae4]{font-size:var(--fs-md);font-weight:500}.job-pct[data-v-e832dae4]{font-size:var(--fs-xs);color:var(--text-3);font-variant-numeric:tabular-nums}.job-stage[data-v-e832dae4]{margin:3px 0 var(--s-2);font-size:var(--fs-xs);color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.job.failed .job-label[data-v-e832dae4]{color:var(--danger)}.dock-enter-active[data-v-e832dae4],.dock-leave-active[data-v-e832dae4]{transition:all var(--t-base)}.dock-enter-from[data-v-e832dae4],.dock-leave-to[data-v-e832dae4]{opacity:0;transform:translateY(12px)}@media(max-width:620px){.dock[data-v-e832dae4]{left:var(--s-3);right:var(--s-3);width:auto;bottom:var(--s-3)}}.shell[data-v-ced07aae]{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100vh;transition:grid-template-columns var(--t-base)}.shell.is-collapsed[data-v-ced07aae]{grid-template-columns:var(--sidebar-w-collapsed) minmax(0,1fr)}.sidebar[data-v-ced07aae]{display:flex;flex-direction:column;gap:var(--s-2);padding:var(--s-3);background:var(--surface);border-right:1px solid var(--border);position:sticky;top:0;height:100vh;overflow:hidden auto;scrollbar-width:none}.sidebar[data-v-ced07aae]::-webkit-scrollbar{display:none}.brand[data-v-ced07aae]{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2);border-radius:var(--r-md);color:var(--text);min-width:0}.brand[data-v-ced07aae]:hover{text-decoration:none;background:var(--surface-hover)}.brand-mark[data-v-ced07aae]{width:32px;height:32px;flex-shrink:0;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--brand-500),var(--brand-700));border-radius:var(--r-md);box-shadow:var(--sh-sm)}.brand-text[data-v-ced07aae]{display:flex;flex-direction:column;min-width:0}.brand-name[data-v-ced07aae]{font-size:var(--fs-md);font-weight:600;letter-spacing:-.01em;white-space:nowrap}.brand-sub[data-v-ced07aae]{font-size:var(--fs-xs);color:var(--text-3);white-space:nowrap}.nav[data-v-ced07aae]{display:flex;flex-direction:column;gap:var(--s-4);margin-top:var(--s-2)}.nav-group[data-v-ced07aae]{display:flex;flex-direction:column;gap:1px}.nav-group-label[data-v-ced07aae]{padding:0 var(--s-2) var(--s-1);font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.nav-item[data-v-ced07aae]{display:flex;align-items:center;gap:var(--s-3);height:36px;padding:0 var(--s-2);border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-md);font-weight:500;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast);position:relative}.nav-item[data-v-ced07aae]:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.nav-item.router-link-active[data-v-ced07aae]{background:var(--accent-bg);color:var(--text-brand);font-weight:600}.nav-item.router-link-active[data-v-ced07aae]:before{content:"";position:absolute;left:calc(-1 * var(--s-3));top:8px;bottom:8px;width:3px;background:var(--accent);border-radius:0 3px 3px 0}.nav-item.as-button[data-v-ced07aae]{width:100%;background:none;border:none;font:inherit;font-weight:500;cursor:pointer;text-align:left}.nav-label[data-v-ced07aae]{flex:1;overflow:hidden;text-overflow:ellipsis}.nav-count[data-v-ced07aae]{min-width:19px;height:19px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:700;color:var(--accent-contrast);background:var(--accent);border-radius:var(--r-full)}.nav-kbd[data-v-ced07aae]{margin-left:auto}.sidebar-foot[data-v-ced07aae]{margin-top:auto;padding-top:var(--s-2);border-top:1px solid var(--border-subtle)}.is-collapsed .brand-text[data-v-ced07aae],.is-collapsed .nav-label[data-v-ced07aae],.is-collapsed .nav-group-label[data-v-ced07aae],.is-collapsed .nav-count[data-v-ced07aae],.is-collapsed .nav-kbd[data-v-ced07aae]{display:none}.is-collapsed .nav-item[data-v-ced07aae],.is-collapsed .brand[data-v-ced07aae]{justify-content:center;padding:0}.is-collapsed .nav-group[data-v-ced07aae]{gap:2px}.is-collapsed .nav-group+.nav-group[data-v-ced07aae]{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--border-subtle)}.main[data-v-ced07aae]{display:flex;flex-direction:column;min-width:0}.topbar[data-v-ced07aae]{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--s-2);height:var(--topbar-h);padding:0 var(--s-5);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.page-title[data-v-ced07aae]{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.012em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-toggle[data-v-ced07aae]{display:none}.search-trigger[data-v-ced07aae]{display:flex;align-items:center;gap:var(--s-2);height:var(--control-h);padding:0 var(--s-2) 0 var(--s-3);min-width:250px;font:inherit;font-size:var(--fs-md);color:var(--text-muted);background:var(--surface-3);border:1px solid transparent;border-radius:var(--r-sm);cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),box-shadow var(--t-fast)}.search-trigger[data-v-ced07aae]:hover{border-color:var(--border-strong)}.search-trigger[data-v-ced07aae]:focus-visible{border-color:var(--accent);box-shadow:var(--sh-focus);outline:none}.search-trigger span[data-v-ced07aae]{flex:1;text-align:left}.icon-badge[data-v-ced07aae]{position:relative;display:flex}.icon-badge .dot[data-v-ced07aae]{position:absolute;top:-2px;right:-2px;width:7px;height:7px;background:var(--accent);border:1.5px solid var(--bg);border-radius:50%}.user-btn[data-v-ced07aae]{display:flex;align-items:center;gap:5px;height:var(--control-h);padding:0 var(--s-1) 0 0;background:none;border:none;cursor:pointer;border-radius:var(--r-sm)}.user-btn[data-v-ced07aae]:hover{background:var(--surface-hover)}.avatar[data-v-ced07aae]{width:28px;height:28px;display:grid;place-items:center;font-size:var(--fs-xs);font-weight:700;color:#fff;background:linear-gradient(135deg,var(--brand-400),var(--brand-600));border-radius:var(--r-full)}.content[data-v-ced07aae]{flex:1;padding:var(--s-6);min-width:0}.nav-scrim[data-v-ced07aae]{display:none}@media(max-width:900px){.shell[data-v-ced07aae],.shell.is-collapsed[data-v-ced07aae]{grid-template-columns:minmax(0,1fr)}.sidebar[data-v-ced07aae]{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);z-index:var(--z-drawer);transform:translate(-100%);transition:transform var(--t-base);box-shadow:var(--sh-xl)}.nav-open .sidebar[data-v-ced07aae]{transform:translate(0)}.is-collapsed .brand-text[data-v-ced07aae],.is-collapsed .nav-label[data-v-ced07aae],.is-collapsed .nav-group-label[data-v-ced07aae]{display:flex}.is-collapsed .nav-item[data-v-ced07aae],.is-collapsed .brand[data-v-ced07aae]{justify-content:flex-start;padding:0 var(--s-2)}.nav-open .nav-scrim[data-v-ced07aae]{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:calc(var(--z-drawer) - 1)}.nav-toggle[data-v-ced07aae]{display:inline-flex}.sidebar-foot[data-v-ced07aae]{display:none}.search-trigger[data-v-ced07aae]{min-width:0}.search-trigger span[data-v-ced07aae],.search-trigger kbd[data-v-ced07aae]{display:none}.content[data-v-ced07aae]{padding:var(--s-4)}.topbar[data-v-ced07aae]{padding:0 var(--s-3)}}.toast-enter-active[data-v-341347e0],.toast-leave-active[data-v-341347e0]{transition:all var(--t-base)}.toast-enter-from[data-v-341347e0]{opacity:0;transform:translate(24px)}.toast-leave-to[data-v-341347e0]{opacity:0;transform:translate(24px) scale(.96)}.toast-leave-active[data-v-341347e0]{position:absolute;right:0}.page-enter-active,.page-leave-active{transition:opacity var(--t-fast),transform var(--t-fast)}.page-enter-from{opacity:0;transform:translateY(4px)}.page-leave-to{opacity:0}:root{--gray-0: #ffffff;--gray-25: #fcfcfd;--gray-50: #f8f9fb;--gray-100:#f1f3f7;--gray-150:#e8ebf1;--gray-200:#dfe3ea;--gray-300:#c8ced9;--gray-400:#9aa3b2;--gray-500:#6b7484;--gray-600:#4d5563;--gray-700:#363d49;--gray-800:#232833;--gray-900:#161a22;--gray-950:#0e1116;--brand-50: #eef2ff;--brand-100: #e0e7ff;--brand-200: #c7d2fe;--brand-300: #a5b4fc;--brand-400: #818cf8;--brand-500: #6366f1;--brand-600: #4f46e5;--brand-700: #4338ca;--brand-800: #3730a3;--green-50: #ecfdf5;--green-500: #10b981;--green-600: #059669;--amber-50: #fffbeb;--amber-500: #f59e0b;--amber-600: #d97706;--red-50: #fef2f2;--red-500: #ef4444;--red-600: #dc2626;--blue-50: #eff6ff;--blue-500: #3b82f6;--blue-600: #2563eb;--violet-50: #f5f3ff;--violet-500:#8b5cf6;--teal-500: #14b8a6;--pink-500: #ec4899;--bg: var(--gray-50);--bg-subtle: var(--gray-100);--surface: var(--gray-0);--surface-2: var(--gray-25);--surface-3: var(--gray-100);--surface-hover: var(--gray-50);--surface-active: var(--gray-100);--overlay: rgba(14, 17, 22, .45);--border: var(--gray-200);--border-strong: var(--gray-300);--border-subtle: var(--gray-150);--text: var(--gray-900);--text-2: var(--gray-600);--text-3: var(--gray-500);--text-muted: var(--gray-400);--text-inverse: var(--gray-0);--text-brand: var(--brand-600);--ok: var(--green-600);--ok-bg: var(--green-50);--ok-border: #a7f3d0;--warn: var(--amber-600);--warn-bg: var(--amber-50);--warn-border: #fcd34d;--danger: var(--red-600);--danger-bg: var(--red-50);--danger-border: #fecaca;--info: var(--blue-600);--info-bg: var(--blue-50);--info-border: #bfdbfe;--accent: var(--brand-600);--accent-bg: var(--brand-50);--accent-border: var(--brand-200);--accent-contrast: #ffffff;--sheet: #107c41;--sheet-strong: #0b5c30;--sheet-bg: #eaf4ee;--sheet-bg-strong: #d5e9dd;--sheet-border: #a9d3bd;--side-a: #6d5bd0;--side-a-bg: #f3f0fd;--side-a-border: #c9bff3;--side-b: #0e7490;--side-b-bg: #e8f5f9;--side-b-border: #a5d8e6;--c1: var(--brand-500);--c2: var(--teal-500);--c3: var(--amber-500);--c4: var(--pink-500);--c5: var(--violet-500);--c6: var(--blue-500);--c7: var(--green-500);--c8: #f97316;--font: "Inter", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", Consolas, "SF Mono", monospace;--fs-xs: 11.5px;--fs-sm: 12.5px;--fs-md: 13.5px;--fs-lg: 15px;--fs-xl: 18px;--fs-2xl: 22px;--fs-3xl: 28px;--lh-tight: 1.25;--lh-normal: 1.5;--lh-loose: 1.65;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--r-xs: 5px;--r-sm: 7px;--r-md: 9px;--r-lg: 12px;--r-xl: 16px;--r-full: 999px;--sh-xs: 0 1px 2px rgba(16, 24, 40, .05);--sh-sm: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);--sh-md: 0 4px 12px rgba(16, 24, 40, .08), 0 2px 4px rgba(16, 24, 40, .04);--sh-lg: 0 12px 28px rgba(16, 24, 40, .12), 0 4px 8px rgba(16, 24, 40, .05);--sh-xl: 0 24px 56px rgba(16, 24, 40, .18);--sh-focus: 0 0 0 3px var(--brand-100);--t-fast: .11s cubic-bezier(.4, 0, .2, 1);--t-base: .17s cubic-bezier(.4, 0, .2, 1);--t-slow: .26s cubic-bezier(.4, 0, .2, 1);--z-sticky: 10;--z-drawer: 40;--z-modal: 50;--z-popover: 60;--z-toast: 70;--sidebar-w: 244px;--sidebar-w-collapsed: 62px;--topbar-h: 56px;--control-h: 34px;--control-h-sm: 28px;--control-h-lg: 40px;color-scheme:light}:root[data-theme=dark]{--bg: var(--gray-950);--bg-subtle: #12161d;--surface: #161b23;--surface-2: #1b212b;--surface-3: #222835;--surface-hover: #1e242e;--surface-active: #262d3a;--overlay: rgba(0, 0, 0, .62);--border: #2a313d;--border-strong: #3a424f;--border-subtle: #232935;--text: #e9edf4;--text-2: #a9b2c1;--text-3: #8b95a5;--text-muted: #6b7484;--text-inverse: var(--gray-950);--text-brand: var(--brand-300);--ok: #34d399;--ok-bg: rgba(16, 185, 129, .12);--ok-border: rgba(16, 185, 129, .35);--warn: #fbbf24;--warn-bg: rgba(245, 158, 11, .12);--warn-border: rgba(245, 158, 11, .35);--danger: #f87171;--danger-bg: rgba(239, 68, 68, .12);--danger-border: rgba(239, 68, 68, .35);--info: #60a5fa;--info-bg: rgba(59, 130, 246, .12);--info-border: rgba(59, 130, 246, .35);--accent: var(--brand-400);--accent-bg: rgba(99, 102, 241, .14);--accent-border: rgba(99, 102, 241, .38);--accent-contrast: #0e1116;--sheet: #4ade80;--sheet-strong: #86efac;--sheet-bg: rgba(16, 124, 65, .18);--sheet-bg-strong: rgba(16, 124, 65, .3);--sheet-border: rgba(74, 222, 128, .34);--side-a: #a78bfa;--side-a-bg: rgba(139, 92, 246, .16);--side-a-border: rgba(167, 139, 250, .38);--side-b: #38bdf8;--side-b-bg: rgba(14, 165, 233, .16);--side-b-border: rgba(56, 189, 248, .38);--c1: #818cf8;--c2: #2dd4bf;--c3: #fbbf24;--c4: #f472b6;--c5: #a78bfa;--c6: #60a5fa;--c7: #34d399;--c8: #fb923c;--sh-xs: none;--sh-sm: 0 1px 2px rgba(0, 0, 0, .4);--sh-md: 0 4px 14px rgba(0, 0, 0, .45);--sh-lg: 0 14px 34px rgba(0, 0, 0, .55);--sh-xl: 0 26px 60px rgba(0, 0, 0, .65);--sh-focus: 0 0 0 3px rgba(99, 102, 241, .3);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: var(--gray-950);--bg-subtle: #12161d;--surface: #161b23;--surface-2: #1b212b;--surface-3: #222835;--surface-hover: #1e242e;--surface-active: #262d3a;--overlay: rgba(0, 0, 0, .62);--border: #2a313d;--border-strong: #3a424f;--border-subtle: #232935;--text: #e9edf4;--text-2: #a9b2c1;--text-3: #8b95a5;--text-muted: #6b7484;--text-inverse: var(--gray-950);--text-brand: var(--brand-300);--ok: #34d399;--ok-bg: rgba(16, 185, 129, .12);--ok-border: rgba(16, 185, 129, .35);--warn: #fbbf24;--warn-bg: rgba(245, 158, 11, .12);--warn-border: rgba(245, 158, 11, .35);--danger: #f87171;--danger-bg: rgba(239, 68, 68, .12);--danger-border: rgba(239, 68, 68, .35);--info: #60a5fa;--info-bg: rgba(59, 130, 246, .12);--info-border: rgba(59, 130, 246, .35);--accent: var(--brand-400);--accent-bg: rgba(99, 102, 241, .14);--accent-border: rgba(99, 102, 241, .38);--accent-contrast: #0e1116;--sheet: #4ade80;--sheet-strong: #86efac;--sheet-bg: rgba(16, 124, 65, .18);--sheet-bg-strong: rgba(16, 124, 65, .3);--sheet-border: rgba(74, 222, 128, .34);--side-a: #a78bfa;--side-a-bg: rgba(139, 92, 246, .16);--side-a-border: rgba(167, 139, 250, .38);--side-b: #38bdf8;--side-b-bg: rgba(14, 165, 233, .16);--side-b-border: rgba(56, 189, 248, .38);--c1: #818cf8;--c2: #2dd4bf;--c3: #fbbf24;--c4: #f472b6;--c5: #a78bfa;--c6: #60a5fa;--c7: #34d399;--c8: #fb923c;--sh-xs: none;--sh-sm: 0 1px 2px rgba(0, 0, 0, .4);--sh-md: 0 4px 14px rgba(0, 0, 0, .45);--sh-lg: 0 14px 34px rgba(0, 0, 0, .55);--sh-xl: 0 26px 60px rgba(0, 0, 0, .65);--sh-focus: 0 0 0 3px rgba(99, 102, 241, .3);color-scheme:dark}}:root{--muted: var(--text-3);--radius: var(--r-md);--shadow: var(--sh-sm);--green: var(--ok);--red: var(--danger);--amber: var(--warn);--purple: var(--violet-500);--primary: var(--brand-700);--primary-light: var(--brand-500)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html,body,#app{height:100%}body{font-family:var(--font);font-size:var(--fs-md);line-height:var(--lh-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums;transition:background var(--t-base),color var(--t-base)}img,svg,video,canvas{display:block;max-width:100%}svg{flex-shrink:0}h1,h2,h3,h4,h5{font-weight:600;line-height:var(--lh-tight);letter-spacing:-.011em;color:var(--text)}h1{font-size:var(--fs-2xl);letter-spacing:-.021em}h2{font-size:var(--fs-xl);letter-spacing:-.017em}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-md)}h5{font-size:var(--fs-sm)}p{line-height:var(--lh-loose)}a{color:var(--text-brand);text-decoration:none;border-radius:var(--r-xs);transition:color var(--t-fast)}a:hover{color:var(--brand-700);text-decoration:underline;text-underline-offset:2px}:root[data-theme=dark] a:hover{color:var(--brand-200)}code,pre,.mono,.tabular{font-family:var(--font-mono);font-size:.93em;font-variant-ligatures:none}hr{border:none;border-top:1px solid var(--border);margin:var(--s-4) 0}:focus{outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}::selection{background:var(--accent-bg);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full);border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:content-box}::-webkit-scrollbar-corner{background:transparent}.muted{color:var(--text-3)}.dim{color:var(--text-2)}.small{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.strong{font-weight:600}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.spacer{flex:1 1 auto;min-width:0}.center{display:flex;align-items:center;justify-content:center}.row{display:flex;gap:var(--s-3);align-items:center}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:var(--s-3)}.stack-1{display:flex;flex-direction:column;gap:var(--s-1)}.stack-2{display:flex;flex-direction:column;gap:var(--s-2)}.stack-3{display:flex;flex-direction:column;gap:var(--s-3)}.stack-4{display:flex;flex-direction:column;gap:var(--s-4)}.stack-6{display:flex;flex-direction:column;gap:var(--s-6)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}.grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s-4)}@media(max-width:860px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}}.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}.btn{--btn-bg: var(--surface);--btn-fg: var(--text);--btn-border: var(--border);--btn-bg-hover: var(--surface-hover);display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);height:var(--control-h);padding:0 var(--s-3);font:inherit;font-size:var(--fs-md);font-weight:500;line-height:1;white-space:nowrap;color:var(--btn-fg);background:var(--btn-bg);border:1px solid var(--btn-border);border-radius:var(--r-sm);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.btn:hover:not(:disabled):not(.is-loading){background:var(--btn-bg-hover)}.btn:active:not(:disabled):not(.is-loading){transform:translateY(.5px)}.btn:disabled,.btn.is-disabled{opacity:.5;cursor:not-allowed}.btn.is-loading{cursor:progress;color:transparent!important;position:relative}.btn.is-loading:after{content:"";position:absolute;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;color:var(--text-2);animation:spin .6s linear infinite}.btn.is-loading.btn-primary:after{color:var(--accent-contrast)}@keyframes spin{to{transform:rotate(360deg)}}.btn-primary{--btn-bg: var(--accent);--btn-fg: var(--accent-contrast);--btn-border: var(--accent);--btn-bg-hover: var(--brand-700);box-shadow:var(--sh-xs)}:root[data-theme=dark] .btn-primary{--btn-bg-hover: var(--brand-300)}.btn-danger{--btn-bg: var(--danger);--btn-fg: #fff;--btn-border: var(--danger);--btn-bg-hover: #b91c1c}.btn-danger-soft{--btn-bg: transparent;--btn-fg: var(--danger);--btn-border: var(--danger-border);--btn-bg-hover: var(--danger-bg)}.btn-ghost{--btn-bg: transparent;--btn-border: transparent;--btn-fg: var(--text-2);--btn-bg-hover: var(--surface-hover)}.btn-subtle{--btn-bg: var(--surface-3);--btn-border: transparent;--btn-bg-hover: var(--surface-active)}.btn-accent-soft{--btn-bg: var(--accent-bg);--btn-fg: var(--text-brand);--btn-border: var(--accent-border);--btn-bg-hover: var(--accent-bg)}.btn-sm{height:var(--control-h-sm);padding:0 var(--s-2);font-size:var(--fs-sm);gap:var(--s-1)}.btn-lg{height:var(--control-h-lg);padding:0 var(--s-5);font-size:var(--fs-lg)}.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:var(--control-h-sm)}.btn-icon.btn-lg{width:var(--control-h-lg)}.btn-block{width:100%}.btn.is-active{--btn-bg: var(--accent-bg);--btn-fg: var(--text-brand);--btn-border: var(--accent-border)}.btn-group{display:inline-flex}.btn-group .btn{border-radius:0;margin-left:-1px}.btn-group .btn:first-child{border-radius:var(--r-sm) 0 0 var(--r-sm);margin-left:0}.btn-group .btn:last-child{border-radius:0 var(--r-sm) var(--r-sm) 0}.btn-group .btn:hover,.btn-group .btn.is-active{z-index:1}.input,.select,.textarea,input:where(:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset],[type=image])),select,textarea{width:100%;height:var(--control-h);padding:0 var(--s-3);font:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);transition:border-color var(--t-fast),box-shadow var(--t-fast),background var(--t-fast)}textarea,.textarea{height:auto;padding:var(--s-2) var(--s-3);line-height:var(--lh-normal);resize:vertical}input:where(:not([type=checkbox],[type=radio],[type=range],[type=file])):hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--border-strong)}input:where(:not([type=checkbox],[type=radio],[type=range],[type=file])):focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--sh-focus)}input:where(:not([type=checkbox],[type=radio],[type=range],[type=file])):disabled,select:disabled,textarea:disabled{background:var(--surface-3);color:var(--text-3);cursor:not-allowed;-webkit-text-fill-color:var(--text-3)}input::placeholder,textarea::placeholder{color:var(--text-muted)}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=date],input[type=time]{line-height:normal}input[type=date]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;transition:opacity var(--t-fast)}input[type=date]:hover::-webkit-calendar-picker-indicator,input[type=time]:hover::-webkit-calendar-picker-indicator{opacity:1}:root[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator,:root[data-theme=dark] input[type=time]::-webkit-calendar-picker-indicator{filter:invert(1)}input.is-invalid,select.is-invalid{border-color:var(--danger)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--s-8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='none' stroke='%236b7484' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--s-3) center;cursor:pointer}:root[data-theme=dark] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16' fill='none' stroke='%238b95a5' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E")}.input-sm,select.input-sm,input.input-sm{height:var(--control-h-sm);font-size:var(--fs-sm);padding:0 var(--s-2)}select.input-sm{padding-right:var(--s-6)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.field-label{font-size:var(--fs-sm);font-weight:500;color:var(--text-2);display:flex;align-items:center;gap:var(--s-1)}.field-hint{font-size:var(--fs-xs);color:var(--text-3);line-height:var(--lh-normal)}.field-error{font-size:var(--fs-xs);color:var(--danger)}.field-row{display:flex;align-items:center;gap:var(--s-2)}.input-icon{position:relative;display:flex;align-items:center;min-width:0}.input-icon>svg:first-child{position:absolute;left:var(--s-3);color:var(--text-muted);pointer-events:none}.input-icon>input{padding-left:var(--s-8)}.input-icon .input-suffix{position:absolute;right:var(--s-2);display:flex;align-items:center;gap:var(--s-1)}.check{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--fs-md);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;min-width:0}.check input[type=checkbox],.check input[type=radio],input[type=checkbox],input[type=radio]{width:16px;height:16px;flex-shrink:0;margin:0;accent-color:var(--accent);cursor:pointer}.check.is-disabled{opacity:.5;cursor:not-allowed}.switch{display:inline-flex;align-items:center;gap:var(--s-2);cursor:pointer;-webkit-user-select:none;user-select:none}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{width:34px;height:20px;background:var(--border-strong);border-radius:var(--r-full);position:relative;transition:background var(--t-base);flex-shrink:0}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:var(--sh-sm);transition:transform var(--t-base)}.switch input:checked+.track{background:var(--accent)}.switch input:checked+.track:after{transform:translate(14px)}.switch input:focus-visible+.track{box-shadow:var(--sh-focus)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-xs)}.card-pad{padding:var(--s-5)}.card>.card-head,.card-head{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--border-subtle);min-height:52px}.card-head h3,.card-head h2{margin:0;font-size:var(--fs-md);font-weight:600}.card-head .sub{font-size:var(--fs-xs);color:var(--text-3)}.card-body{padding:var(--s-5)}.card-body.tight{padding:var(--s-3)}.card-foot{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-5);border-top:1px solid var(--border-subtle);background:var(--surface-2);border-radius:0 0 var(--r-lg) var(--r-lg)}.card-hover{transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.card-hover:hover{border-color:var(--border-strong);box-shadow:var(--sh-md)}.section-title{display:flex;align-items:center;gap:var(--s-2);font-size:var(--fs-sm);font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.05em}.page{display:flex;flex-direction:column;gap:var(--s-5);min-width:0}.page-narrow{max-width:1400px}.page-head{display:flex;align-items:flex-start;gap:var(--s-4);flex-wrap:wrap}.page-head h1{margin:0}.page-head .lede{margin-top:6px;color:var(--text-3);font-size:var(--fs-md);line-height:var(--lh-loose);max-width:72ch}.page-head .actions{margin-left:auto;display:flex;gap:var(--s-2);align-items:center}.toolbar{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;padding:var(--s-2) var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.toolbar .divider{width:1px;height:20px;background:var(--border);margin:0 var(--s-1)}.badge{display:inline-flex;align-items:center;gap:5px;height:21px;padding:0 var(--s-2);font-size:var(--fs-xs);font-weight:600;line-height:1;border-radius:var(--r-xs);background:var(--surface-3);color:var(--text-2);border:1px solid transparent;white-space:nowrap}.badge-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.badge-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.badge-warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-border)}.badge-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.badge-info{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}.badge-accent{background:var(--accent-bg);color:var(--text-brand);border-color:var(--accent-border)}.badge-lg{height:25px;font-size:var(--fs-sm);padding:0 var(--s-3)}.badge.ready,.badge.completed,.badge.active{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-border)}.badge.failed,.badge.error{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.badge.parsing,.badge.processing,.badge.queued,.badge.running{background:var(--info-bg);color:var(--info);border-color:var(--info-border)}.badge.cancelled,.badge.paused{background:var(--surface-3);color:var(--text-3)}.chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 var(--s-3);font-size:var(--fs-sm);border-radius:var(--r-full);background:var(--surface-3);color:var(--text-2);border:1px solid transparent;white-space:nowrap}.chip-outline{background:transparent;border-color:var(--border)}.chip button,.chip .x{background:none;border:none;padding:0;cursor:pointer;color:var(--text-muted);display:flex;line-height:1}.chip button:hover{color:var(--danger)}kbd{display:inline-flex;align-items:center;height:19px;padding:0 5px;font-family:var(--font);font-size:var(--fs-xs);font-weight:500;color:var(--text-3);background:var(--surface-3);border:1px solid var(--border);border-bottom-width:2px;border-radius:var(--r-xs)}.segmented{display:inline-flex;padding:3px;gap:2px;background:var(--surface-3);border-radius:var(--r-md);flex-wrap:wrap}.segmented button{height:28px;padding:0 var(--s-3);font:inherit;font-size:var(--fs-md);font-weight:500;color:var(--text-3);background:transparent;border:none;border-radius:var(--r-sm);cursor:pointer;white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.segmented button:hover:not(.on){color:var(--text)}.segmented button.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:var(--sh-sm)}.segmented button:disabled{opacity:.45;cursor:not-allowed}.tabs{display:flex;gap:var(--s-1);border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button,.tabs a{position:relative;padding:var(--s-3) var(--s-3);font:inherit;font-size:var(--fs-md);font-weight:500;color:var(--text-3);background:none;border:none;cursor:pointer;white-space:nowrap;transition:color var(--t-fast)}.tabs button:hover,.tabs a:hover{color:var(--text);text-decoration:none}.tabs button.on,.tabs a.router-link-active{color:var(--text);font-weight:600}.tabs button.on:after,.tabs a.router-link-active:after{content:"";position:absolute;left:var(--s-2);right:var(--s-2);bottom:-1px;height:2px;background:var(--accent);border-radius:2px 2px 0 0}.table-wrap{overflow-x:auto;border-radius:var(--r-lg)}table.table{width:100%;border-collapse:collapse;font-size:var(--fs-md)}table.table th{position:sticky;top:0;z-index:1;text-align:left;padding:var(--s-3) var(--s-4);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);border-bottom:1px solid var(--border);white-space:nowrap}table.table td{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--border-subtle);vertical-align:middle}table.table tbody tr{transition:background var(--t-fast)}table.table tbody tr:hover{background:var(--surface-hover)}table.table tbody tr:last-child td{border-bottom:none}table.table td.num,table.table th.num{text-align:right;font-variant-numeric:tabular-nums}table.table .row-actions{opacity:0;transition:opacity var(--t-fast)}table.table tr:hover .row-actions{opacity:1}table.simple{width:100%;border-collapse:collapse;font-size:var(--fs-md)}table.simple th{text-align:left;padding:var(--s-3) var(--s-3);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border)}table.simple td{padding:var(--s-3);border-bottom:1px solid var(--border-subtle)}table.simple tbody tr:hover{background:var(--surface-hover)}table.simple tbody tr:last-child td{border-bottom:none}.alert{display:flex;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);font-size:var(--fs-md);line-height:var(--lh-normal)}.alert svg{margin-top:1px;flex-shrink:0}.alert .alert-body{display:flex;flex-direction:column;gap:4px;min-width:0}.alert .alert-title{font-weight:600}.alert-ok{background:var(--ok-bg);border-color:var(--ok-border);color:var(--ok)}.alert-warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn)}.alert-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.alert-info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.error-box{display:flex;gap:var(--s-2);padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);font-size:var(--fs-md)}.notice{display:flex;flex-direction:column;gap:4px;padding:var(--s-3) var(--s-4);border-radius:var(--r-md);background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn);font-size:var(--fs-sm)}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-12) var(--s-6);text-align:center;color:var(--text-3)}.empty .empty-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:var(--r-lg);background:var(--surface-3);color:var(--text-muted)}.empty .empty-title{font-size:var(--fs-lg);font-weight:600;color:var(--text)}.empty .empty-text{max-width:42ch;line-height:var(--lh-loose)}.skeleton{background:linear-gradient(90deg,var(--surface-3) 25%,var(--surface-hover) 50%,var(--surface-3) 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:var(--r-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{height:12px;margin:6px 0}.skeleton-title{height:20px;width:40%}.progress{height:6px;background:var(--surface-3);border-radius:var(--r-full);overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);border-radius:var(--r-full);transition:width var(--t-slow)}.progress.is-indeterminate>span{width:35%!important;animation:indeterminate 1.1s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(340%)}}.progress-track{height:6px;background:var(--surface-3);border-radius:var(--r-full);overflow:hidden}.progress-bar{height:100%;background:var(--accent);transition:width var(--t-slow)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--s-4)}.stat{position:relative;padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-xs);overflow:hidden}.stat .stat-k{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.045em}.stat .stat-v{margin-top:var(--s-2);font-size:var(--fs-2xl);font-weight:650;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}.stat .stat-sub{margin-top:4px;font-size:var(--fs-xs);color:var(--text-3)}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--tone, transparent)}.stat.tone-accent{--tone: var(--accent)}.stat.tone-ok{--tone: var(--ok)}.stat.tone-warn{--tone: var(--warn)}.stat.tone-danger{--tone: var(--danger)}.stat.tone-info{--tone: var(--info)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s-3)}.tile{padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--r-md)}.tile .k{font-size:var(--fs-xs);font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.045em}.tile .v{margin-top:4px;font-size:var(--fs-2xl);font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.tile.ok{border-left-color:var(--ok)}.tile.warn{border-left-color:var(--warn)}.tile.danger{border-left-color:var(--danger)}.tile.info{border-left-color:var(--info)}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--border-subtle);transition:background var(--t-fast);min-width:0;color:inherit}.list-item:last-child{border-bottom:none}.list-item:hover{background:var(--surface-hover);text-decoration:none}.list-item .li-title{font-weight:500;color:var(--text)}.list-item .li-sub{font-size:var(--fs-sm);color:var(--text-3)}.picklist{display:flex;flex-direction:column;gap:1px;max-height:280px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-1);background:var(--surface)}.picklist .item{display:flex;align-items:center;gap:var(--s-2);padding:7px var(--s-2);border-radius:var(--r-xs);cursor:pointer;font-size:var(--fs-md);min-width:0;transition:background var(--t-fast)}.picklist .item:hover{background:var(--surface-hover)}.picklist .item.on{background:var(--accent-bg);color:var(--text-brand)}.picklist .item .meta{margin-left:auto;font-size:var(--fs-xs);color:var(--text-3)}.keyrows{display:flex;flex-direction:column;gap:var(--s-2)}.keyrow{display:flex;align-items:center;gap:var(--s-2)}.keyrow select{flex:1}.idx{width:22px;height:22px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:600;color:var(--text-3);background:var(--surface-3);border-radius:var(--r-full)}.maplist{display:flex;flex-direction:column;gap:1px;max-height:320px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-1);background:var(--surface)}.maprow{display:grid;grid-template-columns:18px minmax(0,1fr) 16px minmax(0,1fr);align-items:center;gap:var(--s-2);padding:5px var(--s-2);border-radius:var(--r-xs);font-size:var(--fs-md)}.maprow:hover{background:var(--surface-hover)}.maprow .arrow{color:var(--text-muted);text-align:center}.maprow .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.maprow select{height:var(--control-h-sm);font-size:var(--fs-sm);padding:0 var(--s-5) 0 var(--s-2)}.joinlist{display:flex;flex-direction:column;gap:var(--s-3)}.joinitem{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);background:var(--surface-2)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--s-4);animation:fade var(--t-base)}@keyframes fade{0%{opacity:0}}.modal{width:100%;max-width:560px;max-height:calc(100vh - var(--s-8));display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--sh-xl);animation:pop var(--t-base);overflow:hidden}.modal-sm{max-width:420px}.modal-lg{max-width:820px}.modal-xl{max-width:1100px}@keyframes pop{0%{opacity:0;transform:translateY(8px) scale(.98)}}.modal-head{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--border-subtle)}.modal-head h3{margin:0;font-size:var(--fs-lg)}.modal-body{padding:var(--s-5);overflow:auto;flex:1}.modal-foot{display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-5);border-top:1px solid var(--border-subtle);background:var(--surface-2)}.toasts{position:fixed;top:calc(var(--topbar-h) + var(--s-3));right:var(--s-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--s-2);pointer-events:none;max-width:min(400px,calc(100vw - var(--s-8)))}.toast{display:flex;align-items:flex-start;gap:var(--s-3);padding:var(--s-3) var(--s-4);background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--r-md);box-shadow:var(--sh-lg);font-size:var(--fs-md);pointer-events:auto;animation:slide-in var(--t-slow)}@keyframes slide-in{0%{opacity:0;transform:translate(20px)}}.toast.ok{border-left-color:var(--ok)}.toast.warn{border-left-color:var(--warn)}.toast.danger{border-left-color:var(--danger)}.toast .toast-title{font-weight:600}.toast .toast-text{color:var(--text-2);font-size:var(--fs-sm);margin-top:2px}.tip{position:fixed;z-index:var(--z-popover);display:none;max-width:260px;padding:6px var(--s-2);font-size:var(--fs-xs);font-weight:500;line-height:1.4;color:var(--gray-0);background:var(--gray-800);border-radius:var(--r-xs);box-shadow:var(--sh-md);pointer-events:none;opacity:0;transform:scale(.96);transition:opacity var(--t-fast),transform var(--t-fast)}.tip.is-open{opacity:1;transform:scale(1)}:root[data-theme=dark] .tip{background:var(--gray-700);color:var(--text)}.tip:after{content:"";position:absolute;border:5px solid transparent}.tip[data-side=top]:after{top:100%;left:50%;margin-left:-5px;border-top-color:var(--gray-800)}.tip[data-side=bottom]:after{bottom:100%;left:50%;margin-left:-5px;border-bottom-color:var(--gray-800)}.tip[data-side=left]:after{left:100%;top:50%;margin-top:-5px;border-left-color:var(--gray-800)}.tip[data-side=right]:after{right:100%;top:50%;margin-top:-5px;border-right-color:var(--gray-800)}:root[data-theme=dark] .tip[data-side=top]:after{border-top-color:var(--gray-700)}:root[data-theme=dark] .tip[data-side=bottom]:after{border-bottom-color:var(--gray-700)}:root[data-theme=dark] .tip[data-side=left]:after{border-left-color:var(--gray-700)}:root[data-theme=dark] .tip[data-side=right]:after{border-right-color:var(--gray-700)}.menu{min-width:190px;padding:var(--s-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-lg);z-index:var(--z-popover)}.menu-item{display:flex;align-items:center;gap:var(--s-2);width:100%;padding:7px var(--s-2);font:inherit;font-size:var(--fs-md);color:var(--text);background:none;border:none;border-radius:var(--r-xs);cursor:pointer;text-align:left;transition:background var(--t-fast)}.menu-item:hover{background:var(--surface-hover);text-decoration:none}.menu-item.is-danger{color:var(--danger)}.menu-sep{height:1px;background:var(--border-subtle);margin:var(--s-1) 0}.menu-label{padding:var(--s-2) var(--s-2) 4px;font-size:var(--fs-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.panel-inner{display:flex;flex-direction:column;gap:var(--s-5);min-width:0}.panel-inner h2{margin:0}.panel-inner h3{margin:0 0 var(--s-3);font-size:var(--fs-md)}.lede{margin-top:6px;color:var(--text-3);font-size:var(--fs-md);line-height:var(--lh-loose);max-width:72ch}.hint{margin:var(--s-2) 0 0;color:var(--text-3);font-size:var(--fs-sm);line-height:var(--lh-normal)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-top:var(--s-3)}.actions .hint{margin:0}.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}.form-limit{max-width:720px}@media(max-width:860px){.row2{grid-template-columns:minmax(0,1fr)}}.runbar{display:flex;align-items:center;gap:var(--s-3);flex-wrap:wrap;padding:var(--s-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);position:sticky;bottom:var(--s-4);box-shadow:var(--sh-md);z-index:var(--z-sticky)}.legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4);color:var(--text-3);font-size:var(--fs-sm)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;flex-shrink:0}.chk{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--fs-md);cursor:pointer;-webkit-user-select:none;user-select:none}.chk input{margin:0}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed}
