@charset "UTF-8";:root{color-scheme:light;--brand-50: #ecfdf5;--brand-100: #d1fae5;--brand-200: #a7f3d0;--brand-300: #6ee7b7;--brand-400: #34d399;--brand-500: #10b981;--brand-600: #0d9488;--brand-700: #0f766e;--brand-800: #115e59;--brand-900: #134e4a;--brand: var(--brand-700);--brand-strong: var(--brand-800);--brand-soft: #ecfbf6;--brand-ink: #0f766e;--accent-500: #6366f1;--accent-600: #4f46e5;--accent-soft: #eef2ff;--accent-ink: #4338ca;--bg: #f6f8fb;--bg-subtle: #f1f5f9;--surface: #ffffff;--surface-soft: #f8fafc;--surface-hover: #f1f5f9;--elevated: #ffffff;--overlay: rgba(15, 23, 42, .42);--ink: #0f172a;--ink-strong: #020617;--muted: #64748b;--muted-soft: #94a3b8;--faint: #cbd5e1;--line: #e6eaf0;--line-strong: #d4dbe5;--line-soft: #eef2f6;--success: #047857;--success-soft: #ecfdf5;--success-line: #a7f3d0;--warn: #b45309;--warn-soft: #fffbeb;--warn-line: #fcd9a0;--danger: #be123c;--danger-soft: #fef2f2;--danger-line: #fecdd3;--info: #4338ca;--info-soft: #eef2ff;--info-line: #c7d2fe;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 1px 1px rgba(15, 23, 42, .03);--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px rgba(15, 23, 42, .06);--shadow-lg: 0 4px 8px rgba(15, 23, 42, .06), 0 24px 48px rgba(15, 23, 42, .12);--shadow-pop: 0 12px 32px rgba(15, 23, 42, .16);--focus: 0 0 0 3px rgba(15, 118, 110, .18);--focus-danger: 0 0 0 3px rgba(190, 18, 60, .18);--radius-xs: 6px;--radius-sm: 8px;--radius: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--control-h: 38px;--control-h-sm: 32px;--control-h-lg: 44px;--sidebar-w: 264px;--sidebar-w-collapsed: 72px;--topbar-h: 60px;--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .14s;--dur: .2s;--dur-slow: .32s}:root[data-theme=dark]{color-scheme:dark;--brand: #2dd4bf;--brand-strong: #5eead4;--brand-soft: rgba(45, 212, 191, .1);--brand-ink: #5eead4;--accent-soft: rgba(99, 102, 241, .14);--accent-ink: #a5b4fc;--bg: #0b1120;--bg-subtle: #0f172a;--surface: #111c33;--surface-soft: #0f1a2e;--surface-hover: #16233d;--elevated: #131f38;--overlay: rgba(2, 6, 23, .66);--ink: #e6edf6;--ink-strong: #f8fafc;--muted: #93a4bd;--muted-soft: #64748b;--faint: #334155;--line: #1e2a44;--line-strong: #2a3a5c;--line-soft: #182542;--success: #34d399;--success-soft: rgba(52, 211, 153, .12);--success-line: rgba(52, 211, 153, .3);--warn: #fbbf24;--warn-soft: rgba(251, 191, 36, .12);--warn-line: rgba(251, 191, 36, .32);--danger: #fb7185;--danger-soft: rgba(251, 113, 133, .12);--danger-line: rgba(251, 113, 133, .32);--info: #a5b4fc;--info-soft: rgba(165, 180, 252, .12);--info-line: rgba(165, 180, 252, .32);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .36);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .4), 0 24px 48px rgba(0, 0, 0, .5);--shadow-pop: 0 12px 32px rgba(0, 0, 0, .55);--focus: 0 0 0 3px rgba(45, 212, 191, .28);--focus-danger: 0 0 0 3px rgba(251, 113, 133, .28)}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.5;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5{margin:0;font-weight:650;letter-spacing:-.01em;color:var(--ink-strong)}a{color:inherit;text-decoration:none}::selection{background:var(--brand-soft);color:var(--brand-ink)}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px;border:3px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--muted-soft);background-clip:padding-box}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}button:disabled{cursor:not-allowed;opacity:.55}input,select,textarea{outline:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}input::placeholder,textarea::placeholder{color:var(--muted-soft)}.page{display:grid;gap:var(--space-5)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-title{display:grid;gap:4px;min-width:0}.page-title h1{font-size:24px;line-height:1.2}.page-title p{margin:0;color:var(--muted);font-size:14px}.page-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.stack{display:grid;gap:var(--space-4)}.cluster{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);padding:var(--space-5)}.card--flush{padding:0}.card--soft{background:var(--surface-soft)}.card:hover{border-color:var(--line-strong)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.card-head h2{font-size:16px}.card-head p{margin:2px 0 0;color:var(--muted);font-size:13px}.card-body{padding:var(--space-5)}.data-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);padding:var(--space-5)}.data-card:hover{border-color:var(--line-strong)}.toolbar-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);padding:var(--space-4)}.btn,.primary-button,.secondary-button,.ghost-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:var(--control-h);padding:0 var(--space-4);border-radius:var(--radius-sm);border:1px solid transparent;font-weight:600;font-size:14px;white-space:nowrap;-webkit-user-select:none;user-select:none;position:relative}.btn:active:not(:disabled),.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled),.ghost-button:active:not(:disabled),.danger-button:active:not(:disabled){transform:translateY(.5px)}.btn--primary,.primary-button{background:var(--brand);color:#fff;box-shadow:0 1px 2px #0f766e2e,inset 0 1px #ffffff1f}:root[data-theme=dark] .btn--primary,:root[data-theme=dark] .primary-button{color:#04231f}.btn--primary:hover:not(:disabled),.primary-button:hover:not(:disabled){background:var(--brand-strong)}.btn--secondary,.secondary-button{background:var(--accent-600);color:#fff;box-shadow:0 1px 2px #4f46e52e,inset 0 1px #ffffff1f}.btn--secondary:hover:not(:disabled),.secondary-button:hover:not(:disabled){background:var(--accent-500)}.btn--ghost,.ghost-button{background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:var(--shadow-sm)}.btn--ghost:hover:not(:disabled),.ghost-button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--line-strong)}.btn--outline{background:transparent;color:var(--brand-ink);border-color:var(--brand)}.btn--outline:hover:not(:disabled){background:var(--brand-soft)}.btn--danger,.danger-button{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-line)}.btn--danger:hover:not(:disabled),.danger-button:hover:not(:disabled){background:var(--danger);color:#fff;border-color:var(--danger)}.btn--subtle{background:transparent;color:var(--muted);border-color:transparent}.btn--subtle:hover:not(:disabled){background:var(--surface-hover);color:var(--ink)}.btn--sm,.btn--sm.primary-button,.btn--sm.secondary-button,.btn--sm.ghost-button,.btn--sm.danger-button{height:var(--control-h-sm);padding:0 var(--space-3);font-size:13px;border-radius:var(--radius-xs)}.btn--lg{height:var(--control-h-lg);padding:0 var(--space-5);font-size:15px}.btn--block{width:100%}.btn--icon,.icon-button{display:inline-flex;align-items:center;justify-content:center;width:var(--control-h);height:var(--control-h);padding:0;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.btn--icon:hover:not(:disabled),.icon-button:hover:not(:disabled){background:var(--surface-hover);border-color:var(--line-strong);color:var(--ink-strong)}.btn--icon.btn--ghost,.btn--icon.btn--subtle{border-color:transparent;background:transparent;box-shadow:none}.btn--icon.btn--subtle:hover:not(:disabled){background:var(--surface-hover)}.btn--icon.btn--sm{width:var(--control-h-sm);height:var(--control-h-sm)}.btn[disabled],.btn--loading{pointer-events:none}.btn--loading{opacity:.85}.btn--loading>*:not(.spinner){visibility:hidden}.field{display:grid;gap:6px;min-width:0}.field>label,.field>.field-label{display:flex;align-items:center;gap:6px;color:var(--ink);font-size:13px;font-weight:600}.field-label .req{color:var(--danger)}.field-hint{color:var(--muted);font-size:12px}.field-error{color:var(--danger);font-size:12px;display:flex;align-items:center;gap:4px}.control,.field input,.field select,.field textarea,input,select,textarea{min-width:0;width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink)}.field input,.field select,input,select{height:var(--control-h);padding:0 var(--space-3)}.field textarea,textarea{min-height:84px;padding:var(--space-3);resize:vertical;line-height:1.5}input:hover:not(:disabled):not(:focus),select:hover:not(:disabled):not(:focus),textarea:hover:not(:disabled):not(:focus){border-color:var(--line-strong)}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:var(--focus)}.field--invalid input,.field--invalid select,.field--invalid textarea{border-color:var(--danger)}.field--invalid input:focus,.field--invalid select:focus,.field--invalid textarea:focus{box-shadow:var(--focus-danger)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-soft);color:var(--muted);cursor:not-allowed}select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:calc(var(--space-3) + 18px)!important;cursor:pointer}.input-affix{position:relative;display:flex;align-items:center}.input-affix>input{padding-left:var(--space-8)}.input-affix>.affix-icon{position:absolute;left:var(--space-3);color:var(--muted);pointer-events:none;display:inline-flex}.checkbox{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:14px}.checkbox input{width:18px;height:18px;accent-color:var(--brand)}.badge,.status-pill{display:inline-flex;align-items:center;gap:6px;width:fit-content;min-height:22px;padding:0 9px;border-radius:var(--radius-pill);background:var(--surface-soft);color:var(--muted);border:1px solid var(--line);font-size:12px;font-weight:600;line-height:1}.badge .dot,.status-pill .dot{width:6px;height:6px;border-radius:999px;background:currentColor}.badge--muted,.status-pill{background:var(--surface-soft);color:var(--muted)}.badge--good,.status-pill.good{background:var(--success-soft);color:var(--success);border-color:var(--success-line)}.badge--info,.status-pill.info{background:var(--info-soft);color:var(--info);border-color:var(--info-line)}.badge--warn,.status-pill.warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line)}.badge--danger,.badge--error{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-line)}.badge--brand{background:var(--brand-soft);color:var(--brand-ink);border-color:transparent}.table-shell{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-sm)}.table-title{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line)}.table-title h2{font-size:16px}.table-title .table-meta{color:var(--muted);font-size:13px}.table-scroll{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table thead th{position:sticky;top:0;text-align:left;font-weight:600;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);background:var(--surface-soft);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--line);white-space:nowrap;z-index:1}.data-table tbody td{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--line-soft);vertical-align:middle;color:var(--ink)}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr{transition:background var(--dur-fast) var(--ease)}.data-table tbody tr:hover{background:var(--surface-hover)}.data-table tbody tr.is-selected{background:var(--brand-soft)}.data-table .row-actions{display:flex;gap:4px;justify-content:flex-end}.data-table .col-strong{font-weight:600;color:var(--ink-strong)}.data-table .col-muted{color:var(--muted)}.row{display:grid;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-top:1px solid var(--line-soft);align-items:center}.row:first-child{border-top:0}.row.head{color:var(--muted);background:var(--surface-soft);font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;cursor:default}.row:not(.head){cursor:pointer;transition:background var(--dur-fast) var(--ease)}.row:not(.head):hover{background:var(--surface-hover)}.row.selected{background:var(--brand-soft)}.empty-state{display:grid;place-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-5);text-align:center}.empty-state .empty-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:var(--radius-lg);background:var(--surface-soft);color:var(--muted);border:1px solid var(--line)}.empty-state h3{font-size:16px;color:var(--ink-strong)}.empty-state p{margin:0;color:var(--muted);max-width:42ch}.empty-inline{color:var(--muted);font-size:13px}.state-card{display:grid;place-items:center;gap:var(--space-3);padding:var(--space-8) var(--space-5);text-align:center;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-soft)}.state-card .state-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:var(--radius-lg)}.state-card.is-error .state-icon{background:var(--danger-soft);color:var(--danger)}.state-card.is-loading .state-icon{background:var(--brand-soft);color:var(--brand-ink)}.state-card h3{font-size:16px}.state-card p{margin:0;color:var(--muted);max-width:44ch}.skeleton{position:relative;overflow:hidden;background:var(--surface-soft);border-radius:var(--radius-xs)}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(148,163,184,.18),transparent);animation:shimmer 1.4s infinite}:root[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,transparent,rgba(148,163,184,.1),transparent)}.skeleton--text{height:12px;border-radius:var(--radius-xs)}.skeleton--line{height:16px;border-radius:var(--radius-xs)}.skeleton--circle{border-radius:999px}.skeleton-row{display:grid;gap:var(--space-3);padding:var(--space-3) var(--space-5);border-top:1px solid var(--line-soft)}.skeleton-row:first-child{border-top:0}@keyframes shimmer{to{transform:translate(100%)}}.spinner{width:16px;height:16px;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:spin .6s linear infinite;display:inline-block;flex:0 0 auto}.spinner--lg{width:28px;height:28px;border-width:3px}.spinner--center{margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.alert{display:grid;grid-template-columns:auto 1fr auto;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface-soft);font-size:14px}.alert .alert-icon{display:inline-flex;color:var(--muted);margin-top:1px}.alert .alert-body{min-width:0}.alert .alert-body strong{display:block;color:var(--ink-strong);font-size:14px}.alert .alert-body p{margin:2px 0 0;color:var(--muted);font-size:13px}.alert--success{background:var(--success-soft);border-color:var(--success-line)}.alert--success .alert-icon{color:var(--success)}.alert--info{background:var(--info-soft);border-color:var(--info-line)}.alert--info .alert-icon{color:var(--info)}.alert--warn{background:var(--warn-soft);border-color:var(--warn-line)}.alert--warn .alert-icon{color:var(--warn)}.alert--error{background:var(--danger-soft);border-color:var(--danger-line)}.alert--error .alert-icon{color:var(--danger)}.modal-backdrop{position:fixed;inset:0;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:var(--space-5);z-index:60;animation:fade-in var(--dur) var(--ease)}.modal{width:100%;max-width:520px;max-height:calc(100vh - var(--space-8));display:flex;flex-direction:column;background:var(--elevated);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:modal-in var(--dur-slow) var(--ease-out)}.modal--sm{max-width:400px}.modal--lg{max-width:720px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-5);border-bottom:1px solid var(--line)}.modal-head .modal-titles{display:grid;gap:4px;min-width:0}.modal-head h2{font-size:18px}.modal-head p{margin:0;color:var(--muted);font-size:13px}.modal-body{padding:var(--space-5);overflow:auto}.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--line);background:var(--surface-soft)}.modal-foot--start{justify-content:flex-start}.modal-foot--between{justify-content:space-between}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.tooltip{position:fixed;z-index:80;max-width:240px;padding:5px 9px;border-radius:var(--radius-xs);background:var(--ink-strong);color:#fff;font-size:12px;font-weight:500;box-shadow:var(--shadow-pop);pointer-events:none;animation:fade-in var(--dur-fast) var(--ease)}:root[data-theme=dark] .tooltip{background:#e6edf6;color:#0b1120}.muted{color:var(--muted)}.strong{color:var(--ink-strong);font-weight:600}.mono{font-family:var(--font-mono);font-size:12px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.eyebrow{display:inline-block;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.divider{height:1px;background:var(--line);border:0;margin:0}.progress-track{height:8px;border-radius:var(--radius-pill);background:var(--line);overflow:hidden}.progress-track>span{display:block;height:100%;background:var(--brand);border-radius:inherit;transition:width var(--dur-slow) var(--ease-out)}.progress-track.blue>span{background:var(--accent-600)}.progress-track.warn>span{background:var(--warn)}.progress-track.danger>span{background:var(--danger)}.chip{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:0 10px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13px;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.chip:hover{border-color:var(--line-strong)}.chip strong{font-weight:600}.chip small{color:var(--muted)}.chip-action{display:inline-grid;place-items:center;width:22px;height:22px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--muted);padding:0}.chip-action:hover{background:var(--danger-soft);color:var(--danger)}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--radius-xs);border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);font-family:var(--font-sans);font-size:11px;font-weight:600;box-shadow:0 1px 0 var(--line-strong)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.skeleton:after{animation:none}}@media(max-width:860px){.page-header{align-items:stretch}}
